Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/calendar/util/dist/ |
Upload File : |
{"version":3,"file":"util.bundle.js","sources":["../src/util.js"],"sourcesContent":["import { Dom, Loc, Tag, Type } from 'main.core';\nimport { DateTimeFormat } from 'main.date';\nimport { PopupManager } from 'main.popup';\nimport { MessageBox } from 'ui.dialogs.messagebox';\nimport 'ui.notification';\n\nexport class Util\n{\n\tstatic PLANNER_PULL_TAG = 'calendar-planner-#USER_ID#';\n\tstatic PLANNER_WATCH_LIST = [];\n\tstatic REQUEST_ID_LIST = [];\n\tstatic accessNames = {};\n\n\tstatic parseTime(str)\n\t{\n\t\tconst date = Util.parseDate1(`${DateTimeFormat.format(Util.getDateFormat(), new Date())} ${str}`, false);\n\n\t\treturn date ? {\n\t\t\th: date.getHours(),\n\t\t\tm: date.getMinutes(),\n\t\t} : date;\n\t}\n\n\tstatic getTimeRounded(date)\n\t{\n\t\treturn Math.round(date.getTime() / 60000) * 60000;\n\t}\n\n\tstatic parseDate(str, bUTC, formatDate, formatDatetime)\n\t{\n\t\treturn BX.parseDate(str, bUTC, formatDate, formatDatetime);\n\t}\n\n\tstatic parseDate1(str, format, trimSeconds)\n\t{\n\t\tlet i;\n\t\tlet cnt;\n\t\tlet k;\n\t\tlet regMonths;\n\t\tconst bUTC = false;\n\n\t\tif (!format)\n\n\t\t{ format = Loc.getMessage('FORMAT_DATETIME');\n\t\t}\n\n\t\tstr = BX.util.trim(str);\n\n\t\tif (trimSeconds !== false)\n\n\t\t{ format = format.replace(':SS', '');\n\t\t}\n\n\t\tif (BX.type.isNotEmptyString(str))\n\t\t{\n\t\t\tregMonths = '';\n\t\t\tfor (i = 1; i <= 12; i++)\n\t\t\t{\n\t\t\t\tregMonths = `${regMonths}|${Loc.getMessage(`MON_${i}`)}`;\n\t\t\t}\n\n\t\t\tconst expr = new RegExp(`([0-9]+|[a-z]+${regMonths})`, 'ig');\n\t\t\tconst aDate = str.match(expr);\n\t\t\tlet aFormat = Loc.getMessage('FORMAT_DATE').match(/(dd|mi|mmmm|mm|m|yyyy)/gi);\n\t\t\tconst aDateArgs = [];\n\t\t\tconst aFormatArgs = [];\n\t\t\tconst aResult = {};\n\n\t\t\tif (!aDate)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (aDate.length > aFormat.length)\n\t\t\t{\n\t\t\t\taFormat = format.match(/(dd|mi|mmmm|mm|m|yyyy|hh|h|ss|tt|t|gg|g)/gi);\n\t\t\t}\n\n\t\t\tfor (i = 0, cnt = aDate.length; i < cnt; i++)\n\t\t\t{\n\t\t\t\tif (BX.util.trim(aDate[i]) !== '')\n\t\t\t\t{\n\t\t\t\t\taDateArgs[aDateArgs.length] = aDate[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0, cnt = aFormat.length; i < cnt; i++)\n\t\t\t{\n\t\t\t\tif (BX.util.trim(aFormat[i]) != '')\n\t\t\t\t{\n\t\t\t\t\taFormatArgs[aFormatArgs.length] = aFormat[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet m = BX.util.array_search('MMMM', aFormatArgs);\n\t\t\tif (m > 0)\n\t\t\t{\n\t\t\t\taDateArgs[m] = BX.getNumMonth(aDateArgs[m]);\n\t\t\t\taFormatArgs[m] = 'MM';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm = BX.util.array_search('M', aFormatArgs);\n\t\t\t\tif (m > 0)\n\t\t\t\t{\n\t\t\t\t\taDateArgs[m] = BX.getNumMonth(aDateArgs[m]);\n\t\t\t\t\taFormatArgs[m] = 'MM';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0, cnt = aFormatArgs.length; i < cnt; i++)\n\t\t\t{\n\t\t\t\tk = aFormatArgs[i].toUpperCase();\n\t\t\t\taResult[k] = k === 'T' || k === 'TT' ? aDateArgs[i] : parseInt(aDateArgs[i], 10);\n\t\t\t}\n\n\t\t\tif (aResult.DD > 0 && aResult.MM > 0 && aResult.YYYY > 0)\n\t\t\t{\n\t\t\t\tconst d = new Date();\n\n\t\t\t\tif (bUTC)\n\t\t\t\t{\n\t\t\t\t\td.setUTCDate(1);\n\t\t\t\t\td.setUTCFullYear(aResult.YYYY);\n\t\t\t\t\td.setUTCMonth(aResult.MM - 1);\n\t\t\t\t\td.setUTCDate(aResult.DD);\n\t\t\t\t\td.setUTCHours(0, 0, 0);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\td.setDate(1);\n\t\t\t\t\td.setFullYear(aResult.YYYY);\n\t\t\t\t\td.setMonth(aResult.MM - 1);\n\t\t\t\t\td.setDate(aResult.DD);\n\t\t\t\t\td.setHours(0, 0, 0);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!isNaN(aResult.HH) || !isNaN(aResult.GG) || !isNaN(aResult.H) || !isNaN(aResult.G))\n\t\t\t\t\t&& !isNaN(aResult.MI)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tif (!isNaN(aResult.H) || !isNaN(aResult.G))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst bPM = (aResult.T || aResult.TT || 'am').toUpperCase() == 'PM';\n\t\t\t\t\t\tconst h = parseInt(aResult.H || aResult.G || 0, 10);\n\t\t\t\t\t\tif (bPM)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taResult.HH = h + (h == 12 ? 0 : 12);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taResult.HH = h < 12 ? h : 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\taResult.HH = parseInt(aResult.HH || aResult.GG || 0, 10);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isNaN(aResult.SS))\n\n\t\t\t\t\t{ aResult.SS = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (bUTC)\n\t\t\t\t\t{\n\t\t\t\t\t\td.setUTCHours(aResult.HH, aResult.MI, aResult.SS);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\td.setHours(aResult.HH, aResult.MI, aResult.SS);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn d;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic formatTime(hours, minutes)\n\t{\n\t\tlet day;\n\t\tif (Type.isDate(hours))\n\t\t{\n\t\t\tday = hours;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tday = new Date();\n\t\t\tday.setHours(hours, minutes, 0);\n\t\t}\n\n\t\treturn DateTimeFormat.format(Util.getTimeFormatShort(), day.getTime() / 1000);\n\t}\n\n\tstatic formatDate(timestamp)\n\t{\n\t\tif (Type.isDate(timestamp))\n\t\t{\n\t\t\ttimestamp = timestamp.getTime();\n\t\t}\n\n\t\treturn DateTimeFormat.format(Util.getDateFormat(), timestamp / 1000);\n\t}\n\n\tstatic formatDateTime(timestamp)\n\t{\n\t\tif (Type.isDate(timestamp))\n\t\t{\n\t\t\ttimestamp = timestamp.getTime();\n\t\t}\n\n\t\treturn DateTimeFormat.format(Util.getDateTimeFormat(), timestamp / 1000);\n\t}\n\n\tstatic formatTimeInterval(from, to)\n\t{\n\t\tconst formattedFrom = DateTimeFormat.format(Util.getTimeFormatShort(), from.getTime() / 1000);\n\t\tconst formattedTo = DateTimeFormat.format(Util.getTimeFormatShort(), to.getTime() / 1000);\n\n\t\treturn `${formattedFrom} - ${formattedTo}`;\n\t}\n\n\tstatic formatDuration(diffMinutes)\n\t{\n\t\tconst hours = Math.floor(diffMinutes / 60);\n\t\tconst minutes = diffMinutes % 60;\n\n\t\tlet hint = DateTimeFormat.format('idiff', Date.now() / 1000 - minutes * 60);\n\t\tif (hours > 0)\n\t\t{\n\t\t\thint = DateTimeFormat.format('Hdiff', Date.now() / 1000 - hours * 60 * 60);\n\t\t\tif (minutes > 0)\n\t\t\t{\n\t\t\t\thint += ` ${DateTimeFormat.format('idiff', Date.now() / 1000 - minutes * 60)}`;\n\t\t\t}\n\t\t}\n\n\t\treturn hint;\n\t}\n\n\tstatic formatDateUsable(date, showYear = true, showDayOfWeek = false)\n\t{\n\t\tconst lang = Loc.getMessage('LANGUAGE_ID');\n\t\tlet format = Util.getDateFormat();\n\t\tif (lang === 'ru' || lang === 'ua')\n\t\t{\n\t\t\tformat = showDayOfWeek ? 'l, j F' : 'j F';\n\n\t\t\tif (date.getFullYear\n\t\t\t\t&& date.getFullYear() !== new Date().getFullYear()\n\t\t\t\t&& showYear !== false\n\t\t\t)\n\t\t\t{\n\t\t\t\tformat += ' Y';\n\t\t\t}\n\t\t}\n\n\t\treturn DateTimeFormat.format([\n\t\t\t['today', 'today'],\n\t\t\t['tommorow', 'tommorow'],\n\t\t\t['yesterday', 'yesterday'],\n\t\t\t['', format],\n\t\t], date);\n\t}\n\n\tstatic formatDayMonthShortTime(timestamp)\n\t{\n\t\treturn `\n\t\t\t${DateTimeFormat.format(DateTimeFormat.getFormat('DAY_MONTH_FORMAT'), timestamp)} \n\t\t\t${DateTimeFormat.format(DateTimeFormat.getFormat('SHORT_TIME_FORMAT'), timestamp)}\n\t\t`;\n\t}\n\n\tstatic getDayLength()\n\t{\n\t\tif (!Util.DAY_LENGTH)\n\t\t{\n\t\t\tUtil.DAY_LENGTH = 86_400_000;\n\t\t}\n\n\t\treturn Util.DAY_LENGTH;\n\t}\n\n\tstatic getDefaultColorList()\n\t{\n\t\treturn ['#86b100', '#0092cc', '#00afc7', '#e89b06', '#00b38c', '#de2b24', '#bd7ac9', '#838fa0', '#c3612c', '#e97090'];\n\t}\n\n\tstatic findTargetNode(node, parentCont)\n\t{\n\t\tlet res = false;\n\t\tif (node)\n\t\t{\n\t\t\tconst prefix = 'data-bx-calendar';\n\t\t\tlet i;\n\n\t\t\tif (node.attributes && node.attributes.length > 0)\n\t\t\t{\n\t\t\t\tfor (i = 0; i < node.attributes.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.attributes[i].name && node.attributes[i].name.slice(0, prefix.length) === prefix)\n\t\t\t\t\t{\n\t\t\t\t\t\tres = node;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!res)\n\t\t\t{\n\t\t\t\tres = BX.findParent(node, (n) => {\n\t\t\t\t\tlet j;\n\t\t\t\t\tif (n.attributes && n.attributes.length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (j = 0; j < n.attributes.length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (n.attributes[j].name && n.attributes[j].name.slice(0, prefix.length) === prefix)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}, parentCont);\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tstatic getFollowedUserList(userId)\n\t{\n\t\treturn [];\n\t}\n\n\tstatic getWeekDayByInd(index)\n\t{\n\t\treturn ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'][index];\n\t}\n\n\tstatic getIndByWeekDay(weekDay)\n\t{\n\t\treturn new Object({ SU: 0, MO: 1, TU: 2, WE: 3, TH: 4, FR: 5, SA: 6 })[weekDay];\n\t}\n\n\tstatic getWeekdaysLoc(isFull = false): []\n\t{\n\t\tconst today = new Date();\n\t\tconst weekdays = [];\n\n\t\tconst dayLength = 24 * 60 * 60 * 1000;\n\t\tconst format = isFull ? 'l' : 'D';\n\t\tfor (let weekOffset = 0; weekOffset < 7; weekOffset++)\n\t\t{\n\t\t\tweekdays[(today.getDay() + weekOffset) % 7] = DateTimeFormat.format(\n\t\t\t\tformat,\n\t\t\t\tnew Date(today.getTime() + dayLength * weekOffset),\n\t\t\t);\n\t\t}\n\n\t\treturn weekdays;\n\t}\n\n\tstatic getLoader(size, className)\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"${className || 'calendar-loader'}\">\n\t\t\t\t<svg class=\"calendar-loader-circular\"\n\t\t\t\t\tstyle=\"width:${parseInt(size)}px; height:${parseInt(size)}px;\"\n\t\t\t\t\tviewBox=\"25 25 50 50\">\n\t\t\t\t\t\t<circle class=\"calendar-loader-path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-miterlimit=\"10\"/>\n\t\t\t\t\t\t<circle class=\"calendar-loader-inner-path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-miterlimit=\"10\"/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tstatic getDayCode(date)\n\t{\n\t\treturn `${date.getFullYear()}-${(`0${Math.trunc(date.getMonth() + 1)}`).slice(-2, -2 + 2)}-${(`0${Math.trunc(date.getDate())}`).slice(-2, -2 + 2)}`;\n\t}\n\n\tstatic getTextColor(color)\n\t{\n\t\tif (!color)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (color.charAt(0) === '#')\n\t\t{\n\t\t\tcolor = color.slice(1, 7);\n\t\t}\n\n\t\tconst r = parseInt(color.slice(0, 2), 16);\n\t\tconst g = parseInt(color.slice(2, 4), 16);\n\t\tconst b = parseInt(color.slice(4, 6), 16);\n\t\tconst light = (r * 0.8 + g + b * 0.2) / 510 * 100;\n\n\t\treturn light < 50;\n\t}\n\n\tstatic getKeyCode(key)\n\t{\n\t\tif (!Type.isString(key))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tconst KEY_CODES = {\n\t\t\tbackspace: 8,\n\t\t\tenter: 13,\n\t\t\tescape: 27,\n\t\t\tspace: 32,\n\t\t\tdelete: 46,\n\t\t\tleft: 37,\n\t\t\tright: 39,\n\t\t\tup: 38,\n\t\t\tdown: 40,\n\t\t\tz: 90,\n\t\t\ty: 89,\n\t\t\tshift: 16,\n\t\t\tctrl: 17,\n\t\t\talt: 18,\n\t\t\tcmd: 91, // 93, 224, 17 Browser dependent\n\t\t\tcmdRight: 93, // 93, 224, 17 Browser dependent?\n\t\t\tpageUp: 33,\n\t\t\tpageDown: 34,\n\t\t\td: 68,\n\t\t\tw: 87,\n\t\t\tm: 77,\n\t\t\ta: 65,\n\t\t};\n\n\t\treturn KEY_CODES[key.toLowerCase()];\n\t}\n\n\tstatic isAnyModifierKeyPressed(event = window.event)\n\t{\n\t\tif (event)\n\t\t{\n\t\t\treturn event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic getUsableDateTime(timestamp, roundMin)\n\t{\n\t\tif (Type.isDate(timestamp))\n\t\t{\n\t\t\ttimestamp = timestamp.getTime();\n\t\t}\n\n\t\tconst r = (roundMin || 10) * 60 * 1000;\n\t\ttimestamp = Math.ceil(timestamp / r) * r;\n\n\t\treturn new Date(timestamp);\n\t}\n\n\tstatic showNotification(message, actions = null)\n\t{\n\t\tif (Type.isString(message) && message !== '')\n\t\t{\n\t\t\tBX.UI.Notification.Center.notify({\n\t\t\t\tcontent: message,\n\t\t\t\tactions,\n\t\t\t});\n\t\t}\n\t}\n\n\tstatic showFieldError(message, wrap, options)\n\t{\n\t\tif (Type.isDomNode(wrap) && Type.isString(message) && message !== '')\n\t\t{\n\t\t\tDom.remove(wrap.querySelector('.ui-alert'));\n\n\t\t\tconst alert = new BX.UI.Alert({\n\t\t\t\tcolor: BX.UI.Alert.Color.DANGER,\n\t\t\t\ticon: BX.UI.Alert.Icon.DANGER,\n\t\t\t\ttext: message,\n\t\t\t});\n\n\t\t\tconst alertWrap = alert.getContainer();\n\n\t\t\twrap.appendChild(alertWrap);\n\n\t\t\treturn alertWrap;\n\t\t}\n\t}\n\n\tstatic getDateFormat()\n\t{\n\t\tif (!Util.DATE_FORMAT)\n\t\t{\n\t\t\tUtil.DATE_FORMAT = BX.Main.Date.convertBitrixFormat(Loc.getMessage('FORMAT_DATE'));\n\t\t}\n\n\t\treturn Util.DATE_FORMAT;\n\t}\n\n\tstatic setDayMonthFormat(value)\n\t{\n\t\tUtil.dayMonthFormat = value;\n\t}\n\n\tstatic getDayMonthFormat()\n\t{\n\t\treturn Util.dayMonthFormat || 'j F';\n\t}\n\n\tstatic setLongDateFormat(value)\n\t{\n\t\tUtil.longDateFormat = value;\n\t}\n\n\tstatic getLongDateFormat()\n\t{\n\t\treturn Util.longDateFormat || 'j F Y';\n\t}\n\n\tstatic getDateTimeFormat()\n\t{\n\t\tif (!Util.DATETIME_FORMAT)\n\t\t{\n\t\t\tUtil.DATETIME_FORMAT = BX.Main.Date.convertBitrixFormat(Loc.getMessage('FORMAT_DATETIME'));\n\t\t}\n\n\t\treturn Util.DATETIME_FORMAT;\n\t}\n\n\tstatic getTimeFormat()\n\t{\n\t\tif (!Util.TIME_FORMAT)\n\t\t{\n\t\t\tif ((Loc.getMessage('FORMAT_DATETIME').slice(0, Loc.getMessage('FORMAT_DATE').length) === Loc.getMessage('FORMAT_DATE')))\n\t\t\t{\n\t\t\t\tUtil.TIME_FORMAT = BX.util.trim(Util.getDateTimeFormat().slice(Util.getDateFormat().length));\n\t\t\t\tUtil.TIME_FORMAT_BX = BX.util.trim(Loc.getMessage('FORMAT_DATETIME').slice(Loc.getMessage('FORMAT_DATE').length));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tUtil.TIME_FORMAT_BX = DateTimeFormat.isAmPmMode() ? 'H:MI:SS T' : 'HH:MI:SS';\n\t\t\t\tUtil.TIME_FORMAT = DateTimeFormat.convertBitrixFormat(BX.Main.DateTimeFormat.isAmPmMode() ? 'H:MI:SS T' : 'HH:MI:SS');\n\t\t\t}\n\t\t}\n\n\t\treturn Util.TIME_FORMAT;\n\t}\n\n\tstatic getTimeFormatShort()\n\t{\n\t\tif (!Util.TIME_FORMAT_SHORT)\n\t\t{\n\t\t\tUtil.TIME_FORMAT_SHORT = Util.getTimeFormat().replace(':s', '');\n\t\t\tUtil.TIME_FORMAT_SHORT_BX = Util.TIME_FORMAT_BX.replace(':SS', '');\n\t\t}\n\n\t\treturn Util.TIME_FORMAT_SHORT;\n\t}\n\n\tstatic getCurrentUserId()\n\t{\n\t\tif (!Util.currentUserId)\n\t\t{\n\t\t\tUtil.currentUserId = parseInt(Loc.getMessage('USER_ID'));\n\t\t}\n\n\t\treturn Util.currentUserId;\n\t}\n\n\tstatic getTimeByInt(intValue)\n\t{\n\t\tintValue = parseInt(intValue);\n\t\tconst h = Math.floor(intValue / 60);\n\n\t\treturn { hour: h, min: intValue - h * 60 };\n\t}\n\n\tstatic preventSelection(node)\n\t{\n\t\tnode.ondrag = BX.False;\n\t\tnode.ondragstart = BX.False;\n\t\tnode.onselectstart = BX.False;\n\t}\n\n\tstatic getBX()\n\t{\n\t\treturn window.top.BX || window.BX;\n\t}\n\n\tstatic closeAllPopups()\n\t{\n\t\tif (PopupManager.isAnyPopupShown())\n\t\t{\n\t\t\tfor (let i = 0, length = PopupManager._popups.length; i < length; i++)\n\t\t\t{\n\t\t\t\tif (PopupManager._popups[i]\n\t\t\t\t\t&& PopupManager._popups[i].isShown())\n\t\t\t\t{\n\t\t\t\t\tPopupManager._popups[i].close();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic showConfirmPopup(action, message, options = {})\n\t{\n\t\tthis.confirmPopup = new MessageBox({\n\t\t\tmessage: Tag.render`\n\t\t\t\t<div class=\"calendar-list-slider-messagebox-text\">\n\t\t\t\t\t${message}\n\t\t\t\t</div>\n\t\t\t`,\n\t\t\tminHeight: 120,\n\t\t\tminWidth: 280,\n\t\t\tmaxWidth: 300,\n\t\t\tbuttons: BX.UI.Dialogs.MessageBoxButtons.OK_CANCEL,\n\t\t\tonOk: () => {\n\t\t\t\taction();\n\t\t\t\tthis.confirmPopup?.close();\n\t\t\t},\n\t\t\tonCancel: () => {\n\t\t\t\tthis.confirmPopup?.close();\n\t\t\t},\n\t\t\tpopupOptions: {\n\t\t\t\tevents: {\n\t\t\t\t\tonPopupClose: () => {\n\t\t\t\t\t\tdelete this.confirmPopup;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcloseByEsc: false,\n\t\t\t\tpadding: 0,\n\t\t\t\tcontentPadding: 0,\n\t\t\t\tanimation: 'fading-slide',\n\t\t\t},\n\t\t\t...options,\n\t\t});\n\n\t\tthis.confirmPopup.show();\n\t}\n\n\tstatic sendAnalyticLabel(label)\n\t{\n\t\tBX.ajax.runAction('calendar.api.calendarajax.sendAnalyticsLabel', { analyticsLabel: label });\n\t}\n\n\tstatic setOptions(config, additionalParams)\n\t{\n\t\tUtil.config = config;\n\t\tUtil.additionalParams = additionalParams;\n\t}\n\n\tstatic setUserSettings(userSettings)\n\t{\n\t\tUtil.userSettings = userSettings;\n\t}\n\n\tstatic getUserSettings()\n\t{\n\t\treturn Type.isObjectLike(Util.userSettings) ? Util.userSettings : {};\n\t}\n\n\tstatic setCalendarContext(calendarContext)\n\t{\n\t\tUtil.calendarContext = calendarContext;\n\t}\n\n\tstatic getCalendarContext()\n\t{\n\t\treturn Util.calendarContext || null;\n\t}\n\n\tstatic getMeetingStatusList()\n\t{\n\t\treturn ['Y', 'N', 'Q', 'H'];\n\t}\n\n\tstatic getWorkTimeStart()\n\t{\n\t\tconst workTimeStartParsed = this.config.work_time_start.split('.');\n\n\t\tif (workTimeStartParsed.length === 1)\n\t\t{\n\t\t\treturn `${workTimeStartParsed[0]}.00`;\n\t\t}\n\n\t\treturn this.config.work_time_start;\n\t}\n\n\tstatic getWorkTimeEnd()\n\t{\n\t\tconst workTimeEndParsed = this.config.work_time_end.split('.');\n\n\t\tif (workTimeEndParsed.length === 1)\n\t\t{\n\t\t\treturn `${workTimeEndParsed[0]}.00`;\n\t\t}\n\n\t\treturn this.config.work_time_end;\n\t}\n\n\tstatic isReadOnlyMode()\n\t{\n\t\tconst readOnly = this.getCalendarContext().util?.config.readOnly;\n\n\t\tif (readOnly === undefined)\n\t\t{\n\t\t\tconst sectionList = this.getCalendarContext().sectionManager.getSectionListForEdit();\n\n\t\t\tif (!sectionList || sectionList.length === 0)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn Boolean(readOnly);\n\t}\n\n\tstatic hasFullAccess(): boolean\n\t{\n\t\treturn Boolean(this.getCalendarContext().util?.config?.perm?.access);\n\t}\n\n\tstatic getSettings()\n\t{\n\t\treturn this.getCalendarContext().util?.config.settings;\n\t}\n\n\tstatic hasLocationAccess()\n\t{\n\t\treturn this.getCalendarContext()?.util?.config.locationAccess || false;\n\t}\n\n\tstatic isCollabFeatureEnabled()\n\t{\n\t\treturn this.getCalendarContext()?.util?.config.isCollabFeatureEnabled || true;\n\t}\n\n\tstatic userIsOwner()\n\t{\n\t\treturn this.getCalendarContext().util?.userIsOwner();\n\t}\n\n\tstatic isExtranet()\n\t{\n\t\treturn this.getCalendarContext().util?.isExtranetUser();\n\t}\n\n\tstatic checkEmailLimitationPopup()\n\t{\n\t\treturn !this.getEventWithEmailGuestEnabled();\n\t}\n\n\tstatic isEventWithEmailGuestAllowed()\n\t{\n\t\treturn this.getEventWithEmailGuestEnabled();\n\t}\n\n\tstatic setTimezoneList(value)\n\t{\n\t\tUtil.timzezoneList = value;\n\t}\n\n\tstatic getTimezoneList(): Object\n\t{\n\t\treturn Util.timzezoneList;\n\t}\n\n\tstatic setAbsenceAvailable(value)\n\t{\n\t\tUtil.absenceAvailable = value;\n\t}\n\n\tstatic getAbsenceAvailable()\n\t{\n\t\treturn Util.absenceAvailable;\n\t}\n\n\tstatic setEventWithEmailGuestEnabled(value)\n\t{\n\t\tUtil.eventWithEmailGuestEnabled = value;\n\t}\n\n\tstatic getEventWithEmailGuestEnabled()\n\t{\n\t\treturn Util.eventWithEmailGuestEnabled;\n\t}\n\n\tstatic setProjectFeatureEnabled(value)\n\t{\n\t\tUtil.projectFeatureEnabled = value;\n\t}\n\n\tstatic isProjectFeatureEnabled()\n\t{\n\t\treturn Util.projectFeatureEnabled;\n\t}\n\n\tstatic setIsBitrix24Template(value)\n\t{\n\t\tUtil.isBitrix24Template = value;\n\t}\n\n\tstatic getIsBitrix24Template()\n\t{\n\t\treturn Util.isBitrix24Template;\n\t}\n\n\tstatic setCurrentView(calendarView = null)\n\t{\n\t\tUtil.currentCalendarView = calendarView;\n\t}\n\n\tstatic getCurrentView()\n\t{\n\t\treturn Util.currentCalendarView || null;\n\t}\n\n\tstatic adjustDateForTimezoneOffset(date, timezoneOffset = 0, fullDay = false)\n\t{\n\t\tif (!Type.isDate(date))\n\t\t{\n\t\t\tthrow new TypeError('Wrong type for date attribute. DateTime object expected.');\n\t\t}\n\n\t\tif (!parseInt(timezoneOffset) || fullDay === true)\n\t\t{\n\t\t\treturn date;\n\t\t}\n\n\t\treturn new Date(date.getTime() - parseInt(timezoneOffset) * 1000);\n\t}\n\n\tstatic getFormattedTimezone(timeZone)\n\t{\n\t\tconst timezoneOffset = this.getTimeZoneOffset(timeZone);\n\t\tif (timezoneOffset === 0)\n\t\t{\n\t\t\treturn `(UTC) ${timeZone}`;\n\t\t}\n\n\t\tconst prefix = (timezoneOffset > 0 ? '-' : '+');\n\t\tconst hours = (`0${Math.floor(Math.abs(timezoneOffset) / 60)}`).slice(-2);\n\t\tconst minutes = (`0${Math.abs(timezoneOffset) % 60}`).slice(-2);\n\n\t\treturn `(UTC ${prefix}${hours}:${minutes}) ${timeZone}`;\n\t}\n\n\tstatic getTimezoneDateFromTimestampUTC(timestampUTC, timeZone)\n\t{\n\t\treturn new Date(timestampUTC + this.getTimeZoneOffset() * 60 * 1000 - this.getTimeZoneOffset(timeZone) * 60 * 1000);\n\t}\n\n\tstatic getTimeZoneOffset(timeZone, date = new Date())\n\t{\n\t\tlet timeInTimezone;\n\t\ttry\n\t\t{\n\t\t\ttimeInTimezone = new Date(date.toLocaleString('en-US', { timeZone })).getTime();\n\t\t}\n\t\tcatch\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst timeInUTC = new Date(date.toLocaleString('en-US', { timeZone: 'UTC' })).getTime();\n\n\t\treturn parseInt((timeInUTC - timeInTimezone) / 60000);\n\t}\n\n\tstatic randomInt(min, max)\n\t{\n\t\treturn Math.round(min - 0.5 + Math.random() * (max - min + 1));\n\t}\n\n\tstatic getRandomColor()\n\t{\n\t\tconst defaultColors = Util.getDefaultColorList();\n\n\t\treturn defaultColors[Util.randomInt(0, defaultColors.length - 1)];\n\t}\n\n\tstatic setAccessNames(accessNames = {})\n\t{\n\t\tUtil.accessNames = {};\n\t\tfor (const code in accessNames)\n\t\t{\n\t\t\tif (accessNames.hasOwnProperty(code))\n\t\t\t{\n\t\t\t\tUtil.setAccessName(code, accessNames[code]);\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic getAccessName(code)\n\t{\n\t\treturn Util.accessNames[code] || code;\n\t}\n\n\tstatic setAccessName(code, name)\n\t{\n\t\tUtil.accessNames[code] = name;\n\t}\n\n\tstatic getRandomInt(numCount = 6)\n\t{\n\t\treturn Math.round(Math.random() * 10 ** numCount);\n\t}\n\n\tstatic displayError(errors, reloadPage)\n\t{\n\t\tif (Type.isArray(errors))\n\t\t{\n\t\t\tlet errorMessage = '';\n\t\t\tfor (const error of errors)\n\t\t\t{\n\t\t\t\terrorMessage += `${error.message}\\n`;\n\t\t\t}\n\t\t\terrors = errorMessage;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\talert(errors || '[Bitrix Calendar] Request error');\n\t\t\tif (reloadPage)\n\t\t\t{\n\t\t\t\tlocation.reload();\n\t\t\t}\n\t\t}, 200);\n\t}\n\n\tstatic convertEntityToAccessCode(entity)\n\t{\n\t\tif (Type.isObjectLike(entity))\n\t\t{\n\t\t\tif (entity.entityId === 'meta-user' && entity.id === 'all-users')\n\t\t\t{\n\t\t\t\treturn 'UA';\n\t\t\t}\n\n\t\t\tif (entity.entityId === 'user')\n\t\t\t{\n\t\t\t\treturn `U${entity.id}`;\n\t\t\t}\n\n\t\t\tif (entity.entityId === 'project')\n\t\t\t{\n\t\t\t\treturn `SG${entity.id}_K`; // for all members of group\n\t\t\t}\n\n\t\t\tif (entity.entityId === 'department')\n\t\t\t{\n\t\t\t\treturn `DR${entity.id}`;\n\t\t\t}\n\n\t\t\tif (entity.entityId === 'group')\n\t\t\t{\n\t\t\t\treturn entity.id;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic extendPlannerWatches({ entries, userId })\n\t{\n\t\tentries.forEach((entry) => {\n\t\t\tif (entry.type === 'user' && parseInt(entry.id, 10) !== parseInt(userId, 10))\n\t\t\t{\n\t\t\t\tconst tag = Util.PLANNER_PULL_TAG.replace('#USER_ID#', entry.id);\n\t\t\t\tif (!Util.PLANNER_WATCH_LIST.includes(tag))\n\t\t\t\t{\n\t\t\t\t\tBX.PULL.extendWatch(tag);\n\t\t\t\t\tUtil.PLANNER_WATCH_LIST.push(tag);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic clearPlannerWatches()\n\t{\n\t\tUtil.PLANNER_WATCH_LIST.forEach((tag) => {\n\t\t\tBX.PULL.clearWatch(tag);\n\t\t});\n\t\tUtil.PLANNER_WATCH_LIST = [];\n\t}\n\n\tstatic registerRequestId()\n\t{\n\t\tconst requestUid = BX.Calendar.Util.getRandomInt(8);\n\t\tUtil.REQUEST_ID_LIST.push(requestUid);\n\n\t\treturn requestUid;\n\t}\n\n\tstatic unregisterRequestId(requestUid)\n\t{\n\t\tUtil.REQUEST_ID_LIST = Util.REQUEST_ID_LIST.filter((uid) => {\n\t\t\treturn uid !== requestUid;\n\t\t});\n\t}\n\n\tstatic checkRequestId(requestUid)\n\t{\n\t\trequestUid = parseInt(requestUid);\n\n\t\treturn !Type.isInteger(requestUid) || !Util.REQUEST_ID_LIST.includes(requestUid);\n\t}\n\n\tstatic initHintNode(hintNode)\n\t{\n\t\tconst bx = Util.getBX();\n\t\tif (Type.isElementNode(hintNode) && bx?.UI?.Hint)\n\t\t{\n\t\t\tif (bx?.UI?.Hint?.popup)\n\t\t\t{\n\t\t\t\tbx.UI.Hint.popup.destroy();\n\t\t\t\tbx.UI.Hint.popup = null;\n\t\t\t\tbx.UI.Hint.content = null;\n\t\t\t}\n\t\t\tbx.UI.Hint.initNode(hintNode);\n\t\t}\n\t}\n\n\tstatic documentIsDisplayingNow()\n\t{\n\t\treturn !document.hidden;\n\t}\n\n\tstatic removeHash()\n\t{\n\t\tif ('pushState' in history)\n\t\t{\n\t\t\thistory.pushState('', document.title, window.location.pathname + window.location.search);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Prevent scrolling by storing the page's current scroll offset\n\t\t\tconst scrollV = document.body.scrollTop;\n\t\t\tconst scrollH = document.body.scrollLeft;\n\t\t\twindow.location.hash = '';\n\t\t\t// Restore the scroll offset, should be flicker free\n\t\t\tdocument.body.scrollTop = scrollV;\n\t\t\tdocument.body.scrollLeft = scrollH;\n\t\t}\n\t}\n\n\t// TODO: move to syncManager\n\tstatic setIphoneConnectionStatus(value)\n\t{\n\t\tUtil.iphoneConnectionStatus = value;\n\t}\n\n\tstatic isIphoneConnected()\n\t{\n\t\treturn Util.iphoneConnectionStatus;\n\t}\n\n\tstatic setMacConnectionStatus(value)\n\t{\n\t\tUtil.macConnectionStatus = value;\n\t}\n\n\tstatic isMacConnected()\n\t{\n\t\treturn Util.macConnectionStatus;\n\t}\n\n\tstatic setIcloudConnectionStatus(value)\n\t{\n\t\tUtil.icloudConnectionStatus = value;\n\t}\n\n\tstatic isIcloudConnected()\n\t{\n\t\treturn Util.icloudConnectionStatus;\n\t}\n\n\tstatic setGoogleConnectionStatus(value)\n\t{\n\t\tUtil.googleConnectionStatus = value;\n\t}\n\n\tstatic isGoogleConnected()\n\t{\n\t\treturn Util.googleConnectionStatus;\n\t}\n\n\tstatic setIsSharingFeatureEnabled(value)\n\t{\n\t\tUtil.isSharingFeatureEnabled = value;\n\t}\n\n\tstatic checkSharingFeatureEnabled()\n\t{\n\t\treturn Util.isSharingFeatureEnabled;\n\t}\n\n\tstatic setSharingConfig(value)\n\t{\n\t\tUtil.sharingConfig = value;\n\t}\n\n\tstatic getSharingConfig()\n\t{\n\t\treturn Util.sharingConfig;\n\t}\n\n\tstatic async downloadIcsFileByEventId(eventId: number, fileName: string = 'event'): Promise<void>\n\t{\n\t\tconst { status, data } = await Util.getBX().ajax\n\t\t\t.runAction('calendar.api.calendarentryajax.getIcsContent', {\n\t\t\t\tdata: {\n\t\t\t\t\teventId,\n\t\t\t\t},\n\t\t\t});\n\n\t\tif (status !== 'success')\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\treturn Util.downloadIcsFile(data, fileName);\n\t}\n\n\tstatic downloadIcsFile(fileContent: string, fileName: string)\n\t{\n\t\tconst link = document.createElement('a');\n\t\tlink.href = `data:text/calendar,${encodeURI(fileContent)}`;\n\t\tlink.download = fileName;\n\t\tlink.click();\n\t}\n\n\tstatic filterSectionsByContext(sections, { isCollabUser, calendarType, calendarOwnerId }): Array\n\t{\n\t\tif (!Type.isArray(sections) || !isCollabUser)\n\t\t{\n\t\t\treturn sections;\n\t\t}\n\n\t\tconst isCollab = (section) => (Type.isFunction(section.isCollab) && section.isCollab()) || section.IS_COLLAB;\n\n\t\tswitch (calendarType)\n\t\t{\n\t\t\tcase 'user':\n\t\t\t\treturn sections.filter((section) => isCollab(section));\n\t\t\tcase 'group':\n\t\t\t\tconst isCalendarOwnerIsSectionOwner = (section) => {\n\t\t\t\t\tconst sectionOwnerId = (Type.isNumber(section.ownerId) && section.ownerId) || parseInt(section.OWNER_ID, 10);\n\n\t\t\t\t\treturn sectionOwnerId === calendarOwnerId;\n\t\t\t\t};\n\n\t\t\t\treturn sections.filter((section) => isCollab(section) && isCalendarOwnerIsSectionOwner(section));\n\t\t\tdefault:\n\t\t\t\treturn sections;\n\t\t}\n\t}\n}\n"],"names":["Util","parseTime","str","date","parseDate1","DateTimeFormat","format","getDateFormat","Date","h","getHours","m","getMinutes","getTimeRounded","Math","round","getTime","parseDate","bUTC","formatDate","formatDatetime","BX","trimSeconds","i","cnt","k","regMonths","Loc","getMessage","util","trim","replace","type","isNotEmptyString","expr","RegExp","aDate","match","aFormat","aDateArgs","aFormatArgs","aResult","length","array_search","getNumMonth","toUpperCase","parseInt","DD","MM","YYYY","d","setDate","setFullYear","setMonth","setHours","isNaN","HH","GG","H","G","MI","bPM","T","TT","SS","formatTime","hours","minutes","day","Type","isDate","getTimeFormatShort","timestamp","formatDateTime","getDateTimeFormat","formatTimeInterval","from","to","formattedFrom","formattedTo","formatDuration","diffMinutes","floor","hint","now","formatDateUsable","showYear","showDayOfWeek","lang","getFullYear","formatDayMonthShortTime","getFormat","getDayLength","DAY_LENGTH","getDefaultColorList","findTargetNode","node","parentCont","res","prefix","attributes","name","slice","findParent","n","j","getFollowedUserList","userId","getWeekDayByInd","index","getIndByWeekDay","weekDay","Object","SU","MO","TU","WE","TH","FR","SA","getWeekdaysLoc","isFull","today","weekdays","dayLength","weekOffset","getDay","getLoader","size","className","Tag","render","getDayCode","trunc","getMonth","getDate","getTextColor","color","charAt","r","g","b","light","getKeyCode","key","isString","KEY_CODES","backspace","enter","escape","space","delete","left","right","up","down","z","y","shift","ctrl","alt","cmd","cmdRight","pageUp","pageDown","w","a","toLowerCase","isAnyModifierKeyPressed","event","window","altKey","shiftKey","ctrlKey","metaKey","getUsableDateTime","roundMin","ceil","showNotification","message","actions","UI","Notification","Center","notify","content","showFieldError","wrap","options","isDomNode","Dom","remove","querySelector","alert","Alert","Color","DANGER","icon","Icon","text","alertWrap","getContainer","appendChild","DATE_FORMAT","Main","convertBitrixFormat","setDayMonthFormat","value","dayMonthFormat","getDayMonthFormat","setLongDateFormat","longDateFormat","getLongDateFormat","DATETIME_FORMAT","getTimeFormat","TIME_FORMAT","TIME_FORMAT_BX","isAmPmMode","TIME_FORMAT_SHORT","TIME_FORMAT_SHORT_BX","getCurrentUserId","currentUserId","getTimeByInt","intValue","hour","min","preventSelection","ondrag","False","ondragstart","onselectstart","getBX","top","closeAllPopups","PopupManager","isAnyPopupShown","_popups","isShown","close","showConfirmPopup","action","confirmPopup","MessageBox","minHeight","minWidth","maxWidth","buttons","Dialogs","MessageBoxButtons","OK_CANCEL","onOk","onCancel","popupOptions","events","onPopupClose","closeByEsc","padding","contentPadding","animation","show","sendAnalyticLabel","label","ajax","runAction","analyticsLabel","setOptions","config","additionalParams","setUserSettings","userSettings","getUserSettings","isObjectLike","setCalendarContext","calendarContext","getCalendarContext","getMeetingStatusList","getWorkTimeStart","workTimeStartParsed","work_time_start","split","getWorkTimeEnd","workTimeEndParsed","work_time_end","isReadOnlyMode","readOnly","undefined","sectionList","sectionManager","getSectionListForEdit","Boolean","hasFullAccess","perm","access","getSettings","settings","hasLocationAccess","locationAccess","isCollabFeatureEnabled","userIsOwner","isExtranet","isExtranetUser","checkEmailLimitationPopup","getEventWithEmailGuestEnabled","isEventWithEmailGuestAllowed","setTimezoneList","timzezoneList","getTimezoneList","setAbsenceAvailable","absenceAvailable","getAbsenceAvailable","setEventWithEmailGuestEnabled","eventWithEmailGuestEnabled","setProjectFeatureEnabled","projectFeatureEnabled","isProjectFeatureEnabled","setIsBitrix24Template","isBitrix24Template","getIsBitrix24Template","setCurrentView","calendarView","currentCalendarView","getCurrentView","adjustDateForTimezoneOffset","timezoneOffset","fullDay","TypeError","getFormattedTimezone","timeZone","getTimeZoneOffset","abs","getTimezoneDateFromTimestampUTC","timestampUTC","timeInTimezone","toLocaleString","timeInUTC","randomInt","max","random","getRandomColor","defaultColors","setAccessNames","accessNames","code","hasOwnProperty","setAccessName","getAccessName","getRandomInt","numCount","displayError","errors","reloadPage","isArray","errorMessage","error","setTimeout","location","reload","convertEntityToAccessCode","entity","entityId","id","extendPlannerWatches","entries","forEach","entry","tag","PLANNER_PULL_TAG","PLANNER_WATCH_LIST","includes","PULL","extendWatch","push","clearPlannerWatches","clearWatch","registerRequestId","requestUid","Calendar","REQUEST_ID_LIST","unregisterRequestId","filter","uid","checkRequestId","isInteger","initHintNode","hintNode","bx","isElementNode","Hint","popup","destroy","initNode","documentIsDisplayingNow","document","hidden","removeHash","history","pushState","title","pathname","search","scrollV","body","scrollTop","scrollH","scrollLeft","hash","setIphoneConnectionStatus","iphoneConnectionStatus","isIphoneConnected","setMacConnectionStatus","macConnectionStatus","isMacConnected","setIcloudConnectionStatus","icloudConnectionStatus","isIcloudConnected","setGoogleConnectionStatus","googleConnectionStatus","isGoogleConnected","setIsSharingFeatureEnabled","isSharingFeatureEnabled","checkSharingFeatureEnabled","setSharingConfig","sharingConfig","getSharingConfig","downloadIcsFileByEventId","eventId","fileName","status","data","downloadIcsFile","fileContent","link","createElement","href","encodeURI","download","click","filterSectionsByContext","sections","isCollabUser","calendarType","calendarOwnerId","isCollab","section","isFunction","IS_COLLAB","isCalendarOwnerIsSectionOwner","sectionOwnerId","isNumber","ownerId","OWNER_ID"],"mappings":"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"}