%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.144.21.125 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/main.post.form/templates/.default/ |
Upload File : |
;(function() { if (window['LHEPostForm']) { return; } this.BX = this.BX || {}; (function (exports,main_core_events,main_polyfill_intersectionobserver,main_popup,main_core) { 'use strict'; var Default = /*#__PURE__*/function () { function Default(editor, htmlEditor) { babelHelpers.classCallCheck(this, Default); babelHelpers.defineProperty(this, "id", 'SomeParser'); babelHelpers.defineProperty(this, "buttonParams", { name: 'Some parser name', iconClassName: 'some-parser-class', disabledForTextarea: false, src: '/icon.png', toolbarSort: 205 }); this.editor = editor; this.htmlEditor = htmlEditor; this.handler = this.handler.bind(this); } babelHelpers.createClass(Default, [{ key: "handler", value: function handler() {} }, { key: "parse", value: function parse(text) { return text; } }, { key: "unparse", value: function unparse(bxTag, oNode) { return ''; } }, { key: "hasButton", value: function hasButton() { return this.buttonParams !== null; } }, { key: "getButton", value: function getButton() { if (this.buttonParams === null) { return null; } return { id: this.id, name: this.buttonParams.name, iconClassName: this.buttonParams.iconClassName, disabledForTextarea: this.buttonParams.disabledForTextarea, src: this.buttonParams.src, toolbarSort: this.buttonParams.toolbarSort, handler: this.handler }; } }, { key: "getParser", value: function getParser() { var _this = this; return { name: this.id, obj: { Parse: function Parse(parserId, text) { return _this.parse(text); }, UnParse: this.unparse.bind(this) } }; } }]); return Default; }(); var Spoiler = /*#__PURE__*/function (_Default) { babelHelpers.inherits(Spoiler, _Default); function Spoiler() { var _babelHelpers$getProt; var _this; babelHelpers.classCallCheck(this, Spoiler); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = babelHelpers.possibleConstructorReturn(this, (_babelHelpers$getProt = babelHelpers.getPrototypeOf(Spoiler)).call.apply(_babelHelpers$getProt, [this].concat(args))); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "id", 'spoiler'); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "buttonParams", { name: main_core.Loc.getMessage('MPF_SPOILER'), iconClassName: 'spoiler', disabledForTextarea: false, src: main_core.Loc.getMessage('MPF_TEMPLATE_FOLDER') + '/images/lhespoiler.svg', toolbarSort: 205 }); return _this; } babelHelpers.createClass(Spoiler, [{ key: "handler", value: function handler() { var result; // Iframe if (!this.htmlEditor.bbCode || !this.htmlEditor.synchro.IsFocusedOnTextarea()) { result = this.htmlEditor.action.actions.formatBlock.exec('formatBlock', 'blockquote', 'bx-spoiler', false, { bxTagParams: { tag: "spoiler" } }); } else // bbcode + textarea { result = this.htmlEditor.action.actions.formatBbCode.exec('quote', { tag: 'SPOILER' }); } return result; } }, { key: "parse", value: function parse(content, pLEditor) { if (/\[spoiler(([^\]])*)\]/gi.test(content)) { content = content.replace(/[\x01-\x02]/gi, '').replace(/\[spoiler([^\]]*)\]/gi, '\x01$1\x01').replace(/\[\/spoiler]/gi, '\x02'); var reg2 = /(?:\x01([^\x01]*)\x01)([^\x01-\x02]+)\x02/gi; while (content.match(reg2)) { content = content.replace(reg2, function (str, title, body) { title = title.replace(/^(="|='|=)/gi, '').replace(/("|')?$/gi, ''); return "<blockquote class=\"bx-spoiler\" id=\"".concat(this.htmlEditor.SetBxTag(false, { tag: "spoiler" }), "\" title=\"").concat(title, "\">").concat(body, "</blockquote>"); }.bind(this)); } } content = content.replace(/\001([^\001]*)\001/gi, '[spoiler$1]').replace(/\002/gi, '[/spoiler]'); return content; } }, { key: "unparse", value: function unparse(bxTag, oNode) { var name = ''; for (var i = 0; i < oNode.node.childNodes.length; i++) { name += this.htmlEditor.bbParser.GetNodeHtml(oNode.node.childNodes[i]); } name = name.trim(); if (name !== '') { return "[SPOILER" + (oNode.node.hasAttribute("title") ? '=' + oNode.node.getAttribute("title") : '') + "]" + name + "[/SPOILER]"; } return ""; } }]); return Spoiler; }(Default); var PostUser = /*#__PURE__*/function (_Default) { babelHelpers.inherits(PostUser, _Default); function PostUser(editor, htmlEditor) { var _this; babelHelpers.classCallCheck(this, PostUser); _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(PostUser).call(this, editor, htmlEditor)); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "id", 'postuser'); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "buttonParams", null); main_core_events.EventEmitter.subscribe(htmlEditor, 'OnIframeKeydown', function (_ref) { var _ref$compatData = babelHelpers.slicedToArray(_ref.compatData, 1), event = _ref$compatData[0]; if (window.onKeyDownHandler) { window.onKeyDownHandler(event, htmlEditor, htmlEditor.formID); } }); main_core_events.EventEmitter.subscribe(htmlEditor, 'OnIframeKeyup', function (_ref2) { var _ref2$compatData = babelHelpers.slicedToArray(_ref2.compatData, 1), event = _ref2$compatData[0]; if (window.onKeyUpHandler) { window.onKeyUpHandler(event, htmlEditor, htmlEditor.formID); } }); main_core_events.EventEmitter.subscribe(htmlEditor, 'OnIframeClick', function () { if (window['BXfpdStopMent' + htmlEditor.formID]) { window['BXfpdStopMent' + htmlEditor.formID](); } }); main_core_events.EventEmitter.subscribe(htmlEditor, 'OnTextareaKeyup', function (_ref3) { var _ref3$compatData = babelHelpers.slicedToArray(_ref3.compatData, 1), event = _ref3$compatData[0]; if (htmlEditor.textareaView && htmlEditor.textareaView.GetCursorPosition && window.onTextareaKeyUpHandler) { window.onTextareaKeyUpHandler(event, htmlEditor, htmlEditor.formID); } }); main_core_events.EventEmitter.subscribe(htmlEditor, 'OnTextareaKeydown', function (_ref4) { var _ref4$compatData = babelHelpers.slicedToArray(_ref4.compatData, 1), event = _ref4$compatData[0]; if (htmlEditor.textareaView && htmlEditor.textareaView.GetCursorPosition && window.onTextareaKeyDownHandler) { window.onTextareaKeyDownHandler(event, htmlEditor, htmlEditor.formID); } }); return _this; } babelHelpers.createClass(PostUser, [{ key: "parse", value: function parse(content, pLEditor) { var _this2 = this; content = content.replace(/\[USER\s*=\s*(\d+)\](.*?)\[\/USER\]/ig, function (str, id, name) { name = name.trim(); if (name === '') { return ''; } var tagId = _this2.htmlEditor.SetBxTag(false, { tag: _this2.id, userId: id, userName: name }); return "<span id=\"".concat(tagId, "\" class=\"bxhtmled-metion\">").concat(name, "</span>"); }).replace(/\[PROJECT\s*=\s*(\d+)\](.*?)\[\/PROJECT\]/ig, function (str, id, name) { name = name.trim(); if (name === '') { return ''; } var tagId = _this2.htmlEditor.SetBxTag(false, { tag: _this2.id, projectId: id, projectName: name }); return "<span id=\"".concat(tagId, "\" class=\"bxhtmled-metion\">").concat(name, "</span>"); }).replace(/\[DEPARTMENT\s*=\s*(\d+)\](.*?)\[\/DEPARTMENT\]/ig, function (str, id, name) { name = name.trim(); if (name === '') { return ''; } var tagId = _this2.htmlEditor.SetBxTag(false, { tag: _this2.id, departmentId: id, departmentName: name }); return "<span id=\"".concat(tagId, "\" class=\"bxhtmled-metion\">").concat(name, "</span>"); }); return content; } }, { key: "unparse", value: function unparse(bxTag, oNode) { var _this3 = this; var text = ''; oNode.node.childNodes.forEach(function (node) { text += _this3.htmlEditor.bbParser.GetNodeHtml(node); }); text = String(text).trim(); var result = ''; if (main_core.Type.isStringFilled(text)) { if (!main_core.Type.isUndefined(bxTag.userId)) { result = "[USER=".concat(bxTag.userId, "]").concat(text, "[/USER]"); } else if (!main_core.Type.isUndefined(bxTag.projectId)) { result = "[PROJECT=".concat(bxTag.projectId, "]").concat(text, "[/PROJECT]"); } else if (!main_core.Type.isUndefined(bxTag.departmentId)) { result = "[DEPARTMENT=".concat(bxTag.departmentId, "]").concat(text, "[/DEPARTMENT]"); } } return result; } }]); return PostUser; }(Default); var Controller = /*#__PURE__*/function () { function Controller(cid, container, editor) { babelHelpers.classCallCheck(this, Controller); babelHelpers.defineProperty(this, "actionPool", []); this.cid = cid; this.container = container; this.editor = editor; main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'onShowControllers', function (_ref) { var data = _ref.data; main_core_events.EventEmitter.emit(container.parentNode, 'BFileDLoadFormController', new main_core_events.BaseEvent({ compatData: [data] })); }); main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'onCollectControllers', function (event) { event.data[cid] = { values: [] }; }); } babelHelpers.createClass(Controller, [{ key: "exec", value: function exec() { var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; if (callback) { this.actionPool.push(callback); } if (this.isReady) { try { var action; while ((action = this.actionPool.shift()) && action) { action.apply(this); } } catch (e) { console.log('error in attachments controllers: ', e); } } } }, { key: "getId", value: function getId() { return this.cid; } }, { key: "getFieldName", value: function getFieldName() { return null; } }, { key: "reinitFrom", value: function reinitFrom(data) { var _this = this; this.exec(function () { if (!_this.getFieldName()) { return; } _this.container.querySelector("inptut[name=\"".concat(_this.getFieldName(), "\"]")).forEach(function (inputFile) { inputFile.parentNode.removeChild(inputFile); }); }); } }, { key: "isReady", get: function get() { return true; } }]); return Controller; }(); var DiskController = /*#__PURE__*/function (_Controller) { babelHelpers.inherits(DiskController, _Controller); function DiskController(cid, container, editor) { var _this; babelHelpers.classCallCheck(this, DiskController); _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(DiskController).call(this, cid, container, editor)); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "diskUfUploader", null); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "diskUfHandler", null); var _catchHandler = function _catchHandler(diskUfUploader) { _this.diskUfUploader = diskUfUploader; _this.exec(); var func = function func(BaseEvent) { main_core_events.EventEmitter.emit(editor.getEventObject(), 'onUploadsHasBeenChanged', BaseEvent); }; main_core_events.EventEmitter.subscribe(_this.diskUfUploader, 'onFileIsInited', func); // new diskUfUploader main_core_events.EventEmitter.subscribe(_this.diskUfUploader, 'ChangeFileInput', func); // old diskUfUploader }; if (BX.UploaderManager.getById(cid)) { _catchHandler(BX.UploaderManager.getById(cid)); } main_core_events.EventEmitter.subscribeOnce(container.parentNode, 'DiskDLoadFormControllerInit', function (_ref) { var _ref$compatData = babelHelpers.slicedToArray(_ref.compatData, 1), diskUfHandler = _ref$compatData[0]; _this.diskUfHandler = diskUfHandler; if (cid === diskUfHandler.CID && !_this.diskUfUploader) { _catchHandler(diskUfHandler.agent); } }); main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'onShowControllers', function (_ref2) { var data = _ref2.data; main_core_events.EventEmitter.emit(container.parentNode, 'DiskLoadFormController', new main_core_events.BaseEvent({ compatData: [data] })); }); return _this; } babelHelpers.createClass(DiskController, [{ key: "getFieldName", value: function getFieldName() { if (this.diskUfHandler) { return this.diskUfHandler.params.controlName; } return null; } }, { key: "reinitFrom", value: function reinitFrom(data) { var _this2 = this; this.exec(function () { if (!_this2.getFieldName()) { return; } Array.from(_this2.container.querySelectorAll("inptut[name=\"".concat(_this2.getFieldName(), "\"]"))).forEach(function (inputFile) { inputFile.parentNode.removeChild(inputFile); }); var values = null; for (var ii in data) { if (data.hasOwnProperty(ii) && data[ii] && data[ii]['USER_TYPE_ID'] === 'disk_file' && data[ii]['FIELD_NAME'] === _this2.getFieldName()) { values = data[ii]['VALUE']; } } if (values) { var files = {}; values.forEach(function (id) { var node = document.querySelector('#disk-attach-' + id); if (node.tagName !== "A") { node = node.querySelector('img'); } if (node) { files['E' + id] = { type: 'file', id: id, name: node.getAttribute("data-bx-title") || node.getAttribute("data-title"), size: node.getAttribute("data-bx-size") || '', sizeInt: node.getAttribute("data-bx-size") || '', width: node.getAttribute("data-bx-width"), height: node.getAttribute("data-bx-height"), storage: 'disk', previewUrl: node.tagName === "A" ? '' : node.getAttribute("data-bx-src") || node.getAttribute("data-src"), fileId: node.getAttribute("bx-attach-file-id") }; if (node.hasAttribute("bx-attach-xml-id")) files['E' + id]["xmlId"] = node.getAttribute("bx-attach-xml-id"); if (node.hasAttribute("bx-attach-file-type")) files['E' + id]["fileType"] = node.getAttribute("bx-attach-file-type"); } }); _this2.diskUfHandler.selectFile({}, {}, files); } }); } }, { key: "isReady", get: function get() { return !!this.diskUfUploader; } }]); return DiskController; }(Controller); var _templateObject; /* * @deprecated * */ var UploadFile = /*#__PURE__*/function (_Default) { babelHelpers.inherits(UploadFile, _Default); function UploadFile(editor, htmlEditor) { var _this; babelHelpers.classCallCheck(this, UploadFile); _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(UploadFile).call(this, editor, htmlEditor)); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "id", 'uploadfile'); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "buttonParams", null); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "regexp", /\[FILE ID=((?:\s|\S)*?)?\]/ig); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "values", new Map()); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "controllers", new Map()); _this.checkButtonsDebounced = main_core.Runtime.debounce(_this.checkButtons, 500, babelHelpers.assertThisInitialized(_this)); _this.init(); main_core_events.EventEmitter.subscribe(editor.getEditor(), 'OnContentChanged', _this.checkButtons.bind(babelHelpers.assertThisInitialized(_this))); main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'onReinitializeBefore', function (_ref) { var _ref$data = babelHelpers.slicedToArray(_ref.data, 2), text = _ref$data[0], data = _ref$data[1]; _this.reinit(text, data); }); return _this; } babelHelpers.createClass(UploadFile, [{ key: "init", value: function init() { var _this2 = this; Array.from(this.editor.getContainer().querySelectorAll('.file-selectdialog')).forEach(function (selectorNode) { var cid = selectorNode.id.replace('file-selectdialog-', ''); var controller = _this2.controllers.get(cid); if (!controller) { controller = new Controller(cid, selectorNode, _this2.editor); main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadSuccess', function (_ref2) { var _ref2$data = babelHelpers.slicedToArray(_ref2.data, 2), element_id = _ref2$data[0].element_id, _ref2$data$ = _ref2$data[1], id = _ref2$data$.id, doc_prefix = _ref2$data$.doc_prefix, CID = _ref2$data$.CID; if (cid === id) { var securityNode = document.querySelector('#' + _this2.editor.getFormId()) ? document.querySelector('#' + _this2.editor.getFormId()).querySelector('#upload-cid') : null; if (securityNode) { securityNode.value = CID; } var _this2$parseFile = _this2.parseFile(selectorNode.querySelector('#' + doc_prefix + element_id)), _this2$parseFile2 = babelHelpers.slicedToArray(_this2$parseFile, 2), _id = _this2$parseFile2[0], file = _this2$parseFile2[1]; _this2.values.set(_id, file); } }); main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadRemove', function (_ref3) { var _ref3$compatData = babelHelpers.slicedToArray(_ref3.compatData, 2), fileId = _ref3$compatData[0], id = _ref3$compatData[1].id; if (cid === id && _this2.values.has(fileId)) { _this2.values.delete(fileId); _this2.deleteFile([fileId]); } }); } if (selectorNode.querySelector('table.files-list')) { Array.from(selectorNode.querySelector('table.files-list').querySelectorAll('tr')).forEach(function (tr) { var _this2$parseFile3 = _this2.parseFile(tr), _this2$parseFile4 = babelHelpers.slicedToArray(_this2$parseFile3, 2), id = _this2$parseFile4[0], file = _this2$parseFile4[1]; _this2.values.set(id, file); }); } }); } }, { key: "parseFile", value: function parseFile(tr) { var _this3 = this; var id = tr.id.replace('wd-doc', ''); var data = { id: id, name: tr.querySelector('[data-role="name"]') ? tr.querySelector('[data-role="name"]').innerHTML : tr.querySelector('span.f-wrap').innerHTML, node: tr, buttonNode: tr.querySelector('[data-role="button-insert"]'), image: { src: null, lowsrc: null, width: null, height: null } }; var insertFile = function insertFile() { _this3.insertFile(id, tr); }; var nameNode = tr.querySelector('.f-wrap'); if (nameNode) { nameNode.addEventListener('click', insertFile); nameNode.style.cursor = 'pointer'; nameNode.title = main_core.Loc.getMessage('MPF_FILE'); } var imageNode = tr.querySelector('img'); if (imageNode) { imageNode.addEventListener('click', insertFile); imageNode.title = main_core.Loc.getMessage('MPF_FILE'); imageNode.style.cursor = 'pointer'; data.image.lowsrc = imageNode.lowsrc || imageNode.src; data.image.src = imageNode.rel || imageNode.src; data.image.width = imageNode.getAttribute('data-bx-full-width'); data.image.height = imageNode.getAttribute('data-bx-full-height'); } if (tr instanceof HTMLTableRowElement && tr.querySelector('.files-info')) { if (!data.buttonNode) { data.buttonNode = main_core.Tag.render(_templateObject || (_templateObject = babelHelpers.taggedTemplateLiteral(["\n<span type=\"button\" onclick=\"", "\" data-role=\"button-insert\" class=\"insert-btn\">\n\t<span data-role=\"insert-btn\" class=\"insert-btn-text\">", "</span>\n\t<span data-role=\"in-text-btn\" class=\"insert-btn-text\">", "</span>\n</span>"])), insertFile, main_core.Loc.getMessage('MPF_FILE_INSERT_IN_TEXT'), main_core.Loc.getMessage('MPF_FILE_IN_TEXT')); tr.querySelector('.files-info').appendChild(data.buttonNode); this.checkButtonsDebounced(); } } return [id, data]; } }, { key: "buildHTML", value: function buildHTML(id, data) { var htmlData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var tagId = this.htmlEditor.SetBxTag(false, { tag: this.id, fileId: id }); var html = "<span data-bx-file-id=\"".concat(id, "\" id=\"").concat(tagId, "\" style=\"color: #2067B0; border-bottom: 1px dashed #2067B0; margin:0 2px;\">").concat(data.name, "</span>"); if (data.image.src) { var additional = []; if (htmlData) { additional.push("style=\"width:".concat(htmlData.width, "px;height:").concat(htmlData.height, "px;\"")); } else if (data.image.width && data.image.height) { additional.push("style=\"width:".concat(data.image.width, "px;height:").concat(data.image.height, "px;\" ")); additional.push("onload=\"this.style.width='auto';this.style.height='auto';\""); } html = "<img style=\"max-width: 90%;\" data-bx-file-id=\"".concat(id, "\" id=\"").concat(tagId, "\" src=\"").concat(data.image.src, "\" lowsrc=\"").concat(data.image.lowsrc, "\" ").concat(additional.join(' '), "/>"); } return html; } }, { key: "buildText", value: function buildText(id, params) { return "[FILE ID=".concat(id).concat(params || '', "]"); } }, { key: "insertFile", value: function insertFile(id, node) { var data = this.values.get(String(id)); if (data) { main_core_events.EventEmitter.emit(this.editor.getEventObject(), 'OnInsertContent', [this.buildText(id), this.buildHTML(id, data)]); } } }, { key: "deleteFile", value: function deleteFile(fileIds) { var content = this.htmlEditor.GetContent(); if (this.htmlEditor.GetViewMode() === 'wysiwyg') { var doc = this.htmlEditor.GetIframeDoc(); for (var ii in this.htmlEditor.bxTags) { if (this.htmlEditor.bxTags.hasOwnProperty(ii) && babelHelpers.typeof(this.htmlEditor.bxTags[ii]) === 'object' && this.htmlEditor.bxTags[ii]['tag'] === this.id && fileIds.indexOf(String(this.htmlEditor.bxTags[ii]['fileId'])) >= 0 && doc.getElementById(ii)) { var node = doc.getElementById(ii); node.parentNode.removeChild(node); } } this.htmlEditor.SaveContent(); } else /* if (this.regexp.test(content))*/ { var content2 = content.replace(this.regexp, function (str, foundId) { return fileIds.indexOf(foundId) >= 0 ? '' : str; }); this.htmlEditor.SetContent(content2); this.htmlEditor.Focus(); } } }, { key: "checkButtons", value: function checkButtons(event) { var content = event ? event.compatData[0] : this.htmlEditor.GetContent(); var matches = babelHelpers.toConsumableArray(content.matchAll(this.regexp)).map(function (_ref4) { var _ref5 = babelHelpers.slicedToArray(_ref4, 2), match = _ref5[0], id = _ref5[1]; return id; }); this.values.forEach(function (data, id) { if (!data.buttonNode) { return; } var mark = matches.indexOf(id) >= 0; if (mark === true && data.buttonNode.className !== 'insert-text') { data.buttonNode.className = 'insert-text'; data.buttonNode.querySelector('[data-role="insert-btn"]').style.display = 'none'; data.buttonNode.querySelector('[data-role="in-text-btn"]').style.display = ''; } else if (mark !== true && data.buttonNode.className !== 'insert-btn') { data.buttonNode.className = 'insert-btn'; data.buttonNode.querySelector('[data-role="insert-btn"]').style.display = ''; data.buttonNode.querySelector('[data-role="in-text-btn"]').style.display = 'none'; } }); } }, { key: "reinit", value: function reinit(text, data) { this.values.forEach(function (file, id) { if (file.node && file.node.parentNode) { file.node.parentNode.removeChild(file.node); } }); this.values.clear(); this.controllers.forEach(function (controller) { controller.reinitFrom(data); }); } }, { key: "parse", value: function parse(content) { if (!this.regexp.test(content)) { return content; } content = content.replace(this.regexp, function (str, id, width, height) { if (this.values.has(id)) { return this.buildHTML(id, this.values.get(id), width > 0 && height > 0 ? { width: width, height: height } : null); } return str; }.bind(this)); return content; } }, { key: "unparse", value: function unparse(bxTag, _ref6) { var node = _ref6.node; var width = parseInt(node.hasAttribute('width') ? node.getAttribute('width') : 0); var height = parseInt(node.hasAttribute('height') ? node.getAttribute('height') : 0); var params = ''; if (width > 0 && height > 0) { params = ' WIDTH=' + width + ' HEIGHT=' + height; } var id = node.getAttribute('data-bx-file-id'); return this.buildText(id, params); } }]); return UploadFile; }(Default); /* * @deprecated * */ var UploadImage = /*#__PURE__*/function (_Default) { babelHelpers.inherits(UploadImage, _Default); function UploadImage(editor, htmlEditor) { var _this; babelHelpers.classCallCheck(this, UploadImage); _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(UploadImage).call(this, editor, htmlEditor)); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "id", 'uploadimage'); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "buttonParams", null); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "regexp", /\[IMAGE ID=((?:\s|\S)*?)?\]/ig); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "values", new Map()); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "controllers", new Map()); _this.init(); console.log('PostImage: '); main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'onReinitializeBefore', function (_ref) { var _ref$data = babelHelpers.slicedToArray(_ref.data, 2), text = _ref$data[0], data = _ref$data[1]; _this.reinit(text, data); }); return _this; } babelHelpers.createClass(UploadImage, [{ key: "init", value: function init() { var _this2 = this; Array.from(this.editor.getContainer().querySelectorAll('.file-selectdialog')).forEach(function (selectorNode) { var cid = selectorNode.id.replace('file-selectdialog-', ''); var controller = _this2.controllers.get(cid); if (!controller) { controller = new Controller(cid, selectorNode, _this2.editor); main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadSuccess', function (_ref2) { var _ref2$data = babelHelpers.slicedToArray(_ref2.data, 2), element_id = _ref2$data[0].element_id, _ref2$data$ = _ref2$data[1], id = _ref2$data$.id, doc_prefix = _ref2$data$.doc_prefix, CID = _ref2$data$.CID; if (cid === id) { var securityNode = document.querySelector('#' + _this2.editor.getFormId()) ? document.querySelector('#' + _this2.editor.getFormId()).querySelector('#upload-cid') : null; if (securityNode) { securityNode.value = CID; } var _this2$parseFile = _this2.parseFile(selectorNode.querySelector('#' + doc_prefix + element_id)), _this2$parseFile2 = babelHelpers.slicedToArray(_this2$parseFile, 2), _id = _this2$parseFile2[0], file = _this2$parseFile2[1]; _this2.values.set(_id, file); } }); main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadRemove', function (_ref3) { var _ref3$compatData = babelHelpers.slicedToArray(_ref3.compatData, 2), fileId = _ref3$compatData[0], id = _ref3$compatData[1].id; if (cid === id && _this2.values.has(fileId)) { _this2.values.delete(fileId); } }); } if (selectorNode.querySelector('table.files-list')) { Array.from(selectorNode.querySelector('table.files-list').querySelectorAll('tr')).forEach(function (tr) { var _this2$parseFile3 = _this2.parseFile(tr), _this2$parseFile4 = babelHelpers.slicedToArray(_this2$parseFile3, 2), id = _this2$parseFile4[0], file = _this2$parseFile4[1]; _this2.values.set(id, file); }); } }); } }, { key: "parseFile", value: function parseFile(tr) { var id = tr.id.replace('wd-doc', ''); var data = { id: id, name: tr.querySelector('[data-role="name"]') ? tr.querySelector('[data-role="name"]').innerHTML : tr.querySelector('span.f-wrap').innerHTML, node: tr, image: { src: null, lowsrc: null, width: null, height: null } }; return [id, data]; } }, { key: "reinit", value: function reinit(text, data) { this.values.forEach(function (file, id) { if (file.node && file.node.parentNode) { file.node.parentNode.removeChild(file.node); } }); this.values.clear(); this.controllers.forEach(function (controller) { controller.reinitFrom(data); }); } }, { key: "parse", value: function parse(content) { return content; } }, { key: "unparse", value: function unparse(bxTag, _ref4) { var node = _ref4.node; return ''; } }]); return UploadImage; }(Default); var _templateObject$1; /* * @deprecated * */ var DiskFile = /*#__PURE__*/function (_UploadFile) { babelHelpers.inherits(DiskFile, _UploadFile); function DiskFile() { var _babelHelpers$getProt; var _this; babelHelpers.classCallCheck(this, DiskFile); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = babelHelpers.possibleConstructorReturn(this, (_babelHelpers$getProt = babelHelpers.getPrototypeOf(DiskFile)).call.apply(_babelHelpers$getProt, [this].concat(args))); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "id", 'diskfile'); babelHelpers.defineProperty(babelHelpers.assertThisInitialized(_this), "regexp", /\[(?:DOCUMENT ID|DISK FILE ID)=([n0-9]+)\]/ig); return _this; } babelHelpers.createClass(DiskFile, [{ key: "init", value: function init() { var _this2 = this; Array.from(this.editor.getContainer().querySelectorAll('.diskuf-selectdialog')).forEach(function (selectorNode, index) { var cid = selectorNode.id.replace('diskuf-selectdialog-', ''); var controller = _this2.controllers.get(cid); if (!controller) { controller = new DiskController(cid, selectorNode, _this2.editor); _this2.controllers.set(cid, controller); main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadSuccess', function (_ref) { var _ref$data = babelHelpers.slicedToArray(_ref.data, 3), element_id = _ref$data[0].element_id, CID = _ref$data[1].CID, blob = _ref$data[2]; if (controller.getId() !== CID || _this2.values.has(element_id)) { return; } var _this2$parseFile = _this2.parseFile(selectorNode.querySelector('#disk-edit-attach' + element_id)), _this2$parseFile2 = babelHelpers.slicedToArray(_this2$parseFile, 3), id = _this2$parseFile2[0], fileId = _this2$parseFile2[1], file = _this2$parseFile2[2]; _this2.values.set(id, file); if (id !== fileId) { _this2.values.set(fileId, file); } if (blob && blob['insertImageAfterUpload'] && file.image.src) { _this2.insertFile(id, file.node); } }); main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadRemove', function (_ref2) { var _ref2$compatData = babelHelpers.slicedToArray(_ref2.compatData, 2), fileId = _ref2$compatData[0], CID = _ref2$compatData[1].CID; if (controller.getId() === CID && _this2.values.has(fileId)) { var file = _this2.values.get(fileId); _this2.values.delete(file.id); _this2.values.delete(file.fileId); _this2.deleteFile([file.id, file.fileId]); } }); main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadFailed', function (_ref3) { var _ref3$compatData = babelHelpers.slicedToArray(_ref3.compatData, 3), file = _ref3$compatData[0], CID = _ref3$compatData[1].CID, blob = _ref3$compatData[2]; if (controller.getId() === CID && blob && blob["referrerToEditor"]) { BX.onCustomEvent(blob["referrerToEditor"], "OnImageDataUriCaughtFailed", []); BX.onCustomEvent(_this2.editor, "OnImageDataUriCaughtFailed", [blob["referrerToEditor"]]); } }); if (index === 0) { initVideoReceptionForTheFirstController(_this2, controller, selectorNode, _this2.editor); initImageReceptionForTheFirstController(_this2, controller, selectorNode, _this2.editor); main_core_events.EventEmitter.subscribe(_this2.editor.getEventObject(), 'onFilesHaveCaught', function (event) { event.stopImmediatePropagation(); controller.diskUfUploader.onChange(babelHelpers.toConsumableArray(event.getData())); }); } } if (selectorNode.querySelector('table.files-list')) { Array.from(selectorNode.querySelector('table.files-list').querySelectorAll('tr')).forEach(function (tr) { var _this2$parseFile3 = _this2.parseFile(tr), _this2$parseFile4 = babelHelpers.slicedToArray(_this2$parseFile3, 3), id = _this2$parseFile4[0], fileId = _this2$parseFile4[1], file = _this2$parseFile4[2]; _this2.values.set(id, file); if (id !== fileId) { _this2.values.set(fileId, file); } }); } }); } }, { key: "parseFile", value: function parseFile(tr) { var _this3 = this; var id = String(tr.id.replace('disk-edit-attach', '')); var data = { id: id, name: tr.querySelector('[data-role="name"]') ? tr.querySelector('[data-role="name"]').innerHTML : tr.querySelector('span.f-wrap').innerHTML, fileId: tr.getAttribute('bx-attach-file-id'), node: tr, buttonNode: tr.querySelector('[data-role="button-insert"]'), image: { src: null, lowsrc: null, width: null, height: null } }; var nameNode = tr.querySelector('.f-wrap'); var insertFile = function insertFile() { _this3.insertFile(id, tr); }; if (nameNode) { nameNode.addEventListener('click', insertFile); nameNode.style.cursor = 'pointer'; nameNode.title = main_core.Loc.getMessage('MPF_FILE'); } var imageNode = tr.querySelector('img.files-preview'); if (imageNode && (imageNode.src.indexOf('bitrix/tools/disk/uf.php') >= 0 || imageNode.src.indexOf('/disk/showFile/') >= 0)) { imageNode.addEventListener('click', insertFile); imageNode.title = main_core.Loc.getMessage('MPF_FILE'); imageNode.style.cursor = 'pointer'; data.image.lowsrc = imageNode.lowsrc || imageNode.src; data.image.src = (imageNode.rel || imageNode.getAttribute('data-bx-src') || imageNode.src).replace(/&(width|height)=\d+/gi, ''); var handler = function handler() { data.image.width = imageNode.getAttribute('data-bx-full-width'); data.image.height = imageNode.getAttribute('data-bx-full-height'); }; imageNode.addEventListener('load', handler); if (imageNode.complete) { handler(); } } if (tr instanceof HTMLTableRowElement && !data.buttonNode) { data.buttonNode = main_core.Tag.render(_templateObject$1 || (_templateObject$1 = babelHelpers.taggedTemplateLiteral(["\n<span class=\"insert-btn\" data-role=\"button-insert\" onclick=\"", "\">\n\t<span data-role=\"insert-btn\" class=\"insert-btn-text\">", "</span>\n\t<span data-role=\"in-text-btn\" class=\"insert-btn-text\" style=\"display: none;\">", "</span>\n</span>"])), insertFile, main_core.Loc.getMessage('MPF_FILE_INSERT_IN_TEXT'), main_core.Loc.getMessage('MPF_FILE_IN_TEXT')); setTimeout(function () { if (tr.querySelector('.files-info')) { tr.querySelector('.files-info').appendChild(data.buttonNode); _this3.checkButtonsDebounced(); } }); } return [id, data.fileId, data]; } }, { key: "buildText", value: function buildText(id, params) { return "[DISK FILE ID=".concat(id).concat(params || '', "]"); } }]); return DiskFile; }(UploadFile); function initVideoReceptionForTheFirstController(diskFileParser, controller, selectorNode, editor) { main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'OnVideoHasCaught', function (event) { var fileToUpload = event.getData(); var onSuccess = function onSuccess(_ref4) { var _ref4$data = babelHelpers.slicedToArray(_ref4.data, 3), element_id = _ref4$data[0].element_id; babelHelpers.objectDestructuringEmpty(_ref4$data[1]); var blob = _ref4$data[2]; if (fileToUpload === blob && diskFileParser.values.has(element_id)) { main_core_events.EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess); diskFileParser.insertFile(element_id, diskFileParser.values.get(element_id).node); } }; main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess); controller.exec(function () { controller.diskUfUploader.onChange([fileToUpload]); }); event.stopImmediatePropagation(); }); } function initImageReceptionForTheFirstController(diskFileParser, controller, selectorNode, editor) { main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'OnImageHasCaught', function (event) { event.stopImmediatePropagation(); var fileToUpload = event.getData(); return new Promise(function (resolve, reject) { var onSuccess = function onSuccess(_ref5) { var _ref5$data = babelHelpers.slicedToArray(_ref5.data, 3), element_id = _ref5$data[0].element_id; babelHelpers.objectDestructuringEmpty(_ref5$data[1]); var blob = _ref5$data[2]; if (fileToUpload === blob && diskFileParser.values.has(element_id)) { main_core_events.EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess); main_core_events.EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadFailed', onFailed); var file = diskFileParser.values.get(element_id); var html = diskFileParser.buildHTML(element_id, file); resolve({ image: file.image, html: html }); } }; var onFailed = function onFailed(_ref6) { var _ref6$data = babelHelpers.slicedToArray(_ref6.data, 3), file = _ref6$data[0]; babelHelpers.objectDestructuringEmpty(_ref6$data[1]); var blob = _ref6$data[2]; if (fileToUpload === blob) { main_core_events.EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess); main_core_events.EventEmitter.unsubscribe(selectorNode.parentNode, 'OnFileUploadFailed', onFailed); reject(); } }; main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadSuccess', onSuccess); main_core_events.EventEmitter.subscribe(selectorNode.parentNode, 'OnFileUploadFailed', onFailed); controller.exec(function () { controller.diskUfUploader.onChange([event.getData()]); }); }); }); } function getKnownParser(parserId, editor, htmlEditor) { if (parserId === 'Spoiler') { return new Spoiler(editor, htmlEditor); } else if (parserId === 'MentionUser') { return new PostUser(editor, htmlEditor); } else if (parserId === 'UploadImage') { return new UploadImage(editor, htmlEditor); } else if (parserId === 'UploadFile') { return new UploadFile(editor, htmlEditor); } else if (babelHelpers.typeof(parserId) === 'object' && parserId['disk_file']) { return new DiskFile(editor, htmlEditor); } return null; } function showPinButton(htmlEditor, editorParams) { if (!document.querySelector('#lhe_button_editor_' + htmlEditor.formID)) { return; } editorParams.pinEditorPanel = editorParams.pinEditorPanel === true; var pinId = 'toolbar_pin'; var but = function but(editor, wrap) { // Call parrent constructor but.superclass.constructor.apply(this, arguments); this.id = pinId; this.title = main_core.Loc.getMessage('MPF_PIN_EDITOR_PANNEL'); this.className += ' ' + (editorParams.pinEditorPanel ? 'bxhtmled-button-toolbar-pined' : 'bxhtmled-button-toolbar-pin'); this.Create(); if (wrap) wrap.appendChild(this.GetCont()); }; BX.extend(but, window.BXHtmlEditor.Button); but.prototype.OnClick = function () { BX.removeClass(this.pCont, 'bxhtmled-button-toolbar-pined'); BX.removeClass(this.pCont, 'bxhtmled-button-toolbar-pin'); if (editorParams.pinEditorPanel) { editorParams.pinEditorPanel = false; BX.addClass(this.pCont, 'bxhtmled-button-toolbar-pin'); } else { editorParams.pinEditorPanel = true; BX.addClass(this.pCont, 'bxhtmled-button-toolbar-pined'); } BX.userOptions.save('main.post.form', 'postEdit', 'pinEditorPanel', editorParams.pinEditorPanel ? "Y" : "N"); }; window.BXHtmlEditor.Controls[pinId] = but; BX.addCustomEvent(htmlEditor, "GetControlsMap", function (controlsMap) { controlsMap.push({ id: pinId, compact: true, hidden: false, sort: 500, checkWidth: true, offsetWidth: 32, wrap: 'right' }); }); } function bindAutoSave(htmlEditor, formNode) { if (!formNode) { return; } BX.addCustomEvent(formNode, 'onAutoSavePrepare', function (ob) { ob.FORM.setAttribute("bx-lhe-autosave-prepared", "Y"); setTimeout(function () { BX.addCustomEvent(htmlEditor, 'OnContentChanged', function (text) { ob["mpfTextContent"] = text; ob.Init(); }); }, 1500); }); BX.addCustomEvent(formNode, 'onAutoSave', function (ob, form_data) { if (BX.type.isNotEmptyString(ob['mpfTextContent'])) form_data['text'] = ob['mpfTextContent']; }); BX.addCustomEvent(formNode, 'onAutoSaveRestore', function (ob, form_data) { if (form_data['text'] && /[^\s]+/gi.test(form_data['text'])) { htmlEditor.CheckAndReInit(form_data['text']); } }); if (formNode.hasAttribute("bx-lhe-autosave-prepared") && formNode.BXAUTOSAVE) { formNode.removeAttribute("bx-lhe-autosave-prepared"); setTimeout(formNode.BXAUTOSAVE.Prepare, 100); } } function showPanelEditor(editor, htmlEditor, editorParams) { var save = false; if (editorParams.pinEditorPanel === true || editorParams.showPanelEditor === true) { editorParams.showPanelEditor = true; } else if (editorParams.showPanelEditor === false) { editorParams.showPanelEditor = false; } else { editorParams.showPanelEditor = !htmlEditor.toolbar.IsShown(); save = true; } editor.exec(function () { var buttonNode = editor.getContainer().querySelector('[data-bx-role="button-show-panel-editor"]'); if (editorParams.showPanelEditor) { htmlEditor.dom.toolbarCont.style.opacity = 'inherit'; htmlEditor.toolbar.Show(); if (buttonNode) { buttonNode.classList.add('feed-add-post-form-btn-active'); } } else { htmlEditor.toolbar.Hide(); if (buttonNode) { buttonNode.classList.remove('feed-add-post-form-btn-active'); } } }); if (save !== false) { BX.userOptions.save('main.post.form', 'postEdit', 'showBBCode', editorParams.showPanelEditor ? 'Y' : 'N'); } } function showUrlPreview(htmlEditor, editorParams) { if (!(editorParams.urlPreviewId && window['BXUrlPreview'] && BX(editorParams.urlPreviewId))) { return; } var urlPreview = new BXUrlPreview(BX(editorParams.urlPreviewId)); var OnAfterUrlConvert = function OnAfterUrlConvert(url) { urlPreview.attachUrlPreview({ url: url }); }; var OnBeforeCommandExec = function OnBeforeCommandExec(isContentAction, action, oAction, value) { if (action === 'createLink' && BX.type.isPlainObject(value) && value.hasOwnProperty('href')) { urlPreview.attachUrlPreview({ url: value.href }); } }; BX.addCustomEvent(htmlEditor, 'OnAfterUrlConvert', OnAfterUrlConvert); BX.addCustomEvent(htmlEditor, 'OnAfterLinkInserted', OnAfterUrlConvert); BX.addCustomEvent(htmlEditor, 'OnBeforeCommandExec', OnBeforeCommandExec); BX.addCustomEvent(htmlEditor, 'OnReinitialize', function (text, data) { urlPreview.detachUrlPreview(); var urlPreviewId; for (var uf in data) { if (data.hasOwnProperty(uf) && data[uf].hasOwnProperty('USER_TYPE_ID') && data[uf]['USER_TYPE_ID'] === 'url_preview') { urlPreviewId = data[uf]['VALUE']; break; } } if (urlPreviewId) { urlPreview.attachUrlPreview({ id: urlPreviewId }); } }); } function customizeHTMLEditor(editor, htmlEditor) { editor.exec(function () { // Contextmenu changing for images/files htmlEditor.contextMenu.items['postimage'] = htmlEditor.contextMenu.items['postdocument'] = htmlEditor.contextMenu.items['postfile'] = [{ TEXT: main_core.Loc.getMessage('BXEdDelFromText'), bbMode: true, ACTION: function ACTION() { var node = htmlEditor.contextMenu.GetTargetItem('postimage'); if (!node) node = htmlEditor.contextMenu.GetTargetItem('postdocument'); if (!node) node = htmlEditor.contextMenu.GetTargetItem('postfile'); if (node && node.element) { htmlEditor.selection.RemoveNode(node.element); } htmlEditor.contextMenu.Hide(); } }]; if (htmlEditor.toolbar.controls && htmlEditor.toolbar.controls.FontSelector) { htmlEditor.toolbar.controls.FontSelector.SetWidth(45); } }); } function bindHTML(editor) { var submitButton = document.querySelector('#lhe_button_submit_' + editor.getFormId()); if (submitButton) { submitButton.addEventListener('click', function (event) { main_core_events.EventEmitter.emit(editor.getEventObject(), 'OnButtonClick', ['submit']); event.preventDefault(); event.stopPropagation(); }); } var cancelButton = document.querySelector('#lhe_button_cancel_' + editor.getFormId()); if (cancelButton) { cancelButton.addEventListener('click', function (event) { main_core_events.EventEmitter.emit(editor.getEventObject(), 'OnButtonClick', ['cancel']); event.preventDefault(); event.stopPropagation(); }); } } function bindToolbar(editor, htmlEditor) { var toolbar = editor.getContainer().querySelector('[data-bx-role="toolbar"]'); if (toolbar.querySelector('[data-id="file"]')) { var fileButton = toolbar.querySelector('[data-id="file"]'); if (fileButton) { fileButton.addEventListener('click', function () { main_core_events.EventEmitter.emit(editor.getEventObject(), 'onShowControllers', fileButton.hasAttribute('data-bx-button-status') ? 'hide' : 'show'); }); main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'onShowControllers', function (_ref) { var data = _ref.data; if (data.toString() === 'show') { fileButton.setAttribute('data-bx-button-status', 'active'); } else { fileButton.removeAttribute('data-bx-button-status'); } }); fileButton.setAttribute('data-bx-files-count', 0); main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'onShowControllers:File:Increment', function (_ref2) { var data = _ref2.data; var count = data > 0 ? data : 1; var filesCount = Math.max(parseInt(fileButton.getAttribute('data-bx-files-count') || 0) + count, 0); if (filesCount > 0) { if (!fileButton['counterObject']) { fileButton['counterObject'] = new BX.UI.Counter({ value: filesCount, color: BX.UI.Counter.Color.GRAY, animate: true }); var container = fileButton.querySelector('span'); container.appendChild(fileButton['counterObject'].getContainer()); } else { fileButton['counterObject'].update(filesCount); } } fileButton.setAttribute('data-bx-files-count', filesCount); }); main_core_events.EventEmitter.subscribe(editor.getEventObject(), 'onShowControllers:File:Decrement', function (_ref3) { var data = _ref3.data; var count = data > 0 ? data : 1; var filesCount = Math.max(parseInt(fileButton.getAttribute('data-bx-files-count') || 0) - count, 0); fileButton.setAttribute('data-bx-files-count', filesCount); if (fileButton['counterObject']) { fileButton['counterObject'].update(filesCount); } }); } } if (toolbar.querySelector('[data-id="search-tag"]')) { window['BXPostFormTags_' + editor.getFormId()] = new BXPostFormTags(editor.getFormId(), toolbar.querySelector('[data-id="search-tag"]')); } if (toolbar.querySelector('[data-id="create-link"]')) { toolbar.querySelector('[data-id="create-link"]').addEventListener('click', function (event) { htmlEditor.toolbar.controls.InsertLink.OnClick(event); }); } if (toolbar.querySelector('[data-id="video"]')) { toolbar.querySelector('[data-id="video"]').addEventListener('click', function (event) { htmlEditor.toolbar.controls.InsertVideo.OnClick(event); }); } if (toolbar.querySelector('[data-id="quote"]')) { var quoteNode = toolbar.querySelector('[data-id="quote"]'); quoteNode.setAttribute('data-bx-type', 'action'); quoteNode.setAttribute('data-bx-action', 'quote'); quoteNode.addEventListener('mousedown', function (event) { htmlEditor.toolbar.controls.Quote.OnMouseDown.apply(htmlEditor.toolbar.controls.Quote, [event]); htmlEditor.CheckCommand(quoteNode); }); } if (editor.getContainer().querySelector('[data-bx-role="button-show-panel-editor"]')) { editor.getContainer().querySelector('[data-bx-role="button-show-panel-editor"]').addEventListener('click', function () { editor.showPanelEditor(); }); } } var _templateObject$2; var intersectionObserver; function observeIntersection(entity, callback) { if (!intersectionObserver) { intersectionObserver = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { intersectionObserver.unobserve(entry.target); var observedCallback = entry.target.observedCallback; delete entry.target.observedCallback; setTimeout(observedCallback); } }); }, { threshold: 0 }); } entity.observedCallback = callback; intersectionObserver.observe(entity); } var justCounter = 0; var Toolbar = /*#__PURE__*/function () { function Toolbar(eventObject, container) { babelHelpers.classCallCheck(this, Toolbar); this.container = container.querySelector('[data-bx-role="toolbar"]'); this.adjustMorePosition = this.adjustMorePosition.bind(this); this.moreItem = container.querySelector('[data-bx-role="toolbar-item-more"]'); this.moreItem.addEventListener('click', this.showSubmenu.bind(this)); observeIntersection(this.container, this.adjustMorePosition); window.addEventListener('resize', this.adjustMorePosition); } babelHelpers.createClass(Toolbar, [{ key: "insertAfter", value: function insertAfter(button, buttonId) { if (!main_core.Type.isElementNode(button['BODY']) && !main_core.Type.isStringFilled(button['BODY'])) { return; } var item = main_core.Tag.render(_templateObject$2 || (_templateObject$2 = babelHelpers.taggedTemplateLiteral(["<div class=\"main-post-form-toolbar-button\" data-bx-role=\"toolbar-item\"></div>"]))); if (main_core.Type.isElementNode(button['BODY'])) { item.appendChild(button['BODY']); } else { item.innerHTML = button['BODY']; } if (button['ID']) { item.setAttribute('data-id', button['ID']); } if (buttonId !== null) { var found = false; var itemBefore = null; Array.from(this.container.querySelectorAll('[data-bx-role="toolbar-item"]')).forEach(function (toolbarItem) { if (found === true && itemBefore === null) { itemBefore = toolbarItem; } else if (found === false && toolbarItem && toolbarItem.dataset && toolbarItem.dataset.id === buttonId) { found = true; } }); if (itemBefore) { itemBefore.parentNode.insertBefore(item, itemBefore); } } if (!item.parentNode) { this.container.appendChild(item); } this.adjustMorePosition(); } }, { key: "getItems", value: function getItems() { return Array.from(this.container.querySelectorAll('[data-bx-role="toolbar-item"]')); } }, { key: "getVisibleItems", value: function getVisibleItems() { var _this = this; var visibleItems = []; Array.from(this.container.querySelectorAll('[data-bx-role="toolbar-item"]')).forEach(function (item) { if (item.offsetTop > _this.container.clientHeight / 2) { visibleItems.push(item); } }); return visibleItems; } }, { key: "getHiddenItems", value: function getHiddenItems() { var hiddenItems = []; Array.from(this.container.querySelectorAll('[data-bx-role="toolbar-item"]')).forEach(function (item) { if (item.offsetTop > 0) { hiddenItems.push(item); } }); return hiddenItems; } }, { key: "adjustMorePosition", value: function adjustMorePosition() { var visibleItemsLength = this.getVisibleItems().length; if (visibleItemsLength <= 0 || visibleItemsLength >= this.getItems().length) { this.moreItem.style.display = 'none'; } else { this.moreItem.style.display = ''; } } }, { key: "getPopup", value: function getPopup() { var _this2 = this; if (!this.popup) { this.popup = main_popup.PopupManager.create({ id: 'main_post_form_toolbar_' + justCounter++, className: 'main-post-form-toolbar-popup', cacheable: false, content: this.getPopupContainer(), closeByEsc: true, autoHide: true, angle: true, bindElement: this.moreItem, offsetTop: -5, offsetLeft: 5, events: { onClose: function onClose() { Array.from(_this2.getPopupContainer().querySelectorAll('[data-bx-role="toolbar-item"]')).forEach(function (item) { _this2.container.appendChild(item); }); delete _this2.popup; } } }); } return this.popup; } }, { key: "getPopupContainer", value: function getPopupContainer() { if (!this.popupContainer) { this.popupContainer = document.createElement('DIV'); } return this.popupContainer; } }, { key: "showSubmenu", value: function showSubmenu() { var _this3 = this; var hiddenItems = this.getHiddenItems(); if (hiddenItems.length <= 0) { return; } hiddenItems.forEach(function (item) { _this3.getPopupContainer().appendChild(item); }); this.getPopup().show(); } }]); return Toolbar; }(); var TasksLimit = /*#__PURE__*/function () { function TasksLimit() { babelHelpers.classCallCheck(this, TasksLimit); } babelHelpers.createClass(TasksLimit, null, [{ key: "showPopup", value: function showPopup(params) { var tasksLimitPopup = main_popup.PopupManager.getPopupById(this.getPopupId()); if (!tasksLimitPopup) { tasksLimitPopup = new main_popup.Popup(this.getPopupId(), null, { content: this.getTasksLimitPopupContent(), lightShadow: false, offsetLeft: 20, autoHide: false, angle: { position: 'bottom' }, closeByEsc: false, closeIcon: true }); } tasksLimitPopup.setBindElement(params.bindPosition); tasksLimitPopup.show(); } }, { key: "getPopupId", value: function getPopupId() { return 'bx-post-mention-tasks-limit-popup'; } }, { key: "getTasksLimitPopupContent", value: function getTasksLimitPopupContent() { return main_core.Dom.create('DIV', { style: { width: '400px', padding: '10px' }, children: [main_core.Dom.create('SPAN', { html: main_core.Loc.getMessage('MPF_MENTION_TASKS_LIMIT').replace('#A_BEGIN#', '<a href="javascript:void(0);" onclick="BX.Main.PostFormTasksLimit.onClickTasksLimitPopupSlider();">').replace('#A_END#', '</a>') })] }); } }, { key: "onClickTasksLimitPopupSlider", value: function onClickTasksLimitPopupSlider() { this.hidePopup(); BX.UI.InfoHelper.show('limit_tasks_observers_participants'); } }, { key: "hidePopup", value: function hidePopup() { var tasksLimitPopup = main_popup.PopupManager.getPopupById(this.getPopupId()); if (tasksLimitPopup) { tasksLimitPopup.close(); } } }]); return TasksLimit; }(); function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "get"); return _classApplyDescriptorGet(receiver, descriptor); } function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError("attempted to " + action + " private static field before its declaration"); } } function _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } } function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } var Editor = /*#__PURE__*/function () { function Editor(options, editorParams) { var _this = this; babelHelpers.classCallCheck(this, Editor); babelHelpers.defineProperty(this, "jobs", new Map()); babelHelpers.defineProperty(this, "editorParams", { height: 100, ctrlEnterHandler: null, parsers: null, showPanelEditor: false, showPinButton: false, pinEditorPanel: false, lazyLoad: true, urlPreviewId: null, tasksLimitExceeded: false }); babelHelpers.defineProperty(this, "actionQueue", []); this.id = options['id']; this.name = options['name']; this.formId = options['formId']; this.eventNode = options.eventNode || document.querySelector('#div' + (this.name || this.id)); this.eventNode.dataset.bxHtmlEditable = 'Y'; this.formEntityType = null; Editor.repo.set(this.getId(), this); this.setEditorParams(editorParams); this.bindEvents(window['BXHtmlEditor'] ? window['BXHtmlEditor'].Get(this.getId()) : null); this.toolbar = new Toolbar(this.getEventObject(), this.getContainer()); this.inited = true; if (this.name !== null) { window[this.name] = this; } BX.onCustomEvent(this, 'onInitialized', [this, this.getFormId()]); //region Compatibility for crm.timeline main_core_events.EventEmitter.subscribe(this.getEventObject(), 'OnFileUploadSuccess', function (_ref) { var compatData = _ref.compatData; BX.onCustomEvent(_this.getEventObject(), 'onFileIsAdded', compatData); }); //endregion main_core_events.EventEmitter.subscribe(this.getEventObject(), 'onBusy', function (_ref2) { var handler = _ref2.data; if (_this.jobs.size <= 0) { main_core_events.EventEmitter.emit(_this.getEventObject(), 'onLHEIsBusy'); } _this.jobs.set(handler, (_this.jobs.get(handler) || 0) + 1); }); main_core_events.EventEmitter.subscribe(this.getEventObject(), 'onReady', function (_ref3) { var handler = _ref3.data; if (_this.jobs.size <= 0 || !_this.jobs.has(handler)) { return; } var counter = _this.jobs.get(handler); if (counter <= 1) { _this.jobs.delete(handler); if (_this.jobs.size <= 0) { main_core_events.EventEmitter.emit(_this.getEventObject(), 'onLHEIsReady'); } } else { _this.jobs.set(handler, --counter); } }); } babelHelpers.createClass(Editor, [{ key: "setEditorParams", value: function setEditorParams(editorParams) { this.editorParams = Object.assign(this.editorParams, editorParams); } }, { key: "bindEvents", value: function bindEvents() { var _this2 = this; var htmlEditor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; this.events = {}; [['OnEditorInitedBefore', this.OnEditorInitedBefore.bind(this)], ['OnCreateIframeAfter', this.OnCreateIframeAfter.bind(this)], ['OnEditorInitedAfter', this.OnEditorInitedAfter.bind(this)]].forEach(function (_ref4) { var _ref5 = babelHelpers.slicedToArray(_ref4, 2), eventName = _ref5[0], closure = _ref5[1]; if (!htmlEditor) { _this2.events[eventName] = function (htmlEditor) { if (htmlEditor.id === _this2.getId()) { //!it important to use deprecated eventEmitter BX.removeCustomEvent(eventName, _this2.events[eventName]); delete _this2.events[eventName]; closure(htmlEditor); } }; //!it important to use deprecated eventEmitter BX.addCustomEvent(eventName, _this2.events[eventName]); } else { closure(htmlEditor); } }); main_core_events.EventEmitter.subscribe(this.getEventObject(), 'OnShowLHE', this.OnShowLHE.bind(this)); main_core_events.EventEmitter.subscribe(this.getEventObject(), 'OnButtonClick', this.OnButtonClick.bind(this)); main_core_events.EventEmitter.subscribe(this.getEventObject(), 'OnParserRegister', function (_ref6) { var parser = _ref6.data; _this2.addParser(parser); }); main_core_events.EventEmitter.subscribe(this.getEventObject(), 'OnGetHTMLEditor', function (_ref7) { var someObjectToReceiveHTMLEditor = _ref7.data; someObjectToReceiveHTMLEditor.htmlEditor = _this2.getEditor(); }); main_core_events.EventEmitter.subscribe(this.getEventObject(), 'OnInsertContent', function (_ref8) { var _ref8$data = babelHelpers.slicedToArray(_ref8.data, 2), text = _ref8$data[0], html = _ref8$data[1]; _this2.insertContent(text, html); }); main_core_events.EventEmitter.subscribe(this.getEventObject(), 'OnAddButton', function (_ref9) { var _ref9$data = babelHelpers.slicedToArray(_ref9.data, 2), button = _ref9$data[0], beforeButton = _ref9$data[1]; _this2.getToolbar().insertAfter(button, beforeButton); }); bindHTML(this); } }, { key: "getId", value: function getId() { return this.id; } }, { key: "setEditor", value: function setEditor(htmlEditor) { var _this3 = this; if (this.htmlEditor === htmlEditor) { return; } this.htmlEditor = htmlEditor; htmlEditor.formID = this.getFormId(); main_core_events.EventEmitter.subscribe(htmlEditor, 'OnCtrlEnter', function () { htmlEditor.SaveContent(); if (main_core.Type.isFunction(_this3.editorParams.ctrlEnterHandler)) { _this3.editorParams.ctrlEnterHandler(); } else if (main_core.Type.isStringFilled(_this3.editorParams.ctrlEnterHandler) && window[_this3.editorParams.ctrlEnterHandler]) { window[_this3.editorParams.ctrlEnterHandler](); } else if (document.forms[_this3.getFormId()]) { BX.submit(document.forms[_this3.getFormId()]); } }); this.editorParams['height'] = htmlEditor.config['height']; console.groupCollapsed('main.post.form: parsers: ', this.getId()); this.editorParams.parsers.forEach(function (parserId) { var parser = getKnownParser(parserId, _this3, htmlEditor); if (parser) { console.groupCollapsed(parserId); console.log(parser); if (parser.hasButton()) { htmlEditor.AddButton(parser.getButton()); } htmlEditor.AddParser(parser.getParser()); console.groupEnd(parserId); } }); console.groupEnd('main.post.form: parsers: ', this.getId()); //region Catching external files // paste an image from IO buffer into editor main_core_events.EventEmitter.subscribe(htmlEditor, 'OnImageDataUriHandle', function (_ref10) { var _ref10$compatData = babelHelpers.slicedToArray(_ref10.compatData, 2), editor = _ref10$compatData[0], imageBase64 = _ref10$compatData[1]; var blob = BX.UploaderUtils.dataURLToBlob(imageBase64.src); if (blob && blob.size > 0 && blob.type.indexOf('image/') === 0) { main_core_events.EventEmitter.emit(_this3.getEventObject(), 'onShowControllers', 'show'); blob.name = blob.name || imageBase64.title || 'image.' + blob.type.substr(6); blob.referrerToEditor = imageBase64; main_core_events.EventEmitter.emit(_this3.getEventObject(), 'OnImageHasCaught', new main_core_events.BaseEvent({ data: blob })).forEach(function (result) { result.then(function (_ref11) { var image = _ref11.image, html = _ref11.html; main_core_events.EventEmitter.emit(htmlEditor, 'OnImageDataUriCaughtUploaded', new main_core_events.BaseEvent({ compatData: [imageBase64, image, { replacement: html }] })); }).catch(function () { main_core_events.EventEmitter.emit(htmlEditor, 'OnImageDataUriCaughtFailed', new main_core_events.BaseEvent({ compatData: [imageBase64] })); }); }); } }); // paste a video into editor main_core_events.EventEmitter.subscribe(main_core_events.EventEmitter.GLOBAL_TARGET, 'onAddVideoMessage', function (_ref12) { var _ref12$compatData = babelHelpers.slicedToArray(_ref12.compatData, 2), file = _ref12$compatData[0], formID = _ref12$compatData[1]; if (!formID || _this3.getFormId() !== formID) { return; } main_core_events.EventEmitter.emit(_this3.getEventObject(), 'onShowControllers', 'show'); main_core_events.EventEmitter.emit(_this3.getEventObject(), 'OnVideoHasCaught', new main_core_events.BaseEvent({ data: file })); }); // DnD (function () { var placeHolder = BX('micro' + (_this3.name || _this3.id)); var active = false; var timeoutId = 0; var activate = function activate(e) { e.preventDefault(); e.stopPropagation(); if (timeoutId > 0) { clearTimeout(timeoutId); timeoutId = 0; } if (active === true) { return; } var isFileTransfer = e && e['dataTransfer'] && e['dataTransfer']['types'] && e['dataTransfer']['types'].indexOf('Files') >= 0; if (isFileTransfer) { active = true; _this3.getContainer().classList.add('feed-add-post-dnd-over'); if (placeHolder) { placeHolder.classList.add('feed-add-post-micro-dnd-ready'); } } return true; }; var disActivate = function disActivate(e) { e.preventDefault(); e.stopPropagation(); if (timeoutId > 0) { clearTimeout(timeoutId); } timeoutId = setTimeout(function () { active = false; _this3.getContainer().classList.remove('feed-add-post-dnd-over'); if (placeHolder) { placeHolder.classList.remove('feed-add-post-micro-dnd-ready'); } }, 100); return false; }; var catchFiles = function catchFiles(e) { disActivate(e); if (e && e['dataTransfer'] && e['dataTransfer']['types'] && e['dataTransfer']['types'].indexOf('Files') >= 0 && e['dataTransfer']['files'] && e['dataTransfer']['files'].length > 0) { main_core_events.EventEmitter.emit(_this3.getEventObject(), 'OnShowLHE', new main_core_events.BaseEvent({ compatData: ['justShow', { onShowControllers: 'show' }] })); main_core_events.EventEmitter.emit(_this3.getEventObject(), 'onFilesHaveCaught', new main_core_events.BaseEvent({ data: e['dataTransfer']['files'] })); } return false; }; _this3.getContainer().addEventListener('dragover', activate); _this3.getContainer().addEventListener('dragenter', activate); _this3.getContainer().addEventListener('dragleave', disActivate); _this3.getContainer().addEventListener('dragexit', disActivate); _this3.getContainer().addEventListener('drop', catchFiles); _this3.getContainer().setAttribute('dropzone', 'copy f:*\/*'); if (!document.body.hasAttribute('dropzone')) { document.body.setAttribute('dropzone', 'copy f:*/*'); document.body.addEventListener('dragover', function (e) { e.preventDefault(); e.stopPropagation(); return true; }); document.body.addEventListener('drop', function (e) { e.preventDefault(); e.stopPropagation(); if (e && e['dataTransfer'] && e['dataTransfer']['types'] && e['dataTransfer']['types'].indexOf('Files') >= 0 && e['dataTransfer']['files'] && e['dataTransfer']['files'].length > 0) { var lhe; var iteratorBuffer; var iterator = _classStaticPrivateFieldSpecGet(this.constructor, Editor, _shownForms).keys(); while ((iteratorBuffer = iterator.next()) && iteratorBuffer.done !== true && iteratorBuffer.value) { lhe = iteratorBuffer.value; } if (lhe) { main_core_events.EventEmitter.emit(lhe.getEventObject(), 'OnShowLHE', new main_core_events.BaseEvent({ compatData: ['justShow', { onShowControllers: 'show' }] })); main_core_events.EventEmitter.emit(lhe.getEventObject(), 'onFilesHaveCaught', new main_core_events.BaseEvent({ data: e['dataTransfer']['files'] })); } } return false; }.bind(_this3)); } if (placeHolder) { placeHolder.addEventListener('dragenter', function (e) { activate(e); main_core_events.EventEmitter.emit(_this3.getEventObject(), 'OnShowLHE', new main_core_events.BaseEvent({ compatData: ['justShow', { onShowControllers: 'show' }] })); }); } main_core_events.EventEmitter.subscribe(_this3.getEditor(), 'OnIframeDrop', function (_ref13) { var _ref13$data = babelHelpers.slicedToArray(_ref13.data, 1), e = _ref13$data[0]; return catchFiles(e); }); main_core_events.EventEmitter.subscribe(_this3.getEditor(), 'OnIframeDragOver', function (_ref14) { var _ref14$data = babelHelpers.slicedToArray(_ref14.data, 1), e = _ref14$data[0]; return activate(e); }); main_core_events.EventEmitter.subscribe(_this3.getEditor(), 'OnIframeDragLeave', function (_ref15) { var _ref15$data = babelHelpers.slicedToArray(_ref15.data, 1), e = _ref15$data[0]; return disActivate(e); }); })(); //endregion main_core_events.EventEmitter.subscribe(htmlEditor, 'OnInsertContent', function (_ref16) { var _ref16$data = babelHelpers.slicedToArray(_ref16.data, 2), text = _ref16$data[0], html = _ref16$data[1]; _this3.insertContent(text, html); }); //region Visible customization showPinButton(htmlEditor, this.editorParams); showPanelEditor(this, htmlEditor, this.editorParams); showUrlPreview(htmlEditor, this.editorParams); customizeHTMLEditor(this, htmlEditor); bindAutoSave(htmlEditor, BX(this.getFormId())); bindToolbar(this, htmlEditor); //endregion main_core_events.EventEmitter.subscribe(this.getEventObject(), 'OnAfterShowLHE', function () { _this3.getEditor().AllowBeforeUnloadHandler(); }); main_core_events.EventEmitter.subscribe(this.getEventObject(), 'OnAfterHideLHE', function () { TasksLimit.hidePopup(); _this3.getEditor().DenyBeforeUnloadHandler(); }); main_core_events.EventEmitter.subscribe(htmlEditor, 'OnIframeClick', function () { var event = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); htmlEditor.iframeView.container.dispatchEvent(event); }); } }, { key: "getEditor", value: function getEditor() { return this.htmlEditor; } }, { key: "getFormId", value: function getFormId() { return this.formId; } }, { key: "getEventObject", value: function getEventObject() { return this.eventNode; } }, { key: "getContainer", value: function getContainer() { return this.eventNode; } }, { key: "getToolbar", value: function getToolbar() { return this.toolbar; } }, { key: "OnEditorInitedBefore", value: function OnEditorInitedBefore(htmlEditor) { this.setEditor(htmlEditor); } }, { key: "OnCreateIframeAfter", value: function OnCreateIframeAfter() { if (this.editorIsLoaded !== true) { this.editorIsLoaded = true; this.exec(); main_core_events.EventEmitter.emit(this, 'OnEditorIsLoaded', []); } } }, { key: "OnEditorInitedAfter", value: function OnEditorInitedAfter(htmlEditor) { if (!this.editorParams.lazyLoad) { main_core_events.EventEmitter.emit(this.getEventObject(), 'OnShowLHE', new main_core_events.BaseEvent({ compatData: ['justShow', htmlEditor, false] })); } if (htmlEditor.sandbox && htmlEditor.sandbox.inited) { this.OnCreateIframeAfter(); } } }, { key: "addParser", value: function addParser(parser) { var _this4 = this; this.exec(function () { parser.init(_this4.getEditor()); _this4.getEditor().AddParser({ name: parser.id, obj: { Parse: function Parse(parserId, text) { return parser.parse(text); }, UnParse: parser.unparse } }); if (!_this4['addParserAfterDebounced']) { _this4.addParserAfterDebounced = main_core.Runtime.debounce(function () { _this4.getEditor().SetContent(_this4.getEditor().GetContent().replace(/[/ig, "[").replace(/]/ig, "]"), true); }, 100); } _this4.addParserAfterDebounced(); }); } }, { key: "insertContent", value: function insertContent(text) { var _this5 = this; var html = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; this.exec(function () { var editorMode = _this5.getEditor().GetViewMode(); if (editorMode === 'wysiwyg') { _this5.getEditor().InsertHtml(html || text); setTimeout(_this5.getEditor().AutoResizeSceleton.bind(_this5.getEditor()), 500); setTimeout(_this5.getEditor().AutoResizeSceleton.bind(_this5.getEditor()), 1000); } else { _this5.getEditor().textareaView.Focus(); if (!_this5.getEditor().bbCode) { var doc = _this5.getEditor().GetIframeDoc(); var dummy = doc.createElement('DIV'); dummy.style.display = 'none'; dummy.innerHTML = text; doc.body.appendChild(dummy); text = _this5.getEditor().Parse(text, true, false); dummy.parentNode.removeChild(dummy); } _this5.getEditor().textareaView.WrapWith('', '', text); } }); } }, { key: "reinit", value: function reinit(text, data) { var showControllers = 'hide'; if (main_core.Type.isPlainObject(data) && Object.values(data).length) { Object.values(data).forEach(function (property) { if (property && property['VALUE']) { showControllers = 'show'; } }); } main_core_events.EventEmitter.emit(this.getEventObject(), 'onShowControllers', showControllers); main_core_events.EventEmitter.emit(this.getEventObject(), 'onReinitializeBefore', [text, data]); this.getEditor().CheckAndReInit(main_core.Type.isString(text) ? text : ''); BX.onCustomEvent(this.getEditor(), 'onReinitialize', [this, text, data]); if (this.editorParams['height']) { this.oEditor.SetConfigHeight(this.editorParams['height']); this.oEditor.ResizeSceleton(); } } }, { key: "OnShowLHE", value: function OnShowLHE(_ref17) { var _this6 = this; var data = _ref17.data, compatData = _ref17.compatData; var _ref18 = data || compatData, _ref19 = babelHelpers.slicedToArray(_ref18, 3), show = _ref19[0], setFocus = _ref19[1], FCFormId = _ref19[2]; if (!this.getEditor() && window['BXHtmlEditor']) { window['BXHtmlEditor'].Get(this.getId()).Init(); } show = show === false || show === 'hide' || show === 'justShow' ? show : true; var placeHolder = BX('micro' + (this.name || this.id)); if (placeHolder) { placeHolder.style.display = show === true || show === 'justShow' ? 'none' : 'block'; } if (show === 'hide') { _classStaticPrivateFieldSpecGet(this.constructor, Editor, _shownForms).delete(this); main_core_events.EventEmitter.emit(this.getEventObject(), 'OnBeforeHideLHE'); if (this.getContainer().style.display === 'none') { main_core_events.EventEmitter.emit(this.getEventObject(), 'OnAfterHideLHE'); main_core_events.EventEmitter.emit(this.getEventObject(), 'onShowControllers', 'hide'); } else { new BX['easing']({ duration: 200, start: { opacity: 100, height: this.getContainer().scrollHeight }, finish: { opacity: 0, height: 20 }, transition: BX.easing.makeEaseOut(BX.easing.transitions.quad), step: function step(state) { _this6.getContainer().style.height = state.height + 'px'; _this6.getContainer().style.opacity = state.opacity / 100; }, complete: function complete() { _this6.getContainer().style.cssText = ''; _this6.getContainer().style.display = 'none'; main_core_events.EventEmitter.emit(_this6.getEventObject(), 'OnAfterHideLHE'); main_core_events.EventEmitter.emit(_this6.getEventObject(), 'onShowControllers', 'hide'); } }).animate(); } } else if (show) { _classStaticPrivateFieldSpecGet(this.constructor, Editor, _shownForms).set(this); this.formEntityType = main_core.Type.isArray(FCFormId) && main_core.Type.isStringFilled(FCFormId[0]) && FCFormId[0].match(/^TASK_(\d+)$/i) ? 'task' : null; if (setFocus && main_core.Type.isPlainObject(setFocus)) { if (setFocus['onShowControllers']) { main_core_events.EventEmitter.emit(this.getEventObject(), 'onShowControllers', setFocus['onShowControllers']); } } main_core_events.EventEmitter.emit(this.getEventObject(), 'OnBeforeShowLHE'); if (show === 'justShow' || this.getContainer().style.display === 'block') { this.getContainer().style.display = 'block'; main_core_events.EventEmitter.emit(this.getEventObject(), 'OnAfterShowLHE'); //To remember: Here is set a text -> reinitData-> reinit -> editor.CheckAndReInit() if (setFocus !== false) { this.getEditor().Focus(); } } else { main_core.Dom.adjust(this.getContainer(), { style: { display: 'block', overflow: 'hidden', height: '20px', opacity: 0.1 } }); new BX['easing']({ duration: 200, start: { opacity: 10, height: 20 }, finish: { opacity: 100, height: this.getContainer().scrollHeight }, transition: BX.easing.makeEaseOut(BX.easing.transitions.quad), step: function step(state) { _this6.getContainer().style.height = state.height + 'px'; _this6.getContainer().style.opacity = state.opacity / 100; }, complete: function complete() { main_core_events.EventEmitter.emit(_this6.getEventObject(), 'OnAfterShowLHE'); //To remember: Here is set a text -> reinitData-> reinit -> editor.CheckAndReInit() _this6.getEditor().Focus(); _this6.getContainer().style.cssText = ""; } }).animate(); } } else { _classStaticPrivateFieldSpecGet(this.constructor, Editor, _shownForms).delete(this); main_core_events.EventEmitter.emit(this.getEventObject(), 'OnBeforeHideLHE'); main_core_events.EventEmitter.emit(this.getEventObject(), 'onShowControllers', 'hide'); this.getContainer().style.display = 'none'; main_core_events.EventEmitter.emit(this.getEventObject(), 'OnAfterHideLHE'); } } }, { key: "OnButtonClick", value: function OnButtonClick(_ref20) { var _ref20$data = babelHelpers.slicedToArray(_ref20.data, 1), action = _ref20$data[0]; if (action !== 'cancel') { var res = { result: true }; main_core_events.EventEmitter.emit(this.getEventObject(), 'OnClickBeforeSubmit', new main_core_events.BaseEvent({ compatData: [this, res] })); if (res['result'] !== false) { main_core_events.EventEmitter.emit(this.getEventObject(), 'OnClickSubmit', new main_core_events.BaseEvent({ compatData: [this] })); } } else { main_core_events.EventEmitter.emit(this.getEventObject(), 'OnClickCancel', new main_core_events.BaseEvent({ compatData: [this] })); main_core_events.EventEmitter.emit(this.getEventObject(), 'OnShowLHE', new main_core_events.BaseEvent({ compatData: ['hide'] })); } } //region compatibility }, { key: "exec", value: function exec(func, args) { if (typeof func == 'function') { this.actionQueue.push([func, args]); } if (this.editorIsLoaded === true) { var res; while ((res = this.actionQueue.shift()) && res) { res[0].apply(this, res[1]); } } } }, { key: "showPanelEditor", value: function showPanelEditor$$1() { showPanelEditor(this, this.getEditor(), {}); } }, { key: "getContent", value: function getContent() { return this.oEditor ? this.oEditor.GetContent() : ''; } }, { key: "setContent", value: function setContent(text) { if (this.getEditor()) { this.getEditor().SetContent(text); } } }, { key: "controllerInit", value: function controllerInit(status) { main_core_events.EventEmitter.emit(this.getEventObject(), 'onShowControllers', status === 'hide' ? 'hide' : 'show'); } }, { key: "isReady", get: function get() { return this.editorIsLoaded; } }, { key: "oEditor", get: function get() { return this.getEditor(); } }, { key: "oEditorId", get: function get() { return this.getId(); } }, { key: "formID", get: function get() { return this.getFormId(); } }, { key: "params", get: function get() { return { formID: this.getFormId() }; } }, { key: "controllers", get: function get() { var event = new main_core_events.BaseEvent(); var data = {}; event.setData(data); main_core_events.EventEmitter.emit(this.getEventObject(), 'onCollectControllers', event); var result = {}; Object.keys(data).forEach(function (fieldName) { result[fieldName] = Object.assign({}, data[fieldName]); result[fieldName]['values'] = {}; if (main_core.Type.isArray(data[fieldName]['values'])) { data[fieldName]['values'].forEach(function (id) { result[fieldName]['values'][id] = { id: id }; }); } else if (main_core.Type.isPlainObject(data[fieldName]['values'])) { result[fieldName]['values'] = Object.assign({}, data[fieldName]['values']); } }); return result; } }, { key: "arFiles", get: function get() { var event = new main_core_events.BaseEvent(); var data = {}; event.setData(data); main_core_events.EventEmitter.emit(this.getEventObject(), 'onCollectControllers', event); var result = {}; Object.keys(data).forEach(function (fieldName) { if (data[fieldName]['values']) { data[fieldName]['values'].forEach(function (id) { result[id] = [fieldName]; }); } }); return result; } //endregion }]); return Editor; }(); babelHelpers.defineProperty(Editor, "repo", new Map()); var _shownForms = { writable: true, value: new Map() }; window['LHEPostForm'] = { //region compatibility getEditor: function getEditor(editor) { return window["BXHtmlEditor"] ? window["BXHtmlEditor"].Get(babelHelpers.typeof(editor) == "object" ? editor.id : editor) : null; }, getHandler: function getHandler(editor) { var id = main_core.Type.isStringFilled(editor) ? editor : editor.id; return Editor.repo.get(id); }, getHandlerByFormId: function getHandlerByFormId(formId) { var result = null; Editor.repo.forEach(function (editor) { if (editor.getFormId() === formId) { result = editor; } }); return result; }, reinitData: function reinitData(editorID, text, data) { var files = {}; Object.entries(data).forEach(function (_ref) { var _ref2 = babelHelpers.slicedToArray(_ref, 2), userFieldName = _ref2[0], userField = _ref2[1]; if (main_core.Type.isPlainObject(userField) && userField['USER_TYPE_ID'] && userField['VALUE'] && Object.values(userField['VALUE']).length > 0) { files[userFieldName] = userField; } }); var handler = this.getHandler(editorID); if (handler && (handler.isReady || main_core.Type.isStringFilled(text) || Object.values(files).length > 0)) { handler.exec(handler.reinit, [text, files]); } return false; }, reinitDataBefore: function reinitDataBefore(editorID) { var handler = Editor.repo.get(editorID); if (handler && handler.getEventObject()) { main_core_events.EventEmitter.emit(handler.getEventObject(), 'onReinitializeBefore', [handler]); } } //endregion }; exports.PostForm = Editor; exports.PostFormTasksLimit = TasksLimit; }((this.BX.Main = this.BX.Main || {}),BX.Event,BX,BX.Main,BX)); ;(function(){ if (window["BXPostFormTags"]) return; var repo = { selector : {} }; window.BXPostFormTags = function(formID, buttonID) { this.popup = null; this.formID = formID; this.buttonID = buttonID; this.sharpButton = null; this.addNewLink = null; this.tagsArea = null; this.hiddenField = null; this.popupContent = null; BX.ready(BX.proxy(this.init, this)); }; window.BXPostFormTags.prototype.init = function() { this.sharpButton = BX(this.buttonID); this.addNewLink = BX("post-tags-add-new-" + this.formID); this.tagsArea = BX("post-tags-block-" + this.formID); this.tagsContainer = BX("post-tags-container-" + this.formID); this.hiddenField = BX("post-tags-hidden-" + this.formID); this.popupContent = BX("post-tags-popup-content-" + this.formID); this.popupInput = BX.findChild(this.popupContent, { tag : "input" }); var tags = BX.findChildren(this.tagsContainer, { className : "feed-add-post-del-but" }, true); for (var i = 0, cnt = tags.length; i < cnt; i++ ) { BX.bind(tags[i], "click", BX.proxy(this.onTagDelete, { obj : this, tagBox : tags[i].parentNode, tagValue : tags[i].parentNode.getAttribute("data-tag") })); } BX.bind(this.sharpButton, "click", BX.proxy(this.onButtonClick, this)); BX.bind(this.addNewLink, "click", BX.proxy(this.onAddNewClick, this)); }; window.BXPostFormTags.prototype.onTagDelete = function() { BX.remove(this.tagBox); this.obj.hiddenField.value = this.obj.hiddenField.value.replace(this.tagValue + ',', '').replace(' ', ' '); }; window.BXPostFormTags.prototype.show = function() { if (this.popup === null) { this.popup = new BX.PopupWindow("bx-post-tag-popup", this.addNewLink, { content : this.popupContent, lightShadow : false, offsetTop: 8, offsetLeft: 10, autoHide: true, angle : true, closeByEsc: true, zIndex: -840, buttons: [ new BX.PopupWindowButton({ text : BX.message("TAG_ADD"), events : { click : BX.proxy(this.onTagAdd, this) } }) ] }); BX.bind(this.popupInput, "keydown", BX.proxy(this.onKeyPress, this)); BX.bind(this.popupInput, "keyup", BX.proxy(this.onKeyPress, this)); } this.popup.show(); BX.focus(this.popupInput); }; window.BXPostFormTags.prototype.addTag = function(tagStr) { var tags = BX.type.isNotEmptyString(tagStr) ? tagStr.split(",") : this.popupInput.value.split(","); var result = []; for (var i = 0; i < tags.length; i++ ) { var tag = BX.util.trim(tags[i]); if(tag.length > 0) { var allTags = this.hiddenField.value.split(","); if(!BX.util.in_array(tag, allTags)) { var newTagDelete; var newTag = BX.create("span", { children : [ (newTagDelete = BX.create("span", { attrs : { "class": "feed-add-post-del-but" }})) ], attrs : { "class": "feed-add-post-tags" } }); newTag.insertBefore(document.createTextNode(tag), newTagDelete); this.tagsContainer.insertBefore(newTag, this.addNewLink); BX.bind(newTagDelete, "click", BX.proxy(this.onTagDelete, { obj : this, tagBox : newTag, tagValue : tag })); this.hiddenField.value += tag + ','; result.push(tag); } } } return result; }; window.BXPostFormTags.prototype.onTagAdd = function() { this.addTag(); this.popupInput.value = ""; this.popup.close(); }; window.BXPostFormTags.prototype.onAddNewClick = function(event) { event = event || window.event; this.show(); BX.PreventDefault(event); }; window.BXPostFormTags.prototype.onButtonClick = function(event) { event = event || window.event; BX.show(this.tagsArea); this.show(); BX.PreventDefault(event); }; window.BXPostFormTags.prototype.onKeyPress = function(event) { event = event || window.event; var key = (event.keyCode ? event.keyCode : (event.which ? event.which : null)); if (key == 13) { setTimeout(BX.proxy(this.onTagAdd, this), 0); } }; window.BXPostFormImportant = function(formID, buttonID, inputName) { if (inputName) { this.formID = formID; this.buttonID = buttonID; this.inputName = inputName; this.fireButton = null; this.activeBlock = null; this.hiddenField = null; BX.ready(BX.proxy(this.init, this)); } return false; }; window.BXPostFormImportant.prototype.init = function() { this.fireButton = BX(this.buttonID); this.activeBlock = BX(this.buttonID + '-active'); var form = BX(this.formID); if (form) { this.hiddenField = form[this.inputName]; if ( this.hiddenField && this.hiddenField.value == 1 ) { this.showActive(); } } BX.bind(this.fireButton, "click", BX.proxy(function(event) { event = event || window.event; this.showActive(); BX.PreventDefault(event); }, this)); BX.bind(this.activeBlock, "click", BX.proxy(function(event) { event = event || window.event; this.hideActive(); BX.PreventDefault(event); }, this)); }; window.BXPostFormImportant.prototype.showActive = function(event) { BX.hide(this.fireButton); BX.show(this.activeBlock, 'inline-block'); if (this.hiddenField) { this.hiddenField.value = 1; } return false; }; window.BXPostFormImportant.prototype.hideActive = function(event) { BX.hide(this.activeBlock); BX.show(this.fireButton, 'inline-block'); if (this.hiddenField) { this.hiddenField.value = 0; } return false; }; var lastWaitElement = null; window.MPFbuttonShowWait = function(el) { if (el && !BX.type.isElementNode(el)) el = null; el = el || this; el = (el ? (el.tagName == "A" ? el : el.parentNode) : el); if (el) { BX.addClass(el, "ui-btn-clock"); lastWaitElement = el; BX.defer(function(){el.disabled = true})(); } }; var MPFMention = { listen: false, plus : false, text : '', bSearch: false, node: null, mode: null }; BX.addCustomEvent(window, 'onInitialized', function(someObject) { if (someObject && someObject.eventNode) { BX.onCustomEvent(someObject.eventNode, 'OnClickCancel', function(){ MPFMention.node = null; }); } }); BX.addCustomEvent(window, 'BX.MPF.MentionSelector:open', function(params) { var selectorId = (BX.type.isNotEmptyString(params.id) ? params.id : ''); if (!BX.type.isNotEmptyString(selectorId)) { return; } var bindNode = (BX.type.isDomNode(params.bindNode) ? params.bindNode : null); var bindPosition = (BX.type.isNotEmptyObject(params.bindPosition) ? params.bindPosition : null); var dialog = BX.UI.EntitySelector.Dialog.getById(BX.type.isDomNode(bindNode) ? selectorId + '-withsearch' : selectorId); if (dialog) { dialog.deselectAll(); dialog.search(''); dialog.show(); if (BX.type.isDomNode(bindNode)) { dialog.focusSearch(); dialog.popup.setBindElement(bindNode); } else if (BX.type.isNotEmptyObject(bindPosition)) { dialog.popup.setBindElement(bindPosition); } dialog.popup.adjustPosition(); } }); window.onKeyDownHandler = function(e, editor, formID) { var keyCode = e.keyCode; if (!window['BXfpdStopMent' + formID]) { return true; } var selectorId = window.MPFgetSelectorId('bx-mention-' + formID + '-id'); if ( keyCode === editor.KEY_CODES['backspace'] && MPFMention.node ) { var mentText = BX.util.trim(editor.util.GetTextContent(MPFMention.node)); if ( mentText === '+' || mentText === '@' || ( MPFMention.mode == 'button' && mentText.length == 1 ) ) { window['BXfpdStopMent' + formID](); } else if ( MPFMention.mode == 'button' && mentText.length == 1 ) { window['BXfpdStopMent' + formID](); } } if ( BX.util.in_array(keyCode, [ 107, 187 ]) || ( (e.shiftKey || e.modifiers > 3) && BX.util.in_array(keyCode, [ 50, 43, 61 ]) ) || ( e.altKey && BX.util.in_array(keyCode, [ 76 ]) ) /* German @ == Alt + L*/ || ( e.altKey && e.ctrlKey && BX.util.in_array(keyCode, [ 81 ]) && e.key === '@' ) /* Win LA Spanish @ == Ctrl + Alt + Q */ || ( e.altKey && BX.util.in_array(keyCode, [ 71, 81 ]) && e.key === '@' ) /* MacOS ES Spanish @ == Alt + G, MacOS LA Spanish @ = Alt + Q */ || ( e.altKey && BX.util.in_array(keyCode, [ 50 ]) && e.key === '@' ) /* MacOS PT Portugal @ == Alt + 2 */ || ( typeof e.getModifierState === 'function' && !!e.getModifierState('AltGraph') && BX.util.in_array(keyCode, [ 81, 50, 48 ]) && typeof e.key !== 'undefined' && e.key === '@' ) /* Win German @ == AltGr + Q, Win Spanish @ == AltGr + 2, Win French @ == AltGr + 0 */ || ( BX.util.in_array(keyCode, [ 192 ]) && e.key === '@' ) /* MacOS FR */ ) { setTimeout(function() { var range = editor.selection.GetRange(), doc = editor.GetIframeDoc(), txt = (range ? range.endContainer.textContent : ''), determiner = (txt ? txt.slice(range.endOffset - 1, range.endOffset) : ''), prevS = (txt ? txt.slice(range.endOffset - 2, range.endOffset-1) : ''); if ( (determiner == "@" || determiner == "+") && ( !prevS || BX.util.in_array(prevS, ["+", "@", ",", "("]) || ( prevS.length == 1 && BX.util.trim(prevS) === "" ) ) ) { MPFMention.listen = true; MPFMention.listenFlag = true; MPFMention.text = ''; MPFMention.leaveContent = true; MPFMention.mode = 'plus'; range.setStart(range.endContainer, range.endOffset - 1); range.setEnd(range.endContainer, range.endOffset); editor.selection.SetSelection(range); MPFMention.node = BX.create("SPAN", {props: {id: "bx-mention-node"}}, doc); editor.selection.Surround(MPFMention.node, range); range.setStart(MPFMention.node, 1); range.setEnd(MPFMention.node, 1); editor.selection.SetSelection(range); if (BX.type.isNotEmptyString(selectorId)) { BX.onCustomEvent(window, 'BX.MPF.MentionSelector:open', [{ id: selectorId, bindPosition: getMentionNodePosition(MPFMention.node, editor) }]); } } }, 10); } if (MPFMention.listen) { var activeDialogTab = null; var dialog = (BX.type.isNotEmptyString(selectorId) ? BX.UI.EntitySelector.Dialog.getById(selectorId) : null); if ( dialog && dialog.getActiveTab() ) { activeDialogTab = dialog.getActiveTab().getId(); } var key = null; switch (keyCode) { case editor.KEY_CODES.enter: key = 'Enter'; break; case 9: key = 'Tab'; break; case editor.KEY_CODES.up: key = 'ArrowUp'; break; case editor.KEY_CODES.down: key = 'ArrowDown'; break; case editor.KEY_CODES.left: if (activeDialogTab === 'departments') { key = 'ArrowLeft'; } break; case editor.KEY_CODES.right: if (activeDialogTab === 'departments') { key = 'ArrowRight'; } break; } if (key) { var event = new KeyboardEvent('keydown', { key: key, keyCode: keyCode, bubbles: true, cancelable: true, view: window, }); if (!document.dispatchEvent(event)) { editor.iframeKeyDownPreventDefault = true; e.stopPropagation(); e.preventDefault(); } } } if ( !MPFMention.listen && MPFMention.listenFlag && keyCode === editor.KEY_CODES["enter"] ) { var range = editor.selection.GetRange(); if (range.collapsed) { var node = range.endContainer, doc = editor.GetIframeDoc(); if (node) { if (node.className !== 'bxhtmled-metion') { node = BX.findParent(node, function(n) { return n.className == 'bxhtmled-metion'; }, doc.body); } if (node && node.className == 'bxhtmled-metion') { editor.selection.SetAfter(node); } } } } }; window.onKeyUpHandler = function(e, editor, formID) { var keyCode = e.keyCode, range, mentText; if (!window['BXfpdStopMent' + formID]) { return true; } if (MPFMention.listen === true) { if (keyCode == editor.KEY_CODES.escape) //ESC { var event = new KeyboardEvent('keyup', { key: 'Escape', keyCode: keyCode, bubbles: true, cancelable: true, view: window, }); if (!document.dispatchEvent(event)) { e.stopPropagation(); e.preventDefault(); } window['BXfpdStopMent' + formID](); } else if ( keyCode !== editor.KEY_CODES.enter && keyCode !== editor.KEY_CODES.left && keyCode !== editor.KEY_CODES.right && keyCode !== editor.KEY_CODES.up && keyCode !== editor.KEY_CODES.down ) { if (BX(MPFMention.node)) { mentText = BX.util.trim(editor.util.GetTextContent(MPFMention.node)); var mentTextOrig = mentText; mentText = mentText.replace(/^[\+@]*/, ''); MPFMention.bSearch = BX.type.isNotEmptyString(mentText); var selectorId = window.MPFgetSelectorId('bx-mention-' + formID + '-id'); var dialog = BX.UI.EntitySelector.Dialog.getById(selectorId); if ( BX.type.isNotEmptyString(mentText) && dialog ) { dialog.search(mentText); } if ( MPFMention.leaveContent && MPFMention._lastText ) { if (mentTextOrig === '') { window['BXfpdStopMent' + formID](); } else if ( mentTextOrig !== '' && mentText === '' ) { MPFMention.bSearch = false; if (dialog) { dialog.search(''); } } } MPFMention.lastText = mentText; MPFMention._lastText = mentTextOrig; } else { window['BXfpdStopMent' + formID](); } } } else { if ( !e.shiftKey && (keyCode === editor.KEY_CODES["space"] || keyCode === editor.KEY_CODES["escape"] || keyCode === 188 || keyCode === 190 )) { range = editor.selection.GetRange(); if (range.collapsed) { var node = range.endContainer, doc = editor.GetIframeDoc(); if (node) { if (node.className !== 'bxhtmled-metion') { node = BX.findParent(node, function(n) { return n.className == 'bxhtmled-metion'; }, doc.body); } if (node && node.className == 'bxhtmled-metion') { mentText = editor.util.GetTextContent(node); var matchSep = mentText.match(/[\s\.\,]$/); if (matchSep || keyCode === editor.KEY_CODES["escape"]) { node.innerHTML = mentText.replace(/[\s\.\,]$/, ''); var sepNode = BX.create('SPAN', {html: matchSep || editor.INVISIBLE_SPACE}, doc); editor.util.InsertAfter(sepNode, node); editor.selection.SetAfter(sepNode); } } } } } } }; window.onTextareaKeyDownHandler = function(e, editor, formID) { var keyCode = e.keyCode; if(MPFMention.listen && keyCode == editor.KEY_CODES.enter) { editor.textareaKeyDownPreventDefault = true; e.stopPropagation(); e.preventDefault(); } }; window.onTextareaKeyUpHandler = function(e, editor, formID) { var cursor = null; var value = ''; var keyCode = e.keyCode; var selectorId = window.MPFgetSelectorId('bx-mention-' + formID + '-id'); if (MPFMention.listen === true) { if (keyCode == 27) //ESC { window['BXfpdStopMent' + formID](); } else if (keyCode !== 13) { value = editor.textareaView.GetValue(false); cursor = editor.textareaView.GetCursorPosition(); var mentText = ''; var mentTextOrig = ''; if (value.indexOf('+') !== -1 || value.indexOf('@') !== -1) { var valueBefore = value.substr(0, cursor); var charPos = Math.max(valueBefore.lastIndexOf('+'), valueBefore.lastIndexOf('@')); if (charPos >= 0) { mentText = valueBefore.substr(charPos); mentTextOrig = mentText; mentText = mentText.replace(/^[\+@]*/, ''); MPFMention.bSearch = BX.type.isNotEmptyString(mentText); var dialog = BX.UI.EntitySelector.Dialog.getById(selectorId); if ( BX.type.isNotEmptyString(mentText) && dialog ) { dialog.search(mentText); } } } if (MPFMention._lastText) { if (mentTextOrig === '') { window['BXfpdStopMent' + formID](); } else if ( mentTextOrig !== '' && mentText === '' ) { MPFMention.bSearch = false; if (dialog) { dialog.search(''); } } } MPFMention.lastText = mentText; MPFMention._lastText = mentTextOrig; } } else { if (keyCode == 16) { var _this = this; this.shiftPressed = true; if (this.shiftTimeout) this.shiftTimeout = clearTimeout(this.shiftTimeout); this.shiftTimeout = setTimeout(function() { _this.shiftPressed = false; }, 100); } if (keyCode == 107 || (e.shiftKey || e.modifiers > 3 || this.shiftPressed) && BX.util.in_array(keyCode, [187, 50, 107, 43, 61])) { cursor = editor.textareaView.element.selectionStart; if (cursor > 0) { value = editor.textareaView.element.value; var lastChar = value.substr(cursor - 1, 1); if (lastChar && (lastChar === '+' || lastChar === '@')) { MPFMention.listen = true; MPFMention.listenFlag = true; MPFMention.text = ''; MPFMention.textarea = true; MPFMention.bSearch = false; MPFMention.mode = 'plus'; if (BX.type.isNotEmptyString(selectorId)) { BX.onCustomEvent(window, 'BX.MPF.MentionSelector:open', [{ id: selectorId, bindPosition: BX.pos(document.getElementById('bx-b-mention-' + formID)), }]); } } } } } }; var getMentionNodePosition = function(mention, editor) { var mentPos = BX.pos(mention), editorPos = BX.pos(editor.dom.areaCont), editorDocScroll = BX.GetWindowScrollPos(editor.GetIframeDoc()), top = editorPos.top + mentPos.bottom - editorDocScroll.scrollTop + 2, left = editorPos.left + mentPos.right - editorDocScroll.scrollLeft; return {top: top, left: left}; }; window.BxInsertMention = function (params) { var item = params.item, type = params.type, formID = params.formID, editorId = params.editorId, bNeedComa = params.bNeedComa, editor = LHEPostForm.getEditor(editorId), spaceNode; if ( ( type === 'user' || type === 'project' || type === 'department' ) && item && item.entityId > 0 && editor ) { if(editor.GetViewMode() == 'wysiwyg') // WYSIWYG { var doc = editor.GetIframeDoc(), range = editor.selection.GetRange(), mention = BX.create('SPAN', { props: {className: 'bxhtmled-metion'}, text: BX.util.htmlspecialcharsback(item.name) }, doc); // - for chrome spaceNode = BX.create('SPAN', {html: (bNeedComa ? ', ' : ' ')}, doc); var bxTagData = { tag: 'postuser', params: { value : item.entityId }, }; switch (type) { case 'project': bxTagData.projectId = item.entityId; bxTagData.projectName = item.name; break; case 'department': bxTagData.departmentId = item.entityId; bxTagData.departmentName = item.name; break; default: bxTagData.userId = item.entityId; bxTagData.userName = item.name; } editor.SetBxTag(mention, bxTagData); if ( BX(MPFMention.node) && MPFMention.node.parentNode ) { editor.util.ReplaceNode(MPFMention.node, mention); } else { editor.selection.InsertNode(mention, range); } if (mention && mention.parentNode) { var parentMention = BX.findParent(mention, {className: 'bxhtmled-metion'}, doc.body); if (parentMention) { editor.util.InsertAfter(mention, parentMention); } } if (mention && mention.parentNode) { editor.util.InsertAfter(spaceNode, mention); editor.selection.SetAfter(spaceNode); } } else if (editor.GetViewMode() == 'code' && editor.bbCode) // BB Codes { editor.textareaView.Focus(); var value = editor.textareaView.GetValue(false), cursor = editor.textareaView.GetCursorPosition(), valueBefore = value.substr(0, cursor), charPos = Math.max(valueBefore.lastIndexOf('+'), valueBefore.lastIndexOf('@')); if (charPos >= 0 && cursor > charPos) { editor.textareaView.SetValue(value.substr(0, charPos) + value.substr(cursor)); editor.textareaView.element.setSelectionRange(charPos, charPos); } var bbCode = ''; switch (type) { case 'user': bbCode = 'USER'; break; case 'project': bbCode = 'PROJECT'; break; case 'department': bbCode = 'DEPARTMENT'; break; default: } editor.textareaView.WrapWith(false, false, "[" + bbCode + "=" + item.entityId + "]" + item.name + "[/" + bbCode + "]" + (bNeedComa ? ', ' : ' ')); } if (params.fireAddEvent === true) { BX.onCustomEvent(window, 'onMentionAdd', [ item, type ]); } if (window['BXfpdStopMent' + formID]) { window['BXfpdStopMent' + formID](); } MPFMention["text"] = ''; if(editor.GetViewMode() == 'wysiwyg') // WYSIWYG { editor.Focus(); editor.selection.SetAfter(spaceNode); } var handler = LHEPostForm.getHandler(editorId); if ( handler && handler.formEntityType === 'task' && handler.editorParams.tasksLimitExceeded ) { BX.Main.PostFormTasksLimit.showPopup({ bindPosition: getMentionNodePosition(MPFMention.node, editor), }); } } }; window.MPFgetSelectorId = function(formId) { var result = false; var formNode = BX(formId); if (!formNode) { return result; } result = formNode.getAttribute('data-bx-selector-id'); return result; }; window.MPFcreateSelectorDialog = function(dialogParams) { new BX.UI.EntitySelector.Dialog({ targetNode: 'mpf-mention-' + dialogParams.formId, id: dialogParams.selectorId, context: 'MENTION', multiple: false, preload: true, enableSearch: dialogParams.enableSearch, clearSearchOnSelect: true, hideOnSelect: true, hideByEsc: true, entities: dialogParams.params.entities, height: 300, width: 400, compactView: true, events: { onShow: function() { window.BXfpdOnDialogOpen(); }, onHide: function() { window.BXfpdOnDialogClose({ editorId: dialogParams.params.editorId, }); }, 'Item:onSelect': function (event) { var selectedItem = event.getData().item; if (selectedItem) { window['BXfpdSelectCallbackMent' + dialogParams.formId]({ item: { name: selectedItem.getTitle(), entityId: selectedItem.getId(), }, entityType: selectedItem.getEntityId(), }); } } }, }); }; window.MPFMentionInit = function(formId, params) { if (params.initDestination === true) { BX.addCustomEvent('onAutoSaveRestoreDestination', function(params) { if ( BX.type.isNotEmptyObject(params) && BX.type.isNotEmptyObject(params.data) && BX.type.isNotEmptyString(params.data.DEST_DATA) && BX.type.isNotEmptyString(params.formId) && params.formId == formId && BX.UI.EntitySelector ) { var destData = JSON.parse(params.data.DEST_DATA); if (!Array.isArray(destData)) { return; } var selectorInstance = BX.UI.EntitySelector.Dialog.getById('oPostFormLHE_blogPostForm'); if (!BX.type.isNotEmptyObject(selectorInstance)) { return; } selectorInstance.preselectedItems = destData; selectorInstance.setPreselectedItems(destData); } }); BX.addCustomEvent(window, "onMentionAdd", function(item, type) { var selectorInstance = BX.UI.EntitySelector.Dialog.getById('oPostFormLHE_blogPostForm'); if (!BX.type.isNotEmptyObject(selectorInstance)) { return; } var entityType = ''; if (type === 'user') { if (item.isExtranet === 'Y') { entityType = 'extranet'; } else if (item.isEmail === 'Y') { entityType = 'email'; } else { entityType = 'employee'; } } else if (type === 'project') { if (item.isExtranet === 'Y') { entityType = 'extranet'; } } selectorInstance.addItem({ avatar: item.avatar, customData: { email: (BX.type.isNotEmptyString(item.email) ? item.email : ''), }, entityId: type, entityType: entityType, id: item.entityId, title: item.name }).select(); }); } window["BXfpdSelectCallbackMent" + formId] = function(callbackParams) // item, type, search { window.BxInsertMention({ item: callbackParams.item, type: callbackParams.entityType.toLowerCase(), formID: formId, editorId: params.editorId, fireAddEvent: params.initDestination }); }; window["BXfpdStopMent" + formId] = function () { var selectorId = window.MPFgetSelectorId('bx-mention-' + formId + '-id'); var dialog = BX.UI.EntitySelector.Dialog.getById(selectorId); if (dialog) { dialog.hide(); } }; if (BX(formId)) { BX.addCustomEvent(BX(formId), 'OnUCFormAfterShow', function(ucFormManager) { if ( !BX.type.isNotEmptyObject(ucFormManager) || !BX.type.isArray(ucFormManager.id) || !BX.type.isNotEmptyString(ucFormManager.id[0]) ) { return; } var reg = new RegExp('EVENT\_(\\d+)','i'); // calendar test if (!reg.test(ucFormManager.id[0])) { return; } }); } var handler = LHEPostForm.getHandlerByFormId(formId); if (handler) { handler.exec(function() { var selectorId = window.MPFgetSelectorId('bx-mention-' + formId + '-id'); if (selectorId) { window.MPFcreateSelectorDialog({ formId: formId, selectorId: selectorId, enableSearch: false, params: params, }); window.MPFcreateSelectorDialog({ formId: formId, selectorId: selectorId + '-withsearch', enableSearch: true, params: params, }); } }); } BX.ready(function() { var ment = BX('bx-b-mention-' + formId); var selectorId = window.MPFgetSelectorId('bx-mention-' + formId + '-id'); BX.bind( ment, "click", function(e) { if(MPFMention.listen !== true) { var editor = LHEPostForm.getEditor(params.editorId), doc = editor.GetIframeDoc(); if(editor.GetViewMode() == 'wysiwyg' && doc) { MPFMention.listen = true; MPFMention.listenFlag = true; MPFMention.text = ''; MPFMention.leaveContent = false; MPFMention.mode = 'button'; var range = editor.selection.GetRange(); if (BX(MPFMention.node)) { BX.remove(BX(MPFMention.node)); } editor.InsertHtml('<span id="bx-mention-node">' + editor.INVISIBLE_SPACE + '</span>', range); setTimeout(function() { if (selectorId) { BX.onCustomEvent(window, 'BX.MPF.MentionSelector:open', [{ id: selectorId, bindNode: ment, }]); } MPFMention.node = doc.getElementById('bx-mention-node'); if (MPFMention.node) { range.setStart(MPFMention.node, 0); if ( MPFMention.node.firstChild && MPFMention.node.firstChild.nodeType == 3 && MPFMention.node.firstChild.nodeValue.length > 0 ) { range.setEnd(MPFMention.node, 1); } else { range.setEnd(MPFMention.node, 0); } editor.selection.SetSelection(range); } editor.Focus(); }, 100); } else if (editor.GetViewMode() == 'code') { MPFMention.listen = true; MPFMention.listenFlag = true; MPFMention.text = ''; MPFMention.leaveContent = false; MPFMention.mode = 'button'; // TODO: get current cusrsor position setTimeout(function() { if (selectorId) { BX.onCustomEvent(window, 'BX.MPF.MentionSelector:open', [{ id: selectorId, bindNode: ment }]); } }, 100); } BX.onCustomEvent(ment, 'mentionClick'); } } ); } ); }; window.BXfpdOnDialogOpen = function () { MPFMention.listen = true; MPFMention.listenFlag = true; }; window.BXfpdOnDialogClose = function (params) { MPFMention.listen = false; setTimeout(function() { MPFMention.listenFlag = false; if (!MPFMention.listen) { var editor = LHEPostForm.getEditor(params.editorId); if(editor) { editor.Focus(); } } }, 100); }; MPFEntitySelector = function(params) { this.selector = null; this.inputNode = null; this.messages = {}; if (!BX.type.isNotEmptyString(params.id)) { return null; } if (repo.selector[params.id]) { return repo.selector[params.id]; } repo.selector[params.id] = this.init(params); }; MPFEntitySelector.prototype.init = function(params) { if (!BX.type.isPlainObject(params)) { params = {}; } if ( !BX.type.isNotEmptyString(params.id) || !BX.type.isNotEmptyString(params.tagNodeId) || !BX(params.tagNodeId) ) { return null; } if ( BX.type.isNotEmptyString(params.inputNodeId) && BX(params.inputNodeId) ) { this.inputNode = BX(params.inputNodeId); } if (BX.type.isNotEmptyObject(params.messages)) { this.messages = params.messages; } this.selector = new BX.UI.EntitySelector.TagSelector({ id: params.id, dialogOptions: { id: params.id, context: (BX.type.isNotEmptyString(params.context) ? params.context : null), preselectedItems: (BX.type.isArray(params.preselectedItems) ? params.preselectedItems : []), events: { 'Item:onSelect': function() { this.recalcValue(this.selector.getDialog().getSelectedItems()); }.bind(this), 'Item:onDeselect': function() { this.recalcValue(this.selector.getDialog().getSelectedItems()); }.bind(this) }, entities: [ { id: 'meta-user', options: { 'all-users': { title: this.messages.allUsersTitle, allowView: ( BX.type.isBoolean(params.allowToAll) && params.allowToAll ) } } }, { id: 'user', options: { emailUsers: (BX.type.isBoolean(params.allowSearchEmailUsers) ? params.allowSearchEmailUsers : false), inviteGuestLink: (BX.type.isBoolean(params.allowSearchEmailUsers) ? params.allowSearchEmailUsers : false), myEmailUsers: true } }, { id: 'project', options: { features: { blog: [ 'premoderate_post', 'moderate_post', 'write_post', 'full_post' ] } } }, { id: 'department', options: { selectMode: 'usersAndDepartments', allowFlatDepartments: false, } } ] }, addButtonCaption: BX.message('BX_FPD_LINK_1'), addButtonCaptionMore: BX.message('BX_FPD_LINK_2') }); this.selector.renderTo(document.getElementById(params.tagNodeId)); return this.selector; }; MPFEntitySelector.prototype.recalcValue = function(selectedItems) { if ( !BX.type.isArray(selectedItems) || !this.inputNode ) { return; } var result = []; selectedItems.forEach(function(item) { result.push([ item.entityId, item.id ]); }); this.inputNode.value = JSON.stringify(result); }; window.MPFEntitySelector = MPFEntitySelector; })(); })(); //# sourceMappingURL=script.js.map