File tree Expand file tree Collapse file tree 1 file changed +24
-2
lines changed Expand file tree Collapse file tree 1 file changed +24
-2
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @template T
3
+ * @param {T } fn
4
+ * @returns {T }
5
+ */
6
+ function memoize ( fn ) {
7
+ const cache = new Map ( ) ;
8
+ return ( arg ) => {
9
+ let res = cache . get ( arg ) ;
10
+ if ( ! res ) {
11
+ res = fn ( arg ) ;
12
+ cache . set ( arg , res ) ;
13
+ }
14
+ return res ;
15
+ } ;
16
+ }
17
+
1
18
// DOM properties that should NOT have "px" added when numeric
2
19
export const IS_NON_DIMENSIONAL = / a c i t | e x (?: s | g | n | p | $ ) | r p h | g r i d | o w s | m n c | n t w | i n e [ c h ] | z o o | ^ o r d | ^ - - / i;
3
20
@@ -9,10 +26,15 @@ const tagsToReplace = {
9
26
'"' : '"'
10
27
} ;
11
28
const replaceTag = ( tag ) => tagsToReplace [ tag ] || tag ;
12
- export function encodeEntities ( s ) {
29
+
30
+ /**
31
+ * @param {any } s
32
+ * @returns {string }
33
+ */
34
+ export const encodeEntities = memoize ( ( s ) => {
13
35
if ( typeof s !== 'string' ) s = String ( s ) ;
14
36
return s . replace ( HTML_ENTITY_REG , replaceTag ) ;
15
- }
37
+ } ) ;
16
38
17
39
export let indent = ( s , char ) =>
18
40
String ( s ) . replace ( / ( \n + ) / g, '$1' + ( char || '\t' ) ) ;
You can’t perform that action at this time.
0 commit comments