1(globalThis.webpackChunkdiscours_io_frontend=globalThis.webpackChunkdiscours_io_frontend||[]).push([[711],{1604(e){e.exports=function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/dist/",t(t.s=1)}([function(e,t,n){"use strict";function o(e){return!b.some(t=>null!==e&&e.startsWith(t))&&f.test(e)}function i(e,t,n){return["<",t,' class="',n,'">',e,"</",t,">"].join("")}function r(e){return"<"===e}function a(e){return"&"===e}function s(e){return";"===e}function c(e){return y.test(e)}function l(e){return v.test(e)}function d(e,t,n){return e.push(t),e.length>n&&e.shift(),e.length!==n?null:e.join("")}function u(e,t){let n={mode:S,currentWord:[],words:[]},o=function(e,t){let n=new Map;if(null===t)return n;for(let o of t){let t;for(;null!==(t=o.exec(e));){if(n.has(t.index))throw new Error("One or more block expressions result in a text sequence that overlaps. Current expression: "+o.toString());n.set(t.index,t.index+t[0].length)}}return n}(e,t),i=!!o.size,d=!1,u=-1;for(let t=0;t<e.length;t++){var m=e[t];if(i){u===index&&(u=-1,d=!1);let e=0;if(o.has(index)&&(d=!0,u=e=o.get(index)),d){n.currentWord.push(m),n.mode=S;continue}}switch(n.mode){case S:r(m)?p(n,"<",A):a(m)?p(n,m,C):c(m)?p(n,m,E):l(m)&&(0===n.currentWord.length||l(n.currentWord[n.currentWord.length-1]))?n.currentWord.push(m):p(n,m,S);break;case A:">"===m?(n.currentWord.push(m),n.words.push(n.currentWord.join("")),n.currentWord=[],n.mode=c(m)?E:S):n.currentWord.push(m);break;case E:r(m)?p(n,m,A):a(m)?p(n,m,C):c(m)?n.currentWord.push(m):p(n,m,S);break;case C:if(r(m))p(n,m,A);else if(c(m))p(n,m,E);else if(s(m)){let e=!0;if(0!==n.currentWord.length&&(n.currentWord.push(m),n.words.push(n.currentWord.join("")),n.words.length>2&&c(n.words[n.words.length-2])&&c(n.words[n.words.length-1]))){let t=n.words[n.words.length-2],o=n.words[n.words.length-1];n.words.splice(n.words.length-2,2),n.currentWord=[(t+o).split()],n.mode=E,e=!1}e&&(n.currentWord=[],n.mode=S)}else l(m)?n.currentWord.push(m):p(n,m,S)}}return 0!==n.currentWord.length&&n.words.push(n.currentWord.join("")),n.words}function p(e,t,n){0!==e.currentWord.length&&e.words.push(e.currentWord.join("")),e.currentWord=[t],e.mode=n}n.r(t);class m{constructor(e,t,n){this.startInOld=e,this.startInNew=t,this.size=n}get endInOld(){return this.startInOld+this.size}get endInNew(){return this.startInNew+this.size}}class g{constructor(){this.blockSize=0,this.repeatingWordsAccuracy=0,this.ignoreWhitespaceDifferences=!1}}const f=/^\s*<\/?[^>]+>\s*$/,h=/<[^\s>]+/,y=/^(\s| )+$/,v=/[\w\#@]+/,b=["<img"];class I{constructor(e,t,n,o,i,r,a){this.oldWords=e,this.newWords=t,this.startInOld=n,this.endInOld=o,this.startInNew=i,this.endInNew=r,this.options=a}indexNewWords(){this.wordIndices=new Map;let e=[];for(let t=this.startInNew;t<this.endInNew;t++){let n=d(e,this.normalizeForIndex(this.newWords[t]),this.options.blockSize);null!==n&&(this.wordIndices.has(n)?this.wordIndices.get(n).push(t):this.wordIndices.set(n,[t]))}}normalizeForIndex(e){return e=function(e){return o(e)?function(e){return h.exec(e)[0]+(e.endsWith("/>")?"/>":">")}(e):e}(e),this.options.IgnoreWhiteSpaceDifferences&&c(e)?" ":e}findMatch(){if(this.indexNewWords(),this.removeRepeatingWords(),0===this.wordIndices.length)return null;let e=this.startInOld,t=this.startInNew,n=0,o=new Map;const i=this.options.blockSize;let r=[];for(let a=this.startInOld;a<this.endInOld;a++){let s=d(r,this.normalizeForIndex(this.oldWords[a]),i);if(null===s)continue;let c=new Map;if(this.wordIndices.has(s)){for(let r of this.wordIndices.get(s)){let s=(o.has(r-1)?o.get(r-1):0)+1;c.set(r,s),s>n&&(e=a-s-i+2,t=r-s-i+2,n=s)}o=c}else o=c}
1return 0!==n?new m(e,t,n+i-1):null}removeRepeatingWords(){let e=this.newWords.length+this.options.repeatingWordsAccuracy,t=Array.from(this.wordIndices.entries()).filter(t=>t[1].length>e).map(e=>e[0]);for(let e of t)this.wordIndices.delete(e)}}class w{constructor(e,t,n,o,i){this.action=e,this.startInOld=t,this.endInOld=n,this.startInNew=o,this.endInNew=i}}var S=0,A=1,E=2,C=3;const T=new Map([["</strong>",0],["</em>",0],["</b>",0],["</i>",0],["</big>",0],["</small>",0],["</u>",0],["</sub>",0],["</strike>",0],["</s>",0]]),k=/<((strong)|(b)|(i)|(em)|(big)|(small)|(u)|(sub)|(sup)|(strike)|(s))[\>\s]+/gi;class x{constructor(e,t){this.content=[],this.newText=t,this.oldText=e,this.specialTagDiffStack=[],this.newWords=[],this.oldWords=[],this.matchGranularity=0,this.blockExpressions=[],this.repeatingWordsAccuracy=1,this.ignoreWhiteSpaceDifferences=!1,this.orphanMatchThreshold=0}build(){if(this.oldText===this.newText)return this.newText;this.splitInputsIntoWords(),this.matchGranularity=Math.min(4,this.oldWords.length,this.newWords.length);let e=this.operations();for(let t of e)this.performOperation(t);return this.content.join("")}addBlockExpression(e){this.blockExpressions.push(e)}splitInputsIntoWords(){this.oldWords=u(this.oldText,this.blockExpressions),this.oldText=null,this.newWords=u(this.newText,this.blockExpressions),this.newText=null}performOperation(e){switch(e.action){case 0:this.processEqualOperation(e);break;case 1:this.processDeleteOperation(e,"diffdel");break;case 2:this.processInsertOperation(e,"diffins");break;case 3:break;case 4:this.processReplaceOperation(e)}}processReplaceOperation(e){this.processDeleteOperation(e,"diffmod"),this.processInsertOperation(e,"diffmod")}
1processInsertOperation(e,t){let n=this.newWords.filter((t,n)=>n>=e.startInNew&&n<e.endInNew);this.insertTag("ins",t,n)}processDeleteOperation(e,t){let n=this.oldWords.filter((t,n)=>n>=e.startInOld&&n<e.endInOld);this.insertTag("del",t,n)}processEqualOperation(e){let t=this.newWords.filter((t,n)=>n>=e.startInNew&&n<e.endInNew);this.content.push(t.join(""))}insertTag(e,t,n){for(;n.length;){let r=this.extractConsecutiveWords(n,e=>!o(e)),a="",s=!1;if(0!==r.length){let n=i(r.join(""),e,t);this.content.push(n)}else{if(k.test(n[0])){if(this.specialTagDiffStack.push(n[0]),a='<ins class="mod">',"del"===e)for(n.shift();n.length>0&&k.test(n[0]);)n.shift()}else if(T.has(n[0])){let t=0===this.specialTagDiffStack.length?null:this.specialTagDiffStack.pop();if(null!==t&&t===n[0].replace(/\//g,"")&&(a="</ins>",s=!0),"del"===e)for(n.shift();n.length>0&&T.has(n[0]);)n.shift()}if(0===n.length&&0===a.length)break;this.content.push(s?a+this.extractConsecutiveWords(n,o).join(""):this.extractConsecutiveWords(n,o).join("")+a)}}}extractConsecutiveWords(e,t){let n=null;for(let o=0;o<e.length;o++){let i=e[o];if(0===o&&" "===i&&(e[o]=" "),!t(i)){n=o;break}}if(null!==n){let t=e.filter((e,t)=>t>=0&&t<n);return n>0&&e.splice(0,n),t}{let t=e.filter((t,n)=>n>=0&&n<e.length);return e.splice(0,e.length),t}}operations(){let e=0,t=0,n=[],o=this.matchingBlocks();o.push(new m(this.oldWords.length,this.newWords.length,0));let i=this.removeOrphans(o);for(let o of i){let i,r=e===o.startInOld,a=t===o.startInNew;3!=(i=r||a?r&&!a?2:r?3:1:4)&&n.push(new w(i,e,o.startInOld,t,o.startInNew)),0!==o.length&&n.push(new w(0,o.startInOld,o.endInOld,o.startInNew,o.endInNew)),e=o.endInOld,t=o.endInNew}return n}*removeOrphans(e){let t=null,n=null;for(let o of e){if(null===n){t=new m(0,0,0),n=o;continue}if(t.endInOld===n.startInOld&&t.endInNew===n.startInNew||n.endInOld===o.startInOld&&n.endInNew===o.startInNew){yield n,t=n,n=o;continue}let e=(e,t)=>e+t.length,i=this.oldWords.slice(t.endInOld,o.startInOld).reduce(e,0),r=this.newWords.slice(t.endInNew,o.startInNew).reduce(e,0);this.newWords.slice(n.startInNew,n.endInNew).reduce(e,0)>Math.max(i,r)*this.orphanMatchThreshold&&(yield n),t=n,n=o}yield n}matchingBlocks(){let e=[];return this.findMatchingBlocks(0,this.oldWords.length,0,this.newWords.length,e),e}findMatchingBlocks(e,t,n,o,i){let r=this.findMatch(e,t,n,o);null!==r&&(e<r.startInOld&&n<r.startInNew&&this.findMatchingBlocks(e,r.startInOld,n,r.startInNew,i),i.push(r),r.endInOld<t&&r.endInNew<o&&this.findMatchingBlocks(r.endInOld,t,r.endInNew,o,i))}findMatch(e,t,n,o){for(let i=this.matchGranularity;i>0;i--){let r=new g;r.blockSize=i,r.repeatingWordsAccuracy=this.repeatingWordsAccuracy,r.ignoreWhitespaceDifferences=this.ignoreWhiteSpaceDifferences;let a=new I(this.oldWords,this.newWords,e,t,n,o,r).findMatch();if(null!==a)return a}return null}}x.execute=function(e,t){return new x(e,t).build()},t.default=x},function(e,t,n){e.exports=n(0)}])},6823(e,t,n){"use strict";function o(e){const t=e.includes("?")?"&":"?";return`${e}${t}editorProtocol=${i}`}n.d(t,{NP:()=>r,Wu:()=>o,iv:()=>i});const i="2",r="X-Editor-Protocol"},13272(e,t,n){"use strict";function o(e,...t){if(!window.asteroid||"function"!=typeof window.asteroid.call)return Promise.reject(new Error("Asteroid unavailable"));const n=window.asteroid.call(e,...t);return n&&n.result&&"function"==typeof n.result.then?n.result:n&&"function"==typeof n.then?n:Promise.resolve(n)}n.d(t,{F:()=>o})},18942(){var e=function(e){var t=parseInt(e.offsetHeight/800);if(t>9)return Array.from({length:t},function(t,n){var o=n+1,i=document.createElement("span");return i.className="lit-pager",i.style.top=800*o+"px",i.textContent=String(o),e.parentNode.insertBefore(i,e.nextSibling),i})},t=function(t){return function(e){var t=e.querySelectorAll("h1, h2, h3, h4, h5, h6, .title");if(t.length>2){var n='<div class="content-spoiler tw:mb-section"><details><summary><h3 class="site-nav">Ðглавление <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path d="M13.025 1l-2.847 2.828 6.176 6.176h-16.354v3.992h16.354l-6.176 6.176 2.847 2.828 10.975-11z"/></svg></h3></summary><ul id="book-contents" class="book-contents"></ul></details></div>',o=e.firstElementChild;o&&"IMG"===o.tagName?o.insertAdjacentHTML("afterend",n):e.insertAdjacentHTML("afterbegin",n);var i=document.getElementById("book-contents");Array.from(t).forEach(function(e,t){if(e.setAttribute("id","heading-"+t),i){var n=document.createElement("li"),o=document.createElement("a");o.href="#heading-"+t,o.className="anchor-link",o.textContent=e.textContent,n.appendChild(o),i.appendChild(n)}})}}(t),e(t)};angular.module("discours.directives").directive("book",["$log","$timeout","$interval","$compile","loginService",(n,o,i,r,a)=>({restrict:"A",link(n,o,s){function c(){m.forEach(function(e){e.remove()}),m=[]}function l(t){!g&&"undefined"!=typeof ResizeObserver&&t.querySelector(".pdf-viewer-container[data-
1pdf-src]")&&(g=new ResizeObserver(function(){!n.$$destroyed&&t.isConnected&&(c(),m=e(t)||[])})).observe(t)}var d=s.disclaimer,u=a.isLoggedIn(),p=null,m=[],g=null;(d||!d&&u)&&n.$watch(s.ngBindHtml||s.ngBind,function(e){p&&(i.cancel(p),p=null);var a=o[0],s=a.querySelectorAll("img");if(s.length>0){var d=[],u=[];Array.from(s).forEach(function(e){e.src&&d.push(e.src)});for(var g=0;g<d.length;g++){var f=new Image;f.onload=function(e){return function(){u.push(e)}}(d[g]),f.src=d[g]}p=i(function(){u.length===d.length&&(i.cancel(p),p=null,c(),m=t(a)||[],l(a),r(o.contents())(n))},1e3)}else c(),m=t(a)||[],l(a),r(o.contents())(n)}),n.$on("$destroy",function(){g&&g.disconnect(),c(),p&&(i.cancel(p),p=null)})}})])},23660(){!function e(t){try{var n=document.querySelector("[ng-app]")||document.body,o=angular.element(n).injector();if(!o)return t<5?void setTimeout(function(){e(t+1)},50*Math.pow(2,t)):void 0;var i=o.get("$templateCache");i.put("/pages/expo/expoMainPart.html",'<ng-include src="\'/pages/other/error.html\'" ng-if="post.status === 404" ng-init="$root.statusCode = post.status" ></ng-include> <request-contribution ng-if="isLoggedIn && !post.editable && post.slug && post.type === \'Literature\'" document-name="\'content-item:\' + post.slug" opened="requestContribution.opened" on-close="requestContribution.opened = false" on-sent-change="requestContribution.alreadySent = sent" ></request-contribution> <div class="expo-main-wrapper" ng-if="post.title"> <div class="continue-reading" ng-if="continueReadingPos"> <button type="button" class="continue-reading__btn" ng-click="scrollToContinue()"> {{ \'ÐÑодолжиÑÑ ÑÑение\' | t }} â </button> <button type="button" class="continue-reading__close" ng-click="dismissContinue()" aria-label="{{ \'ÐакÑÑÑÑ\' | t }}" > × </button> </div> <update-meta title="{{ ::((post.seo.title || post.title) | stripTags) }}"></update-meta> <update-meta name="description" content="{{ ::((post.seo.description || post.media[0].literatureBody || post.body || post.media[0].body) | stripTagsAndTruncate: 160) }}" ></update-meta> <update-meta name="keywords" ng-if="!post.seo.keywords" content="{{ ::post.title }}, {{ ::post.category }}, {{ ::tags() }}, {{ \'ÐиÑкÑÑÑ\' | t }}, Discours.io" ></update-meta> <update-meta name="keywords" ng-if="post.seo.keywords" content="{{ ::post.seo.keywords }}" ></update-meta> <update-meta property="og:title" content="{{ ::post.title }}"></update-meta> <update-meta property="og:description" content="{{ ::((post.media[0].literatureBody || post.body || post.media[0].body) | stripTagsAndTruncate: 500) }}" ></update-meta> <update-meta property="article:publisher" content="https://www.facebook.com/discoursio" ></update-meta> <update-meta property="article:author" content="https://www.facebook.com/discoursio" ></update-meta> <update-meta property="og:type" content="article"></update-meta> <update-meta property="og:image" content="{{ ::(post.socialImageId | imageUrl) }}" ng-if="post.socialImageId" ></update-meta> <update-meta property="og:image" content="{{ ::(post.thumborId | imageUrl: 900:512) }}" ng-if="post.thumborId && !post.socialImageId" ></update-meta> <update-meta name="twitter:card" content="summary_large_image" ng-if="post.thumborId" ></update-meta> <div class="social social--aside" ng-if="!post.preview"> <div class="social__wrapper"> <div class="social-buttons-side" ng-controller="SocialSelectionCtrl as $ctrl"> <div class="social-buttons-side__btn-wrapper"> <a class="social-vk" role="button" tabindex="0" ng-click="$ctrl.openVK(null)" aria-label="{{ \'ÐоделиÑÑÑÑ Ð² VK\' | t }}" > <span class="help-text">{{ \'ÐоделиÑÑÑÑ Ð² VK\' | t }}</span> <i class="fab fa-vk fa-fw"></i> </a> </div> <div class="social-buttons-side__btn-wrapper"> <a class="social-fb" role="button" tabindex="0" ng-click="$ctrl.openFB(null)" aria-label="{{ \'ÐоделиÑÑÑÑ Ð² Facebook\' | t }}" > <span class="help-text">{{ \'ÐоделиÑÑÑÑ Ð² Facebook\' | t }}</span> <i class="fab fa-facebook-f fa-fw"></i> </a> </div> <div class="social-buttons-side__btn-wrapper"> <a class="social-twitter" role="button" tabindex="0" ng-click="$ctrl.openTwitter(null)" aria-label="{{ \'ÐоделиÑÑÑÑ Ð² X (Twitter)\' | t }}" > <span class="help-text">{{ \'ÐоделиÑÑÑÑ Ð² X (Twitter)\' | t }}</span> <i class="fab fa-twitter fa-fw"></i> </a> </div> <div class="social-buttons-side__btn-wrapper"> <a class="social-telegram" role="button" tabindex="0" ng-click="$ctrl.openTelegram(null)" aria-label="{{ \'ÐоделиÑÑÑÑ Ð² Telegram\' | t }}" > <span class="help-text">{{ \'ÐоделиÑÑÑÑ Ð² Telegram\' | t }}</span> <i class="fab fa-telegram-plane"></i> </a> </div> </div> </div> </div> <div class="ds-container content" ng-show="post"> <table class="print-table" role="presentation"> <thead class="print-colophon" aria-hidden="true"> <tr> <th> <div class="print-colophon__left"> <span class="print-colophon__title">{{ ::post.title }}</span> <span class="print-colophon__url">discours.io{{ ::post.link }}</span> </div> <div class="print-colophon__right"> <span class="print-colophon__author" ng-if="post.author">{{ ::post.author }}</span> discours.io </div> </th> </tr> </thead> <tbody> <tr> <td> <div class="expo-item progress"> <img class="print-logo" src="/images/logo.svg" alt="Discours" width="120" height="30" /> <div class="tw:row-flex"> <div class="ds-content-col">
1 <div class="post-main-spacer tw:mt-section tw:max-md:hidden"></div> <div class="author-category" ng-class="{\'no-author\': !post.author && !post.application.name }" > <span class="category" ><a href="{{ ::post.categoryLink }}" ng-attr-target="{{ post.preview ? \'_blank\' : undefined }}" >{{ ::post.category | t }}</a ><span ng-if="!post.createdBy && !post.category && !post.preview && isLoggedIn" > <em>({{ \'заÑвка\' | t }})</em></span ></span ><span class="author" ng-if="post.author || post.application.name" ><a href="{{ ::post.authorLink }}" ng-if="post.authorLink" >{{ ::post.author }}</a ><span ng-if="!post.authorLink">{{ ::post.author }}</span ><span ng-if="post.application.name && !post.author" >{{ ::post.application.name }}</span ></span > </div> <h1 class="title"> {{ ::post.title }} <span class="title-icons" ><a class="icon-link title-icon" ng-href="/edit{{ ::post.link }}" ng-if="post.editable && !post.preview" aria-label="{{ \'РедакÑиÑоваÑÑ\' | t }}" editor-prefetch-on-hover ><i class="fas fa-pencil-alt" aria-hidden="true"></i ><span class="custom-tooltip" aria-hidden="true" >{{ \'РедакÑиÑоваÑÑ\' | t }}</span ></a ><button class="icon-link title-icon" type="button" ng-if="!post.preview && isLoggedIn && !post.editable && post.slug && post.type === \'Literature\'" ng-disabled="requestContribution.alreadySent" ng-click="requestContribution.opened = true" ng-attr-aria-label="{{ requestContribution.alreadySent ? (\'ÐоÑÑÑп Ñже запÑоÑен\' | t) : (\'ÐапÑоÑиÑÑ Ð´Ð¾ÑÑÑп к ÑедакÑиÑованиÑ\' | t) }}" > <i class="fas fa-handshake" aria-hidden="true"></i> <span class="custom-tooltip" aria-hidden="true" >{{ requestContribution.alreadySent ? (\'ÐоÑÑÑп Ñже запÑоÑен\' | t) : (\'ÐапÑоÑиÑÑ Ð´Ð¾ÑÑÑп к ÑедакÑиÑованиÑ\' | t) }}</span ></button ><a class="icon-link title-icon" ng-href="https://api.discours.io/admin/resources/publications/records/{{ ::post._id }}/edit" ng-if="isAdmin" aria-label="{{ \'ÐÑкÑÑÑÑ Ð² админке\' | t }}" ><i class="fas fa-wrench" aria-hidden="true"></i ><span class="custom-tooltip" aria-hidden="true" >{{ \'ÐÑкÑÑÑÑ Ð² админке\' | t }}</span ></a ></span > </h1> </div> </div> <div class="image-gallery-section tw:overflow-x-hidden" ng-if="post.type === \'Image\'"> <div class="carousel-hover-zone"> <div class="carousel-container tw:relative tw:md:w-9/12 tw:md:ml-offset-1" expo-gallery-viewer onselectstart="return false" ondragstart="return false;" > <ul rn-carousel="rn-carousel" rn-carousel-controls="rn-carousel-controls" rn-carousel-indicator="rn-carousel-indicator" rn-carousel-transition="none" rn-carousel-index="$ctrl.activeIndex" rn-carousel-controls-allow-loop="true" > <li ng-repeat="mediaItem in post.media track by $index"> <preload-image ng-if="mediaItem.thumborId && $index === 0" href="{{ ::(mediaItem.thumborId | imageUrl: 1024) }}" imagesrcset="{{ ::(mediaItem.thumborId | imageUrl: 720) }} 720w, {{ ::(mediaItem.thumborId | imageUrl: 1024) }} 1024w, {{ ::(mediaItem.thumborId | imageUrl: 1500) }} 1500w, {{ ::(mediaItem.thumborId | imageUrl: 2048) }} 2048w, {{ ::(mediaItem.thumborId | imageUrl: 2250) }} 2250w" imagesizes="(min-width: 992px) 1024px, (min-width: 768px) 90vw, 100vw" fetchpriority="high" ></preload-image> <img ng-if="mediaItem.thumborId && $index === 0" class="expo-gallery-img" ng-src="{{ ::(mediaItem.thumborId | imageUrl: 1024) }}" ng-srcset="{{ ::(mediaItem.thumborId | imageUrl: 720) }} 720w, {{ ::(mediaItem.thumborId | imageUrl: 1024) }} 1024w, {{ ::(mediaItem.thumborId | imageUrl: 1500) }} 1500w, {{ ::(mediaItem.thumborId | imageUrl: 2048) }} 2048w, {{ ::(mediaItem.thumborId | imageUrl: 2250) }} 2250w" fetchpriority="high" loading="eager" decoding="async" ng-image-onload sizes="(min-width: 992px) 1024px, (min-width: 768px) 90vw, 100vw" alt="{{ ::(mediaItem.title ? mediaItem.title + \' / \' : \'\') }}{{ ::post.title }} â discours.io" title="{{ ::(mediaItem.title ? mediaItem.title + \' / \' : \'\') }}{{ ::post.title }} â discours.io" data-work-title="{{ ::mediaItem.title }}" /> <img ng-if="mediaItem.thumborId && $index > 0" class="expo-gallery-img" ng-src="{{ ::(mediaItem.thumborId | imageUrl: 1024) }}" ng-srcset="{{ ::(mediaItem.thumborId | imageUrl: 720) }} 720w, {{ ::(mediaItem.thumborId | imageUrl: 1024) }} 1024w, {{ ::(mediaItem.thumborId | imageUrl: 1500) }} 1500w, {{ ::(mediaItem.thumborId | imageUrl: 2048) }} 2048w, {{ ::(mediaItem.thumborId | imageUrl: 2250) }} 2250w" fetchpriority="auto" loading="lazy" decoding="async" ng-image-onload sizes="(min-width: 992px) 1024px, (min-width: 768px) 90vw, 100vw" alt="{{ ::(mediaItem.title ? mediaItem.title + \' / \' : \'\') }}{{ ::post.title }} â discours.io" title="{{ ::(mediaItem.title ? mediaItem.title + \' / \' : \'\') }}{{ ::post.title }} â discours.io" data-work-title="{{ ::mediaItem.title }}" /> </li> </ul> </div> </div> <div class="expo-counter" ng-show="post.media.length >
1 1" aria-live="polite" aria-atomic="true" > {{ ($ctrl.activeIndex || 0) + 1 }} / {{ post.media.length }} </div> <div class="ds-content-col tw:relative tw:text-center" onselectstart="return false" ondragstart="return false;" > <slick class="carousel-thumbs" ng-show="post.media.length > 1" slides-to-show="8" slides-to-scroll="2" infinite="false" init-onload="init-onload" data="post.media" > <div ng-repeat="mediaItem in post.media track by $index" ng-if="mediaItem.thumborId" ng-class="{\'carousel-active\': $ctrl.activeIndex == $index }" ng-click="$ctrl.activeIndex = $index" ng-keydown="$ctrl.onThumbKeydown($event, $index)" ng-style="{ \'background-image\': \'url(\' + (mediaItem.thumborId | imageUrl: 150) + \')\' }" role="button" tabindex="0" ng-attr-aria-label="{{ ::(mediaItem.title || ((\'РабоÑа\' | t) + \' \' + ($index + 1))) }}" ng-attr-aria-selected="{{ $ctrl.activeIndex == $index }}" > <img ng-src="{{ ::(mediaItem.thumborId | imageUrl: 150) }}" decoding="async" ng-attr-loading="{{ $index < 5 ? \'eager\' : \'lazy\' }}" width="150" height="84" alt="{{ ::(mediaItem.title ? mediaItem.title + \' / \' : \'\') }}{{ ::post.title }} {{ \'â миниаÑÑÑа\' | t }}" title="{{ ::(mediaItem.title ? mediaItem.title + \' / \' : \'\') }}{{ ::post.title }} {{ \'â миниаÑÑÑа\' | t }}" /> </div> </slick> </div> </div> <div class="tw:row-flex" ng-if="post.type === \'Video\'" post-images="post-images"> <div class="ds-content-col tw:relative expo-video-carousel-frame"> <ul rn-carousel="rn-carousel" rn-carousel-controls="rn-carousel-controls" rn-carousel-indicator="rn-carousel-indicator" rn-carousel-buffered="rn-carousel-buffered" rn-carousel-index="$ctrl.activeIndex" > <li ng-repeat="mediaItem in post.media track by $index"> <div class="video-wrapper direct-video-wrapper" ng-if=" mediaItem.videoUrl && post.preview && !mediaItem.youtubeId && !mediaItem.vimeoId " > <video class="expo-video-player" controls playsinline preload="metadata" ng-src="{{ mediaItem.videoUrl }}" ></video> </div> <div class="video-wrapper youtube-lazy" ng-if="mediaItem.youtubeId" ng-class="{\'youtube-playing\': mediaItem.ytPlaying}" > <div class="youtube-thumbnail" ng-if="!mediaItem.ytPlaying" ng-click="playYouTube(mediaItem, $event)" ng-keydown="$ctrl.onVideoThumbnailKeydown($event, mediaItem, \'youtube\')" role="button" tabindex="0" aria-label="{{ \'ÐоÑпÑоизвеÑÑи видео\' | t }}" > <img ng-src="https://img.youtube.com/vi/{{ mediaItem.youtubeId }}/maxresdefault.jpg" alt="{{ post.title }}" aria-hidden="true" loading="lazy" decoding="async" ng-image-onload ng-attr-img-fallback="https://img.youtube.com/vi/{{ mediaItem.youtubeId }}/hqdefault.jpg" img-fallback-max-width="120" /> <span class="youtube-play-btn" aria-hidden="true"> <svg viewBox="0 0 68 48" width="68" height="48"> <path d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="#f00" /> <path d="M 45,24 27,14 27,34" fill="#fff" /> </svg> </span> </div> </div> <div class="video-wrapper vimeo-wrapper vimeo-lazy" ng-if="mediaItem.vimeoId" ng-class="{\'vimeo-playing\': mediaItem.vimeoPlaying}" > <div class="vimeo-thumbnail" ng-if="!mediaItem.vimeoPlaying" ng-click="playVimeo(mediaItem, $event)" ng-keydown="$ctrl.onVideoThumbnailKeydown($event, mediaItem, \'vimeo\')" role="button" tabindex="0" aria-label="{{ \'ÐоÑпÑоизвеÑÑи видео\' | t }}" > <img ng-src="{{ getVimeoThumbnailUrl(mediaItem) }}" alt="{{ post.title }}" aria-hidden="true" loading="lazy" decoding="async" ng-image-onload img-fallback="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22/>" style="background: #1a1a2e" /> <span class="vimeo-play-btn" aria-hidden="true"> <svg viewBox="0 0 68 48" width="68" height="48"> <path d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="#1ab7ea" /> <path d="M 45,24 27,14 27,34" fill="#fff" /> </svg> </span> </div> </div> </li> </ul> </div> </div> <div class="tw:row-flex" ng-if="post.type == \'Music\'" post-images="post-images"> <div class="ds-content-col tw:relative"> <div class="audio-wrapper"> <div class="audio-container"> <div class="audio-img" ng-if="post.thumborId"> <preload-image href="{{ ::(post.thumborId | imageUrl: 320:320) }}" imagesrcset="{{ ::(post.thumborId | imageUrl: 320:320) }} 320w, {{ ::(post.thumborId | imageUrl: 640:640) }} 640w, {{ ::(post.thumborId | imageUrl: 960:960) }} 960w, {{ ::(post.thumborId | imageUrl: 1280:1280) }} 1280w" imagesizes="(max-width: 669px) 100vw, 320px" fetchpriority="high" ></preload-image> <img class="ligthbox-img" ng-src="{{ ::(post.thumborId | imageUrl: 320:320) }}" ng-srcset="{{ ::(post.thumborId | imageUrl: 320:320) }} 320w, {{ ::(post.thumborId | imageUrl: 640:640) }} 640w, {{ ::(post.thumborId | imageUrl: 960:960) }} 960w, {{ ::(post.thumborId | imageUrl: 1280:1280) }} 1280w" width="320" height="320" fetchpriority="high" loading="eager" decoding="async" ng-image-onload sizes="(max-width: 669px) 100vw, 320px" alt="{{ ::post.title }}" title="{{ ::post.title }}" /> </div> <div class="audio-player-list"> <div class="player" ng-if="post.media.length === 1"> <div class="player-title" ng-if="post.media"> {{ (post._id === $root.currentMusicPostId && currentSong.title) || post.media[0].title }} </div>
1 <div class="player-controls"> <button type="button" class="player-btn" ng-click="playPauseMain()" ng-if="currentPlayer.playing" aria-label="{{ \'ÐаÑза\' | t }}" > <i class="fas fa-pause fa-2x fa-fw" aria-hidden="true"></i> </button> <button type="button" class="player-btn" ng-click="playPauseMain()" ng-if="!currentPlayer.playing" aria-label="{{ \'ÐоÑпÑоизвеÑÑи\' | t }}" > <i class="fas fa-play fa-2x fa-fw" aria-hidden="true"></i> </button> <div class="player-progress" ng-if="currentPlayer"> <rzslider rz-slider-model="currentPlayer.currentTime" rz-slider-options="sliderOptions" ></rzslider> </div> <div class="player-progress player-progress--idle" ng-if="!currentPlayer" > <button type="button" class="player-idle-track" idle-player-track="startAtFraction($fraction)" aria-label="{{ \'ÐоÑпÑоизвеÑÑи Ñ Ð²ÑбÑанного меÑÑа\' | t }}" > <span class="player-idle-track__rail" aria-hidden="true"></span> <span class="player-idle-track__head" aria-hidden="true"></span> </button> </div> <span class="position" ng-if="currentPlayer" >{{ currentPlayer.currentTime | secondsToString }}<span ng-if="currentPlayer.duration" >/{{ currentPlayer.duration | secondsToString }}</span ></span > <span class="position" ng-if="!currentPlayer">00:00</span> </div> </div> <ul class="other-songs" ng-if="post.type === \'Music\' && post.media.length > 1" > <li ng-repeat="mediaItem in post.media track by $index" ng-class="{\'is-current\': musicPlayerService.currentPlayer(mediaItem)}" > <button type="button" class="track-control" ng-click="playPlaylist(post.media, $index)" aria-label="{{ musicPlayerService.currentPlayer(mediaItem).playing ? (\'ÐаÑза\' | t) : (\'ÐоÑпÑоизвеÑÑи\' | t) }}: {{ ::mediaItem.title }}" > <i class="fas fa-fw" ng-class="{\'fa-pause\': musicPlayerService.currentPlayer(mediaItem).playing, \'fa-play\': !musicPlayerService.currentPlayer(mediaItem).playing}" aria-hidden="true" ></i> </button> <div class="track-body"> <span class="track-title">{{ ::mediaItem.title }}</span> <div class="track-playback" ng-if="currentPlayer && musicPlayerService.currentPlayer(mediaItem)" > <div class="player-progress player-progress--track"> <rzslider rz-slider-model="currentPlayer.currentTime" rz-slider-options="sliderOptions" ></rzslider> </div> <span class="position" >{{ currentPlayer.currentTime | secondsToString }}<span ng-if="currentPlayer.duration" >/{{ currentPlayer.duration | secondsToString }}</span ></span > </div> </div> </li> </ul> </div> </div> </div> </div> </div> <div class="item-info"> <div class="tw:row-flex"> <div class="ds-content-col" ng-if="post.type !== \'Music\' && post.media[$ctrl.activeIndex] && post.media[$ctrl.activeIndex].title" > <p class="h3 tw:font-bold" id="expo-modal-label"> {{ post.media[$ctrl.activeIndex].title }} </p> </div> </div> </div> <div class="tw:row-flex" ng-if="post.type === \'Literature\'"> <div class="post-content-col lit-wrapper ds-content-col" post-images="post-images" social-text="social-text" > <div class="expo-item-title-image-wrapper" ng-if="post.thumborId" ng-class="{\'is-image-loaded\': exp
1oTitleImageLoaded}" > <img class="expo-item-title-image fancybox-img" fancybox-img ng-src="{{ ::(post.thumborId | imageUrl: (post.coverImageWidth | heroBaseWidth)) }}" ng-srcset="{{ ::(post.thumborId | imageSrcset:\'hero\':null:post.coverImageWidth) }}" fetchpriority="high" loading="eager" decoding="async" sizes="(min-width: 768px) 66vw, 100vw" alt="{{ ::(post.imageCaption ? post.imageCaption : post.title + \' â \' + (\'лиÑеÑаÑÑÑа discours.io\' | t)) }}" title="{{ ::(post.imageCaption ? post.imageCaption : post.title + \' â \' + (\'лиÑеÑаÑÑÑа discours.io\' | t)) }}" ng-image-onload="expoTitleImageLoaded = true" /> </div> <p class="image-description" ng-if="post.thumborId && post.imageCaption" ng-bind-html="post.imageCaption | trustedHtml" ></p> <div class="lit" ng-bind-html="post.media[0].literatureBody | trustedHtml" pdf-viewer-hydrate footnote-text="footnote-text" post-images="post-images" book="book" disclaimer="{{ ::post.publishedAt }}" ></div> <side-banners types="[ \'discoursBest\', \'mailingList\', \'socialInPosts\', \'becomeAuthor\', \'ideaShare\', \'supportDiscours\', ]" post-type="\'literature\'" show-popular="true" ng-if="!post.preview" ></side-banners> </div> </div> <div class="tw:row-flex" ng-if=" post.type !== \'Literature\' && (post.media[$ctrl.activeIndex].body || post.body).length > 0 && (post.media[$ctrl.activeIndex].body || post.body) !== \'<p>undefined</p>\' " > <div class="ds-content-col"> <div class="expo-body open-post"> <div class="post-body" ng-bind-html="(post.media[$ctrl.activeIndex].body || post.body) | trustedHtml" post-images="post-images" disclaimer="{{ ::post.publishedAt }}" footnote-text="footnote-text" social-text="social-text" embed-resize ></div> </div> </div> </div> <div class="tw:row-flex" ng-if="!post.createdBy && isLoggedIn && !post.preview"> <div class="application tw:gutter-half tw:w-full tw:mb-2.5 tw:mt-2.5 tw:md:w-7/12 tw:md:ml-offset-2" > <p> <strong ng-if="post.createdAt">{{ \'ÐаÑа заÑвки:\' | t }}</strong> <span ng-if="post.createdAt" >{{ ::(post.createdAt | amDateFormat: \'D MMMM YYYY\') }}</span > </p> <p ng-if="isAdmin && !post.preview"> <strong ng-if="post.application.email">Email:</strong> {{ ::post.application.email }} </p> <p ng-if="!post.preview"> <strong ng-if="post.application.bio">{{ \'ÐвÑÐ¾Ñ Ð¾ Ñебе:\' | t }}</strong> {{ ::post.application.bio }} </p> </div> </div> <div class="footer-post tw:row-flex"> <div class="ds-content-col"> <hr class="tw:mt-2.5 tw:mb-5" /> <div class="post-meta-footer"> <div class="post-meta-footer__author"> <div class="author-title" ng-if="post.author || post.application.name"> <a href="{{ ::(post.authorLink || \'/\' + post.createdBy.path) }}" ng-if="(post.authorLink || post.createdBy.path) && post.author" >{{ ::post.author }}</a ><span ng-if="!post.authorLink && !post.createdBy.path && post.author" >{{ ::post.author }}</span ><span ng-if="!post.author">{{ ::post.application.name }}</span ><button type="button" class="message-author-icon" ng-if="isAuthor && post.createdBy && post.createdBy._id" message-author-btn author-id="post.createdBy._id" aria-label="{{ \'ÐапиÑаÑÑ ÑообÑение\' | t }}" > <i class="fas fa-envelope"></i ><span class="custom-tooltip" aria-hidden="true" >{{ \'ÐапиÑаÑÑ ÑообÑение\' | t }}</span ></button ><span ng-if="post.application && !post.publishedAt && post.postedAt && !post.preview && isLoggedIn" style="font-weight: normal" > <em>({{ \'заÑвка\' | t }})</em></span ><span class="tw:max-sm:hidden"> </span> </div> <div class="date-time"> <span class="time" ng-if="post.publishedAt" >{{ ::(post.publishedAt | amDateFormat: \'D MMMM YYYY\') }}</span ><span class="time" ng-if="!post.publishedAt && post.postedAt" >{{ ::(post.postedAt | amDateFormat: \'D MMMM YYYY\') }}</span ><span class="time" ng-if="!post.publishedAt && !post.postedAt && post.createdAt" >{{ ::(post.createdAt | amDateFormat: \'D MMMM YYYY\') }}</span > </div> </div> <div class="post-meta-footer__stats" ng-if="(!post.preview && canViewMetrics) || (isLoggedIn && !post.preview)" > <div class="counters" ng-if="::!post.preview && canViewMetrics"> <i class="df-views"></i>{{ ::post.views }} </div>
1 <rating-buttons ng-if="isLoggedIn && !post.preview" type="ContentItem" item="post" popover-placement="auto bottom-right" popover-class="rating-popover--open-material" id="voting" root-class="post-rating" ></rating-buttons> </div> </div> <div class="tw:mt-2.5 tw:mb-5" ng-if="post.tags.length"> <div class="tags-container"> <ul class="tags"> <li ng-repeat="tag in post.tags track by tag.slug"> <a href="/tags/{{ ::tag.slug }}" ng-attr-target="{{ post.preview ? \'_blank\' : undefined }}" >#{{ ::tag.title }}</a > </li> </ul> </div> </div> <div class="tw:mt-6" ng-if="!post.preview"> <donate-form is-on-item-page="true"></donate-form> </div> </div> </div> </div> </td> </tr> </tbody> </table> </div> </div>'),i.put("/pages/expo/index.html",'<ng-include src="\'/pages/other/error.html\'" ng-if="expoGenres && expoGenres.error && expoGenres.error.value" ng-init="$root.statusCode = expoGenres.error.value" ></ng-include> <div ng-hide="expoGenres && expoGenres.error && expoGenres.error.value"> <update-meta title="{{ ::title() }}"></update-meta> <update-meta name="description" content="{{ ::seoDescription() }}"></update-meta> <update-meta name="keywords" content="{{ \'Discours.io, ÑкÑпозиÑиÑ, иÑкÑÑÑÑво\' | t }}, {{ ::title() }}" ></update-meta> <update-meta property="og:title" content="{{ ::title() }}"></update-meta> <update-meta property="og:description" content="{{ ::seoDescription() }}"></update-meta> <div class="ds-container expo-container"> <div class="tw:row-flex"> <div class="tw:gutter-half tw:sm:w-3/12 tw:md:w-2/12 expo-column-menu-wrapper"> <div class="expo-column-menu"> <ul class="columns-menu filter no-graph"> <li ng-class="{ active: !routeParams.sort && !routeParams.filter }"> <a ng-click="updateParams(\'sort\', null)">{{ \'новое\' | t }}</a> </li> <li ng-class="{ active: routeParams.sort ==\'rating\' && !routeParams.filter }"> <a ng-click="updateParams(\'sort\', \'rating\')">{{ \'попÑлÑÑное\' | t }}</a> </li> </ul> <div class="genre-title">{{ \'ÐанÑÑ\' | t }}</div> <ul class="columns-menu no-graph"> <li ng-class="{ active: !routeParams.categorySlug }"> <a href="/expo/{{ routeParams.slug + routeQuery }}">{{ \'ÐÑе\' | t }}</a> </li> <li ng-repeat="expoGenre in expoGenres track by expoGenre.slug" ng-class="{ active: routeParams.categorySlug === expoGenre.slug }" > <a href="/expo/{{ routeParams.slug }}/{{ expoGenre.slug + routeQuery }}" >{{ ::(expoGenre.title | t) }}</a > </li> </ul> </div> </div> <div class="tw:gutter-half tw:sm:w-9/12 tw:md:w-10/12 tw:w-full"> <div> <div> <ul class="expo-menu"> <li ng-class="{ active: routeParams.slug === \'literature\' }"> <a href="/expo/literature{{ routeQuery }}">{{ \'ÐиÑеÑаÑÑÑа\' | t }}</a> </li> <li ng-class="{ active: routeParams.slug === \'image\' }"> <a href="/expo/image{{ routeQuery }}">{{ \'ÐалеÑеÑ\' | t }}</a> </li> <li ng-class="{ active: routeParams.slug === \'video\' }"> <a href="/expo/video{{ routeQuery }}">{{ \'Ðидео\' | t }}</a> </li> <li ng-class="{ active: routeParams.slug === \'music\' }"> <a href="/expo/music{{ routeQuery }}">{{ \'ÐÑзÑка\' | t }}</a> </li> </ul> </div> <div class="tw:mt-2.5"> <div class="expo-column" ng-class="{\'audio-column\': routeParams.slug === \'music\' }"> <div class="expo-item" ng-repeat="expoItem in expoItems track by expoItem._id" ng-class="{\'book-item\': expoItem.type == \'Literature\', \'video-item\': expoItem.type == \'Video\', \'audio-item\': expoItem.type == \'Music\', \'tw:sm:w-6/12 tw:md:w-4/12\': expoItem.type !== \'Music\' }" > <div class="expo-img-block" ng-if="expoItem.type == \'Video\' || expoItem.type == \'Music\'" > <a class="expo-img" href="{{ ::(expoItem.censoredLink || expoItem.link) }}"> <img ng-if="expoItem.thumborId" class="tw:block tw:max-w-full tw:h-auto" ng-attr-loading="lazy" ng-attr-decoding="async" ng-image-onload ng-attr-img-fallback="{{ ::expoItem.stubImg }}" sizes="(min-width: 1300px) 320px, (min-width: 1200px) 300px, (min-width: 768px) 240px, (min-width: 480px) 400px, 100vw" ng-src="{{ ::(expoItem.thumborId | imageUrl: 400) }}" ng-srcset="{{ ::(expoItem.thumborId | imageUrl: 240) }} 240w, {{ ::(expoItem.thumborId | imageUrl: 480) }} 480w, {{ ::(expoItem.thumborId | imageUrl: 720) }} 720w, {{ ::(expoItem.thumborId | imageUrl: 300) }} 300w, {{ ::(expoItem.thumborId | imageUrl: 600) }} 600w, {{ ::(expoItem.thumborId | imageUrl: 900) }} 900w, {{ ::(expoItem.thumborId | imageUrl: 320) }} 320w, {{ ::(expoItem.thumborId | imageUrl: 640) }} 640w, {{ ::(expoItem.thumborId | imageUrl: 960) }} 960w, {{ ::(expoItem.thumborId | imageUrl: 400) }} 400w, {{ ::(expoItem.thumborId | imageUrl: 800) }} 800w, {{ ::(expoItem.thumborId | imageUrl: 1200) }} 1200w" width="400" height="224" alt="{{ ::expoItem.title }}" title="{{ ::expoItem.title }}" /> <div ng-if="!expoItem.thumborId" class="tw:block tw:max-w-full tw:h-auto"> <img ng-src="{{ ::expoItem.stubImg }}" alt="{{ ::expoItem.title }}" class="article__stub-img" ng-image-onload decoding="async" loading="lazy" /> </div> </a> </div> <a class="expo-img" href="{{ ::(expoItem.censoredLink || expoItem.link) }}" ng-if="expoItem.type == \'Image\' || expoItem.type == \'Literature\'" > <img ng-if="expoItem.thumborId" class="tw:block tw:max-w-full tw:h-auto" ng-attr-loading="lazy" ng-attr-decoding="async" ng-image-onload ng-attr-img-fallback="{{ ::expoItem.stubImg }}" sizes="(min-width: 768px) 350px, (min-width: 480px) 400px, 100vw" ng-src="{{ ::(expoItem.thumborId | imageUrl: 400) }}" ng-srcset="{{ ::(expoItem.thumborId | imageUrl: 350) }} 350w, {{ ::(expoItem.thumborId | imageUrl: 700) }} 700w, {{ ::(expoItem.thumborId | imageUrl: 1050) }} 1050w, {{ ::(expoItem.thumborId | imageUrl: 400) }} 400w, {{ ::(expoItem.thumborId | imageUrl: 800) }} 800w, {{ ::(expoItem.thumborId | imageUrl: 1200) }} 1200w" width="400" height="224" alt="{{ ::expoItem.title }}" title="{{ ::expoItem.title }}" /> <div ng-if="!expoItem.thumborId" class="tw:block tw:max-w-full tw:h-auto"> <img ng-src="{{ ::expoItem.stubImg }}" alt="{{ ::expoItem.title }}" class="article__stub-img" ng-image-onload decoding="async" loading="lazy" /> </div> </a> <a href="{{ ::expoItem.categoryLink }}"> <div class="expo-genre-title">{{ ::(expoItem.category | t) }}</div></a > <div class="expo-title"> <a href="{{ ::expoItem.link }}">{{ ::expoItem.title }}</a> </div> <div class="expo-author-title white-bg"> <a href="{{ ::expoItem.authorLink }}">{{ ::expoItem.author }}</a> </div> </div> </div> </div> <div class="main-loadmore" ng-if="totalItems > expoItems.length">
1 <button class="loadmore" type="button" ng-click="loadMoreExpoItems()" ng-disabled="expoItemsLoading" ng-class="{\'is-loading\': expoItemsLoading }" aria-live="polite" aria-busy="{{ expoItemsLoading ? \'true\' : \'false\' }}" > <span class="loadmore__label">{{ \'ÐоказаÑÑ ÐµÑÑ\' | t }}</span> <span class="loadmore__loading"> <span class="loading-dots"></span> </span> </button> </div> </div> </div> </div> </div> </div>'),i.put("/pages/expo/item.html",'<div class="auth-required-screen" ng-cloak ng-if="apiOutage" role="status" aria-live="polite"> <update-meta title="{{ \'ÐлаÑÑоÑма обновлÑеÑÑÑ\' | t }}"></update-meta> <update-meta name="robots" content="noindex, nofollow"></update-meta> <div class="ds-container"> <div class="tw:w-full tw:md:w-6/12 tw:md:ml-offset-3 tw:text-center"> <div class="auth-required-content"> <i class="fas fa-sync auth-required-icon" aria-hidden="true"></i> <h2>{{ \'ÐлаÑÑоÑма обновлÑеÑÑÑ\' | t }}</h2> <p class="auth-required-description"> {{ \'ÐÑ ÑлÑÑÑаем ÐиÑкÑÑÑ â ÑкоÑо вÑÑ Ð·Ð°ÑабоÑÐ°ÐµÑ ÐµÑÑ Ð»ÑÑÑе.\' | t }}<br /> {{ \'ÐаглÑниÑе ÑÑÑÑ Ð¿Ð¾Ð·Ð¶Ðµ\' | t }} </p> <div class="auth-required-actions"> <button type="button" class="ds-btn ds-btn-primary" ng-click="retryAfterOutage()" ng-disabled="retrying" ng-attr-aria-busy="{{ retrying ? \'true\' : \'false\' }}" > <span ng-if="!retrying">{{ \'ÐопÑобоваÑÑ Ñнова\' | t }}</span> <span ng-if="retrying"> <i class="fas fa-spinner fa-spin" aria-hidden="true"></i> {{ \'ÐÑовеÑÑемâ¦\' | t }} </span> </button> <a href="/" class="auth-required-btn-secondary">{{ \'Ðа главнÑÑ\' | t }}</a> </div> <p class="auth-required-status"> {{ \'Ðогда вÑÑ Ð·Ð°ÑабоÑаеÑ, ÑÑÑаниÑа обновиÑÑÑ Ñама\' | t }} </p> </div> </div> </div> </div> <div class="auth-required-screen" ng-cloak ng-if="accessDenied"> <update-meta title="{{ \'Ðе ÑдаеÑÑÑ Ð¾ÑкÑÑÑÑ ÑÑÑаниÑÑ\' | t }}"></update-meta> <update-meta name="robots" content="noindex, nofollow"></update-meta> <div class="ds-container"> <div class="tw:w-full tw:md:w-6/12 tw:md:ml-offset-3 tw:text-center"> <div class="auth-required-content"> <i class="fas fa-lock auth-required-icon"></i> <h2>{{ \'Ðе ÑдаеÑÑÑ Ð¾ÑкÑÑÑÑ ÑÑÑаниÑÑ\' | t }}</h2> <p class="auth-required-description"> {{ \'Ðозможно, ÑÑÑаниÑÑ Ð½Ðµ ÑÑÑеÑÑвÑеÑ\' | t }}<br />{{ \'или к ней Ð½ÐµÑ Ð´Ð¾ÑÑÑпа\' | t }} </p> <div class="auth-required-actions"> <a href="/" class="ds-btn ds-btn-primary">{{ \'Ðа главнÑÑ\' | t }}</a> <button type="button" class="auth-required-btn-secondary" ng-if="!isLoggedIn" ng-click="openLoginModal()" > {{ \'ÐойÑи\' | t }} </button> <button type="button" class="auth-required-btn-secondary" ng-if="isLoggedIn && accessDeniedSlug" ng-disabled="requestContribution.alreadySent" ng-click="requestContribution.opened = true" ng-attr-aria-label="{{ requestContribution.alreadySent ? (\'ÐоÑÑÑп Ñже запÑоÑен\' | t) : (\'ÐапÑоÑиÑÑ Ð´Ð¾ÑÑÑп\' | t) }}" > <i class="fas fa-handshake" aria-hidden="true"></i> {{ requestContribution.alreadySent ? (\'ÐоÑÑÑп Ñже запÑоÑен\' | t) : (\'ÐапÑоÑиÑÑ Ð´Ð¾ÑÑÑп\' | t) }} </button> </div> </div> </div> </div> </div> <request-contribution ng-if="isLoggedIn && accessDenied && accessDeniedSlug" document-name="\'content-item:\' + accessDeniedSlug" opened="requestContribution.opened" on-close="requestContribution.opened = false" on-sent-change="requestContribution.alreadySent = sent" ></request-contribution> <div ng-if="post && !accessDenied"> <update-meta title="{{ ::(post.title | stripTags) }}"></update-meta> <update-meta name="description" content="{{ ::((post.description || post.media[0].literatureBody || post.body || post.media[0].body) | stripTagsAndTruncate: 160) }}" ></update-meta> <update-meta name="keywords" content="{{ ::post.title }}, {{ ::post.category }}, {{ \'ÑкÑпозиÑиÑ, иÑкÑÑÑÑво\' | t }}, {{ ::tags() }}, {{ \'ÐиÑкÑÑÑ\' | t }}, Discours.io" ></update-meta> <update-meta property="og:title" content="{{ ::post.title }}"></update-meta> <update-meta property="og:description" content="{{ ::(getOgDescription() | stripTagsAndTruncate: 400) }}" ></update-meta> <update-meta property="article:publisher" content="https://www.facebook.com/discoursio" ></update-meta> <update-meta property="article:author" content="https://www.facebook.com/discoursio" ></update-meta> <update-meta property="og:image" content="{{ ::(post.thumborId | imageUrl: 1024:512) }}" ng-if="post.thumborId" ></update-meta> <update-meta property="og:image:width" content="1024" ng-if="post.thumborId"></update-meta> <update-meta property="og:image:height" content="512" ng-if="post.thumborId"></update-meta> <update-meta name="twitter:card" content="summary_large_image" ng-if="post.thumborId" ></update-meta> <json-ld ng-if="post.link" type="CreativeWork" headline="{{ ::(post.title | stripTags) }}" description="{{ ::((post.description || post.body) | stripTagsAndTruncate: 160) }}" image="{{ ::(post.thumborId | imageUrl: 1024:512) }}" image-width="1024" image-height="512" url="https://discours.io{{ ::post.link }}" date-published="{{ ::(post.publishedAt | date:\'yyyy-MM-ddTHH:mm:ssZ\') }}" creator-name="{{ ::post.createdBy.name }}" creator-url="{{ ::(post.createdBy.path ? \'https://discours.io/\' + post.createdBy.path : \'\') }}" ></json-ld> <div class="tw:hidden" id="item-id">{{ ::post.slug }}</div> <div ng-include="\'/pages/expo/expoMainPart.html\'"></div> <div lazy-render root-margin="600px" reserve-height="clamp(300px, 50vh, 700px)"> <after-post ng-if="mainPartReady" item="post" relevant-items="relevantItems" relevant-stale="relevantStale" ></after-post> </div> </div>')}catch(e){}}(0)},31455(e,t,n){"use strict";function o({schedule:e,cancel:t,retry:n,exhausted:o,limit:i=3,delay:r=2e3}){function a(){c&&(t(c),c=null)}let s=0,c=null,l=!1,d=!1;return{failed:()=>(l||d||(a(),s+=1,s>=i?(d=!0,o()):c=e(()=>{c=null,l||n()},r)),s),reset(){a(),s=0,d=!1},cancelPending:a,destroy(){l=!0,a()}}}n.d(t,{Q:()=>o})},32991(e,t,n){"use strict";function o(e){return encodeURIComponent(e)}function i(e){if(!e)return"";var t=new Date(e),n=new Date,o=n-t,i=Math.floor(o/6e4),r=Math.floor(o/36e5),a=Math.floor(o/864e5);return i<1?"ÑолÑко ÑÑо":i<60?i+" мин. назад":r<24?r+" Ñ. наÐ
1·Ð°Ð´":a<7?a+" дн. назад":t.toLocaleDateString("ru-RU",{day:"numeric",month:"short",year:t.getFullYear()!==n.getFullYear()?"numeric":void 0,hour:"2-digit",minute:"2-digit"})}function r(e){return P[e]||e}function a(e){return O[e]||"fa-file"}function s(e){const t=e||{};return t.draftCode&&!t.slug?"draft-code":t.slug?"edit":"create"}function c(e){if("string"!=typeof e)return e;var t=e.replace(/\r\n?/g,"\n").replace(/[ \t]*\n+[ \t]*/g," ");return t=(t=t.replace(G,function(e){return-1!==e.indexOf(" ")?" ":" "})).replace(Q,""),/[^.]\.$/.test(t)&&(t=t.slice(0,-1).replace(X,"")),t}function l(e,t,n=!0){const o=Array.isArray(e?.history)?e.history.slice(-8):[];n&&!0===e?.pendingDurableSync&&e.html!==t&&o.push({html:e.html,timestamp:e.timestamp,pendingDurableSync:!0});const i=[];let r=0;for(let e=o.length-1;e>=0;e--){const n=o[e];if(!0===n?.pendingDurableSync&&"string"==typeof n.html&&n.html!==t&&!i.some(e=>e.html===n.html)&&!(n.html.length>1e6-r)&&(i.unshift(n),r+=n.html.length,i.length>=2))break}return i}function d(e,t){if(!e)return!1;if(!t)return!0;if(e===t)return!1;const n=function(e){if("undefined"==typeof window||!window.DOMParser)return String(e).replace(/<[^>]*>/g,"").replace(/\s+/g," ").trim();try{const t=(new DOMParser).parseFromString(String(e),"text/html");return(t.body&&t.body.textContent?t.body.textContent:"").replace(/\s+/g," ").trim()}catch(t){return String(e).replace(/<[^>]*>/g,"").replace(/\s+/g," ").trim()}},o=n(e),i=n(t);if(o===i)return!0;if(Math.abs(o.length-i.length)<30&&Math.min(o.length,i.length)>200){const e=o.length>=i.length?o:i,t=o.length>=i.length?i:o;if(e.startsWith(t)||e.endsWith(t))return!1}return!0}function u(e){return"string"!=typeof e||""===e||!/<(img|video|audio|iframe|figure|table|hr|blockquote)\b/i.test(e)&&""===e.replace(/<[^>]*>/g,"").replace(/ /gi," ").replace(/ /g," ").trim()}function p(e){return(new DOMParser).parseFromString(e,"text/html").body}function m(e){return"true"===e.getAttribute("data-resolved")}function g(e){if("string"!=typeof e||!e)return!1;const t=p(e);return!!t.querySelector(ce)||Array.prototype.some.call(t.querySelectorAll(le),e=>!m(e))}function f(e){if(e)return"string"==typeof e.rawBody?e.rawBody:e.body}function h(e,t,n,o="version_view"){if(!e)return;const i=f(e);return g(i)?t!==re?i:function(e,t,n="version_view"){if(!function(e){return!("string"!=typeof e||!e)&&null!==p(e).querySelector(ce+", "+le)}(e))return e;const o=t?function(e,t){try{return ie.S4.fromSchema(t).parse(p(e),{preserveWhitespace:!0})}catch(e){return(0,z.b)(e,"version_parse"),null}}(e,t):null;return o?(0,z.i)(e,o,n):(0,J.Wf)(e)}("publish"===e.type?e.body:i,n,o):e.body}function y(e){const t=p(e),n=Array.prototype.filter.call(t.querySelectorAll(le),m);return 0===n.length?e:(n.forEach(e=>{for(;e.firstChild;)e.parentNode.insertBefore(e.firstChild,e);e.remove()}),t.innerHTML)}function v(e,t,n){function o(e,t){b.has(e)&&b.delete(e),b.size>=20&&b.delete(b.keys().next().value),b.set(e,t)}function i(){var e=document.querySelector(".version-diff-scroll-wrapper .version-diff-gutter");if(e&&e._diffClickHandler&&(e.removeEventListener("click",e._diffClickHandler),e._diffClickHandler=null),e&&e._diffKeyHandler&&(e.removeEventListener("keydown",e._diffKeyHandler),e._diffKeyHandler=null),E){if(C){for(var t=0;t<C.length;t++)C[t].removeEventListener("scroll",E);C=null}E=null}}function r(e){return e.replace(/>\s+</g,"><").replace(/\s{2,}/g," ").trim()}function a(n){if("__current__"===n){const t=e.getActiveEditor();return Promise.resolve(t?t.getHTML():null)}return b.has(n)?Promise.resolve(b.get(n)):e.selectedVersion&&e.selectedVersion._id===n&&"string"==typeof e.selectedVersion.body?(o(n,e.selectedVersion.body),Promise.resolve(e.selectedVersion.body)):t.contentItem&&t.contentItem.slug?u.getVersion(t.contentItem.slug,n).then(function(e){const t=e&&"string"==typeof e.body?e.body:null;return null!==t&&o(n,t),t}).catch(function(){return null}):Promise.resolve(null)}function s(e,t){let n=0,o=e;for(;o&&o!==t;)n+=o.offsetTop,o=o.offsetParent;return n}function c(n){if("Escape"===n.key||27===n.keyCode){let n;if(e.diffPopupVisible)return e.closeDiffPopup(),void(t.$$destroyed||t.$applyAsync());
1e.sidebarVisible&&(e.sidebarVisible=!1,n=!0),e.versionsVisible&&(e.versionsVisible=!1,n=!0),e.selectedVersion&&(e.closeVersionPreview(),n=!0),e.versionNameDialogVisible&&(e.closeVersionNameDialog(),n=!0),n&&!t.$$destroyed&&t.$applyAsync()}}const{Notification:l,NOTIFICATION_MESSAGES:d,versioningService:u,ConfirmDialog:p}=n;e.versionsVisible=!1,e.versions=[],e.versionsLoading=!1,e.versionStats=null,e.selectedVersion=null,e.versionView=se,e.versionViews=null,e.diffMode=!1,e.diffHtml="",e.diffLeftHtml="",e.diffLoading=!1,e.diffLeftVersionId=null,e.diffRightVersionId=null,e.diffDropdownOpen=null;let m=null,v=null;const b=new Map;e.savingVersion=!1;let I=null,w=null,S=null,A=null;e.diffEmptyMessage="ÐеÑÑии иденÑиÑнÑ",e.diffEmptyHint="ÐÑбÑаннÑе веÑÑии не ÑодеÑÐ¶Ð°Ñ ÑазлиÑий",e.toggleVersions=function(){e.versionsVisible=!e.versionsVisible,e.versionsVisible&&t.contentItem&&t.contentItem.slug&&e.loadVersions()},e.loadVersions=function(){t.contentItem&&t.contentItem.slug&&(e.versionsLoading=!0,u.getVersions(t.contentItem.slug,{limit:50}).then(n=>{t.$$destroyed||(e.versions=n.versions,(0,U.cY)("[editContentItemCtrl] Loaded versions:",n.versions.length))}).catch(e=>{t.$$destroyed||((0,U.UT)("[editContentItemCtrl] Error loading versions:",e),l.error(d.VERSION_HISTORY_ERROR))}).finally(()=>{t.$$destroyed||(e.versionsLoading=!1,t.$applyAsync())}),u.getStats(t.contentItem.slug).then(n=>{t.$$destroyed||(e.versionStats=n)}).catch(()=>{}))},e.saveAndCreateVersion=async function(){if(e.savingVersion)return;if(e.tiptapEditor&&e.tiptapEditor.hasPendingMediaUploads&&e.tiptapEditor.hasPendingMediaUploads())return void l.warning("ÐождиÑеÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки изобÑажений пеÑед ÑоÑ
Ñанением");if(!t.contentItem||!t.contentItem.slug)return void l.warning(d.SAVE_BEFORE_VERSION);e.savingVersion=!0,t.$applyAsync();let n=!1;try{if("function"==typeof e.persistCollabMetadata)try{var o=t.contentItem&&"draft"===t.contentItem.status;await e.persistCollabMetadata({requireCategory:!o})}catch(e){if(t.$$destroyed)return;throw n=!0,e&&e.isValidation||l.error("Ðе ÑдалоÑÑ ÑоÑ
ÑаниÑÑ Ð¾Ð±Ð»Ð¾Ð¶ÐºÑ Ð¸ меÑаданнÑе маÑеÑиала"),e}if(e.hasUnsavedChanges)try{await e.saveContent()}catch(e){if(t.$$destroyed)return;throw n=!0,(0,U.UT)("[Save] Draft save failed:",e),l.error(d.DRAFT_SAVE_FAILED(e.message||e)),e}else if("function"==typeof e.flushExpoAutosave)try{await e.flushExpoAutosave()}catch(e){(0,U.UT)("[Save] Expo autosave flush failed (пÑодолжаем ÑоздаваÑÑ Ð²ÐµÑÑиÑ):",e)}const i=e.getDefaultVersionName(),r=e.getActiveEditor();if(!r)return e.savingVersion=!1,void t.$applyAsync();const a=r.getHTML();if(await u.createManualVersion(t.contentItem.slug,{name:i,body:a}),t.$$destroyed)return;e.lastVersionSavedAt=Date.now(),(0,U.cY)("[Save] Draft saved + version created:",i),e._resetAutosaveBaseline&&e._resetAutosaveBaseline(),e.saveSuccess=!0,t.$applyAsync(),I&&clearTimeout(I),I=setTimeout(function(){I=null,t.$$destroyed||(e.saveSuccess=!1,t.$applyAsync())},15e3),e.versionsVisible&&e.loadVersions()}catch(e){if(t.$$destroyed)return;n||((0,U.UT)("[Save] Error creating version:",e),l.error(d.VERSION_CREATE_ERROR(e.message||e)))}finally{t.$$destroyed||(e.savingVersion=!1,t.$applyAsync())}},e.saveVersion=function(n){if(!t.contentItem||!t.contentItem.slug)return void l.warning(d.SAVE_BEFORE_VERSION);const o=e.getActiveEditor();if(!o)return;e.savingVersion=!0;const i=o.getHTML();u.createManualVersion(t.contentItem.slug,{name:n,body:i}).then(n=>{t.$$destroyed||(l.success(d.VERSION_SAVED),(0,U.cY)("[editContentItemCtrl] Version saved:",n),e.versionsVisible&&e.loadVersions())}).catch(e=>{t.$$destroyed||((0,U.UT)("[editContentItemCtrl] Error saving version:",e),l.error(d.VERSION_SAVE_ERROR(e&&e.message?e.message:e)))}).finally(()=>{t.$$destroyed||(e.savingVersion=!1,t.$applyAsync())})},e.getDefaultVersionName=function(){const e=new Date;return`${String(e.getDate()).padStart(2,"0")}.${String(e.getMonth()+1).padStart(2,"0")}.${String(e.getFullYear()).slice(-2)} в ${String(e.getHours()).padStart(2,"0")}
1:${String(e.getMinutes()).padStart(2,"0")}`},e.openVersionNameDialog=function(){e.versionNamePlaceholder=e.getDefaultVersionName(),e.versionNameInput="",e.versionNameDialogVisible=!0,t.$applyAsync(),w=setTimeout(()=>{if(t.$$destroyed)return;const e=document.querySelector(".tiptap-version-dialog .tiptap-dialog__input");e&&e.focus()},50)},e.closeVersionNameDialog=function(){e.versionNameDialogVisible=!1,e.versionNameInput="",t.$applyAsync()},e.confirmSaveVersion=function(){const t=e.versionNameInput.trim()||e.versionNamePlaceholder;e.saveVersion(t),e.closeVersionNameDialog()},e.promptSaveVersion=function(){e.openVersionNameDialog()},e.previewVersion=function(n){t.contentItem&&t.contentItem.slug&&u.getVersion(t.contentItem.slug,n._id).then(n=>{t.$$destroyed||(e.selectedVersion=n,e.versionViews=function(e,t){const n=f(e),o=g(n);return{hasMarks:o,clean:h(e,re,t),marks:o?y(n):h(e,ae)}}(n,function(){const t=e.getActiveEditor?e.getActiveEditor():null;return t?t.schema:void 0}()),e.versionView=se,n&&n._id&&"string"==typeof n.body&&o(n._id,n.body),e.diffHtml="",e.diffLeftHtml="",m=null,e.diffPopupVisible&&(e.diffLeftVersionId=n._id,e.computeDiff()),t.$applyAsync())}).catch(e=>{t.$$destroyed||((0,U.UT)("[editContentItemCtrl] Error loading version:",e),l.error(d.VERSION_LOAD_ERROR))})},e.closeVersionPreview=function(){e.selectedVersion=null,e.versionViews=null,e.diffMode=!1,e.diffPopupVisible=!1,e.diffHtml="",e.diffLeftHtml="",e.diffLoading=!1,e.diffLeftVersionId=null,e.diffRightVersionId=null,e.diffEmptyMessage="ÐеÑÑии иденÑиÑнÑ",e.diffEmptyHint="ÐÑбÑаннÑе веÑÑии не ÑодеÑÐ¶Ð°Ñ ÑазлиÑий",m=null,v&&(clearTimeout(v),v=null),i()},e.setVersionView=function(t){t!==re&&t!==ae||(e.versionView=t)},e.isVersionMarksView=function(){return Boolean(e.versionViews&&e.versionViews.hasMarks&&e.versionView===ae)},e.getVersionPreviewHtml=function(){return e.versionViews?e.versionView===re?e.versionViews.clean:e.versionViews.marks:""},e.diffPopupVisible=!1;let E=null;e.openDiffPopup=function(){e.selectedVersion&&(A=document.activeElement,e.diffPopupVisible=!0,e.diffMode=!0,e.diffLeftVersionId=e.selectedVersion._id,e.diffRightVersionId="__current__",e.computeDiff(),t.$applyAsync(),setTimeout(function(){t.$$destroyed||function(){i();var e=document.querySelectorAll(".version-diff-popup-body .version-diff-side-content");if(!(e.length<2)){C=Array.prototype.slice.call(e);var t=!1;E=function(e){if(!t){t=!0;for(var n=e.target,o=n.scrollTop/(n.scrollHeight-n.clientHeight||1),i=0;i<C.length;i++)C[i]!==n&&(C[i].scrollTop=o*(C[i].scrollHeight-C[i].clientHeight));t=!1}};for(var n=0;n<C.length;n++)C[n].addEventListener("scroll",E,{passive:!0})}}()},150),S&&clearTimeout(S),S=setTimeout(function(){if(S=null,t.$$destroyed)return;const e=document.querySelector(".version-diff-popup .close-btn")||document.querySelector(".version-diff-popup");e&&"function"==typeof e.focus&&e.focus()},50))},e.closeDiffPopup=function(){e.diffPopupVisible=!1,e.diffMode=!1,e.diffDropdownOpen=null,i(),S&&(clearTimeout(S),S=null);const n=A;A=null,t.$applyAsync(),setTimeout(function(){n&&n.isConnected&&"function"==typeof n.focus&&n.focus()},0)};var C=null;e.changeDiffSide=function(t){m=null,e.computeDiff()},e.getDiffVersionLabel=function(t){if(!t||"__current__"===t)return"ТекÑÑий ÑекÑÑ";const n=e.versions||[];for(let e=0;e<n.length;e++)if(n[e]._id===t)return n[e].name||n[e].formattedDate;return"ÐеÑÑиÑ"},e.toggleDiffDropdown=function(t){e.diffDropdownOpen===t?e.diffDropdownOpen=null:(e.diffDropdownOpen=t,setTimeout(function(){const e=document.querySelector(".version-dropdown--"+t+" .version-dropdown__menu");if(!e)return;const n=e.querySelector(".version-dropdown__item--active");n&&n.scrollIntoView({block:"nearest"})},0))},e.selectDiffVersion=function(t,n){"left"===t?e.diffLeftVersionId=n:e.diffRightVersionId=n,e.diffDropdownOpen=null,e.changeDiffSide(t)};const T=function(n){e.diffDropdownOpen&&!n.target.closest(".version-dropdown")&&(e.diffDropdownOpen=null,t.$applyAsync())};return document.addEventListener("click",T,!0),e.computeDiff=function(){const n=e.diffLeftVersionId,o=e.diffRightVersionId;if(!n||!o)return;const i=n+"|"+o;
1m===i&&e.diffHtml||(e.diffLoading=!0,t.$applyAsync(),Promise.all([a(n),a(o)]).then(function(a){if(t.$$destroyed)return;if(e.diffLeftVersionId!==n||e.diffRightVersionId!==o)return;const c=a[0],l=a[1];if(null==c||null==l)return e.diffHtml="",e.diffLeftHtml="",e.diffEmptyMessage="Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ ÑÑавнение",e.diffEmptyHint="Ðдна из веÑÑий недоÑÑÑпна или еÑÑ Ð½Ðµ ÑÑпела загÑÑзиÑÑÑÑ",e.diffLoading=!1,void t.$applyAsync();try{const t=r(c),n=r(l);var d=(t.length||0)+(n.length||0);d>1e5&&(0,U.UT)("[collab-versioning] ÐолÑÑой докÑÐ¼ÐµÐ½Ñ Ð´Ð»Ñ diff ("+Math.round(d/1024)+" ÐÐ), возможна задеÑжка"),e.diffLeftHtml=c,e.diffHtml=ee().execute(t,n),e.diffEmptyMessage="ÐеÑÑии иденÑиÑнÑ",e.diffEmptyHint="ÐÑбÑаннÑе веÑÑии не ÑодеÑÐ¶Ð°Ñ ÑазлиÑий",m=i,(0,U.cY)("[collab-versioning] Diff computed successfully")}catch(t){(0,U.UT)("[collab-versioning] Error computing diff:",t),e.diffHtml='<p style="color:#c62828">Ðе ÑдалоÑÑ Ð²ÑÑиÑлиÑÑ ÑазлиÑиÑ</p>',e.diffLeftHtml=c,m=null}e.diffLoading=!1,t.$applyAsync(),v&&clearTimeout(v),v=setTimeout(function(){v=null,t.$$destroyed||function(){const e=document.querySelector(".version-diff-scroll-wrapper .version-diff-content"),t=document.querySelector(".version-diff-scroll-wrapper .version-diff-gutter");if(!e||!t)return;t.innerHTML="";const n=e.scrollHeight;if(n<=0)return;const o=e.querySelectorAll("ins, del");if(!o.length)return;const i=[],r=.005*n;for(let t=0;t<o.length;t++){const n=o[t],a=s(n,e),c=n.offsetHeight||2,l="INS"===n.tagName?"added":"removed",d=i.length>0?i[i.length-1]:null;if(d&&Math.abs(a-d.top)<r){const e=Math.max(d.top+d.height,a+c);d.height=e-d.top,d.type!==l&&(d.type="mixed")}else i.push({top:a,height:Math.max(c,3),type:l,element:n})}const a=document.createDocumentFragment();for(let e=0;e<i.length;e++){const t=i[e],o=t.top/n*100,r=Math.max(t.height/n*100,.4),s=document.createElement("div");s.className="diff-marker diff-gutter-mark diff-gutter-mark--"+t.type,s.style.top=o+"%",s.style.height=Math.min(r,2)+"%",s.setAttribute("data-target-top",String(t.top)),s.setAttribute("role","button"),s.setAttribute("tabindex","0");const c="added"===t.type?"Ðобавлено":"removed"===t.type?"Удалено":"Ðзменено";s.title=c,s.setAttribute("aria-label",c+" â пеÑейÑи к изменениÑ"),a.appendChild(s)}t.appendChild(a),t._diffClickHandler&&t.removeEventListener("click",t._diffClickHandler),t._diffClickHandler=function(t){const n=t.target.closest(".diff-marker");if(!n)return;const o=parseFloat(n.getAttribute("data-target-top"));if(isNaN(o))return;const i=e.querySelectorAll("ins, del");let r=null,a=1/0;for(let t=0;t<i.length;t++){const n=Math.abs(s(i[t],e)-o);n<a&&(a=n,r=i[t])}r&&(r.scrollIntoView({behavior:ne.eb,block:"center"}),r.classList.add("diff-highlight-flash"),setTimeout(function(){r.classList.remove("diff-highlight-flash")},1500))},t.addEventListener("click",t._diffClickHandler),t._diffKeyHandler&&t.removeEventListener("keydown",t._diffKeyHandler),t._diffKeyHandler=function(e){if("Enter"!==e.key&&" "!==e.key&&"Spacebar"!==e.key&&13!==e.keyCode&&32!==e.keyCode)return;const t=e.target.closest(".diff-marker");t&&(e.preventDefault(),t.click())},t.addEventListener("keydown",t._diffKeyHandler)}()},80)}).catch(function(n){t.$$destroyed||((0,U.UT)("[collab-versioning] Failed to load diff sides:",n),e.diffHtml="",e.diffLeftHtml="",e.diffEmptyMessage="Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ ÑÑавнение",e.diffEmptyHint="ÐÑоизоÑла оÑибка пÑи загÑÑзке вÑбÑаннÑÑ
веÑÑий",e.diffLoading=!1,m=null,t.$applyAsync())}))},e.restoreVersion=function(n){if(!t.contentItem||!t.contentItem.slug)return;const o=e.selectedVersion&&e.selectedVersion._id===n._id?e.versionView:se;return p.open({title:"ÐоÑÑÑановиÑÑ Ð²ÐµÑÑиÑ?",message:"ТекÑÑие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ñ ÐºÐ°Ðº оÑделÑÐ½Ð°Ñ Ð²ÐµÑÑиÑ",confirmText:"ÐоÑÑÑановиÑÑ",cancelText:"ÐÑмена",type:"warning"}).then(function(){return u.restoreVersion(t.contentItem.slug,n._id).then(i=>{if(t.$$destroyed)return;const r=e.getActiveEditor(),a=h({...i,type:n.type},o,r&&r.schema,"version_restore");if(r&&"string"==typeof a&&(0,te.withSkipSuggestionProcessing)(()=>{r.commands.setContent((0,K.sanitizeBeforeSetContent)(a),!1)}),void 0!==i.title&&(t.contentItem.title=i.title),c=i.snapshot||{},(s=t.contentItem)&&c&&"object"==typeof c&&oe.forEach(function(e){Object.prototype.hasOwnProperty.call(c,e)&&void 0!==c[e]&&("lang"!==e||null!==c[e]?s[e]=c[e]:delete s.lang)}),t.contentItem.imageCaption&&(t.contentItem.imageCaption=(0,R.jT)(t.contentItem.imageCaption)),l.success(d.VERSION_RESTORED),Array.isArray(i.restoreWarnings)&&i.restoreWarnings.length>0){const e=i.restoreWarnings.reduce((e,t)=>
1t&&Array.isArray(t.fields)?e.concat(t.fields.filter(Boolean)):e,[]);e.length>0&&l.warning("ÐеÑÑÐ¸Ñ Ð²Ð¾ÑÑÑановлена ÑаÑÑиÑно: ÑаÑÑÑ Ð¼ÐµÑаданнÑÑ
пÑопÑÑена ("+e.join(", ")+")")}var s,c;e.closeVersionPreview(),e.hasUnsavedChanges=!0,e.lastVersionSavedAt=null;const u=f(i);"string"==typeof u&&e._setAutosaveBaseline&&e._setAutosaveBaseline(u),r&&e.forceSave&&Promise.resolve(e.forceSave()).catch(e=>{(0,U.UT)("[collab-versioning] СоÑ
Ñанение поÑле воÑÑÑановлениÑ:",e)}),e.loadVersions(),t.$broadcast("editor:contentRestored"),t.$applyAsync()}).catch(e=>{t.$$destroyed||((0,U.UT)("[editContentItemCtrl] Error restoring version:",e),l.error(d.VERSION_RESTORE_ERROR))})}).catch(p.onDismissed("[collab-versioning] restoreVersion"))},e.deleteVersion=function(n){t.contentItem&&t.contentItem.slug&&p.open({title:"УдалиÑÑ Ð²ÐµÑÑиÑ?",message:"ÐÑо дейÑÑвие нелÑÐ·Ñ Ð¾ÑмениÑÑ",confirmText:"УдалиÑÑ",cancelText:"ÐÑмена",type:"danger"}).then(function(){return u.deleteVersion(t.contentItem.slug,n._id).then(()=>{t.$$destroyed||(l.success(d.VERSION_DELETED),e.loadVersions(),e.selectedVersion&&e.selectedVersion._id===n._id&&e.closeVersionPreview())}).catch(e=>{t.$$destroyed||((0,U.UT)("[editContentItemCtrl] Error deleting version:",e),l.error(d.VERSION_DELETE_ERROR))})}).catch(p.onDismissed("[collab-versioning] deleteVersion"))},document.addEventListener("keydown",c,!1),{destroy(){document.removeEventListener("keydown",c,!1),document.removeEventListener("click",T,!0),I&&(clearTimeout(I),I=null),w&&(clearTimeout(w),w=null),S&&(clearTimeout(S),S=null),e.diffHtml="",e.diffLeftHtml="",b.clear(),m=null,v&&(clearTimeout(v),v=null),i()}}}function b(e,t,o){function i(){const t=e.getActiveEditor&&e.getActiveEditor()||e.tiptapEditor;if(!t)return;const n=t.getText(),o=n.trim();o&&(u=!0),(o||u)&&(e.charCount=n.length,e.wordCount=o?o.split(/\s+/).length:0)}const{Notification:r,handleImageUpload:a,handleLinkEditor:s,handleEmbedInsert:c,handleVideoInsert:l,handlePdfInsert:d}=o;void 0===e.wordCount&&(e.wordCount=null),void 0===e.charCount&&(e.charCount=null);let u=!1,p=null;e.updateCounters=function(){p&&clearTimeout(p),p=setTimeout(i,500)},e.listDropdownOpen=!1,e.formatDropdownOpen=!1,e.wrapperDropdownOpen=!1,e.specialDropdownOpen=!1,e.toggleDropdown=function(t,n){n&&(n.preventDefault(),n.stopPropagation());const o=e[t];e.listDropdownOpen=!1,e.formatDropdownOpen=!1,e.wrapperDropdownOpen=!1,e.specialDropdownOpen=!1,e[t]=!o},e.closeAllDropdowns=function(){e.listDropdownOpen=!1,e.formatDropdownOpen=!1,e.wrapperDropdownOpen=!1,e.specialDropdownOpen=!1},e.isAnyDropdownOpen=function(){return e.listDropdownOpen||e.formatDropdownOpen||e.wrapperDropdownOpen||e.specialDropdownOpen};const m=n=>{e.isAnyDropdownOpen()&&(n.target.closest(".btn-dropdown")||(e.closeAllDropdowns(),t.$applyAsync()))},g=n=>{"Escape"===n.key&&e.isAnyDropdownOpen()&&(n.preventDefault(),n.stopPropagation(),e.closeAllDropdowns(),t.$applyAsync())};document.addEventListener("click",m,!0),document.addEventListener("keydown",g,!0),e.execCommand=function(t,i){i&&(i.preventDefault(),i.stopPropagation());const u=e.getActiveEditor();if(!u)return void(0,U.UT)("[execCommand] Editor not ready");u.isFocused||u.commands.focus();const p=(e,t,n)=>{u.isSuggestionMode&&u.isSuggestionMode()?u.recordBlockFormatSuggestion(e,n):t()};switch(t){case"bold":u.smartToggleFormat?u.smartToggleFormat("bold"):u.chain().focus().toggleBold().run();break;case"italic":u.smartToggleFormat?u.smartToggleFormat("italic"):u.chain().focus().toggleItalic().run();break;case"alignLeft":p("alignment",()=>u.chain().focus().setTextAlign("left").run(),{align:"left"});break;case"alignCenter":p("alignment",()=>u.chain().focus().setTextAlign("center").run(),{align:"center"});break;case"alignRight":p("alignment",()=>u.chain().focus().setTextAlign("right").run(),{align:"right"});break;case"h2":p("heading",()=>{const e=u.chain().focus();u.isActive("heading",{level:2})||e.unsetLead(),e.toggleHeading({level:2}).run()},{level:2});break;case"h3":p("heading",()=>{const e=u.chain().focus();u.isActive("heading",{level:3})||e.unsetLead(),e.toggleHeading({level:3}).run()},{level:3});break;case"blockquote":p("blockquote",()=>e.applyWrapper("blockquote"));break;case"lead":u.smartToggleFormat?u.smartToggleFormat("lead"):u.chain().focus().toggleLead().run();break;case"highlight":u.smartToggleFormat?u.smartToggleFormat("highlight"):u.chain().focus().toggleHighlight().run();break;case"bulletList":p("bulletList",()=>u.chain().focus().toggleBulletList().run());break;case"orderedList":p("orderedList",()=>u.chain().focus().toggleOrderedList().run());break;case"taSub":p("taSub",()=>e.applyWrapper("taSub"));break;case"taBorderSub":p("taBorderSub",()=>e.applyWrapper("taBorderSub"));break;case"taQuotation":p("taQuotation",()=>e.applyWrapper("taQuotation"));break;case"taEpigraph":p("taEpigraph",()=>
1e.applyWrapper("taEpigraph"));break;case"taSelectionFrame":p("taSelectionFrame",()=>e.applyWrapper("taSelectionFrame"));break;case"link":s(u);break;case"footnote":Promise.all([n.e(753),n.e(68)]).then(n.bind(n,61849)).then(e=>{if(u.isDestroyed)return;const{empty:t}=u.state.selection,{$from:n}=u.state.selection,o=n.nodeAfter,i=n.nodeBefore;let r="",a=!1;o&&"footnote"===o.type.name?(r=o.attrs.content||"",a=!0):i&&"footnote"===i.type.name&&(r=i.attrs.content||"",a=!0),(0,U.cY)("[footnote] Creating/editing footnote:",{empty:t,existingFootnote:r.substring(0,100),isEdit:a}),e.openFootnoteEditor({initialContent:r,isEdit:a,onCancel:()=>{u.chain().focus().run()},onSave:e=>{if(u.isDestroyed)return;(0,U.cY)("[footnote] Saving footnote content:",e.substring(0,100));const t=document.createElement("div");t.innerHTML=e||"";const n=(t.textContent||"").replace(/[\s\u00A0\u200B\u200C]/g,"").trim();if(e&&n)if(a)u.chain().focus().updateFootnote({content:e}).run(),(0,U.cY)("[footnote] Updated existing footnote");else{const t=(0,te.getNodeSuggestionAttrs)(u);u.chain().focus().insertContent({type:"footnote",attrs:{content:e,...t}}).run(),(0,U.cY)("[footnote] Inserted new footnote, HTML preview:",u.getHTML().substring(0,500))}}})}).catch(e=>{(0,U.UT)("[footnote] Failed to load footnote editor module:",e),r.error("Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ ÑедакÑÐ¾Ñ ÑноÑок")});break;case"image":a(u);break;case"video":l(u);break;case"insertToc":try{const{state:e,view:t}=u,n=[];if(e.doc.descendants((e,t)=>{"tocBlock"===e.type.name&&n.push({from:t,to:t+e.nodeSize})}),n.length>0){let o=e.tr;n.reverse().forEach(({from:e,to:t})=>{o=o.delete(e,t)}),t.dispatch(o)}const o=/^\d+$/;let i=u.state.tr,a=!1;u.state.doc.descendants((e,t)=>{"heading"===e.type.name&&e.attrs.id&&o.test(e.attrs.id)&&(i=i.setNodeMarkup(t,void 0,{...e.attrs,id:null}),a=!0)}),a&&t.dispatch(i);const s=[];let c=6;if(u.state.doc.descendants((e,t)=>{if("heading"===e.type.name){const n=e.textContent.trim(),o=e.attrs.level||2;n&&(s.push({text:n,level:o,pos:t}),o<c&&(c=o))}}),0===s.length){r&&r.info("Ð ÑекÑÑе Ð½ÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð²");break}let l=u.state.tr;s.forEach((e,t)=>{const n=String(t+1);e.id=n;const o=u.state.doc.nodeAt(e.pos);o&&(l=l.setNodeMarkup(e.pos,void 0,{...o.attrs,id:n}))}),t.dispatch(l);const d=[];d.push('<div class="toc-block"><details open=""><summary class="toc-summary"><span class="lead">СодеÑжание</span></summary>');let p=!0;s.forEach(e=>{e.level<=c?(d.push(`<p class="toc-main${p?" toc-first":""}"><a href="#${e.id}" class="anchor-link toc-link">${(0,R.O0)(e.text)}</a></p>`),p=!1):d.push(`<p class="toc-sub"><a href="#${e.id}" class="anchor-link toc-link">${(0,R.O0)(e.text)}</a></p>`)}),d.push("</details></div>");const m=d.join("");u.chain().focus().insertContent(m).command(({tr:e,dispatch:t})=>{if(t){const{selection:t}=e;e.setSelection(u.state.selection.constructor.near(e.doc.resolve(t.to)))}return!0}).run()}catch(e){(0,U.UT)("insertToc error",e),r&&r.error("Ðе ÑдалоÑÑ ÑоздаÑÑ Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ")}break;case"updateToc":try{let t=!1;if(u.state.doc.descendants(e=>{"tocBlock"===e.type.name&&(t=!0)}),!t){r&&r.info("Ðглавление не найдено. СнаÑала вÑÑавÑÑе оглавление");break}if(u.commands.updateToc)u.commands.updateToc()?r&&r.success("Ðглавление обновлено"):r&&r.error("Ðе ÑдалоÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ");else{const t=[];if(u.state.doc.descendants((e,n)=>{"tocBlock"===e.type.name&&t.push({from:n,to:n+e.nodeSize})}),t.length>0){let e=u.state.tr;t.reverse().forEach(({from:t,to:n})=>{e=e.delete(t,n)}),u.view.dispatch(e)}e.execCommand("insertToc",i),r&&r.success("Ðглавление обновлено")}}catch(e){(0,U.UT)("updateToc error",e),r&&r.error("Ðе ÑдалоÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ Ð¾Ð³Ð»Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ")}break;case"insertReadAlso":n.e(68).then(n.bind(n,49163)).then(e=>{e.openReadAlsoDialog&&e.openReadAlsoDialog({onInsert:e=>{var t=document.createElement("div");t.innerHTML=e;var n=t.querySelector(".read-also"),o=n?n.innerHTML:e;u.chain().focus().insertContent([{type:"readAlsoBlock",attrs:{content:o}}
1,{type:"paragraph"}]).run()}})}).catch(e=>{(0,U.UT)("[insertReadAlso] Failed to load dialog:",e),r.error("Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð´Ð¸Ð°Ð»Ð¾Ð³")});break;case"insertSpoiler":p("spoilerBlock",()=>{try{u.commands.toggleSpoiler?u.commands.toggleSpoiler({title:"СпойлеÑ"}):((0,U.UT)("[insertSpoiler] SpoilerBlock extension not loaded"),r&&r.error&&r.error("РаÑÑиÑение ÑпойлеÑа не загÑÑжено"))}catch(e){(0,U.UT)("insertSpoiler error",e),r&&r.error&&r.error("Ðе ÑдалоÑÑ Ð²ÑÑавиÑÑ ÑпойлеÑ")}});break;case"embed":c(u);break;case"pdf":(0,U.cY)("[execCommand:pdf] handlePdfInsert:",!!d,"editor:",!!u),d?d(u):(0,U.UT)("[execCommand] handlePdfInsert не пеÑедан в deps");break;case"typography":e.applyTypography();break;case"cleanHtml":e.cleanHtmlContent();break;case"toggleHtml":e.toggleHtmlMode();break;case"importExport":Promise.all([n.e(753),n.e(68)]).then(n.bind(n,11561)).then(function(e){e.openImportExportDialog({editor:u,s3UploaderService:o.s3UploaderService,Notification:r,contentItem:o.contentItem,THUMBOR_SERVER:o.THUMBOR_SERVER})}).catch(function(e){(0,U.UT)("[importExport] Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð¼Ð¾Ð´ÑлÑ:",e),r&&r.error("Ðе ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ð¸Ð¼Ð¿Ð¾ÑÑ/ÑкÑпоÑÑ")})}},e.htmlMode=!1;let f=null;return e.applyWrapper=async function(t){const o=e.getActiveEditor&&e.getActiveEditor()||e.tiptapEditor;if(!o)return;const i={from:o.state.selection.from,to:o.state.selection.to},a=await(async()=>{if(!f)try{f=await Promise.resolve().then(n.bind(n,99159))}catch(e){throw(0,U.UT)("[getWrapperManager] Failed to load wrapper-manager module:",e),e}return f})();if(o.view&&!o.isDestroyed){try{const{TextSelection:e}=await n.e(272).then(n.bind(n,75783));if(!o.view||o.isDestroyed)return;const t=o.state.doc.content.size,r=Math.min(Math.max(0,i.from),t),a=Math.min(Math.max(r,i.to),t);if(o.state.selection.from!==r||o.state.selection.to!==a){const t=o.state.tr,n=e.create(t.doc,r,a);t.setSelection(n),o.view.dispatch(t)}}catch(e){return void(0,U.UT)("[applyWrapper] Could not restore selection:",e)}a.toggleWrapperWithExclusion(o,t,(e,t)=>{r.warning(t)})}else(0,U.UT)("[applyWrapper] ÑедакÑÐ¾Ñ ÑниÑÑожен во вÑÐµÐ¼Ñ await, оÑмена")},e.toggleHtmlMode=function(){const t=e.getActiveEditor&&e.getActiveEditor()||e.tiptapEditor;t&&e.isAdmin&&n.e(68).then(n.bind(n,26855)).then(e=>{const n=t.getHTML();e.openHtmlEditor({initialHtml:n,onSave:e=>{(0,te.withSkipSuggestionProcessing)(()=>{t.commands.setContent((0,K.sanitizeBeforeSetContent)(e),!0)})}})}).catch(e=>{(0,U.UT)("[toggleHtmlMode] Failed to load HTML editor module:",e),r.error("Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ HTML ÑедакÑоÑ")})},e.reinitializeFromServer=function(){const n=e.getActiveEditor&&e.getActiveEditor()||e.tiptapEditor;if(!n||!t.contentItem)return;const o=t.contentItem.body||"";(0,U.cY)("[DEBUG] Reinitializing from server content:",{length:o.length,preview:o.substring(0,200)}),(0,te.withSkipSuggestionProcessing)(()=>{n.commands.setContent((0,K.sanitizeBeforeSetContent)(o))}),(0,U.cY)("[DEBUG] After reinitialize, editor HTML:",n.getHTML().substring(0,500))},e.isActive=function(t){const n=e.getActiveEditor();if(!n)return!1;switch(t){case"bold":return n.isActive("bold");case"italic":return n.isActive("italic");case"alignLeft":return n.isActive({textAlign:"left"});case"alignCenter":return n.isActive({textAlign:"center"});case"alignRight":return n.isActive({textAlign:"right"});case"h2":return n.isActive("heading",{level:2});case"h3":return n.isActive("heading",{level:3});case"blockquote":return n.isActive("blockquote");case"lead":return n.isActive("lead");case"highlight":return n.isActive("highlight");case"bulletList":return n.isActive("bulletList");case"orderedList":return n.isActive("orderedList");case"taSub":return n.isActive("taSub");case"taBorderSub":return n.isActive("taBorderSub");case"taQuotation":return n.isActive("taQuotation");case"taEpigraph":return n.isActive("taEpigraph");case"taSelectionFrame":return n.isActive("taSelectionFrame");case"link":return n.isActive("link");case"footnote":return n.isActive("footnote");default:return!1}},{destroy(){p&&clearTimeout(p),document.removeEventListener("click",m,!0),document.removeEventListener("keydown",g,!0)}}}function I(e){return null==e?"":String(e).replace(/&(?:amp|lt|gt|quot|#039);/g,function(e){return ue[e]})}function w(e,t){let n=null;return e.state.doc.descendants(function(e,o){(e.marks||[]).some(function(e){return e.type&&"suggestionFormat"===e.type.n
1ame&&e.attrs.suggestionId===t})&&(n?n.to=o+e.nodeSize:n={from:o,to:o+e.nodeSize})}),n}function S(e,t,o){function i(e,t){const n=setTimeout(function(){he.delete(n),e()},t);return he.add(n),n}function r(){if(Te&&(clearTimeout(Te),Te=null),Ce&&window.asteroid&&window.asteroid.ddp){var e=window.asteroid.ddp;"function"==typeof e.removeListener&&(e.removeListener("added",Ce),e.removeListener("changed",Ce),e.removeListener("removed",Ce)),Ce=null}if(Ee&&Ee.stop)try{Ee.stop()}catch(e){}Ee=null}function a(t){if(t&&window.asteroid&&window.asteroid.ddp){r();try{Ee=window.asteroid.subscribe("inlineComments",{documentName:t});var n=window.asteroid.ddp,o=0;Ce=function(t){if(!Se&&t&&"inlineComments"===t.collection){o++,Te&&clearTimeout(Te);var n=document.hidden?2e3:o>10?500:200;Te=setTimeout(function(){Te=null,o=0,Se||((0,U.cY)("[collab-comments] DDP: inlineComments changed, reconciling REST snapshot"),e._commentsApiLoaded=!1,j(!0))},n)}},"function"==typeof n.on&&(n.on("added",Ce),n.on("changed",Ce),n.on("removed",Ce))}catch(e){(0,U.UT)("[collab-comments] DDP subscribe failed, using REST only")}}}function s(e){return{state:"pending",mutationId:e,startedAt:Date.now()}}function c(e){return{state:"confirmed",mutationId:e}}function l(e){return!(!e||!e._collabPersistence||"pending"!==e._collabPersistence.state)}function d(e){return e&&e.data&&"object"==typeof e.data?e.data:e}function u(e,t){const n=e||{},o=_e&&n.id&&_e.get(n.id)||{};return{...o,id:n.id||o.id,text:void 0!==n.text?n.text:o.text||"",quotedText:void 0!==n.quotedText?n.quotedText:o.quotedText||"",authorName:void 0!==n.authorName?n.authorName:o.authorName,authorSlug:void 0!==n.authorSlug?n.authorSlug:o.authorSlug,authorAvatar:void 0!==n.authorAvatar?n.authorAvatar:o.authorAvatar,createdAt:void 0!==n.createdAt?n.createdAt:o.createdAt,updatedAt:void 0!==n.updatedAt?n.updatedAt:o.updatedAt,resolved:void 0!==n.resolved?!!n.resolved:!!o.resolved,rejected:void 0!==n.rejected?!!n.rejected:!!o.rejected,isRemark:void 0!==n.isRemark?!!n.isRemark:!!o.isRemark,replies:Array.isArray(n.replies)?n.replies.slice():Array.isArray(o.replies)?o.replies.slice():[],...t||{}}}function p(e,t){if(!e||!t)return;const n={...t,id:e,replies:Array.isArray(t.replies)?t.replies.slice():[]},o=++De;Le.set(e,{version:o,value:n}),_e&&_e.set(e,n)}function m(e){if(!e)return;const t=++De;Le.set(e,{version:t,value:null}),Ne.set(e,{version:++Ue,value:null}),_e&&_e.delete(e)}function g(e,t,n){let o;
1if(Ne.has(t)){if(o=Ne.get(t).value,null===o)return null}else if(_e&&_e.has(t))return _e.get(t);if(void 0===o&&(o=n),void 0===o&&e)try{o=e.get(t)}catch(e){return null}const i=o&&"function"==typeof o.toJSON?o.toJSON():o||null;if(!i)return null;if(l(i)&&!Be.has(t))return null;const r=Array.isArray(i.replies)?i.replies.filter(function(e){return!(e&&l(e)&&!qe.has(e._id))}):[];return{...i,replies:r}}function f(e){const t=Ne.get(e);return!(!t||null===t.value)}function h(e){if(!e||!e.updatedAt)return null;const t=Date.parse(e.updatedAt);return Number.isFinite(t)?t:null}function y(e){const t=Ne.get(e),n=T(e),o=_e&&_e.has(e)?_e.get(e):null;return{liveVersion:t?t.version:0,apiSnapshotKnown:!!_e,apiSnapshotHadComment:!(!_e||!_e.has(e)),apiValue:o,mapKnown:!(!n||!n.commentsMap),mapHadComment:!(!n||n.failed||n.tombstone),mapUpdatedAt:n&&n.value&&n.value.updatedAt}}function v(t,n,o){if(!o)return{superseded:!1,deleted:!1,latest:null};const i=h(n),r=Ne.get(t),a=!!(r&&r.version>o.liveVersion);if(a&&null===r.value)return{superseded:!0,deleted:!0,latest:null};const s=T(t);if(o.mapKnown&&o.mapHadComment&&s&&!s.failed&&s.tombstone)return{superseded:!0,deleted:!0,latest:null};const c=!(!_e||!_e.has(t));if(o.apiSnapshotKnown&&o.apiSnapshotHadComment&&_e&&!c)return{superseded:!0,deleted:!0,latest:null};const l=[];r&&r.value&&l.push(r.value),s&&s.value&&l.push(s.value),c&&l.push(_e.get(t));const d=(e.comments||[]).find(function(e){return e.id===t});d&&l.push(d);let u=null,p=null;return l.forEach(function(e){if(!e)return;const t=h(e);(!u||null!==t&&(null===p||t>p))&&(u=e,p=t)}),null!==i&&null!==p&&p>i?{superseded:!0,deleted:!1,latest:u}:!a||null!==i&&null!==p?null===i&&_e&&c&&o.apiValue&&_e.get(t)!==o.apiValue||null===i&&s&&s.value&&o.mapUpdatedAt&&s.value.updatedAt!==o.mapUpdatedAt?{superseded:!0,deleted:!1,latest:u}:{superseded:!1,deleted:!1,latest:u}:{superseded:!0,deleted:!1,latest:u}}function b(n,o,i){if(ve.delete(n),o.deleted)m(n),e.comments=(e.comments||[]).filter(function(e){return e.id!==n});else if(o.latest){const t=(e.comments||[]).find(function(e){return e.id===n});if(t){const e=o.latest;Object.prototype.hasOwnProperty.call(e,"text")&&(t.text=e.text),Object.prototype.hasOwnProperty.call(e,"quotedText")&&(t.quotedText=e.quotedText),["updatedAt","resolved","rejected","orphaned"].forEach(function(n){Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])}),Array.isArray(e.replies)&&(t.replies=K(e.replies.slice(),z(t.replies))),t._collabPersistence=c(n),i&&(t.isEditing=!0,t.editText=i)}}Se||(A(),t.$$destroyed||t.$applyAsync())}function S(e,t,n){if(ve.get(e))return{resolved:!0,rejected:!0};const o=_e&&_e.get(e);return o?{resolved:!!o.resolved||!!o.rejected,rejected:!!o.rejected}:{resolved:!(!t||!t.resolved)||!(!n||!n.resolved&&!n.rejected),rejected:!(!t||!t.rejected)||!(!n||!n.rejected)}}function A(t){t&&(e.commentsDisplayLimit=ze);const n=e.comments,o="resolved"===e.commentFilter,i=e.remarkFilter,r=[],a=[],s=[],c=[],l=[],d=[],u=[],p=[];for(var m=0,g=0;g<n.length;g++){var f=n[g];f.resolved?(c.push(f),f.isRemark?d.push(f):p.push(f)):(r.push(f),f.rejected||f.orphaned||a.push(f),f.id&&!We.isSeenId(f.id)&&m++,s.push(f),f.isRemark?l.push(f):u.push(f))}for(var h=e.suggestions||[],y=0;y<h.length;y++){var v=h[y];v.suggestionId&&!We.isSeenId(v.suggestionId)&&m++}if(e.openCommentsCount=r.length,e.pendingChangesCount=m,e.marginComments=a,e.filteredComments=o?"readers"===i?d:"editors"===i?p:c:"readers"===i?l:"editors"===i?u:s,e.visibleMarginComments&&e.visibleMarginComments.length>0){const t=new Set(e.visibleMarginComments.map(function(e){return e.id}));e.visibleMarginComments=a.filter(function(e){return t.has(e.id)})}else e.visibleMarginComments=a;if(e.visibleMarginSuggestions&&e.visibleMarginSuggestions.length>0){const t=new Set(e.visibleMarginSuggestions.map(function(e){return e.suggestionId}));e.visibleMarginSuggestions=h.filter(function(e){return t.has(e.suggestionId)})}else e.visibleMarginSuggestions=h;e.resetVirtualScrollCache&&e.resetVirtualScrollCache()}function E(e){return e?`${ce}/unsafe/36x36/${e}`:null}function C(e,t){const n=t(Array.isArray(e)?e.slice():[]);return Array.isArray(n)?n:null}function T(t){try{const n=e.tiptapEditor&&e.tiptapEditor.getCommentsMap&&e.tiptapEditor.getCommentsMap(),o=n&&n.get(t);return n&&void 0===o?{commentsMap:n,tombstone:!0}:{commentsMap:n,value:o&&"function"==typeof o.toJSON?o.toJSON():o||null}}catch(e){return(0,U.UT)("[collab-comments] Failed to read latest comment replies:",(0,W.Ld)(e)),{failed:!0}}}
1function k(e,t,n){if(Object.prototype.hasOwnProperty.call(Me,e)){const n=C(Me[e],t);return void(n&&(Me[e]=n))}n&&(Me[e]=n.slice())}function x(t,n,o,i){if(!t||"function"!=typeof n)return null;const r=T(t);if(r.failed||r.tombstone)return null;const a=(e.comments||[]).find(function(e){return e.id===t});if(i&&i.requireReplyId&&!((r.value?r.value.replies:a&&a.replies)||[]).some(function(e){return e._id===i.requireReplyId}))return null;const s=function(e,t,n,o){if(!t.value)return{data:null,replies:null};const i=C(t.value.replies,n);if(!i)return null;const r={...t.value,...o||{},id:e,replies:i};if(t.commentsMap)try{t.commentsMap.set(e,r)}catch(e){return(0,U.UT)("[collab-comments] Failed to sync patched replies to commentsMap:",(0,W.Ld)(e)),null}return{data:r,replies:i}}(t,r,n,o);if(!s)return null;k(t,n,s.replies);const c=function(e,t,n){if(!e)return null;const o=z(e.replies),i=C(e.replies,t);return i?(e.replies=K(i,o),n&&n.updatedAt&&(e.updatedAt=n.updatedAt),i):null}(a,n,o);return i&&i.durable&&function(e,t,n,o){const i=Ne.get(e);if(i&&i.value){const o=C(i.value.replies,t);o&&Ne.set(e,{version:++Ue,value:{...i.value,...n||{},replies:o}})}const r=_e&&_e.get(e)||o;if(!r)return;const a=C(r.replies,t);a&&p(e,u(r,{...n||{},replies:a}))}(t,n,o,s.data||a),{comment:a,data:s.data,replies:c||s.replies||Me[t]||[]}}function M(e){return"comment:"+e}function _(e){return"comment-reply:"+e}function D(e){return"suggestion-reply:"+e}function L(n){if(!Ve.latch(n))return!1;const o=!Ge;return e.collabCommentStoreUnavailable=!0,function(){function t(t,n,o,i){"string"==typeof n&&n.trim()&&(e.commentRecoveryDrafts.some(function(e){return e.text===n&&e.quotedText===(o||"")&&e.label===i})||N(t,n,o,i))}Ge||Se||(Ge=!0,(e.comments||[]).forEach(function(e){e&&e.id&&(e.isEditing&&t("comment-edit:"+e.id,e.editText,e.quotedText,"ÐомменÑаÑий"),t("comment-reply-draft:"+e.id,e.newReplyText,e.quotedText,"ÐÑÐ²ÐµÑ Ð½Ð° комменÑаÑий"),(e.replies||[]).forEach(function(n){n&&n._id&&n.isEditing&&t("comment-reply:"+e.id+":"+n._id,n.editText,e.quotedText,"ÐÑÐ²ÐµÑ Ð½Ð° комменÑаÑий")}))}),(e.suggestions||[]).forEach(function(n){if(!n||!n.suggestionId)return;const o=n.suggestionId,i=n.text||n.addText||n.deleteText||"";t("suggestion-reply-draft:"+o,n.newReplyText,i,"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки"),((e.suggestionThreads||{})[o]||[]).forEach(function(e){e&&e._id&&e.isEditing&&t("suggestion-reply-edit:"+o+":"+e._id,e.editText,i,"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки")})}))}(),o&&(Array.from(Be.values()).forEach(function(e){R(e),q(e)}),Be.clear(),Array.from(qe.entries()).forEach(function(e){const t=e[1];oe(t.comment,e[0],t.replyText)}),qe.clear(),Ke&&"function"==typeof Ke.rollbackPendingCreates&&Ke.rollbackPendingCreates()),P(e.commentRecoveryDrafts.length?"comments":e.sidebarTab||"comments"),function(){const t=e.tiptapEditor&&e.tiptapEditor.storage&&e.tiptapEditor.storage.commentBubbleMenu;t&&(t.button&&(t.button.style.display="none"),t.isVisible=!1,t.isClicking=!1,t.savedSelection=null,t.savedText=null)}(),Je||Se||(Je=!0,se.warning((0,W.Vj)())),Se||t.$$destroyed||t.$applyAsync(),!0}function P(t){e.isPreviewMode&&"function"==typeof e.onEditorModeChange&&e.onEditorModeChange("editing"),e.quietMode&&"function"==typeof e.toggleQuietMode&&e.toggleQuietMode(!0),e.sidebarVisible=!0,e.sidebarTab=t}function O(t){const n=(e.comments||[]).find(function(e){return e.id===t});return n?(n.isExpanded=!0,n.marginExpanded=!0,P("comments"),n):null}function N(n,o,r,a){if(!n||!o||Se)return;let s=!1;const c=e.commentRecoveryDrafts.find(function(e){return e.id===n});c?(c.text=o,c.quotedText=r||"",c.label=a||c.label||"ÐомменÑаÑий"):(s=!0,e.commentRecoveryDrafts.push({id:n,text:o,quotedText:r||"",label:a||"ÐомменÑаÑий"})),P("comments"),s&&t.$applyAsync(function(){i(function(){if(Se||t.$$destroyed)return;const e=document.getElementById("collab-recovery-status");e&&"function"==typeof e.focus&&e.focus()},0)})}function R(e){e&&N(e.id,e.text,e.quotedText)}function B(e,t,n){e&&N("comment-reply:"+e.id+":"+t,n,e.quotedText,"ÐÑÐ²ÐµÑ Ð½Ð° комменÑаÑий")}function q(t){if(t){if(e.tiptapEditor){try{e.tiptapEditor.commands.removeComment(t.id)}catch(e){}try{const n=e.tiptapEditor.getCommentsMap&&e.tiptapEditor.getCommentsMap();n&&n.delete(t.id)}catch(e){}}e.comments=(e.comments||[]).filter(function(e){return e.id!==t.id}),delete Me[t.id],Be.delete(t.id),Ve.discard(M(t.id)),Se||A()}}function Y(n,o){const i=M(n.id);Be.set(n.id,n);const r=y(n.id);return Ve.trackCreate(i,o).then(function(o){return"confirmed"===o.kind?(function(t,n,o){const i=d(n.value)||{},r=v(t.id,i,o);if(r.superseded)return r.deleted&&R(t),void b(t.id,r);const a=(e.comments||[]).find(function(e){return e.id===t.id}),s=T(t.id);!a||s.failed||s.tombstone?R(t):(Object.prototype.hasOwnProperty.call(i,"text")&&(a.text=I(i.text)),Object.prototype.hasOwnProperty.call(i,"quotedText")&&(a.quotedText=I(i.quotedText)),i.updatedAt&&(a.updatedAt=i.updatedAt),i.createdAt&&!a.createdAt&&(a.createdAt=i.createdAt),a._c
1ollabPersistence=c(t.id),F(t.id,{text:a.text,quotedText:a.quotedText,_collabPersistence:c(t.id),...i.updatedAt&&{updatedAt:i.updatedAt},...i.createdAt&&{createdAt:i.createdAt}}),p(t.id,u(a)))}(n,o,r),Be.delete(n.id),(0,U.cY)("[collab-comments] Comment persisted to backend:",n.id)):function(e,n){const o="uncertain"===n.kind&&n.error&&404===n.error.status;"uncertain"===n.kind&&!o||Be.delete(e.id),"unavailable"===n.kind?(R(e),q(e),L(n.error)):o?(R(e),q(e),Se||se.warning((0,W.e)())):"uncertain"!==n.kind||Se||(R(e),(0,U.UT)("[collab-comments] Comment persistence outcome is uncertain:",(0,W.Ld)(n.error)),se.warning((0,W.Yd)(n.error)),t.$$destroyed||t.$applyAsync())}(n,o),o})}function H(e,t){e&&Ve.markUncertain(M(e.id),t)}async function j(n){if(!e.collabDocumentName)return void(e.commentsLoading=!1);if(Ve.isUnavailable())return e._commentsApiLoaded=!0,void(e.commentsLoading=!1);if(e._commentsApiLoaded&&!n)return void(e.commentsLoading=!1);if(Ae>=3&&!n)return e.commentsLoading=!1,void(0,U.cY)("[loadCommentsFromApi] Max retries reached, skipping");(0,U.cY)("[loadCommentsFromApi] Loading comments for:",e.collabDocumentName,n?"(forced)":"");const o=++Pe;try{const d=window.__editorPrefetch,u=d&&d.slug,p=e.collabDocumentName.replace("content-item:","");let m,g=-1,f=-1;if(!n&&d&&u===p&&d.comments){if(m=await d.comments,d.comments=null,Se||e.collabDocumentName.replace("content-item:","")!==p)return;if(L(m))return e._commentsApiLoaded=!0,void(e.commentsLoading=!1);if(null===m)return e.commentsLoading=!1,void(0,U.cY)("[loadCommentsFromApi] Prefetch returned null, retry on next refresh")}else g=De,f=Ue,m=await ae.getOne("collab/comments/"+e.collabDocumentName);if(Se)return;const h=Array.isArray(m)?m:m&&Array.isArray(m.data)?m.data:null;if((0,U.cY)("[loadCommentsFromApi] Loaded",h?h.length:0,"comments from API"),!h)throw new Error("InvalidCollabCommentsResponse");if(o<Oe)return;if(!e.tiptapEditor)return e._commentsApiLoaded=!0,e.commentsLoading=!1,void(Ae=0);var i;try{i=e.tiptapEditor.getCommentsMap&&e.tiptapEditor.getCommentsMap()}catch(t){return void(e.commentsLoading=!1)}if(!i)return void(e.commentsLoading=!1);Oe=o;const y=new Map;h.forEach(e=>{const t=e.commentId;if(!t)return;let n=null;try{n=i.get(t)}catch(e){}const o=n&&"function"==typeof n.toJSON?n.toJSON():n,r=(Array.isArray(e.replies)?e.replies:[]).map(e=>{const t={...e,text:I(e.text)};if(t.authorAvatar)return t;const n=E((e.author||{}).thumborId);return n?{...t,authorAvatar:n}:t}),a=new Set(r.map(function(e){return e._id})),s=r.slice();for(qe.forEach(function(e,n){if(!e.comment||e.comment.id!==t||a.has(n))return;const o=(e.comment.replies||[]).find(function(e){return e._id===n});o&&s.push(o)}),Object.prototype.hasOwnProperty.call(Me,t)||Ye.push(t),Me[t]=s;Ye.length>$e;){const e=Ye.shift();delete Me[e]}const l=e.author||{},d=E(l.thumborId),u={id:t,text:I(e.text),quotedText:I(e.quotedText),authorName:l.name,authorSlug:l.path,authorAvatar:d,createdAt:e.createdAt,updatedAt:e.updatedAt,resolved:!!e.resolved||!!e.rejected,rejected:!!e.rejected,isRemark:!!e.isRemark,replies:r};if(Be.has(t)&&(Be.delete(t),Ve.discard(M(t)),o))try{i.set(t,{...o,_collabPersistence:c(t)})}catch(e){}if(y.set(t,u),!o||void 0===o.text||""===o.text)try{i.set(t,u)}catch(e){(0,U.UT)("[loadCommentsFromApi] Failed to set comment in map:",e)}}),s=y,l=g,Le.forEach(function(e,t){e.version<=l?Le.delete(t):e.value?s.set(t,e.value):s.delete(t)}),_e=y,f>=0&&Ne.forEach(function(e,t){e.version<=f&&Ne.delete(t)}),Object.keys(Me).forEach(function(e){y.has(e)||Be.has(e)||delete Me[e]}),Ye=Ye.filter(function(e){return y.has(e)||Be.has(e)}),(0,U.cY)("[loadCommentsFromApi] Merged",h.length,"comments from API into commentsMap"),e._commentsApiLoaded=!0,e.commentsLoading=!1,Ae=0,Ee||Se||(a(e.collabDocumentName),ke||(ke=ue.onScope(t,ue.EVENTS.ASTEROID_RECONNECTED,function(){!Se&&e.collabDocumentName&&(r(),a(e.collabDocumentName),e.refreshSuggestionsAndComments())}))),e.refreshSuggestionsAndComments()}catch(t){if(L(t))return e._commentsApiLoaded=!0,void(e.commentsLoading=!1);Ae++,e.commentsLoading=!1,t&&"AbortError"!==t.name&&((0,U.UT)("[loadCommentsFromApi] Failed to load comments from API (attempt",Ae+"/3):",t.status||t.statusCode||t.name||"unknown"),Ae>=3&&!Se&&se.warning({message:"Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии. ÐбновиÑе ÑÑÑаниÑÑ."}))}var s,l}function F(t,n,o){if(e.tiptapEditor&&e.tiptapEditor.getCommentsMap)try{const i=e.tiptapEditor.getCommentsMap();if(!i)return;let r=i.get(t);if(r&&"function"==typeof r.toJSON&&(r=r.toJSON()),r){const e={...r,...n};i.set(t,e);const a=Ne.get(t);a&&a.value&&Ne.set(t,{version:++Ue,value:{...a.value,...n}}),o&&!1===o.durable||p(t,u({...e,id:t}))}}catch(e){(0,U.cY)("[_updateCommentInMap] Failed:",e)}}function z(e){const t=new Map;
1return(e||[]).forEach(function(e){e&&e._id&&t.set(e._id,{isEditing:!!e.isEditing,editText:e.editText})}),t}function K(e,t){return(e||[]).map(function(e){const n=e&&t.get(e._id);return n&&n.isEditing?{...e,isEditing:!0,editText:n.editText}:e})}function J(e,t){if(!t)return e;const n={...e,replies:K(e.replies,t.replies)};return t.isEditing&&(n.isEditing=!0,n.editText=t.editText),void 0!==t.newReplyText&&(n.newReplyText=t.newReplyText),n}function G(e){try{const t=document.querySelector(`[data-sidebar-comment-id="${CSS.escape(e)}"]`);if(!t)return;const n=document.querySelector(".tiptap-sidebar .sidebar-content");if(!n)return;const o=t.getBoundingClientRect(),i=n.getBoundingClientRect();n.scrollTo({top:n.scrollTop+(o.top-i.top)-i.height/3,behavior:we})}catch(e){(0,U.cY)("[_scrollSidebarToComment] Error:",e)}}function Q(t){const n=e.tiptapEditor.chain();(0,de.W_)()||n.focus(),n.setTextSelection(t).run()}function X(n,o,i,r){const a=d(i)||{},s=v(n.id,a,r);if(s.superseded)return void b(n.id,s);const c=(e.comments||[]).find(function(e){return e.id===n.id})||n;c.resolved=o,a.updatedAt&&(c.updatedAt=a.updatedAt),e.tiptapEditor&&(o?e.tiptapEditor.commands.resolveComment(c.id):e.tiptapEditor.commands.unresolveComment(c.id)),A(),F(c.id,{resolved:o,...a.updatedAt&&{updatedAt:a.updatedAt}}),t.$$destroyed||t.$applyAsync()}function Z(n,o){if(e.isCommentWriteBlocked(n))return;if(!e.collabDocumentName)return void X(n,o);const i={resolved:o};n.updatedAt&&(i.expectedUpdatedAt=n.updatedAt);const r=y(n.id);return Ve.trackMutation(M(n.id),function(){return ae.put("collab/comments/"+e.collabDocumentName+"/"+n.id,null,i)},function(e){"confirmed"!==e.kind||Se||X(n,o,e.value,r)}).then(function(e){"confirmed"!==e.kind&&("unavailable"!==e.kind?"blocked"!==e.kind&&(Se||("absent"!==e.kind&&H(n,e.error),(0,U.UT)("[setCommentResolution] Outcome is not confirmed:",(0,W.Ld)(e.error)),se.warning("absent"===e.kind?(0,W.ic)():(0,W.Yd)(e.error)),t.$applyAsync())):L(e.error))}).catch(function(){(0,U.UT)("[setCommentResolution] Failed to process backend outcome")})}function ee(n){if(!Se){if(e.tiptapEditor)try{e.tiptapEditor.commands.removeComment(n.id)}catch(e){(0,U.UT)("[deleteComment] Failed to remove comment mark:",(0,W.Ld)(e))}if(e.tiptapEditor&&e.tiptapEditor.getCommentsMap)try{const t=e.tiptapEditor.getCommentsMap();t&&t.delete(n.id)}catch(e){(0,U.UT)("[deleteComment] Failed to remove from commentsMap:",(0,W.Ld)(e))}e.comments=e.comments.filter(function(e){return e.id!==n.id}),m(n.id),delete Me[n.id],A(),se.success("ÐомменÑаÑий ÑдалÑн"),t.$$destroyed||t.$applyAsync()}}function ne(e,n){if(Se)return;const o=function(e){return e.filter(function(e){return e._id!==n})},i=x(e.id,o,null,{durable:!0})?null:T(e.id);i&&i.tombstone&&(k(e.id,o,null),Array.isArray(e.replies)&&(e.replies=o(e.replies))),t.$$destroyed||t.$applyAsync()}function oe(e,n,o){const i=e.id;B(e,n,o);const r=x(i,function(e){return e.filter(function(e){return e._id!==n})}),a=r&&r.comment,s=a||e;r||(s.replies=(s.replies||[]).filter(function(e){return e._id!==n}),Object.prototype.hasOwnProperty.call(Me,i)&&(Me[i]=(Me[i]||[]).filter(function(e){return e._id!==n}))),e!==s&&(e.replies=(e.replies||[]).filter(function(e){return e._id!==n})),Se||(s.newReplyText=o,e!==s&&(e.newReplyText=o)),a&&O(i),Ve.discard(_(n)),Ve.discard(M(i)),qe.delete(n),Se||t.$$destroyed||t.$applyAsync()}function ie(){const n=(e.comments||[]).some(function(e){return e.menuOpen||(e.replies||[]).some(function(e){return e.menuOpen})})||Object.keys(e.suggestionThreads||{}).some(function(t){return(e.suggestionThreads[t]||[]).some(function(e){return e.menuOpen})});(n||e.filterPopupOpen)&&t.$applyAsync(function(){n&&e.closeAllItemMenus(),e.filterPopupOpen=!1})}const{loginService:re,apiClient:ae,Notification:se,THUMBOR_SERVER:ce,ConfirmDialog:le,eventBus:ue}=o;let ge=null,fe=null,he=new Set,ye=[],ve=new Map,be=0;const Ie=window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,we=Ie?"instant":"smooth";let Se=!1,Ae=0,Ee=null,Ce=null,Te=null,ke=null;var xe=null;const $e=200;let Me={},_e=null,De=0,Le=new Map,Pe=0,Oe=0,Ne=new Map,Ue=0,Re=null;const Ve=(0,W.Si)(),Be=new Map,qe=new Map;let Ye=[];e.onRemoteCommentsMapChange=function(t){if(!(t&&t.changes&&t.changes.keys&&e.tiptapEditor))return;const n=e.tiptapEditor.getCommentsMap&&e.tiptapEditor.getCommentsMap();n&&(t.changes.keys.forEach(function(e,t){let o=n.get(t);if(o&&"function"==typeof o.toJSON&&(o=o.toJSON()),!o)return void Ne.set(t,{version:++Ue,value:null});if(l(o)&&!Be.has(t))return;const i=Array.isArray(o.replies)?o.replies.filter(function(e){return!(e&&l(e)&&!qe.has(e._id
1))}):[],r=new Set(i.map(function(e){return e._id}));qe.forEach(function(e,n){if(!e.comment||e.comment.id!==t||r.has(n))return;const o=(e.comment.replies||[]).find(function(e){return e._id===n});o&&i.push(o)}),Ne.set(t,{version:++Ue,value:{...o,id:t,replies:i}})}),Re&&clearTimeout(Re),Re=setTimeout(function(){Re=null,Se||Ve.isUnavailable()||j(!0).catch(function(){(0,U.UT)("[collab-comments] Remote comment revalidation failed")})},250))};let He="",je="";const Fe=function(e,t,n,o){function i(e){if(!e)return null;try{let t,n;if(0===e.indexOf("#comment-"))t="comment",n=decodeURIComponent(e.substring(9));else{if(0!==e.indexOf("#suggestion-"))return null;t="suggestion",n=decodeURIComponent(e.substring(12))}const o=n.lastIndexOf(p);return o>0?{type:t,id:n.substring(0,o),replyId:n.substring(o+8)||null}:{type:t,id:n||null,replyId:null}}catch(e){return null}}function r(){m&&clearTimeout(m),m=setTimeout(function(){if(m=null,!s()&&window.location.hash)try{history.replaceState(null,"",window.location.pathname+window.location.search)}catch(e){}},7e3)}function a(){if(s())return;const t=i(window.location.hash);t&&t.id&&(m&&(clearTimeout(m),m=null),d=!1,u=0,e.refreshSuggestionsAndComments&&e.refreshSuggestionsAndComments())}const{isDestroyed:s,setUiTimeout:c,Notification:l}=o;let d=!1,u=0;const p="--reply-";let m=null;return window.addEventListener("hashchange",a),{parseAnchorHash:i,attemptHashScroll:function(){if(d||u>=20)return!1;const t=i(window.location.hash);if(!t||!t.id)return!1;u++;const n=window.location.hash;if("comment"===t.type){const o=e.comments.find(function(e){return e.id===t.id});o&&(d=!0,o.isExpanded=!0,c(function(){s()||window.location.hash===n&&(e.scrollToComment(o),e.highlightCommentInSidebar(t.id,t.replyId),r())},500))}else if("suggestion"===t.type){const o=e.suggestions.find(function(e){return e.suggestionId===t.id});o&&(d=!0,o.isExpanded=!0,c(function(){s()||window.location.hash===n&&(e.scrollToSuggestion(o),e.highlightSuggestionInSidebar(t.id,t.replyId),r())},500))}return!d&&u>=20&&(l.info("ÐомменÑаÑий или пÑавка не найденÑ"),r()),!0},destroy(){window.removeEventListener("hashchange",a),m&&(clearTimeout(m),m=null)}}}(e,0,0,{isDestroyed:function(){return Se},setUiTimeout:i,Notification:se}),We=function(e,t,n){function o(){return e.collabDocumentName?"discours_seen_items:"+e.collabDocumentName:null}function i(){const e=o();if(e){try{const t=localStorage.getItem(e);if(t){const e=JSON.parse(t);if(Array.isArray(e))return void(s=new Set(e))}}catch(e){}s=new Set}}function r(){const e=o();if(e)try{let t=Array.from(s);t.length>2e3&&(t=t.slice(t.length-2e3),s=new Set(t)),localStorage.setItem(e,JSON.stringify(t));const n=localStorage.getItem(d);let o=n?JSON.parse(n):[];Array.isArray(o)||(o=[]);let i=!1;for(let t=0;t<o.length;t++)if(o[t].key===e){o[t].ts=Date.now(),i=!0;break}i||o.push({key:e,ts:Date.now()}),localStorage.setItem(d,JSON.stringify(o)),function(){try{const e=localStorage.getItem(d),t=e?JSON.parse(e):[];if(!Array.isArray(t)||t.length<=50)return;t.sort(function(e,t){return e.ts-t.ts});const n=t.splice(0,t.length-50);for(let e=0;e<n.length;e++)localStorage.removeItem(n[e].key);localStorage.setItem(d,JSON.stringify(t))}catch(e){}}()}catch(e){}}const{apiClient:a}=n;let s=new Set,c=!1;const l=t.$watch(function(){return e.collabDocumentName},function(e){e&&!c&&(i(),c=!0,l())}),d="discours_seen_items_registry";return e.markAllAsSeen=function(){const t=new Set;if(e.comments.forEach(function(e){e.id&&t.add(e.id)}),e.suggestions.forEach(function(e){e.suggestionId&&t.add(e.suggestionId)}),s=t,r(),e.pendingChangesCount=0,e.collabDocumentName)try{a.post("collab/seen/"+e.collabDocumentName,{}).catch(function(){})}catch(e){}},{isSeenId:e=>s.has(e),addSeenId(e){s.add(e)},hasStorageKey:()=>Boolean(o()),loadSeenIds:i,isLoaded:()=>c,markLoaded(){c=!0},persistSeenIds:r,destroy(){"function"==typeof l&&l(),s=new Set,c=!1}}}(e,t,o),ze=20;e.setCommentFilter=function(t){e.commentFilter=t,A(!0)},e.setRemarkFilter=function(t){e.remarkFilter=t,A(!0)},e.filterPopupOpen=!1,e.toggleFilterPopup=function(t){t&&t.stopPropagation(),e.closeAllItemMenus(),e.filterPopupOpen=!e.filterPopupOpen},t.$watch(function(){return e.sidebarVisible},function(t){!t&&e.filterPopupOpen&&(e.filterPopupOpen=!1)}),e.isCommentFilterModified=function(){return"open"!==e.commentFilter||"all"!==e.remarkFilter},e.toggleCommentExpand=function(t){t.isExpanded||(t.isExpanded=!0),t.orphaned||e.scrollToComment(t)},e.toggleCommentDisclosure=function(t){t&&(t.isExpanded?t.isExpanded=!1:e.toggleCommentExpand(t))},e.toggleMarginCard=function(n,o){o&&o.target&&o.target.closest(".margin-reply-form, .margin-card-header-actions, .margin-card-replies")||(n.marginExpanded?n.suggestionId?e.scrollToSuggestion(n):n.orphaned||e.scrollToComment(n):(e.comments.forEac
1h(function(e){e.marginExpanded=!1}),e.suggestions.forEach(function(e){e.marginExpanded=!1}),n.marginExpanded=!0,e.enableMarginTransition&&e.enableMarginTransition(),n.suggestionId?e.scrollToSuggestion(n):e.scrollToComment(n),setTimeout(function(){!Se&&e.marginViewMode&&(e.positionMarginItems&&e.positionMarginItems(),t.$$destroyed||t.$applyAsync())},0)))},e.toggleMarginDisclosure=function(n){n&&(n.marginExpanded?(n.marginExpanded=!1,e.enableMarginTransition&&e.enableMarginTransition(),i(function(){!Se&&e.marginViewMode&&(e.positionMarginItems&&e.positionMarginItems(),t.$$destroyed||t.$applyAsync())},0)):e.toggleMarginCard(n))},e.collapseAllCards=function(){return!(!(e.comments||[]).some(function(e){return e.isExpanded||e.marginExpanded})&&!(e.suggestions||[]).some(function(e){return e.isExpanded||e.marginExpanded})||((e.comments||[]).forEach(function(e){e.isExpanded=!1,e.marginExpanded=!1}),(e.suggestions||[]).forEach(function(t){e.isSuggestionDiscussionUncertain&&e.isSuggestionDiscussionUncertain(t)||(t.isExpanded=!1,t.marginExpanded=!1)}),e.marginViewMode&&setTimeout(function(){Se||(e.positionMarginItems&&e.positionMarginItems(),t.$$destroyed||t.$applyAsync())},0),0))};let Ke=null,Je=!1,Ge=!1;e.collabCommentStoreUnavailable=!1,e.commentRecoveryDrafts=[],e.isCommentWriteBlocked=function(e){return!e||Ve.isBlocked(M(e.id))},e.isCommentWriteUncertain=function(e){return!!e&&Ve.isUncertain(M(e.id))},e.isCommentWritePending=function(e){return!!e&&Ve.isPending(M(e.id))},e.isReplyWriteBlocked=function(e){return!e||Ve.isBlocked(_(e._id))},e.isReplyWriteUncertain=function(e){return!!e&&Ve.isUncertain(_(e._id))},e.isReplyWritePending=function(e){return!!e&&Ve.isPending(_(e._id))},e.isSuggestionReplyWriteBlocked=function(t,n){return!t||Ve.isBlocked(D(t._id))||!!(n&&e.isSuggestionDiscussionBlocked&&e.isSuggestionDiscussionBlocked(n))},e.isSuggestionReplyWriteUncertain=function(e){return!!e&&Ve.isUncertain(D(e._id))},e.isSuggestionReplyWritePending=function(e){return!!e&&Ve.isPending(D(e._id))},Ke=function(e,t,o,i){function r(e){return{state:"confirmed",mutationId:e}}function a(e){return(Array.isArray(e)?e:[]).filter(function(e){return!((t=e)&&t._collabPersistence&&"pending"===t._collabPersistence.state&&!ge.has(e._id
1));var t})}function s(e){return e&&e.data&&"object"==typeof e.data?e.data:e}function c(e){return"suggestion-discussion:"+e}function l(e){return"suggestion-action:"+e}function d(t){return(e.suggestions||[]).find(function(e){return e.suggestionId===t})}function u(t){const n=e.tiptapEditor&&e.tiptapEditor.state&&e.tiptapEditor.state.doc;if(!n||"function"!=typeof n.descendants)return"unknown";let o=!1;try{return n.descendants(function(e){return!(o||!e||(e.attrs&&e.attrs.suggestionId===t||Array.isArray(e.marks)&&e.marks.some(function(e){return e&&e.attrs&&e.attrs.suggestionId===t}))&&(o=!0,1))}),o?"present":"absent"}catch(e){return"unknown"}}function p(e){const t=d(e);return t?(t.isExpanded=!0,t.marginExpanded=!0,K("suggestions"),t):null}function m(e){return!e||j.isEntityBlocked(l(e.suggestionId))}function g(e){return!e||Y()||j.isEntityBlocked(c(e.suggestionId))}function f(){return(e.suggestions||[]).some(m)}function h(t,n){n=a(n);const o=e.suggestionThreads[t]||[],i=new Map;o.forEach(function(e){e&&e._id&&e.isEditing&&i.set(e._id,e.editText)});const r=n.map(function(e){return e&&i.has(e._id)?{...e,isEditing:!0,editText:i.get(e._id)}:e}),s=new Set(r.map(function(e){return e._id})),c=d(t),l=c&&(c.text||c.addText||c.deleteText)||"";if(i.forEach(function(e,n){s.has(n)||z("suggestion-reply-edit:"+t+":"+n,e,l,"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки")}),o.some(function(e){return e._id&&ge.has(e._id)})){const n=o.filter(function(e){return e._id&&ge.has(e._id)&&!s.has(e._id)});e.suggestionThreads[t]=r.concat(n)}else e.suggestionThreads[t]=r}function y(t){if(Q=null,!t&&O()||!e.collabDocumentName||0===G.length)return;const n=G.splice(0),o=D.baseUrl+"/collab/suggestion-created/"+e.collabDocumentName,i=JSON.stringify({suggestionIds:n});if(t)try{return void fetch(o,{method:"POST",body:i,headers:{"Content-Type":"application/json"},keepalive:!0,credentials:"include"}).catch(function(){})}catch(e){}D.post("collab/suggestion-created/"+e.collabDocumentName,{suggestionIds:n}).catch(function(){})}function v(t){try{const n=e.tiptapEditor&&e.tiptapEditor.getYDoc&&e.tiptapEditor.getYDoc(),o=n&&n.getMap("suggestionThreads");let i=o&&o.get(t);i&&"function"==typeof i.toJSON&&(i=i.toJSON());const r=ce.get(t),a=r?null===r.value?"observed-tombstone":"observed":void 0!==i?"populated":"unhydrated";return"observed"===a&&void 0===i&&(i=r.value),{threadsMap:o,value:i,state:a}}catch(e){return{failed:!0}}}function b(t,n,o){o=o||{};const i=u(t);if(!1!==o.requireParent&&"present"!==i)return{parentState:i,applied:!1,replies:[]};const r=v(t);if(r.failed)return{parentState:"unknown",applied:!1,replies:[]};const s=e.suggestionThreads[t]||[];if(o.requireReplyId&&!function(e,t,n,o){return("unhydrated"===e.state?o?t:[]:a(e.value)).some(function(e){return e._id===n})}(r,s,o.requireReplyId,o.allowUnhydratedReply))return{parentState:i,applied:!1,replies:[]};const c=!(!r.threadsMap||"observed-tombstone"===r.state||"unhydrated"===r.state&&!o.allowCreate&&!o.hydrateUnhydrated);let l=null;if(c){if(l=n("unhydrated"===r.state?s.slice():a(r.value)),!Array.isArray(l))return{parentState:i,applied:!1,replies:[]};if(!function(t,n,o){try{return e._isLocalSuggestionThreadUpdate=!0,o.length>0?n.threadsMap.set(t,o):void 0!==n.value&&n.threadsMap.delete(t),!0}catch(e){return(0,U.UT)("[collab-suggestions] Failed to sync patched thread:",(0,W.Ld)(e)),!1}finally{e._isLocalSuggestionThreadUpdate=!1}}(t,r,l))return{parentState:i,applied:!1,replies:[]}}const d=n(s.slice());if(!Array.isArray(d))return{parentState:i,applied:!1,replies:[]};if(d.length>0?e.suggestionThreads[t]=d:delete e.suggestionThreads[t],o.durable){const e=ce.get(t);if(e){const o=n(a(e.value));ce.set(t,{version:++le,value:o.length>0?o:null})}const o=n((oe&&oe.get(t)||[]).slice());Array.isArray(o)&&function(e,t){if(!e)return;const n=a(t),o=n.length>0?n.slice():null,i=++ie;re.set(e,{version:i,value:o}),oe&&(o?oe.set(e,o):oe.delete(e))}(t,o)}return{parentState:i,applied:c||d.length>0||s.length>0,replies:d}}async function S(t){if(!e.collabDocumentName)return;if(Y())return void(e._suggestionThreadsApiLoaded=!0);if(e._suggestionThreadsApiLoaded&&!t)return;if(ne>=3&&!t)return void(0,U.cY)("[loadSuggestionThreadsFromApi] Max retries reached, skipping");(0,U.cY)("[loadSuggestionThreadsFromApi] Loading for:",e.collabDocumentName,t?"(forced)":"");const n=++ae;try{const o=window.__editorPrefetch,i=o&&o.slug,r=e.collabDocumentName.replace("content-item:","");let a,s=-1,c=-1;if(!t&&o&&i===r&&o.suggestions){if(a=await o.suggestions,o.suggestions=null,O()||e.collabDocumentName.replace("content-item:","")!==r)return;if(H(a))return void(e._suggestionThreadsApiLoaded=!0);if(null===a)return void(0,U.cY)("[loadSuggestionThreadsFromApi] Prefetch веÑнÑл null, retry пÑи ÑледÑÑÑем refresh")}else s=ie,c=le,a=await D.getOne("collab/suggestion-threads/"+e.collabDocumentName);if(O())return;const l=function(e){return Array.isArray(e)?e:e&&Array.isArray(e.data)?e.data:null}(a);if((0,U.cY)("[loadSuggestionThreadsFromApi] Loaded",l?l.length:0,"threads from API"),!l)throw new Error("InvalidSuggestionThreadsResponse");if(n<se)return;se=n;const d=function(t,n){const o={};
1return t.forEach(e=>{const t=e.suggestionId;t&&Array.isArray(e.replies)&&(o[t]=e.replies.map(e=>{const t={...e,text:I(e.text)};if(t.authorAvatar)return t;const n=R((e.author||{}).thumborId);return n?{...t,authorAvatar:n}:t}))}),re.forEach(function(e,t){e.version<=n?re.delete(t):e.value?o[t]=e.value.slice():delete o[t]}),Object.keys(o).forEach(e=>{h(e,o[e])}),Object.keys(e.suggestionThreads||{}).forEach(function(t){if(Object.prototype.hasOwnProperty.call(o,t))return;const n=(e.suggestionThreads[t]||[]).filter(function(e){return e&&ge.has(e._id)});n.length>0?e.suggestionThreads[t]=n:delete e.suggestionThreads[t]}),oe=new Map(Object.keys(o).map(function(e){return[e,o[e]]})),Object.keys(o).length}(l,s);c>=0&&ce.forEach(function(e,t){e.version<=c&&ce.delete(t)}),ce.forEach(function(t,n){h(n,t.value||[]),0===(e.suggestionThreads[n]||[]).length&&delete e.suggestionThreads[n]}),(0,U.cY)("[loadSuggestionThreadsFromApi] Merged",d,"threads"),e._suggestionThreadsApiLoaded=!0,ne=0,e.refreshSuggestionsAndComments()}catch(t){H(o=t)?e._suggestionThreadsApiLoaded=!0:(ne++,o&&"AbortError"!==o.name&&(0,U.UT)("[loadSuggestionThreadsFromApi] Failed (attempt",ne+"/3):",o.status||o.statusCode||o.name||"unknown"))}var o}function A(e){try{const t=document.querySelector(`[data-sidebar-suggestion-id="${CSS.escape(e)}"]`);if(!t)return;const n=document.querySelector(".tiptap-sidebar .sidebar-content");if(!n)return;const o=t.getBoundingClientRect(),i=n.getBoundingClientRect();n.scrollTo({top:n.scrollTop+(o.top-i.top)-i.height/3,behavior:q})}catch(e){(0,U.cY)("[_scrollSidebarToSuggestion] Error:",e)}}function E(t){const n=e.tiptapEditor.chain();(0,de.W_)()||n.focus(),n.setTextSelection(t).run()}function C(t){(0,U.UT)("[suggestions] РеÑение по Ñзловой пÑавке не ÑоÑÑоÑлоÑÑ:",t.suggestionId),O()||L.warning((0,V.t)("Ðлок изменилÑÑ â пÑÐ°Ð²ÐºÑ Ð¿ÑимениÑÑ Ð½Ðµ ÑдалоÑÑ. ÐÐ°Ð½ÐµÐ»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð°.")),e.refreshSuggestionsAndComments()}function T(t,n){e.collabDocumentName&&t.authorId&&t.authorId!==e.userId&&D.post("collab/suggestion-action/"+e.collabDocumentName,{suggestionAuthorId:t.authorId,suggestionId:t.suggestionId,action:n}).catch(function(){})}function k(e,n,o){const i=e.suggestionId;z("suggestion-reply:"+i+":"+n,o,e.text||e.addText||e.deleteText||"","ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки"),b(i,function(e){return e.filter(function(e){return e._id!==n})},{requireParent:!1}),ge.delete(n),j.discard(F(n)),j.discard(c(i)),j.discard(l(i));const r=d(i);!O()&&r&&(r.newReplyText=o,e!==r&&(e.newReplyText=o),p(i)),O()||t.$$destroyed||t.$applyAsync()}function x(e){return e.text||e.addText||e.deleteText||""}function M(e,n){O()||(b(e,function(e){return e.filter(function(e){return e._id!==n})},{durable:!0,requireParent:!1}),t.$$destroyed||t.$applyAsync())}const{loginService:_,apiClient:D,Notification:L,ConfirmDialog:P}=o,{isDestroyed:O,setUiTimeout:N,_getAvatarUrl:R,_prefersReducedMotion:B,_scrollBehavior:q,isCollabWriteBlocked:Y,latchCollabUnavailable:H,collabWriteGuard:j,suggestionReplyWriteKey:F,preserveRecoveryDraft:z,revealCollabRecovery:K}=i;let J=new Set,G=[],Q=null,X=!1,Z=!1,ee=null,ne=0,oe=null,ie=0,re=new Map,ae=0,se=0,ce=new Map,le=0,ue=null;const ge=new Set;return e.suggestionMode=!1,e.suggestions=[],e.suggestionThreads={},e._suggestionThreadsApiLoaded=!1,e.suggestionsDisplayLimit=20,e.isSuggestionActionBlocked=m,e.isSuggestionDiscussionBlocked=g,e.isSuggestionDiscussionUncertain=function(e){return!(!e||!j.isUncertain(c(e.suggestionId)))},e.suggestionDiscussionNotice=function(e){if(!e)return null;const t=c(e.suggestionId);return j.isTargetMissing(t)?(0,W.x1)():j.isUncertain(t)?(0,W.TG)():null},e.isSuggestionBulkActionBlocked=f,e.showMoreSuggestions=function(){e.suggestionsDisplayLimit+=20},e.toggleSuggestionExpand=function(t){t.isExpanded||(t.isExpanded=!0),e.scrollToSuggestion(t)},e.toggleSuggestionDisclosure=function(t){t&&(t.isExpanded?t.isExpanded=!1:e.toggleSuggestionExpand(t))},e.setSuggestionMode=async function(o){e.suggestionMode=o;const i=e.getActiveEditor&&e.getActiveEditor();if(i)try{if(ee||(ee=await Promise.resolve().then(n.bind(n,46508))),O()||!i.view||i.isDestroyed)return;if(o&&ee.registerSuggestionAuthor&&e.userId){const t=R(_.userAvatar());ee.registerSuggestionAuthor(e.userId,{name:e.userName||null,slug:_.userPath()||null,avatar:t||null})}const{suggestionModePluginKey:t}=ee;t&&i.view.dispatch(i.state.tr.setMeta(t,{enabled:o,userId:e.userId}))}catch(n){L.error("Ðе ÑдалоÑÑ Ð¿ÐµÑеклÑÑиÑÑ Ñежим пÑавок"),e.suggestionMode=!1,t.$applyAsync()}},e.loadSuggestionThreads=function(t){if(e.tiptapEditor&&e.tiptapEditor.getYDoc)try{const n=e.tiptapEditor.getYDoc();if(!n)return;const o=n.getMap("suggestionThreads");if(t&&t.changes&&t.changes.keys)return t.changes.keys.forEach(function(t,n){let i=o.get(n);i&&"function"==typeof i.toJSON&&(i=i.toJSON());const r=a(i);ce.set(n,{version:++le,value:r.length>0?r:null}),h(n,r),0===(e.suggestionThreads[n]||[]).length&&delete e.suggestionThreads[n]}),ue&&clearTimeout(ue),void(ue=setTimeout(function(){ue=null,O()||Y()||S(!0).catch(function(){(0,U.UT)("[collab-suggestions] Remote thread revalidation failed")})},250));if(oe)return;const i={};let r=!1;o.forEach((e,t)=>{let n=e;n&&"function"==typeof n.toJSON&&(n=n.toJSON());const o=a(n);o.length>0&&(i[t]=o,r=!0)}
1),r&&Object.keys(i).forEach(e=>{h(e,i[e])})}catch(e){(0,U.UT)("[loadSuggestionThreads] Failed to load from Y.js:",e)}},e.scrollToSuggestion=function(t){if(!e.tiptapEditor)return;const n=e.tiptapEditor.view.dom;let o=n.querySelector(`[data-suggestion-id="${CSS.escape(t.suggestionId)}"]`);if(!o&&t.isNode&&void 0!==t.from)try{const n=e.tiptapEditor.view.domAtPos(t.from);if(n&&n.node){const e=1===n.node.nodeType?n.node:n.node.parentElement;e&&e.getAttribute&&e.getAttribute("data-suggestion-type")&&(o=e)}}catch(e){}if(o){var i=o.getBoundingClientRect(),r=(0,de.kj)();window.scrollTo({top:window.pageYOffset+i.top-r,behavior:q});var a={add:"rgba(40, 167, 69, 0.4)",delete:"rgba(220, 53, 69, 0.4)",replace:"rgba(13, 110, 253, 0.4)",format:"rgba(255, 193, 7, 0.4)","node-add":"rgba(23, 162, 184, 0.4)","node-delete":"rgba(232, 62, 140, 0.4)","node-update":"rgba(111, 66, 193, 0.4)"},s=[o],c=[a[t.type]||"rgba(220, 53, 69, 0.4)"];if("replace"===t.type&&t._addSuggestionId){var l=n.querySelector(`[data-suggestion-id="${CSS.escape(t._addSuggestionId)}"]`);l&&(s.push(l),c[0]=a.delete,c.push(a.add))}var d=B?"none":"background-image 0.3s ease",u=[];s.forEach(function(e,t){e.style.transition=d,u.push(e.style.backgroundImage),e.style.backgroundImage="linear-gradient("+c[t]+", "+c[t]+")",e.style.backgroundSize="100% 1.2em",e.style.backgroundPosition="center",e.style.backgroundRepeat="no-repeat"}),N(()=>{O()||s.forEach(function(e,t){e&&e.parentNode&&(e.style.backgroundImage=u[t],e.style.backgroundSize="",e.style.backgroundPosition="",e.style.backgroundRepeat="")})},1500);try{const t=e.tiptapEditor.view.posAtDOM(o,0);void 0!==t&&t>=0&&E(t)}catch(e){void 0!==t.from&&E(t.from)}A(t.suggestionId)}else void 0!==t.from&&(E(t.from),N(()=>{if(!O()&&e.tiptapEditor)try{const n=e.tiptapEditor.view.coordsAtPos(t.from);n&&window.scrollTo({top:n.top-(0,de.kj)(),behavior:q})}catch(e){}},100),A(t.suggestionId))},e.acceptSuggestion=function(t){if(!e.tiptapEditor||m(t))return;const n=e.tiptapEditor.commands;if("replace"===t.type)n.acceptSuggestionReplace(t.suggestionId,t._addSuggestionId);else if(t.isNode){if(!function(e,t){if(!t||!t.suggestionId)return(0,U.UT)("[acceptNodeSuggestion] Missing suggestion or suggestionId"),!1;const{doc:n,tr:o}=e.state;let i=!1,r=!1;return n.descendants((e,n)=>{if(r)return!1;if(e.attrs&&e.attrs.suggestionId===t.suggestionId){if(r=!0,"node-add"===t.type)o.setNodeMarkup(n,void 0,(0,me.lg)(e.attrs));else if("node-delete"===t.type)o.delete(n,n+e.nodeSize);else{if("node-update"!==t.type)return void(0,U.UT)("[acceptNodeSuggestion] Unknown node suggestion type:",t.type);{const t=(0,me.JV)(e.attrs);if(!t)return!1;o.setNodeMarkup(n,void 0,t)}}return i=!0,!1}}),i?e.view.dispatch(o):(0,U.UT)("[acceptNodeSuggestion] Узел не найден или Ñип неизвеÑÑен:",t.suggestionId),i}(e.tiptapEditor,t))return void C(t)}else if("add"===t.type)n.acceptSuggestionAdd(t.suggestionId);else if("format"===t.type&&n.acceptSuggestionFormat){const o=w(e.tiptapEditor,t.suggestionId);n.acceptSuggestionFormat(t.suggestionId),"paragraphBreak"===t.formatType&&o&&function(e,t){try{const{doc:n,tr:o}=e.state;n.textBetween(t,Math.min(t+1,n.content.size),"")===te.PARAGRAPH_BREAK_MARKER&&(o.delete(t,t+1),e.view.dispatch(o))}catch(e){(0,U.cY)("[cleanupParagraphBreakMarker] Error:",e)}}(e.tiptapEditor,o.from),te.BLOCK_FORMAT_TYPES.includes(t.formatType)&&e.tiptapEditor.enforceBlockFormatExclusion&&e.tiptapEditor.enforceBlockFormatExclusion(t.formatType,t.formatAction)}else n.acceptSuggestionDelete(t.suggestionId);e.refreshSuggestionsAndComments(),T(t,"accepted")},e.rejectSuggestion=function(t){if(!e.tiptapEditor||m(t))return;const n=e.tiptapEditor.commands;if("replace"===t.type)n.rejectSuggestionReplace(t.suggestionId,t._addSuggestionId);else if(t.isNode){if(!function(e,t){if(!t||!t.suggestionId)return(0,U.UT)("[rejectNodeSuggestion] Missing suggestion or suggestionId"),!1;const{doc:n,tr:o}=e.state;let i=!1;return n.descendants((e,n)=>{if(i)return!1;if(e.attrs&&e.attrs.suggestionId===t.suggestionId){if("node-add"===t.type)o.delete(n,n+e.nodeSize);else{if("node-delete"!==t.type&&"node-update"!==t.type)return void(0,U.UT)("[rejectNodeSuggestion] Unknown node suggestion type:",t.type);o.setNodeMarkup(n,void 0,(0,me.lg)(e.attrs))}return i=!0,!1}}),i?e.view.dispatch(o):(0,U.UT)("[rejectNodeSuggestion] Узел не найден или Ñип неизвеÑÑен:",t.suggestionId),i}(e.tiptapEditor,t))return void C(t)}else if("add"===t.type)n.rejectSuggestionAdd(t.suggestionId);else if("format"===t.type&&n.rejectSuggestionFormat){const o=w(e.tiptapEditor,t.suggestionId);n.rejectSuggestionFormat(t.suggestionId),o&&te.BLOCK_FORMAT_TYPES.includes(t.formatType)&&e.tiptapEditor.revertBlockFormat&&e.tiptapEditor.revertBlockFormat(t.formatType,t.formatAction,t.formatValue,o.from,o.to,t.originalValue||null)}else n.rejectSuggestionDelete(t.suggestionId);e.refreshSuggestionsAndComments(),T(t,"rejected")},e.acceptAllSuggestions=function(){e.tiptapEditor&&!f()&&P.open({title:"ÐÑинÑÑÑ Ð²Ñе пÑавки?",message:"ÐÑе пÑедложеннÑе пÑавки бÑдÑÑ Ð¿ÑинÑÑÑ Ð¸ пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ñ Ðº докÑменÑÑ",confirmText:"ÐÑинÑÑÑ Ð²Ñе",cancelText:"ÐÑмена",type:"info"}).then(function(){if(O()||!e.tiptapEditor||f())return;const n=(0,pe.extractSuggestions)(e.tiptapEditor).all;e.tiptapEditor.acceptAllSuggestions();const o=new Set((0,pe.extractSuggestions)(e.tiptapEditor).all.map(e=>e.suggestionId)),i={};
1n.forEach(function(t){o.has(t.suggestionId)||!t.authorId||t.authorId===e.userId||i[t.authorId]||(i[t.authorId]=!0,T(t,"accepted"))}),n.some(e=>o.has(e.suggestionId))&&L.warning((0,V.t)("ЧаÑÑÑ Ð¿Ñавок не пÑинÑÑа: иÑÑ
одное знаÑение изменилоÑÑ. СвеÑÑÑе иÑ
заново.")),e.refreshSuggestionsAndComments(),t.$applyAsync()}).catch(P.onDismissed("[acceptAllSuggestions]"))},e.rejectAllSuggestions=function(){e.tiptapEditor&&!f()&&P.open({title:"ÐÑклониÑÑ Ð²Ñе пÑавки?",message:"ÐÑе пÑедложеннÑе пÑавки бÑдÑÑ Ð¾ÑÐºÐ»Ð¾Ð½ÐµÐ½Ñ Ð¸ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸Ð· докÑменÑа",confirmText:"ÐÑклониÑÑ Ð²Ñе",cancelText:"ÐÑмена",type:"danger"}).then(function(){if(O()||!e.tiptapEditor||f())return;const n={};(e.suggestions||[]).forEach(function(t){t.authorId&&t.authorId!==e.userId&&!n[t.authorId]&&(n[t.authorId]=!0,T(t,"rejected"))}),e.tiptapEditor.rejectAllSuggestions(),e.refreshSuggestionsAndComments(),t.$applyAsync()}).catch(P.onDismissed("[rejectAllSuggestions]"))},e.addSuggestionReply=function(n){if(Y()||g(n))return;const o=n.newReplyText;if(!o||!o.trim())return;const i=_.userAvatar(),a=R(i),d="sreply_"+Date.now()+"_"+Math.random().toString(36).slice(2,11);ge.add(d);const m={_id:d,text:o.trim(),author:{_id:e.userId,name:e.userName,path:_.userPath()},authorAvatar:a,createdAt:(new Date).toISOString(),_collabPersistence:e.collabDocumentName?(f=d,{state:"pending",mutationId:f,startedAt:Date.now()}):r(d)};var f;const h=n.suggestionId;if(!b(h,function(e){return e.concat(m)},{allowCreate:!0}).applied)return ge.delete(d),void z("suggestion-reply:"+h+":"+d,o.trim(),x(n),"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки");if(n.newReplyText="",e.collabDocumentName){const i={text:o.trim()};n.authorId&&(i.suggestionAuthorId=n.authorId),j.trackCreate(F(d),function(){return D.post("collab/suggestion-threads/"+e.collabDocumentName+"/"+h+"/reply",i)},[c(h),l(h)]).then(function(i){if("confirmed"!==i.kind)return"unavailable"===i.kind?(k(n,d,o.trim()),void H(i.error)):void("uncertain"===i.kind&&function(e,n,o,i){const r=e.suggestionId;if(i&&404===i.status)return k(e,n,o),j.markTargetMissing(c(r)),void(O()||L.warning((0,W.x1)()));O()||(z("suggestion-reply:"+r+":"+n,o,x(e),"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки"),p(r),(0,U.UT)("[addSuggestionReply] Reply persistence outcome is uncertain:",(0,W.Ld)(i)),L.warning((0,W.Yd)(i)),t.$applyAsync())}(n,d,o.trim(),i.error));(function(n,o,i,a){if(O())return;const c=n.suggestionId,l=s(a)||{};if("present"!==u(c))return z("suggestion-reply:"+c+":"+o,i,x(n),"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки"),b(c,function(e){return e.filter(function(e){return e._id!==o})},{requireParent:!1}),ge.delete(o),void e.refreshSuggestionsAndComments();const d=l._id||o,p=Object.prototype.hasOwnProperty.call(l,"text")?I(l.text):i,m=b(c,function(t){return t.some(function(e){return e._id===d&&d!==o})?t.filter(function(e){return e._id!==o}):t.some(function(e){return e._id===o})?t.map(function(e){return e._id!==o?e:{...e,_id:d,text:p,_collabPersistence:r(d),...l.updatedAt&&{updatedAt:l.updatedAt},...l.createdAt&&{createdAt:l.createdAt}}}):t.concat({_id:d,text:p,author:{_id:e.userId,name:e.userName,path:_.userPath()},createdAt:l.createdAt||(new Date).toISOString(),...l.updatedAt&&{updatedAt:l.updatedAt},_collabPersistence:r(d)})},{allowCreate:!0,durable:!0});ge.delete(o),m.applied||z("suggestion-reply:"+c+":"+o,i,x(n),"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки"),(0,U.cY)("[addSuggestionReply] Reply saved to backend"),t.$applyAsync()})(n,d,o.trim(),i.value)}).catch(function(){(0,U.UT)("[addSuggestionReply] Failed to process backend outcome")})}t.$applyAsync()},e.deleteSuggestionReply=function(n,o){if(!o||!o._id||Y()||g(n)||j.isBlocked(F(o._id)))return;if(!e.canDeleteReply(o))return void L.warning("ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑдалÑÑÑ ÑолÑко Ñвои оÑвеÑÑ");const i=n.suggestionId;e.suggestionThreads[i]&&(e.collabDocumentName?j.trackMutation(F(o._id),function(){return D.remove("collab/suggestion-threads/"+e.collabDocumentName+"/"+i+"/reply/"+o._id)},function(){M(i,o._id)},[c(i),l(i)]).then(function(e){"confirmed"!==e.kind?"absent"!==e.kind?"unavailable"!==e.kind?O()||
1(p(i),(0,U.UT)("[deleteSuggestionReply] Delete outcome is uncertain:",(0,W.Ld)(e.error)),j.markUncertain(F(o._id),e.error),L.warning((0,W.Yd)(e.error)),t.$applyAsync()):H(e.error):(0,U.cY)("[deleteSuggestionReply] Reply already absent from backend"):(0,U.cY)("[deleteSuggestionReply] Reply deleted from backend")}).catch(function(){(0,U.UT)("[deleteSuggestionReply] Failed to process backend outcome")}):M(i,o._id))},e.saveEditSuggestionReply=function(n,o){function i(){const t=e.suggestionThreads[n.suggestionId];if(!Array.isArray(t))return null;const i=t.find(function(e){return e._id===o._id});return i?{reply:i,thread:t}:null}function r(e){if(O())return;const r=s(e)||{},c=Object.prototype.hasOwnProperty.call(r,"text")?I(r.text):a;let l=!1;if(!b(n.suggestionId,function(e){return e.map(function(e){return e._id!==o._id?e:(l=!0,r.updatedAt&&e.updatedAt&&Date.parse(e.updatedAt)>Date.parse(r.updatedAt)?e:{...e,text:c,...r.updatedAt&&{updatedAt:r.updatedAt}})})},{durable:!0,requireReplyId:o._id,allowUnhydratedReply:d,hydrateUnhydrated:d}).applied||!l)return void z("suggestion-reply-edit:"+n.suggestionId+":"+o._id,a,x(n),"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки");const u=i();u&&(u.reply.isEditing=!1,delete u.reply.editText),t.$$destroyed||t.$applyAsync()}if(Y()||g(n)||j.isBlocked(F(o&&o._id)))return;const a=(o.editText||"").trim();if(!a)return;const d="unhydrated"===v(n.suggestionId).state;if(!e.collabDocumentName)return void r();const u={text:a};o.updatedAt&&(u.expectedUpdatedAt=o.updatedAt),j.trackMutation(F(o._id),function(){return D.put("collab/suggestion-threads/"+e.collabDocumentName+"/"+n.suggestionId+"/reply/"+o._id,null,u)},function(e){"confirmed"===e.kind&&r(e.value)},[c(n.suggestionId),l(n.suggestionId)]).then(function(e){if("confirmed"===e.kind||"blocked"===e.kind)return;if(z("suggestion-reply-edit:"+n.suggestionId+":"+o._id,a,n.text||n.addText||n.deleteText||"","ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки"),"unavailable"===e.kind){const t=i();return t?(t.reply.isEditing=!0,t.reply.editText=a,p(n.suggestionId)):K("comments"),void H(e.error)}if(O())return;const r=i();if(!r)return void K("comments");p(n.suggestionId),"absent"!==e.kind&&(j.markUncertain(F(r.reply._id),e.error),j.markUncertain(c(n.suggestionId),e.error));let s=(0,W.Yd)(e.error);if(e.error&&409===e.error.status){const t=e.error.data&&e.error.data.data;t&&t.serverUpdatedAt&&(r.reply.updatedAt=t.serverUpdatedAt)}else"absent"===e.kind&&(s=(0,W.x1)());r.reply.isEditing=!0,r.reply.editText=a,L.warning(s),t.$$destroyed||t.$applyAsync()}).catch(function(){(0,U.UT)("[saveEditSuggestionReply] Failed to process backend outcome")}),t.$$destroyed||t.$applyAsync()},{loadSuggestionThreadsFromApi:S,rollbackPendingCreates:function(){const t=[];Object.keys(e.suggestionThreads||{}).forEach(function(n){((e.suggestionThreads||{})[n]||[]).forEach(function(e){e&&ge.has(e._id)&&j.isPending(F(e._id))&&t.push({suggestionId:n,reply:e})})}),t.forEach(function(e){k(d(e.suggestionId)||{suggestionId:e.suggestionId},e.reply._id,e.reply.text||"")})},trackNewSuggestions:function(t){if(!e.userId||!e.collabDocumentName)return;if(!X){X=!0;for(let n=0;n<t.length;n++){const o=t[n];o.authorId===e.userId&&o.suggestionId&&J.add(o.suggestionId)}return}J.size>500&&(Z||(Z=!0,(0,U.UT)("[collab-suggestions] _notifiedSuggestionIds доÑÑиг лимиÑа (500), ÑбÑаÑÑваем Set и пÑодолжаем ÑÑекинг")),J.clear(),Z=!1);let n=!1;for(let o=0;o<t.length;o++){const i=t[o];i.authorId===e.userId&&i.suggestionId&&!J.has(i.suggestionId)&&(J.add(i.suggestionId),G.push(i.suggestionId),n=!0)}n&&!Q&&(Q=setTimeout(y,1e4))},destroy(){Q&&(clearTimeout(Q),Q=null),G.length>0&&y(!0),J.clear(),G.length=0,X=!1,ge.clear(),oe=null,re.clear(),ce.clear(),ue&&(clearTimeout(ue),ue=null),ee&&ee.clearSuggestionAuthors&&ee.clearSuggestionAuthors(),ee=null}}}(e,t,o,{isDestroyed:()=>Se,setUiTimeout:i,_getAvatarUrl:E,_prefersReducedMotion:Ie,_scrollBehavior:we,isCollabWriteBlocked:()=>Ve.isUnavailable(),latchCollabUnavailable:L,collabWriteGuard:Ve,suggestionReplyWriteKey:D,preserveRecoveryDraft:N,revealCollabRecovery:P}),e.comments=[],e.filteredComments=[],e.marginComments=[],e.commentFilter="open",e.remarkFilter="all",e.commentsDisplayLimit=ze,e.showMoreComments=function(){e.commentsDisplayLimit+=ze},e.ensureItemVisible=function(t,n){let o,i,r;"comment"===t?(o=e.filteredComments,i="id",r="commentsDisplayLimit"):(o=e.suggestions,i="suggestionId",r="suggestionsDisplayLimit");for(let t=0;t<o.length;t++)if(o[t][i]===n&&t>=e[r])return e[r]=t+1,!0;return!1},e.commentsLoading=!0;const Qe=setTimeout(function(){e.commentsLoading&&(e.commentsLoading=!1,t&&!t.$$destroyed&&t.$applyAsync())},15e3);t.$on("$destroy",function(){clearTimeout(Qe),Te&&(clearTimeout(Te),Te=null),xe&&(clearTimeout(xe),xe=null)}),e.pendingChangesCount=0,e._commentsApiLoaded=!1,e._commentsApiReloadScheduled=!1,e.refreshSuggestionsAndComments=function(){Se||(fe&&clearTimeout(fe),fe=setTimeout(()=>{fe=null,async function(){if(!Se&&e.tiptapEditor)try{if(ge||(ge=await Promise.resolve().then(n.bind(n,60150))),Se)return;const i=function(e){const t=new Map;
1return(e||[]).forEach(function(e){e&&e.id&&t.set(e.id,{isEditing:!!e.isEditing,editText:e.editText,newReplyText:e.newReplyText,quotedText:e.quotedText,replies:z(e.replies)})}),t}(e.comments),r=function(t){const n=new Map;return(t||[]).forEach(function(t){t&&t.suggestionId&&n.set(t.suggestionId,{newReplyText:t.newReplyText,suggestionText:t.text||t.addText||t.deleteText||"",replies:z((e.suggestionThreads||{})[t.suggestionId])})}),n}(e.suggestions),a=ge.extractAll(e.tiptapEditor),s=(a.comments||[]).filter(function(t){const n=t.id||t.commentId;return!function(e){const t=Ne.get(e);return!(!t||null!==t.value)}(n)&&!function(t){if(Be.has(t))return!1;try{const n=e.tiptapEditor&&e.tiptapEditor.getCommentsMap&&e.tiptapEditor.getCommentsMap();let o=n&&n.get(t);return o&&"function"==typeof o.toJSON&&(o=o.toJSON()),l(o)}catch(e){return!1}}(n)&&(!_e||_e.has(n)||Be.has(n))}),c=re.userPath(),d=re.userAvatar();if(e.collabDocumentName){const n=!e._commentsApiLoaded,o=!e._suggestionThreadsApiLoaded;n&&o?Promise.allSettled([j(),Ke.loadSuggestionThreadsFromApi()]).then(function(n){var o=!1;n.forEach(function(e,t){if("rejected"===e.status){if(ae.isCanceled&&ae.isCanceled(e.reason))return;o=!0}}),o&&(e._apiLoadError=!0,t.$applyAsync(),e._apiRetryAttempted||Se||(e._apiRetryAttempted=!0,setTimeout(function(){Se||(e._apiLoadError=!1,e._commentsApiLoaded=!1,e._suggestionThreadsApiLoaded=!1,j().catch(function(e){}),Ke&&Ke.loadSuggestionThreadsFromApi&&Ke.loadSuggestionThreadsFromApi().catch(function(e){}))},5e3)))}).catch(function(){}):n?j():o&&Ke.loadSuggestionThreadsFromApi()}const u=e.tiptapEditor.getCommentsMap?e.tiptapEditor.getCommentsMap():null,p=e=>e?/^[a-z0-9-]+$/.test(e)&&e.includes("-")?e.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):e:null,m=e.userName||"ÐÑ",h=new Set((e.comments||[]).filter(e=>e.marginExpanded).map(e=>e.id)),y=new Set((e.comments||[]).filter(e=>e.isExpanded).map(e=>e.id)),v=new Set(s.map(e=>e.id||e.commentId));u&&("function"==typeof u.keys?Array.from(u.keys()):[]).forEach(function(e){v.add(e)});var o=Object.keys(Me);if(o.length>50&&(o.forEach(function(e){v.has(e)||delete Me[e]}),Ye=Ye.filter(function(e){return Me[e]}),Ye.length>$e&&Ye.splice(0,Ye.length-$e).forEach(function(e){delete Me[e]})),e.comments=s.map(t=>{const n=t.id||t.commentId,o=t.authorId===e.userId;let r=null;o&&d&&(r=E(d));const a=g(u,n),s=ve.get(n),l=S(n,t,a);return J({...t,id:n,resolved:l.resolved,rejected:l.rejected,orphaned:s?s.prevOrphaned:t.orphaned,text:a&&a.text||"",quotedText:t.quotedText||a&&a.quotedText||"",authorName:p(t.authorName)||p(a&&a.authorName)||(o?m:"ÐвÑоÑ"),authorSlug:t.authorSlug||a&&a.authorSlug||(o?c:null),authorAvatar:t.authorAvatar||a&&a.authorAvatar||r,createdAt:t.createdAt||a&&a.createdAt||null,updatedAt:a&&a.updatedAt,replies:f(n)?a&&a.replies||[]:Me[n]||a&&a.replies||t.replies||[],isRemark:!(!a||!a.isRemark),marginExpanded:h.has(n),isExpanded:y.has(n)},i.get(n))}),u){const t=new Set(e.comments.map(e=>e.id)),n=function(e){if("function"==typeof e.entries)return Array.from(e.entries());if("function"==typeof e.forEach){const t=[];return e.forEach((e,n)=>t.push([n,e])),t}return"object"==typeof e&&null!==e?Object.entries(e):[]}(u),o=a.textIndex,r=[];if(n.forEach(([n,a])=>{if(t.has(n))return;if(_e&&!_e.has(n)&&!Be.has(n))return;const s=g(u,n,a);if(!s||!s.text)return;const c=ve.get(n),l=S(n,null,s),d="string"==typeof s.quotedText?s.quotedText:"",m=d.trim()?function(e,t){if(!e||!t||"string"!=typeof t||!t.trim())return null;var n=t.trim(),o=e.text,i=o.indexOf(n);if(-1!==i){var r=i+n.length-1;if(r<e.posMap.length)return{from:e.posMap[i],to:e.posMap[r]+1}}for(var a=n.toLowerCase().replace(/\s+/g," "),s=[],c=[],l=!1,d=0;d<o.length;d++){var u=o[d].toLowerCase();/\s/.test(u)?(l||(s.push(" "),c.push(d)),l=!0):(s.push(u),c.push(d),l=!1)}var p=s.join("").indexOf(a);if(-1===p)return null;var m=p+a.length-1;if(p<0||m>=c.length)return null;var g=c[p],f=c[m];return g<0||f<0||g>=e.posMap.length||f>=e.posMap.length?((0,U.UT)("[_findInDocIndex] Out of bounds: origFrom
1="+g+", origTo="+f+", posMap.length="+e.posMap.length),null):{from:e.posMap[g],to:e.posMap[f]+1}}(o,d):null;m&&r.push({from:m.from,to:m.to,attrs:{commentId:n,resolved:!!s.resolved,authorId:s.author&&s.author._id||null,authorName:s.authorName||null,authorSlug:s.authorSlug||null,authorAvatar:s.authorAvatar||null}}),e.comments.push(J({id:n,commentId:n,text:s.text,quotedText:d,authorId:s.author&&s.author._id||null,authorName:p(s.authorName)||"ЧиÑаÑелÑ",authorSlug:s.authorSlug||null,authorAvatar:s.authorAvatar||null,resolved:l.resolved,rejected:l.rejected,isRemark:!!s.isRemark,replies:f(n)?s.replies||[]:Me[n]||s.replies||[],createdAt:s.createdAt,updatedAt:s.updatedAt,from:m?m.from:void 0,to:m?m.to:void 0,orphaned:c?c.prevOrphaned:!m||!!s.rejected,marginExpanded:h.has(n),isExpanded:y.has(n)},i.get(n)))}),r.length>0&&!0===e.canEdit)try{const t=e.tiptapEditor.schema.marks.comment;if(t){const n=e.tiptapEditor.state.doc.content.size,o=Object.create(null);for(let e=0;e<s.length;e++){const t=s[e],n=t.commentId||t.id;n&&null!=t.from&&(o[n]={from:t.from,to:t.to})}const i=r.filter(function(e){if(e.from>=n||e.to>n||e.from>=e.to)return!1;const t=o[e.attrs.commentId];return!t||!(t.from<e.to&&t.to>e.from)});if(i.length>0){const{tr:n}=e.tiptapEditor.state;i.forEach(function(e){n.addMark(e.from,e.to,t.create(e.attrs))}),n.setMeta("remarkMarksInternal",!0),e.tiptapEditor.view.dispatch(n),(0,U.cY)("[remarkMarks] Added",i.length,"comment marks for remarks (skipped",r.length-i.length,"existing)")}}}catch(e){(0,U.cY)("[remarkMarks] Failed to add comment marks:",e)}e.comments.sort((e,t)=>{if(e.resolved!==t.resolved)return e.resolved?1:-1;if(e.orphaned!==t.orphaned)return e.orphaned?1:-1;if(e.orphaned&&t.orphaned){const n=e.createdAt?new Date(e.createdAt).getTime():0,o=t.createdAt?new Date(t.createdAt).getTime():0,i=Number.isNaN(n)?0:n,r=Number.isNaN(o)?0:o;return r!==i?r-i:e.id<t.id?-1:e.id>t.id?1:0}const n=null!=e.from?e.from:1/0,o=null!=t.from?t.from:1/0;return n!==o?n-o:e.id<t.id?-1:e.id>t.id?1:0})}(function(e,t){const n=new Map((t||[]).map(function(e){return[e.id,e]}));e.forEach(function(e,t){const o=n.get(t);o||(e.isEditing&&N("comment-edit:"+t,e.editText,e.quotedText,"ÐомменÑаÑий"),N("comment-reply-draft:"+t,e.newReplyText,e.quotedText,"ÐÑÐ²ÐµÑ Ð½Ð° комменÑаÑий"));const i=new Set((o&&o.replies||[]).map(function(e){return e._id}));e.replies.forEach(function(n,o){n.isEditing&&!i.has(o)&&N("comment-reply:"+t+":"+o,n.editText,e.quotedText,"ÐÑÐ²ÐµÑ Ð½Ð° комменÑаÑий")})})})(i,e.comments),e._commentsApiLoaded&&!e._commentsApiReloadScheduled&&e.collabDocumentName&&e.comments.length>0&&e.comments.some(e=>!e.text)&&((0,U.cY)("[staleDetection] Found comments without text, scheduling forced reload"),e._commentsApiReloadScheduled=!0,j(!0));const b=ge.extractSuggestions(e.tiptapEditor),I=new Set((e.suggestions||[]).filter(e=>e.marginExpanded).map(e=>e.suggestionId)),w=new Set((e.suggestions||[]).filter(e=>e.isExpanded).map(e=>e.suggestionId));let C=null;const T=function(){if(C)return C;C=Object.create(null);const t=function(e,t,n,o){if(!e||"anonymous"===e)return;const i=C[e]||(C[e]={});t&&!i.name&&(i.name=t),n&&!i.slug&&(i.slug=n),o&&!i.avatar&&(i.avatar=o)};(e.comments||[]).forEach(function(e){t(e.authorId,e.authorName,e.authorSlug,e.authorAvatar),(e.replies||[]).forEach(function(e){t(e.author&&e.author._id,e.author&&e.author.name,e.author&&e.author.path,e.authorAvatar)})}),Object.keys(e.suggestionThreads||{}).forEach(function(n){(e.suggestionThreads[n]||[]).forEach(function(e){t(e.author&&e.author._id,e.author&&e.author.name,e.author&&e.author.path,e.authorAvatar)})});try{const n=e.tiptapEditor.getProvider&&e.tiptapEditor.getProvider();
1n&&n.awareness&&n.awareness.getStates().forEach(function(e){const n=e&&e.user;n&&n.id&&t(n.id,n.name,n.slug,n.avatar)})}catch(e){(0,U.UT)("[collab-comments] awareness недоÑÑÑпен Ð´Ð»Ñ ÐºÐ°Ñалога авÑоÑов:",e)}return C},k=(b.all||[]).map(t=>{const n=t.authorId===e.userId,o=n||!t.authorId||t.authorName&&t.authorSlug&&t.authorAvatar?null:T()[t.authorId];let i=null;n&&d&&(i=E(d));const a=r.get(t.suggestionId);return{...t,authorName:n?m:p(t.authorName)||o&&p(o.name)||"РедакÑоÑ",authorSlug:n?c:t.authorSlug||o&&o.slug||null,authorAvatar:n?i:t.authorAvatar||o&&o.avatar||null,marginExpanded:I.has(t.suggestionId),isExpanded:w.has(t.suggestionId),newReplyText:a?a.newReplyText:t.newReplyText}});e.suggestions=k,Ke.trackNewSuggestions(k),We.hasStorageKey()&&!We.isLoaded()&&(We.loadSeenIds(),We.markLoaded()),xe&&clearTimeout(xe),xe=setTimeout(function(){xe=null,A()},100),e.loadSuggestionThreads(),function(t,n){const o=new Set((n||[]).map(function(e){return e.suggestionId}));t.forEach(function(t,n){const i=o.has(n);i||N("suggestion-reply-draft:"+n,t.newReplyText,t.suggestionText,"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки");const r=new Set((i&&(e.suggestionThreads||{})[n]||[]).map(function(e){return e._id}));t.replies.forEach(function(e,o){e.isEditing&&!r.has(o)&&N("suggestion-reply-edit:"+n+":"+o,e.editText,t.suggestionText,"ТекÑÑ Ð¾ÑвеÑа на обÑÑждение пÑавки")})})}(r,e.suggestions);const x=e.comments.map(function(e){var t=(e.text||"").substring(0,20);return e.id+":"+(e.resolved?"1":"0")+":"+t+":"+(e.replies?e.replies.length:0)+":"+(e.orphaned?"1":"0")}).join("|"),M=e.suggestions.map(function(e){var t=e.text?e.text.length:0;return"replace"===e.type&&(t=(e.deleteText||"").length+":"+(e.addText||"").length),e.suggestionId+":"+e.type+":"+t}).join("|");x===He&&M===je||(He=x,je=M,t.$applyAsync()),Fe.attemptHashScroll()}catch(n){e.comments=[],e.filteredComments=[],e.marginComments=[],e.visibleMarginComments=[],e.suggestions=[],e.visibleMarginSuggestions=[],e.pendingChangesCount=0,He="",je="",t.$applyAsync()}}().then(()=>{Se||e.marginViewMode&&e.positionMarginItems&&setTimeout(function(){e.positionMarginItems(),t.$$destroyed||t.$applyAsync()},60)}).catch(n=>{Se||(e.comments=e.comments||[],e.suggestions=e.suggestions||[],t.$applyAsync())})},300))},e.addComment=function(){if(!e.tiptapEditor)return;if(Ve.isUnavailable())return;if(e.quietMode)return;const{selection:o}=e.tiptapEditor.state;if(o.empty)return void se.info("ÐÑделиÑе ÑекÑÑ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиÑ");const i=e.tiptapEditor.state.doc.textBetween(o.from,o.to);Promise.all([n.e(411),n.e(753)]).then(n.bind(n,83135)).then(n=>{n.openCommentModal({quotedText:i,onSave:n=>{const o="cmt_"+Date.now()+"_"+Math.random().toString(36).slice(2,11);if(Ve.isUnavailable())return R({id:o,text:n,quotedText:i}),void(t.$$destroyed||t.$applyAsync());const r=E(re.userAvatar()),a=re.userPath();e.tiptapEditor.chain().focus().setComment({commentId:o,authorId:e.userId,authorName:e.userName,authorSlug:a,authorAvatar:r}).run();const l={id:o,text:n,quotedText:i,authorId:e.userId,authorName:e.userName,authorSlug:a,authorAvatar:r,createdAt:(new Date).toISOString(),resolved:!1,replies:[],_collabPersistence:e.collabDocumentName?s(o):c(o)};if(e.tiptapEditor&&e.tiptapEditor.getCommentsMap)try{const t=e.tiptapEditor.getCommentsMap();if(t){var d=Object.assign({},l);l.replies&&(d.replies=l.replies.slice()),t.set(o,d)}}catch(e){(0,U.UT)("[addComment] Failed to save to commentsMap:",e)}e.comments.push(l),A(),e.collabDocumentName?((0,U.cY)("[addComment] POST to backend:",e.collabDocumentName,o),Y(l,function(){return ae.post("collab/comments/"+e.collabDocumentName,{commentId:o,text:n,quotedText:i})}).then(function(e){"confirmed"===e.kind&&(0,U.cY)("[addComment] Comment persisted to backend OK")}).catch(function(){(0,U.UT)("[addComment] Failed to process backend outcome")})):(0,U.UT)("[addComment] No collabDocumentName â cannot persist to backend"),e.quietMode||(e.sidebarVisible=!0,e.sidebarTab="comments"),t.$applyAsync()}})}).catch(e=>{se.error("Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð¼Ð¾Ð´ÑÐ»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев")})},e.scrollToComment=function(t){if(!e.tiptapEditor)return;const n=e.tiptapEditor.view.dom.querySelector(`[data-comment-id="${CSS.escape(t.id)}"]`);if(n){var o=n.getBoundingClientRect(),r=(0,de.kj)();window.scrollTo({top:window.pageYOffset+o.top-r,behavior:we}),n.style.transition=Ie?"none":"background-image 0.3s ease";var a=n.style.backgroundImage;n.style.backgroundImage="linear-gradient(rgba(255, 193, 7, 0.6), rgba(255, 193, 7, 0.6))",n.style.backgroundSize="100% 1.2em",n.style.backgroundPosition="center",n.style.backgroundRepeat="no-repeat",i(()=>{Se||n.parentNode&&(n.style.backgroundImage=a,n.style.backgroundSize="",n.style.backgroundPosition="",n.style.backgroundRepeat="")},1500);try{const t=e.tiptapEditor.view.posAtDOM(n,0);void 0!==t&&t>=0&&Q(t)}catch(n){let o=!1;e.tiptapEditor.state.doc.descendants((e,n)=>!o&&(e.marks&&e.marks.find(e=>
1"comment"===e.type.name&&e.attrs.commentId===t.id)?(o=!0,Q(n),!1):void 0))}G(t.id)}else{let n=null;e.tiptapEditor.state.doc.descendants((e,o)=>{if(e.marks&&!n&&e.marks.find(e=>"comment"===e.type.name&&e.attrs.commentId===t.id))return n=o,!1});let o=n;null===o&&null!=t.from&&(o=t.from),null!==o&&(Q(o),i(()=>{if(!Se&&e.tiptapEditor)try{const t=e.tiptapEditor.view.coordsAtPos(o);t&&window.scrollTo({top:t.top-(0,de.kj)(),behavior:we})}catch(e){(0,U.UT)("[scrollToComment] Could not get coords:",e)}},100)),G(t.id)}},e.resolveComment=function(e){return Z(e,!0)},e.unresolveComment=function(e){return Z(e,!1)},e.deleteComment=function(n){e.isCommentWriteBlocked(n)||le.open({message:"ÐÑ ÑвеÑенÑ, ÑÑо Ñ
оÑиÑе ÑдалиÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий?",confirmText:"УдалиÑÑ",cancelText:"ÐÑмена",type:"danger"}).then(function(){Se||e.isCommentWriteBlocked(n)||(e.collabDocumentName?Ve.trackMutation(M(n.id),function(){return ae.remove("collab/comments/"+e.collabDocumentName+"/"+n.id)},function(){ee(n)}).then(function(e){"confirmed"!==e.kind?"absent"!==e.kind?"unavailable"!==e.kind?Se||(H(n,e.error),(0,U.UT)("[deleteComment] Delete outcome is uncertain:",(0,W.Ld)(e.error)),se.warning((0,W.Yd)(e.error)),t.$$destroyed||t.$applyAsync()):L(e.error):(0,U.cY)("[deleteComment] Comment already absent from backend"):(0,U.cY)("[deleteComment] Comment deleted from backend")}).catch(function(){(0,U.UT)("[deleteComment] Failed to process backend outcome")}):ee(n))}).catch(le.onDismissed("[deleteComment]"))},e.addReply=function(n){if(e.isCommentWriteBlocked(n))return;const o=n.newReplyText;if(!o||!o.trim())return;const i=E(re.userAvatar()),r=re.userPath(),a="reply_"+Date.now()+"_"+Math.random().toString(36).slice(2,11),l={_id:a,text:o.trim(),author:{_id:e.userId,name:e.userName,path:r},authorAvatar:i,createdAt:(new Date).toISOString(),_collabPersistence:e.collabDocumentName?s(a):c(a)},u=l._id,p=o.trim(),m=n.id;e.collabDocumentName&&qe.set(u,{comment:n,replyText:p});const g=x(m,function(e){return e.some(function(e){return e._id===u})?e:e.concat(l)});if(!g)return qe.delete(u),void B(n,u,p);g.comment!==n&&(n.replies=g.replies.slice()),n.newReplyText="",e.collabDocumentName&&Ve.trackCreate(_(u),function(){return ae.post("collab/comments/"+e.collabDocumentName+"/"+m+"/reply",{text:p})},[M(m)]).then(function(o){(function(n,o,i,r,a){if("confirmed"!==n.kind){if("unavailable"===n.kind)return oe(o,r,a),void L(n.error);if("uncertain"===n.kind)404===(n.error&&n.error.status)?(oe(o,r,a),Se||se.warning((0,W.x1)())):Se||(B(o,r,a),O(i),(0,U.UT)("[addReply] Reply persistence outcome is uncertain:",(0,W.Ld)(n.error)),se.warning((0,W.Yd)(n.error)),t.$applyAsync())}else(function(n,o,i,r){if(Se)return;const a=d(r)||{},s=(n.replies||[]).find(function(e){return e._id===i}),l=a._id||i,u=Object.prototype.hasOwnProperty.call(a,"text")?I(a.text):s&&s.text||"";let p=!1;if(!x(o,function(e){return e.some(function(e){return e._id===l&&l!==i})?(p=!0,e.filter(function(e){return e._id!==i})):e.some(function(e){return e._id===i})?(p=!0,e.map(function(e){return e._id!==i?e:{...e,_id:l,text:u,_collabPersistence:c(l),...a.updatedAt&&{updatedAt:a.updatedAt},...a.createdAt&&{createdAt:a.createdAt}}})):(p=!0,e.concat({...s||{},_id:l,text:u,_collabPersistence:c(l),...a.updatedAt&&{updatedAt:a.updatedAt},...a.createdAt&&{createdAt:a.createdAt}}))},null,{durable:!0})||!p)return function(n,o,i,r){B(n,i,r);const a=(e.comments||[]).find(function(e){return e.id===o});[n,a].filter(Boolean).forEach(function(e){e.replies=(e.replies||[]).filter(function(e){return e._id!==i})}),Object.prototype.hasOwnProperty.call(Me,o)&&(Me[o]=(Me[o]||[]).filter(function(e){return e._id!==i})),Ve.discard(_(i)),Ve.discard(M(o)),qe.delete(i),!Se&&a&&O(o),Se||t.$$destroyed||t.$applyAsync()}(n,o,i,u),void(0,U.cY)("[addReply] Parent disappeared before reply confirmation");s&&(s._id=l,s._collabPersistence=c(l)),j(!0),(0,U.cY)("[addReply] Reply saved to backend"),t.$applyAsync()})(o,i,r,n.value)})(o,n,m,u,p),"uncertain"===o.kind&&(!o.error||404!==o.error.status)||qe.delete(u)}).catch(function(){qe.delete(u),B(n,u,p),(0,U.UT)("[addReply] Failed to process backend outcome")}
1),t.$applyAsync()},e.deleteReply=function(n,o){o&&o._id&&!e.isCommentWriteBlocked(n)&&!e.isReplyWriteBlocked(o)&&(e.canDeleteReply(o)?e.collabDocumentName?Ve.trackMutation(_(o._id),function(){return ae.remove("collab/comments/"+e.collabDocumentName+"/"+n.id+"/reply/"+o._id)},function(){ne(n,o._id)},[M(n.id)]).then(function(e){"confirmed"!==e.kind?"absent"!==e.kind?"unavailable"!==e.kind?Se||((0,U.UT)("[deleteReply] Delete outcome is uncertain:",(0,W.Ld)(e.error)),Ve.markUncertain(_(o._id),e.error),se.warning((0,W.Yd)(e.error)),t.$applyAsync()):L(e.error):(0,U.cY)("[deleteReply] Reply already absent from backend"):(0,U.cY)("[deleteReply] Reply deleted from backend")}).catch(function(){(0,U.UT)("[deleteReply] Failed to process backend outcome")}):ne(n,o._id):se.warning("ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑдалÑÑÑ ÑолÑко Ñвои оÑвеÑÑ"))},e.canDeleteReply=function(t){return!!t&&(!!e.isAdmin||(!(!e.contentItemCreatorId||e.contentItemCreatorId!==e.userId)||(t.authorId||t.author&&t.author._id)===e.userId))},e.canModerate=function(){return!!e.isAdmin||!(!e.contentItemCreatorId||e.contentItemCreatorId!==e.userId)},e.canDeleteComment=function(t){return!!e.userId&&(!!e.isAdmin||(!(!e.contentItemCreatorId||e.contentItemCreatorId!==e.userId)||(t.authorId||t.author&&t.author._id)===e.userId))},e.canEditComment=function(t){return!!e.userId&&(t.authorId||t.author&&t.author._id)===e.userId},e.canEditReply=function(t){return!(!e.userId||!t)&&(t.authorId||t.author&&t.author._id)===e.userId},e.closeAllItemMenus=function(){(e.comments||[]).forEach(function(e){e.menuOpen=!1,(e.replies||[]).forEach(function(e){e.menuOpen=!1})}),Object.keys(e.suggestionThreads||{}).forEach(function(t){(e.suggestionThreads[t]||[]).forEach(function(e){e.menuOpen=!1})})},e.toggleItemMenu=function(t,n){n.stopPropagation();const o=t.menuOpen;e.closeAllItemMenus(),t.menuOpen=!o},document.addEventListener("click",ie),e.startEditComment=function(t){e.canEditComment(t)&&!e.isCommentWriteBlocked(t)&&(t.isEditing=!0,t.editText=t.text)},e.cancelEditComment=function(t){e.isCommentWritePending(t)||(t.isEditing=!1,delete t.editText)},e.saveEditComment=function(n){function o(){return(e.comments||[]).find(function(e){return e.id===n.id})}function i(e,i){if(Se)return;const a=d(e)||{},s=v(n.id,a,i);if(s.superseded)return N("comment-edit:"+n.id,r,n.quotedText),void b(n.id,s,r);const c=o();if(!c)return void N("comment-edit:"+n.id,r,n.quotedText);const l=Object.prototype.hasOwnProperty.call(a,"text")?I(a.text):r;c.text=l,c.isEditing=!1,delete c.editText,a.updatedAt&&(c.updatedAt=a.updatedAt),F(c.id,{text:l,...a.updatedAt&&{updatedAt:a.updatedAt}}),t.$$destroyed||t.$applyAsync()}if(e.isCommentWriteBlocked(n))return;const r=(n.editText||"").trim();if(!r)return;if(!e.collabDocumentName)return void i();const a={text:r};n.updatedAt&&(a.expectedUpdatedAt=n.updatedAt);const s=y(n.id);Ve.trackMutation(M(n.id),function(){return ae.put("collab/comments/"+e.collabDocumentName+"/"+n.id,null,a)},function(e){"confirmed"===e.kind&&i(e.value,s)},[M(n.id)]).then(function(e){if("confirmed"===e.kind||"blocked"===e.kind)return;if(N("comment-edit:"+n.id,r,n.quotedText),"unavailable"===e.kind){const t=o();return t?(t.isEditing=!0,t.editText=r,O(n.id)):N("comment-edit:"+n.id,r,n.quotedText),void L(e.error)}if(Se)return;const i=o();if(!i)return void N("comment-edit:"+n.id,r,n.quotedText);O(n.id),"absent"!==e.kind&&H(i,e.error);let a=(0,W.Yd)(e.error);if(e.error&&409===e.error.status){const t=e.error.data&&e.error.data.data;t&&t.serverUpdatedAt&&(i.updatedAt=t.serverUpdatedAt)}else"absent"===e.kind&&((0,U.cY)("[saveEditComment] Comment not found on backend:",n.id),a=(0,W.x1)());i.isEditing=!0,i.editText=r,se.warning(a),t.$$destroyed||t.$applyAsync()}).catch(function(){(0,U.UT)("[saveEditComment] Failed to process backend outcome")}),t.$$destroyed||t.$applyAsync()},e.onCommentEditKeydown=function(t,n){if(t&&n)return(t.ctrlKey||t.metaKey||t.altKey)&&"Enter"===t.key?(t.preventDefault(),void e.saveEditComment(n)):void("Escape"===t.key&&(t.stopPropagation(),e.cancelEditComment(n)))},e.onSuggestionReplyKeydown=function(t,n){t&&n&&(t.ctrlKey||t.metaKey||t.altKey)&&"Enter"===t.key&&(t.preventDefault(),e.addSuggestionReply(n))},e.onSuggestionReplyEditKeydown=function(t,n,o){if(t&&n&&o)return(t.ctrlKey||t.metaKey||t.altKey)&&"Enter"===t.key?(t.preventDefault(),void e.saveEditSuggestionReply(n,o)):void("Escape"===t.key&&(t.stopPropagation(),e.cancelEditReply(o)))},e.onReplyKeydown=function(t,n){t&&n&&(t.ctrlKey||t.metaKey||t.altKey)&&"Enter"===t.key&&(t.preventDefault(),e.addReply(n))},e.onReplyEditKeydown=function(t,n,o){if(t&&n&&o)return(t.ctrlKey||t.metaKey||t.altKey)&&"Enter"===t.key?(t.preventDefault(),void e.saveEditReply(n,o)):void("Escape"===t.key&&e.cancelEditReply(o))},e.startEditReply=function(t,n){e.isReplyWriteBlocked(t)||e.isSuggestionReplyWriteBlocked(t,n)||(t.isEditing=!0,t.editText=t.text)},e.cancelEditReply=function(t){e.isReplyWritePending(t)||e.isSuggestionReplyWritePending(t)||(t.isEditing=!1,delete t.editText)},e.saveEditReply=function(n,o){function i(){const t=(e.comments||[]).find(function(e){return e.id===n.id});if(!t)return null;const i=(t.replies||[]).find(function(e){return e._id===o._id});
1return i?{comment:t,reply:i}:null}function r(e){if(Se)return;const r=d(e)||{},s=Object.prototype.hasOwnProperty.call(r,"text")?I(r.text):a;let c=!1;if(!x(n.id,function(e){return e.map(function(e){return e._id!==o._id?e:(c=!0,r.updatedAt&&e.updatedAt&&Date.parse(e.updatedAt)>Date.parse(r.updatedAt)?e:{...e,text:s,...r.updatedAt&&{updatedAt:r.updatedAt}})})},null,{durable:!0,requireReplyId:o._id})||!c)return void B(n,o._id,a);const l=i();l&&(l.reply.isEditing=!1,delete l.reply.editText),t.$$destroyed||t.$applyAsync()}if(e.isCommentWriteBlocked(n)||e.isReplyWriteBlocked(o))return;const a=(o.editText||"").trim();if(!a)return;if(!e.collabDocumentName)return void r();const s={text:a};o.updatedAt&&(s.expectedUpdatedAt=o.updatedAt),Ve.trackMutation(_(o._id),function(){return ae.put("collab/comments/"+e.collabDocumentName+"/"+n.id+"/reply/"+o._id,null,s)},function(e){"confirmed"===e.kind&&r(e.value)},[M(n.id)]).then(function(e){if("confirmed"===e.kind||"blocked"===e.kind)return;if(B(n,o._id,a),"unavailable"===e.kind){const t=i();return t?(t.reply.isEditing=!0,t.reply.editText=a,O(t.comment.id)):B(n,o._id,a),void L(e.error)}if(Se)return;const r=i();if(!r)return void B(n,o._id,a);O(r.comment.id),"absent"!==e.kind&&function(e,t,n){e&&(Ve.markUncertain(_(e._id),n),t&&Ve.markUncertain(M(t.id),n))}(r.reply,r.comment,e.error);let s=(0,W.Yd)(e.error);if(e.error&&409===e.error.status){const t=e.error.data&&e.error.data.data;t&&t.serverUpdatedAt&&(r.reply.updatedAt=t.serverUpdatedAt)}else"absent"===e.kind&&((0,U.cY)("[saveEditReply] Parent comment not found:",n.id),s=(0,W.x1)());r.reply.isEditing=!0,r.reply.editText=a,se.warning(s),t.$$destroyed||t.$applyAsync()}).catch(function(){(0,U.UT)("[saveEditReply] Failed to process backend outcome")}),t.$$destroyed||t.$applyAsync()},e.rejectComment=function(n){function o(){return(e.comments||[]).find(function(e){return e.id===n.id})||n}function r(){ve.delete(n.id);const e=o();e.resolved=h.prevResolved,e.rejected=h.prevRejected,e.orphaned=h.prevOrphaned,Se||(A(),t.$$destroyed||t.$applyAsync())}function a(){if(Se)return;const e=document.querySelectorAll("margin"===f?"[data-margin-comment-id]":"[data-sidebar-comment-id]");for(let t=0;t<e.length;t++){const o=e[t];if((o.getAttribute("data-margin-comment-id")||o.getAttribute("data-sidebar-comment-id"))===n.id)continue;const i=o.querySelector("button:not([disabled]), a[href], textarea:not([disabled])");if(i)return void i.focus()}const t="margin"===f?document.querySelector("[data-collab-margin-region]"):document.querySelector("[data-collab-comments-tab], [data-collab-comments-region]");t&&"function"==typeof t.focus&&t.focus()}function s(e){T&&k&&T.removeEventListener("click",k),x&&_&&x.removeEventListener("click",_),T=null,k=null,x=null,_=null,e&&C&&C.kill&&C.kill(!0),e&&(C=null)}function c(i,r){const a=o(),s=d(i&&i.value)||{},c=v(n.id,s,r);if(c.superseded)b(n.id,c);else{if(e.tiptapEditor)try{e.tiptapEditor.commands.removeComment(a.id)}catch(e){}if(I)try{I.delete(a.id)}catch(e){}a.resolved=!0,a.rejected=!0,a.orphaned=!0,s.updatedAt&&(a.updatedAt=s.updatedAt),i&&"absent"===i.kind?m(a.id):p(a.id,u(a,{resolved:!0,rejected:!0,...s.updatedAt&&{updatedAt:s.updatedAt}})),ve.delete(a.id),A(),Se||se.success((0,V.t)("ÐомменÑаÑий оÑклонÑн")),t.$$destroyed||t.$applyAsync()}}if(!e.canModerate())return;if(e.isCommentWriteBlocked(n))return;if(Se)return;const l=M(n.id);if(!Ve.reserveMutation(l))return;const g=document.activeElement,f=g&&g.getAttribute?g.getAttribute("data-collab-reject-surface"):null,h={prevResolved:n.resolved,prevRejected:n.rejected,prevOrphaned:n.orphaned};ve.set(n.id,h);let I=null;if(e.tiptapEditor&&e.tiptapEditor.getCommentsMap)try{I=e.tiptapEditor.getCommentsMap()}catch(e){(0,U.UT)("[rejectComment] Failed to access commentsMap:",(0,W.Ld)(e))}(function(){const e=o();e.rejected=!0,e.resolved=!0,e.orphaned=h.prevOrphaned,A()})();let w=!1,S=!1,E=null,C=null,T=null,k=null,x=null,_=null;h.cleanupUndoUi=function(){s(!0)},E=setTimeout(function(){const i=ye.indexOf(E);if(-1!==i&&ye.splice(i,1),w||S)return;S=!0;const d=!(!T||document.activeElement!==T);if(s(!0),d&&a(),Ve.isUnavailable())return Ve.releaseMutation(l),void r();if(!Se&&e.collabDocumentName){Ve.releaseMutation(l);const i={rejected:!0},a=o();a.updatedAt&&(i.expectedUpdatedAt=a.updatedAt);const s=y(n.id);Ve.trackMutation(l,function(){return ae.put("collab/comments/"+e.collabDocumentName+"/"+n.id,null,i)}
1,function(e){Se||c(e,s)}).then(function(e){if("confirmed"!==e.kind&&"absent"!==e.kind)return"unavailable"===e.kind?(L(e.error),void r()):void("blocked"!==e.kind?Se||((0,U.UT)("[rejectComment] Reject outcome is uncertain:",(0,W.Ld)(e.error)),se.warning((0,W.Yd)(e.error)),t.$applyAsync()):r());"absent"===e.kind&&(0,U.cY)("[rejectComment] Comment already absent from backend")}).catch(function(){(0,U.UT)("[rejectComment] Failed to process backend outcome")}),t.$$destroyed||t.$applyAsync()}else Se||(Ve.releaseMutation(l),c({kind:"confirmed",value:null}))},1e4),ye.push(E);const D="undo-reject-"+ ++be;C=se.info({message:(0,V.t)("ÐомменÑаÑий бÑÐ´ÐµÑ Ð¾ÑклонÑн")+' <button type="button" class="notification-undo-btn '+D+'">'+(0,V.t)("ÐÑмениÑÑ")+"</button>",delay:1e4}),i(function(){if(Se||S)return;if(T=document.querySelector("."+D),!T)return;k=function(){if(Se||w||S)return;w=!0,s(!0),clearTimeout(E),Ve.releaseMutation(l);const e=ye.indexOf(E);-1!==e&&ye.splice(e,1),r(),i(function(){if(Se)return;if(g&&g!==document.body&&g!==document.documentElement&&document.documentElement.contains(g)&&"function"==typeof g.focus)return void g.focus();const e=document.querySelectorAll("[data-collab-reject-id]");for(let t=0;t<e.length;t++){const o=e[t];if(o.getAttribute("data-collab-reject-id")===n.id&&(!f||o.getAttribute("data-collab-reject-surface")===f))return void o.focus()}},0),se.info((0,V.t)("ÐÑклонение оÑменено"))},T.addEventListener("click",k,{once:!0});const e=T.closest(".ui-notification");x=e&&e.querySelector(".ui-notification-dismiss"),x&&(_=function(){Se||w||S||a()},x.addEventListener("click",_,{once:!0})),T.focus()},0),t.$applyAsync()};const Xe=t.$watch(function(){return e.tiptapEditor},function(n){if(!n||!n.extensionManager)return;const o=n.extensionManager.extensions.find(function(e){return"commentBubbleMenu"===e.name});o&&(o.options.canAddComment=function(){return!Ve.isUnavailable()},o.options.onCommentBlocked=function(e){R({id:"blocked_"+Date.now(),text:e&&e.text,quotedText:e&&e.quotedText||""}),t.$$destroyed||t.$applyAsync()},o.options.onCommentAdd=function(n,o){if(!Se){if((0,U.cY)("[onCommentAdd] Bubble menu comment created:",n),Ve.isUnavailable())return R(o),q(o),void(t.$$destroyed||t.$applyAsync());e.collabDocumentName&&((0,U.cY)("[onCommentAdd] POST to backend:",e.collabDocumentName,n),o._collabPersistence=o._collabPersistence||s(n),F(n,{_collabPersistence:o._collabPersistence},{durable:!1}),Y(o,function(){return ae.post("collab/comments/"+e.collabDocumentName,{commentId:n,text:o.text,quotedText:o.quotedText})}).then(function(e){"confirmed"===e.kind&&(0,U.cY)("[onCommentAdd] Comment persisted to backend OK")}).catch(function(){(0,U.UT)("[onCommentAdd] Failed to process backend outcome")})),e.comments.find(e=>e.id===n)||(e.comments.push(o),A()),e.quietMode||(e.sidebarVisible=!0,e.sidebarTab="comments"),t.$applyAsync()}},Xe())});return{loadCommentsFromApi:j,loadSuggestionThreadsFromApi:e=>Ke.loadSuggestionThreadsFromApi(e),destroy(){Se=!0,clearTimeout(Qe),fe&&(clearTimeout(fe),fe=null),he.forEach(clearTimeout),he.clear(),ye.forEach(function(e){clearTimeout(e)}),ye=[],ve.forEach(function(e){e&&e.cleanupUndoUi&&e.cleanupUndoUi()}),ve.clear(),r(),ke&&(ke(),ke=null),Ke.destroy(),ge=null,Me={},_e=null,Le.clear(),Ne.clear(),Re&&(clearTimeout(Re),Re=null),We.destroy(),Xe(),document.removeEventListener("click",ie),Fe.destroy()}}}function A(e,t,n){function o(){var e=i();e&&(e.classList.add("margin-animating"),clearTimeout(P),P=setTimeout(function(){P=null,e.isConnected&&e.classList.remove("margin-animating")},300))}function i(){return O&&O.isConnected?O:O=document.querySelector(".margin-items-column")}function r(){return document.querySelector(".tiptap-sidebar")}function a(){const e=r();e&&(e.classList.remove("sheet-full"),clearTimeout(X),X=setTimeout(function(){X=null,e.style.height=""},300))}function s(){const e=r();e&&(e.style.height="",e.classList.toggle("sheet-full"))}function c(e){if(!G)return;const t=G.startY-e.clientY;Math.abs(t)>6&&(G.moved=!0);const n=.94*window.innerHeight,o=Math.min(Math.max(G.startHeight+t,60),n);G.sheet.style.height=o+"px"}function l(n){(function(n){if(!G)return;const o=G;G=null,n.removeEventListener("pointermove",c),n.removeEventListener("pointerup",l),n.removeEventListener("pointercancel",l);const i=o.sheet;
1if(i.classList.remove("sheet-dragging"),Q=Date.now()+500,!o.moved)return void s();const r=i.offsetHeight,d=window.innerHeight;if(r<.3*d)return i.classList.remove("sheet-full"),e.sidebarVisible=!1,a(),void t.$applyAsync();i.style.height="",i.classList.toggle("sheet-full",r>.72*d)})(n.currentTarget)}function d(e,t,n,o){e&&(S&&A&&S.isConnected&&S.classList.remove(A),w&&clearTimeout(w),null!==n&&e.scrollIntoView({behavior:I,block:n||"center"}),e.classList.add(t),S=e,A=t,w=setTimeout(function(){w=null,e.isConnected&&e.classList.remove(t),S=null,A=null},o||2500))}function u(e,t,n,o,i){const r=document.querySelector(e);if(!r)return!1;const a=r.querySelector("["+t+'="'+CSS.escape(n)+'"]');return!!a&&(d(a,o,i),!0)}function p(t,n){const o="comment"===t?"id":"suggestionId";return("comment"===t?e.comments||[]:e.suggestions||[]).filter(function(e){return e[o]===n})[0]}function m(e,t){const n=p(e,t);return n&&!n.isExpanded&&(n.isExpanded=!0),n}function g(t,n){if(t&&"comment"===n&&e.setCommentFilter){const n=t.resolved?"resolved":"open";e.commentFilter!==n&&e.setCommentFilter(n)}}function f(e,t,n){if(!e)return;const o=n||0;E&&clearTimeout(E),E=setTimeout(function(){E=null;const n=t?document.querySelector(t):document;if(!n)return;const i=n.querySelector('[data-reply-id="'+CSS.escape(e)+'"]');i?d(i,"sidebar-item-highlight","center",3e3):o<ne.length-1&&f(e,t,o+1)},ne[o]||500)}function h(e,n){const o=setTimeout(function(){C=C.filter(function(e){return e!==o}),t.$$destroyed||(e(),t.$applyAsync())},n);return C.push(o),o}function y(n,o,i,r){e.sidebarVisible=!0,e.sidebarTab=n;const a="comments"===n?"comment":"suggestion";g(m(a,i),a);const s=e.ensureItemVisible&&e.ensureItemVisible(a,i);e.refreshSuggestionsAndComments(),e.markAllAsSeen(),h(function(){u(".tiptap-sidebar",o,i,"sidebar-item-highlight","center")?r&&r.replyId&&f(r.replyId,".tiptap-sidebar"):h(function(){u(".tiptap-sidebar",o,i,"sidebar-item-highlight","center"),r&&r.replyId&&f(r.replyId,".tiptap-sidebar")},100)},s?100:50),h(function(){(function(t,n){if(!(0,de.W_)())return;const o=e.tiptapEditor;if(!o||!o.view)return;const i=o.view.dom.querySelector("["+("comment"===t?"data-comment-id":"data-suggestion-id")+'="'+CSS.escape(n)+'"]');if(!i)return;const r=document.querySelector(".tiptap-sidebar.visible");if(!r)return;const a=r.getBoundingClientRect().top,s=i.getBoundingClientRect();s.top>=70&&s.bottom<=a-16||window.scrollTo({top:window.pageYOffset+s.top-(0,de.kj)(),behavior:I})})(a,i)},350),t.$applyAsync()}function v(){var e=t.contentItem&&t.contentItem._id;if(e)try{(0,ge.F)("notifications.markAsRead",e,"suggestions")}catch(e){}}function b(n,i,r){if(!i||e.quietMode)return;if(e.collabSyncPending)return void(D={itemType:n,itemId:i,opts:r});"suggestion"===n&&v();const a=n+"s",s="data-sidebar-"+n+"-id";e.sidebarVisible?function(n,o,i,r){const a=e.sidebarTab===n;e.sidebarTab=n,e.markAllAsSeen();const s="comments"===n?"comment":"suggestion";g(m(s,i),s),h(function(){u(".tiptap-sidebar",o,i,"sidebar-item-highlight","center")||a?r&&r.replyId&&f(r.replyId,".tiptap-sidebar"):(e.refreshSuggestionsAndComments(),h(function(){u(".tiptap-sidebar",o,i,"sidebar-item-highlight","center"),r&&r.replyId&&f(r.replyId,".tiptap-sidebar")},100))},e.ensureItemVisible&&e.ensureItemVisible(s,i)?100:50),t.$applyAsync()}(a,s,i,r):window.innerWidth<1280?y(a,s,i,r):function(n,i,r){const a=p(n,i);if("comment"===n&&a&&(a.resolved||a.rejected||a.orphaned))return void y(n+"s","data-sidebar-"+n+"-id",i,r);const s=!e.marginViewMode;s&&(e.marginViewMode=!0),function(t,n){if("comment"===t){if(!e.visibleMarginComments.some(function(e){return e.id===n})){const t=(e.marginComments||[]).find(function(e){return e.id===n});t&&(e.visibleMarginComments=e.visibleMarginComments.concat([t]),R="")}}else if("suggestion"===t&&!e.visibleMarginSuggestions.some(function(e){return e.suggestionId===n})){const t=(e.suggestions||[]).find(function(e){return e.suggestionId===n});t&&(e.visibleMarginSuggestions=e.visibleMarginSuggestions.concat([t]),V="")}}(n,i),e.refreshSuggestionsAndComments(),h(e.positionMarginItems,s?100:60);const c="data-margin-"+n+"-id";h(function(){const t=a||p(n,i);t&&!t.marginExpanded&&(o(),e.toggleMarginCard(t)),d(document.querySelector("["+c+'="'+CSS.escape(i)+'"]'),"margin-item-highlight",null),r&&r.replyId&&f(r.replyId,null)},s?250:80),t.$applyAsync()}(n,i,r)}const I=window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches?"instant":"smooth";e.sidebarVisible=!1,e.sidebarTab="comments";let w=null,S=null,A=null,E=null,C=[],T=null,k=null,x=null,M=null,_=null,D=null;e.marginViewMode=!1;try{"1"===localStorage.getItem("discours_margin_view")&&window.innerWidth>=1280&&(e.marginViewMode=!0)}catch(e){}let L=null,P=null;e.enableMarginTransition=o,e.toggleMarginView=function(){if(!e.quietMode||e.marginViewMode){e.marginViewMode=!e.marginViewMode,F=!1,(0,U.cY)("[marginView] Ñежим:",e.marginViewMode,"| комменÑаÑиев:",(e.comments||[]).length,"| пÑавок:",(e.suggestions||[]).length);try{localStorage.setItem("discours_margin_view",e.marginViewMode?"1":"0")}catch(e){}L&&(clearTimeout(L),L=null),O=null,N=null,R="",V="",e.marginViewMode&&(e.sidebarVisible=!1,e.refreshSuggestionsAndComments(),L=setTimeout(function(){L=null,e.positionMarginItems()},100)),t.$applyAsync()}};var O=null,N=null,R="",V="";
1const B=1500;let q=!1,Y=0,H=null;e.visibleMarginComments=[],e.visibleMarginSuggestions=[],e.resetVirtualScrollCache=function(){R="",V=""},e.positionMarginItems=function(){function n(e){if(e in h)return h[e];try{h[e]=o.view.coordsAtPos(e).top}catch(t){(0,U.cY)("[positionMarginItems] coordsAtPos failed for pos="+e+":",t.message),h[e]=null}return h[e]}if(!e.marginViewMode)return;const o=e.tiptapEditor;if(!o||!o.view)return;const r=i();if(!r)return;const a=r.getBoundingClientRect(),s=a.top,c=a.bottom,l=function(e){if(null!==N)return N;const t=e.querySelector(".margin-item-card");if(t){const e=parseInt(window.getComputedStyle(t).minHeight,10);if(!isNaN(e)&&e>0)return N=e}return 80}(r),d=e.marginComments||[],u=e.suggestions||[],p=d.length+u.length>20,m=p?[]:null,g=p?[]:null,f=[],h=Object.create(null);if(d.forEach(function(e){if(null==e.from)return;const t=n(e.from);null!==t&&(p&&(e.marginExpanded||t>=s-B&&t<=c+B)&&m.push(e.id),t>=s-500&&t<=c&&f.push({key:"c-"+e.id,y:t-s}))}),u.forEach(function(e){if(null==e.from)return;const t=n(e.from);null!==t&&(p&&(e.marginExpanded||t>=s-B&&t<=c+B)&&g.push(e.suggestionId),t>=s-500&&t<=c&&f.push({key:"s-"+e.suggestionId,y:t-s}))}),p){const n=m.join(","),o=g.join(",");let i=!1;if(n!==R){R=n;const t=new Set(m);e.visibleMarginComments=d.filter(function(e){return t.has(e.id)}),i=!0}if(o!==V){V=o;const t=new Set(g);e.visibleMarginSuggestions=u.filter(function(e){return t.has(e.suggestionId)}),i=!0}i&&!q&&Y<2?(q=!0,Y++,clearTimeout(H),H=setTimeout(function(){Y=0},500),t.$applyAsync(function(){q=!1,requestAnimationFrame(function(){e.positionMarginItems(),Y=0,clearTimeout(H)})})):Y>=2&&(Y=0)}else e.visibleMarginComments===d&&e.visibleMarginSuggestions===u||(e.visibleMarginComments=d,e.visibleMarginSuggestions=u,t.$applyAsync());f.sort(function(e,t){return e.y-t.y});const y={};r.querySelectorAll("[data-margin-comment-id]").forEach(function(e){y["c-"+e.getAttribute("data-margin-comment-id")]=e}),r.querySelectorAll("[data-margin-suggestion-id]").forEach(function(e){y["s-"+e.getAttribute("data-margin-suggestion-id")]=e});const v={};f.forEach(function(e){const t=y[e.key];v[e.key]=t&&t.offsetHeight>0?Math.max(l,t.offsetHeight):l});const b={};for(var I=new Set,w=0;w<d.length;w++)d[w].marginExpanded&&I.add("c-"+d[w].id);for(var S=0;S<u.length;S++)u[S].marginExpanded&&I.add("s-"+u[S].suggestionId);for(var A=-1,E=0;E<f.length;E++)if(I.has(f[E].key)){A=E;break}var C=-l;if(A>=0){b[f[A].key]=f[A].y;for(var T=f[A].y+v[f[A].key]+6,k=A+1;k<f.length;k++){var x=Math.max(f[k].y,T);T=x+v[f[k].key]+6,b[f[k].key]=x}for(var M=f[A].y-6,_=A-1;_>=0;_--){var D=Math.max(C,Math.min(f[_].y,M-v[f[_].key]));b[f[_].key]=D,M=D-6}}else{var L=-1/0;f.forEach(function(e){var t=Math.max(e.y,L);L=t+v[e.key]+6,b[e.key]=t})}Object.keys(y).forEach(function(e){const t=y[e];Object.prototype.hasOwnProperty.call(b,e)?(t.style.transform="translateY("+b[e]+"px)",t.style.display="block"):t.style.display="none"})};let j=null;var F=!1;const W=function(){clearTimeout(j),j=setTimeout(function(){const n=window.innerWidth>=1280;if(!n&&e.marginViewMode)return F=!0,e.marginViewMode=!1,void(t.$$destroyed||t.$applyAsync());n&&F&&!e.marginViewMode&&!e.quietMode&&(F=!1,e.marginViewMode=!0,t.$$destroyed||t.$applyAsync()),e.marginViewMode&&(K=-1,e.positionMarginItems())},80)};let z=null;var K=-1;const J=function(){if(!e.marginViewMode)return;(function(){P&&(clearTimeout(P),P=null);var e=i();e&&e.classList.remove("margin-animating")})();const t=window.pageYOffset;t!==K&&(K=t,z||(z=requestAnimationFrame(function(){z=null,e.positionMarginItems()})))};window.addEventListener("resize",W),window.addEventListener("scroll",J,{passive:!0}),e.toggleSidebar=function(){e.quietMode&&!e.sidebarVisible||!e.sidebarVisible&&e.collabSyncPending||(e.sidebarVisible=!e.sidebarVisible,e.sidebarVisible?(e.refreshSuggestionsAndComments(),e.markAllAsSeen()):a())};let G=null,Q=0,X=null;const Z=function(e){if(!(0,de.W_)())return;const t=e.target&&e.target.closest(".sheet-drag-handle");if(!t)return;const n=t.closest(".tiptap-sidebar");if(n){e.preventDefault(),G={sheet:n,startY:e.clientY,startHeight:n.offsetHeight,moved:!1},n.classList.add("sheet-dragging");try{t.setPointerCapture(e.pointerId)}catch(e){}t.addEventListener("pointermove",c),t.addEventListener("pointerup",l),t.addEventListener("pointercancel",l)}};document.addEventListener("pointerdown",Z);const ee=function(e){(0,de.W_)()&&e.target&&e.target.closest(".sheet-drag-handle")&&(Date.now()<Q||s())};document.addEventListener("click",ee);const te=function(t){if(!(0,de.W_)()||!e.sidebarVisible)return;const n=t.target;if(!n||!n.matches("textarea, input"))return;const o=n.closest(".tiptap-sidebar");o&&o.classList.add("sheet-full")};document.addEventListener("focusin",te);const ne=[200,300,500,500,500];e.highlightCommentInSidebar=function(e,t){b("comment",e,t?{replyId:t}:void 0)},e.highlightSuggestionInSidebar=function(e,t){b("suggestion",e,t?{replyId:t}:void 0)},e.setupEditorClickHandlers=function(){function n(e){const t=e.querySelectorAll(".group-hover");for(let e=0;e<t.length;e++)t[e].classList.remove("group-hover")}if(!e.tiptapEditor||!e.tiptapEditor.view)return;const o=e.tiptapEditor.view.dom;if(!o||o._sidebarClickHandlerAttached)return;o._sidebarClickHandlerAttached=!0,_=o;const i=new WeakSet;T=function(t){if(!t.target)return;if(e.quietMode)return;const n=e.tiptapEditor&&e.tiptapEditor.view;if(!n)return;let o;try{o=n.posAtCoords({left:t.clientX,top:t.clientY})}catch(e){return}if(!o)return;const r=n.state.doc.resolve(o.pos),a=r.marks(),s=[];for(let e=0;e<a.length;e++)"comment"===a[e].type.name&&a[e].attrs.commentId&&!a[e].attrs.resolved&&s.push(a[e].attrs.commentId);if(s.length>0){let n=s[0];if(s.length>1&&e.comments){const t=Object.create(null);for(let n=0;n<e.comments.length;n++)t[e.comments[n].id]=e.comments[n];let o=1/0;for(let e=0;e<s.length;e++){const i=t[s[e]];if(i&&null!=i.from&&null!=i.to){const t=i.to-i.from;t<o&&(o=t,n=s[e])}}}return t.preventDefault(),t.stopPropagation(),i.add(t),void e.highlightCommentInSidebar(n)}for(let n=0;n<a.length;n++)if(("suggestionAdd"===a[n].type.name||"suggestionDelete"===a[n].type.name||"suggestionFormat"===a[n].type.name)&&a[n].attrs.suggestionId){t.preventDefault(),t.stopPropagation(),i.add(t);var c=a[n].attrs.suggestionId;if("suggestionAdd"===a[n].type.name&&e.suggestions)for(var l=0;l<e.suggestions.length;l++)if("replace"===e.suggestions[l].type&&e.suggestions[l]._addSuggestionId===c){c=e.suggestions[l].suggestionId;break}return void e.highlightSuggestionInSidebar(c)}const d=r.parent;d&&d.attrs&&d.attrs.suggestionId&&(t.preventDefault(),t.stopPropagation(),i.add(t),e.highlightSuggestionInSidebar(d.attrs.suggestionId))},o.addEventListener("click",T),k=function(n){const o=n.target;o&&!o.closest(".comment-item, .suggestion-item, .margin-item-card, .sheet-drag-handle")&&!i.has(n)&&e.collapseAllCards&&e.collapseAllCards()&&t.$applyAsync()},document.addEventListener("click",k);let r=null;x=function(t){const i=t.target;if(!i||e.quietMode)return;const a=i.closest("[data-suggestion-id]");if(a){const t=a.getAttribute("data-suggestion-id");let i=t;if(e.suggestions)for(let n=0;n<e.suggestions.length;n++){const o=e.suggestions[n];if("replace"===o.type&&o._addSuggestionId===t){i=o.suggestionId;break}}if(i&&i!==r){n(o),r=i;const t=[i];if(e.suggestions)for(let n=0;n<e.suggestions.length;n++){const o=e.suggestions[n];if("replace"===o.type&&o.suggestionId===i&&o._addSuggestionId){t.push(o._addSuggestionId);break}}for(let e=0;e<t.length;e++){const n=o.querySelectorAll('[data-suggestion-id="'+CSS.escape(t[e])+'"]');for(let e=0;e<n.length;e++)n[e].classList.add("group-hover")}}return}let s=i.closest("[data-comment-id]");for(;s&&"true"===s.getAttribute("data-resolved");)s=s.parentElement?s.parentElement.closest("[data-comment-id]"):null;if(s){const e=s.getAttribute("data-comment-id");if(e&&e!==r){n(o),r=e;const t=o.querySelectorAll('[data-comment-id="'+CSS.escape(e)+'"]');for(let e=0;e<t.length;e++)t[e].classList.add("group-hover")}return}
1r&&(n(o),r=null)},o.addEventListener("mouseover",x),M=function(e){o.contains(e.relatedTarget)||(n(o),r=null)},o.addEventListener("mouseout",M),(0,U.cY)("[editContentItemCtrl] Editor click & hover handlers for sidebar navigation attached")};let oe=null;const ie=t.$watch("$ctrl.tiptapEditor",function(t){oe&&(clearTimeout(oe),oe=null),t&&(ie(),oe=setTimeout(function(){e.setupEditorClickHandlers(),oe=null},500))});let re=null;const ae=t.$watch(function(){return!e.collabSyncPending&&D},function(e){if(!e||!D)return;const t=D;D=null,re=setTimeout(function(){re=null,b(t.itemType,t.itemId,t.opts)},300)});t.$on("$destroy",function(){ae(),re&&clearTimeout(re)});try{const n=new URLSearchParams(window.location.search).get("sidebar");if("comments"===n||"suggestions"===n){let o=!1,i=null,r=null;const a=t.$watch(function(){return!e.collabSyncPending},function(r){r&&!o&&(o=!0,a(),i=setTimeout(function(){i=null,t.$$destroyed||(e.sidebarVisible=!0,e.sidebarTab=n,e.refreshSuggestionsAndComments(),e.markAllAsSeen(),"suggestions"===n&&v(),t.$applyAsync())},300))});r=setTimeout(function(){r=null,o||t.$$destroyed||(o=!0,a(),e.sidebarVisible=!0,e.sidebarTab=n,e.refreshSuggestionsAndComments(),e.markAllAsSeen(),"suggestions"===n&&v(),t.$applyAsync())},1e4),t.$on("$destroy",function(){i&&clearTimeout(i),r&&clearTimeout(r)})}}catch(e){}return{destroy(){oe&&(clearTimeout(oe),oe=null),document.removeEventListener("pointerdown",Z),document.removeEventListener("click",ee),document.removeEventListener("focusin",te),G=null,clearTimeout(X),X=null,_&&(T&&_.removeEventListener("click",T),x&&_.removeEventListener("mouseover",x),M&&_.removeEventListener("mouseout",M),_._sidebarClickHandlerAttached=!1,_=null),T=null,D=null,k&&document.removeEventListener("click",k),k=null,x=null,M=null,w&&(clearTimeout(w),w=null),S&&A&&S.classList.remove(A),S=null,A=null,E&&(clearTimeout(E),E=null),C.forEach(function(e){clearTimeout(e)}),C=[],clearTimeout(H),L&&(clearTimeout(L),L=null),P&&(clearTimeout(P),P=null),window.removeEventListener("resize",W),window.removeEventListener("scroll",J),j&&(clearTimeout(j),j=null),z&&(cancelAnimationFrame(z),z=null)}}}function E(e){return String(e.getDate()).padStart(2,"0")+"."+String(e.getMonth()+1).padStart(2,"0")+"."+String(e.getFullYear()).slice(-2)+" "+String(e.getHours()).padStart(2,"0")+":"+String(e.getMinutes()).padStart(2,"0")}function C(e,t,o){function i(n){e.hasLocalBackup=!0,e.localBackupTime=new Date(n.timestamp),e.localBackupHtml=n.html,e.backupBannerCollapsed=!1,P.bannerTimer&&clearTimeout(P.bannerTimer),P.bannerTimer=setTimeout(function(){P.bannerTimer=null,t.$$destroyed||e.hasLocalBackup&&!e.backupBannerCollapsed&&(e.backupBannerCollapsed=!0,t.$applyAsync())},15e3)}function r(e){e&&(e.setEditable(!1),e.storage&&e.storage.commentBubbleMenu&&(e.storage.commentBubbleMenu.allowInReadOnly=!0))}function a(){if(G)return;if(!B||"function"!=typeof B.markEditorHadContent)return;const t=e.tiptapEditor;if(t&&"function"==typeof t.getHTML)try{if(!0===t.isEmpty)return;if(u(t.getHTML()))return;G=!0,B.markEditorHadContent()}catch(e){(0,U.UT)("[editContentItemCtrl] Ðе ÑдалоÑÑ Ð¿ÑоÑиÑаÑÑ ÑодеÑжимое ÑедакÑоÑа:",e)}}function p(){var n=e.tiptapEditor||e.getActiveEditor&&e.getActiveEditor();n&&!n.isDestroyed&&setTimeout(function(){t.$$destroyed||n.isDestroyed||requestAnimationFrame(function(){if(!t.$$destroyed&&!n.isDestroyed)try{n.view&&!n.view.isDestroyed&&n.view.updateState(n.view.state)}catch(e){(0,U.UT)("[editContentItemCtrl] _forceEditorRecalc error:",e)}})},0)}function m(){return"create"!==s(g)}const{$routeParams:g,loginService:f,localStorageService:h,apiClient:y,Notification:I,versioningService:w,HOCUSPOCUS_SERVER:C,THUMBOR_SERVER:T,contentType:k,disableCollab:x,cfpLoadingBar:M}=o;(0,H.v)(T),e.userId=f.userId(),e.isAdmin=f.isAdmin(),e.userName=(0,j.E)(f.userDisplayName(),f.userPath())||"ÐолÑзоваÑелÑ",e.userSlug=f.userPath()||null;const _=f.userAvatar();e.userAvatar=_?`${T}/unsafe/36x36/${_}`:"/images/default-avatar.png";const D=x?null:C||null;x&&(0,U.cY)("[editContentItemCtrl] Collaboration disabled via URL parameter"),e.collabDocumentName=null,e.collabServerUrl="",e.collabToken="",e.collabStatus="",e.initialContent="",e.tiptapEditor=null,e.isSaving=!1,e.lastSavedAt=null,e.tiptapReady=!1,e.collabSyncPending=!1,e.connectedUsers=[],e.canEdit=null,e.commenterReadOnly=!1,e.loginForReviewAvailable=!1,e.permissionsLoaded=!1,e.contentItemCreatorId=null,e.isOfflineMode=!1,e.isReconnecting=!1,e.lastVersionSavedAt=null,e.saveSuccess=!1,e.lastSyncTime=null,e.connectionLatency=null,e.unsyncedCh
1angesCount=0,e.quietMode=!1;let L=!1;const P={bannerTimer:null,pendingDurableBackup:null};e.toggleQuietMode=function(n){e.quietMode=!e.quietMode,document.body.classList.toggle("quiet-mode-active",e.quietMode);const o=e.tiptapEditor;o&&o.storage&&o.storage.commentBubbleMenu&&(o.storage.commentBubbleMenu.quietMode=e.quietMode),e.quietMode?(L=e.marginViewMode,e.sidebarVisible=!1,e.marginViewMode&&(e.marginViewMode=!1),n||I.info("ТиÑ
ий Ñежим вклÑÑÑн")):(L&&window.innerWidth>=1280&&(e.marginViewMode=!0),L=!1,n||I.info("ТиÑ
ий Ñежим вÑклÑÑен")),t.$applyAsync()};const O=new AbortController,R={...o,fetchAbortController:O},B=function(e,t,n){function o(e){const t=Date.now();return!(t-oe<6e4||!A||"function"!=typeof A.warning||(A.warning(e),oe=t,0))}function i(e){const t=Date.now();return!(t-ie<1e4||!A||"function"!=typeof A.success||(A.success(e),ie=t,0))}function r(){if(!W){if((0,U.cY)("[Autosave] Network offline detected"),e.tiptapEditor&&!e.tiptapEditor.isDestroyed)try{t.contentItem&&t.contentItem.slug&&(I(e.tiptapEditor.getHTML(),!!e.collabServerUrl&&!!e.collabDocumentName),(0,U.cY)("[Autosave] Offline backup saved to localStorage"))}catch(e){}o("ÐÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ðº ÑеÑи. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑоÑ
ÑанÑÑÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ñно."),t&&!t.$$destroyed&&t.$applyAsync()}}function a(){W||((0,U.cY)("[Autosave] Network online detected"),i("ÐодклÑÑение воÑÑÑановлено"),!e.hasUnsavedChanges||e.isSaving||e.savingVersion||G||!e.tiptapEditor||e.tiptapEditor.isDestroyed||((0,U.cY)("[Autosave] Retrying save after network recovery"),Z=0,ne=0,te=ee,e.saveContent()),t&&!t.$$destroyed&&t.$applyAsync())}function s(e){const t=e.querySelectorAll('a.footnote, a.footnote-tooltip, a[data-footnote], a[data-toggle="tooltip"][title]');let n=0;return t.forEach(e=>{const t=e.getAttribute("data-original-title")||e.getAttribute("title")||e.getAttribute("data-footnote")||"";t&&(e.setAttribute("href","#"),e.setAttribute("class","fa footnote-tooltip"),e.setAttribute("data-toggle","tooltip"),e.setAttribute("data-original-title",t),e.removeAttribute("title"),e.removeAttribute("data-footnote"),e.removeAttribute("data-footnote-id"),e.removeAttribute("data-footnote-number"),e.removeAttribute("style"),e.innerHTML="â",n++)}),n}function p(e,t){if(!e)return{clean:e,raw:e};if(ce.input===e&&ce.doc===t&&ce.result)return ce.result;const n=(0,K.stripJustifyAlignment)((0,K.fixSelfClosingNonVoidTags)(e)),o=new DOMParser,i=o.parseFromString(n,"text/html");(0,K.removeOrphanedInlineNodes)(i.body,K.BLOCK_LEVEL_TAGS),s(i.body);const r=o.parseFromString((0,K.stripJustifyAlignment)((0,z.i)(n,t,"draft")),"text/html");(0,K.removeOrphanedInlineNodes)(r.body,K.BLOCK_LEVEL_TAGS),s(r.body);const a=r.body.innerHTML,c=i.body.innerHTML;(0,U.cY)("[prepareContentForSave] hasSuggestions:",a!==c,"| cleanLen:",a.length,a!==c?"| rawLen: "+c.length:"");const l={clean:a,raw:c};return ce={input:e,doc:t,result:l},le&&clearTimeout(le),le=setTimeout(function(){ce={input:null,result:null},le=null},3e4),l}function m(e,t){let n=null;const o=new Promise(function(e){n=setTimeout(function(){e(!1)},Math.max(0,t))});return Promise.race([e.then(()=>!0,()=>!0),o]).then(function(e){return clearTimeout(n),e})}function g(e){const n=t.contentItem?t.contentItem.title:null,o="string"==typeof n?c(n):n;return e.clean===V&&e.raw===q&&o===Y&&(t.contentItem?t.contentItem.thumborId:void 0)===P&&(t.contentItem?t.contentItem.imageCaption:void 0)===O}async function f(e){for(;X;)if(!await m(X,e-performance.now()))return!1;return!0}async function h(t){let n=null;const o=e.saveContent({alongsideVersion:!0}).catch(function(e){n=e});if(!await m(o,t-performance.now()))return!1;if(n)throw n;return!0}function y(){const t=e.tiptapEditor;if(W||!t)return null;const n=t.getHTML(),o=t.state&&t.state.doc,i=p(n,o);return{html:n,doc:o,clean:i.clean,raw:i.raw}}function v(e){for(let t=localStorage.length-1;t>=0;t--){const n=localStorage.key(t);if(n&&n.startsWith("draft_backup_")&&n!==e)try{const e=JSON.parse(localStorage.getItem(n)||"null");if(!0===e?.pendingDurableSync)continue;localStorage.removeItem(n)}catch(e){}}}function b(){if(!t.contentItem?.slug)return!1;try{return!0===JSON.parse(localStorage.getItem("draft_backup_"+t.contentItem.slug)||"null")?.pendingDurableSync}catch(e){return!1}}function I(n,o=!1,i=!1){if(!t.contentItem||!t.contentItem.slug)return!1;const r="draft_backup_"+t.contentItem.slug;let a=null;
1try{a=JSON.parse(localStorage.getItem(r)||"null"),o=o||!0===a?.pendingDurableSync}catch(e){}const s=l(a,n,a?.backupSessionId!==L),c=function(e,t){let n=JSON.stringify(t);try{return localStorage.setItem(e,n),{saved:!0}}catch(o){(0,U.UT)("[Autosave] localStorage quota exceeded, reducing backup history...");let i=o;const r=t.history.length+1;for(let o=0;o<r;o++){if(t.history.length>0)t.history.shift(),n=JSON.stringify(t);else try{v(e)}catch(e){}try{return localStorage.setItem(e,n),{saved:!0}}catch(e){i=e}}return{saved:!1,error:i}}}(r,{html:n,timestamp:Date.now(),slug:t.contentItem.slug,isOfflineBackup:e.isOfflineMode,unsyncedCount:e.unsyncedChangesCount,pendingDurableSync:o,isDuplicationBackup:i,backupSessionId:L,history:s});return c.saved?(_=!1,M=!1,e.autosaveError===D&&(e.autosaveError=null),(0,U.cY)("[Autosave] Backup saved to localStorage on unload")):(_=!0,e.autosaveError=D,!M&&A&&"function"==typeof A.error&&(A.error(e.autosaveError),M=!0),t&&!t.$$destroyed&&t.$applyAsync()),o}const{localStorageService:w,apiClient:S,Notification:A,DISCOURS_ENV:E,fetchAbortController:C,versioningService:T}=n;e.hasUnsavedChanges=!1,e.autosaveError=null;let k=null,x=null,M=!1,_=!1;const D="ÐокалÑÐ½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð½Ðµ ÑоÑ
ÑанилаÑÑ. Ðе закÑÑвайÑе ÑÑÑаниÑÑ, ÑкопиÑÑйÑе ÑекÑÑ.",L=Date.now().toString(36)+Math.random().toString(36).slice(2);let P,O,R=null,V=null,B=!1,q=null,Y=null,H=null,j=null,F=null,W=!1,G=!1,Q=0,X=null,Z=0;const ee=3e4;let te=ee,ne=0,oe=0,ie=0,re=!1;A&&"function"==typeof A.warning||(0,U.UT)("[Autosave] Angular Notification service not injected or missing .warning() method. Toast notifications will be silently skipped."),window.addEventListener("offline",r),window.addEventListener("online",a);let ae=null,se=0,ce={input:null,result:null},le=null;return e.saveContent=async function(n){const r=Boolean(n&&n.alongsideVersion);if(e.commenterReadOnly)return;if(W)return;if(G)return;if(e.isSaving||e.savingVersion&&!r)return Q++,Q>10?((0,U.cY)("[Autosave] Max reschedule limit reached (10), skipping until current save completes"),e.autosaveError=10===Q?"СоÑ
Ñанение не завеÑÑаеÑÑÑ. ÐÑовеÑÑÑе Ñоединение или обновиÑе ÑÑÑаниÑÑ.":"СоÑ
Ñанение Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð±Ð¾Ð»ÑÑе вÑемени, Ñем обÑÑно...",void t.$applyAsync()):((0,U.cY)("[Autosave] Save already in progress, rescheduling ("+Q+"/10)"),void(k||(k=setTimeout(function(){k=null,e.saveContent()},1e4))));if(!e.tiptapEditor||!t.contentItem||!t.contentItem.slug)return;const a=e.tiptapEditor.getHTML();if((e.collabServerUrl&&e.collabDocumentName&&"synced"!==e.collabStatus||b())&&(x&&(clearTimeout(x),x=null),I(a,!0)),(0,J.py)(a)
1){if(e.autosaveError="ÐбнаÑÑжено задвоение ÑекÑÑа. ÐбновиÑе ÑÑÑаниÑÑ.",o("ÐбнаÑÑжено задвоение ÑекÑÑа. ÐбновиÑе ÑÑÑаниÑÑ Ð´Ð»Ñ Ð¸ÑпÑавлениÑ."),!re&&t.contentItem&&t.contentItem.slug)try{I(a,b(),!0),re=JSON.parse(localStorage.getItem("draft_backup_"+t.contentItem.slug)||"null")?.html===a,re&&(0,U.cY)("[Autosave] Duplication backup saved to localStorage")}catch(e){(0,U.UT)("[Autosave] Failed to save duplication backup:",e)}return void t.$applyAsync()}const{clean:s,raw:l}=p(a,e.tiptapEditor.state&&e.tiptapEditor.state.doc),d=t.contentItem?t.contentItem.title:null,m="string"==typeof d?c(d):d,g=t.contentItem?t.contentItem.thumborId:void 0,f=t.contentItem?t.contentItem.imageCaption:void 0;if(u(l)){if(!B)return(0,U.UT)("[Autosave] ÐÑÑÑое Ñело пÑи незагÑÑженном докÑменÑе â ÑоÑ
Ñанение пÑопÑÑено"),e.hasUnsavedChanges=!1,e.isSaving=!1,void t.$applyAsync()}else B=!0;if(s===V&&l===q&&m===Y&&g===P&&f===O)return e.hasUnsavedChanges=!1,void t.$applyAsync();let h;e.isSaving=!0,e.autosaveError=null,t.$applyAsync(),X=new Promise(function(e){h=e});try{const n=t.contentItem.slug;H!==n&&(H=n,j=encodeURIComponent(n));const o=`${S.baseUrl}/collab/document/content-item:${j}`,r=l!==s;(0,U.cY)("[saveContent] Saving draft, hasSuggestions:",r,"| bodyLen:",s.length,r?"| rawBodyLen: "+l.length:"",m!==Y?"| titleChanged":"",g!==P?"| thumborIdChanged":"",f!==O?"| imageCaptionChanged":"");const a=r?{body:s,rawBody:l}:{body:s};null!=m&&(a.title=m),g!==P&&(a.thumborId=g||null),f!==O&&(a.imageCaption=f||"");const c=await fetch(o,{method:"PUT",headers:{"Content-Type":"application/json","X-User-Id":w.get("userId"),"X-Auth-Token":w.get("authToken"),[N.NP]:N.iv},body:JSON.stringify(a),signal:C.signal});if(!c.ok){const e=await c.json().catch(()=>({})),t=e.data&&e.data.message||e.message||`HTTP ${c.status}`,n=new Error(t);throw n.status=c.status,n.data=e,n}if(W)return;let d=!!e.collabServerUrl&&!!e.collabDocumentName&&"synced"!==e.collabStatus;if(t.contentItem&&t.contentItem.slug)try{const e="draft_backup_"+t.contentItem.slug,n=JSON.parse(localStorage.getItem(e)||"null");d=d||!0===n?.pendingDurableSync,d||localStorage.removeItem(e)}catch(e){}if(V=s,q=l,Y=m,P=g,O=f,e.lastSavedAt=new Date,e.hasUnsavedChanges=!1,e.hasDraft=!0,e.isSaving=!1,e.isSaveError=!1,e.saveSuccess=!d,t.$applyAsync(),F&&clearTimeout(F),F=setTimeout(function(){W||(e.saveSuccess=!1,t.$applyAsync())},4e3),Z=0,Q=0,ne=0,te=ee,e.autosaveError&&!_&&(e.autosaveError=null,d||i("СоÑ
Ñанение воÑÑÑановлено")),T&&T.isAutoVersioningActive())if(ae){if(Date.now()-se>=3e5){const e=ae.length||1,t=Math.abs(s.length-e)/e;t>=.3&&((0,U.cY)("[Autosave] Significant change detected ("+Math.round(100*t)+"%), forcing early auto version"),T.forceAutoVersion().then(()=>{ae=s,se=Date.now()}).catch(()=>{}))}}else ae=s,se=Date.now();if(e.tiptapEditor&&e.tiptapEditor.getYDoc)try{const t=e.tiptapEditor.getYDoc();if(t){const e=t.getMap("documentMeta");e.set("hasDraft",!0),e.set("lastDraftSavedAt",(new Date).toISOString())}}catch(e){(0,U.UT)("[Autosave] Failed to sync via Y.js:",e)}t.$applyAsync()}catch(n){if(e.isSaving=!1,e.isSaveError=!0,Q=0,"AbortError"===n.name||W)return e.isSaveError=!1,void(0,U.cY)("[Autosave] Save aborted (scope destroyed or navigating away)");const i=!n.status||n.status>=500||429===n.status;if(i&&Z<3){Z++;const n=2e3*Math.pow(2,Z-1);return(0,U.UT)(`[Autosave] Server error, retrying in ${n}ms (attempt ${Z}/3)`),R=setTimeout(()=>{!W&&e.tiptapEditor&&e.saveContent()},n),void t.$applyAsync()}410===n.status?(e.autosaveError="ÐаÑеÑиал бÑл ÑдалÑн. СоÑ
Ñанение невозможно",G=!0):e.autosaveError=426===n.status?"РедакÑÐ¾Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ð»ÑÑ. СкопиÑÑйÑе неÑоÑ
ÑанÑннÑй ÑекÑÑ Ð¸ обновиÑе ÑÑÑаниÑÑ":413===n.status?"СодеÑжимое ÑлиÑком болÑÑое Ð´Ð»Ñ ÑоÑ
ÑанениÑ":403===n.status?"ÐедоÑÑаÑоÑно пÑав Ð´Ð»Ñ ÑоÑ
ÑанениÑ":429===n.status?"СлиÑком ÑаÑÑÑе ÑоÑ
ÑанениÑ, подождиÑе немного":n.status?"ÐÑибка ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ (код "+n.status+")":"ÐÐµÑ ÑвÑзи Ñ ÑеÑвеÑом",o(e.autosaveError),Z=0,i&&ne<10?(R&&clearTimeout(R),ne++,(0,U.cY)(`[Autosave] Scheduling retry #${ne}/10 in ${te}ms`),R=setTimeout(()=>{Q=0,W||e.isSaving||e.savingVersion||!e.tiptapEditor||!e.hasUnsavedChanges||((0,U.cY)("[Autosave] Scheduled retry after persistent error"),e.saveContent())},te),te=Math.min(2*te,3e5)):(0,U.cY)("[Autosave] Max scheduled retries reached (10). Waiting for user action or next edit."),t.$applyAsync()}finally{X=null,h()}},e.flushDraft=async function(){const t=!e.commenterReadOnly&&!1!==e.canEdit,n=performance.now()+3e4;let o=null;for(let i=0;i<=2;i++){if(!await f(n))return null;const r=y();if(!r)return null;if(!t||g(r))return r;if(G)return null;if(2===i)return o&&g(o)?o:null;if(k&&(clearTimeout(k),k=null),!await h(n))return null;if(e.isSaveError)return null;g(r)&&(o=r)}return null},e.triggerAutosave=function(){if(e.commenterReadOnly)return;if(e.hasUnsavedChanges=!0,G)return;ne>=10&&(ne=0,te=ee);const t=e.isOfflineMode||e.collabServerUrl&&e.collabDocumentName&&"synced"!==e.collabStatus;
1if(t&&(e.unsyncedChangesCount=(e.unsyncedChangesCount||0)+1),(t||b())&&(x&&clearTimeout(x),x=setTimeout(()=>{x=null,W||!e.tiptapEditor||e.tiptapEditor.isDestroyed||I(e.tiptapEditor.getHTML(),t)},1e3)),t&&e.tiptapEditor)try{e._preMergeContent=e.tiptapEditor.getHTML()}catch(e){}k&&clearTimeout(k),k=setTimeout(()=>{k=null,e.saveContent()},1e4)},e.forceSave=function(){return k&&(clearTimeout(k),k=null),e.saveContent()},{destroy(){W=!0,window.removeEventListener("offline",r),window.removeEventListener("online",a),k&&(clearTimeout(k),k=null),x&&(clearTimeout(x),x=null),R&&(clearTimeout(R),R=null),F&&(clearTimeout(F),F=null),V=null,q=null,Y=null,P=void 0,O=void 0,ce={input:null,result:null},le&&(clearTimeout(le),le=null),ae=null,se=0,ne=0,te=ee,oe=0,ie=0},handleWindowBlur:()=>{t.$$destroyed||e.hasUnsavedChanges&&e.tiptapEditor&&e.forceSave()},handleBeforeUnload:n=>{if((e.hasUnsavedChanges||_||(e.isOfflineMode||e.collabServerUrl&&e.collabDocumentName&&"synced"!==e.collabStatus)&&e.unsyncedChangesCount>0)&&e.tiptapEditor&&t.contentItem){let o,i=!1;try{o=e.tiptapEditor.getHTML(),i=I(o,!!e.collabServerUrl&&!!e.collabDocumentName&&"synced"!==e.collabStatus)}catch(e){}try{if(o&&!i){const n=e.tiptapEditor.state,i=p(o,n&&n.doc);q&&i.raw===q&&i.clean===V?((0,U.cY)("[Autosave] Content matches last saved â removing backup"),t.contentItem&&t.contentItem.slug&&localStorage.removeItem("draft_backup_"+t.contentItem.slug)):V&&!q&&(d(i.clean,V)||((0,U.cY)("[Autosave] Content not significantly different â removing backup"),t.contentItem&&t.contentItem.slug&&localStorage.removeItem("draft_backup_"+t.contentItem.slug)))}}catch(e){}if("development"!==E&&"development_local"!==E&&(_||e.hasUnsavedChanges||e.hasDraft||e.isOfflineMode&&e.unsyncedChangesCount>0))return n.preventDefault(),n.returnValue=_?D:e.isOfflineMode?"ÐÑ ÑабоÑаеÑе оÑлайн и имееÑе неÑинÑ
ÑонизиÑованнÑе изменениÑ. ÐÑи закÑÑÑии ÑÑÑаниÑÑ Ð¾Ð½Ð¸ могÑÑ Ð±ÑÑÑ Ð¿Ð¾ÑеÑÑнÑ.":"У Ð²Ð°Ñ ÐµÑÑÑ Ð½ÐµÐ¾Ð¿ÑбликованнÑе изменениÑ. ÐÑ ÑвеÑенÑ, ÑÑо Ñ
оÑиÑе покинÑÑÑ ÑÑÑаниÑÑ?",n.returnValue}},markEditorHadContent(){B=!0},getLastSavedContent:()=>V,getLastSavedRawContent:()=>q,setLastSavedContent(e,n){const{clean:o,raw:i}=p(e,n);V=o,q=i;const r=t.contentItem?t.contentItem.title:null;Y="string"==typeof r?c(r):r,P=t.contentItem?t.contentItem.thumborId:void 0,O=t.contentItem?t.contentItem.imageCaption:void 0},resetBaseline(){V&&(ae=V),se=Date.now()}}}(e,t,R);let G=!1;e._resetAutosaveBaseline=B.resetBaseline,e._setAutosaveBaseline=B.setLastSavedContent;const Q=function(e,t,n){function o(e){s&&"function"==typeof s.warning?s.warning(e):s&&"function"==typeof s.error&&s.error(e)}function i(){const n=t.contentItem,i=[];n.title&&n.title.trim()||i.push((0,V.t)("Ðоле «Ðаголовок» не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑÑÑÑм")),n.selectedCategory||n.category||n.categorySlug||i.push((0,V.t)("ÐÑбеÑиÑе ÑÑбÑÐ¸ÐºÑ Ð´Ð»Ñ Ð¿ÑбликаÑии"));const r=n.type&&-1!==l.indexOf(n.type)?10:50;if(e.tiptapEditor){const t=e.tiptapEditor.getText();(!t||t.trim().length<r)&&i.push((0,V.t)("ТекÑÑ ÑовÑем коÑоÑкий â менÑÑе")+" "+r+" "+(0,V.t)("Ñимволов"))}return!(i.length>0&&(i.forEach(o),1))}const{localStorageService:r,apiClient:a,Notification:s,fetchAbortController:c}=n;e.isPublishing=!1,e.hasDraft=!1,e.lastPublishedAt=null;const l=["Image","Video","Audio","Gallery"];return e.validateBeforePublish=i,e.publishContent=async function(){if(!e.tiptapEditor||!t.contentItem||!t.contentItem.slug)return;const n=t.contentItem.status;if(e.tiptapEditor.hasPendingMediaUploads&&e.tiptapEditor.hasPendingMediaUploads()){o((0,V.t)("ÐождиÑеÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки изобÑажений пеÑед пÑбликаÑией"));const e=new Error("pending_uploads");return e.isValidation=!0,Promise.reject(e)}if(e.isPublishing)return;if(!i()){const e=new Error("validation_failed");return e.isValidation=!0,Promise.reject(e)}if(e.tiptapEditor){const t=e.tiptapEditor.getHTML();if((0,J.py)(t)){o((0,V.t)("ÐбнаÑÑжено задвоение ÑекÑÑа. ÐбновиÑе ÑÑÑаниÑÑ Ð¿ÐµÑед пÑбликаÑией."));const e=new Error("duplication_detected");return e.isValidation=!0,Promise.reject(e)}}e.isPublishing=!0,t.$applyAsync();let l=null;try{l=await e.flushDraft()}catch(e){window.__sentry&&"function"==typeof window.__sentry.captureException&&window.__sentry.captureException(e,{tags:{component:"
1collab_publish_flush"}})}if(t.$$destroyed)return!1;if(!l){e.isPublishing=!1,o((0,V.t)("ЧеÑновик не ÑоÑ
ÑанилÑÑ, поÑÑÐ¾Ð¼Ñ Ð¼Ð°ÑеÑиал не опÑбликован. ТекÑÑ Ð¾ÑÑаÑÑÑÑ Ð² ÑедакÑоÑе â попÑобÑйÑе еÑÑ Ñаз ÑÑÑÑ Ð¿Ð¾Ð·Ð¶Ðµ.")),t.$applyAsync();const n=new Error("draft_not_saved");return n.isValidation=!0,Promise.reject(n)}try{const o=encodeURIComponent(t.contentItem.slug),i=`${a.baseUrl}/collab/document/content-item:${o}/publish`,u={};t.contentItem._id&&(u.contentItemId=t.contentItem._id);const p=l.html;p&&"<p></p>"!==p&&(u.body=l.clean,l.raw!==l.clean&&(u.rawBody=l.raw));const m=async()=>{const e=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","X-User-Id":r.get("userId"),"X-Auth-Token":r.get("authToken"),[N.NP]:N.iv},body:JSON.stringify(u),signal:c.signal});if(!e.ok){const t=await e.json().catch(()=>({})),n=new Error(t.data&&t.data.message||t.message||`HTTP ${e.status}`);throw n.status=e.status,n.data=t,n}return e};let g;var d=0;if(g=await async function e(){try{return await m()}catch(n){if(409===n.status&&d<3){d++;var t=500*Math.pow(2,d-1);return(0,U.cY)("[Publish] 409 conflict (attempt "+d+"/3), retry in "+t+"ms..."),await new Promise(e=>setTimeout(e,t)),e()}throw n}}(),t.$$destroyed)return!1;const f=await g.json();if(t.$$destroyed)return!1;const h=new Date,y=f&&f.data||{},v=y.version,b=y.slug||null,I=y.link||null;if(b&&t.contentItem&&b!==t.contentItem.slug&&(t.contentItem.slug=b,e.collabDocumentName&&(e.collabDocumentName="content-item:"+b)),e.lastPublishedAt=h,e.hasDraft=!1,e.isPublishing=!1,e.publishedVersion=v,e.tiptapEditor&&e.tiptapEditor.getYDoc)try{const t=e.tiptapEditor.getYDoc();if(t){const e=t.getMap("documentMeta");e.set("hasDraft",!1),e.set("lastPublishedAt",h.toISOString()),v&&e.set("publishedVersion",v)}}catch(e){}try{const e=Date.now().toString();localStorage.setItem("feedCacheVersion",e),sessionStorage.setItem("feedCacheVersion",e);const t=function(){try{let t=0;const n=[];for(let e=0;e<sessionStorage.length;e++){const t=sessionStorage.key(e);t&&(t.startsWith("ci:")||t.startsWith("pool:"))&&n.push(t)}n.forEach(function(e){sessionStorage.removeItem(e)}),t+=n.length;for(let e=localStorage.length-1;e>=0;e--){const n=localStorage.key(e);n&&(n.startsWith("ci:")||n.startsWith("pool:"))&&(localStorage.removeItem(n),t++)}(0,U.cY)("[Publish] Feed caches cleaned ("+t+" entries, version: "+e+")")}catch(e){}};"function"==typeof requestIdleCallback?requestIdleCallback(t,{timeout:3e3}):setTimeout(t,50)}catch(e){}return s&&"function"==typeof s.success&&s.success((0,V.t)("posted"===n||"published"===n||"featured"===n||"recalled"===n?"ÐаÑеÑиал обновлÑн":"ÐаÑеÑиал опÑбликован")),(0,U.cY)("[Publish] Document published, version:",v),t.$applyAsync(),{slug:b,link:I,version:v}}catch(n){return"AbortError"===n.name||t.$$destroyed||(e.isPublishing=!1,s&&"function"==typeof s.error&&(s[n.status>=500?"error":"warning"]||s.error)(n.message||"Ðе ÑдалоÑÑ Ð¾Ð¿ÑбликоваÑÑ"),t.$applyAsync()),!1}},e.inviteModalOpen=!1,e.openInviteModal=function(){e.inviteModalOpen=!0,t.$applyAsync()},e.onInvitesChanged=function(n){(0,U.cY)("[Invites] Invites changed:",n?n.length:0),e.inviteCount=n?n.length:0,e.acceptedInviteCount=n?n.filter(function(e){return"accepted"===e.status}).length:0,t.$applyAsync()},{destroy(){}}}(e,t,R),X=v(e,t,R),Z=b(e,t,R),ee=S(e,t,R),oe=A(e,t),ie=function(e,t,n){function o(t){e.showBottomEditButton=t}function i(){m&&m(),m=(0,ye.C)(o)}function r(){const n=e.getActiveEditor(),o=t.contentItem||{},i=n?n.getHTML():e.initialContent||"",r=function(e){if(!e)return e;try{const t=(new DOMParser).parseFromString(e,"text/html");if(!t.querySelector(".toc-block"))return e;const n=t.querySelectorAll("h1, h2, h3, h4, h5, h6");if(!n.length)return e;let o=1;return n.forEach(e=>{e.textContent.trim()&&(e.setAttribute("id",String(o)),o++)}),t.body.innerHTML}catch(t){return(0,U.UT)("[collab-preview] ensureHeadingIdsForPreview error:",t),e}}(n?(0,z.i)(i,n.state&&n.state.doc,"preview"):(0,J.Wf)(i));if("Literature"===l){let n=angular.copy(o.media||[]);return n.length||(n=[{}]),n[0].literatureBody=r||n[0].literatureBody||"",{_id:o._id,title:o.title||"Ðез названиÑ",body:n[0].literatureBody,thumborId:o.thumborId||(n[0]?n[0].thumborId:null),type:"Literature",media:n,category:o.selectedCategory?.title||o.category||"",categoryLink:o.selectedCategory?.slug?"/expo/"+o.selectedCategory.slug:"",author:o.author||o.application?.name||e.userName,authorLink:c.userPath()?"/"+c.userPath():null,createdBy:t.user||{_id:e.userId},preview:!0,editable:!1,tags:o.tags||[],publishedAt:o.publishedAt||o.postedAt||new Date,createdAt:o.createdAt||new Date,imageCaption:o.imageCaption||""}}return{title:o.title||"Ðез названиÑ",body:r||o.body||"",author:o.author||o.application?.name||e.userName,authorLink:o.authorLink||(c.userPath()?"/"+c.userPath():null),category:o.selectedCategory?o.selectedCategory.title:null,categoryLink:o.selectedCategory?"/articles/"+o.selectedCategory.slug:null,thumborId:o.thumborId||null,imageCaption:o.imageCaption||null,tags:o.tags||[],publishedAt:o.publishedAt||o.postedAt||new Date,views:o.views||0,preview:!0,type:o.type||"Article",createdBy:{_id:e.userId},editable:!1,application:{}}}function a(n,o){e.isPreviewMode=!1,e.previewPost=null,e.showBottomEditButton=!1,n&&n.setEditable(!0),e.setSuggestionMode(o),d(!1),(0,fe.M)(t),p&&!e.quietMode&&e.toggleQu
1ietMode(!0),p=!1}const{$location:s,loginService:c,contentType:l,navigatePreviewPath:d,Notification:u}=n;let p=!1;e.isPreviewMode="true"===s.search().preview||s.path().endsWith("/preview"),e.previewPost=null,e.showBottomEditButton=!1;let m=null;const g=(0,ye.m)(function(){return e.isPreviewMode},o);e.onEditorModeChange=function(n){(0,U.cY)("[editContentItemCtrl] Mode changed to:",n);const o=e.getActiveEditor();switch(n){case"preview":if(e.cropUploading)return u.warning("ÐождиÑеÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки обложки"),!1;if(!(0,he.j)(t.contentItem,u))return!1;p=e.quietMode,e.quietMode&&e.toggleQuietMode(!0),e.isPreviewMode=!0,e.previewPost=r(),o&&o.setEditable(!1),e.setSuggestionMode(!1),e.sidebarVisible=!1,d(!0),(0,fe.M)(t),i();break;case"editing":if(!e.canEdit){(0,U.cY)("[editContentItemCtrl] Direct editing not allowed, staying in suggestion mode"),a(o,!0);break}a(o,!1);break;case"suggesting":a(o,!0)}t.$applyAsync()},e.togglePreviewMode=function(){e.onEditorModeChange(e.isPreviewMode?"editing":"preview")},e.openPreviewModeAndScrollTop=function(){const t=e.isPreviewMode;e.onEditorModeChange("preview"),!t&&e.isPreviewMode&&setTimeout(function(){window.scrollTo({top:0,behavior:ne.eb})},100)};let f=!1;const h=t.$watch(function(){return e.tiptapReady},function(t){if(t&&e.isPreviewMode&&!e.previewPost){(0,U.cY)("[editContentItemCtrl] Initializing preview mode from URL path");const t=e.getActiveEditor&&e.getActiveEditor();e.previewPost=r(),i(),t?t.setEditable(!1):(f=!0,(0,U.cY)("[editContentItemCtrl] Editor not ready, will rebuild preview when available")),e.sidebarVisible=!1}t&&h()});let y=null,v=null;const b=t.$watch(function(){return e.getActiveEditor&&e.getActiveEditor()},function(n){if(n&&f&&e.isPreviewMode){f=!1,b();const s=function(e){if(!e)return!1;const t=e.getHTML();return t&&t.replace(/<p>\s*<\/p>/g,"").replace(/<br\s*\/?>/g,"").replace(/\s+/g,"").trim().length>0};var o=!1;const c=function(n){if(o)return!1;const a=e.getActiveEditor();if(!a||!e.isPreviewMode)return!1;if(!s(a))return!1;o=!0;try{return(0,U.cY)("[editContentItemCtrl] Rebuilding preview with editor content ("+n+")"),e.previewPost=r(),a.setEditable(!1,!1),i(),t.$applyAsync(),!0}finally{o=!1}},l=function(){c("editor-update")&&a()};var a=function(){y&&(y(),y=null)};n.on("update",l),y=function(){n.off("update",l)},v=setTimeout(function(){if(v=null,!t.$$destroyed){if(e.isPreviewMode&&e.previewPost){const t=e.getActiveEditor();t&&s(t)&&t.getHTML()!==(e.previewPost.body||"")&&c("timeout-fallback")}a()}},2e3)}});return{destroy(){f=!1,v&&(clearTimeout(v),v=null),y&&(y(),y=null),m&&(m(),m=null),g&&g()},buildPreviewPost:r}}(e,t,R),re=function(e,t,n,o){function i(e){return Boolean(e&&"function"==typeof e.hasPendingMediaUploads&&e.hasPendingMediaUploads())}function r(){d&&d.warning&&d.warning("ÐождиÑеÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки изобÑажений и нажмиÑе «ÐоÑÑÑановиÑÑ» еÑÑ Ñаз.")}function a(e){if(!e||"function"!=typeof e.getHTML||!0===e.isEmpty)return null;try{return e.getHTML()||null}catch(e){return null}}function s(n){if((0,te.withSkipSuggestionProcessing)(()=>{e.tiptapEditor.commands.setContent((0,K.sanitizeBeforeSetContent)(n))}),e.tiptapEditor.clearUndoHistory&&e.tiptapEditor.clearUndoHistory(),e.hasLocalBackup=!1,e.hasDraft=!0,e.hasUnsavedChanges=!0,o.pendingDurableBackup)o.pendingDurableBackup=null;else try{localStorage.removeItem("draft_backup_"+t.contentItem.slug)}catch(e){}(0,U.cY)("[editContentItemCtrl] Content restored from backup"),void 0!==d&&d.success&&d.success("СодеÑжимое воÑÑÑановлено из ÑезеÑвной копии")}function c(e){try{return JSON.parse(localStorage.getItem(e)||"null")}catch(e){return}}function l(){const n=t.contentItem&&t.contentItem.slug,i=e.tiptapEditor;if(!n||!i||i.isDestroyed||"function"!=typeof i.getHTML)return;const r="draft_backup_"+n,a="draft_emergency_"+n,s=c(r),l=c(a);if(void 0===s||void 0===l)return;const d=!0===s?.pendingDurableSync,u=!0===l?.pendingDurableSync;if(!d&&!u)return;let p;try{p=i.getHTML()}catch(e){return}let m=s;try{d&&(m=function(e,t,n){const o=Array.isArray(t.history)?t.history:[],i=o.filter(e=>e?.html!==n);if(t.html===n){if(0===i.length)return localStorage.removeItem(e),null;const t={...i[i.length-1],history:i.slice(0,-1)};return localStorage.setItem(e,JSON.stringify(t)),t}if(i.length===o.length)return t;const r={...t,history:i};return localStorage.setItem(e,JSON.stringify(r)),r}(r,s,p)),u&&l.html===p&&localStorage.removeItem(a)}catch(e){return}const g=[m,u&&l.html!==p?l:null].filter(e=>!0===e?.pendingDurableSync).sort((e,t)=>
1t.timestamp-e.timestamp)[0]||null;o.pendingDurableBackup=g,e.hasLocalBackup&&e.localBackupHtml===p&&(g?(e.localBackupHtml=g.html,e.localBackupTime=new Date(g.timestamp)):(e.hasLocalBackup=!1,e.localBackupHtml=null)),(0,U.cY)("[editContentItemCtrl] Backup reconciled with room, left:",g?1:0),t.$applyAsync&&t.$applyAsync()}const{Notification:d,$sanitize:u,versioningService:p}=n;e.hasLocalBackup=!1,e.localBackupTime=null,e.localBackupHtml=null,e.restoreFromBackup=function(){if(!e.restoringBackup&&e.localBackupHtml&&e.tiptapEditor){if(i(e.tiptapEditor))return void r();if(function(){try{const n=JSON.parse(localStorage.getItem("draft_backup_"+t.contentItem.slug)||"null");let i=null;try{i=JSON.parse(localStorage.getItem("draft_emergency_"+t.contentItem.slug)||"null")}catch(e){}const r=!0===i?.pendingDurableSync&&(!n||i.timestamp>n.timestamp)?i:n;if(!r)return!!o.pendingDurableBackup&&(e.hasLocalBackup=!1,e.localBackupHtml=null,o.pendingDurableBackup=null,t.$applyAsync(),!0);if(r.html!==e.localBackupHtml)return o.pendingDurableBackup=r,e.localBackupHtml=r.html,e.localBackupTime=new Date(r.timestamp),t.$applyAsync(),!0}catch(e){}return!1}())return;if((0,J.py)(e.localBackupHtml)&&((0,U.UT)("[editContentItemCtrl] Backup contains duplicated content, auto-discarding"),void 0!==d&&d.warning&&d.warning("РезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ ÑодеÑÐ¶Ð¸Ñ Ð·Ð°Ð´Ð²Ð¾ÐµÐ½Ð½Ñй ÑекÑÑ Ð¸ бÑла Ñдалена."),e.discardBackup(),1))return;let n;try{n=u(e.localBackupHtml)}catch(t){(0,U.UT)("[editContentItemCtrl] Backup HTML failed $sanitize, using DOMParser fallback:",t);try{const t=(new DOMParser).parseFromString(e.localBackupHtml,"text/html");t.querySelectorAll("script, style, object, embed, form, meta, link").forEach(function(e){e.remove()}),t.querySelectorAll("iframe").forEach(function(e){const t=(e.getAttribute("src")||"").trim().toLowerCase();(!t||t.startsWith("javascript:")||t.startsWith("vbscript:")||t.startsWith("data:")||t.startsWith("file:")||!t.startsWith("https://")&&!t.startsWith("http://localhost"))&&e.remove()}),t.querySelectorAll("*").forEach(function(e){Array.from(e.attributes).forEach(function(t){(t.name.startsWith("on")||"string"==typeof t.value&&t.value.trim().toLowerCase().startsWith("javascript:"))&&e.removeAttribute(t.name)})}),n=(0,J.Wf)(t.body.innerHTML)}catch(e){return}}(function(n){const o=e.tiptapEditor,c=t.contentItem&&t.contentItem.slug,l=a(o);if(null===l||l===e.localBackupHtml||!c||!p||"function"!=typeof p.createManualVersion)return void s(n);const u=e.localBackupHtml;let m;try{m=p.createManualVersion(c,{name:"ТекÑÑ Ð´Ð¾ воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¿Ð¸Ð¸ "+E(new Date),body:l})}catch(e){m=Promise.reject(e)}e.restoringBackup=!0,Promise.resolve(m).then(function(){if(e.restoringBackup=!1,!t.$$destroyed&&e.tiptapEditor===o&&!o.isDestroyed){if(i(o))return r(),void t.$applyAsync();if(a(o)!==l||e.localBackupHtml!==u)return d&&d.warning&&d.warning("ТекÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»ÑÑ, пока ÑоÑ
ÑанÑлаÑÑ Ð²ÐµÑÑиÑ. ÐажмиÑе «ÐоÑÑÑановиÑÑ» еÑÑ Ñаз."),void t.$applyAsync();s(n),t.$applyAsync()}},function(n){e.restoringBackup=!1,(0,U.UT)("[editContentItemCtrl] Failed to save current text before restore:",n),t.$$destroyed||(d&&d.warning&&d.warning("Ðе ÑдалоÑÑ ÑоÑ
ÑаниÑÑ ÑекÑÑий ÑекÑÑ Ð²ÐµÑÑией. ÐоÑÑÑановление оÑменено, ÐºÐ¾Ð¿Ð¸Ñ Ð¾ÑÑалаÑÑ Ð² бÑаÑзеÑе."),t.$applyAsync())})})(n)}};let m=null;return e.expandBackupBanner=function(){e.backupBannerCollapsed=!1,o.bannerTimer&&(clearTimeout(o.bannerTimer),o.bannerTimer=null)},e.discardBackup=function(){if(t.$$destroyed||e._discardingBackup)return;e._discardingBackup=!0;const n=t.contentItem&&t.contentItem.slug;if(n&&e.localBackupHtml){const i=e.localBackupHtml,r=e.localBackupTime?new Date(e.localBackupTime):new Date,a=r.getTime(),s="РезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ "+E(r);p.createManualVersion(n,{name:s,body:i}).then(function(){(0,U.cY)("[editContentItemCtrl] Backup saved as version:",s);try{const t="draft_backup_"+n,r=JSON.parse(localStorage.getItem(t)||"null"),s="draft_emergency_"+n;let c=null;try{c=JSON.parse(localStorage.getItem(s)||"null")}catch(e){}const l=c?.html===i&&c.timestamp<=a;if(r?.html===i){const n=Array.isArray(r.history)?r.history.slice():[];if(n.length>0){const i=n.pop();localStorage.setItem(t,JSON.stringify({...i,history:n})),o.pendingDurableBackup=i,e.localBackupHtml=i.html,e.localBackupTime=new Date(i.timestamp),e.hasLocalBackup=!0}else localStorage.removeItem(t),o.pendingDurableBackup=null;l&&localStorage.removeItem(s)}else if(l)localStorage.removeItem(s),o.pendingDurableBackup=!0===r?.pendingDurableSync?r:null,o.pendingDurableBackup&&(e.localBackupHtml=r.html,e.localBackupTime=new Date(r.timestamp),e.hasLocalBackup=!0);else if(!0===r?.pendingDurableSync){const n=Array.isArray(r.history)?r.history.slice():[],s=n.findIndex(e=>e.html===i&&e.timestamp===a);-1!==s&&(n.splice(s,1),r.history=n,localStorage.setItem(t,JSON.stringify(r))),o.pendingDurableBackup=r,e.localBackupHtml=r.html,e.localBackupTime=new Date(r.timestamp),e.hasLocalBackup=!0}}catch(e){}(0,U.cY)("[editContentItemCtrl] Backup discarded (saved to version history)"),d.success("РезеÑÐ²Ð½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑоÑ
Ñанена"),e._discardingBackup=!1,t.$applyAsync()}).catch(function(n){(0,U.UT)("[editContentItemCtrl] Failed to save backup as version:",n),d.warning("Ðе ÑдалоÑÑ ÑоÑ
ÑаниÑÑ Ð²ÐµÑÑиÑ, ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ ÑоÑ
Ñанена локалÑно"),e.hasLocalBackup=!0,e._discardingBackup=!1,t.$applyAsync()})}else{if(n)try{localStorage.removeItem("draft_backup_"+n),localStorage.removeItem("draft_emergency_"+n)}catch(e){}e._discardingBackup=!1}e.hasLocalBackup=!1,e.backupBannerCollapsed=!1,t.$applyAsync()},{destroy(){o.bannerTimer&&(clearTimeout(o.bannerTimer),o.bannerTimer=null),m&&m()}
1,reconcileAfterSync:function(e){function n(){e.off("unsyncedChanges",o),m===n&&(m=null)}function o(){t.$$destroyed?n():i()&&(n(),l())}if(m&&m(),!e||"function"!=typeof e.on||"function"!=typeof e.off)return;const i=()=>!0===e.synced&&!1===e.hasUnsyncedChanges;i()?l():(e.on("unsyncedChanges",o),m=n)}}}(e,t,R,P);let ae=!1;const se=(0,Y.P)(t);t.$watch(function(){return e.tiptapReady&&!e.collabSyncPending},function(e){e&&!ae&&t.$root.isEditorLoading&&(ae=!0,se.dismiss())}),window.addEventListener("blur",B.handleWindowBlur),window.addEventListener("beforeunload",B.handleBeforeUnload);const ce=n=>{if((n.ctrlKey||n.metaKey)&&"KeyS"===n.code&&(n.preventDefault(),e.canEdit))if(t.contentItem&&t.contentItem.slug){const t=e.saveAndCreateVersion();t&&"function"==typeof t.catch&&t.catch(function(){})}else e.saveDraft&&t.$applyAsync(function(){e.saveDraft()})};window.addEventListener("keydown",ce);const le=n=>{if(e.tiptapEditor&&e.tiptapEditor.isFocused)return;if(!n.ctrlKey&&!n.metaKey)return;if(e.commenterReadOnly&&(!n.altKey||n.shiftKey||"KeyC"!==n.code))return;const o=n.code;if(n.shiftKey&&!n.altKey)switch(o){case"KeyC":return n.preventDefault(),void t.$applyAsync(()=>e.setSuggestionMode(!e.suggestionMode));case"KeyD":return n.preventDefault(),void t.$applyAsync(()=>e.onEditorModeChange("editing"));case"KeyP":return n.preventDefault(),void t.$applyAsync(()=>e.togglePreviewMode());case"BracketLeft":return n.preventDefault(),void(e.tocNavigation&&e.tocNavigation.toggle());case"BracketRight":case"Slash":return n.preventDefault(),void t.$applyAsync(()=>e.toggleSidebar());case"KeyH":if(!e.isAdmin)return;return n.preventDefault(),void(e.toggleHtmlMode&&e.toggleHtmlMode())}else if(n.altKey&&!n.shiftKey){if("KeyC"===o)return n.preventDefault(),void t.$applyAsync(()=>e.addComment());if("KeyQ"===o)return n.preventDefault(),void t.$applyAsync(()=>e.toggleQuietMode())}else if(!n.shiftKey&&!n.altKey&&"Slash"===o)return n.preventDefault(),void(0,F.r8)()};document.addEventListener("keydown",le);let de=null,ue=null,pe=null,me=null,ge=null,ve=null,be=null,Ie=null,we=null,Se=null;t.$on("$destroy",()=>{(0,U.cY)("[editContentItemCtrl] Cleaning up TipTap editor resources...");try{e.tocNavigation&&(e.tocNavigation.destroy(),e.tocNavigation=null)}catch(e){(0,U.UT)("[editContentItemCtrl] Error destroying TOC Navigation:",e)}Se&&(clearTimeout(Se),Se=null),we&&(clearTimeout(we),we=null),be&&(clearTimeout(be),be=null),M&&M.complete(),e._skipCollabOverlay=!1,Ie&&(clearTimeout(Ie),Ie=null),P.bannerTimer&&(clearTimeout(P.bannerTimer),P.bannerTimer=null);const n=document.querySelector(".discours-editor");n&&n.classList.remove("quiet-mode"),document.body.classList.remove("quiet-mode-active"),se.destroy(),t.$root.isEditorLoading&&(t.$root.isEditorLoading=!1),window.removeEventListener("blur",B.handleWindowBlur),window.removeEventListener("beforeunload",B.handleBeforeUnload),window.removeEventListener("keydown",ce),document.removeEventListener("keydown",le);try{O.abort()}catch(e){}[B,Q,X,Z,ee,oe,ie,re].forEach(function(e){try{e.destroy()}catch(e){(0,U.UT)("[editContentItemCtrl] Error destroying sub-module:",e)}});try{w.stopAutoVersioning()}catch(e){(0,U.UT)("[editContentItemCtrl] Error stopping auto-versioning:",e)}if(e.hasUnsavedChanges&&e.tiptapEditor)try{const n=e.tiptapEditor.getHTML(),o=`draft_emergency_${t.contentItem.slug||"new"}`;let i=null;try{i=JSON.parse(localStorage.getItem(`draft_backup_${t.contentItem.slug}`)||"null")}catch(e){}localStorage.setItem(o,JSON.stringify({html:n,timestamp:Date.now(),slug:t.contentItem.slug,type:"destroy_backup",pendingDurableSync:!0===i?.pendingDurableSync||!!e.collabServerUrl&&!!e.collabDocumentName&&"synced"!==e.collabStatus})),(0,U.cY)("[editContentItemCtrl] Emergency backup saved to localStorage")}catch(e){(0,U.UT)("[editContentItemCtrl] Failed to save emergency backup:",e)}if(de&&ue){try{ue.unobserve(de),(0,U.cY)("[editContentItemCtrl] Y.js observer cleaned up")}catch(e){(0,U.UT)("[editContentItemCtrl] Error cleaning up Y.js observer:",e)}de=null,ue=null}if(e._suggestionThreadsObserver&&e._suggestionThreadsMap){try{e._suggestionThreadsMap.unobserve(e._suggestionThreadsObserver),(0,U.cY)("[editContentItemCtrl] Y.js suggestionThreads observer cleaned up")}catch(e){(0,U.UT)("[editContentItemCtrl] Error cleaning up suggestionThreads observer:",e)}e._suggestionThreadsObserver=null,e._suggestionThreadsMap=null}if(pe&&me){try{me.unobserve(pe),(0,U.cY)("[editContentItemCtrl] Y.js comments observer cleaned up")}catch(e){(0,U.UT)("[editContentItemCtrl] Error cleaning up comments observer:",e)}pe=null,me=null}if(ge&&e.tiptapEditor&&e.tiptapEditor.getProvider){try{const t=e.tiptapEditor.getProvider();
1t&&t.awareness&&(t.awareness.off("change",ge),(0,U.cY)("[editContentItemCtrl] Awareness observer cleaned up"))}catch(e){(0,U.UT)("[editContentItemCtrl] Error cleaning up awareness observer:",e)}ge=null}if(ve&&(clearTimeout(ve),ve=null),e.tiptapEditor){try{e.tiptapEditor.destroy(),(0,U.cY)("[editContentItemCtrl] TipTap editor destroyed")}catch(e){(0,U.UT)("[editContentItemCtrl] Error destroying TipTap editor:",e)}e.tiptapEditor=null}}),Promise.all([n.e(272),n.e(929),n.e(411),n.e(753),n.e(68),n.e(1)]).then(n.bind(n,36090)).catch(()=>{});let Ae=!1;e.initTiptapCollaboration=async function(){if(!e.tiptapReady&&!Ae){Ae=!0;try{const a=t.contentItem;if(!a)return void(0,U.cY)("[editContentItemCtrl] Waiting for contentItem to load...");const s=()=>"Literature"===k?a.media&&a.media[0]&&a.media[0].literatureBody||"":a.body||"";if(!a.slug)return e._autoDraftPending?void(0,U.cY)("[editContentItemCtrl] Auto-draft pending, skipping local init"):((0,U.cY)("[editContentItemCtrl] Initializing Tiptap for NEW",k,"(local mode)"),e.collabDocumentName=null,e.collabServerUrl="",e.collabToken="",e.collabStatus="",e.initialContent=s(),e.canEdit=!0,e.permissionsLoaded=!0,e.contentItemCreatorId=e.userId,void setTimeout(function(){e.tiptapReady=!0,(0,U.cY)("[editContentItemCtrl] tiptapReady set to true for NEW article"),t.$applyAsync()},0));const c=a.slug;e.collabDocumentName=`content-item:${c}`,e.collabServerUrl=D||"",e.collabToken=D?`${f.userId()}:${h.get("authToken")}`:"",e.collabStatus=D?"connecting":"",e.initialContent=s();const u=`draft_backup_${c}`,m=`draft_emergency_${c}`;let g=null;try{const e=6048e5,t=function(){try{const t=["draft_backup_","draft_emergency_"];let n=0;const o=500;let i=0;const r=[];for(let e=0;e<localStorage.length&&i<o;e++,i++){const t=localStorage.key(e);t&&r.push(t)}for(let o=0;o<r.length;o++){const i=r[o];if(t.some(function(e){return i.startsWith(e)})&&i!==u&&i!==m)try{const t=localStorage.getItem(i);if(t){const o=JSON.parse(t);o.timestamp&&!0!==o.pendingDurableSync&&Date.now()-o.timestamp>e&&(localStorage.removeItem(i),n++)}}catch(e){localStorage.removeItem(i),n++}}n>0&&(0,U.cY)("[editContentItemCtrl] Evicted",n,"expired backup(s)")}catch(e){}};"function"==typeof requestIdleCallback?requestIdleCallback(t,{timeout:5e3}):setTimeout(t,100);const i=localStorage.getItem(u);i&&(g=JSON.parse(i),!0!==g.pendingDurableSync&&Date.now()-g.timestamp>e&&(localStorage.removeItem(u),g=null,(0,U.cY)("[editContentItemCtrl] Expired backup removed")));const r=localStorage.getItem(m);if(r){const t=JSON.parse(r);!0!==t.pendingDurableSync&&Date.now()-t.timestamp>e?(localStorage.removeItem(m),(0,U.cY)("[editContentItemCtrl] Expired emergency backup removed")):(!g||t.timestamp>g.timestamp)&&(n=g,o=t,g=!0!==o?.pendingDurableSync||!0!==n?.pendingDurableSync?o:{...o,history:l(n,o.html)},(0,U.cY)("[editContentItemCtrl] Using emergency backup (newer than regular)"),!0===t.pendingDurableSync&&localStorage.setItem(u,JSON.stringify(g))),localStorage.removeItem(m)}}catch(e){(0,U.UT)("[editContentItemCtrl] Failed to read backup:",e)}
1if(!0===g?.pendingDurableSync&&(P.pendingDurableBackup=g,i(g)),(0,U.cY)("[editContentItemCtrl] Starting editor (parallel with API fetch):",{documentName:e.collabDocumentName,serverUrl:e.collabServerUrl||"(local mode)",hasToken:!!e.collabToken,initialContentLength:e.initialContent.length,collaborationEnabled:!!D}),e.tiptapReady=!0,e.collabSyncPending=!e._skipCollabOverlay&&!!D,(e.collabSyncPending||e._skipCollabOverlay)&&(be&&clearTimeout(be),be=setTimeout(()=>{if(t.$$destroyed)be=null;else{var n=e._skipCollabOverlay;if(M&&M.complete(),e._skipCollabOverlay=!1,e.collabSyncPending&&((0,U.cY)("[editContentItemCtrl] collabSyncPending safety timeout â forcing overlay off"),e.collabSyncPending=!1,t.$evalAsync(function(){p()})),n)(0,U.cY)("[editContentItemCtrl] Background collab connection timed out (new draft) â editor works locally");else{var o="collab-retry-btn-"+Date.now();void 0!==I&&I.warning&&(I.warning({message:'СовмеÑÑное ÑедакÑиÑование недоÑÑÑпно â ÑабоÑаем в авÑономном Ñежиме. <button class="notification-undo-btn '+o+'">ÐеÑеподклÑÑиÑÑÑÑ</button>',delay:1e4}),setTimeout(function(){var t=document.querySelector("."+o);if(t){var n=function(){t.removeEventListener("click",n),e.retryCollabConnection&&e.retryCollabConnection()};t.addEventListener("click",n)}},0))}be=null}},1e4)),t.$applyAsync(),e._skipCollabOverlay)(0,U.cY)("[editContentItemCtrl] Skipping collab API fetch for upgrade path (new draft)");else try{const n=encodeURIComponent(c);if("string"==typeof c&&!/^(?:[a-z0-9][a-z0-9_-]{0,200}|[a-zA-Z0-9]{17}|[a-fA-F0-9]{24})$/.test(c))try{window.__sentry&&window.__sentry.captureMessage&&window.__sentry.captureMessage("collab/document: malformed slug",{level:"warning",tags:{component:"collab-init",endpoint:"collab/document"},extra:{docId:c,slugLen:c.length},fingerprint:["collab-document","malformed-slug"]})}catch(e){}const o=`${y.baseUrl}/collab/document/content-item:${n}`,a=await fetch(o,{headers:{"X-User-Id":h.get("userId"),"X-Auth-Token":h.get("authToken")},signal:O.signal});if(t.$$destroyed)return;if(a.ok){const n=await a.json();if(t.$$destroyed)return;if("success"===n.status&&n.data){if((0,U.cY)("[editContentItemCtrl] API response: bodyLen=",(n.data.body||"").length,"| rawBodyLen=",(n.data.rawBody||"").length,"| rawBodyDiffers=",n.data.rawBody&&n.data.rawBody!==n.data.body),n.data.rawBody?(e.initialContent=n.data.rawBody,(0,U.cY)("[editContentItemCtrl] Using rawBody (with suggestions) from collab API, length:",n.data.rawBody.length)):n.data.body&&(e.initialContent=n.data.body,(0,U.cY)("[editContentItemCtrl] Using draft body from collab API, length:",n.data.body.length)),e.hasDraft=n.data.hasDraft||!1,n.data.title&&t.contentItem&&(t.contentItem.title=n.data.title),g){const e=n.data.rawBody||n.data.body||"",t=n.data.draftUpdatedAt?new Date(n.data.draftUpdatedAt).getTime():0,o=!t||g.timestamp>t;!0===g.pendingDurableSync||(o&&d(g.html,e)?((0,U.cY)("[editContentItemCtrl] Found significant local backup, offering recovery..."),i(g)):(localStorage.removeItem(u),(0,U.cY)("[editContentItemCtrl] Backup discarded:",o?"content matches server":"server is newer")))}if(!1===n.data.canDirectEdit){e.canEdit=!1;const t=n.data.linkSharing&&n.data.linkSharing.fullRole;f.isLoggedIn()?(e.suggestionMode=!0,(0,U.cY)("[editContentItemCtrl] User has comment-only access, enabling suggestion mode")):(e.commenterReadOnly=!0,"editor"!==t&&"coauthor"!==t||(e.loginForReviewAvailable=!0),(0,U.cY)("[editContentItemCtrl] Anonymous user: enabling read-only mode",{linkFullRole:t}),r(e.getActiveEditor&&e.getActiveEditor()))}else e.canEdit=!0;e.permissionsLoaded=!0,n.data.createdBy&&n.data.createdBy._id&&(e.contentItemCreatorId=n.data.createdBy._id),(0,U.cY)("[editContentItemCtrl] Document status loaded:",{hasDraft:e.hasDraft,draftVersion:n.data.draftVersion,version:n.data.version,hasLocalBackup:e.hasLocalBackup,canDirectEdit:n.data.canDirectEdit}),t.$applyAsync()}}else{if(f.isLoggedIn()&&401!==a.status)if(410===a.status)e.accessDenied=!0,e.accessDeniedIcon="fas fa-exclamation-circle",e.accessDeniedMessage="ÐÑÐ¾Ñ Ð¼Ð°ÑеÑиал бÑл ÑдалÑн и болÑÑе недоÑÑÑпен Ð´Ð»Ñ ÑедакÑиÑованиÑ.",e.accessDeniedLink=t.contentItem&&(t.contentItem.link||(t.contentItem.slug?"/"+t.contentItem.slug:null))||null,t.$root.hideSiteHeader=!1,t.$root.isEditorLoading=!1;else if(403===a.status)e.accessDenied=!0,t.$root.hideSiteHeader=!1,t.$root.isEditorLoading=!1;else{const n=a.status;if(400===n||404===n)try{window.__sentry&&window.__sentry.captureMessage&&window.__sentry.captureMessage(`collab/document ${n}
1`,{level:"warning",tags:{component:"collab-init",endpoint:"collab/document",http_status:String(n)},extra:{docId:c,statusText:a.statusText||""},fingerprint:["collab-document",String(n)]})}catch(e){}e.accessDenied=!0,e.accessDeniedMessage=400===n?"Ðе ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ð¼Ð°ÑеÑиал: его адÑÐµÑ ÑодеÑÐ¶Ð¸Ñ Ð½ÐµÐ´Ð¾Ð¿ÑÑÑимÑе ÑимволÑ. СообÑиÑе в поддеÑжкÑ.":404===n?"ÐаÑеÑиал не найден. Ðозможно, он бÑл ÑдалÑн.":429===n?"СлиÑком много запÑоÑов. ÐодождиÑе минÑÑÑ Ð¸ обновиÑе ÑÑÑаниÑÑ.":"ÐÑибка ÑеÑвеÑа ("+(n||"?")+"). ÐопÑобÑйÑе обновиÑÑ ÑÑÑаниÑÑ.",t.$root.hideSiteHeader=!1,t.$root.isEditorLoading=!1}else e.requiresAuth=!0,t.$root.hideSiteHeader=!1,t.$root.isEditorLoading=!1;e.permissionsLoaded=!0,e.tiptapReady=!1,t.$applyAsync()}}catch(n){if("AbortError"===n.name||t.$$destroyed)return void(0,U.cY)("[editContentItemCtrl] Init aborted (scope destroyed or navigating away)");if((0,U.UT)("[editContentItemCtrl] Failed to fetch document status:",(0,W.Ld)(n)),null===e.canEdit&&(e.canEdit=!0),!e.contentItemCreatorId&&t.contentItem&&t.contentItem.createdBy){const n=t.contentItem.createdBy;e.contentItemCreatorId="string"==typeof n?n:n._id}e.permissionsLoaded=!0,t.$applyAsync()}}finally{Ae=!1}var n,o}};var Ee=!1;e.upgradeToCollabMode=function(){if(Ee||t.$$destroyed)(0,U.UT)("[editContentItemCtrl] upgradeToCollabMode already in progress or scope destroyed, skipping");else{var n=t.contentItem&&t.contentItem.slug;if((0,U.cY)("[editContentItemCtrl] Upgrading to collab mode, slug:",n),!n)return(0,U.UT)("[editContentItemCtrl] upgradeToCollabMode called without slug, aborting"),void(e._autoDraftPending=!1);if(Ee=!0,e.getActiveEditor){var o=e.getActiveEditor();if(o){try{var i=o.getHTML();i&&"<p></p>"!==i&&(e.initialContent=i)}catch(e){(0,U.UT)("[editContentItemCtrl] upgradeToCollabMode: getHTML() failed:",e)}try{o.destroy()}catch(e){(0,U.UT)("[editContentItemCtrl] upgradeToCollabMode: editor.destroy() failed:",e)}}}e.tiptapEditor=null,e.tiptapReady=!1,e._autoDraftPending=!1,e.canEdit=!0,e.permissionsLoaded=!0,e.contentItemCreatorId=e.userId,e._skipCollabOverlay=!0,e.collabSyncPending=!1,M&&M.start(),t.$applyAsync(),setTimeout(function(){if(t.$$destroyed)return Ee=!1,void(Ae=!1);Ae=!1,e.initTiptapCollaboration().then(function(){Ee=!1}).catch(function(o){Ee=!1,e.collabSyncPending=!1,M&&M.complete(),e._skipCollabOverlay=!1,t.$applyAsync(),p(),o&&"AbortError"!==o.name&&((0,U.UT)("[editContentItemCtrl] upgradeToCollabMode failed:",o),!e.initialContent||e.tiptapEditor||t.$$destroyed||(n=t.contentItem&&t.contentItem.slug)&&function(e,t){try{const n="draft_backup_"+e;let o=null;try{o=JSON.parse(localStorage.getItem(n)||"null")}catch(e){}const i=l(o,t);localStorage.setItem(n,JSON.stringify({html:t,timestamp:Date.now(),slug:e,type:"upgrade_fallback",pendingDurableSync:!!D||!0===o?.pendingDurableSync,history:i})),(0,U.cY)("[editContentItemCtrl] Saved upgrade fallback backup to localStorage")}catch(e){}}(n,e.initialContent))})},50)}};const Ce=t.$watch("contentItem",function(t){if(t&&!e.tiptapReady){if(e._autoDraftPending||Ee)return void(0,U.cY)("[editContentItemCtrl] Watcher: auto-draft pending or upgrade in progress, skipping init");if(m()&&!t.slug)return void(0,U.cY)("[editContentItemCtrl] Watcher: waiting for slug (existing article)...");if((0,U.cY)("[editContentItemCtrl] contentItem loaded, initializing Tiptap...",t.slug?"existing article":"NEW article"),!e.contentItemCreatorId&&t.createdBy){const n=t.createdBy;e.contentItemCreatorId="string"==typeof n?n:n._id}Ce&&Ce(),e.initTiptapCollaboration().catch(function(e){e&&"AbortError"!==e.name&&(0,U.UT)("[editContentItemCtrl] Init failed (watcher):",e)})}});m()?t.contentItem&&t.contentItem.slug?((0,U.cY)("[editContentItemCtrl] contentItem already loaded with slug, initializing Tiptap..."),e.initTiptapCollaboration().catch(function(e){e&&"AbortError"!==e.name&&(0,U.UT)("[editContentItemCtrl] Init failed (existing):",e)})):(0,U.cY)("[editContentItemCtrl] Waiting for contentItem data to load (existing article)..."):t.contentItem?e._autoDraftPending?(0,U.cY)("[editContentItemCtrl] Auto-draft pending, deferring init for NEW article..."):((0,U.cY)("[editContentItemCtrl] contentItem exists for NEW article, initializing Tiptap..."),e.initTiptapCollaboration().catch(function(e){e&&"AbortError"!==e.name&&(0,U.UT)("[editContentItemCtrl] Init failed (new):",e)})):(0,U.cY)("[editContentItemCtrl] Waiting for contentItem..."),e.onCollabSynced=function(){if(!t.$$destroyed){
1if((0,U.cY)("[editContentItemCtrl] Tiptap collaboration synced"),M&&M.complete(),e._skipCollabOverlay=!1,(e.tiptapEditor&&e.tiptapEditor.getText?e.tiptapEditor.getText().trim():"").length>0?(a(),e.collabSyncPending=!1,t.$applyAsync(),p()):!e.initialContent&&e.permissionsLoaded?(e.collabSyncPending=!1,t.$applyAsync(),p()):Ie=setTimeout(function(){Ie=null,t.$$destroyed||(e.collabSyncPending=!1,t.$applyAsync(),p())},q.x),be&&(clearTimeout(be),be=null),t.$applyAsync(),e.unsyncedChangesCount>0&&e._preMergeContent&&t.contentItem&&t.contentItem.slug&&((0,U.cY)("[editContentItemCtrl] Creating pre-merge version ("+e.unsyncedChangesCount+" unsynced changes)"),w.createManualVersion(t.contentItem.slug,{name:"Снимок пеÑед ÑинÑ
ÑонизаÑией (оÑлайн-пÑавки)",body:e._preMergeContent}).then(()=>{(0,U.cY)("[editContentItemCtrl] Pre-merge version created successfully")}).catch(e=>{(0,U.UT)("[editContentItemCtrl] Failed to create pre-merge version:",e)})),e._preMergeContent=null,e.collabStatus="synced",e.lastSyncTime=Date.now(),e.unsyncedChangesCount=0,re.reconcileAfterSync(e.tiptapEditor&&e.tiptapEditor.getProvider?e.tiptapEditor.getProvider():null),e.quietMode&&e.tiptapEditor&&(document.body.classList.add("quiet-mode-active"),e.tiptapEditor.storage&&e.tiptapEditor.storage.commentBubbleMenu&&(e.tiptapEditor.storage.commentBubbleMenu.quietMode=!0)),e.tiptapEditor&&e.tiptapEditor.getYDoc)try{const n=e.tiptapEditor.getYDoc();if(n){if(ue=n.getMap("documentMeta"),de=n=>{t.$$destroyed||n.changes.keys.forEach((n,o)=>{if("hasDraft"===o){const n=ue.get("hasDraft");e.hasDraft!==n&&(e.hasDraft=n,(0,U.cY)("[Collab] hasDraft synced from collaborator:",n),t.$applyAsync())}"publishedVersion"===o&&(e.publishedVersion=ue.get("publishedVersion"),(0,U.cY)("[Collab] Document published by collaborator, version:",e.publishedVersion),t.$applyAsync())})},e._metaMapObserver&&e._metaMapRef)try{e._metaMapRef.unobserve(e._metaMapObserver)}catch(e){}e._metaMapObserver=de,e._metaMapRef=ue,ue.observe(de),(0,U.cY)("[editContentItemCtrl] Y.js documentMeta observer set up");const o=n.getMap("suggestionThreads");if(e._suggestionThreadsObserver&&e._suggestionThreadsMap)try{e._suggestionThreadsMap.unobserve(e._suggestionThreadsObserver)}catch(e){}const i=n=>{e._isLocalSuggestionThreadUpdate||(e.loadSuggestionThreads(n),t.$applyAsync())};if(e._suggestionThreadsObserver=i,e._suggestionThreadsMap=o,o.observe(i),(0,U.cY)("[editContentItemCtrl] Y.js suggestionThreads observer set up"),pe&&me)try{me.unobserve(pe)}catch(e){}me=n.getMap("comments"),pe=function(n){t.$$destroyed||n.transaction&&n.transaction.local||((0,U.cY)("[Collab] Comments map updated by collaborator, keys changed:",Array.from(n.changes.keys.keys())),e.onRemoteCommentsMapChange&&e.onRemoteCommentsMapChange(n),e.refreshSuggestionsAndComments&&e.refreshSuggestionsAndComments())},me.observe(pe),(0,U.cY)("[editContentItemCtrl] Y.js comments observer set up"),ee.loadSuggestionThreadsFromApi(!0).catch(function(e){e&&"AbortError"===e.name||(0,U.UT)("[collab-init] Suggestion thread refresh failed:",(0,W.Ld)(e))})}}catch(e){(0,U.UT)("[editContentItemCtrl] Failed to set up Y.js observer:",e)}if(e.tiptapEditor&&e.tiptapEditor.getProvider)try{const n=e.tiptapEditor.getProvider();if(n&&n.awareness){const o=n.awareness,i=250;let r="";const a=()=>{const n=o.getStates(),i=[],a=o.clientID;n.forEach((e,t)=>{t!==a&&e.user&&i.push({clientId:t,name:e.user.name||"ÐолÑзоваÑелÑ",color:e.user.color||"#958DF1",avatar:e.user.avatar||null})});const s=i.map(e=>e.clientId).sort().join(",");s!==r&&(r=s,e.connectedUsers=i,t.$applyAsync())};e.tiptapEditor._cursorCache=new Map;const s=()=>{const t=o.getStates();for(const n of e.tiptapEditor._cursorCache.keys())t.has(n)||e.tiptapEditor._cursorCache.delete(n);t.forEach((t,n)=>{if(n!==o.clientID&&t.cursor&&null!=t.cursor.anchor){const o=e.tiptapEditor.resolveRelativePosition(t.cursor.anchor);null!=o&&e.tiptapEditor._cursorCache.set(n,o)}})};if(s(),a(),ge)try{o.off("change",ge)}catch(e){}ve&&(clearTimeout(ve),ve=null),ge=()=>{s(),ve&&clearTimeout(ve),ve=setTimeout(()=>{ve=null,a()},i)},o.on("change",ge),(0,U.cY)("[editContentItemCtrl] Awareness observer set up")}}catch(e){(0,U.UT)("[editContentItemCtrl] Failed to set up awareness observer:",e)}}},e.onInitialContentReady=function(){t.$$destroyed||((0,U.cY)("[editContentItemCtrl] Initial content ready â removing overlay"),a(),Ie&&(clearTimeout(Ie),Ie=null),e.collabSyncPending=!1,t.$applyAsync(),p())};
1const Te=t.$watch("$ctrl.tiptapEditor",function(o){if(o){Te&&Te(),B.setLastSavedContent(o.getHTML(),o.state&&o.state.doc),a(),t.$watch(function(){return t.contentItem&&t.contentItem.title},function(t,n){t!==n&&((0,U.cY)("[editContentItemCtrl] Title changed, triggering autosave"),e.triggerAutosave())}),o.on("update",({transaction:n})=>{n.getMeta("remarkMarksInternal")||(a(),Se&&clearTimeout(Se),Se=setTimeout(()=>{Se=null,e.updateCounters(),t.$applyAsync()},500),e.refreshSuggestionsAndComments(),n.getMeta("y-sync$")||e.triggerAutosave())}),o.on("selectionUpdate",()=>{we&&clearTimeout(we),we=setTimeout(()=>{we=null,t.$applyAsync()},50)}),e.updateCounters(),t.$applyAsync(),e.refreshSuggestionsAndComments(),e.suggestionMode&&e.setSuggestionMode(!0),e.commenterReadOnly&&r(e.getActiveEditor&&e.getActiveEditor());const i=document.getElementById("toc-nav-container-article")||document.getElementById("toc-nav-container-literature");i&&Promise.all([n.e(753),n.e(68)]).then(n.bind(n,75511)).then(({TocNavigation:t})=>{e.tocNavigation=new t(o,i,{collapsed:!0,title:"Ðглавление"}),(0,U.cY)("[editContentItemCtrl] TOC Navigation initialized")}
1).catch(e=>{(0,U.UT)("[editContentItemCtrl] Failed to load TOC Navigation:",e)}),t.contentItem&&t.contentItem.slug&&(w.startAutoVersioning(t.contentItem.slug,()=>{try{return o.getHTML()}catch(e){return null}},{onStopped(){void 0!==I&&I&&"function"==typeof I.warning&&I.warning("ÐвÑоÑоÑ
Ñанение веÑÑий пÑиоÑÑановлено. ÐозобновиÑÑÑ Ð¿Ñи повÑоÑном оÑкÑÑÑии ÑедакÑоÑа")}}),(0,U.cY)("[editContentItemCtrl] Auto versioning started for:",t.contentItem.slug)),e.isPreviewMode&&!e.previewPost&&setTimeout(function(){t.$$destroyed||(e.previewPost=ie.buildPreviewPost(),o.setEditable(!1),e.sidebarVisible=!1,t.$applyAsync())},100)}});e.onCollabFallback=function(n){(0,U.cY)("[editContentItemCtrl] Collaboration fallback:",n),e.isOfflineMode=!0,e.isReconnecting=!1,M&&M.complete(),e._skipCollabOverlay=!1,e.collabSyncPending=!1,be&&(clearTimeout(be),be=null),t.$applyAsync(),p()},e.retryCollabConnection=function(){if(e.tiptapEditor&&!e.isReconnecting){if((0,U.cY)("[editContentItemCtrl] Retrying collaboration connection..."),e.isReconnecting=!0,e.isOfflineMode=!1,e.tiptapEditor.retryCollabConnection)e.tiptapEditor.retryCollabConnection();else{const t=angular.element(document.querySelector("tiptap-editor")).isolateScope();t&&t.retryCollabConnection?t.retryCollabConnection():((0,U.UT)("[editContentItemCtrl] Cannot find retryCollabConnection method"),e.isReconnecting=!1)}t.$applyAsync()}},t.$on("tiptap:addComment",function(){e.addComment()}),t.$on("tiptap:toggleSuggestionMode",function(){e.setSuggestionMode(!e.suggestionMode)}),t.$on("tiptap:toggleSidebar",function(){e.toggleSidebar()}),t.$on("tiptap:togglePreview",function(){e.togglePreviewMode()}),t.$on("tiptap:setEditingMode",function(){e.onEditorModeChange("editing")}),t.$on("tiptap:toggleShortcutsHelp",function(){(0,F.r8)()}),t.$on("tiptap:toggleToc",function(){e.tocNavigation&&e.tocNavigation.toggle()}),t.$on("tiptap:openHtmlEditor",function(){e.isAdmin&&e.toggleHtmlMode&&e.toggleHtmlMode()}),t.$on("tiptap:toggleDarkMode",function(){e.toggleDarkMode()}),t.$on("tiptap:toggleQuietMode",function(){e.toggleQuietMode()}),(0,U.cY)("[editContentItemCtrl] Tiptap editor mode enabled, waiting for contentItem...")}function T(e,t,n){const o=t||2592e6,i=n||10;if(e&&"function"==typeof e.keys)try{const t=[];if(e.keys().forEach(function(n){if(0!==n.indexOf("expo_editor_backup:"))return;const i=e.get(n),r=i&&Number(i.savedAt);!r||Date.now()-r>o?e.remove(n):t.push({key:n,savedAt:r})}),t.length>i){t.sort(function(e,t){return t.savedAt-e.savedAt});for(let n=i;n<t.length;n++)e.remove(t[n].key)}}catch(e){}}function k(e,t){const n=e||{},o={body:(0,K.stripJustifyAlignment)(t)};var i;return void 0!==n.title&&(o.title=c(n.title||"")),void 0!==n.thumborId&&(o.thumborId=n.thumborId),void 0!==n.imageCaption&&(o.imageCaption=n.imageCaption),Array.isArray(n.tags)&&(o.tags=(i=n.tags,Array.isArray(i)?i.map(function(e){return"string"==typeof e?e:e&&e.title?e.title:""}).filter(function(e){return""!==e}):[])),o}function x(e,t,o){function i(e){ie&&se[e]&&(ie.textContent=se[e])}function r(){return!!(x&&t.contentItem&&t.contentItem.slug&&!te&&!t.sendingAction&&e.canEdit&&E.isLoggedIn())}function a(){const n=e.tiptapExpoEditor;if(!n||n.isDestroyed)return null;let o="";try{o=n.getHTML()}catch(e){return null}return{html:o,payload:k(t.contentItem,o)}}function s(){const n=t.contentItem||{},o=e.tiptapExpoEditor;if(!o||o.isDestroyed)return!1;let i="";try{i=o.getHTML()}catch(e){return!1}return null!==Q&&(i!==Q||n.title!==X||n.thumborId!==Z)}function c(n,o){if(t.$$destroyed||!r()||ee)return;const s=o||a();if(s){if(!o){const e=t.contentItem||{};if(null===Q)return;if(s.html===Q&&e.title===X&&e.thumborId===Z)return}ee=!0,e.expoAutosaveStatus="saving",i("saving"),t.$applyAsync(),x.put("content-items",t.contentItem.slug,s.payload).then(function(){ee=!1,Q=s.html,X=(t.contentItem||{}).title,Z=(t.contentItem||{}).thumborId,e.expoAutosaveStatus="saved",i("saved");const n=Date.now();n-ae>3e4&&(ae=n,M.success({message:"ЧеÑновик ÑоÑ
ÑанÑн",delay:2e3})),we=s.html,f(),t.$applyAsync(),L&&(0,U.cY)("[expo-autosave] СоÑ
Ñанено ÑÑпеÑно")}).catch(function(o){ee=!1;const r=o&&o.status;if(!(0,ve.iF)(o)&&(502===r||503===r||504===r)&&(n||0)<2)return e.expoAutosaveStatus="retrying",i("retrying"),t.$applyAsync(),void(G=setTimeout(function(){G=null,c((n||0)+1,s)},3e3));e.expoAutosaveStatus="error",i("error");const a=Date.now();if(a-re>3e4){re=a;const e=x.getErrorMessage(o,"ÐÑибка авÑоÑоÑ
ÑанениÑ");M.warning(e)}410!==r&&404!==r||(te=!0,e.expoAutosaveStatus="disabled"),t.$applyAsync()})}}function l(){r()&&(z&&clearTimeout(z),z=setTimeout(function(){z=null,c(0)},1e4))}function d(){const n=t.contentItem||{},o=n.type||"Image";let i="",r=angular.copy(n.media||[]);r.length||(r=[{}]);let a="";e.tiptapExpoEditor&&(a=e.tiptapExpoEditor.getHTML(),a&&"<p></p>"!==a&&"<p><br></p>"!==a||(a=""));const s=a?(0,J.Wf)(a):"";if("Literature"===o){const e=s||r[0].literatureBody||"";r[0].literatureBody=e,i=e}else if(["Music","Video","Image"].includes(o)){const e=s||r[0].body||"";r[0].body=e,i=e}else["MusicAlbum","VideoAlbum","ImageAlbum"].includes(o),i=s||n.body||"";const c=n.thumborId||(r[0]?r[0].thumborId:null),l=n.selectedCategory?.slug||"",d=n.slug||"",u=n.link||(l&&d?`/expo/${l}/${d}`:"");
1["Music","MusicAlbum"].includes(o)&&u&&r.forEach(e=>{e.link||(e.link=u)});const p={_id:n._id||"preview-"+Date.now(),title:n.title||"Ðез названиÑ",body:i,thumborId:c,type:o,media:r,link:u,category:n.selectedCategory?.title||n.category||"",categoryLink:n.selectedCategory?.slug?"/expo/"+n.selectedCategory.slug:"",author:n.author||n.application?.name||e.userName,authorLink:E.userPath()?"/"+E.userPath():"",createdBy:t.user||{_id:e.userId},preview:!0,editable:!1,tags:n.tags||[],publishedAt:n.publishedAt||n.postedAt||new Date,createdAt:n.createdAt||new Date,imageCaption:n.imageCaption||""};return L&&(0,U.cY)("[buildExpoPreviewPost] Built preview:",{type:o,bodyLength:i?.length,mediaLength:r?.length,hasLiteratureBody:!!r[0]?.literatureBody,hasMediaBody:!!r[0]?.body}),p}function u(e){const t=String(e||"").trim();return""===t||"<p></p>"===t||"<p><br></p>"===t||"<div></div>"===t}function p(){return"expo_editor_backup:"+(A.path()||"").replace(/\/preview$/,"")}function m(){if(!e.tiptapExpoEditor||e.tiptapExpoEditor.isDestroyed)return"";try{return e.tiptapExpoEditor.getHTML()}catch(e){return""}}function g(){T(C,2592e6,10)}function f(){try{C.remove(p())}catch(e){}}function h(){const e=m();if(u(e))f();else try{C.set(p(),JSON.stringify({html:e,savedAt:Date.now(),slug:t.contentItem&&t.contentItem.slug||null,type:t.contentItem&&t.contentItem.type||null}))}catch(n){try{g(),C.set(p(),JSON.stringify({html:e,savedAt:Date.now(),slug:t.contentItem&&t.contentItem.slug||null,type:t.contentItem&&t.contentItem.type||null}))}catch(e){}}}function y(t,n){e.tiptapExpoEditor&&!e.tiptapExpoEditor.isDestroyed&&t&&(e.tiptapExpoEditor.commands.setContent((0,K.sanitizeBeforeSetContent)(t),!0),we=t,n&&M.success("ÐоÑÑÑановлена локалÑÐ½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ ÑекÑÑа"))}function I(){const e=function(){try{g();const e=C.get(p());if(!e)return null;const n="string"==typeof e?JSON.parse(e):e;return function(e){const n=t.contentItem||{};return!(!e||"string"!=typeof e.html||function(e){const t=Number(e&&e.savedAt);return!t||Date.now()-t>2592e6}(e)||e.type&&n.type&&e.type!==n.type||e.slug&&n.slug&&e.slug!==n.slug)}(n)?n:(f(),null)}catch(e){return null}}();if(!e||!e.html)return;const n=m();u(n)?y(e.html,!0):e.html!==n&&(e.savedAt||0)>function(){const e=t.contentItem||{};let n=0;return[e.draftUpdatedAt,e.updatedAt,e.publishedAt,e.createdAt].forEach(function(e){const t=new Date(e||0).getTime();!isNaN(t)&&t>n&&(n=t)}),n}()+1e3&&function(e){if(!e||!e.html||Se)return;Se=!0;const t="expo-restore-backup-"+Date.now();M.warning({message:'Ðайдена более Ð½Ð¾Ð²Ð°Ñ Ð»Ð¾ÐºÐ°Ð»ÑÐ½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ ÑекÑÑа. <button type="button" class="notification-undo-btn '+t+'">ÐоÑÑÑановиÑÑ</button>',delay:1e4}),setTimeout(function(){const n=document.querySelector("."+t);n&&n.addEventListener("click",function(){y(e.html,!0),M.clearAll()})},0)}(e)}function w(n){const o=e[n];if("function"!=typeof o||o.__expoBackupWrapped)return;const i=function(){const n=o.apply(this,arguments);return n&&"function"==typeof n.then?n.then(function(n){return f(),we=m()||null,Q=we||"",X=(t.contentItem||{}).title,Z=(t.contentItem||{}).thumborId,e.expoAutosaveStatus="saved",n}):n};i.__expoBackupWrapped=!0,e[n]=i}function S(n){if("development"!==O&&"development_local"!==O&&e.tiptapExpoEditor&&!e.tiptapExpoEditor.isDestroyed){if(h(),!oe&&r()&&s()&&!ee){oe=!0;const e=a();if(e){const n=(x.baseUrl||"")+"/content-items/"+t.contentItem.slug,o=JSON.stringify(e.payload);if("function"==typeof fetch)try{const e={"Content-Type":"application/json"};try{const t=C.deriveKey?C.deriveKey(""):"ls.",n=localStorage.getItem(t+"userId"),o=localStorage.getItem(t+"authToken");n&&(e["X-User-Id"]=JSON.parse(n)),o&&(e["X-Auth-Token"]=JSON.parse(o))}catch(e){}fetch(n,{method:"PUT",headers:e,body:o,keepalive:!0,credentials:"same-origin"}).catch(function(){})}catch(e){}}}const o=e.tiptapExpoEditor.getHTML();if(null!==we&&o!==we)return n.preventDefault(),n.returnValue="",""}}const{$location:A,loginService:E,localStorageService:C,apiClient:x,Notification:M,NOTIFICATION_MESSAGES:_,ConfirmDialog:D,DEBUG:L,navigatePreviewPath:P,DISCOURS_ENV:O,ver
1sioningService:N,handleImageUpload:R,handleLinkEditor:V,handleEmbedInsert:B,handleVideoInsert:q,handlePdfInsert:H}=o,F=b(e,t,{Notification:M,handleImageUpload:R,handleLinkEditor:V,handleEmbedInsert:B,handleVideoInsert:q,handlePdfInsert:H,s3UploaderService:o.s3UploaderService,contentItem:o.contentItem,THUMBOR_SERVER:o.THUMBOR_SERVER}),W=v(e,t,{Notification:M,NOTIFICATION_MESSAGES:_,versioningService:N,ConfirmDialog:D});let z=null,G=null,Q=null,X=null,Z=null,ee=!1,te=!1,oe=!1,ie=null,re=0,ae=0;e.expoAutosaveStatus=null;const se={saving:"СоÑ
Ñанение...",saved:"ЧеÑновик ÑоÑ
ÑанÑн",error:"ÐÑибка авÑоÑоÑ
ÑанениÑ",retrying:"ÐовÑÐ¾Ñ ÑоÑ
ÑанениÑ..."};e.flushExpoAutosave=function(){if(t.$$destroyed||!r()||ee)return Promise.resolve();if(!s())return Promise.resolve();z&&(clearTimeout(z),z=null);const n=a();return n?(ee=!0,e.expoAutosaveStatus="saving",i("saving"),t.$applyAsync(),x.put("content-items",t.contentItem.slug,n.payload).then(function(){ee=!1,Q=n.html,X=(t.contentItem||{}).title,Z=(t.contentItem||{}).thumborId,e.expoAutosaveStatus="saved",i("saved"),we=n.html,f(),t.$applyAsync()}).catch(function(n){ee=!1,e.expoAutosaveStatus="error",i("error"),t.$applyAsync()})):Promise.resolve()},e.tiptapReady=!1,Promise.all([n.e(272),n.e(929),n.e(411),n.e(753),n.e(68),n.e(1)]).then(n.bind(n,36090)).then(()=>{e.tiptapReady||(e.tiptapReady=!0,L&&(0,U.cY)("[editContentItemCtrl] Expo tiptapReady: module preloaded"),t.$applyAsync())}).catch(n=>{e.tiptapReady=!0,t.$applyAsync()}),e.userId||(e.userId=E.userId()),e.userName||(e.userName=(0,j.E)(E.userDisplayName(),E.userPath())||"ÐолÑзоваÑелÑ"),e.isPreviewMode="true"===A.search().preview||A.path().endsWith("/preview"),e.previewPost=null;let ce=!1;const le=(0,Y.P)(t);t.$watch(function(){return e.tiptapReady},function(e){e&&!ce&&t.$root.isEditorLoading&&(ce=!0,le.dismiss())}),e.onEditorModeChange=function(n){switch((0,U.cY)("[editContentItemCtrl] Expo mode changed to:",n),n){case"preview":if(e.cropUploading)return M.warning("ÐождиÑеÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки обложки"),!1;if(!(0,he.j)(t.contentItem,M))return!1;e.isPreviewMode=!0,e.previewPost=d(),e.tiptapExpoEditor&&e.tiptapExpoEditor.setEditable(!1),P(!0),(0,fe.M)(t);break;case"editing":case"suggesting":e.isPreviewMode=!1,e.previewPost=null,e.tiptapExpoEditor&&e.tiptapExpoEditor.setEditable(!0),P(!1),(0,fe.M)(t)}t.$applyAsync()},e.togglePreviewMode=function(){e.onEditorModeChange(e.isPreviewMode?"editing":"preview")},t.$on("tiptap:togglePreview",function(){e.togglePreviewMode()}),t.$on("tiptap:openHtmlEditor",function(){e.isAdmin&&e.toggleHtmlMode&&e.toggleHtmlMode()}),t.$on("tiptap:toggleDarkMode",function(){e.toggleDarkMode()}),t.$on("editor:contentRestored",function(){r()&&l()});const de=o=>{if((o.ctrlKey||o.metaKey)&&!o.altKey){if(!o.shiftKey&&"KeyS"===o.code)return o.preventDefault(),void(r()&&!ee?c(0):e.saveDraft&&t.$applyAsync(function(){e.saveDraft()}));var i;if(o.shiftKey&&(!e.tiptapExpoEditor||!e.tiptapExpoEditor.isFocused))switch(o.code){case"KeyP":return o.preventDefault(),void t.$applyAsync(()=>e.togglePreviewMode());case"KeyH":{if(!e.isAdmin)return;o.preventDefault();const t=document.activeElement,r=t&&t.closest("tiptap-simple-editor");return void(r&&r._tiptapEditor?(i=r._tiptapEditor)&&!i.isDestroyed&&n.e(68).then(n.bind(n,26855)).then(e=>{const t=i.getHTML();e.openHtmlEditor({initialHtml:t,onSave:e=>{i.commands.setContent((0,K.sanitizeBeforeSetContent)(e),!0)}})}).catch(e=>{M.error("Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ HTML ÑедакÑоÑ")}):e.toggleHtmlMode&&e.toggleHtmlMode())}}}};document.addEventListener("keydown",de),e.openPreviewModeAndScrollTop=function(){const t=e.isPreviewMode;t||e.togglePreviewMode(),!t&&e.isPreviewMode&&setTimeout(function(){window.scrollTo({top:0,behavior:ne.eb})},100)};const ue=t.$watch(function(){return!(!e.tiptapExpoEditor||!t.contentItem||!t.contentItem._id)},function(n){if(n&&e.isPreviewMode&&!e.previewPost){ue(),(0,U.cY)("[editContentItemCtrl] Initializing expo preview mode from URL path");const n=e.tiptapExpoEditor;setTimeout(function(){t.$$destroyed||(e.previewPost=d(),n&&!n.isDestroyed&&n.setEditable(!1),(0,U.cY)("[editContentItemCtrl] Expo preview post built:",{title:e.previewPost?.title,bodyLength:e.previewPost?.body?.length,type:e.previewPost?.type}),t.$applyAsync())},300)}});let pe=null,me=null,ge=null,ye=null,be=null,Ie=null,we=null,Se=!1,Ae=!1;t.$watch("$ctrl.tiptapExpoEditor",function(n,o){o&&pe&&(o.off("selectionUpdate",pe),pe=null),o&&me&&(o.off("update",me),me=null),ge&&(clearTimeout(ge),ge=null),ye&&(clearTimeout(ye),ye=null),n&&(e.tiptapReady||(e.tiptapReady=!0,L&&(0,U.cY)("[editContentItemCtrl] Expo tiptapReady set via editor watch (fallback)")),pe=()=>{ge&&clearTimeout(ge),ge=setTimeout(()=>{ge=null,t.$applyAsync()},50)},n.on("selectionUpdate",pe),me=()=>{ye&&clearTimeout(ye),ye=setTimeout(()=>{ye=null,e.updateCounters(),t.$applyAsync()},500),Ie&&clearTimeout(Ie),Ie=setTimeout(function(){Ie=null,h()},2e3),l()},n.on("update",me),e.updateCounters(),t.$applyAsync(),e.isPreviewMode&&!e.previewPost&&(be=setTimeout(function(){be=null,t.$$destroyed||(e.previewPost=d(),t.$applyAsync())},100)),null===we&&(we=n.getHTML()),I(),r()&&function(){if(null!==Q)return;const n=e.tiptapExpoEditor;if(n&&!n.isDestroyed){try{Q=n.getHTML()}catch(e){Q=""}X=(t.contentItem||{}).title,Z=(t.contentItem||{}).thumborId,e.expoAutosaveStatus="idle",ie=document.createElement("span"),ie.setAttribute("role","status"),ie.setAttribute("aria-live","polite"),ie.setAttribute("aria-atomic","true"),ie.className="tw:sr-only",(document.querySelector(".tiptap-bottom-bar")||document.body).appendChild(ie),t.$watchGroup(["contentItem.title","contentItem.thumborId"],function(e,t){e!==t&&null!==Q&&l()}),L&&(0,U.cY)("[expo-autosave] Tracking иниÑиализиÑован")}}(),!Ae&&t.contentItem&&t.contentItem.slug&&(Ae=!0,N.startAutoVersioning(t.contentItem.slug,m,{onStopped(){M.warning("ÐвÑоÑоÑ
Ñанение Expo-веÑÑий пÑиоÑÑановлено. Ð
1озобновиÑÑÑ Ð¿Ñи ÑледÑÑÑем оÑкÑÑÑии ÑедакÑоÑа")}})),L&&(0,U.cY)("[editContentItemCtrl] Expo TipTap editor ready"))}),window.addEventListener("beforeunload",S),w("saveDraft"),w("sendForm"),t.$on("$destroy",function(){if(window.removeEventListener("beforeunload",S),document.removeEventListener("keydown",de),e.tiptapExpoEditor&&pe&&(e.tiptapExpoEditor.off("selectionUpdate",pe),pe=null),e.tiptapExpoEditor&&me&&(e.tiptapExpoEditor.off("update",me),me=null),ge&&(clearTimeout(ge),ge=null),ye&&(clearTimeout(ye),ye=null),Ie&&(clearTimeout(Ie),Ie=null),z&&(clearTimeout(z),z=null),G&&(clearTimeout(G),G=null),!oe&&r()&&s()&&!ee){const e=a();e&&(oe=!0,c(0,e))}be&&(clearTimeout(be),be=null),N&&N.isAutoVersioningActive()&&N.stopAutoVersioning(),ie&&ie.parentNode&&(ie.parentNode.removeChild(ie),ie=null),le.destroy(),F&&"function"==typeof F.destroy&&F.destroy(),W&&"function"==typeof W.destroy&&W.destroy(),t.$root.isEditorLoading&&(t.$root.isEditorLoading=!1)}),L&&(0,U.cY)("[editContentItemCtrl] Expo TipTap editor mode enabled")}function M(e){try{return Se||(Se=new Typograf({locale:["ru","en-US"]}),Se.enableRule("ru/punctuation/quote"),Se.enableRule("ru/punctuation/exclamation"),Se.enableRule("ru/dash/main"),Se.enableRule("common/punctuation/quote"),Se.disableRule("common/html/*"),Se.disableRule("common/symbols/cf"),Se.setSetting("common/punctuation/quote","lquote","«"),Se.setSetting("common/punctuation/quote","rquote","»"),Se.setSetting("common/punctuation/quote","lquote2","â"),Se.setSetting("common/punctuation/quote","rquote2","â"),Se.enableRule("common/nbsp/replaceNbsp"),Se.enableRule("common/html/nbr"),Se.enableRule("common/html/p")),Se.execute(e).replace(/---/g,"â")}catch(t){return e}}function _(e){return(t=e,(0,we.Sz)()?(0,we.gl)(t,{enableLegacyRules:!0}).catch(function(e){return M(t)}):Promise.resolve(M(t))).then(function(e){return function(e){return e.replace(/\s*style\s*=\s*"text-align:\s*justify;?\s*"/gi,"").replace(/<span> <\/span>/gim,"").replace(/<div>\s*(<p[^>]*>(?:(?!<\/p>).)*<\/p>(?:\s*<p[^>]*>(?:(?!<\/p>).)*<\/p>)*)\s*<\/div>/gis,"$1").replace(/<div>([\s\S]*?)<\/div>/gi,function(e,t){return/<div[\s>]/i.test(t)?e:"<p>"+t+"</p>"}).replace(/<h1([^>]*)>([\s\S]*?)<\/h1>/gi,"<h2$1>$2</h2>").replace(/<div[^>]*>\s*<b[^>]*>\s*<br\s*\/?>\s*<\/b>\s*<\/div>/gi,"").replace(/<b[^>]*>\s*<br\s*\/?>\s*<\/b>/gi,"").replace(/<div[^>]*>\s*<br\s*\/?>\s*<\/div>/gi,"").replace(/<br\s*\/?>\s*(<\/(?:p|h2|h3|div|span)>)/gi,"$1").replace(/<br\s*\/?\s*>\s*<\/p>/gi,"</p>").replace(/<p[^>]*>\s*<\/p>/gi,"").replace(/<span[^>]*>\s*<\/span>/gi,"").replace(/<i[^>]*>\s*<\/i>/gi,"").replace(/<b[^>]*>\s*<\/b>/gi,"").replace(/<h1[^>]*>\s*<\/h1>/gi,"").replace(/<h2[^>]*>\s*<\/h2>/gi,"").replace(/<h3[^>]*>\s*<\/h3>/gi,"").replace(/<div[^>]*>\s*<\/div>/gi,"").replace(/<span(?:\s*)>(.*?)<\/span>/gi,"$1").replace(/<\/span>\s*<span\s*>/gi,"")}(e)}).catch(function(t){return e});var t}function D(e,t,n){function o(){var e=t.contentItem;if(!e||!e.slug)return null;var n=null;return e.selectedCategory&&e.selectedCategory.slug?n=e.selectedCategory.slug:e.category&&"object"==typeof e.category&&e.category.slug?n=e.category.slug:e.categorySlug&&(n=e.categorySlug),n?S.buildArticleLink(e.slug,n,e.type):e.link&&"/"===e.link.charAt(0)&&e.link.length>e.slug.length+1?e.link:null}function i(){try{const o=e.getActiveEditor&&e.getActiveEditor();if(!o||"function"!=typeof o.getHTML)return!1;const i=o.getHTML();if("Literature"===t.contentItem.type){var n=t.contentItem.media;n&&!Array.isArray(n)&&(t.contentItem.media=Object.keys(n).sort(function(e,t){return Number(e)-Number(t)}).map(function(e){return n[e]})),t.contentItem.media||(t.contentItem.media=[{}]),t.contentItem.media[0]||(t.contentItem.media[0]={}),t.contentItem.media[0].literatureBody=(0,K.stripJustifyAlignment)((0,z.i)(i,o.state&&o.state.doc,"literature_body"))}else t.contentItem.body=(0,K.stripJustifyAlignment)(i);return!0}catch(e){return!1}}function r(){if(e.cropUploading)return!0;try{const t=e.getActiveEditor&&e.getActiveEditor();return!!(t&&t.hasPendingMediaUploads&&"function"==typeof t.hasPendingMediaUploads&&t.hasPendingMediaUploads())}catch(e){return!1}}function a(){const t=function(){try{const t=e.getActiveEditor&&e.getActiveEditor();return t&&"function"==typeof t.getHTML?(0,K.findEmbeddedBase64Images)(t.getHTML()):{count:0,approxBytes:0}}catch(e){return{count:0,approxBytes:0}}}();return t.count>0&&(I.error({message:"ЧаÑÑÑ Ð¸Ð·Ð¾Ð±Ñажений ("+t.count+") не загÑÑзилаÑÑ Ð½Ð°Â ÑеÑÐ²ÐµÑ Ð¸Â Ð²ÑÑÑоена в ÑекÑÑ Ð½Ð°Ð¿ÑÑмÑÑ. УдалиÑе иÑ
и вÑÑавÑÑе заново â инаÑе ÑоÑ
Ñанение не пÑойдÑÑ.",delay:8e3}),!0)}function s(){if(!t.contentItem||"string"!=typeof t.contentItem.title)return;const e=c(t.contentItem.title);e!==t.contentItem.title&&(t.contentItem.title=e)}function l(){if(s(),!E())return null;i(),t.contentItem.imageCaption=A(y(t.contentItem.imageCaption)),t.contentItemSending=!0,t.contentItem.body="Literature"!==t.contentItem.type&&t.contentItem.body?t.contentItem.body.replace("#ЧиÑаÑÑ Ð´Ð°Ð»ÐµÐµ#","\x3c!-- break --\x3e"):"";const e=Object.assign({},t.contentItem);e.category=t.contentItem.selectedCategory?t.contentItem.selectedCategory._id:t.contentItem.category,e.tags=C();const n=(0,Ae.pe)(t.contentItem);return n?e.seo=n:delete e.seo,delete e.seoTitle,delete e.seoDescription,delete e.seoEdited,e}function d(){t.contentItemSending=!1,t.sendingAction=null,e.clearLocalStorage(),S.removeCurrentItemFromPreviewCache(t.contentItem),e.resetMetaSnapshot(),e.newPostSaved=!0}
1function u(e,n){if(t.contentItemSending=!1,t.sendingAction=null,v.isCanceled(e))return;const o=v.parseError(e,"ÐÑибка ÑоÑ
ÑанениÑ");!function(e,t){return!(!t||e&&e.type&&-1!==Ce.indexOf(e.type))}(o,!!n)?b.handleError(e,{context:"form-submission",fallbackMessage:"ÐÑибка ÑоÑ
ÑанениÑ"}):b.toastWithAction(o.message,{buttonText:"ÐовÑоÑиÑÑ",onClick:n,$scope:t})}function p(t){e.isLoggedIn&&e.isCommunityAuthor?h.path(t||"/"):(h.path("/sent"),h.search("to",t&&"/"===t.charAt(0)?t:null))}function m(){return t.contentItem&&("published"===t.contentItem.status||"featured"===t.contentItem.status)&&e.contentItemCreatorId&&e.userId!==e.contentItemCreatorId?function(){const e=o();if(e)return e;const t=h.path().replace(/^\/edit/,"").replace(/\/preview$/,"");return t&&/^\/(articles|expo)\//.test(t)?t:"/drafts"}():"/drafts"}function g(){let e=o();if(!e){var t=h.path().replace(/^\/edit/,"").replace(/\/preview$/,"");t&&/^\/(articles|expo)\//.test(t)&&(e=t)}e&&"/"!==e||(e="/drafts"),h.path(e)}const{$q:f,$location:h,$sanitize:y,apiClient:v,apiErrorHandler:b,Notification:I,ConfirmDialog:w,contentItemsService:S,decodeHtmlEntities:A,isPostValid:E,getTagTitles:C}=n;e.persistCollabMetadata=function(n){if(!t.contentItem||!t.contentItem.slug)return f.resolve(!0);const o=function(e){var n=!1!==(e||{}).requireCategory;const o=function(){const e=t.contentItem.selectedCategory&&t.contentItem.selectedCategory._id;if(e)return e;const n=t.contentItem.category&&t.contentItem.category._id;if(n)return n;const o=t.contentItem.category;return"string"==typeof(i=o)&&/^[a-fA-F0-9]{24}$/.test(i)?o:null;var i}();if(!o&&n)return null;s();const r={title:t.contentItem.title,imageCaption:t.contentItem.imageCaption||"",tags:(t.contentItem.tags||[]).map(function(e){return"string"==typeof e?e:e&&e.title?e.title:""}).filter(function(e){return""!==e})};o&&(r.category=o),Object.prototype.hasOwnProperty.call(t.contentItem,"thumborId")&&(r.thumborId=t.contentItem.thumborId||null),"Literature"===t.contentItem.type&&(i(),t.contentItem.media&&(r.media=t.contentItem.media)),t.contentItem.customSlug&&(r.customSlug=t.contentItem.customSlug);const a=(0,Ae.pe)(t.contentItem);return a&&(r.seo=a),r}({requireCategory:!1!==(n||{}).requireCategory});if(!o){I.warning("ÐÑбеÑиÑе ÑÑбÑÐ¸ÐºÑ Ð´Ð»Ñ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¼Ð°ÑеÑиала");const e=new Error("category_required");return e.isValidation=!0,f.reject(e)}return v.put("content-items",t.contentItem.slug,o,{headers:{[N.NP]:N.iv}}).then(function(n){if(t.$$destroyed)return n;delete t.contentItem.customSlug;var o=n&&n.slug;return o&&o!==t.contentItem.slug&&(t.contentItem.slug=o,e.collabDocumentName&&(e.collabDocumentName="content-item:"+o)),n})},e.sendForm=function(n){if(n&&n.preventDefault(),t.contentItemSending||t.sendingAction)return;if(r())return void I.warning("ÐождиÑеÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки изобÑажений пеÑед ÑоÑ
Ñанением");if(a())return;if(t.contentItem.slug&&e.publishContent&&e.useTiptapEditor){if(!E())return;return t.sendingAction="submit",t.contentItemSending=!0,e.persistCollabMetadata().then(function(){return e.publishContent()}).then(function(n){if(t.contentItemSending=!1,!t.$$destroyed){if(n){d(),e.deleteNotSentApplication();var i="object"==typeof n&&n.link||o();if(!i){var r=h.path().replace(/^\/edit/,"");r&&/^\/(articles|expo)\//.test(r)&&(i=r)}if(i)p(i);else{var a=t.contentItem&&t.contentItem.slug;a?S.queryOne(a).then(function(e){t.$$destroyed||(p(e&&e.link),t.$applyAsync())}).catch(function(){t.$$destroyed||(p(null),t.$applyAsync())}):p(null)}}else I.warning({message:"ÐÑбликаÑÐ¸Ñ Ð½Ðµ ÑдалаÑÑ. ÐопÑобÑйÑе еÑÑ Ñаз."});t.sendingAction=null,t.$applyAsync()}}).catch(function(n){if(t.contentItemSending=!1,!t.$$destroyed){if(n&&n.isValidation)return t.sendingAction=null,void t.$applyAsync();t.sendingAction=null,u(n,function(){t.$$destroyed||e.sendForm()})}})}t.sendingAction="submit";const i=l();if(i)return i.slug&&"draft"!==t.contentItem.status&&t.contentItem.status||(i.status="posted"),t.contentItemToSend=i,(i.slug?v.put("content-items",i.slug,i,{headers:{[N.NP]:N.iv}}):v.post("content-items",i)).then(function(n){if(t.$$destroyed)return;d(),e.deleteNotSentApplication();const o=S.mapOne(n);p(o&&o.link),t.$applyAsync()},function(n){t.$$destroyed||u(n,e.sendForm)});t.sendingAction=null},e.sendFormForPublish=function(){if(t.sendingAction)return f.resolve(!1);const n=e.sendForm();if(n&&"function"==typeof n.then)return n.then(function(){return!1});const o=new Error("validation_failed");return o.isValidation=!0,f.reject(o)},e.saveDraft=function(n){if(n&&n.preventDefault(),!e.isLoggedIn||t.slug)return;if(t.contentItemSending||t.sendingAction)return;if(r())return void I.warning("ÐождиÑеÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки изобÑажений пеÑед ÑоÑ
Ñанением");
1if(a())return;t.sendingAction="draft";const o=l();if(o)return o.status="draft",v.post("content-items",o).then(function(e){t.$$destroyed||(d(),S.mapOne(e),h.path("/drafts"),t.$applyAsync())},function(n){t.$$destroyed||u(n,e.saveDraft)});t.sendingAction=null},e.saveDraftBtnClick=function(n){if(n&&n.preventDefault(),t.contentItemSending||t.sendingAction)return;if(a())return;let o;if(t.contentItem.slug&&e.saveAndCreateVersion)o=e.saveAndCreateVersion();else{if(t.contentItem.slug&&!e.saveAndCreateVersion)return"function"==typeof e.persistCollabMetadata?(t.contentItemSending=!0,void e.persistCollabMetadata({requireCategory:!1}).then(function(){I.success({message:"ЧеÑновик ÑоÑ
ÑанÑн",delay:2e3})}).catch(function(){}).finally(function(){t.$$destroyed||(t.contentItemSending=!1,t.$applyAsync())})):void I.success("ЧеÑновик ÑоÑ
ÑанÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки");o=e.saveDraft(n)}t.contentItem.slug&&o&&"function"==typeof o.then&&o.then(function(){t.$$destroyed||(h.path(m()),t.$applyAsync())}).catch(function(){})},e.showSaveDialog=function(){const n=t.contentItem&&t.contentItem.status,o="posted"===n||"published"===n||"featured"===n||"recalled"===n;w.open({title:(0,Ee.t)(o?"Ðбновление маÑеÑиала":"ÐÑбликаÑÐ¸Ñ Ð¼Ð°ÑеÑиала"),message:(0,Ee.t)(o?"ÐаÑеÑиал бÑÐ´ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñн и доÑÑÑпен ÑиÑаÑелÑм":"ÐоÑле пÑбликаÑии маÑеÑиал ÑÑÐ°Ð½ÐµÑ Ð´Ð¾ÑÑÑпен ÑиÑаÑелÑм"),confirmText:(0,Ee.t)(o?"ÐбновиÑÑ":"ÐпÑбликоваÑÑ"),cancelText:(0,Ee.t)("СоÑ
ÑаниÑÑ ÐºÐ°ÐºÂ ÑеÑновик")}).then(function(){e.sendFormForPublish()}).catch(function(n){if("cancel"===n){const n=m();let o;return o=t.contentItem.slug&&e.saveAndCreateVersion?e.saveAndCreateVersion():e.saveDraft(),void(o&&"function"==typeof o.then?o.then(function(){h.path(n),t.$applyAsync()}).catch(function(){}):o&&h.path(n))}w.onDismissed("[editContentItemCtrl.showSaveDialog]")(n)})},e.finishAndNavigateToArticle=function(){e.isOfflineMode||"disconnected"===e.collabStatus||"connecting"===e.collabStatus?w.open({title:(0,Ee.t)("Соединение поÑеÑÑно"),message:(0,Ee.t)("ÐаÑи пÑавки могÑÑ Ð±ÑÑÑ Ð½ÐµÂ ÑинÑ
ÑонизиÑованÑ. ÐÑи ÑÑ
оде Ñо ÑÑÑаниÑÑ Ð¾Ð½Ð¸ могÑÑ бÑÑÑ поÑеÑÑнÑ."),confirmText:(0,Ee.t)("УйÑи"),cancelText:(0,Ee.t)("ÐÑÑаÑÑÑÑ"),type:"warning"}).then(function(){g()}).catch(w.onDismissed("[finishAndNavigateToArticle]")):g()}}function L(e){return new Promise(function(t,n){var o=!1,i=setTimeout(function(){o||(o=!0,n({status:0,message:"timeout",isTimeout:!0}))},2e4);e().then(function(e){o||(o=!0,clearTimeout(i),t(e))}).catch(function(e){o||(o=!0,clearTimeout(i),n(e))})})}n.r(t),n.d(t,{default:()=>$e}),n(12849),n(23660),n(50116),n(49248),n(34752);var P={auto:"ÐвÑоÑоÑ
Ñанение",milestone:"ÐÑÑпное изменение",manual:"СоÑ
Ñанено вÑÑÑнÑÑ",publish:"СоÑ
Ñанение пÑи пÑбликаÑии",legacy:"СоÑ
Ñанение"},O={auto:"fa-clock-o",milestone:"fa-flag",manual:"fa-save",publish:"fa-check-circle",legacy:"fa-history"},N=n(6823);angular.module("discours.services").factory("versioningService",["$log","$q","$interval","apiClient",function(e,t,n,s){function c(t,...n){if("function"==typeof t)try{t(...n)}catch(t){e.warn("[versioningService] Callback error:",t)}}function l(t){return s.withRetry(t,{maxRetries:2,baseDelay:1e3,maxDelay:5e3,onRetry:function(t,n,o){e.debug("[versioningService] Retrying request (status: "+(o&&(o.status||o.statusCode))+"), attempt "+t+", delay: "+n+"ms")}})}const d=12e5;let u=null,p=null,m=null,g=null,f=0;return{AUTO_VERSION_INTERVAL_MS:d,VERSION_TYPE_LABELS:P,getVersions:(n,c={})=>s.getList("versions/"+o(n),c).then(e=>({versions:(e.versions||[]).map(e=>({...e,typeLabel:r(e.type),typeIcon:a(e.type),formattedDate:i(e.createdAt),changePercentFormatted:null!=e.changePercent?`${e.changePercent}%`:null})),totalCount:e.totalCount,hasMore:e.hasMore}),n=>(e.error("[versioningService] Error loading versions:",n),t.reject(s.getErrorMessage(n,"Failed to load versions")))),getVersion:(n,c)=>s.getOne("versions/"+o(n),c).then(e=>({...e,typeLabel:r(e.type),typeIcon:a(e.type),formattedDate:i(e.createdAt)}),n=>(e.error("[versioningService] Error loading version:",n),t.reject(s.getErrorMessage(n,"Version not found")))),createManualVersion:(n,i={})=>
1s.post("versions/"+o(n),{type:"manual",name:i.name,body:i.body}).then(t=>(e.info("[versioningService] Manual version created:",t),t),n=>(e.error("[versioningService] Error creating version:",n),t.reject(s.getErrorMessage(n,"Failed to create version")))),createAutoVersion:(n,i)=>l(()=>s.post("versions/"+o(n)+"/auto",{body:i,checkMilestone:!0})).then(t=>(m=new Date,e.debug("[versioningService] Auto version created:",t),t),n=>(e.error(`[versioningService] Error creating auto version (status: ${n.status??"n/a"}, url: ${n.config&&n.config.url||"unknown"}):`,n),t.reject(s.getErrorMessage(n,"Failed to create auto version")))),restoreVersion:(n,i)=>l(()=>s.post((0,N.Wu)("versions/"+o(n)+"/"+i+"/restore"),{})).then(t=>(e.info("[versioningService] Version restored:",t),{body:t.body,rawBody:t.rawBody,title:t.title,snapshot:t.snapshot||{},restoredFromVersion:t.restoredFromVersion,restoreWarnings:t.restoreWarnings||[]}),n=>(e.error("[versioningService] Error restoring version:",n),t.reject(s.getErrorMessage(n,"Failed to restore version")))),deleteVersion:(n,i)=>s.remove("versions/"+o(n),i).then(()=>{e.info("[versioningService] Version deleted:",i)},n=>(e.error("[versioningService] Error deleting version:",n),t.reject(s.getErrorMessage(n,"Failed to delete version")))),getStats:n=>s.getOne("versions/"+o(n),"stats").then(null,n=>(e.error("[versioningService] Error loading stats:",n),t.reject(s.getErrorMessage(n,"Failed to load stats")))),startAutoVersioning(t,o,i={}){this.stopAutoVersioning(),p=t,g=o,m=null,e.debug("[versioningService] Starting auto versioning for:",t);const r=this;u=n(()=>{if(p&&g)try{const t=g();t&&r.createAutoVersion(p,t).then(()=>{f=0}).catch(t=>{f++,e.warn(`[versioningService] Auto version failed for "${p}" (${f}/3):`,t),c(i.onError,t,f,3),f>=3&&(e.error(`[versioningService] Stopping auto-versioning for "${p}" after`,3,"consecutive failures. Will resume on next editor open."),c(i.onStopped,p,f),r.stopAutoVersioning())})}catch(t){f++,e.warn(`[versioningService] Error getting content (${f}/3):`,t),f>=3&&(e.error("[versioningService] Stopping auto-versioning after",3,"consecutive content errors"),c(i.onStopped,p,f),r.stopAutoVersioning())}},d)},stopAutoVersioning(){u&&(n.cancel(u),u=null,e.debug("[versioningService] Stopped auto versioning for:",p)),p=null,g=null,m=null,f=0},getTimeUntilNextAutoVersion(){if(!u||!m)return null;const e=Date.now()-m.getTime();return Math.max(0,d-e)},isAutoVersioningActive:()=>null!==u,forceAutoVersion(){if(!p||!g)return t.reject("Auto versioning not active");const e=g();return e?this.createAutoVersion(p,e):t.reject("No content to version")},formatDate:i,getTypeLabel:r,getTypeIcon:a}}]),n(94954),n(55852),n(18942),n(19370);var U=n(40154),R=n(99895),V=n(81673),B=n(43542),q=n(74774),Y=n(63363),H=n(17640),j=n(29920),F=n(38023),W=n(59217),z=n(68635),K=n(35282),J=n(7573),G=new RegExp("[ \\t\\u00A0]{2,}","g"),Q=new RegExp("^(?:\\s|\\u00A0)+|(?:\\s|\\u00A0)+$","g"),X=new RegExp("(?:\\s|\\u00A0)+$"),Z=n(1604),ee=n.n(Z),te=n(46508),ne=n(51910);const oe=["thumborId","imageCaption","socialImageId","tags","category","contributors","media","seo","performer","lang"];var ie=n(58903);const re="clean",ae="marks",se=ae,ce=[".tiptap-suggestion-add",".tiptap-suggestion-delete",".tiptap-suggestion-format","span[data-suggestion-id]","[data-suggestion-type]"].join(", "),le=".tiptap-comment, [data-comment-id]";var de=n(83209);const ue={"&":"&","<":"<",">":">",""":'"',"'":"'"};var pe=n(60150),me=n(43592),ge=n(13272),fe=n(31529),he=n(45997),ye=n(75960),ve=n(27723),be=n(55430),Ie=n(85),we=n(49088);(0,we.YP)();let Se=null;var Ae=n(87143),Ee=n(88484);const Ce=["conflict"],Te=["draft","posted"];var ke=n(20066),xe=n(31144);angular.module("discours.pages").controller("editContentItemCtrl",["$scope","$location","$route","$window","$q","Notification","$routeParams","loginService","localStorageService","apiClient","contentItemsService","footnoteService","youtubeUploaderService","s3UploaderService","$sanitize","helpers","captionEditorService","pageInformationService","DISCOURS_ENV","HOCUSPOCUS_SERVER","THUMBOR_SERVER","versioningService","ConfirmDialog","PublishPreviewDialog","NOTIFICATION_MESSAGES","apiErrorHandler","$t
1imeout","eventBus","cfpLoadingBar",function(e,t,n,o,i,r,a,c,l,d,u,p,m,g,f,h,y,v,b,I,w,S,A,E,k,M,P,O,N){function q(e){(0,B.f5)(e,ee)}function Y(e){(0,B.u3)(e,ee)}function H(e){(0,B.bl)(e,ee)}function j(e){(0,B.D)(e,ee)}function F(e){(0,B.Yg)(e,ee)}function W(o){const i=t.path(),r=i.endsWith("/preview");if(o&&!r){e.$root.updatingPath=!0;const o=n.current,r=e.$root.$on("$locationChangeSuccess",function(){n.current=o,e.$root.updatingPath=!1,r()});t.path(i+"/preview").search("preview",null).replace()}else if(!o&&r){e.$root.updatingPath=!0;const o=n.current,r=e.$root.$on("$locationChangeSuccess",function(){n.current=o,e.$root.updatingPath=!1,r()});t.path(i.replace(/\/preview$/,"")).search("preview",null).replace()}else t.search("preview",null).replace()}function z(e){return("not-found"===e.kind||"forbidden"===e.kind)&&!!c.isLoggedIn()&&!1===c.isEmailVerified()}function J(o,i,r){if(!e.$$destroyed&&t.path()!==o){var s=n.current;if(s){var c;$e&&(P.cancel($e.safetyTimer),$e.un(),$e.unDestroy()),e.$root.updatingPath=!0;var l=e.$root.$on("$locationChangeSuccess",function(){P.cancel(c),n.current=s,n.current.params=n.current.params||{}
1,i&&Object.keys(i).forEach(function(e){n.current.params[e]=i[e],a[e]=i[e]}),e.$root.updatingPath=!1,$e=null,l(),d()}),d=e.$on("$destroy",function(){P.cancel(c),e.$root.updatingPath=!1,$e=null,l()});c=P(function(){e.$root.updatingPath=!1,$e=null,l(),d()},r||2e3),$e={un:l,unDestroy:d,safetyTimer:c},t.path(o).replace()}}}function G(t){return i.resolve().then(function(){return t(!1)}).catch(function(n){if(!d.isCanceled||!d.isCanceled(n)||e.$$destroyed)throw n;return(0,U.UT)("[editor] ÐапÑÐ¾Ñ Ð¼Ð°ÑеÑиала обоÑван оÑменой â повÑоÑÑем один Ñаз"),t(!0)})}function Q(t,n,o){404===n&&c.isLoggedIn()?function(e){return e&&"function"==typeof e.getOne?Promise.resolve().then(function(){return e.getOne("me",null,null,{expect401:!0})}).then(function(){return!0},function(e){return 401!==function(e){if(!e)return 0;var t=Number(null!=e.status?e.status:null!=e.statusCode?e.statusCode:e.response&&null!=e.response.status?e.response.status:e.data&&e.data.status);return Number.isFinite(t)?t:0}(e)&&void 0}):Promise.resolve(void 0)}(d).then(function(n){e.$$destroyed||o(t,n)}).catch(function(n){(0,U.UT)("[editor] Session probe failed:",n),e.$$destroyed||o(t,void 0)}):o(t,void 0)}const X=this;O.onScope(e,O.EVENTS.USER_LOGGED_OUT,function(){(!a.slug&&!a.draftCode||e.contentItem&&(e.contentItem._id||e.contentItem.slug))&&t.path("/")}),O.onScope(e,O.EVENTS.USER_LOGGED_IN,function(){o.location.reload()});const Z={title:"ÐойдиÑе Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÑедакÑиÑованиÑ",onSuccess:function(){o.location.reload()}};X.openLoginModal=function(){c.openAuthModal(Z)},X.openPublishSettings=function(){E.open({contentItem:e.contentItem,thumborServer:w,apiBaseUrl:d.baseUrl,categories:X.categories,onUploadCover:function(t){return g.upload(t,"image",!0).then(function(t){return e.contentItem.thumborId=t,t})},onRemoveCover:function(){e.contentItem.thumborId=null},tagsTypeahead:X.tagsTypeahead,removeTag:X.removeTag}).then(function(t){e.$$destroyed||(t.seo&&(e.contentItem.seo=angular.extend({},e.contentItem.seo,t.seo),e.contentItem.seoEdited=!0),t.customSlug&&(e.contentItem.customSlug=t.customSlug),e.$applyAsync(function(){"publish"===t.action?X.sendFormForPublish():"draft"===t.action&&X.saveDraft&&X.saveDraft()}))}).catch(function(){})},T(l);const ee={s3UploaderService:g,Notification:r};X.darkMode=!1;try{"1"===localStorage.getItem("editor_dark_mode")&&(X.darkMode=!0,document.body.classList.add("dark"))}catch(e){}var te=null;X.toggleDarkMode=function(){te&&clearTimeout(te),document.body.classList.add("dark-transition"),X.darkMode=!X.darkMode,document.body.classList.toggle("dark",X.darkMode);try{localStorage.setItem("editor_dark_mode",X.darkMode?"1":"0")}catch(e){}te=setTimeout(function(){document.body.classList.remove("dark-transition"),te=null},300)},e.$on("$destroy",function(){te&&(clearTimeout(te),te=null),document.body.classList.remove("dark","dark-transition"),window.__editorPrefetch=null,X._autoDraftPending=!1,"function"==typeof ae&&ae(),"function"==typeof Pe&&Pe(),"function"==typeof Oe&&Oe(),"function"==typeof Ne&&Ne()}),X.sendButton="ÐпÑбликоваÑÑ",e.sendingAction=null,X.userId=c.userId(),X.categorySelectorOpen=!1,X.showAccessRequestModal=!1,X.canRequestAccess=!1,X.accessRequestSent=!1,X.accessRequestDocName=null,X.coverMenuOpen=!1;var ne,oe=function(){X.coverMenuOpen&&e.$evalAsync(function(){X.coverMenuOpen=!1})},ie=function(t){"Escape"===t.key&&X.coverMenuOpen&&e.$evalAsync(function(){X.coverMenuOpen=!1})};X.toggleCoverMenu=function(e){e&&e.stopPropagation(),X.coverMenuOpen=!X.coverMenuOpen},e.$watch(function(){return X.coverMenuOpen},function(e){e?(document.addEventListener("click",oe),document.addEventListener("keydown",ie),window.addEventListener("scroll",oe,{passive:!0})):(document.removeEventListener("click",oe),document.removeEventListener("keydown",ie),window.removeEventListener("scroll",oe))}),e.$on("$destroy",function(){document.removeEventListener("click",oe),document.removeEventListener("keydown",ie),window.removeEventListener("scroll",oe)}),X.types={Article:{title:"ÐапиÑаÑÑ ÑÑаÑÑÑ",description:"ÐÑбликÑйÑеÑÑ Ð² ÑамиздаÑе â пÑÑÑÑ Ð²Ð°Ñи ÑекÑÑÑ Ð¾Ð±ÑÑждаÑÑ ÑÑÑÑÑи ÑиÑаÑелей.",og_title:"ÐÑедложиÑÑ Ð¿ÑбликаÑиÑ",og_description:"ÐÑли Ð²Ñ Ð¿Ð¸ÑеÑе ÑекÑÑÑ Ð¸Ð»Ð¸ каÑÑинÑ, ÑоÑинÑеÑе мÑзÑÐºÑ Ð¸Ð»Ð¸ ÑнимаеÑе кино, еÑли Ð²Ñ Ñ
оÑиÑе поведаÑÑ Ð¼Ð¸ÑÑ ÑÑо-Ñо, о Ñем знаеÑе ÑолÑко вÑ, опÑбликоваÑÑ Ñвое иÑÑледование или поделиÑÑÑÑ Ð¸Ð½ÑеÑеÑной иÑÑоÑией, помниÑе: ÐиÑкÑÑÑ â лÑÑÑее меÑÑо Ð´Ð»Ñ Ð²Ð°Ñего ÑвоÑÑеÑÑва",og_image:"/images/joinfull.webp",type:"ÑÑаÑÑÑ",editTitle:"РедакÑиÑование ÑÑаÑÑи"},Image:{title:"СоздаÑÑ Ð³Ð°Ð»ÐµÑеÑ",description:"ÐÑиÑÑлайÑе Ñвои ÑабоÑÑ Ð´Ð»Ñ Ð¿ÑбликаÑии в оÑкÑÑÑом жÑÑнале",og_title:"ÐÑедложиÑÑ Ð¿ÑбликаÑиÑ",og_description:"ÐÑли Ð²Ñ Ð¿Ð¸ÑеÑе ÑекÑÑÑ Ð¸Ð»Ð¸ каÑÑинÑ, ÑоÑинÑеÑе мÑзÑÐºÑ Ð¸Ð»Ð¸ ÑнимаеÑе кино, еÑли Ð²Ñ Ñ
оÑиÑе поведаÑÑ Ð¼Ð¸ÑÑ ÑÑо-Ñо, о Ñем знаеÑе ÑолÑко вÑ, опÑбликоваÑÑ Ñвое иÑÑледование или поделиÑÑÑÑ Ð¸Ð½ÑеÑеÑной иÑÑоÑией, помниÑе: ÐиÑкÑÑÑ â лÑÑÑее меÑÑо Ð´Ð»Ñ Ð²Ð°Ñего ÑвоÑÑеÑÑва",og_image:"/images/joinfull.webp",type:"изобÑажениÑ",editTitle:"РедакÑиÑование галеÑеи"},Literature:{title:"ÐÐ¾Ð²Ð°Ñ Ð¿ÑбликаÑиÑ",description:"ÐпÑбликÑйÑе ÑÐ²Ð¾Ñ Ð¿Ñоизведение, ÑÑÐ¾Ð±Ñ ÑÑаÑÑ Ð°Ð²ÑоÑом жÑÑнала",og_title:"ÐÑедложиÑÑ Ð¿ÑбликаÑиÑ",og_description:"ÐÑли Ð²Ñ Ð¿Ð¸ÑеÑе ÑекÑÑÑ Ð¸Ð»Ð¸ каÑÑинÑ, ÑоÑинÑеÑе мÑзÑÐºÑ Ð¸Ð»Ð¸ ÑнимаеÑе кино, еÑли Ð²Ñ Ñ
оÑиÑе поведаÑÑ Ð¼Ð¸ÑÑ ÑÑо-Ñо, о Ñем знаеÑе ÑолÑко вÑ, опÑбликоваÑÑ Ñвое иÑÑледование или поделиÑÑÑÑ Ð¸Ð½ÑеÑеÑной иÑÑоÑией, помниÑе: ÐиÑкÑÑÑ â лÑÑÑее меÑÑо Ð´Ð»Ñ Ð²Ð°Ñего ÑвоÑÑеÑÑва",og_image:"/images/joinfull.webp",type:"лиÑеÑаÑÑÑа",editTitle:"РедакÑиÑование маÑеÑиала"},Music:{title:"ÐпÑбликоваÑÑ Ð¼ÑзÑкÑ",description:"ÐÑбликÑйÑе ÑÐ²Ð¾Ñ Ð¼ÑзÑÐºÑ Ð² ÐиÑкÑÑÑе â пÑÑÑÑ ÐµÑ ÑÑлÑÑÐ°Ñ ÑÑÑÑÑи ÑиÑаÑелей жÑÑнала.",og_title:"ÐÑедложиÑÑ Ð¿ÑбликаÑиÑ",og_description:"ÐÑли Ð²Ñ Ð¿Ð¸ÑеÑе ÑекÑÑÑ Ð¸Ð»Ð¸ каÑÑинÑ, ÑоÑинÑеÑе мÑзÑÐºÑ Ð¸Ð»Ð¸ ÑнимаеÑе кино, еÑли Ð²Ñ Ñ
оÑиÑе поведаÑÑ Ð¼Ð¸ÑÑ ÑÑо-Ñо, о Ñем знаеÑе ÑолÑко вÑ, опÑбликоваÑÑ Ñвое иÑÑледование или поделиÑÑÑÑ Ð¸Ð½ÑеÑеÑной иÑÑоÑией, помниÑе: ÐиÑкÑÑÑ â лÑÑÑее меÑÑо Ð´Ð»Ñ Ð²Ð°Ñего ÑвоÑÑеÑÑва",og_image:"/images/joinfull.webp",type:"мÑзÑка",editTitle:"РедакÑиÑование алÑбома"},Video:{title:"ÐпÑбликоваÑÑ Ð²Ð¸Ð´ÐµÐ¾",description:"ÐÑиÑÑлайÑе Ñвои видео в ÐиÑкÑÑÑ â иÑ
ÑвидÑÑ ÑÑÑÑÑи ÑиÑаÑелей жÑÑнала.",og_title:"ÐÑедложиÑÑ Ð¿ÑбликаÑиÑ",og_description:"ÐÑли Ð²Ñ Ð¿Ð¸ÑеÑе ÑекÑÑÑ Ð¸Ð»Ð¸ каÑÑинÑ, ÑоÑинÑеÑе мÑзÑÐºÑ Ð¸Ð»Ð¸ ÑнимаеÑе кино, еÑли Ð²Ñ Ñ
оÑиÑе поведаÑÑ Ð¼Ð¸ÑÑ ÑÑо-Ñо, о Ñем знаеÑе ÑолÑко вÑ, опÑбликоваÑÑ Ñвое иÑÑледование или поделиÑÑÑÑ Ð¸Ð½ÑеÑеÑной иÑÑоÑией, помниÑе: ÐиÑкÑÑÑ â лÑÑÑее меÑÑо Ð´Ð»Ñ Ð²Ð°Ñего ÑвоÑÑеÑÑва",og_image:"/images/joinfull.webp",type:"видео",editTitle:"РедакÑиÑование видео"}},e.contentItem||(e.contentItem={}),e.contentItem.tags||(e.contentItem.tags=[]),X.removeTag=function(t){e.contentItem&&e.contentItem.tags&&(e.contentItem.tags=e.contentItem.tags.filter(function(e){return e!==t}))},(ne=t.search().tag)&&!n.current.params.slug&&(e.contentItem.tags.length>0||d.getOne("tags",ne,{}).then(function(t){if(!e.$$destroyed&&t&&t.id&&t.title){var n={id:t.id,title:t.title,slug:t.slug||ne};e.contentItem.tags.some(function(e){return e.id===n.id})||(e.contentItem.tags.push(n),r.info({message:"Тема «"+n.title+"» добавлена к маÑеÑиалÑ",delay:4e3}))}}).catch(function(){}).finally(function(){e.$$destroyed||t.search("tag",null).replace()})),e.contentItem.media||(e.contentItem.media=[{main:!0}]),function(e,t,n){const{youtubeUploaderService:o,s3UploaderService:i,Notification:r,helpers:a}=n;e.disableSendButton=!1,e.uploadVideo=(n,i)=>{if(n)return e.videoUploading||(e.videoUploading={}),e.videoUploading[i]=!0,e.disableSendButton=!0,o.uploadVideo(n,t.contentItem.title,t.contentItem.media&&t.contentItem.media[0]&&t.contentItem.media[0].body||void 0).then(n=>(e.videoUploading[i]=!1,e.disableSendButton=!1,t.contentItem.media[0].videoUrl=`https://www.youtube.com/watch?v=${n}`),()=>(e.videoUploading[i]=!1,e.disableSendButton=!1))},e.uploadMusic=(n,o)=>{const{validateMusic:s}=a;if(n&&(e.musicUploading||(e.musicUploading={}
1),s(n.type,n.size,r)))return e.musicUploading[o]=!0,e.disableSendButton=!0,i.upload(n,"audio").then(i=>(e.musicUploading[o]=!1,e.disableSendButton=!1,t.contentItem.media[o].fileUrl=i,t.contentItem.media[o].fileName=n.name),t=>{e.musicUploading[o]=!1,e.disableSendButton=!1})},e.uploadImage=(n,o)=>{const{validateImage:s}=a;let c;if(n&&s(n.type,n.size,r))return e.imageUploading||(e.imageUploading={}),c=void 0!==o?o:"root",e.imageUploading[c]=!0,e.disableSendButton=!0,i.upload(n,"image",!0).then(n=>(e.imageUploading[c]=!1,e.disableSendButton=!1,null!=o?(t.contentItem.media[o]||(t.contentItem.media[o]={}),t.contentItem.media[o].thumborId=n):t.contentItem.thumborId=n),t=>(e.imageUploading[c]=!1,e.disableSendButton=!1))},e.handleCoverDragOver=function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer&&(e.dataTransfer.dropEffect="copy"),e.currentTarget.classList.add("drag-over")},e.handleCoverDragLeave=function(e){e.preventDefault(),e.currentTarget.classList.remove("drag-over")},e.handleCoverDrop=function(t){t.preventDefault(),t.stopPropagation(),t.currentTarget.classList.remove("drag-over");const n=t.dataTransfer&&t.dataTransfer.files;if(!n||!n.length)return;const o=n[0];o.type.startsWith("image/")?e.uploadImage(o):r.warning("ÐоддеÑживаÑÑÑÑ ÑолÑко изобÑажениÑ")}}(X,e,{youtubeUploaderService:m,s3UploaderService:g,Notification:r,helpers:h}),function(e,t,n){const{Notification:o,NOTIFICATION_MESSAGES:i,ConfirmDialog:r,s3UploaderService:a}=n;e.deleteMediaItem=e=>{const n=t.contentItem.media,o=n.splice(e,1)[0];return o&&o.main&&n.length>0&&(n[0].main=!0),o},e.moveMediaItemUp=e=>{if(e<=0)return;const n=t.contentItem.media,o=n.splice(e,1)[0];n.splice(e-1,0,o)},e.moveMediaItemDown=e=>{const n=t.contentItem.media;if(e>=n.length-1)return;const o=n.splice(e,1)[0];n.splice(e+1,0,o)},e.makeAlbumItemActive=function(e){const n=t.contentItem.media;if(!n||e<0||e>=n.length)return;const o=n.findIndex(e=>e.main);-1!==o?(n[o].main=!1,n[e].main=!0):n[e].main=!0},e.duplicateFirstMediaToAll=function(){r.open({title:"ÐÑблиÑоваÑÑ Ð¾Ð¿Ð¸Ñание",message:"ÐÑблиÑование Ð·Ð°Ð¼ÐµÐ½Ð¸Ñ Ð²Ñе опиÑÐ°Ð½Ð¸Ñ ÑекÑÑим. ÐÑ ÑвеÑенÑ?",confirmText:"ÐÑблиÑоваÑÑ",cancelText:"Ðазад",type:"warning"}).then(function(){const e=t.contentItem.media[0];if(e&&t.contentItem.media.length>1){for(let n=1;n<t.contentItem.media.length;n++)t.contentItem.media[n].body=e.body;try{t.$evalAsync()}catch(e){}o.success(i.DESCRIPTIONS_DUPLICATED)}},r.onDismissed("[duplicateFirstMediaToAll]"))},e.cropUploading=!1;var s=[];e.deleteCoverImage=function(){if(!e.cropUploading){var n=t.contentItem.thumborId;if(n){t.contentItem.thumborId=null,e.disableSendButton=!0,t.$applyAsync();var i=!1,r="undo-delete-cover-"+Date.now();o.warning({message:'Ðбложка Ñдалена <button class="notification-undo-btn '+r+'">ÐÑмениÑÑ</button>',delay:5e3});var a=setTimeout(function(){var o=document.querySelector("."+r);o&&o.addEventListener("click",function(){i=!0,t.contentItem.thumborId=n,e.disableSendButton=!1,t.$$destroyed||t.$applyAsync()},{once:!0})},0);s.push(a);var c=setTimeout(function(){i||t.$$destroyed||(e.disableSendButton=!1,t.$applyAsync())},5500);s.push(c)}}},t.$on("$destroy",function(){s.forEach(clearTimeout),s=[]}),e.cropCoverImage=function(){const n=t.contentItem.thumborId;if(!n)return;const i=(0,be.tE)((0,Ie.kQ)()+n);(0,be.UD)({imageSrc:i,defaultPreset:1,onCrop:function(n){const i=new File([n],"cropped"+("image/png"===n.type?".png":".jpg"),{type:n.type});e.cropUploading=!0,e.disableSendButton=!0,t.$applyAsync(),o.info("ÐагÑÑзка обÑезанного изобÑажениÑâ¦"),a.upload(i,"image",!0).then(function(n){t.$$destroyed||(t.contentItem.thumborId=n,e.cropUploading=!1,e.disableSendButton=!1,t.$applyAsync(),o.success("Ðбложка обновлена"))},function(n){e.cropUploading=!1,e.disableSendButton=!1,t.$$destroyed||(t.$applyAsync(),(0,U.UT)("[cropCoverImage] Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð¾Ð±ÑезаннÑÑ Ð¾Ð±Ð»Ð¾Ð¶ÐºÑ:",n),o.error("Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð¾Ð±ÑезаннÑÑ Ð¾Ð±Ð»Ð¾Ð¶ÐºÑ"))})}})}}(X,e,{Notification:r,NOTIFICATION_MESSAGES:k,ConfirmDialog:A,s3UploaderService:g}),a.typeSlug&&(e.contentItem.type||(e.contentItem.type=a.typeSlug.charAt(0).toUpperCase()+a.typeSlug.slice(1))),a.typeSlug&&!X.types[e.contentItem.type]&&(e.contentItem.error={value:404}),"image"!==a.typeSlug||a.slug||(X.album=!0);
1const{isPostValid:re}=function(e,t,n){const{Notification:o,NOTIFICATION_MESSAGES:i}=n;return t.formErrors={},{isPostValid:()=>{if(t.formErrors={},!t.contentItem.title)return o.warning(i.TITLE_REQUIRED),t.formErrors.title=!0,t.contentItemSending=!1,!1;if(!t.contentItem.selectedCategory)return o.warning(i.CATEGORY_REQUIRED),t.formErrors.category=!0,t.contentItemSending=!1,!1;if(!e.isLoggedIn){const e=t.contentItem.application||{};if(!e.name||!e.name.trim())return o.warning(i.APPLICATION_NAME_REQUIRED),t.formErrors.applicationName=!0,t.contentItemSending=!1,!1;if(!e.email||!e.email.trim())return o.warning(i.APPLICATION_EMAIL_REQUIRED),t.formErrors.applicationEmail=!0,t.contentItemSending=!1,!1;if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.email.trim()))return o.warning(i.APPLICATION_EMAIL_INVALID),t.formErrors.applicationEmail=!0,t.contentItemSending=!1,!1}return!0}}}(X,e,{Notification:r,NOTIFICATION_MESSAGES:k});e.previewLink=`${t.url()}/preview`,e.$on("$locationChangeStart",function(n,i,r){if(!i.includes("/preview")||(u.setCurrentItemToPreviewCache(e.contentItem),re())){if(!r||!r.includes("/preview")||i.includes("/preview"))return!i.includes("/preview")&&e.slug?u.removeCurrentItemFromPreviewCache(e.contentItem):void(X.hasNewPostUnsavedContent&&X.hasNewPostUnsavedContent()&&"string"==typeof i&&!i.includes("/preview")&&(n.preventDefault(),A.open({title:(0,V.t)("ÐеÑоÑ
ÑанÑннÑе изменениÑ"),message:(0,V.t)("ТекÑÑ Ð½Ðµ ÑоÑ
ÑанÑн. ÐокинÑÑÑ ÑÑÑаниÑÑ?"),confirmText:(0,V.t)("УйÑи"),cancelText:(0,V.t)("ÐÑÑаÑÑÑÑ"),type:"warning"}).then(function(){X.newPostSaved=!0;const e=o.document.createElement("a");e.href=i,t.path(e.pathname).search(e.search.replace(/^\?/,""))}).catch(A.onDismissed("[editContentItemCtrl] Unsaved changes dialog"))));u.removeCurrentItemFromPreviewCache(e.contentItem)}else n.preventDefault()}),function(e,t,n){function o(){return t.contentItem?JSON.stringify({title:t.contentItem.title||"",thumborId:t.contentItem.thumborId||"",tags:(t.contentItem.tags||[]).map(function(e){return"string"==typeof e?e:e.title||""}),selectedCategory:t.contentItem.selectedCategory?t.contentItem.selectedCategory._id||t.contentItem.selectedCategory.slug:""}):null}function i(t){if("development"!==a&&"development_local"!==a){if(e.hasNewPostUnsavedContent&&e.hasNewPostUnsavedContent())return t.preventDefault(),t.returnValue="ТекÑÑ Ð½Ðµ ÑоÑ
ÑанÑн. УйÑи?","ТекÑÑ Ð½Ðµ ÑоÑ
ÑанÑн. УйÑи?";if(null!==s)return o()!==s?(t.preventDefault(),t.returnValue="",""):void 0}}const{$window:r,DISCOURS_ENV:a}=n;let s=null;t.$watch("contentItem._id",function(e){e&&null===s&&(s=o())}),r.addEventListener("beforeunload",i),t.$on("$destroy",function(){r.removeEventListener("beforeunload",i)}),e.resetMetaSnapshot=function(){s=o()}}(X,e,{$window:o,DISCOURS_ENV:b});const ae=e.$watchGroup(["contentItem.title","contentItem.type","contentItem.category","contentItem.thumborId","contentItem.description"],()=>{e.slug||u.setCurrentItemToPreviewCache(e.contentItem)}),se=()=>{X.categorySelectorOpen=!X.categorySelectorOpen},ce=t=>{const n=t.target;if("category-selector-button"!==n.id&&"category-selector-text"!==n.id){se();try{e.$evalAsync()}catch(e){}}};X.categorySelectorClick=function(e){se(),X.categorySelectorOpen&&window.addEventListener("click",ce)},e.$watch("$ctrl.categorySelectorOpen",function(e){e||window.removeEventListener("click",ce)}),e.$on("$destroy",function(){window.removeEventListener("click",ce)}),X.sendNotSentApplication=function(){if(e.contentItem.application.email&&e.contentItem.application.name&&!X.isLoggedIn&&!l.get("notSentApplication._id")&&!X.sendingNotSentApplication)return X.sendingNotSentApplication=!0,d.post("not-sent-applications",{email:e.contentItem.application.email,name:e.contentItem.application.name,about:e.contentItem.application.bio}).then(function(e){return X.sendingNotSentApplication=!1,l.set("notSentApplication._id",e._id),l.set("notSentApplication.deleteToken",e.deleteToken)}).catch(function(e){X.sendingNotSentApplication=!1,(0,U.UT)("[sendNotSentApplication] Failed:",e)})},X.deleteNotSentApplication=function(){const e=l.get("notSentApplication._id"),t=l.get("notSentApplication.deleteToken");if(e&&t)return d.remove("not-sent-applications",e,{params:{deleteToken:t}}).then(function(){return l.remove("notSentApplication._id"),l.remove("notSentApplication.deleteToken")}).catch(function(e){(0,U.UT)("[deleteNotSentApplication] Failed:",e)})},X.openImageCaptionEditor=function(t){try{t&&t.preventDefault&&t.preventDefault()}catch(e){}try{window.hideTooltips&&window.hideTooltips()}catch(e){}y.open(e.contentItem&&e.contentItem.imageCaption||"").then(function(t){e.contentItem.imageCaption=t||"";try{e.$applyAsync()}catch(e){}}).catch(function(e){})},function(e,t,n){const{localStorageService:o}=n,i=[],r=["contentItem.title","contentItem.body","contentItem.application.email","contentItem.application.name","contentItem.application.bio","contentItem.thumborId"];e.bindLocalStorage=()=>
1r.forEach(e=>i.push(o.bind(t,e,"",e))),e.bindLocalStorage(),e.unbindLocalStorage=()=>i.forEach(e=>e()),e.clearLocalStorage=()=>r.forEach(e=>o.remove(e))}(X,e,{localStorageService:l}),X.isAdmin=c.isAdmin(),X.canDeleteOwn=function(){return function(e,t){if(!e||-1===Te.indexOf(e.status))return!1;const n=e.createdBy;return!!n&&!!t&&("object"==typeof n?n._id:n)===t}(e.contentItem,c.userId())};const le=t.path(),de=le.includes("/edit/expo/"),ue=le.includes("/edit/articles/"),pe=le.includes("/edit/literature/");let me="Article";if(de){const e=le.match(/\/edit\/expo\/([^/]+)/);e&&(me={literature:"Literature",image:"Image",music:"Music",video:"Video",imagealbum:"ImageAlbum",videoalbum:"VideoAlbum",musicalbum:"MusicAlbum"}[e[1].toLowerCase()]||"Image")}else pe&&(me="Literature");const ge=e.contentItem.type||me,fe=["Article","Literature"].includes(ge)||ue||pe,he=!fe&&(["Music","Video","Image","ImageAlbum","VideoAlbum","MusicAlbum"].includes(ge)||de);X.useTiptapEditor=fe,X.useTiptapExpoEditor=he,X.tiptapExpoEditor=null,he&&c.isLoggedIn()&&(X.canEdit=!0),X.getActiveEditor=function(){return X.useTiptapEditor&&X.tiptapEditor?X.tiptapEditor:X.useTiptapExpoEditor&&X.tiptapExpoEditor?X.tiptapExpoEditor:null};const ye="undefined"!=typeof window&&window.DISCOURS_DEBUG,ve=!!a.slug;X.showEditorHeader=!0,c.isLoggedIn()||ve||(X.canEdit=!0),e.$root.hideSiteHeader=!0,e.$on("$destroy",function(){e.$root.hideSiteHeader=!1});const Se="false"===t.search().collab;(X.useTiptapEditor||X.useTiptapExpoEditor)&&(X.listDropdownOpen=!1,X.formatDropdownOpen=!1,X.wrapperDropdownOpen=!1,X.specialDropdownOpen=!1,X.toggleDropdown=function(e,t){t&&(t.preventDefault(),t.stopPropagation());const n=X[e];X.listDropdownOpen=!1,X.formatDropdownOpen=!1,X.wrapperDropdownOpen=!1,X.specialDropdownOpen=!1,X[e]=!n},X.closeAllDropdowns=function(){X.listDropdownOpen=!1,X.formatDropdownOpen=!1,X.wrapperDropdownOpen=!1,X.specialDropdownOpen=!1}),X.useTiptapEditor&&C(X,e,{$location:t,$routeParams:a,$sanitize:f,loginService:c,localStorageService:l,apiClient:d,Notification:r,NOTIFICATION_MESSAGES:k,versioningService:S,ConfirmDialog:A,DISCOURS_ENV:b,HOCUSPOCUS_SERVER:I,THUMBOR_SERVER:w,contentType:ge,disableCollab:Se,DEBUG:ye,handleImageUpload:q,handleLinkEditor:Y,handleEmbedInsert:H,handleVideoInsert:j,handlePdfInsert:F,navigatePreviewPath:W,s3UploaderService:g,eventBus:O,contentItem:e.contentItem,cfpLoadingBar:N}),X.useTiptapExpoEditor&&x(X,e,{$location:t,$sanitize:f,loginService:c,localStorageService:l,apiClient:d,Notification:r,NOTIFICATION_MESSAGES:k,ConfirmDialog:A,DEBUG:ye,navigatePreviewPath:W,DISCOURS_ENV:b,THUMBOR_SERVER:w,versioningService:S,handleImageUpload:q,handleLinkEditor:Y,handleEmbedInsert:H,handleVideoInsert:j,handlePdfInsert:F,s3UploaderService:g,eventBus:O,cfpLoadingBar:N,contentItem:e.contentItem}),X.deleteContentItem=function(n){X.isAdmin||-1!==Te.indexOf(e.contentItem&&e.contentItem.status)?A.open({message:(0,V.t)("ÐÑ ÑвеÑенÑ, ÑÑо Ñ
оÑиÑе ÑдалиÑÑ маÑеÑиал?"),confirmText:(0,V.t)("УдалиÑÑ"),cancelText:(0,V.t)("Ðе ÑдалÑÑÑ"),type:"danger"}).then(function(){return d.remove("content-items",n).then(function(){return t.url("/feed?editorial"),r.success(k.DATA_DELETED)}).catch(function(e){r.error(e&&e.data&&e.data.data&&e.data.data.message||k.DRAFT_DELETE_ERROR)})},A.onDismissed("[deleteContentItem]")):r.error("ÐелÑÐ·Ñ ÑдалиÑÑ Ð¾Ð¿ÑбликованнÑй маÑеÑиал. ÐÐ»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±ÑаÑиÑеÑÑ Ð² ÑедакÑиÑ.")};let Ae=X.types[e.contentItem.type]||{};e.slug=n.current.params.slug;const Ee=u.getCurrentItemFromPreviewCache(e.slug,e.contentItem.type);Ee&&(e.contentItem.type===Ee.type&&!Ee.slug||e.slug)&&(e.contentItem=Ee,e.slug&&(X.sendButton="СоÑ
ÑаниÑÑ")),X.isGalleryLoading="image"===a.typeSlug&&!!a.slug&&!Ee,X.onAccessRequestSent=function(t){e.$$destroyed||t&&(X.accessRequestSent=!0,X.canRequestAccess=!1)},X.openEmailVerification=function(){O.showVerifyEmailPrompt()};const Ce=n=>{function o(n,o){const i=c.isLoggedIn(),r=(0,xe.LV)(n,i,o);var s;X.canRetryEditorLoad=r.retryable,X.requiresAuth="auth"===r.kind||!i&&"forbidden"===r.kind,X.accessDenied=!X.requiresAuth,X.accessDeniedEmailUnverified=z(r),"rate-limited"===r.kind?(X.accessDeniedTitle="Ðока не полÑÑаеÑÑÑ Ð¾ÑкÑÑÑÑ Ð¼Ð°ÑеÑиал",X.accessDeniedMessage="СлиÑком много попÑÑок. ÐодождиÑе немного и повÑоÑиÑе."):"unavailable"===r.kind?(X.accessDeniedTitle="ÐаÑеÑиал не загÑÑзилÑÑ",X.accessDeniedMessage="ÐбновиÑе ÑÑÑаниÑÑ Ð¸Ð»Ð¸ попÑобÑйÑе позже."):"invalid"===r.kind&&(X.accessDeniedTitle="СÑÑлка на маÑеÑиал не ÑабоÑаеÑ",X.accessDeniedMessage="ÐÑовеÑÑÑе, ÑÑо адÑÐµÑ ÑкопиÑовалÑÑ Ñеликом."),X.accessDenied&&(function(){const e=t.path();if(0===e.indexOf("/edit/")){const t=e.replace(/^\/edit/,"");
1X.accessDeniedLink=/^\/(articles|expo)\//.test(t)?t:"/"}}(),r.retryable||(s=a.slug||e.slug)&&c.isLoggedIn()&&(X.canRequestAccess=!0,X.accessRequestDocName="content-item:"+s)),e.$root.hideSiteHeader=!1,e.$root.isEditorLoading=!1,e.$applyAsync()}X.unbindLocalStorage();const r=window.__editorPrefetch,s=!(!r||r.slug!==a.slug||!r.contentItem),l=s?r.contentItem:null,d=n?i.resolve(n):G(function(e){return e||!l?u.queryOne(a.slug):l.then(function(e){return null!==e?e:u.queryOne(a.slug)})});s&&(r.contentItem=null),d.then(function(t){if((0,xe.wv)(t))return X.isGalleryLoading=!1,void Q((0,xe.W1)(t),404,o);const n=t.body||"";if(n&&null==X.wordCount){const e=(new DOMParser).parseFromString(n,"text/html"),t=e.body&&e.body.textContent||"";X.charCount=t.length,X.wordCount=t.trim()?t.trim().split(/\s+/).length:0;const o=e.body?e.body.querySelectorAll("p"):[];let i=0;for(let e=0;e<o.length;e++)o[e].textContent.trim().length>0&&i++;X.paraCount=i}const r=t.draftUpdatedAt||t.updatedAt||t.publishedAt||t.createdAt;r&&(X.initialLastModified=new Date(r)),Ae=X.types[t.type]||{},e.title=Ae.editTitle+" â "+t.title,v.setTitle(t.title),e.contentItem=t,e.contentItem.imageCaption&&(e.contentItem.imageCaption=(0,R.jT)(e.contentItem.imageCaption)),X.sendButton="СоÑ
ÑаниÑÑ",t.media&&t.media.length>1&&(X.album=!0),X.isGalleryLoading=!1,e.$applyAsync(),i.resolve((0,ke.ed)({type:t.type})).then(function(n){X.categories=n,e.contentItem.selectedCategory=n.find(e=>e.title===t.category)}).catch(function(e){(0,U.UT)("[getInitialEditData] Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ ÐºÐ°ÑегоÑии:",e)}).finally(function(){p.initFootnoteTooltip()})}).catch(function(e){(0,U.UT)("[getInitialEditData] Failed to load content item:",e),X.isGalleryLoading=!1,Q(e,Number(e&&(e.status||e.data&&e.data.status)),o)})};var $e=null;X.retryEditorLoad=function(){o.location.reload()};const Me=s(a);if("draft-code"===Me){var _e=window.__editorPrefetch,De=_e&&_e.draftCode===a.draftCode&&_e.draftReference?_e.draftReference:null,Le=G(function(e){return De&&!e?De.then(xe.rs):(0,xe.ml)(a.draftCode,{fetchByDraftCode:function(e){return d.getOne("content-items/by-draft-code",e,{resolveOnly:1,fallbackSlug:1})},fetchBySlug:function(e){return u.queryOne(e)}})});_e&&(_e.draftReference=null),Le.then(function(n){if(!e.$$destroyed){var o,i=n&&n.contentItem;if(!i||!i.slug){var r=new Error("draft_not_found");throw r.status=404,r}if((o=i.type)&&ge!==o){var s=(0,xe.DJ)(i);if(s)return void t.path(s).replace()}if("slug"===n.resolvedBy){var c=(0,xe.DJ)(i);c&&J(c,{slug:i.slug,draftCode:null})}e.contentItem=angular.extend(e.contentItem||{},i),e.slug=i.slug,a.slug=i.slug,Ce(n.requiresFullFetch?null:i)}}).catch(function(t){e.$$destroyed||Q(t,(0,xe.No)(t),function(t,n){(function(t,n){const o=(0,xe.LV)(t,c.isLoggedIn(),n);X.canRetryEditorLoad=o.retryable,X.requiresAuth="auth"===o.kind,X.accessDenied="auth"!==o.kind,X.accessDeniedEmailUnverified=z(o),"invalid"===o.kind?(X.accessDeniedTitle="СÑÑлка на ÑеÑновик не ÑабоÑаеÑ",X.accessDeniedMessage="ÐÑовеÑÑÑе, ÑÑо адÑÐµÑ ÑкопиÑовалÑÑ Ñеликом."):"forbidden"===o.kind?(X.accessDeniedTitle="ÐÐµÑ Ð´Ð¾ÑÑÑпа к ÑеÑновикÑ",X.accessDeniedMessage="ÐойдиÑе в нÑжнÑй аккаÑÐ½Ñ Ð¸Ð»Ð¸ попÑоÑиÑе авÑоÑа оÑкÑÑÑÑ Ð´Ð¾ÑÑÑп."):"not-found"===o.kind?(X.accessDeniedTitle="ЧеÑновик не найден или недоÑÑÑпен",X.accessDeniedMessage="ÐÑовеÑÑÑе ÑÑÑÐ»ÐºÑ Ð¸ аккаÑнÑ. Ðозможно, ÑеÑновик ÑдалÑн или доÑÑÑп закÑÑÑ."):"rate-limited"===o.kind?(X.accessDeniedTitle="Ðока не полÑÑаеÑÑÑ Ð¾ÑкÑÑÑÑ ÑеÑновик",X.accessDeniedMessage="СлиÑком много попÑÑок. ÐодождиÑе немного и повÑоÑиÑе."):"unavailable"===o.kind&&(X.accessDeniedTitle="ЧеÑновик не загÑÑзилÑÑ",X.accessDeniedMessage="ÐбновиÑе ÑÑÑаниÑÑ Ð¸Ð»Ð¸ попÑобÑйÑе позже."),e.$root.hideSiteHeader=!1,e.$root.isEditorLoading=!1})(t,n),e.$applyAsync()})})}else"edit"===Me?Ce():(e.title=Ae.title,v.setTitle(Ae.title),function(e){const t=e||{};return!!t.isCollabType&&!!t.isLoggedIn&&!t.slug}({isCollabType:fe,isLoggedIn:c.isLoggedIn(),slug:e.slug})&&(X._autoDraftPending=!0),i.resolve((0,ke.ed)({type:e.contentItem.type})).then(function(t){X.categories=t,a.typeSlug&&-1!==["Image","Music"].indexOf(e.contentItem.type)&&(X.album=!0)}).catch(function(e){(0,U.UT)("[getInitialPostData] Ðе ÑдалоÑÑ Ð·Ð°Ð³ÑÑзиÑÑ ÐºÐ°ÑегоÑии:",e)}).finally(function(){p.initFootnoteTooltip()}),i.resolve().then(function(){var t,n,o;if(X._autoDraftPending&&!X._autoDraftInFlight)return X._autoDraftInFlight=!0,(0,U.cY)("[getInitialPostData] СоздаÑм авÑо-ÑеÑновик, Ñип:",ge),X.collabSyncPending=!0,n=P,o={isDestroyed:function(){return e.$$destroyed},onCleanup:function(){X.collabSyncPending=!1,X._autoDraftInFlight=!1},debugLog:U.cY},L(t=function(){return d.post("content-items/auto-draft",{type:ge})}).catch(function(e){var i=e&&e.status;if(400===i||429===i)throw e;return o&&o.debugLog&&o.debugLog("[auto-draft] пеÑÐ²Ð°Ñ Ð¿Ð¾Ð¿ÑÑка не ÑдалаÑÑ, повÑÐ¾Ñ ÑеÑез",1500,"мÑ"),n(1500).then(function(){if(!(o&&o.isDestroyed&&o.isDestroyed()))return L(t);o.onCleanup&&o.onCleanup()})})}
1).then(function(t){if(t&&!e.$$destroyed){if(!t.slug)return(0,U.UT)("[getInitialPostData] auto-draft: Ð½ÐµÑ slug в оÑвеÑе",t),X._autoDraftPending=!1,X._autoDraftInFlight=!1,X.collabSyncPending=!1,X.initTiptapCollaboration(),void e.$applyAsync();if((0,U.cY)("[getInitialPostData] auto-draft гоÑов:",t.slug),X._autoDraftInFlight=!1,X._autoDraftPending=!1,e.contentItem.slug=t.slug,e.contentItem._id=t._id,e.contentItem.draftCode=t.draftCode||null,e.contentItem.title&&"Ðез названиÑ"!==e.contentItem.title||(e.contentItem.title=""),e.contentItem.status="draft",e.contentItem.category=t.category||null,e.contentItem.createdBy=c.userId(),e.slug=t.slug,X.newPostSaved=!0,"function"==typeof X.clearLocalStorage&&X.clearLocalStorage(),!e.$$destroyed){J(t.draftCode?"/edit/"+t.draftCode:"/edit/"+("Literature"===ge?"literature":"articles")+"/draft/"+t.slug,{slug:t.slug,categorySlug:"draft"}),X.upgradeToCollabMode(),e.$applyAsync();var n="auto-draft-invite-link-"+Date.now();r.primary({message:(0,V.t)("ЧеÑновик Ñоздан â ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾")+' <button type="button" class="notification-undo-btn '+n+'">'+(0,V.t)("пÑиглаÑиÑÑ ÐºÐ¾Ð»Ð»ÐµÐ³")+"</button> "+(0,V.t)("Ð´Ð»Ñ ÑоÑÑÑдниÑеÑÑва!"),delay:6e3}),setTimeout(function(){var e=document.querySelector("."+n);e&&e.addEventListener("click",function(){"function"==typeof X.openInviteModal&&X.openInviteModal()},{once:!0})},0),(t.draftWarning||t.draftCount&&t.draftCount>=45)&&r.warning({message:"У Ð²Ð°Ñ "+t.draftCount+" из 50 ÑеÑновиков. УдалиÑе неиÑполÑзÑемÑе, ÑÑÐ¾Ð±Ñ Ð¿ÑодолжиÑÑ ÑоздаваÑÑ Ð½Ð¾Ð²Ñе.",delay:8e3})}}}).catch(function(t){if((0,U.UT)("[getInitialPostData] auto-draft не ÑдалÑÑ:",t),X.collabSyncPending=!1,X._autoDraftInFlight=!1,"draft_limit"===function(e){return 400===(e&&e.status)?"draft_limit":"silent"}(t)){var n=d.getErrorMessage(t,"ÐÑевÑÑен Ð»Ð¸Ð¼Ð¸Ñ ÑеÑновиков. УдалиÑе неиÑполÑзÑемÑе."),o=String(n).replace(/[<>&"']/g,function(e){return"&#"+e.charCodeAt(0)+";"});r.error({message:o,delay:8e3})}X._autoDraftPending&&(X._autoDraftPending=!1,X.initTiptapCollaboration().catch(function(e){e&&"AbortError"!==e.name&&(0,U.UT)("[getInitialPostData] Fallback init failed:",e)}),e.$applyAsync())}));X.newPostSaved=!1,X.hasNewPostUnsavedContent=function(){if(e.slug||X.newPostSaved||X._autoDraftPending)return!1;const t=e.contentItem&&e.contentItem.title||"";if(t&&String(t).trim().length>0&&"Ðез названиÑ"!==t)return!0;try{const e=X.getActiveEditor&&X.getActiveEditor();if(e&&"function"==typeof e.getHTML){if((e.getHTML()||"").replace(/<[^>]+>/g,"").replace(/ /g," ").trim().length>0)return!0}}catch(e){}return!1};var Pe=e.$watch("contentItem.title",function(e){v.setTitle(e||"")}),Oe=e.$watch("contentItem.selectedCategory",function(t,n){if(t&&t!==n&&fe){var o=e.contentItem&&e.contentItem.slug;if(o){var i,r=t.slug||t._id&&t._id.toLowerCase();r&&J("/edit/"+(("Literature"===((i=e.contentItem)&&i.type||ge)?"literature":"articles")+"/")+r+"/"+o,{categorySlug:r},5e3)}}}),Ne=e.$watch("contentItem.thumborId",function(t,n){t!==n&&e.contentItem&&e.contentItem.slug&&X.forceSave&&X.forceSave()});X.isLoggedIn=c.isLoggedIn(),X.isCommunityAuthor=c.isAuthor(),X.userAvatarId=c.userAvatar(),X.userPathSlug=c.userPath();const{getTagTitles:Ue}=function(e,t,n){const{apiClient:o}=n,i=()=>(t.contentItem.tags||[]).filter(e=>e&&"object"==typeof e&&e.title).map(e=>e.title),r=e=>String(null==e?"":e).replace(/\u00A0/g," ").trim().replace(/[\s,.;:!?ââ-]+$/u,"").replace(/\s+/g," ");return e.inputSelect=function(n,o,r){t.contentItem.tags||(t.contentItem.tags=[]),i().includes(o.title)||t.contentItem.tags.push(o),e.newTag=""},e.getTagInputWidth=function(e){return e&&0!==e.length?Math.min(e.length+2,30)+"ch":null},e.tagsTypeahead=async e=>{const n=await o.getList("tags",{q:e});if(t.$$destroyed)return[];const a=n.filter(e=>e.title&&!i().includes(e.title)),s=r(e);return s&&!a.find(e=>r(e.title)===s)&&a.push({title:s,itemsCount:0}),a},{getTagTitles:i}}(X,e,{apiClient:d});return function(e,t,n){const{debugLog:o}=n;e.applyTypography=function(n,i=-1){const{contentItem:r}=t,a=[],s=e.getActiveEditor();if(s){const e=s.getHTML();a.push(_(e).then(function(t){if(s.isDestroyed)return;const n=e!==t;o("applyTypography: Tiptap mode, changed =",n),n&&s.commands.setContent(t)}))}else if(r.body){const e=r.body;a.push(_(r.body).then(function(t){r.body=t,o("applyTypography: model mode, changed =",e!==r.body)}))}const{media:c=[]}=r;return(i>=0&&c[i]?[c[i]]:i>
1=0?[]:c).forEach(function(e){e.body&&a.push(_(e.body).then(function(t){e.body=t})),e.literatureBody&&a.push(_(e.literatureBody).then(function(t){e.literatureBody=t}))}),Promise.all(a).then(function(){t.$$destroyed||t.$applyAsync()})},e.cleanHtmlContent=function(n,i=-1){function r(e){if(!e)return e;const t=e.replace(/\s*style\s*=\s*"([^"]*)"/gi,(e,t,n,o)=>{const i=o.slice(Math.max(0,n-50),n),r=/<ta-(?:border-)?sub[^>]*$/i.test(i),a=t.split(";").map(e=>e.trim()).filter(e=>!(/^text-align\s*:\s*justify/i.test(e)||!/^text-align\s*:/i.test(e)&&(!r||!/^(background-color|color)\s*:/i.test(e))));return a.length>0?` style="${a.join("; ")};"`:""}).replace(/\s*(width|height)\s*=\s*"[^"]*"/gi,"").replace(/\s*id\s*=\s*"[^"]*"/gi,"").replace(/\s*class\s*=\s*"[^"]*"/gi,function(e,t,n){const o=n.slice(Math.max(0,t-100),t+e.length),i=/<figure[^>]*class\s*=\s*"/i.test(o),r=/<a[^>]*class\s*=\s*"[^"]*\banchor-link\b[^"]*"/i.test(o),a=/<a[^>]*class\s*=\s*"[^"]*\bfootnote-tooltip\b[^"]*"/i.test(o),s=/<span[^>]*class\s*=\s*"[^"]*\blead\b[^"]*"/i.test(o),c=/<(div|p|summary)[^>]*class\s*=\s*"[^"]*\b(toc-block|toc-summary|toc-link|toc-main|toc-sub|toc-first)\b[^"]*"/i.test(o),l=/class\s*=\s*"[^"]*\b(ta-video-container|ta-video-wrapper|ta-insert-video|social-embed[^"]*)\b/i.test(e),d=/class\s*=\s*"[^"]*\b(image-gallery|gallery-slide)\b/i.test(e),u=/class\s*=\s*"[^"]*\b(spoiler-block|spoiler-content|spoiler-label-title|spoiler-label-collapse)\b/i.test(e);return i||r||a||s||c||l||d||u?e:""}).replace(/\s*lang\s*=\s*"[^"]*"/gi,"").replace(/<div>\s*((?:<p[^>]*>(?:(?!<\/p>).)*<\/p>\s*)+)<\/div>/gis,"$1").replace(/<div>([\s\S]*?)<\/div>/gi,function(e,t){return/<div[\s>]/i.test(t)?e:"<p>"+t+"</p>"}).replace(/<div[^>]*>\s*<b[^>]*>\s*<br\s*\/?>\s*<\/b>\s*<\/div>/gi,"").replace(/<br\s*\/?>\s*(<\/(?:p|h2|h3|div|span)>)/gi,"$1").replace(/<p[^>]*>\s*<\/p>/gi,"").replace(/<span[^>]*>\s*<\/span>/gi,"").replace(/<i[^>]*>\s*<\/i>/gi,"").replace(/<b[^>]*>\s*<\/b>/gi,"").replace(/<h1([^>]*)>([\s\S]*?)<\/h1>/gi,"<h2$1>$2</h2>").replace(/<h1[^>]*>\s*<\/h1>/gi,"").replace(/<h2[^>]*>\s*<\/h2>/gi,"").replace(/<h3[^>]*>\s*<\/h3>/gi,"").replace(/<b[^>]*>\s*<br\s*\/?>\s*<\/b>/gi,"").replace(/<div[^>]*>\s*<\/div>/gi,"").replace(/<span(?:\s*)>(.*?)<\/span>/gi,"$1").replace(/<\/span>\s*<span\s*>/gi,"").replace(/<br\s*\/?\s*>\s*<\/p>/gi,"</p>").replace(/<span[^>]*>\s*<\/span>/gi,"").replace(/<div[^>]*>\s*<br\s*\/?>\s*<\/div>/gi,"").replace(/<p[^>]*>\s*<\/p>/gi,"");return(0,K.stripUnderlineTags)(t)}const{contentItem:a}=t,s=e.getActiveEditor();if(s){const e=s.getHTML(),t=r(e),n=e!==t;o("cleanHTML: Tiptap mode, changed =",n),n&&s.commands.setContent(t)}else if(a.body){const e=a.body;a.body=r(a.body),o("cleanHTML: model mode, changed =",e!==a.body)}const{media:c=[]}=a;(i>=0&&c[i]?[c[i]]:i>=0?[]:c).forEach(e=>{e.body&&(e.body=r(e.body)),e.literatureBody&&(e.literatureBody=r(e.literatureBody))}),t.$applyAsync()},t.$on("$destroy",function(){(0,we.EG)()})}(X,e,{debugLog:U.cY}),D(X,e,{$q:i,$location:t,$sanitize:f,apiClient:d,apiErrorHandler:M,Notification:r,ConfirmDialog:A,contentItemsService:u,decodeHtmlEntities:R.jT,isPostValid:re,getTagTitles:Ue}),this}]),n(83414),n(53320),n(6929),n(28015);const $e={modules:["discours.pages","discours.controllers","discours.directives","discours.components","discours.factories","discours.services","discours.templates","ngFileUpload","angular-carousel","rzSlider"]}},49088(e,t,n){"use strict";function o(){if(p)return null;if(l)return l;try{return l=new Worker(new URL(n.p+n.u(748),n.b)),l.addEventListener("message",function(e){var t=e.data;if(0!==t.id||"ready"!==t.result){var n=u.get(t.id);n&&(u.delete(t.id),t.error?n.reject(new Error(t.error)):n.resolve(t.result))}}),l.addEventListener("error",function(e){p=!0,l=null,u.forEach(function(e){e.reject(new Error("Worker error"))}),u.clear(),clearTimeout(m),m=setTimeout(function(){p=!1},6e4)}),l}catch(e){return p=!0,null}}function i(e,t){if(!e)return Promise.resolve(e);var n=o();if(!n)return Promise.reject(new Error("Worker unavailable"));var i=++d;return new Promise(function(o,r){var a=setTimeout(function(){u.delete(i),r(new Error("Worker timeout"))},1e4);u.set(i,{resolve:function(e){clearTimeout(a),o(e)},reject:function(e){clearTimeout(a),r(e)}}),n.postMessage({id:i,action:"execute",text:e,config:t||null})})}function r(e,t){if(!e||0===e.length)return Promise.resolve([]);var n=o();if(!n)return Promise.reject(new Error("Worker unavailable"));var i=++d;return new Promise(function(o,r){var a=setTimeout(function(){u.delete(i),r(new Error("Worker batch timeout"))},15e3);u.set(i,{resolve:function(e){clearTimeout(a),o(e)},reject:function(e){clearTimeout(a),r(e)}}),n.postMessage({id:i,action:"executeBatch",texts:e,config:t||null})})}function a(){return!p&&"undefined"!=typeof Worker}function s(){p||o()}function c(){l&&(l.terminate(),l=null),p=!1,u.forEach(function(e){e.reject(new Error("Worker terminated"))}),u.clear(),clearTimeout(m),m=null}n.d(t,{EG:()=>c,MN:()=>r,Sz:()=>a,YP:()=>s,gl:()=>i});let l=null,d=0,u=new Map,p=!1,m=null},55381(e,t,n){function o(e,t,n){var o=document.createElement("div");o.className=n;var i=document.createElement("iframe");return i.src=t,i.setAttribute("frameborder","0"),i.setAttribute("allow","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"),i.setAttribute("allowfullscreen",""),i.setAttribute("title","Ðидео"),o.appendChild(i),e.appendChild(o),e.classList.add("iframe-loaded"),o}function i(e){var t=r(e);if(!t)return null;var n=new URL(t),o=n.pathname.match(/^\/embed\/([\w-]{6,128})$/),i=n.hostname.toLowerCase();if(!o||"www.youtube.com"!==i&&"www.youtube-nocookie.com"!==i)return null;var a={autoplay:1,rel:0,modestbranding:1,iv_load_policy:3};
1return n.searchParams.forEach(function(e,t){a[t]=e}),{embedUrl:t,videoId:o[1],host:"www.youtube-nocookie.com"===i?"https://www.youtube-nocookie.com":null,playerVars:a}}var r=n(37009).buildPlayerLoc,a=!1,s=[],c=!1;e.exports&&(e.exports={createVideoIframe:o,getYouTubePlayerOptions:i,playYouTube:function(e,t){if(t.stopPropagation(),e.ytPlaying)return null;var n=t.currentTarget.closest(".youtube-lazy");if(!n)return null;var o=i(e);if(!o)return null;var r=document.createElement("div");r.className="youtube-iframe-wrapper";var l=document.createElement("div");return r.appendChild(l),n.appendChild(r),e.ytPlaying=!0,e._iframeWrapper=r,function(e){if(a&&"undefined"!=typeof YT&&YT.Player)e();else{var t=!1,n=function(){t||(t=!0,clearTimeout(o),e())};s.push(n);var o=setTimeout(function(){if(!a){var e=s.indexOf(n);-1!==e&&s.splice(e,1),n()}},12e3);if(!document.querySelector('script[src*="youtube.com/iframe_api"]')){var i=document.createElement("script");if(i.src="https://www.youtube.com/iframe_api",document.head.appendChild(i),!c){c=!0;var r=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=function(){a=!0,r&&r();var e=s.slice();s=[],e.forEach(function(e){e()})}}}}}(function(){if(l.parentElement){if("undefined"==typeof YT||!YT.Player){var t=document.createElement("iframe");return t.src=((i=new URL(o.embedUrl)).searchParams.set("autoplay","1"),i.searchParams.has("rel")||i.searchParams.set("rel","0"),i.toString()),t.setAttribute("frameborder","0"),t.setAttribute("allow","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"),t.setAttribute("allowfullscreen",""),t.setAttribute("title","YouTube видео"),t.style.width="100%",t.style.height="100%",l.replaceWith(t),void(n&&n.classList.add("iframe-loaded"))}var i,r={videoId:o.videoId,playerVars:o.playerVars,events:{onReady:function(e){n&&n.classList.add("iframe-loaded");try{e.target&&e.target.playVideo&&e.target.playVideo()}catch(e){}}}};o.host&&(r.host=o.host),e._ytPlayer=new YT.Player(l,r)}}),r},playVimeo:function(e,t,n){if(t.stopPropagation(),e.vimeoPlaying)return null;var i=t.currentTarget.closest(".vimeo-lazy");if(!i)return null;var r=n(e);if(!r)return null;var a=r.includes("?")?"&":"?",s=o(i,r+a+"autoplay=1","vimeo-iframe-wrapper");return e.vimeoPlaying=!0,e._iframeWrapper=s,s},getVimeoEmbedUrl:function(e){var t=r(e);return t&&"player.vimeo.com"===new URL(t).hostname.toLowerCase()?t:""},getVimeoThumbnailUrl:function(e){return e&&e.vimeoId?"https://vumbnail.com/"+String(e.vimeoId).split("/")[0]+".jpg":""},cleanupVideoIframes:function(e,t){Array.isArray(e)&&e.forEach(function(e,n){if(n!==t){if(e._ytPlayer){try{e._ytPlayer.destroy()}catch(e){}e._ytPlayer=null}if((e.ytPlaying||e.vimeoPlaying)&&e._iframeWrapper){try{e._iframeWrapper.remove()}catch(e){}e._iframeWrapper=null}e.ytPlaying=!1,e.vimeoPlaying=!1}})}})},55852(){angular.module("discours.factories").factory("youtubeUploaderService",["$log","$q","Notification","cfpLoadingBar","apiClient","NOTIFICATION_MESSAGES",(e,t,n,o,i,r)=>({uploadVideo(a,s,c){let l="";c&&(l=c.replace(/<[^>]*>/g,"")),l+="ÐÑигинал пÑбликаÑии Ñ
ÑаниÑÑÑ Ð½Ð° Discours.io. ÐиÑкÑÑÑ â жÑÑнал о кÑлÑÑÑÑе и обÑеÑÑве и оÑкÑÑÑÑй мÑзей иÑкÑÑÑÑва, пÑиÑоединиÑÑÑÑ Ðº коÑоÑÑм Ð¼Ð¾Ð¶ÐµÑ ÐºÐ°Ð¶Ð´Ñй. https://discours.io";const d={snippet:{title:s||a.name,description:l,tags:`discours, видео, ${a.name}, ${s}`,categoryId:1},status:{privacyStatus:"public"}};return t(function(t,s){i.getList("youtube-tokens").then(function(i){e.debug("Got youtube tokens!",i);const r=i[0].access_token;o.start(),new MediaUploader({baseUrl:"https://www.googleapis.com/upload/youtube/v3/videos",file:a,token:r,metadata:d,params:{part:Object.keys(d).join(",")},onError:t=>{e.error("Uploading error",t),o.complete();let i="ÐÑибка загÑÑзки видео";try{const e=JSON.parse(t);i=e&&e.error&&e.error.message||i}catch(t){e.warn("YouTube error response is not valid JSON",t)}n.error(i),s(t)},onProgress(e){const t=Math.ceil(100*e.loaded/e.total);o.set(t/100)},onComplete:n=>{const i=JSON.parse(n).id;e.debug(i),t(i),o.complete()}}).upload()}).catch(function(t){e.error("YouTube token fetch error",t),o.complete(),n.error(r.YOUTUBE_TOKEN_ERROR),s(t)})})}})])},60150(e,t,n){"use strict";function o(e,t){if("string"==typeof t)return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function i(e,t,n){if("paragraphBreak"===e)return"ÐобавиÑÑ Ð°Ð±Ð·Ð°Ñ";if("link"===e)return("add"===t?"ÐобавиÑÑ":"УдалиÑÑ")+" ÑÑÑлкÑ"+(n?": "+n:"");switch(e){case"heading":return"Ðаголовок "+(n||"");case"alignment":return"вÑÑавнивание "+({center:"по ÑенÑÑÑ",right:"по пÑÐ°Ð²Ð¾Ð¼Ñ ÐºÑаÑ",left:"по Ð»ÐµÐ²Ð¾Ð¼Ñ ÐºÑаÑ"}[n]||n||"");case"bulletList":return"маÑкиÑованнÑй ÑпиÑок";case"orderedList":return"нÑмеÑованнÑй ÑпиÑок";case"blockquote":return"ÑиÑаÑа";case"taSub":return"подвÑÑÑÑка";case"taBorderSub":return"подвÑÑÑÑка Ñ Ñамкой";case"taQuotation":return"ÑиÑаÑа из иÑÑоÑника";case"taEpigraph":return"ÑпигÑаÑ";case"taSelectionFrame":return"Ñамка вÑделениÑ"}
1return{bold:"жиÑнÑй",italic:"кÑÑÑив",underline:"подÑÑÑкивание",strike:"заÑÑÑкивание",code:"код",subscript:"подÑÑÑоÑнÑй",superscript:"надÑÑÑоÑнÑй",lead:"лид",highlight:"вÑделение"}[e]||e}function r(e,t){for(var n=0;n<t.length;n++){var o=e[t[n]];if("string"==typeof o&&o.trim())return o.trim()}return""}function a(e){if(null==e)return"";if("string"==typeof e)return e.trim();if("number"==typeof e||"boolean"==typeof e)return String(e);if("object"!=typeof e)return"";var t,n=r(e,T),o=r(e,k),i=o?(t=String(o).split("?")[0].split("#")[0]).split("/").pop()||t:"";return n&&i?n+" ("+i+")":n||i}function s(e,t){return t>0?e+" ⦠и еÑÑ "+t:e}function c(e,t){for(var n,o,i=[],r=0;r<e.length;r++){var a=i.concat([e[r]]).join(" · ");if(i.length&&s(a,t-(i.length+1)).length>100)break;i.push(e[r])}if(!i.length)return"";if(1===i.length){var c=100-s("",t-1).length;i[0]=(n=i[0],o=Math.max(c,12),n.length<=o?n:n.slice(0,Math.max(o-1,1)).replace(/\s+$/,"")+"â¦")}return s(i.join(" · "),t-i.length)}function l(e,t){for(var n=[],o=0,i=0;i<t.length;i++){var r=t[i];if(!(r>=e.length||(o++,n.length>=4))){var s=a(e[r]);n.push("â"+(r+1)+(s?" "+s:""))}}return o?c(n,o):""}function d(e){try{return JSON.stringify(e)}catch(e){return""}}function u(e){var t=[],n=!1,o=function e(o){return o&&"object"==typeof o?-1!==t.indexOf(o)||t.length>=32?(n=!0,null):(t.push(o),Array.isArray(o)?i=o.map(e):(i={},Object.keys(o).sort().forEach(function(t){i[t]=e(o[t])})),t.pop(),i):o;var i}(e);return n?"":d(o)}function p(e){return null==e?"":"string"==typeof e?e:"number"==typeof e||"boolean"==typeof e?String(e):Array.isArray(e)?(t=e).length?c(t.slice(0,4).map(function(e,t){return a(e)||"ÑÐ»ÐµÐ¼ÐµÐ½Ñ "+(t+1)}),t.length):"":"object"==typeof e?a(e)||d(e):"";var t}function m(e,t){if(e===t)return!0;var n=null==e||""===e,o=null==t||""===t;if(n||o)return n&&o;if("object"!=typeof e||"object"!=typeof t)return!1;var i=u(e),r=u(t);return""!==i&&i===r}function g(e,t){const n={before:p(e),after:p(t)};if(n.before!==n.after)return n;if(!Array.isArray(e)||!Array.isArray(t))return n;const o=function(e,t){for(var n=Math.max(e.length,t.length),o=[],i=0;i<n;i++)m(e[i],t[i])||o.push(i);return o.length&&o.length!==n?o:null}(e,t);if(!o)return n;const i={before:l(e,o),after:l(t,o)};return i.before===i.after?n:i}function f(e,t){if(!t||"object"!=typeof t||Array.isArray(t))return[];const n=e&&e.attrs||{},i=[];for(const e of Object.keys(t)){if((0,w.Yu)(e))continue;const r=o(n,e);if(m(r,t[e]))continue;const a=g(r,t[e]);i.push({key:e,label:o(C,e)||e,before:a.before,after:a.after})}return i}function h(e){switch(e.type.name){case"discoursImage":return"каÑÑинки";case"socialEmbed":{const t=(e.attrs.providerName||e.attrs.provider||"").toLowerCase();return t.includes("youtube")||t.includes("vimeo")||t.includes("rutube")?"видео":"медиа"}case"footnote":return"ÑноÑки";case"imageGallery":return"галеÑеи";case"spoilerBlock":return"ÑпойлеÑа";case"pdfViewer":return"докÑменÑа";default:return e.type.name}}function y(e){const{doc:t}=e.state,n=S.get(e);if(n&&n.version===t)return n.data;const r=new Map,a=new Map,s=new Map,c=new Map,l=new Map,d=[],u=[];t.descendants((e,t)=>{if(e.marks)for(let n=0;n<e.marks.length;n++){const o=e.marks[n],l=o.type.name;if("comment"===l){const n=o.attrs.commentId,i=r.get(n);i?(i.to=t+e.nodeSize,i.quotedText+=e.text||""):r.set(n,{commentId:n,resolved:o.attrs.resolved,from:t,to:t+e.nodeSize,quotedText:e.text||"",authorId:o.attrs.authorId||null,authorName:o.attrs.authorName||null,authorSlug:o.attrs.authorSlug||null,authorAvatar:o.attrs.authorAvatar||null})}else if("suggestionAdd"===l){const n=o.attrs.suggestionId,i=a.get(n);i?(i.to=t+e.nodeSize,i.text+=e.text||""):a.set(n,{suggestionId:n,authorId:o.attrs.authorId,authorName:o.attrs.authorName||null,authorSlug:o.attrs.authorSlug||null,authorAvatar:o.attrs.authorAvatar||null,createdAt:o.attrs.createdAt,type:"add",from:t,to:t+e.nodeSize,text:e.text||""})}else if("suggestionDelete"===l){const n=o.attrs.suggestionId,i=s.get(n);i?(i.to=t+e.nodeSize,i.text+=e.text||""):s.set(n,{suggestionId:n,authorId:o.attrs.authorId,authorName:o.attrs.authorName||null,authorSlug:o.attrs.authorSlug||null,authorAvatar:o.attrs.authorAvatar||null,createdAt:o.attrs.createdAt,type:"delete",from:t,to:t+e.nodeSize,text:e.text||""})}else if("suggestionFormat"===l){const n=o.attrs.suggestionId,r=c.get(n),a=e.text||"",s="paragraphBreak"===o.attrs.formatType?a.replace(I.PARAGRAPH_BREAK_MARKER,""):a;r?(r.to=t+e.nodeSize,r.text+=s):c.set(n,{suggestionId:n,authorId:o.attrs.authorId,authorName:o.attrs.authorName||null,authorSlug:o.attrs.authorSlug||null,authorAvatar:o.attrs.authorAvatar||null,createdAt:o.attrs.createdAt,type:"format",formatType:o.attrs.formatType,formatAction:o.attrs.formatAction,formatValue:o.attrs.formatValue,originalValue:o.attrs.originalValue||null,formatDescription:i(o.attrs.formatType,o.attrs.formatAction,o.attrs.formatValue),from:t,to:t+e.nodeSize,text:s})}}const n=o(E,e.attrs&&e.attrs.suggestionType);if(e.attrs&&e.attrs.suggestionId&&n&&!l.has(e.attrs.suggestionId)&&l.set(e.attrs.suggestionId,{suggestionId:e.attrs.suggestionId,authorId:e.attrs.suggestionAuthorId,createdAt:e.attrs.suggestionCreatedAt,type:n,from:t,to:t+e.nodeSize,text:"",isNode:!0,nodeType:e.type.n
1ame,nodeDescription:h(e),nextAttrs:e.attrs&&e.attrs.suggestionNextAttrs||null,updateChanges:"node-update"===n?f(e,e.attrs.suggestionNextAttrs):[]}),e.isText)for(let n=0;n<e.text.length;n++)u.push(t+n),d.push(e.text[n])});const p=Array.from(r.values()),m=Array.from(a.values()),g=Array.from(s.values()),y=Array.from(c.values()),v=Array.from(l.values()),b={comments:p,suggestions:{adds:m,deletes:g,formats:y,nodeSuggestions:v,all:[...m,...g,...y,...v]},textIndex:{text:d.join(""),posMap:u}};return S.set(e,{version:t,data:b}),"undefined"!=typeof process&&process,b}function v(e){return y(e).comments.map(function(e){return Object.assign({},e)})}function b(e){function t(e){return e.map(function(e){return Object.assign({},e)})}var{doc:n}=e.state,o=A.get(e);if(o&&o.version===n&&o.data)return o.data;for(var i=y(e).suggestions,r=t(i.adds),a=t(i.deletes),s=t(i.formats),c=t(i.nodeSuggestions),l=[],d=new Set,u=new Set,p=new Map,m=new Map,g=0;g<r.length;g++){var f=r[g];f.suggestionId&&(p.set(f.authorId+":"+f.from,f),m.set(f.authorId+":"+f.to,f))}for(var h=0;h<a.length;h++){var v=a[h];if(v.suggestionId){var b=p.get(v.authorId+":"+v.to)||m.get(v.authorId+":"+v.from);b&&!d.has(b.suggestionId)&&(l.push({suggestionId:v.suggestionId,type:"replace",authorId:v.authorId,authorName:v.authorName||b.authorName||null,authorSlug:v.authorSlug||b.authorSlug||null,authorAvatar:v.authorAvatar||b.authorAvatar||null,createdAt:v.createdAt<b.createdAt?v.createdAt:b.createdAt,from:Math.min(v.from,b.from),to:Math.max(v.to,b.to),deleteText:v.text,addText:b.text,text:v.text+" â "+b.text,_addSuggestionId:b.suggestionId}),d.add(b.suggestionId),u.add(v.suggestionId))}}l.length>0&&(r=r.filter(function(e){return!d.has(e.suggestionId)}),a=a.filter(function(e){return!u.has(e.suggestionId)}));var I={adds:r,deletes:a,replaces:l,formats:s,nodeSuggestions:c,all:[].concat(r,a,l,s,c)};return A.set(e,{version:n,data:I}),I}n.r(t),n.d(t,{extractAll:()=>y,extractComments:()=>v,extractSuggestions:()=>b});var I=n(46508),w=n(43592);const S=new WeakMap,A=new WeakMap,E={add:"node-add",delete:"node-delete",update:"node-update",[w.Uq]:"node-update"},C={src:"Ñайл",alt:"опиÑание",title:"заголовок",caption:"подпиÑÑ",content:"ÑекÑÑ",href:"ÑÑÑлка",provider:"иÑÑоÑник",providerName:"иÑÑоÑник",images:"изобÑажениÑ"};var T=["caption","title","alt","label","name","text"],k=["src","url","href"]},83414(e,t,n){var o=n(55381);angular.module("discours.controllers").controller("ExpoPreviewCtrl",["$scope","$log","loginService","permissionsService","musicPlayerService","expoService","THUMBOR_SERVER",function(e,t,n,i,r,a,s){function c(t){e.post&&e.post.media&&o.cleanupVideoIframes(e.post.media,t)}const l=this;l.activeIndex=0,e.isLoggedIn=n.isLoggedIn(),e.isAdmin=n.isAdmin(),e.isReader=i.isReader(),e.canViewMetrics=i.canViewEditorialMetrics(),e.tags=function(){return e.post&&Array.isArray(e.post.tags)?e.post.tags.map(function(e){return e.title}).join(", "):""},e.getVimeoEmbedUrl=o.getVimeoEmbedUrl,e.getVimeoThumbnailUrl=o.getVimeoThumbnailUrl,e.playYouTube=function(t,n){o.playYouTube(t,n),e.$applyAsync()},e.playVimeo=function(t,n){o.playVimeo(t,n,o.getVimeoEmbedUrl),e.$applyAsync()},e.stopAllVideogulars=function(){for(var e=document.querySelectorAll(".expo-video-player"),t=0;t<e.length;t++)e[t].paused||e[t].pause()},e.audioPlayer=r.player(),e.musicPlayerService=r,e.currentPlayer=null,e.currentSong=null;var d=null;let u;r.musicCtrlScope()&&(d=r.musicCtrlScope().$watch("currentSong",t=>e.currentSong=t)),e.$on("$destroy",function(){c(-1),d&&d()}),e.playPlaylist=async function(n,o){e.post?(t.debug("[ExpoPreviewCtrl] Playing playlist, index:",o),u=await a.playPlaylist(e.post,n,o),e.$$destroyed||u&&e.$applyAsync(function(){e.currentPlayer=u})):t.warn("[ExpoPreviewCtrl] No post available for playback")},e.playPauseMain=async function(){e.post&&(u=await a.playPauseMain(e.post),e.$$destroyed||u&&e.$applyAsync(function(){e.currentPlayer=u}))},e.startAtFraction=function(){return e.playPauseMain()},e.$watch(function(){return l.activeIndex},function(n,o){n!==o&&void 0!==n&&(e.stopAllVideogulars(),e.post&&"Video"===e.post.type&&c(o),t.debug("[ExpoPreviewCtrl] Carousel index changed to:",n))}),e.getOgDescription=function(){return e.post&&(e.post.description||e.post.media&&e.post.media[0]&&e.post.media[0].literatureBody||e.post.body||e.post.media&&e.post.media[0]&&e.post.media[0].body)||""},t.debug("[ExpoPreviewCtrl] Preview controller initialized")}])},94954(){(function(){"use strict";function e(e){try{return(e=(e||"").trim())?/^(https?:|mailto:|tel:|ftp:)/i.test(e)||/^\/{2}/.test(e)||/^#/.test(e)?e:/^[a-z][a-z0-9+.-]*:/i.test(e)?"":"https://"+e:""}catch(t){return e||""}}function t(t){if(!t)return"";const n=t.replace(/<br\s*\/?\s*>/gi," "),o=document.createElement("div");return o.innerHTML=n,[].slice.call(o.querySelectorAll("*")).forEac
1h(function(t){if("a"===(t.tagName||"").toLowerCase()){const n=e(t.getAttribute("href"));n?t.setAttribute("href",n):t.removeAttribute("href"),t.setAttribute("target","_blank"),t.setAttribute("rel","noopener noreferrer");try{const e={href:1,target:1,rel:1},n=t.attributes;for(let o=n.length-1;o>=0;o--)e[n[o].name.toLowerCase()]||t.removeAttribute(n[o].name)}catch(e){}}else{const e=t.parentNode;if(e){for(;t.firstChild;)e.insertBefore(t.firstChild,t);e.removeChild(t)}}}),o.innerHTML.replace(/\s+/g," ").replace(/\u00A0/g," ").trim()}angular.module("discours.services").factory("captionEditorService",[function(){return{open:function(n){return new Promise(function(o){function i(e,t,n,o){e.addEventListener(t,n,o),l.push({el:e,type:t,fn:n,opts:o})}function r(){function o(){try{let e=(u.textContent||"").replace(/[\u00A0\u200B]/g," ").trim().length>0;e||(e=(u.innerHTML||"").replace(/<br\s*\/?\s*>/gi,"").replace(/ /gi," ").trim().length>0),e?u.classList.remove("is-empty"):u.classList.add("is-empty")}catch(e){}}function r(){try{if(!v)return;const e=window.getSelection();e.removeAllRanges(),e.addRange(v)}catch(e){}}function s(){const t=e((f.value||"").trim());if(t){if(b)try{b()}catch(e){}r();try{document.execCommand("createLink",!1,t)}catch(e){}try{const e=window.getSelection();if(e&&e.rangeCount){let t=e.anchorNode;for(;t&&t!==u&&(!t.tagName||"a"!==t.tagName.toLowerCase());)t=t.parentNode;if(t&&t.tagName&&"a"===t.tagName.toLowerCase()){t.setAttribute("target","_blank"),t.setAttribute("rel","noopener noreferrer");const n=document.createRange();n.setStartAfter(t),n.collapse(!0),e.removeAllRanges(),e.addRange(n)}}}catch(e){}g.style.display="none",m.style.display="none";try{m.parentNode===u&&u.removeChild(m)}catch(e){}f.value="",u.focus()}else y.click()}const d=document.getElementById("caption-format-"+a);if(!d)return;const u=d.querySelector(".footnote-format__editor");if(!u)return;let p;window._discoursLinkStyles?p=window._discoursLinkStyles.inject("caption-format-"+a,".footnote-format__editor"):(p=document.createElement("style"),p.textContent="#caption-format-"+a+" .footnote-format__editor a,#caption-format-"+a+" .footnote-format__editor a:link,#caption-format-"+a+" .footnote-format__editor a:visited { text-decoration: none !important; background-image: linear-gradient(120deg, #000 0%, #000 100%) !important; background-repeat: no-repeat !important; background-size: 100% 2px !important; background-position: 0 100% !important; color: #000 !important; transition: background-size 0.25s ease-in, color 0.15s ease !important;}#caption-format-"+a+" .footnote-format__editor a:hover { background-size: 100% 95% !important; color: #fff !important; text-decoration: none !important;}",document.head.appendChild(p));try{c&&c.el&&c.el.addEventListener("hidden.bs.modal",function(){p&&p.parentNode&&p.parentNode.removeChild(p),function(){for(var e=0;e<l.length;e++){var t=l[e];t.el.removeEventListener(t.type,t.fn,t.opts)}l=[]}()})}catch(e){}try{u.innerHTML=t(n||"")}catch(e){u.textContent=n||""}u.focus(),i(u,"keydown",function(e){"Enter"===e.key&&e.preventDefault()}),i(u,"paste",function(e){try{e.preventDefault();let t=(e.clipboardData||window.clipboardData).getData("text");t=(t||"").replace(/\r\n|\r|\n/g," "),document.execCommand("insertText",!1,t)}catch(e){}}),i(u,"input",o),i(u,"keyup",o),i(u,"blur",o),setTimeout(o,0);const m=document.createElement("div");m.className="footnote-format__overlay",m.style.display="none";const g=d.querySelector(".footnote-format__link"),f=d.querySelector(".footnote-link-input"),h=d.querySelector(".footnote-link-apply"),y=d.querySelector(".footnote-link-cancel");try{[].slice.call(d.querySelectorAll(".footnote-btn, .footnote-link-apply, .footnote-link-cancel")).forEac
1h(function(e){const t=e.getAttribute("title");t&&(e.setAttribute("data-title",t),e.removeAttribute("title"))})}catch(e){}let v=null,b=null;i(d.querySelector(".footnote-btn-link"),"click",function(){u.focus(),function(){try{const e=window.getSelection();e&&e.rangeCount&&(v=e.getRangeAt(0).cloneRange())}catch(e){}}(),function(){if(v&&!v.collapsed)try{const e=document.createElement("span");e.className="fn-temp-highlight",v.surroundContents(e),b=function(){if(e&&e.parentNode){const t=e.parentNode;for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}b=null}}catch(e){b=null}}(),m.parentNode!==u&&u.appendChild(m),m.style.display="block",g.style.display="block",f.focus()}),i(h,"click",s),i(y,"click",function(){g.style.display="none",m.style.display="none";try{m.parentNode===u&&u.removeChild(m)}catch(e){}if(b)try{b()}catch(e){}f.value="",u.focus(),r()}),i(f,"keydown",function(e){"Enter"===e.key&&(e.preventDefault(),s()),"Escape"===e.key&&(e.preventDefault(),y.click())}),i(m,"click",function(){y.click()})}const a="cap_"+Date.now()+"_"+Math.floor(1e4*Math.random()),s=['<div class="footnote-format" id="caption-format-',a,'">',' <div class="footnote-format__editor caption-editor__editor" contenteditable="true" data-placeholder="ÐведиÑе ÑекÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñи..."></div>',' <div class="footnote-format__toolbar" role="toolbar">',' <button type="button" class="footnote-btn footnote-btn-link" title="ÐÑÑавиÑÑ ÑÑÑлкÑ"><i class="df-editor-link"></i></button>'," </div>",' <div class="footnote-format__link" style="display:none;">',' <input type="text" class="footnote-link-input" placeholder="ÐобавÑÑе ÑÑÑлкÑ..." />',' <button class="footnote-link-apply" title="ÐÑимениÑÑ">â</button>',' <button class="footnote-link-cancel" title="ÐÑмена">Ã</button>'," </div>","</div>"].join("");var c=window.dialogLite({title:"ÐодпиÑÑ Ð¾Ð±Ð»Ð¾Ð¶ÐºÐ¸",className:"bootbox-prompt bootbox-footnote-editor bootbox-caption-editor",backdrop:!0,onEscape:!0,message:s,buttons:{cancel:{className:"ds-btn-default",label:"ÐÑмениÑÑ"},confirm:{label:"ÐÑÑавиÑÑ",className:"ds-btn-primary",callback:function(){try{var e=document.getElementById("caption-format-"+a),n=e&&e.querySelector(".footnote-format__editor"),i=n?n.innerHTML:"";i=t(i),o(i)}catch(e){o("")}}}}}),l=[];try{c&&c.el?c.el.addEventListener("shown.bs.modal",r):setTimeout(r,50)}catch(e){setTimeout(r,50)}})}}}])})()}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.