@timshel_npm/maildev 3.2.17 → 3.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/app/components/angular/angular.js +5537 -3622
- package/dist/app/components/angular/angular.min.js +213 -196
- package/dist/app/components/angular/angular.min.js.map +4 -4
- package/dist/app/components/angular-cookies/angular-cookies.js +183 -179
- package/dist/app/components/angular-cookies/angular-cookies.min.js +5 -5
- package/dist/app/components/angular-cookies/angular-cookies.min.js.map +7 -7
- package/dist/app/components/angular-resource/angular-resource.js +129 -48
- package/dist/app/components/angular-resource/angular-resource.min.js +8 -7
- package/dist/app/components/angular-resource/angular-resource.min.js.map +3 -3
- package/dist/app/components/angular-route/angular-route.js +246 -216
- package/dist/app/components/angular-route/angular-route.min.js +9 -9
- package/dist/app/components/angular-route/angular-route.min.js.map +2 -2
- package/dist/app/components/angular-sanitize/angular-sanitize.js +122 -90
- package/dist/app/components/angular-sanitize/angular-sanitize.min.js +10 -9
- package/dist/app/components/angular-sanitize/angular-sanitize.min.js.map +3 -3
- package/dist/app/components/socket.io/socket.io.min.js +3 -3
- package/dist/app/index.html +13 -14
- package/dist/app/styles/style.css +998 -37
- package/dist/app/views/item.html +64 -82
- package/package.json +11 -12
- package/dist/app/webfonts/fa-brands-400.eot +0 -0
- package/dist/app/webfonts/fa-brands-400.svg +0 -3717
- package/dist/app/webfonts/fa-brands-400.ttf +0 -0
- package/dist/app/webfonts/fa-brands-400.woff +0 -0
- package/dist/app/webfonts/fa-brands-400.woff2 +0 -0
- package/dist/app/webfonts/fa-regular-400.eot +0 -0
- package/dist/app/webfonts/fa-regular-400.svg +0 -801
- package/dist/app/webfonts/fa-regular-400.ttf +0 -0
- package/dist/app/webfonts/fa-regular-400.woff +0 -0
- package/dist/app/webfonts/fa-regular-400.woff2 +0 -0
- package/dist/app/webfonts/fa-solid-900.eot +0 -0
- package/dist/app/webfonts/fa-solid-900.svg +0 -5028
- package/dist/app/webfonts/fa-solid-900.ttf +0 -0
- package/dist/app/webfonts/fa-solid-900.woff +0 -0
- package/dist/app/webfonts/fa-solid-900.woff2 +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/*
|
|
2
|
-
AngularJS v1.2.
|
|
2
|
+
AngularJS v1.2.32
|
|
3
3
|
(c) 2010-2014 Google, Inc. http://angularjs.org
|
|
4
4
|
License: MIT
|
|
5
5
|
*/
|
|
6
|
-
(function(
|
|
7
|
-
|
|
8
|
-
function(b,
|
|
9
|
-
["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
window.angular);
|
|
6
|
+
(function(n,e,A){'use strict';function x(s,g,h){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,w){function y(){p&&(p.remove(),p=null);k&&(k.$destroy(),k=null);l&&(h.leave(l,function(){p=null}),p=l,l=null)}function v(){var b=s.current&&s.current.locals;if(e.isDefined(b&&b.$template)){var b=a.$new(),d=s.current;l=w(b,function(d){h.enter(d,null,l||c,function(){!e.isDefined(t)||t&&!a.$eval(t)||g()});y()});k=d.scope=b;k.$emit("$viewContentLoaded");k.$eval(u)}else y()}
|
|
7
|
+
var k,l,p,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",v);v()}}}function z(e,g,h){return{restrict:"ECA",priority:-400,link:function(a,c){var b=h.current,f=b.locals;c.html(f.$template);var w=e(c.contents());b.controller&&(f.$scope=a,f=g(b.controller,f),b.controllerAs&&(a[b.controllerAs]=f),c.data("$ngControllerController",f),c.children().data("$ngControllerController",f));w(a)}}}n=e.module("ngRoute",["ng"]).provider("$route",function(){function s(a,c){return e.extend(new (e.extend(function(){},
|
|
8
|
+
{prototype:a})),c)}function g(a,e){var b=e.caseInsensitiveMatch,f={originalPath:a,regexp:a},h=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,e,b,c){a="?"===c?c:null;c="*"===c?c:null;h.push({name:b,optional:!!a});e=e||"";return""+(a?"":e)+"(?:"+(a?e:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=RegExp("^"+a+"$",b?"i":"");return f}var h={};this.when=function(a,c){h[a]=e.extend({reloadOnSearch:!0},c,a&&g(a,c));if(a){var b=
|
|
9
|
+
"/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";h[b]=e.extend({redirectTo:a},g(b,c))}return this};this.otherwise=function(a){this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(a,c,b,f,g,n,v,k){function l(){var d=p(),m=r.current;if(d&&m&&d.$$route===m.$$route&&e.equals(d.pathParams,m.pathParams)&&!d.reloadOnSearch&&!u)m.params=d.params,e.copy(m.params,b),a.$broadcast("$routeUpdate",m);else if(d||m)u=!1,a.$broadcast("$routeChangeStart",
|
|
10
|
+
d,m),(r.current=d)&&d.redirectTo&&(e.isString(d.redirectTo)?c.path(t(d.redirectTo,d.params)).search(d.params).replace():c.url(d.redirectTo(d.pathParams,c.path(),c.search())).replace()),f.when(d).then(function(){if(d){var a=e.extend({},d.resolve),c,b;e.forEach(a,function(d,c){a[c]=e.isString(d)?g.get(d):g.invoke(d)});e.isDefined(c=d.template)?e.isFunction(c)&&(c=c(d.params)):e.isDefined(b=d.templateUrl)&&(e.isFunction(b)&&(b=b(d.params)),b=k.getTrustedResourceUrl(b),e.isDefined(b)&&(d.loadedTemplateUrl=
|
|
11
|
+
b,c=n.get(b,{cache:v}).then(function(a){return a.data})));e.isDefined(c)&&(a.$template=c);return f.all(a)}}).then(function(c){d==r.current&&(d&&(d.locals=c,e.copy(d.params,b)),a.$broadcast("$routeChangeSuccess",d,m))},function(c){d==r.current&&a.$broadcast("$routeChangeError",d,m,c)})}function p(){var a,b;e.forEach(h,function(f,h){var q;if(q=!b){var g=c.path();q=f.keys;var l={};if(f.regexp)if(g=f.regexp.exec(g)){for(var k=1,p=g.length;k<p;++k){var n=q[k-1],r=g[k];n&&r&&(l[n.name]=r)}q=l}else q=null;
|
|
12
|
+
else q=null;q=a=q}q&&(b=s(f,{params:e.extend({},c.search(),a),pathParams:a}),b.$$route=f)});return b||h[null]&&s(h[null],{params:{},pathParams:{}})}function t(a,c){var b=[];e.forEach((a||"").split(":"),function(a,d){if(0===d)b.push(a);else{var e=a.match(/(\w+)(?:[?*])?(.*)/),f=e[1];b.push(c[f]);b.push(e[2]||"");delete c[f]}});return b.join("")}var u=!1,r={routes:h,reload:function(){u=!0;a.$evalAsync(l)}};a.$on("$locationChangeSuccess",l);return r}]});n.provider("$routeParams",function(){this.$get=
|
|
13
|
+
function(){return{}}});n.directive("ngView",x);n.directive("ngView",z);x.$inject=["$route","$anchorScroll","$animate"];z.$inject=["$compile","$controller","$route"]})(window,window.angular);
|
|
14
14
|
//# sourceMappingURL=angular-route.min.js.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"version":3,
|
|
3
3
|
"file":"angular-route.min.js",
|
|
4
4
|
"lineCount":13,
|
|
5
|
-
"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,
|
|
5
|
+
"mappings":"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",
|
|
6
6
|
"sources":["angular-route.js"],
|
|
7
|
-
"names":["window","angular","undefined","ngViewFactory","$route","$anchorScroll","$
|
|
7
|
+
"names":["window","angular","undefined","ngViewFactory","$route","$anchorScroll","$animate","link","scope","$element","attr","ctrl","$transclude","cleanupLastView","previousElement","remove","currentScope","$destroy","currentElement","leave","update","locals","current","isDefined","$template","newScope","$new","clone","enter","onNgViewEnter","autoScrollExp","$eval","$emit","onloadExp","autoscroll","onload","$on","ngViewFillContentFactory","$compile","$controller","html","contents","controller","$scope","controllerAs","data","children","ngRouteModule","module","provider","$RouteProvider","inherit","parent","extra","extend","pathRegExp","path","opts","insensitive","caseInsensitiveMatch","ret","keys","replace","_","slash","key","option","optional","star","push","regexp","RegExp","routes","when","this.when","route","redirectPath","length","substr","otherwise","this.otherwise","params","$get","$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce","updateRoute","next","parseRoute","last","$$route","equals","pathParams","reloadOnSearch","forceReload","copy","$broadcast","redirectTo","isString","interpolate","search","url","then","resolve","template","templateUrl","forEach","value","get","invoke","isFunction","getTrustedResourceUrl","loadedTemplateUrl","response","all","error","match","m","exec","on","i","len","val","name","string","result","split","segment","segmentMatch","join","reload","$evalAsync","$RouteParamsProvider","this.$get","directive","$inject"]
|
|
8
8
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license AngularJS v1.2.
|
|
2
|
+
* @license AngularJS v1.2.32
|
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
var $sanitizeMinErr = angular.$$minErr('$sanitize');
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* @ngdoc
|
|
11
|
+
* @ngdoc module
|
|
12
12
|
* @name ngSanitize
|
|
13
13
|
* @description
|
|
14
14
|
*
|
|
@@ -16,7 +16,6 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
|
|
|
16
16
|
*
|
|
17
17
|
* The `ngSanitize` module provides functionality to sanitize HTML.
|
|
18
18
|
*
|
|
19
|
-
* {@installModule sanitize}
|
|
20
19
|
*
|
|
21
20
|
* <div doc-module-components="ngSanitize"></div>
|
|
22
21
|
*
|
|
@@ -42,8 +41,8 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
|
|
|
42
41
|
|
|
43
42
|
/**
|
|
44
43
|
* @ngdoc service
|
|
45
|
-
* @name
|
|
46
|
-
* @function
|
|
44
|
+
* @name $sanitize
|
|
45
|
+
* @kind function
|
|
47
46
|
*
|
|
48
47
|
* @description
|
|
49
48
|
* The input is sanitized by parsing the html into tokens. All safe tokens (from a whitelist) are
|
|
@@ -58,20 +57,21 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
|
|
|
58
57
|
* @returns {string} Sanitized html.
|
|
59
58
|
*
|
|
60
59
|
* @example
|
|
61
|
-
<
|
|
62
|
-
<
|
|
60
|
+
<example module="sanitizeExample" deps="angular-sanitize.js">
|
|
61
|
+
<file name="index.html">
|
|
63
62
|
<script>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
63
|
+
angular.module('sanitizeExample', ['ngSanitize'])
|
|
64
|
+
.controller('ExampleController', ['$scope', '$sce', function($scope, $sce) {
|
|
65
|
+
$scope.snippet =
|
|
66
|
+
'<p style="color:blue">an html\n' +
|
|
67
|
+
'<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
|
|
68
|
+
'snippet</p>';
|
|
69
|
+
$scope.deliberatelyTrustDangerousSnippet = function() {
|
|
70
|
+
return $sce.trustAsHtml($scope.snippet);
|
|
71
|
+
};
|
|
72
|
+
}]);
|
|
73
73
|
</script>
|
|
74
|
-
<div ng-controller="
|
|
74
|
+
<div ng-controller="ExampleController">
|
|
75
75
|
Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
|
|
76
76
|
<table>
|
|
77
77
|
<tr>
|
|
@@ -103,37 +103,39 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
|
|
|
103
103
|
</tr>
|
|
104
104
|
</table>
|
|
105
105
|
</div>
|
|
106
|
-
</
|
|
107
|
-
<
|
|
106
|
+
</file>
|
|
107
|
+
<file name="protractor.js" type="protractor">
|
|
108
108
|
it('should sanitize the html snippet by default', function() {
|
|
109
|
-
expect(
|
|
109
|
+
expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
|
|
110
110
|
toBe('<p>an html\n<em>click here</em>\nsnippet</p>');
|
|
111
111
|
});
|
|
112
112
|
|
|
113
113
|
it('should inline raw snippet if bound to a trusted value', function() {
|
|
114
|
-
expect(
|
|
114
|
+
expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).
|
|
115
115
|
toBe("<p style=\"color:blue\">an html\n" +
|
|
116
116
|
"<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
|
|
117
117
|
"snippet</p>");
|
|
118
118
|
});
|
|
119
119
|
|
|
120
120
|
it('should escape snippet without any filter', function() {
|
|
121
|
-
expect(
|
|
121
|
+
expect(element(by.css('#bind-default div')).getInnerHtml()).
|
|
122
122
|
toBe("<p style=\"color:blue\">an html\n" +
|
|
123
123
|
"<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
|
|
124
124
|
"snippet</p>");
|
|
125
125
|
});
|
|
126
126
|
|
|
127
127
|
it('should update', function() {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
expect(
|
|
128
|
+
element(by.model('snippet')).clear();
|
|
129
|
+
element(by.model('snippet')).sendKeys('new <b onclick="alert(1)">text</b>');
|
|
130
|
+
expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
|
|
131
|
+
toBe('new <b>text</b>');
|
|
132
|
+
expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe(
|
|
131
133
|
'new <b onclick="alert(1)">text</b>');
|
|
132
|
-
expect(
|
|
134
|
+
expect(element(by.css('#bind-default div')).getInnerHtml()).toBe(
|
|
133
135
|
"new <b onclick=\"alert(1)\">text</b>");
|
|
134
136
|
});
|
|
135
|
-
</
|
|
136
|
-
</
|
|
137
|
+
</file>
|
|
138
|
+
</example>
|
|
137
139
|
*/
|
|
138
140
|
function $SanitizeProvider() {
|
|
139
141
|
this.$get = ['$$sanitizeUri', function($$sanitizeUri) {
|
|
@@ -157,14 +159,15 @@ function sanitizeText(chars) {
|
|
|
157
159
|
|
|
158
160
|
// Regular Expressions for parsing tags and attributes
|
|
159
161
|
var START_TAG_REGEXP =
|
|
160
|
-
|
|
161
|
-
END_TAG_REGEXP =
|
|
162
|
+
/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,
|
|
163
|
+
END_TAG_REGEXP = /^<\/\s*([\w:-]+)[^>]*>/,
|
|
162
164
|
ATTR_REGEXP = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,
|
|
163
165
|
BEGIN_TAG_REGEXP = /^</,
|
|
164
|
-
BEGING_END_TAGE_REGEXP =
|
|
166
|
+
BEGING_END_TAGE_REGEXP = /^<\//,
|
|
165
167
|
COMMENT_REGEXP = /<!--(.*?)-->/g,
|
|
166
168
|
DOCTYPE_REGEXP = /<!DOCTYPE([^>]*?)>/i,
|
|
167
169
|
CDATA_REGEXP = /<!\[CDATA\[(.*?)]]>/g,
|
|
170
|
+
SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
|
|
168
171
|
// Match everything outside of normal chars and " (quote character)
|
|
169
172
|
NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g;
|
|
170
173
|
|
|
@@ -206,12 +209,12 @@ var validElements = angular.extend({},
|
|
|
206
209
|
optionalEndTagElements);
|
|
207
210
|
|
|
208
211
|
//Attributes that have href and hence need to be sanitized
|
|
209
|
-
var uriAttrs = makeMap("background,cite,href,longdesc,src
|
|
212
|
+
var uriAttrs = makeMap("background,cite,href,longdesc,src");
|
|
210
213
|
var validAttrs = angular.extend({}, uriAttrs, makeMap(
|
|
211
214
|
'abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,'+
|
|
212
215
|
'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,'+
|
|
213
216
|
'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,'+
|
|
214
|
-
'scope,scrolling,shape,span,start,summary,target,title,type,'+
|
|
217
|
+
'scope,scrolling,shape,size,span,start,summary,target,title,type,'+
|
|
215
218
|
'valign,value,vspace,width'));
|
|
216
219
|
|
|
217
220
|
function makeMap(str) {
|
|
@@ -234,10 +237,18 @@ function makeMap(str) {
|
|
|
234
237
|
* @param {object} handler
|
|
235
238
|
*/
|
|
236
239
|
function htmlParser( html, handler ) {
|
|
237
|
-
|
|
240
|
+
if (typeof html !== 'string') {
|
|
241
|
+
if (html === null || typeof html === 'undefined') {
|
|
242
|
+
html = '';
|
|
243
|
+
} else {
|
|
244
|
+
html = '' + html;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
var index, chars, match, stack = [], last = html, text;
|
|
238
248
|
stack.last = function() { return stack[ stack.length - 1 ]; };
|
|
239
249
|
|
|
240
250
|
while ( html ) {
|
|
251
|
+
text = '';
|
|
241
252
|
chars = true;
|
|
242
253
|
|
|
243
254
|
// Make sure we're not in a script or style element
|
|
@@ -258,7 +269,7 @@ function htmlParser( html, handler ) {
|
|
|
258
269
|
match = html.match( DOCTYPE_REGEXP );
|
|
259
270
|
|
|
260
271
|
if ( match ) {
|
|
261
|
-
html = html.replace( match[0]
|
|
272
|
+
html = html.replace( match[0], '');
|
|
262
273
|
chars = false;
|
|
263
274
|
}
|
|
264
275
|
// end tag
|
|
@@ -276,16 +287,23 @@ function htmlParser( html, handler ) {
|
|
|
276
287
|
match = html.match( START_TAG_REGEXP );
|
|
277
288
|
|
|
278
289
|
if ( match ) {
|
|
279
|
-
|
|
280
|
-
match[
|
|
290
|
+
// We only have a valid start-tag if there is a '>'.
|
|
291
|
+
if ( match[4] ) {
|
|
292
|
+
html = html.substring( match[0].length );
|
|
293
|
+
match[0].replace( START_TAG_REGEXP, parseStartTag );
|
|
294
|
+
}
|
|
281
295
|
chars = false;
|
|
296
|
+
} else {
|
|
297
|
+
// no ending tag found --- this piece should be encoded as an entity.
|
|
298
|
+
text += '<';
|
|
299
|
+
html = html.substring(1);
|
|
282
300
|
}
|
|
283
301
|
}
|
|
284
302
|
|
|
285
303
|
if ( chars ) {
|
|
286
304
|
index = html.indexOf("<");
|
|
287
305
|
|
|
288
|
-
|
|
306
|
+
text += index < 0 ? html : html.substring( 0, index );
|
|
289
307
|
html = index < 0 ? "" : html.substring( index );
|
|
290
308
|
|
|
291
309
|
if (handler.chars) handler.chars( decodeEntities(text) );
|
|
@@ -365,25 +383,32 @@ function htmlParser( html, handler ) {
|
|
|
365
383
|
}
|
|
366
384
|
}
|
|
367
385
|
|
|
386
|
+
var hiddenPre=document.createElement("pre");
|
|
387
|
+
var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/;
|
|
368
388
|
/**
|
|
369
389
|
* decodes all entities into regular string
|
|
370
390
|
* @param value
|
|
371
391
|
* @returns {string} A string with decoded entities.
|
|
372
392
|
*/
|
|
373
|
-
var hiddenPre=document.createElement("pre");
|
|
374
393
|
function decodeEntities(value) {
|
|
375
|
-
if (!value) {
|
|
376
|
-
|
|
377
|
-
}
|
|
394
|
+
if (!value) { return ''; }
|
|
395
|
+
|
|
378
396
|
// Note: IE8 does not preserve spaces at the start/end of innerHTML
|
|
379
|
-
|
|
397
|
+
// so we must capture them and reattach them afterward
|
|
380
398
|
var parts = spaceRe.exec(value);
|
|
381
|
-
parts[
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
399
|
+
var spaceBefore = parts[1];
|
|
400
|
+
var spaceAfter = parts[3];
|
|
401
|
+
var content = parts[2];
|
|
402
|
+
if (content) {
|
|
403
|
+
hiddenPre.innerHTML=content.replace(/</g,"<");
|
|
404
|
+
// innerText depends on styling as it doesn't display hidden elements.
|
|
405
|
+
// Therefore, it's better to use textContent not to cause unnecessary
|
|
406
|
+
// reflows. However, IE<9 don't support textContent so the innerText
|
|
407
|
+
// fallback is necessary.
|
|
408
|
+
content = 'textContent' in hiddenPre ?
|
|
409
|
+
hiddenPre.textContent : hiddenPre.innerText;
|
|
385
410
|
}
|
|
386
|
-
return
|
|
411
|
+
return spaceBefore + content + spaceAfter;
|
|
387
412
|
}
|
|
388
413
|
|
|
389
414
|
/**
|
|
@@ -391,11 +416,16 @@ function decodeEntities(value) {
|
|
|
391
416
|
* resulting string can be safely inserted into attribute or
|
|
392
417
|
* element text.
|
|
393
418
|
* @param value
|
|
394
|
-
* @returns escaped text
|
|
419
|
+
* @returns {string} escaped text
|
|
395
420
|
*/
|
|
396
421
|
function encodeEntities(value) {
|
|
397
422
|
return value.
|
|
398
423
|
replace(/&/g, '&').
|
|
424
|
+
replace(SURROGATE_PAIR_REGEXP, function (value) {
|
|
425
|
+
var hi = value.charCodeAt(0);
|
|
426
|
+
var low = value.charCodeAt(1);
|
|
427
|
+
return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
|
|
428
|
+
}).
|
|
399
429
|
replace(NON_ALPHANUMERIC_REGEXP, function(value){
|
|
400
430
|
return '&#' + value.charCodeAt(0) + ';';
|
|
401
431
|
}).
|
|
@@ -467,8 +497,8 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
|
|
|
467
497
|
|
|
468
498
|
/**
|
|
469
499
|
* @ngdoc filter
|
|
470
|
-
* @name
|
|
471
|
-
* @function
|
|
500
|
+
* @name linky
|
|
501
|
+
* @kind function
|
|
472
502
|
*
|
|
473
503
|
* @description
|
|
474
504
|
* Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and
|
|
@@ -484,20 +514,21 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
|
|
|
484
514
|
<span ng-bind-html="linky_expression | linky"></span>
|
|
485
515
|
*
|
|
486
516
|
* @example
|
|
487
|
-
<
|
|
488
|
-
<
|
|
517
|
+
<example module="linkyExample" deps="angular-sanitize.js">
|
|
518
|
+
<file name="index.html">
|
|
489
519
|
<script>
|
|
490
|
-
|
|
491
|
-
$scope
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
520
|
+
angular.module('linkyExample', ['ngSanitize'])
|
|
521
|
+
.controller('ExampleController', ['$scope', function($scope) {
|
|
522
|
+
$scope.snippet =
|
|
523
|
+
'Pretty text with some links:\n'+
|
|
524
|
+
'http://angularjs.org/,\n'+
|
|
525
|
+
'mailto:us@somewhere.org,\n'+
|
|
526
|
+
'another@somewhere.org,\n'+
|
|
527
|
+
'and one more: ftp://127.0.0.1/.';
|
|
528
|
+
$scope.snippetWithTarget = 'http://angularjs.org/';
|
|
529
|
+
}]);
|
|
499
530
|
</script>
|
|
500
|
-
<div ng-controller="
|
|
531
|
+
<div ng-controller="ExampleController">
|
|
501
532
|
Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
|
|
502
533
|
<table>
|
|
503
534
|
<tr>
|
|
@@ -529,43 +560,44 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
|
|
|
529
560
|
<td><div ng-bind="snippet"></div></td>
|
|
530
561
|
</tr>
|
|
531
562
|
</table>
|
|
532
|
-
</
|
|
533
|
-
<
|
|
563
|
+
</file>
|
|
564
|
+
<file name="protractor.js" type="protractor">
|
|
534
565
|
it('should linkify the snippet with urls', function() {
|
|
535
|
-
expect(
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
'<a href="mailto:another@somewhere.org">another@somewhere.org</a>, ' +
|
|
540
|
-
'and one more: <a href="ftp://127.0.0.1/">ftp://127.0.0.1/</a>.');
|
|
566
|
+
expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
|
|
567
|
+
toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +
|
|
568
|
+
'another@somewhere.org, and one more: ftp://127.0.0.1/.');
|
|
569
|
+
expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);
|
|
541
570
|
});
|
|
542
571
|
|
|
543
|
-
it
|
|
544
|
-
expect(
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
"another@somewhere.org,\n" +
|
|
549
|
-
"and one more: ftp://127.0.0.1/.");
|
|
572
|
+
it('should not linkify snippet without the linky filter', function() {
|
|
573
|
+
expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).
|
|
574
|
+
toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +
|
|
575
|
+
'another@somewhere.org, and one more: ftp://127.0.0.1/.');
|
|
576
|
+
expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);
|
|
550
577
|
});
|
|
551
578
|
|
|
552
579
|
it('should update', function() {
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
580
|
+
element(by.model('snippet')).clear();
|
|
581
|
+
element(by.model('snippet')).sendKeys('new http://link.');
|
|
582
|
+
expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
|
|
583
|
+
toBe('new http://link.');
|
|
584
|
+
expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);
|
|
585
|
+
expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())
|
|
586
|
+
.toBe('new http://link.');
|
|
557
587
|
});
|
|
558
588
|
|
|
559
589
|
it('should work with the target property', function() {
|
|
560
|
-
expect(
|
|
561
|
-
|
|
590
|
+
expect(element(by.id('linky-target')).
|
|
591
|
+
element(by.binding("snippetWithTarget | linky:'_blank'")).getText()).
|
|
592
|
+
toBe('http://angularjs.org/');
|
|
593
|
+
expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');
|
|
562
594
|
});
|
|
563
|
-
</
|
|
564
|
-
</
|
|
595
|
+
</file>
|
|
596
|
+
</example>
|
|
565
597
|
*/
|
|
566
598
|
angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
|
|
567
599
|
var LINKY_URL_REGEXP =
|
|
568
|
-
/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,
|
|
600
|
+
/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"]/,
|
|
569
601
|
MAILTO_REGEXP = /^mailto:/;
|
|
570
602
|
|
|
571
603
|
return function(text, target) {
|
|
@@ -602,9 +634,9 @@ angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
|
|
|
602
634
|
html.push(target);
|
|
603
635
|
html.push('" ');
|
|
604
636
|
}
|
|
605
|
-
html.push('href="'
|
|
606
|
-
|
|
607
|
-
|
|
637
|
+
html.push('href="',
|
|
638
|
+
url.replace('"', '"'),
|
|
639
|
+
'">');
|
|
608
640
|
addText(text);
|
|
609
641
|
html.push('</a>');
|
|
610
642
|
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/*
|
|
2
|
-
AngularJS v1.2.
|
|
2
|
+
AngularJS v1.2.32
|
|
3
3
|
(c) 2010-2014 Google, Inc. http://angularjs.org
|
|
4
4
|
License: MIT
|
|
5
5
|
*/
|
|
6
|
-
(function(
|
|
7
|
-
if(0<=c){for(
|
|
8
|
-
a.replace(b[0],""),
|
|
9
|
-
"&").replace(
|
|
10
|
-
c(C(a))}}}var M=
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
(function(q,g,r){'use strict';function F(a){var d=[];t(d,g.noop).chars(a);return d.join("")}function l(a){var d={};a=a.split(",");var c;for(c=0;c<a.length;c++)d[a[c]]=!0;return d}function G(a,d){function c(a,b,c,h){b=g.lowercase(b);if(u[b])for(;f.last()&&v[f.last()];)e("",f.last());w[b]&&f.last()==b&&e("",b);(h=x[b]||!!h)||f.push(b);var n={};c.replace(H,function(a,b,d,c,e){n[b]=s(d||c||e||"")});d.start&&d.start(b,n,h)}function e(a,b){var c=0,e;if(b=g.lowercase(b))for(c=f.length-1;0<=c&&f[c]!=b;c--);
|
|
7
|
+
if(0<=c){for(e=f.length-1;e>=c;e--)d.end&&d.end(f[e]);f.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,f=[],n=a,h;for(f.last=function(){return f[f.length-1]};a;){h="";k=!0;if(f.last()&&y[f.last()])a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,b){b=b.replace(I,"$1").replace(J,"$1");d.chars&&d.chars(s(b));return""}),e("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(d.comment&&d.comment(a.substring(4,
|
|
8
|
+
b)),a=a.substring(b+3),k=!1);else if(z.test(a)){if(b=a.match(z))a=a.replace(b[0],""),k=!1}else if(K.test(a)){if(b=a.match(A))a=a.substring(b[0].length),b[0].replace(A,e),k=!1}else L.test(a)&&((b=a.match(B))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(B,c)),k=!1):(h+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),h+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),d.chars&&d.chars(s(h)))}if(a==n)throw M("badparse",a);n=a}e()}function s(a){if(!a)return"";var d=N.exec(a);a=d[1];var c=d[3];if(d=d[2])p.innerHTML=
|
|
9
|
+
d.replace(/</g,"<"),d="textContent"in p?p.textContent:p.innerText;return a+d+c}function C(a){return a.replace(/&/g,"&").replace(O,function(a){var c=a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(c-55296)+(a-56320)+65536)+";"}).replace(P,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"<").replace(/>/g,">")}function t(a,d){var c=!1,e=g.bind(a,a.push);return{start:function(a,k,f){a=g.lowercase(a);!c&&y[a]&&(c=a);c||!0!==D[a]||(e("<"),e(a),g.forEach(k,function(c,f){var m=
|
|
10
|
+
g.lowercase(f),k="img"===a&&"src"===m||"background"===m;!0!==Q[m]||!0===E[m]&&!d(c,k)||(e(" "),e(f),e('="'),e(C(c)),e('"'))}),e(f?"/>":">"))},end:function(a){a=g.lowercase(a);c||!0!==D[a]||(e("</"),e(a),e(">"));a==c&&(c=!1)},chars:function(a){c||e(C(a))}}}var M=g.$$minErr("$sanitize"),B=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,A=/^<\/\s*([\w:-]+)[^>]*>/,H=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,L=/^</,
|
|
11
|
+
K=/^<\//,I=/\x3c!--(.*?)--\x3e/g,z=/<!DOCTYPE([^>]*?)>/i,J=/<!\[CDATA\[(.*?)]]\x3e/g,O=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,P=/([^\#-~| |!])/g,x=l("area,br,col,hr,img,wbr");q=l("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");r=l("rp,rt");var w=g.extend({},r,q),u=g.extend({},q,l("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),v=g.extend({},r,l("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
|
|
12
|
+
y=l("script,style"),D=g.extend({},x,u,v,w),E=l("background,cite,href,longdesc,src"),Q=g.extend({},E,l("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width")),p=document.createElement("pre"),N=/^(\s*)([\s\S]*?)(\s*)$/;g.module("ngSanitize",[]).provider("$sanitize",
|
|
13
|
+
function(){this.$get=["$$sanitizeUri",function(a){return function(d){var c=[];G(d,t(c,function(c,b){return!/^unsafe/.test(a(c,b))}));return c.join("")}}]});g.module("ngSanitize").filter("linky",["$sanitize",function(a){var d=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"]/,c=/^mailto:/;return function(e,b){function k(a){a&&m.push(F(a))}function f(a,c){m.push("<a ");g.isDefined(b)&&(m.push('target="'),m.push(b),m.push('" '));m.push('href="',a.replace('"',"""),'">');k(c);m.push("</a>")}
|
|
14
|
+
if(!e)return e;for(var n,h=e,m=[],l,p;n=h.match(d);)l=n[0],n[2]==n[3]&&(l="mailto:"+l),p=n.index,k(h.substr(0,p)),f(l,n[0].replace(c,"")),h=h.substring(p+n[0].length);k(h);return a(m.join(""))}}])})(window,window.angular);
|
|
14
15
|
//# sourceMappingURL=angular-sanitize.min.js.map
|