@squiz/formatted-text-editor 0.0.0-rbv2-20240530041851 → 0.0.0-rbv2-20240606061755

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.
Files changed (140) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +3 -3
  3. package/coverage/clover.xml +0 -1544
  4. package/coverage/coverage-final.json +0 -74
  5. package/coverage/lcov-report/base.css +0 -224
  6. package/coverage/lcov-report/block-navigation.js +0 -87
  7. package/coverage/lcov-report/favicon.png +0 -0
  8. package/coverage/lcov-report/index.html +0 -911
  9. package/coverage/lcov-report/prettify.css +0 -1
  10. package/coverage/lcov-report/prettify.js +0 -2
  11. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  12. package/coverage/lcov-report/sorter.js +0 -196
  13. package/coverage/lcov-report/src/Editor/Editor.tsx.html +0 -436
  14. package/coverage/lcov-report/src/Editor/EditorContext.ts.html +0 -145
  15. package/coverage/lcov-report/src/Editor/index.html +0 -131
  16. package/coverage/lcov-report/src/EditorToolbar/FloatingToolbar.tsx.html +0 -271
  17. package/coverage/lcov-report/src/EditorToolbar/Toolbar.tsx.html +0 -265
  18. package/coverage/lcov-report/src/EditorToolbar/Tools/Bold/BoldButton.tsx.html +0 -178
  19. package/coverage/lcov-report/src/EditorToolbar/Tools/Bold/index.html +0 -116
  20. package/coverage/lcov-report/src/EditorToolbar/Tools/ClearFormatting/ClearFormattingButton.tsx.html +0 -229
  21. package/coverage/lcov-report/src/EditorToolbar/Tools/ClearFormatting/index.html +0 -116
  22. package/coverage/lcov-report/src/EditorToolbar/Tools/HorizontalLine/HorizontalLineButton.tsx.html +0 -187
  23. package/coverage/lcov-report/src/EditorToolbar/Tools/HorizontalLine/index.html +0 -116
  24. package/coverage/lcov-report/src/EditorToolbar/Tools/Image/Form/ImageForm.tsx.html +0 -688
  25. package/coverage/lcov-report/src/EditorToolbar/Tools/Image/Form/index.html +0 -116
  26. package/coverage/lcov-report/src/EditorToolbar/Tools/Image/ImageButton.tsx.html +0 -301
  27. package/coverage/lcov-report/src/EditorToolbar/Tools/Image/ImageModal.tsx.html +0 -181
  28. package/coverage/lcov-report/src/EditorToolbar/Tools/Image/index.html +0 -131
  29. package/coverage/lcov-report/src/EditorToolbar/Tools/Italic/ItalicButton.tsx.html +0 -178
  30. package/coverage/lcov-report/src/EditorToolbar/Tools/Italic/index.html +0 -116
  31. package/coverage/lcov-report/src/EditorToolbar/Tools/Link/Form/LinkForm.tsx.html +0 -508
  32. package/coverage/lcov-report/src/EditorToolbar/Tools/Link/Form/index.html +0 -116
  33. package/coverage/lcov-report/src/EditorToolbar/Tools/Link/LinkButton.tsx.html +0 -286
  34. package/coverage/lcov-report/src/EditorToolbar/Tools/Link/LinkModal.tsx.html +0 -196
  35. package/coverage/lcov-report/src/EditorToolbar/Tools/Link/RemoveLinkButton.tsx.html +0 -211
  36. package/coverage/lcov-report/src/EditorToolbar/Tools/Link/index.html +0 -146
  37. package/coverage/lcov-report/src/EditorToolbar/Tools/Lists/ListButtons.tsx.html +0 -127
  38. package/coverage/lcov-report/src/EditorToolbar/Tools/Lists/OrderedList/OrderedListButton.tsx.html +0 -175
  39. package/coverage/lcov-report/src/EditorToolbar/Tools/Lists/OrderedList/index.html +0 -116
  40. package/coverage/lcov-report/src/EditorToolbar/Tools/Lists/UnorderedList/UnorderedListButton.tsx.html +0 -175
  41. package/coverage/lcov-report/src/EditorToolbar/Tools/Lists/UnorderedList/index.html +0 -116
  42. package/coverage/lcov-report/src/EditorToolbar/Tools/Lists/index.html +0 -116
  43. package/coverage/lcov-report/src/EditorToolbar/Tools/Redo/RedoButton.tsx.html +0 -178
  44. package/coverage/lcov-report/src/EditorToolbar/Tools/Redo/index.html +0 -116
  45. package/coverage/lcov-report/src/EditorToolbar/Tools/Table/TableButton.tsx.html +0 -181
  46. package/coverage/lcov-report/src/EditorToolbar/Tools/Table/index.html +0 -116
  47. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/CenterAlign/CenterAlignButton.tsx.html +0 -178
  48. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/CenterAlign/index.html +0 -116
  49. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/JustifyAlign/JustifyAlignButton.tsx.html +0 -178
  50. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/JustifyAlign/index.html +0 -116
  51. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/LeftAlign/LeftAlignButton.tsx.html +0 -178
  52. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/LeftAlign/index.html +0 -116
  53. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/RightAlign/RightAlignButton.tsx.html +0 -178
  54. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/RightAlign/index.html +0 -116
  55. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/TextAlignButtons.tsx.html +0 -148
  56. package/coverage/lcov-report/src/EditorToolbar/Tools/TextAlign/index.html +0 -116
  57. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/CodeBlock/CodeBlockButton.tsx.html +0 -181
  58. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/CodeBlock/index.html +0 -116
  59. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/Heading/HeadingButton.tsx.html +0 -241
  60. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/Heading/index.html +0 -116
  61. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/Paragraph/ParagraphButton.tsx.html +0 -160
  62. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/Paragraph/index.html +0 -116
  63. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/Preformatted/PreformattedButton.tsx.html +0 -181
  64. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/Preformatted/index.html +0 -116
  65. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/TextTypeDropdown.tsx.html +0 -247
  66. package/coverage/lcov-report/src/EditorToolbar/Tools/TextType/index.html +0 -116
  67. package/coverage/lcov-report/src/EditorToolbar/Tools/Underline/UnderlineButton.tsx.html +0 -178
  68. package/coverage/lcov-report/src/EditorToolbar/Tools/Underline/index.html +0 -116
  69. package/coverage/lcov-report/src/EditorToolbar/Tools/Undo/UndoButton.tsx.html +0 -178
  70. package/coverage/lcov-report/src/EditorToolbar/Tools/Undo/index.html +0 -116
  71. package/coverage/lcov-report/src/EditorToolbar/index.html +0 -146
  72. package/coverage/lcov-report/src/EditorToolbar/index.ts.html +0 -91
  73. package/coverage/lcov-report/src/Extensions/ClearFormattingExtension/ClearFormattingExtension.ts.html +0 -256
  74. package/coverage/lcov-report/src/Extensions/ClearFormattingExtension/index.html +0 -116
  75. package/coverage/lcov-report/src/Extensions/CodeBlockExtension/CodeBlockExtension.ts.html +0 -187
  76. package/coverage/lcov-report/src/Extensions/CodeBlockExtension/index.html +0 -116
  77. package/coverage/lcov-report/src/Extensions/CommandsExtension/CommandsExtension.ts.html +0 -247
  78. package/coverage/lcov-report/src/Extensions/CommandsExtension/index.html +0 -116
  79. package/coverage/lcov-report/src/Extensions/Extensions.ts.html +0 -349
  80. package/coverage/lcov-report/src/Extensions/FetchUrlExtension/FetchUrlExtension.ts.html +0 -289
  81. package/coverage/lcov-report/src/Extensions/FetchUrlExtension/index.html +0 -116
  82. package/coverage/lcov-report/src/Extensions/ImageExtension/AssetImageExtension.ts.html +0 -412
  83. package/coverage/lcov-report/src/Extensions/ImageExtension/ImageExtension.ts.html +0 -142
  84. package/coverage/lcov-report/src/Extensions/ImageExtension/index.html +0 -131
  85. package/coverage/lcov-report/src/Extensions/LinkExtension/AssetLinkExtension.ts.html +0 -466
  86. package/coverage/lcov-report/src/Extensions/LinkExtension/LinkExtension.ts.html +0 -400
  87. package/coverage/lcov-report/src/Extensions/LinkExtension/common.ts.html +0 -115
  88. package/coverage/lcov-report/src/Extensions/LinkExtension/index.html +0 -146
  89. package/coverage/lcov-report/src/Extensions/PreformattedExtension/PreformattedExtension.ts.html +0 -340
  90. package/coverage/lcov-report/src/Extensions/PreformattedExtension/index.html +0 -116
  91. package/coverage/lcov-report/src/Extensions/UnsuportedExtension/UnsupportedNodeExtension.tsx.html +0 -325
  92. package/coverage/lcov-report/src/Extensions/UnsuportedExtension/index.html +0 -116
  93. package/coverage/lcov-report/src/Extensions/index.html +0 -116
  94. package/coverage/lcov-report/src/hooks/index.html +0 -161
  95. package/coverage/lcov-report/src/hooks/index.ts.html +0 -91
  96. package/coverage/lcov-report/src/hooks/useExpandedSelection.ts.html +0 -217
  97. package/coverage/lcov-report/src/hooks/useExtensionNames.ts.html +0 -130
  98. package/coverage/lcov-report/src/hooks/useFocus.ts.html +0 -268
  99. package/coverage/lcov-report/src/index.html +0 -116
  100. package/coverage/lcov-report/src/index.ts.html +0 -112
  101. package/coverage/lcov-report/src/ui/Button/Button.tsx.html +0 -190
  102. package/coverage/lcov-report/src/ui/Button/index.html +0 -116
  103. package/coverage/lcov-report/src/ui/CollapseBox/CollapseBox.tsx.html +0 -193
  104. package/coverage/lcov-report/src/ui/CollapseBox/index.html +0 -116
  105. package/coverage/lcov-report/src/ui/Fields/Checkbox/Checkbox.tsx.html +0 -232
  106. package/coverage/lcov-report/src/ui/Fields/Checkbox/index.html +0 -116
  107. package/coverage/lcov-report/src/ui/Fields/Input/Input.tsx.html +0 -160
  108. package/coverage/lcov-report/src/ui/Fields/Input/index.html +0 -116
  109. package/coverage/lcov-report/src/ui/Fields/InputContainer/InputContainer.tsx.html +0 -172
  110. package/coverage/lcov-report/src/ui/Fields/InputContainer/index.html +0 -116
  111. package/coverage/lcov-report/src/ui/Fields/MatrixAsset/MatrixAsset.tsx.html +0 -256
  112. package/coverage/lcov-report/src/ui/Fields/MatrixAsset/index.html +0 -116
  113. package/coverage/lcov-report/src/ui/Fields/Select/Select.tsx.html +0 -283
  114. package/coverage/lcov-report/src/ui/Fields/Select/index.html +0 -116
  115. package/coverage/lcov-report/src/ui/Modal/FormModal.tsx.html +0 -136
  116. package/coverage/lcov-report/src/ui/Modal/Modal.tsx.html +0 -397
  117. package/coverage/lcov-report/src/ui/Modal/index.html +0 -131
  118. package/coverage/lcov-report/src/ui/Tabs/Tabs.tsx.html +0 -208
  119. package/coverage/lcov-report/src/ui/Tabs/index.html +0 -116
  120. package/coverage/lcov-report/src/ui/ToolbarDropdown/ToolbarDropdown.tsx.html +0 -211
  121. package/coverage/lcov-report/src/ui/ToolbarDropdown/index.html +0 -116
  122. package/coverage/lcov-report/src/ui/ToolbarDropdownButton/ToolbarDropdownButton.tsx.html +0 -184
  123. package/coverage/lcov-report/src/ui/ToolbarDropdownButton/index.html +0 -116
  124. package/coverage/lcov-report/src/utils/converters/htmlToSquizNode/htmlToSquizNode.ts.html +0 -166
  125. package/coverage/lcov-report/src/utils/converters/htmlToSquizNode/index.html +0 -116
  126. package/coverage/lcov-report/src/utils/converters/mocks/index.html +0 -116
  127. package/coverage/lcov-report/src/utils/converters/mocks/squizNodeJson.mock.ts.html +0 -895
  128. package/coverage/lcov-report/src/utils/converters/remirrorNodeToSquizNode/index.html +0 -116
  129. package/coverage/lcov-report/src/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.ts.html +0 -976
  130. package/coverage/lcov-report/src/utils/converters/squizNodeToRemirrorNode/index.html +0 -116
  131. package/coverage/lcov-report/src/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.ts.html +0 -748
  132. package/coverage/lcov-report/src/utils/createToolbarPositioner.ts.html +0 -469
  133. package/coverage/lcov-report/src/utils/getCursorRect.ts.html +0 -100
  134. package/coverage/lcov-report/src/utils/getMarkNamesByGroup.ts.html +0 -106
  135. package/coverage/lcov-report/src/utils/getNodeNamesByGroup.ts.html +0 -106
  136. package/coverage/lcov-report/src/utils/getShortcutSymbol.ts.html +0 -97
  137. package/coverage/lcov-report/src/utils/index.html +0 -206
  138. package/coverage/lcov-report/src/utils/undefinedIfEmpty.ts.html +0 -94
  139. package/coverage/lcov-report/src/utils/validation.ts.html +0 -133
  140. package/coverage/lcov.info +0 -2737
