forked from pc035860/angular-highlightjs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathangular-highlightjs.min.js
More file actions
6 lines (6 loc) · 4.45 KB
/
angular-highlightjs.min.js
File metadata and controls
6 lines (6 loc) · 4.45 KB
1
2
3
4
5
6
/*! angular-highlightjs
version: 0.7.1.1
build date: 2022-03-28
author: Chih-Hsuan Fan
https://github.com/pc035860/angular-highlightjs.git */
!function(e,n){"object"==typeof exports||"object"==typeof module&&module.exports?module.exports=n(require("angular"),require("highlight.js")):"function"==typeof define&&define.amd?define(["angular","hljs"],n):e.returnExports=n(e.angular,e.hljs)}(this,function(y,e){var n,t,i,r,c,l=y.module("hljs",[]);return l.provider("hljsService",function(){var n={};return{setOptions:function(e){y.extend(n,e)},getOptions:function(){return y.copy(n)},$get:function(){return(e.configure||y.noop)(n),e}}}),l.factory("hljsCache",["$cacheFactory",function(e){return e("hljsCache")}]),l.controller("HljsCtrl",["hljsCache","hljsService","$interpolate","$window",function(r,c,l,i){var o,u,h,s,a=this,f=null,g=null,p=null,d=!1,j=null,v=null,m=e(l.startSymbol())+"((.|\\s)+?)"+e(l.endSymbol()),$="∫";function e(e,n){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,n?"\\\\$&":"\\$&")}a.init=function(e){f=e},a.setInterpolateScope=function(e){d=e,p&&a.highlight(p)},a.setLanguage=function(e){g=e,p&&a.highlight(p)},a.highlightCallback=function(e){v=e},a._highlight=function(e){var n,t,i;f&&(p=e,d&&(e=(t=function(e){var n,t=[],i=new RegExp(m,"g"),r="",c=0;for(;null!==(n=i.exec(e));)r+=e.substring(c,n.index)+$,c=n.index+n[0].length,t.push(n[0]);return{code:r+=e.substr(c),tokens:t}}(e)).code),g?(i=a._cacheKey(g,!!d,e),(n=r.get(i))||(n=c.highlight(g,c.fixMarkup(e),!0),r.put(i,n))):(i=a._cacheKey(!!d,e),(n=r.get(i))||(n=c.highlightAuto(c.fixMarkup(e)),r.put(i,n))),e=n.value,d?((j||y.noop)(),t&&(e=function(e,n){var t,i=new RegExp($,"g"),r="",c=0;for(;null!==(t=i.exec(e));)r+=e.substring(c,t.index)+n.shift(),c=t.index+t[0].length;return r+=e.substr(c)}(e,t.tokens)),i=l(e),j=d.$watch(i,function(e,n){e!==n&&f.html(e)}),d.$apply(),f.html(i(d))):f.html(e),f.addClass(n.language),null!==v&&y.isFunction(v)&&v())},a.highlight=(o=a._highlight,u=17,function(){var e=this,n=arguments,t=h&&!s;i.clearTimeout(s),s=i.setTimeout(function(){s=null,h||o.apply(e,n)},u),t&&o.apply(e,n)}),a.clear=function(){f&&(p=null,f.text(""))},a.release=function(){d=f=null,(j||y.noop)(),j=null},a._cacheKey=function(){return Array.prototype.slice.call(arguments).join("!angular-highlightjs!")}}]),t=function(r){return function(){return{require:"?hljs",restrict:"A",link:function(e,n,t,i){i&&t.$observe(r,function(e){y.isDefined(e)&&i.setLanguage(e)})}}}},n=function(r){return function(){return{require:"?hljs",restrict:"A",link:function(t,e,n,i){i&&t.$watch(n[r],function(e,n){!e&&e===n||i.setInterpolateScope(e?t:null)})}}}},i=function(r){return function(){return{require:"?hljs",restrict:"A",link:function(e,n,t,i){i&&e.$watch(t[r],function(e,n){e?i.highlight(e):i.clear()})}}}},r=function(r){return["$http","$templateCache","$q",function(l,o,u){return{require:"?hljs",restrict:"A",compile:function(e,n,t){var i=n[r];return function(e,n,t,r){var c=0;r&&e.$watch(i,function(e){var n,t,i=++c;e&&y.isString(e)?((t=o.get(e))||(n=u.defer(),l.get(e,{cache:o,transformResponse:function(e,n){return e}}).then(function(e){i===c&&n.resolve(e)}).catch(function(){i===c&&r.clear(),n.resolve()}),t=n.promise),u.when(t).then(function(e){e&&(y.isArray(e)?e=e[1]:y.isObject(e)&&(e=e.data),e=e.replace(/^(\r\n|\r|\n)/,""),r.highlight(e))})):r.clear()})}}}}]},(c=l).directive("hljs",["$parse",function(a){return{restrict:"EA",controller:"HljsCtrl",compile:function(e,n,t){var h=e[0].innerHTML.replace(/^(\r\n|\r|\n)/,""),s=e[0].textContent.replace(/^(\r\n|\r|\n)/,"");return e.html('<pre><code class="hljs"></code></pre>'),function(e,n,t,i){c=t;var r,c,l,o,u=function(e){switch(e){case"escape":return y.isDefined(c.hljsEscape)?c.hljsEscape:c.escape;case"no-escape":return y.isDefined(c.hljsNoEscape)?c.hljsNoEscape:c.noEscape;case"onhighlight":return y.isDefined(c.hljsOnhighlight)?c.hljsOnhighlight:c.onhighlight}};y.isDefined(u("escape"))?r=a(u("escape")):y.isDefined(u("no-escape"))&&(r=a("false")),i.init(n.find("code")),u("onhighlight")&&i.highlightCallback(function(){e.$eval(u("onhighlight"))}),(h||s)&&(l=t,o=!0,y.forEach(["source","include"],function(e){l[e]&&(o=!1)}),o)&&(n=r&&!r(e)?s:h,i.highlight(n)),e.$on("$destroy",function(){i.release()})}}}}]),y.forEach(["interpolate","hljsInterpolate","compile","hljsCompile"],function(e){c.directive(e,n(e))}),y.forEach(["language","hljsLanguage"],function(e){c.directive(e,t(e))}),y.forEach(["source","hljsSource"],function(e){c.directive(e,i(e))}),y.forEach(["include","hljsInclude"],function(e){c.directive(e,r(e))}),"hljs"});