@slickgrid-universal/utils 9.5.0 → 9.7.0

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 CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  [![Actions Status](https://github.com/ghiscoding/slickgrid-universal/workflows/CI%20Build/badge.svg)](https://github.com/ghiscoding/slickgrid-universal/actions)
9
9
  [![Cypress.io](https://img.shields.io/badge/tested%20with-Cypress-04C38E.svg)](https://www.cypress.io/)
10
- [![jest](https://jestjs.io/img/jest-badge.svg)](https://github.com/facebook/jest)
10
+ [![Vitest](https://img.shields.io/badge/tested%20with-vitest-fcc72b.svg?logo=vitest)](https://vitest.dev/)
11
11
  [![codecov](https://codecov.io/gh/ghiscoding/slickgrid-universal/branch/master/graph/badge.svg)](https://codecov.io/gh/ghiscoding/slickgrid-universal)
12
12
 
13
13
  ## Common Utils
@@ -69,19 +69,19 @@ export declare function findFirstAttribute(inputElm: Element | null | undefined,
69
69
  */
70
70
  export declare function findWidthOrDefault(inputWidth?: number | string | null, defaultValue?: string): string;
71
71
  /**
72
- * HTML encode using a plain <div>
73
- * Create a in-memory div, set it's inner text(which a div can encode)
74
- * then grab the encoded contents back out. The div never exists on the page.
72
+ * Simple function to encode the 5 most common HTML entities (`<`, `>`, `"`, `'`, `&`).
73
+ * For example: "<div>Hello</div>" => "&lt;div&gt;Hello&lt;/div&gt;"
75
74
  * @param {String} inputValue - input value to be encoded
76
75
  * @return {String}
77
76
  */
78
77
  export declare function htmlEncode(inputValue: string): string;
79
78
  /**
80
- * Decode text into html entity
81
- * @param string text: input text
82
- * @param string text: output text
79
+ * Simple function to decode the most common HTML entities.
80
+ * For example: "&lt;div&gt;Hablar espa&#241;ol? &#55358;&#56708;&lt;/div&gt;" => "<div>Hablar español? 🦄</div>"
81
+ * @param {String} inputValue - input value to be decoded
82
+ * @return {String}
83
83
  */
84
- export declare function htmlEntityDecode(input: string): string;
84
+ export declare function htmlDecode(input?: string | boolean | number): string;
85
85
  /**
86
86
  * Encode string to html special char and add html space padding defined
87
87
  * @param {string} inputStr - input string
@@ -1 +1 @@
1
- {"version":3,"file":"domUtils.d.ts","sourceRoot":"","sources":["../src/domUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domUtils.d.ts","sourceRoot":"","sources":["../src/domUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,iEAAiE;AACjE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAY1H;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,qBAAqB,EAAE,CAAC,SAAS,MAAM,qBAAqB,CAAC,CAAC,CAAC,EAC9G,OAAO,EAAE,CAAC,EACV,cAAc,CAAC,EAAE,IAAI,GAAG;KAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,EAC/E,cAAc,CAAC,EAAE,OAAO,GACvB,qBAAqB,CAAC,CAAC,CAAC,CAqB1B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,SAAK,GAAG,MAAM,EAAE,CAExD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAWrD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAKlG;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,gBAAgB,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,EACvD,IAAI,GAAE,WAAW,GAAG,WAAyB,GAC5C,MAAM,CAQR;AAED,8DAA8D;AAC9D,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,WAAW,GAAG,IAAI,EAC7B,QAAQ,EAAE,WAAW,GAAG,IAAI,GAE1B;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GACD,SAAS,CAYZ;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,mBAAmB,CAYvE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAa/E;AAED,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK9E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAU5G;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,YAAY,SAAS,GAAG,MAAM,CAErG;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAUrD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CASpE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAUrF;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAEzF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAKpE"}
package/dist/domUtils.js CHANGED
@@ -1,9 +1,10 @@
1
+ import { isDefined } from './utils.js';
1
2
  /** Calculate available space for each side of the DOM element */
2
3
  export function calculateAvailableSpace(element) {
3
4
  const vh = window.innerHeight || 0;
4
5
  const vw = window.innerWidth || 0;
5
6
  const { top: pageScrollTop, left: pageScrollLeft } = windowScrollPosition();
6
- const { top: elementOffsetTop, left: elementOffsetLeft } = getOffset(element) || {};
7
+ const { top: elementOffsetTop = 0, left: elementOffsetLeft = 0 } = getOffset(element) || {};
7
8
  const top = elementOffsetTop - pageScrollTop;
8
9
  const left = elementOffsetLeft - pageScrollLeft;
9
10
  const bottom = vh - (elementOffsetTop - pageScrollTop + element.clientHeight);
@@ -163,9 +164,8 @@ export function findWidthOrDefault(inputWidth, defaultValue = 'auto') {
163
164
  return (/^[0-9]+$/i.test(`${inputWidth}`) ? `${+inputWidth}px` : inputWidth) || defaultValue;
164
165
  }
165
166
  /**
166
- * HTML encode using a plain <div>
167
- * Create a in-memory div, set it's inner text(which a div can encode)
168
- * then grab the encoded contents back out. The div never exists on the page.
167
+ * Simple function to encode the 5 most common HTML entities (`<`, `>`, `"`, `'`, `&`).
168
+ * For example: "<div>Hello</div>" => "&lt;div&gt;Hello&lt;/div&gt;"
169
169
  * @param {String} inputValue - input value to be encoded
170
170
  * @return {String}
171
171
  */
@@ -181,14 +181,20 @@ export function htmlEncode(inputValue) {
181
181
  return (val || '').toString().replace(/[&<>"']/g, (s) => entityMap[s]);
182
182
  }
183
183
  /**
184
- * Decode text into html entity
185
- * @param string text: input text
186
- * @param string text: output text
184
+ * Simple function to decode the most common HTML entities.
185
+ * For example: "&lt;div&gt;Hablar espa&#241;ol? &#55358;&#56708;&lt;/div&gt;" => "<div>Hablar español? 🦄</div>"
186
+ * @param {String} inputValue - input value to be decoded
187
+ * @return {String}
187
188
  */
188
- export function htmlEntityDecode(input) {
189
- return input.replace(/&#(\d+);/g, (_match, dec) => {
190
- return String.fromCharCode(dec);
191
- });
189
+ export function htmlDecode(input) {
190
+ if (isDefined(input)) {
191
+ // 1. decode html entities (e.g. `&#39;` => single quote)
192
+ // 2. use textarea to decode the rest (e.g. html tags and symbols, `&lt;div&gt;` => `<div>`)
193
+ const txt = document.createElement('textarea');
194
+ txt.innerHTML = input.toString().replace(/&#(\d+);/g, (_, dec) => String.fromCharCode(dec));
195
+ return txt.value;
196
+ }
197
+ return '';
192
198
  }
193
199
  /**
194
200
  * Encode string to html special char and add html space padding defined
@@ -1 +1 @@
1
- {"version":3,"file":"domUtils.js","sourceRoot":"","sources":["../src/domUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domUtils.js","sourceRoot":"","sources":["../src/domUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slickgrid-universal/utils",
3
- "version": "9.5.0",
3
+ "version": "9.7.0",
4
4
  "description": "Common set of small utilities",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -31,9 +31,9 @@
31
31
  "url": "https://github.com/ghiscoding/slickgrid-universal/issues"
32
32
  },
33
33
  "browserslist": [
34
- "last 2 version",
34
+ "last 2 versions",
35
35
  "> 1%",
36
36
  "not dead"
37
37
  ],
38
- "gitHead": "054988f23786e6b5bf4b1182b6386e60faf57c70"
38
+ "gitHead": "fc107be1fe8fbfb77dedd5f71a9d656a6748b4a4"
39
39
  }
package/src/domUtils.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import type { HtmlElementPosition } from './models/interfaces.js';
2
2
  import type { InferDOMType } from './models/types.js';
3
+ import { isDefined } from './utils.js';
3
4
 
4
5
  /** Calculate available space for each side of the DOM element */
5
6
  export function calculateAvailableSpace(element: HTMLElement): { top: number; bottom: number; left: number; right: number } {
6
7
  const vh = window.innerHeight || 0;
7
8
  const vw = window.innerWidth || 0;
8
9
  const { top: pageScrollTop, left: pageScrollLeft } = windowScrollPosition();
9
- const { top: elementOffsetTop, left: elementOffsetLeft } = getOffset(element) || {};
10
+ const { top: elementOffsetTop = 0, left: elementOffsetLeft = 0 } = getOffset(element) || {};
10
11
 
11
12
  const top = elementOffsetTop - pageScrollTop;
12
13
  const left = elementOffsetLeft - pageScrollLeft;
@@ -200,9 +201,8 @@ export function findWidthOrDefault(inputWidth?: number | string | null, defaultV
200
201
  }
201
202
 
202
203
  /**
203
- * HTML encode using a plain <div>
204
- * Create a in-memory div, set it's inner text(which a div can encode)
205
- * then grab the encoded contents back out. The div never exists on the page.
204
+ * Simple function to encode the 5 most common HTML entities (`<`, `>`, `"`, `'`, `&`).
205
+ * For example: "<div>Hello</div>" => "&lt;div&gt;Hello&lt;/div&gt;"
206
206
  * @param {String} inputValue - input value to be encoded
207
207
  * @return {String}
208
208
  */
@@ -219,14 +219,20 @@ export function htmlEncode(inputValue: string): string {
219
219
  }
220
220
 
221
221
  /**
222
- * Decode text into html entity
223
- * @param string text: input text
224
- * @param string text: output text
222
+ * Simple function to decode the most common HTML entities.
223
+ * For example: "&lt;div&gt;Hablar espa&#241;ol? &#55358;&#56708;&lt;/div&gt;" => "<div>Hablar español? 🦄</div>"
224
+ * @param {String} inputValue - input value to be decoded
225
+ * @return {String}
225
226
  */
226
- export function htmlEntityDecode(input: string): string {
227
- return input.replace(/&#(\d+);/g, (_match, dec) => {
228
- return String.fromCharCode(dec);
229
- });
227
+ export function htmlDecode(input?: string | boolean | number): string {
228
+ if (isDefined(input)) {
229
+ // 1. decode html entities (e.g. `&#39;` => single quote)
230
+ // 2. use textarea to decode the rest (e.g. html tags and symbols, `&lt;div&gt;` => `<div>`)
231
+ const txt = document.createElement('textarea');
232
+ txt.innerHTML = input.toString().replace(/&#(\d+);/g, (_, dec) => String.fromCharCode(dec));
233
+ return txt.value;
234
+ }
235
+ return '';
230
236
  }
231
237
 
232
238
  /**