@@ -1,976 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../../index.html">All files</a> / <a href="index.html">src/utils/converters/remirrorNodeToSquizNode</a> remirrorNodeToSquizNode.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">97.67% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>84/86</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">93.33% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>56/60</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>13/13</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">97.61% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>82/84</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">22x</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-yes">22x</span>
367
- <span class="cline-any cline-yes">22x</span>
368
- <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-neutral">&nbsp;</span>
378
- <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-neutral">&nbsp;</span>
380
- <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-yes">22x</span>
383
- <span class="cline-any cline-yes">65x</span>
384
- <span class="cline-any cline-yes">1x</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-yes">64x</span>
388
- <span class="cline-any cline-yes">1x</span>
389
- <span class="cline-any cline-neutral">&nbsp;</span>
390
- <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-yes">63x</span>
392
- <span class="cline-any cline-yes">62x</span>
393
- <span class="cline-any cline-neutral">&nbsp;</span>
394
- <span class="cline-any cline-yes">62x</span>
395
- <span class="cline-any cline-yes">1x</span>
396
- <span class="cline-any cline-neutral">&nbsp;</span>
397
- <span class="cline-any cline-neutral">&nbsp;</span>
398
- <span class="cline-any cline-yes">61x</span>
399
- <span class="cline-any cline-yes">1x</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-neutral">&nbsp;</span>
402
- <span class="cline-any cline-yes">60x</span>
403
- <span class="cline-any cline-neutral">&nbsp;</span>
404
- <span class="cline-any cline-yes">59x</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-yes">2x</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-yes">22x</span>
412
- <span class="cline-any cline-yes">102x</span>
413
- <span class="cline-any cline-yes">102x</span>
414
- <span class="cline-any cline-yes">102x</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-neutral">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-neutral">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-yes">102x</span>
425
- <span class="cline-any cline-yes">6x</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-yes">102x</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-yes">22x</span>
432
- <span class="cline-any cline-yes">102x</span>
433
- <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-yes">102x</span>
435
- <span class="cline-any cline-yes">14x</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-yes">1x</span>
438
- <span class="cline-any cline-yes">1x</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-yes">102x</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-yes">22x</span>
446
- <span class="cline-any cline-yes">16x</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-yes">16x</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-yes">65x</span>
451
- <span class="cline-any cline-yes">34x</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">16x</span>
458
- <span class="cline-any cline-yes">6x</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-yes">16x</span>
463
- <span class="cline-any cline-yes">12x</span>
464
- <span class="cline-any cline-yes">3x</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-yes">16x</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-yes">22x</span>
472
- <span class="cline-any cline-yes">91x</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-yes">91x</span>
475
- <span class="cline-any cline-yes">102x</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-yes">90x</span>
479
- <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">22x</span>
482
- <span class="cline-any cline-yes">102x</span>
483
- <span class="cline-any cline-yes">102x</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-yes">102x</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-yes">14x</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-neutral">&nbsp;</span>
495
- <span class="cline-any cline-yes">102x</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-neutral">&nbsp;</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-yes">102x</span>
503
- <span class="cline-any cline-yes">60x</span>
504
- <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-yes">102x</span>
514
- <span class="cline-any cline-yes">1x</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-neutral">&nbsp;</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-yes">102x</span>
523
- <span class="cline-any cline-yes">14x</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-yes">101x</span>
527
- <span class="cline-any cline-no">&nbsp;</span>
528
- <span class="cline-any cline-no">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-yes">101x</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-neutral">&nbsp;</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-neutral">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-yes">22x</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-yes">13x</span>
549
- <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-yes">13x</span>
551
- <span class="cline-any cline-yes">1x</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-yes">1x</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-yes">12x</span>
580
- <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-yes">22x</span>
586
- <span class="cline-any cline-yes">14x</span>
587
- <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-yes">4x</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-neutral">&nbsp;</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-yes">4x</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-neutral">&nbsp;</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-yes">1x</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-yes">2x</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-yes">2x</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-yes">1x</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-yes">22x</span>
647
- <span class="cline-any cline-yes">37x</span>
648
- <span class="cline-any cline-yes">1x</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-yes">36x</span>
654
- <span class="cline-any cline-yes">4x</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-yes">32x</span>
658
- <span class="cline-any cline-yes">31x</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { ProsemirrorNode, Fragment as ProsemirrorFragment, Mark, isDocNodeEmpty } from 'remirror';
661
- import { Attrs } from 'prosemirror-model';
662
- import { FORMATTED_TEXT_MODELS as FormattedTextModels } from '@squiz/dx-json-schema-lib';
663
- import { undefinedIfEmpty } from '../../undefinedIfEmpty';
664
- import { NodeName } from '../../../Extensions/Extensions';
665
- &nbsp;
666
- type Fragment = ProsemirrorFragment &amp; {
667
- content?: Fragment[];
668
- };
669
- &nbsp;
670
- type FormattingOptions = FormattedTextModels.v1.FormattingOptions;
671
- type FontOptions = FormattedTextModels.v1.FormattedNodeFontProperties;
672
- type FormattedText = FormattedTextModels.v1.FormattedText;
673
- type FormattedNode = FormattedTextModels.v1.FormattedNodes;
674
- type FormattedNodeFontProperties = FormattedTextModels.v1.FormattedNodeFontProperties;
675
- type FormattedNodeWithChildren = Extract&lt;FormattedNode, { children?: FormattedNode[] }&gt;;
676
- type RemirrorTextAlignment = Exclude&lt;Remirror.Attributes['nodeTextAlignment'], undefined&gt;;
677
- type FormattedTextAlignment = FormattingOptions['alignment'];
678
- &nbsp;
679
- export const resolveNodeTag = (node: ProsemirrorNode): string =&gt; {
680
- if (node.type.name === NodeName.Text) {
681
- return 'span';
682
- }
683
- &nbsp;
684
- if (node.type.name === NodeName.CodeBlock) {
685
- return 'code';
686
- }
687
- &nbsp;
688
- if (node.type.spec?.toDOM) {
689
- const domNode = node.type.spec.toDOM(node);
690
- &nbsp;
691
- if (domNode instanceof window.Node) {
692
- return domNode.nodeName.toLowerCase();
693
- }
694
- &nbsp;
695
- if (typeof domNode === 'object' &amp;&amp; 'dom' in domNode &amp;&amp; domNode.dom instanceof window.Node) {
696
- return domNode.dom.nodeName.toLowerCase();
697
- }
698
- &nbsp;
699
- if (domNode instanceof Array) {
700
- // [ tag, attributes, ...children ]
701
- return domNode[0].toLowerCase();
702
- }
703
- }
704
- &nbsp;
705
- throw new Error('Unexpected Remirror node encountered, cannot resolve tag.');
706
- };
707
- &nbsp;
708
- const resolveFormattingOptions = (node: ProsemirrorNode): FormattingOptions =&gt; {
709
- const formattingOptions: FormattingOptions = {};
710
- const textAlignment = node.attrs.nodeTextAlignment as RemirrorTextAlignment | undefined;
711
- const textAlignmentMap: Record&lt;RemirrorTextAlignment, FormattedTextAlignment&gt; = {
712
- none: undefined,
713
- left: 'left',
714
- right: 'right',
715
- center: 'center',
716
- start: 'left',
717
- end: 'right',
718
- justify: 'justify',
719
- };
720
- &nbsp;
721
- if (textAlignment &amp;&amp; textAlignmentMap[textAlignment]) {
722
- formattingOptions.alignment = textAlignmentMap[textAlignment];
723
- }
724
- &nbsp;
725
- return formattingOptions;
726
- };
727
- &nbsp;
728
- const resolveFontOptions = (node: ProsemirrorNode): FormattedNodeFontProperties =&gt; {
729
- const fontOptions: FontOptions = {};
730
- &nbsp;
731
- node.marks.forEach((mark) =&gt; {
732
- switch (mark.type.name) {
733
- case 'underline':
734
- fontOptions.underline = true;
735
- break;
736
- }
737
- });
738
- &nbsp;
739
- return fontOptions;
740
- };
741
- &nbsp;
742
- const transformAttributes = (attributes: Attrs, nodeType?: string): Record&lt;string, string&gt; =&gt; {
743
- const transformed: Record&lt;string, string&gt; = {};
744
- &nbsp;
745
- Object.keys(attributes).forEach((key) =&gt; {
746
- // Component service requires attributes to be a string, cast as needed.
747
- if (typeof attributes[key] === 'string' || typeof attributes[key] === 'number') {
748
- transformed[key] = String(attributes[key]);
749
- }
750
- });
751
- &nbsp;
752
- // We assign an attribute here for table controller cells as we need to differentiate
753
- // between them and regular table headers (th)
754
- if (nodeType === NodeName.TableControllerCell) {
755
- transformed[nodeType] = 'true';
756
- }
757
- &nbsp;
758
- // Another check here for more specific attributes for tables (column widths)
759
- if (nodeType === NodeName.TableControllerCell || nodeType === NodeName.tableCell) {
760
- if (Array.isArray(attributes.colwidth) &amp;&amp; attributes.colwidth[0]) {
761
- transformed.colwidth = String(attributes.colwidth[0]);
762
- }
763
- }
764
- &nbsp;
765
- return transformed;
766
- };
767
- &nbsp;
768
- const transformFragment = (fragment: Fragment): FormattedText =&gt; {
769
- const transformed: FormattedText = [];
770
- &nbsp;
771
- fragment.forEach((child) =&gt; {
772
- transformed.push(transformNode(child));
773
- });
774
- &nbsp;
775
- return transformed;
776
- };
777
- &nbsp;
778
- const transformNode = (node: ProsemirrorNode): FormattedNode =&gt; {
779
- const formattingOptions = undefinedIfEmpty(resolveFormattingOptions(node));
780
- const font = undefinedIfEmpty(resolveFontOptions(node));
781
- let attributes;
782
- &nbsp;
783
- if (
784
- node.type.name === NodeName.Image ||
785
- node.type.name === NodeName.CodeBlock ||
786
- node.type.name === NodeName.TableControllerCell ||
787
- node.type.name === NodeName.tableCell
788
- ) {
789
- attributes = transformAttributes(node.attrs, node.type.name);
790
- }
791
- &nbsp;
792
- let transformedNode: FormattedNode = { type: 'text', value: node.text || '' };
793
- &nbsp;
794
- // Squiz "text" nodes can't have formatting/font options but Remirror "text" nodes can.
795
- // If the node has formatting options wrap in a tag.
796
- // If the node isn't a text type assume it is a tag type and wrap in a tag.
797
- // If we pick the wrong tag here it will be corrected later as part of looping through the
798
- // non-font marks.
799
- if (node.type.name !== NodeName.Text || attributes || formattingOptions || font) {
800
- transformedNode = {
801
- type: 'tag',
802
- tag: resolveNodeTag(node),
803
- children: node.type.name === NodeName.Text ? [transformedNode] : transformFragment(node.content),
804
- attributes,
805
- formattingOptions,
806
- font,
807
- };
808
- }
809
- &nbsp;
810
- if (node.type.name === NodeName.AssetImage) {
811
- transformedNode = {
812
- type: 'matrix-image',
813
- matrixAssetId: node.attrs.matrixAssetId,
814
- matrixIdentifier: node.attrs.matrixIdentifier,
815
- matrixDomain: node.attrs.matrixDomain,
816
- };
817
- }
818
- &nbsp;
819
- node.marks.forEach((mark) =&gt; {
820
- transformedNode = transformMark(mark, transformedNode);
821
- });
822
- &nbsp;
823
- <span class="missing-if-branch" title="if path not taken" >I</span>if (node.type.name === NodeName.Unsupported) {
824
- const unsupportedNode = <span class="cstat-no" title="statement not covered" >node.attrs?.originalNode;</span>
825
- <span class="cstat-no" title="statement not covered" > return { ...unsupportedNode };</span>
826
- }
827
- &nbsp;
828
- return transformedNode;
829
- };
830
- &nbsp;
831
- /**
832
- * Merges 2 nodes together if they are compatible without losing any important details.
833
- * Otherwise will wrap the node.
834
- *
835
- * @param {FormattedNode} node
836
- * @param {FormattedNodeWithChildren} wrappingNode
837
- *
838
- * @return {FormattedNode}
839
- */
840
- const wrapNodeIfNeeded = (
841
- node: FormattedNode,
842
- wrappingNode: FormattedNodeWithChildren,
843
- copyFont: boolean = true,
844
- ): FormattedNode =&gt; {
845
- const wrappingNodeChildren = wrappingNode.children || <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
846
- &nbsp;
847
- if (node.type === 'tag' &amp;&amp; wrappingNode.type === 'tag' &amp;&amp; (node.tag === 'span' || node.tag === wrappingNode.tag)) {
848
- const nodeChildren = node.children || <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
849
- &nbsp;
850
- // if the node we are wrapping with is a DOM node, and the node being wrapped is
851
- // a plain looking DOM node merge the 2 nodes.
852
- return {
853
- ...node,
854
- ...wrappingNode,
855
- formattingOptions: undefinedIfEmpty({
856
- ...node.formattingOptions,
857
- ...wrappingNode.formattingOptions,
858
- }),
859
- attributes: undefinedIfEmpty({
860
- ...node.attributes,
861
- ...wrappingNode.attributes,
862
- }),
863
- font: undefinedIfEmpty(
864
- copyFont
865
- ? <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
866
- ...node.font,
867
- ...wrappingNode.font,
868
- }
869
- : {},
870
- ),
871
- children: [...nodeChildren, ...wrappingNodeChildren],
872
- };
873
- }
874
- &nbsp;
875
- // if the node we are wrapping or the wrapping nodes are not compatible merge them.
876
- return {
877
- ...wrappingNode,
878
- children: [node, ...wrappingNodeChildren],
879
- };
880
- };
881
- &nbsp;
882
- const transformMark = (mark: Mark, node: FormattedNode): FormattedNode =&gt; {
883
- switch (mark.type.name) {
884
- case 'bold':
885
- return wrapNodeIfNeeded(
886
- node,
887
- {
888
- type: 'tag',
889
- tag: 'strong',
890
- children: [],
891
- },
892
- false,
893
- );
894
- case 'italic':
895
- return wrapNodeIfNeeded(
896
- node,
897
- {
898
- type: 'tag',
899
- tag: 'em',
900
- children: [],
901
- },
902
- false,
903
- );
904
- case 'underline':
905
- return wrapNodeIfNeeded(node, {
906
- type: 'tag',
907
- tag: 'span',
908
- children: [],
909
- font: {
910
- underline: mark.type.name === 'underline',
911
- },
912
- });
913
- case 'link':
914
- return wrapNodeIfNeeded(
915
- node,
916
- {
917
- type: 'tag',
918
- tag: 'a',
919
- attributes: transformAttributes(mark.attrs),
920
- children: [],
921
- },
922
- false,
923
- );
924
- case 'assetLink':
925
- return wrapNodeIfNeeded(node, {
926
- type: 'link-to-matrix-asset',
927
- target: mark.attrs.target,
928
- matrixIdentifier: mark.attrs.matrixIdentifier,
929
- matrixDomain: mark.attrs.matrixDomain,
930
- matrixAssetId: mark.attrs.matrixAssetId,
931
- children: [],
932
- });
933
- }
934
- &nbsp;
935
- throw new Error(`Unsupported mark "${mark.type.name}" was applied to node.`);
936
- };
937
- &nbsp;
938
- /**
939
- * Converts Remirror node JSON structure to Squiz component JSON structure.
940
- * @param {ProsemirrorNode} node Remirror node to convert to component.
941
- * @returns {FormattedText} The converted Squiz component JSON.
942
- */
943
- export const remirrorNodeToSquizNode = (node: ProsemirrorNode): FormattedText | undefined =&gt; {
944
- if (node?.type?.name !== 'doc') {
945
- throw new Error('Unable to convert from Remirror to Node data structure, unexpected node provided.');
946
- }
947
- &nbsp;
948
- // Squiz FormattedText should be set to undefined
949
- // To allow validation on required values
950
- if (isDocNodeEmpty(node) || node.childCount === 0) {
951
- return undefined;
952
- }
953
- &nbsp;
954
- const transformedFragment = transformFragment(node.content);
955
- return transformedFragment;
956
- };
957
- &nbsp;</pre></td></tr></table></pre>
958
-
959
- <div class='push'></div><!-- for sticky footer -->
960
- </div><!-- /wrapper -->
961
- <div class='footer quiet pad2 space-top1 center small'>
962
- Code coverage generated by
963
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
964
- at 2024-05-30T00:51:19.393Z
965
- </div>
966
- <script src="../../../../prettify.js"></script>
967
- <script>
968
- window.onload = function () {
969
- prettyPrint();
970
- };
971
- </script>
972
- <script src="../../../../sorter.js"></script>
973
- <script src="../../../../block-navigation.js"></script>
974
- </body>
975
- </html>
976
-