{"version":3,"sources":["node_modules/nodebb-plugin-composer-default/static/lib/composer/preview.js"],"names":["define","preview","timeoutId","render","postContainer","callback","find","is","clearTimeout","textarea","setTimeout","socket","emit","val","err","$","addClass","html","window","trigger","matchScroll","length","diff","scrollHeight","height","scrollPercent","scrollTop","Math","max","handleToggler","env","utils","findBootstrapEnvironment","hidePreview","togglePreview","localStorage","setItem","showPreview","removeItem","show","previewContainer","toggleClass","writeContainer","showBtn","focus","toggle","hideBtn","on","getItem"],"mappings":"AAAA,aAIAA,OAAO,mBAAoB,WAC1B,IAAIC,KAEJ,IAAIC,EAAY,EAEhBD,EAAQE,OAAS,SAASC,EAAeC,GACxCA,EAAWA,GAAY,aACvB,IAAKD,EAAcE,KAAK,sBAAsBC,GAAG,YAAa,CAC7D,OAAOF,IAGR,GAAIH,EAAW,CACdM,aAAaN,GACbA,EAAY,EAEb,IAAIO,EAAWL,EAAcE,KAAK,YAElCJ,EAAYQ,WAAW,WACtBC,OAAOC,KAAK,iCAAkCH,EAASI,MAAO,SAASC,EAAKb,GAC3EC,EAAY,EACZ,GAAIY,EAAK,CACR,OAEDb,EAAUc,EAAE,QAAUd,EAAU,UAChCA,EAAQK,KAAK,4BAA4BU,SAAS,kBAClDZ,EAAcE,KAAK,YAAYW,KAAKhB,GACpCc,EAAEG,QAAQC,QAAQ,2BAClBd,OAEC,MAGJJ,EAAQmB,YAAc,SAAShB,GAC9B,IAAKA,EAAcE,KAAK,sBAAsBC,GAAG,YAAa,CAC7D,OAED,IAAIE,EAAWL,EAAcE,KAAK,YAClC,IAAIL,EAAUG,EAAcE,KAAK,YAEjC,GAAIG,EAASY,QAAUpB,EAAQoB,OAAQ,CACtC,IAAIC,EAAOb,EAAS,GAAGc,aAAed,EAASe,SAE/C,GAAIF,IAAS,EAAG,CACf,OAGD,IAAIG,EAAgBhB,EAASiB,YAAcJ,EAE3CrB,EAAQyB,UAAUC,KAAKC,IAAI3B,EAAQ,GAAGsB,aAAetB,EAAQuB,SAAU,GAAKC,KAI9ExB,EAAQ4B,cAAgB,SAASzB,GAChCH,EAAQ6B,IAAMC,MAAMC,2BAEpB,SAASC,IACRC,EAAc,OACd,GAAIjC,EAAQ6B,MAAQ,MAAQ7B,EAAQ6B,MAAO,KAAM,CAChDK,aAAaC,QAAQ,0BAA2B,OAIlD,SAASC,IACRH,EAAc,MACd,GAAIjC,EAAQ6B,MAAQ,MAAQ7B,EAAQ6B,MAAO,KAAM,CAChDK,aAAaG,WAAW,4BAI1B,SAASJ,EAAcK,GACtB,GAAItC,EAAQ6B,MAAQ,MAAQ7B,EAAQ6B,MAAO,KAAM,CAChDU,EAAiBC,YAAY,OAAQ,OACrCC,EAAeD,YAAY,YAAa,OACxCE,EAAQF,YAAY,OAAQ,MAC5BD,EAAiBC,YAAY,uBAAwBF,GACrDG,EAAeD,YAAY,sBAAuBF,GAGlD,GAAIA,EAAM,CACTtC,EAAQE,OAAOC,EAAe,mBAEzB,CACNoC,EAAiBC,YAAY,QAASF,GACtCG,EAAeD,YAAY,aAAcF,GACzCI,EAAQF,YAAY,OAAQF,GAC5BxB,EAAE,UAAU6B,QAGb3C,EAAQmB,YAAYhB,GAErBH,EAAQ4C,OAASX,EAEjB,IAAIS,EAAUvC,EAAcE,KAAK,oCAChCwC,EAAU1C,EAAcE,KAAK,sCAC7BkC,EAAmBzB,EAAE,sBACrB2B,EAAiB3B,EAAE,oBAEpB+B,EAAQC,GAAG,QAASd,GACpBU,EAAQI,GAAG,QAASV,GAEpB,GAAIF,aAAaa,QAAQ,6BAA+B/C,EAAQ6B,MAAQ,MAAQ7B,EAAQ6B,MAAO,MAAO,CACrGG,QACM,CACNI,MAIF,OAAOpC","file":"node_modules/nodebb-plugin-composer-default/static/lib/composer/preview.js","sourcesContent":["'use strict';\r\n\r\n/* globals define, socket*/\r\n\r\ndefine('composer/preview', function() {\r\n\tvar preview = {};\r\n\r\n\tvar timeoutId = 0;\r\n\r\n\tpreview.render = function(postContainer, callback) {\r\n\t\tcallback = callback || function() {};\r\n\t\tif (!postContainer.find('.preview-container').is(':visible')) {\r\n\t\t\treturn callback();\r\n\t\t}\r\n\r\n\t\tif (timeoutId) {\r\n\t\t\tclearTimeout(timeoutId);\r\n\t\t\ttimeoutId = 0;\r\n\t\t}\r\n\t\tvar textarea = postContainer.find('textarea');\r\n\r\n\t\ttimeoutId = setTimeout(function() {\r\n\t\t\tsocket.emit('plugins.composer.renderPreview', textarea.val(), function(err, preview) {\r\n\t\t\t\ttimeoutId = 0;\r\n\t\t\t\tif (err) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tpreview = $('
' + preview + '
');\r\n\t\t\t\tpreview.find('img:not(.not-responsive)').addClass('img-responsive');\r\n\t\t\t\tpostContainer.find('.preview').html(preview);\r\n\t\t\t\t$(window).trigger('action:composer.preview');\r\n\t\t\t\tcallback();\r\n\t\t\t});\r\n\t\t}, 250);\r\n\t};\r\n\r\n\tpreview.matchScroll = function(postContainer) {\r\n\t\tif (!postContainer.find('.preview-container').is(':visible')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar textarea = postContainer.find('textarea');\r\n\t\tvar preview = postContainer.find('.preview');\r\n\r\n\t\tif (textarea.length && preview.length) {\r\n\t\t\tvar diff = textarea[0].scrollHeight - textarea.height();\r\n\r\n\t\t\tif (diff === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar scrollPercent = textarea.scrollTop() / diff;\r\n\r\n\t\t\tpreview.scrollTop(Math.max(preview[0].scrollHeight - preview.height(), 0) * scrollPercent);\r\n\t\t}\r\n\t};\r\n\r\n\tpreview.handleToggler = function(postContainer) {\r\n\t\tpreview.env = utils.findBootstrapEnvironment();\r\n\r\n\t\tfunction hidePreview() {\r\n\t\t\ttogglePreview(false);\r\n\t\t\tif (preview.env !== 'xs' && preview.env !=='sm') {\r\n\t\t\t\tlocalStorage.setItem('composer:previewToggled', true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction showPreview() {\r\n\t\t\ttogglePreview(true);\r\n\t\t\tif (preview.env !== 'xs' && preview.env !=='sm') {\r\n\t\t\t\tlocalStorage.removeItem('composer:previewToggled');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction togglePreview(show) {\r\n\t\t\tif (preview.env === 'xs' || preview.env ==='sm') {\r\n\t\t\t\tpreviewContainer.toggleClass('hide', false);\r\n\t\t\t\twriteContainer.toggleClass('maximized', false);\r\n\t\t\t\tshowBtn.toggleClass('hide', true);\r\n\t\t\t\tpreviewContainer.toggleClass('hidden-xs hidden-sm', !show);\r\n\t\t\t\twriteContainer.toggleClass('hidden-xs hidden-sm', show);\r\n\r\n\t\t\t\t// Render preview once on mobile\r\n\t\t\t\tif (show) {\r\n\t\t\t\t\tpreview.render(postContainer, function () {});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tpreviewContainer.toggleClass('hide', !show);\r\n\t\t\t\twriteContainer.toggleClass('maximized', !show);\r\n\t\t\t\tshowBtn.toggleClass('hide', show);\r\n\t\t\t\t$('.write').focus();\r\n\t\t\t}\r\n\r\n\t\t\tpreview.matchScroll(postContainer);\r\n\t\t}\r\n\t\tpreview.toggle = togglePreview;\r\n\r\n\t\tvar showBtn = postContainer.find('.write-container .toggle-preview'),\r\n\t\t\thideBtn = postContainer.find('.preview-container .toggle-preview'),\r\n\t\t\tpreviewContainer = $('.preview-container'),\r\n\t\t\twriteContainer = $('.write-container');\r\n\r\n\t\thideBtn.on('click', hidePreview);\r\n\t\tshowBtn.on('click', showPreview);\r\n\r\n\t\tif (localStorage.getItem('composer:previewToggled') || (preview.env === 'xs' || preview.env ==='sm')) {\r\n\t\t\thidePreview();\r\n\t\t} else {\r\n\t\t\tshowPreview();\r\n\t\t}\r\n\t};\r\n\r\n\treturn preview;\r\n});"]}