@toptal/picasso 26.15.0 → 26.15.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/picasso",
3
- "version": "26.15.0",
3
+ "version": "26.15.1",
4
4
  "description": "Toptal UI components library",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,94 @@
1
+ import { htmlToHast } from '..';
2
+ describe('html-to-hast', () => {
3
+ describe('valid HTML string', () => {
4
+ it('returns valid Picasso components', () => {
5
+ const html = '<h3>heading</h3><p>normal</p>';
6
+ const result = htmlToHast(html);
7
+ expect(result).toEqual({
8
+ type: 'root',
9
+ children: [
10
+ {
11
+ type: 'element',
12
+ tagName: 'h3',
13
+ properties: {},
14
+ children: [{ type: 'text', value: 'heading' }],
15
+ },
16
+ {
17
+ type: 'element',
18
+ tagName: 'p',
19
+ properties: {},
20
+ children: [{ type: 'text', value: 'normal' }],
21
+ },
22
+ ],
23
+ });
24
+ });
25
+ it('strips script tags', () => {
26
+ const html = `
27
+ <script>alert(2)</script>
28
+ <p><em>Foo</em></p>`;
29
+ const ast = htmlToHast(html);
30
+ expect(ast).toEqual({
31
+ type: 'root',
32
+ children: [
33
+ {
34
+ type: 'element',
35
+ tagName: 'p',
36
+ properties: {},
37
+ children: [
38
+ {
39
+ type: 'element',
40
+ tagName: 'em',
41
+ properties: {},
42
+ children: [{ type: 'text', value: 'Foo' }],
43
+ },
44
+ ],
45
+ },
46
+ ],
47
+ });
48
+ });
49
+ });
50
+ describe('when parsing HTML with a single container', () => {
51
+ it('returns an single starting node AST for a single paragraph', () => {
52
+ const html = '<p>Container</p>';
53
+ expect(htmlToHast(html)).toEqual({
54
+ type: 'root',
55
+ children: [
56
+ {
57
+ type: 'element',
58
+ tagName: 'p',
59
+ properties: {},
60
+ children: [{ type: 'text', value: 'Container' }],
61
+ },
62
+ ],
63
+ });
64
+ });
65
+ it('returns an single starting node AST for lists', () => {
66
+ const html = '<ul><li>Item 1</li><li>Item 2</li></ul>';
67
+ expect(htmlToHast(html)).toEqual({
68
+ type: 'root',
69
+ children: [
70
+ {
71
+ type: 'element',
72
+ tagName: 'ul',
73
+ properties: {},
74
+ children: [
75
+ {
76
+ type: 'element',
77
+ tagName: 'li',
78
+ properties: {},
79
+ children: [{ type: 'text', value: 'Item 1' }],
80
+ },
81
+ {
82
+ type: 'element',
83
+ tagName: 'li',
84
+ properties: {},
85
+ children: [{ type: 'text', value: 'Item 2' }],
86
+ },
87
+ ],
88
+ },
89
+ ],
90
+ });
91
+ });
92
+ });
93
+ });
94
+ //# sourceMappingURL=html-to-hast.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-to-hast.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/html-to-hast.test.tsx"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ const htmlToAst = (html) => {
18
18
  const domHast = hastSanitize(hastFromDom(dom.body), hastSanitizeSchema);
19
19
  const ast = {
20
20
  type: 'root',
21
- children: domHast.children,
21
+ children: domHast.type === 'root' ? domHast.children : [domHast],
22
22
  };
23
23
  return ast;
24
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"html-to-hast.js","sourceRoot":"","sources":["../../src/utils/html-to-hast.ts"],"names":[],"mappings":"AAAA,OAAO,YAAwB,MAAM,oBAAoB,CAAA;AACzD,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAI5C,MAAM,CAAC,MAAM,kBAAkB,GAAW;IACxC,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE;QACT,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;KACjB;IACD,UAAU,EAAE;QACV,GAAG,EAAE,EAAE;QACP,CAAC,EAAE,CAAC,MAAM,CAAC;KACZ;IACD,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IAClE,KAAK,EAAE,CAAC,QAAQ,CAAC;CAClB,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;IACjC,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAG,YAAY,CAC1B,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EACrB,kBAAkB,CACJ,CAAA;IAEhB,MAAM,GAAG,GAAY;QACnB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"html-to-hast.js","sourceRoot":"","sources":["../../src/utils/html-to-hast.ts"],"names":[],"mappings":"AAAA,OAAO,YAAwB,MAAM,oBAAoB,CAAA;AACzD,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAI5C,MAAM,CAAC,MAAM,kBAAkB,GAAW;IACxC,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE;QACT,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;KACjB;IACD,UAAU,EAAE;QACV,GAAG,EAAE,EAAE;QACP,CAAC,EAAE,CAAC,MAAM,CAAC;KACZ;IACD,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;IAClE,KAAK,EAAE,CAAC,QAAQ,CAAC;CAClB,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;IACjC,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAEtD,CAAA;IAEhB,MAAM,GAAG,GAAY;QACnB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;KACjE,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,eAAe,SAAS,CAAA"}