@undp/data-viz 2.1.9 → 2.2.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.
Files changed (462) hide show
  1. package/dist/AreaChart.cjs +1 -1
  2. package/dist/AreaChart.js +19 -19
  3. package/dist/AreaChart.js.map +1 -1
  4. package/dist/{Axis-CRyfcLjc.js → Axis-DoOqnt6g.js} +2 -2
  5. package/dist/{Axis-CRyfcLjc.js.map → Axis-DoOqnt6g.js.map} +1 -1
  6. package/dist/{Axis-DxRV2yMi.cjs → Axis-Dtjn-EgM.cjs} +2 -2
  7. package/dist/{Axis-DxRV2yMi.cjs.map → Axis-Dtjn-EgM.cjs.map} +1 -1
  8. package/dist/{AxisTitle-sS5bLLR7.cjs → AxisTitle-DV4n0RxE.cjs} +2 -2
  9. package/dist/{AxisTitle-sS5bLLR7.cjs.map → AxisTitle-DV4n0RxE.cjs.map} +1 -1
  10. package/dist/{AxisTitle-jeI7am8o.js → AxisTitle-VFq89Olw.js} +2 -2
  11. package/dist/{AxisTitle-jeI7am8o.js.map → AxisTitle-VFq89Olw.js.map} +1 -1
  12. package/dist/BarGraph.cjs +1 -1
  13. package/dist/BarGraph.js +24 -24
  14. package/dist/BarGraph.js.map +1 -1
  15. package/dist/BasicStatCard.cjs +1 -1
  16. package/dist/BasicStatCard.js +2 -2
  17. package/dist/BeeSwarmChart.cjs +1 -1
  18. package/dist/BeeSwarmChart.js +14 -14
  19. package/dist/BeeSwarmChart.js.map +1 -1
  20. package/dist/BiVariateChoroplethMap.cjs +1 -1
  21. package/dist/BiVariateChoroplethMap.cjs.map +1 -1
  22. package/dist/BiVariateChoroplethMap.js +48 -48
  23. package/dist/BiVariateChoroplethMap.js.map +1 -1
  24. package/dist/BulletChart.cjs +1 -1
  25. package/dist/BulletChart.js +22 -22
  26. package/dist/BulletChart.js.map +1 -1
  27. package/dist/ButterflyChart.cjs +1 -1
  28. package/dist/ButterflyChart.js +19 -19
  29. package/dist/ButterflyChart.js.map +1 -1
  30. package/dist/ChoroplethMap.cjs +1 -1
  31. package/dist/ChoroplethMap.cjs.map +1 -1
  32. package/dist/ChoroplethMap.js +51 -51
  33. package/dist/ChoroplethMap.js.map +1 -1
  34. package/dist/CirclePackingGraph.cjs +1 -1
  35. package/dist/CirclePackingGraph.js +4 -4
  36. package/dist/ColorLegend.cjs +1 -1
  37. package/dist/ColorLegend.js +2 -2
  38. package/dist/ColorLegendWithMouseOver.cjs +1 -1
  39. package/dist/ColorLegendWithMouseOver.js +2 -2
  40. package/dist/CopyTextButton.cjs +1 -16
  41. package/dist/CopyTextButton.cjs.map +1 -1
  42. package/dist/CopyTextButton.js +13 -31
  43. package/dist/CopyTextButton.js.map +1 -1
  44. package/dist/CsvDownloadButton.cjs +2 -20
  45. package/dist/CsvDownloadButton.cjs.map +1 -1
  46. package/dist/CsvDownloadButton.js +5 -26
  47. package/dist/CsvDownloadButton.js.map +1 -1
  48. package/dist/DataCards.cjs +1 -21
  49. package/dist/DataCards.cjs.map +1 -1
  50. package/dist/DataCards.js +18 -42
  51. package/dist/DataCards.js.map +1 -1
  52. package/dist/DataTable.cjs +1 -1
  53. package/dist/DataTable.js +6 -6
  54. package/dist/DataTable.js.map +1 -1
  55. package/dist/{DetailsModal-0Ry5nXiC.js → DetailsModal-BMCTgVsk.js} +4 -4
  56. package/dist/{DetailsModal-0Ry5nXiC.js.map → DetailsModal-BMCTgVsk.js.map} +1 -1
  57. package/dist/{DetailsModal-BN0HDFlV.cjs → DetailsModal-DHttOA80.cjs} +2 -2
  58. package/dist/{DetailsModal-BN0HDFlV.cjs.map → DetailsModal-DHttOA80.cjs.map} +1 -1
  59. package/dist/DifferenceLineChart.cjs +1 -1
  60. package/dist/DifferenceLineChart.js +22 -22
  61. package/dist/DifferenceLineChart.js.map +1 -1
  62. package/dist/DonutChart.cjs +1 -1
  63. package/dist/DonutChart.js +10 -10
  64. package/dist/DotDensityMap.cjs +1 -1
  65. package/dist/DotDensityMap.cjs.map +1 -1
  66. package/dist/DotDensityMap.js +78 -78
  67. package/dist/DotDensityMap.js.map +1 -1
  68. package/dist/{DropdownSelect-BbdPQa2k.js → DropdownSelect-D8rFbygC.js} +5 -33
  69. package/dist/{DropdownSelect-BbdPQa2k.js.map → DropdownSelect-D8rFbygC.js.map} +1 -1
  70. package/dist/{DropdownSelect-Doz3mCrM.cjs → DropdownSelect-NNpOs7DX.cjs} +2 -26
  71. package/dist/{DropdownSelect-Doz3mCrM.cjs.map → DropdownSelect-NNpOs7DX.cjs.map} +1 -1
  72. package/dist/DualAxisLineChart.cjs +1 -1
  73. package/dist/DualAxisLineChart.js +15 -15
  74. package/dist/DualAxisLineChart.js.map +1 -1
  75. package/dist/DumbbellChart.cjs +1 -1
  76. package/dist/DumbbellChart.js +22 -22
  77. package/dist/DumbbellChart.js.map +1 -1
  78. package/dist/{EmptyState-gLDRXBHm.cjs → EmptyState-CGeBqbmR.cjs} +2 -2
  79. package/dist/{EmptyState-gLDRXBHm.cjs.map → EmptyState-CGeBqbmR.cjs.map} +1 -1
  80. package/dist/EmptyState-tZBErBKF.js +15 -0
  81. package/dist/{EmptyState-C7ZXkZWd.js.map → EmptyState-tZBErBKF.js.map} +1 -1
  82. package/dist/ExcelDownloadButton.cjs +1 -1
  83. package/dist/ExcelDownloadButton.js +2 -2
  84. package/dist/FootNote.cjs +1 -1
  85. package/dist/FootNote.js +2 -2
  86. package/dist/GeoHubCompareMaps.cjs +1 -1
  87. package/dist/GeoHubCompareMaps.js +13 -13
  88. package/dist/GeoHubCompareMaps.js.map +1 -1
  89. package/dist/GeoHubMap.cjs +1 -1
  90. package/dist/GeoHubMap.js +8 -8
  91. package/dist/GeoHubMap.js.map +1 -1
  92. package/dist/GeoHubMapWithLayerSelection.cjs +1 -1
  93. package/dist/GeoHubMapWithLayerSelection.js +12 -12
  94. package/dist/GeoHubMapWithLayerSelection.js.map +1 -1
  95. package/dist/{GraphContainer-d8A46BK2.cjs → GraphContainer-B1EDxJ0S.cjs} +2 -2
  96. package/dist/{GraphContainer-d8A46BK2.cjs.map → GraphContainer-B1EDxJ0S.cjs.map} +1 -1
  97. package/dist/{GraphContainer-CRqzdKu2.js → GraphContainer-CF6ws3pd.js} +2 -2
  98. package/dist/{GraphContainer-CRqzdKu2.js.map → GraphContainer-CF6ws3pd.js.map} +1 -1
  99. package/dist/GraphDescription.cjs +1 -1
  100. package/dist/GraphDescription.js +2 -2
  101. package/dist/GraphEl-CBZdcvb7.cjs +2 -0
  102. package/dist/GraphEl-CBZdcvb7.cjs.map +1 -0
  103. package/dist/{GraphEl-Dyu_EIQb.js → GraphEl-DKrjuQNB.js} +79 -18
  104. package/dist/GraphEl-DKrjuQNB.js.map +1 -0
  105. package/dist/GraphFooter.cjs +1 -1
  106. package/dist/GraphFooter.js +2 -2
  107. package/dist/GraphHeader.cjs +1 -1
  108. package/dist/GraphHeader.js +1 -1
  109. package/dist/GraphTitle.cjs +1 -1
  110. package/dist/GraphTitle.js +2 -2
  111. package/dist/GriddedGraphs.cjs +1 -1
  112. package/dist/GriddedGraphs.d.ts +1 -1
  113. package/dist/GriddedGraphs.js +8 -8
  114. package/dist/GriddedGraphsFromConfig.cjs +1 -1
  115. package/dist/GriddedGraphsFromConfig.d.ts +1 -1
  116. package/dist/GriddedGraphsFromConfig.js +4 -4
  117. package/dist/GriddedGraphsFromConfig.js.map +1 -1
  118. package/dist/HeatMap.cjs +1 -1
  119. package/dist/HeatMap.js +14 -14
  120. package/dist/HeatMap.js.map +1 -1
  121. package/dist/Histogram.cjs +1 -1
  122. package/dist/Histogram.js +5 -5
  123. package/dist/Histogram.js.map +1 -1
  124. package/dist/HybridMap.cjs +1 -1
  125. package/dist/HybridMap.cjs.map +1 -1
  126. package/dist/HybridMap.js +48 -48
  127. package/dist/HybridMap.js.map +1 -1
  128. package/dist/ImageDownloadButton.cjs +1 -1
  129. package/dist/ImageDownloadButton.js +3 -3
  130. package/dist/LineChartWithConfidenceInterval.cjs +1 -1
  131. package/dist/LineChartWithConfidenceInterval.js +18 -18
  132. package/dist/LineChartWithConfidenceInterval.js.map +1 -1
  133. package/dist/LinearColorLegend.cjs +1 -1
  134. package/dist/LinearColorLegend.js +2 -2
  135. package/dist/{Modal-JW_IExO3.cjs → Modal-CaYa_TLE.cjs} +2 -2
  136. package/dist/{Modal-JW_IExO3.cjs.map → Modal-CaYa_TLE.cjs.map} +1 -1
  137. package/dist/{Modal-bMQA6bL_.js → Modal-Ch9wvKxF.js} +4 -4
  138. package/dist/{Modal-bMQA6bL_.js.map → Modal-Ch9wvKxF.js.map} +1 -1
  139. package/dist/MultiGraphDashboard.cjs +1 -1
  140. package/dist/MultiGraphDashboard.d.ts +1 -1
  141. package/dist/MultiGraphDashboard.js +5 -5
  142. package/dist/MultiGraphDashboardFromConfig.cjs +1 -1
  143. package/dist/MultiGraphDashboardFromConfig.d.ts +1 -1
  144. package/dist/MultiGraphDashboardFromConfig.js +4 -4
  145. package/dist/MultiGraphDashboardFromConfig.js.map +1 -1
  146. package/dist/MultiGraphDashboardWideToLongFormat.cjs +1 -1
  147. package/dist/MultiGraphDashboardWideToLongFormat.js +5 -5
  148. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +1 -1
  149. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +4 -4
  150. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js.map +1 -1
  151. package/dist/MultiLineAltChart.cjs +1 -1
  152. package/dist/MultiLineAltChart.js +17 -17
  153. package/dist/MultiLineAltChart.js.map +1 -1
  154. package/dist/MultiLineChart.cjs +1 -1
  155. package/dist/MultiLineChart.js +19 -19
  156. package/dist/MultiLineChart.js.map +1 -1
  157. package/dist/ParetoChart.cjs +1 -1
  158. package/dist/ParetoChart.js +15 -15
  159. package/dist/ParetoChart.js.map +1 -1
  160. package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
  161. package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +1 -1
  162. package/dist/PerformanceIntensiveMultiGraphDashboard.js +5 -5
  163. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.cjs +1 -1
  164. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +1 -1
  165. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.js +4 -4
  166. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.js.map +1 -1
  167. package/dist/PerformanceIntensiveScrollStory.cjs +1 -1
  168. package/dist/PerformanceIntensiveScrollStory.d.ts +1 -1
  169. package/dist/PerformanceIntensiveScrollStory.js +6 -6
  170. package/dist/PerformanceIntensiveScrollStory.js.map +1 -1
  171. package/dist/RadarChart.cjs +1 -1
  172. package/dist/RadarChart.cjs.map +1 -1
  173. package/dist/RadarChart.js +9 -9
  174. package/dist/{ReferenceLine-2XCwHXQ4.js → ReferenceLine-DgtoRgw0.js} +5 -5
  175. package/dist/ReferenceLine-DgtoRgw0.js.map +1 -0
  176. package/dist/{ReferenceLine-BH0qdf4R.cjs → ReferenceLine-M9aP3dj-.cjs} +2 -2
  177. package/dist/{ReferenceLine-BH0qdf4R.cjs.map → ReferenceLine-M9aP3dj-.cjs.map} +1 -1
  178. package/dist/{RegressionLine-BOTTNSrr.cjs → RegressionLine-Ci-Dh0w0.cjs} +2 -2
  179. package/dist/{RegressionLine-BOTTNSrr.cjs.map → RegressionLine-Ci-Dh0w0.cjs.map} +1 -1
  180. package/dist/{RegressionLine-DAcY2DjT.js → RegressionLine-D2aqeBKp.js} +6 -6
  181. package/dist/RegressionLine-D2aqeBKp.js.map +1 -0
  182. package/dist/SVGDownloadButton.cjs +1 -1
  183. package/dist/SVGDownloadButton.js +2 -2
  184. package/dist/SankeyChart.cjs +1 -1
  185. package/dist/SankeyChart.cjs.map +1 -1
  186. package/dist/SankeyChart.js +61 -67
  187. package/dist/SankeyChart.js.map +1 -1
  188. package/dist/ScatterPlot.cjs +1 -1
  189. package/dist/ScatterPlot.js +23 -23
  190. package/dist/ScatterPlot.js.map +1 -1
  191. package/dist/ScrollStory.cjs +1 -1
  192. package/dist/ScrollStory.d.ts +1 -1
  193. package/dist/ScrollStory.js +4 -4
  194. package/dist/ScrollStory.js.map +1 -1
  195. package/dist/SimpleLineChart.cjs +1 -1
  196. package/dist/SimpleLineChart.js +19 -19
  197. package/dist/SimpleLineChart.js.map +1 -1
  198. package/dist/SingleGraphDashboard.cjs +1 -1
  199. package/dist/SingleGraphDashboard.d.ts +1 -1
  200. package/dist/SingleGraphDashboard.js +9 -9
  201. package/dist/SingleGraphDashboardFromConfig.cjs +1 -1
  202. package/dist/SingleGraphDashboardFromConfig.d.ts +1 -1
  203. package/dist/SingleGraphDashboardFromConfig.js +4 -4
  204. package/dist/SingleGraphDashboardFromConfig.js.map +1 -1
  205. package/dist/SingleGraphDashboardGeoHubMaps.cjs +1 -1
  206. package/dist/SingleGraphDashboardGeoHubMaps.js +5 -5
  207. package/dist/SingleGraphDashboardGeoHubMaps.js.map +1 -1
  208. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.cjs +1 -1
  209. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.js +4 -4
  210. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.js.map +1 -1
  211. package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
  212. package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
  213. package/dist/SingleGraphDashboardThreeDGraphs.js +63 -70
  214. package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
  215. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.cjs +1 -1
  216. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.js +4 -4
  217. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.js.map +1 -1
  218. package/dist/SlopeChart.cjs +1 -1
  219. package/dist/SlopeChart.js +12 -12
  220. package/dist/SlopeChart.js.map +1 -1
  221. package/dist/{Source-DYMJRrsq.cjs → Source-B5AoSlsi.cjs} +2 -2
  222. package/dist/{Source-DYMJRrsq.cjs.map → Source-B5AoSlsi.cjs.map} +1 -1
  223. package/dist/{Source-DwTHB8fn.js → Source-F8EYCYkV.js} +4 -4
  224. package/dist/{Source-DwTHB8fn.js.map → Source-F8EYCYkV.js.map} +1 -1
  225. package/dist/Source.cjs +1 -1
  226. package/dist/Source.js +3 -3
  227. package/dist/SparkLine.cjs +1 -1
  228. package/dist/SparkLine.js +8 -8
  229. package/dist/SparkLine.js.map +1 -1
  230. package/dist/{Spinner-DVBnY6Vg.js → Spinner--r2RrJV8.js} +2 -2
  231. package/dist/{Spinner-DVBnY6Vg.js.map → Spinner--r2RrJV8.js.map} +1 -1
  232. package/dist/{Spinner-CQZcjzwd.cjs → Spinner-jTMOLuw_.cjs} +2 -2
  233. package/dist/{Spinner-CQZcjzwd.cjs.map → Spinner-jTMOLuw_.cjs.map} +1 -1
  234. package/dist/StatCardFromData.cjs +1 -1
  235. package/dist/StatCardFromData.js +2 -2
  236. package/dist/StripChart.cjs +1 -1
  237. package/dist/StripChart.js +10 -10
  238. package/dist/StripChart.js.map +1 -1
  239. package/dist/ThreeDGlobe.cjs +1 -1
  240. package/dist/ThreeDGlobe.js +13 -13
  241. package/dist/ThreeDGlobe.js.map +1 -1
  242. package/dist/ThresholdColorLegendWithMouseOver.cjs +1 -1
  243. package/dist/ThresholdColorLegendWithMouseOver.js +3 -3
  244. package/dist/ThresholdColorLegendWithMouseOver.js.map +1 -1
  245. package/dist/{Tooltip-uUdw6wJL.cjs → Tooltip-BLa2EfMs.cjs} +2 -2
  246. package/dist/{Tooltip-uUdw6wJL.cjs.map → Tooltip-BLa2EfMs.cjs.map} +1 -1
  247. package/dist/{Tooltip-Dj5eVppQ.js → Tooltip-BRnAz2Gv.js} +3 -3
  248. package/dist/{Tooltip-Dj5eVppQ.js.map → Tooltip-BRnAz2Gv.js.map} +1 -1
  249. package/dist/TreeMapGraph.cjs +1 -1
  250. package/dist/TreeMapGraph.js +10 -10
  251. package/dist/TreeMapGraph.js.map +1 -1
  252. package/dist/Types.d.ts +8 -1
  253. package/dist/{Typography-PxtFcnJb.js → Typography-hWfh3H0J.js} +2 -2
  254. package/dist/{Typography-PxtFcnJb.js.map → Typography-hWfh3H0J.js.map} +1 -1
  255. package/dist/{Typography-DX7PlgQU.cjs → Typography-sa1UE0oF.cjs} +2 -2
  256. package/dist/{Typography-DX7PlgQU.cjs.map → Typography-sa1UE0oF.cjs.map} +1 -1
  257. package/dist/UnitChart.cjs +1 -1
  258. package/dist/UnitChart.js +8 -8
  259. package/dist/WaterfallChart.cjs +2 -0
  260. package/dist/WaterfallChart.cjs.map +1 -0
  261. package/dist/WaterfallChart.d.ts +207 -0
  262. package/dist/WaterfallChart.js +427 -0
  263. package/dist/WaterfallChart.js.map +1 -0
  264. package/dist/{XAxesLabels-Bt5NZBmX.cjs → XAxesLabels-C6o9jJal.cjs} +2 -2
  265. package/dist/{XAxesLabels-Bt5NZBmX.cjs.map → XAxesLabels-C6o9jJal.cjs.map} +1 -1
  266. package/dist/{XAxesLabels-Dy8E1SEo.js → XAxesLabels-rhK7lRjO.js} +3 -3
  267. package/dist/{XAxesLabels-Dy8E1SEo.js.map → XAxesLabels-rhK7lRjO.js.map} +1 -1
  268. package/dist/{XTicksAndGridLines-CObVFSm4.js → XTicksAndGridLines-CVZkZkpS.js} +2 -2
  269. package/dist/{XTicksAndGridLines-CObVFSm4.js.map → XTicksAndGridLines-CVZkZkpS.js.map} +1 -1
  270. package/dist/{XTicksAndGridLines-B6CELS7q.cjs → XTicksAndGridLines-CekrPykD.cjs} +2 -2
  271. package/dist/{XTicksAndGridLines-B6CELS7q.cjs.map → XTicksAndGridLines-CekrPykD.cjs.map} +1 -1
  272. package/dist/{YAxesLabels-DesLesUP.cjs → YAxesLabels-BQ2aCazV.cjs} +2 -2
  273. package/dist/{YAxesLabels-DesLesUP.cjs.map → YAxesLabels-BQ2aCazV.cjs.map} +1 -1
  274. package/dist/{YAxesLabels-a57ZRv-0.js → YAxesLabels-QICWVsHf.js} +3 -3
  275. package/dist/{YAxesLabels-a57ZRv-0.js.map → YAxesLabels-QICWVsHf.js.map} +1 -1
  276. package/dist/{YTicksAndGridLines-Blepl7XF.js → YTicksAndGridLines-GnXnSRF2.js} +2 -2
  277. package/dist/{YTicksAndGridLines-Blepl7XF.js.map → YTicksAndGridLines-GnXnSRF2.js.map} +1 -1
  278. package/dist/{YTicksAndGridLines-4pxTRlRK.cjs → YTicksAndGridLines-UzVC5eBM.cjs} +2 -2
  279. package/dist/{YTicksAndGridLines-4pxTRlRK.cjs.map → YTicksAndGridLines-UzVC5eBM.cjs.map} +1 -1
  280. package/dist/{band-DHUZ2X7J.js → band-DYty33LD.js} +2 -2
  281. package/dist/{band-DHUZ2X7J.js.map → band-DYty33LD.js.map} +1 -1
  282. package/dist/{checkIfMultiple-CIRtG0KE.js → checkIfMultiple-D9fVkeOq.js} +7 -19
  283. package/dist/{checkIfMultiple-CIRtG0KE.js.map → checkIfMultiple-D9fVkeOq.js.map} +1 -1
  284. package/dist/checkIfMultiple-DxnGtm3t.cjs +2 -0
  285. package/dist/{checkIfMultiple-wg6hJLXy.cjs.map → checkIfMultiple-DxnGtm3t.cjs.map} +1 -1
  286. package/dist/{customArea-BUhPiPT6.js → customArea-ASDaSE4u.js} +5 -5
  287. package/dist/{customArea-BUhPiPT6.js.map → customArea-ASDaSE4u.js.map} +1 -1
  288. package/dist/{customArea-CMF5g-C3.cjs → customArea-B1LWQBmM.cjs} +2 -2
  289. package/dist/{customArea-CMF5g-C3.cjs.map → customArea-B1LWQBmM.cjs.map} +1 -1
  290. package/dist/defaultLocale-C4wbwF1n.cjs +2 -0
  291. package/dist/defaultLocale-C4wbwF1n.cjs.map +1 -0
  292. package/dist/defaultLocale-CPy_WVtp.js +172 -0
  293. package/dist/defaultLocale-CPy_WVtp.js.map +1 -0
  294. package/dist/{ensureCompleteData-DH5c52Ub.js → ensureCompleteData-CDIukSG6.js} +2 -2
  295. package/dist/{ensureCompleteData-DH5c52Ub.js.map → ensureCompleteData-CDIukSG6.js.map} +1 -1
  296. package/dist/{ensureCompleteData-pZ9QO6kB.cjs → ensureCompleteData-D9bQTiVS.cjs} +2 -2
  297. package/dist/{ensureCompleteData-pZ9QO6kB.cjs.map → ensureCompleteData-D9bQTiVS.cjs.map} +1 -1
  298. package/dist/{fetchAndParseData-BpqkBPQL.js → fetchAndParseData-BAXhgTDM.js} +12 -18
  299. package/dist/{fetchAndParseData-BpqkBPQL.js.map → fetchAndParseData-BAXhgTDM.js.map} +1 -1
  300. package/dist/{fetchAndParseData-l5HGMAEs.cjs → fetchAndParseData-QTF6tjij.cjs} +3 -8
  301. package/dist/{fetchAndParseData-l5HGMAEs.cjs.map → fetchAndParseData-QTF6tjij.cjs.map} +1 -1
  302. package/dist/fetchAndParseData.cjs +1 -1
  303. package/dist/fetchAndParseData.js +1 -1
  304. package/dist/getCentroidCoordinates-CtBGrNC8.cjs +2 -0
  305. package/dist/getCentroidCoordinates-CtBGrNC8.cjs.map +1 -0
  306. package/dist/{getCentroidCoordinates-D7r34N4w.js → getCentroidCoordinates-s0OOUjLF.js} +15 -15
  307. package/dist/getCentroidCoordinates-s0OOUjLF.js.map +1 -0
  308. package/dist/{getGraphList-Dxwo9TDb.js → getGraphList-Bpd3PVmF.js} +7 -1
  309. package/dist/getGraphList-Bpd3PVmF.js.map +1 -0
  310. package/dist/getGraphList-DQ24IzAn.cjs +2 -0
  311. package/dist/getGraphList-DQ24IzAn.cjs.map +1 -0
  312. package/dist/{getJenks-GYmdwBqm.cjs → getJenks-BzJvhy_H.cjs} +2 -2
  313. package/dist/{getJenks-GYmdwBqm.cjs.map → getJenks-BzJvhy_H.cjs.map} +1 -1
  314. package/dist/{getJenks-BbngDoBQ.js → getJenks-DTCcQSDi.js} +2 -2
  315. package/dist/{getJenks-BbngDoBQ.js.map → getJenks-DTCcQSDi.js.map} +1 -1
  316. package/dist/getSliderMarks-CIuSoedo.cjs +2 -0
  317. package/dist/{getSliderMarks-BmADcPQt.cjs.map → getSliderMarks-CIuSoedo.cjs.map} +1 -1
  318. package/dist/{getSliderMarks-HIDJ0_Cd.js → getSliderMarks-Cvg8zHBU.js} +4 -9
  319. package/dist/getSliderMarks-Cvg8zHBU.js.map +1 -0
  320. package/dist/{imageDownload-NYXbvKob.cjs → imageDownload-61q6jyJW.cjs} +3 -3
  321. package/dist/imageDownload-61q6jyJW.cjs.map +1 -0
  322. package/dist/{imageDownload-BU4qnxJP.js → imageDownload-Diofs_vY.js} +14 -15
  323. package/dist/imageDownload-Diofs_vY.js.map +1 -0
  324. package/dist/{index-D491FEn1.js → index-BQYOuXdl.js} +15 -15
  325. package/dist/{index-D491FEn1.js.map → index-BQYOuXdl.js.map} +1 -1
  326. package/dist/{index-DxXnJ8Ti.cjs → index-C5K--w8d.cjs} +2 -2
  327. package/dist/index-C5K--w8d.cjs.map +1 -0
  328. package/dist/{index-DRXx7m-C.cjs → index-C6er0ety.cjs} +2 -2
  329. package/dist/{index-DRXx7m-C.cjs.map → index-C6er0ety.cjs.map} +1 -1
  330. package/dist/{index-CHPV5EwG-CTPQjnHt.cjs → index-CHPV5EwG-6v2a2njQ.cjs} +5 -69
  331. package/dist/{index-CHPV5EwG-CTPQjnHt.cjs.map → index-CHPV5EwG-6v2a2njQ.cjs.map} +1 -1
  332. package/dist/{index-CHPV5EwG-Curnpaqc.js → index-CHPV5EwG-DecW7_qr.js} +5 -77
  333. package/dist/{index-CHPV5EwG-Curnpaqc.js.map → index-CHPV5EwG-DecW7_qr.js.map} +1 -1
  334. package/dist/{index-SKgJALZg.js → index-CSiFiXPj.js} +3 -3
  335. package/dist/{index-SKgJALZg.js.map → index-CSiFiXPj.js.map} +1 -1
  336. package/dist/index-CoobIWNj.cjs +10 -0
  337. package/dist/index-CoobIWNj.cjs.map +1 -0
  338. package/dist/index-CtMBjvtq.js +148 -0
  339. package/dist/index-CtMBjvtq.js.map +1 -0
  340. package/dist/{index-Cw8sCyo_-BrHiWiRF.cjs → index-Cw8sCyo_-CEcCMKUi.cjs} +2 -2
  341. package/dist/{index-Cw8sCyo_-BrHiWiRF.cjs.map → index-Cw8sCyo_-CEcCMKUi.cjs.map} +1 -1
  342. package/dist/{index-Cw8sCyo_-B2hEKjzG.js → index-Cw8sCyo_-n4AacHGk.js} +6 -4
  343. package/dist/{index-Cw8sCyo_-B2hEKjzG.js.map → index-Cw8sCyo_-n4AacHGk.js.map} +1 -1
  344. package/dist/{index-R1gTfap5.js → index-D5ihtaJJ.js} +12 -12
  345. package/dist/{index-R1gTfap5.js.map → index-D5ihtaJJ.js.map} +1 -1
  346. package/dist/{index-B_sAFsEV.cjs → index-D69M6klB.cjs} +2 -2
  347. package/dist/{index-B_sAFsEV.cjs.map → index-D69M6klB.cjs.map} +1 -1
  348. package/dist/{index-GEsywGxz.js → index-DCsFBfJ_.js} +160 -104
  349. package/dist/index-DCsFBfJ_.js.map +1 -0
  350. package/dist/{index-WML2dCZ0.cjs → index-Dgjq6aZ2.cjs} +2 -2
  351. package/dist/{index-WML2dCZ0.cjs.map → index-Dgjq6aZ2.cjs.map} +1 -1
  352. package/dist/{index-Dzc_aaI9-BmkfPMyc.cjs → index-Dzc_aaI9-C3DbPpy3.cjs} +2 -2
  353. package/dist/{index-Dzc_aaI9-BmkfPMyc.cjs.map → index-Dzc_aaI9-C3DbPpy3.cjs.map} +1 -1
  354. package/dist/{index-Dzc_aaI9-Bb7gobH_.js → index-Dzc_aaI9-CG2Ar7l1.js} +4 -4
  355. package/dist/{index-Dzc_aaI9-Bb7gobH_.js.map → index-Dzc_aaI9-CG2Ar7l1.js.map} +1 -1
  356. package/dist/index.cjs +1 -1
  357. package/dist/index.d.ts +213 -3252
  358. package/dist/index.js +145 -161
  359. package/dist/index.js.map +1 -1
  360. package/dist/{linear-BqltdMeF.js → linear-CalFSAaO.js} +2 -2
  361. package/dist/{linear-BqltdMeF.js.map → linear-CalFSAaO.js.map} +1 -1
  362. package/dist/{linear-BwPAspcq.cjs → linear-CgUCbw9F.cjs} +2 -2
  363. package/dist/{linear-BwPAspcq.cjs.map → linear-CgUCbw9F.cjs.map} +1 -1
  364. package/dist/{ordinal-BJ6O_LC5.js → ordinal-CHaxGJ_l.js} +2 -2
  365. package/dist/{ordinal-BJ6O_LC5.js.map → ordinal-CHaxGJ_l.js.map} +1 -1
  366. package/dist/{parse-DlCRUFh_.js → parse-Dv4of-PN.js} +2 -67
  367. package/dist/{parse-DlCRUFh_.js.map → parse-Dv4of-PN.js.map} +1 -1
  368. package/dist/parse-xYI9yrvL.cjs +2 -0
  369. package/dist/{parse-hMnG_lRV.cjs.map → parse-xYI9yrvL.cjs.map} +1 -1
  370. package/dist/{pow-DgrUorRi.cjs → pow-BnyPO-NX.cjs} +2 -2
  371. package/dist/{pow-DgrUorRi.cjs.map → pow-BnyPO-NX.cjs.map} +1 -1
  372. package/dist/{pow-CM2aze4M.js → pow-CaIrlM4J.js} +2 -2
  373. package/dist/{pow-CM2aze4M.js.map → pow-CaIrlM4J.js.map} +1 -1
  374. package/dist/proxy-C4-uo6nS.cjs +2 -0
  375. package/dist/proxy-C4-uo6nS.cjs.map +1 -0
  376. package/dist/{proxy-BxkFHwUw.js → proxy-DRuSUlPL.js} +2828 -2717
  377. package/dist/proxy-DRuSUlPL.js.map +1 -0
  378. package/dist/{string2HTML-DhG75NqA.js → string2HTML-DUYZT1L9.js} +17 -17
  379. package/dist/{string2HTML-DhG75NqA.js.map → string2HTML-DUYZT1L9.js.map} +1 -1
  380. package/dist/{string2HTML-CPGr_I5E.cjs → string2HTML-xx9MzTtY.cjs} +3 -3
  381. package/dist/{string2HTML-CPGr_I5E.cjs.map → string2HTML-xx9MzTtY.cjs.map} +1 -1
  382. package/dist/style.css +1 -1
  383. package/dist/{time-BUL-dwnK.js → time-CAtex-RV.js} +2 -2
  384. package/dist/{time-BUL-dwnK.js.map → time-CAtex-RV.js.map} +1 -1
  385. package/dist/{time-CZd5YLSP.cjs → time-CkcKbhwe.cjs} +2 -2
  386. package/dist/{time-CZd5YLSP.cjs.map → time-CkcKbhwe.cjs.map} +1 -1
  387. package/dist/transformData.cjs +1 -1
  388. package/dist/transformData.d.ts +1 -1
  389. package/dist/transformData.js +3 -3
  390. package/dist/transformDataForAggregation-BFdha9Dx.cjs +2 -0
  391. package/dist/transformDataForAggregation-BFdha9Dx.cjs.map +1 -0
  392. package/dist/{transformDataForAggregation-j34UL73s.js → transformDataForAggregation-wdPf8bNt.js} +26 -11
  393. package/dist/transformDataForAggregation-wdPf8bNt.js.map +1 -0
  394. package/dist/{transformDataForGraphFromFile-CuXxR8uA.cjs → transformDataForGraphFromFile-DOhp1qrp.cjs} +2 -2
  395. package/dist/{transformDataForGraphFromFile-CuXxR8uA.cjs.map → transformDataForGraphFromFile-DOhp1qrp.cjs.map} +1 -1
  396. package/dist/{transformDataForGraphFromFile-DyP-83Nh.js → transformDataForGraphFromFile-dt9sHTVy.js} +3 -3
  397. package/dist/{transformDataForGraphFromFile-DyP-83Nh.js.map → transformDataForGraphFromFile-dt9sHTVy.js.map} +1 -1
  398. package/dist/{use-in-view-QcfiW0w3.cjs → use-in-view-C3o_ntMv.cjs} +2 -2
  399. package/dist/use-in-view-C3o_ntMv.cjs.map +1 -0
  400. package/dist/{use-in-view-Cxa7y1TH.js → use-in-view-Dl5L8LtP.js} +2 -2
  401. package/dist/use-in-view-Dl5L8LtP.js.map +1 -0
  402. package/dist/utils.cjs +1 -1
  403. package/dist/utils.js +4 -4
  404. package/dist/{x-BBpi7a_7-WVdj1j6r.js → x-BBpi7a_7-BsvWCzYM.js} +1 -31
  405. package/dist/{x-BBpi7a_7-WVdj1j6r.js.map → x-BBpi7a_7-BsvWCzYM.js.map} +1 -1
  406. package/dist/x-BBpi7a_7-DXYIEFwN.cjs +2 -0
  407. package/dist/{x-BBpi7a_7-mTo40uId.cjs.map → x-BBpi7a_7-DXYIEFwN.cjs.map} +1 -1
  408. package/dist/{zoom-C9MFjAaV.js → zoom-5AkJSuWO.js} +3 -3
  409. package/dist/zoom-5AkJSuWO.js.map +1 -0
  410. package/dist/{zoom-DPw8bba-.cjs → zoom-ChcvXFIz.cjs} +2 -2
  411. package/dist/zoom-ChcvXFIz.cjs.map +1 -0
  412. package/package.json +23 -15
  413. package/readme.md +33 -22
  414. package/dist/EmptyState-C7ZXkZWd.js +0 -15
  415. package/dist/GraphEl-BixTEyKW.cjs +0 -2
  416. package/dist/GraphEl-BixTEyKW.cjs.map +0 -1
  417. package/dist/GraphEl-Dyu_EIQb.js.map +0 -1
  418. package/dist/ReferenceLine-2XCwHXQ4.js.map +0 -1
  419. package/dist/RegressionLine-DAcY2DjT.js.map +0 -1
  420. package/dist/checkIfMultiple-wg6hJLXy.cjs +0 -12
  421. package/dist/defaultLocale-BEa-49Qz.js +0 -172
  422. package/dist/defaultLocale-BEa-49Qz.js.map +0 -1
  423. package/dist/defaultLocale-DIVzfLaQ.cjs +0 -2
  424. package/dist/defaultLocale-DIVzfLaQ.cjs.map +0 -1
  425. package/dist/getCentroidCoordinates-D7r34N4w.js.map +0 -1
  426. package/dist/getCentroidCoordinates-Dng1HVjO.cjs +0 -2
  427. package/dist/getCentroidCoordinates-Dng1HVjO.cjs.map +0 -1
  428. package/dist/getGraphList-CA17dvFB.cjs +0 -2
  429. package/dist/getGraphList-CA17dvFB.cjs.map +0 -1
  430. package/dist/getGraphList-Dxwo9TDb.js.map +0 -1
  431. package/dist/getSchema.cjs +0 -2
  432. package/dist/getSchema.cjs.map +0 -1
  433. package/dist/getSchema.d.ts +0 -3258
  434. package/dist/getSchema.js +0 -1129
  435. package/dist/getSchema.js.map +0 -1
  436. package/dist/getSliderMarks-BmADcPQt.cjs +0 -6
  437. package/dist/getSliderMarks-HIDJ0_Cd.js.map +0 -1
  438. package/dist/imageDownload-BU4qnxJP.js.map +0 -1
  439. package/dist/imageDownload-NYXbvKob.cjs.map +0 -1
  440. package/dist/index-BqfRwk1n.js +0 -146
  441. package/dist/index-BqfRwk1n.js.map +0 -1
  442. package/dist/index-DG2bgAva.cjs +0 -10
  443. package/dist/index-DG2bgAva.cjs.map +0 -1
  444. package/dist/index-DxXnJ8Ti.cjs.map +0 -1
  445. package/dist/index-GEsywGxz.js.map +0 -1
  446. package/dist/parse-hMnG_lRV.cjs +0 -2
  447. package/dist/proxy-BxkFHwUw.js.map +0 -1
  448. package/dist/proxy-BxvUI_9l.cjs +0 -2
  449. package/dist/proxy-BxvUI_9l.cjs.map +0 -1
  450. package/dist/transformDataForAggregation-CYoB5Xsk.cjs +0 -2
  451. package/dist/transformDataForAggregation-CYoB5Xsk.cjs.map +0 -1
  452. package/dist/transformDataForAggregation-j34UL73s.js.map +0 -1
  453. package/dist/use-in-view-Cxa7y1TH.js.map +0 -1
  454. package/dist/use-in-view-QcfiW0w3.cjs.map +0 -1
  455. package/dist/validateSchema.cjs +0 -2
  456. package/dist/validateSchema.cjs.map +0 -1
  457. package/dist/validateSchema.d.ts +0 -66
  458. package/dist/validateSchema.js +0 -109
  459. package/dist/validateSchema.js.map +0 -1
  460. package/dist/x-BBpi7a_7-mTo40uId.cjs +0 -27
  461. package/dist/zoom-C9MFjAaV.js.map +0 -1
  462. package/dist/zoom-DPw8bba-.cjs.map +0 -1
@@ -3,7 +3,7 @@ import X from "handlebars";
3
3
  import we from "math-expression-evaluator";
4
4
  import { marked as M } from "marked";
5
5
  import { n as re } from "./numberFormattingFunction-14YCbkN2.js";
6
- var U = { exports: {} }, y = {}, z = { exports: {} }, D = {}, ae;
6
+ var z = { exports: {} }, y = {}, $ = { exports: {} }, D = {}, ae;
7
7
  function pe() {
8
8
  if (ae) return D;
9
9
  ae = 1;
@@ -135,7 +135,7 @@ function ee() {
135
135
  s = r.exports = v, s.FilterCSS = f;
136
136
  for (var e in i) s[e] = i[e];
137
137
  typeof window < "u" && (window.filterCSS = r.exports);
138
- })(z, z.exports)), z.exports;
138
+ })($, $.exports)), $.exports;
139
139
  }
140
140
  var K, oe;
141
141
  function te() {
@@ -275,7 +275,7 @@ function me() {
275
275
  return n.replace(t, "&lt;").replace(o, "&gt;");
276
276
  }
277
277
  function S(n, m, l, h) {
278
- if (l = H(l), m === "href" || m === "src") {
278
+ if (l = U(l), m === "href" || m === "src") {
279
279
  if (l = i.trim(l), l === "#") return "#";
280
280
  if (!(l.substr(0, 7) === "http://" || l.substr(0, 8) === "https://" || l.substr(0, 7) === "mailto:" || l.substr(0, 4) === "tel:" || l.substr(0, 11) === "data:image/" || l.substr(0, 6) === "ftp://" || l.substr(0, 2) === "./" || l.substr(0, 3) === "../" || l[0] === "#" || l[0] === "/"))
281
281
  return "";
@@ -309,7 +309,7 @@ function me() {
309
309
  m += n.charCodeAt(l) < 32 ? " " : n.charAt(l);
310
310
  return i.trim(m);
311
311
  }
312
- function H(n) {
312
+ function U(n) {
313
313
  return n = x(n), n = k(n), n = C(n), n = F(n), n;
314
314
  }
315
315
  function R(n) {
@@ -327,24 +327,24 @@ function me() {
327
327
  }
328
328
  var P = [], O = !1;
329
329
  return {
330
- onIgnoreTag: function(_, $, W) {
330
+ onIgnoreTag: function(_, G, W) {
331
331
  if (h(_))
332
332
  if (W.isClosing) {
333
- var G = "[/removed]", be = W.position + G.length;
333
+ var H = "[/removed]", be = W.position + H.length;
334
334
  return P.push([
335
335
  O !== !1 ? O : W.position,
336
336
  be
337
- ]), O = !1, G;
337
+ ]), O = !1, H;
338
338
  } else
339
339
  return O || (O = W.position), "[removed]";
340
340
  else
341
- return m(_, $, W);
341
+ return m(_, G, W);
342
342
  },
343
343
  remove: function(_) {
344
- var $ = "", W = 0;
345
- return i.forEach(P, function(G) {
346
- $ += _.slice(W, G[0]), W = G[1];
347
- }), $ += _.slice(W), $;
344
+ var G = "", W = 0;
345
+ return i.forEach(P, function(H) {
346
+ G += _.slice(W, H[0]), W = H[1];
347
+ }), G += _.slice(W), G;
348
348
  }
349
349
  };
350
350
  }
@@ -370,7 +370,7 @@ function me() {
370
370
  return h === 127 ? !1 : h <= 31 ? h === 10 || h === 13 : !0;
371
371
  }), m.join("");
372
372
  }
373
- return y.whiteList = f(), y.getDefaultWhiteList = f, y.onTag = e, y.onIgnoreTag = p, y.onTagAttr = u, y.onIgnoreTagAttr = w, y.safeAttrValue = S, y.escapeHtml = L, y.escapeQuote = b, y.unescapeQuote = x, y.escapeHtmlEntities = k, y.escapeDangerHtml5Entities = C, y.clearNonPrintableCharacter = F, y.friendlyAttrValue = H, y.escapeAttrValue = R, y.onIgnoreTagStripAll = q, y.StripTagBody = Q, y.stripCommentTag = N, y.stripBlankChar = V, y.attributeWrapSign = '"', y.cssFilter = v, y.getDefaultCSSWhiteList = s, y;
373
+ return y.whiteList = f(), y.getDefaultWhiteList = f, y.onTag = e, y.onIgnoreTag = p, y.onTagAttr = u, y.onIgnoreTagAttr = w, y.safeAttrValue = S, y.escapeHtml = L, y.escapeQuote = b, y.unescapeQuote = x, y.escapeHtmlEntities = k, y.escapeDangerHtml5Entities = C, y.clearNonPrintableCharacter = F, y.friendlyAttrValue = U, y.escapeAttrValue = R, y.onIgnoreTagStripAll = q, y.StripTagBody = Q, y.stripCommentTag = N, y.stripBlankChar = V, y.attributeWrapSign = '"', y.cssFilter = v, y.getDefaultCSSWhiteList = s, y;
374
374
  }
375
375
  var B = {}, ue;
376
376
  function ve() {
@@ -542,10 +542,10 @@ function Te() {
542
542
  ), c = k.onIgnoreTag);
543
543
  var C = f(
544
544
  t,
545
- function(F, H, R, q, Q) {
545
+ function(F, U, R, q, Q) {
546
546
  var N = {
547
547
  sourcePosition: F,
548
- position: H,
548
+ position: U,
549
549
  isClosing: Q,
550
550
  isWhite: Object.prototype.hasOwnProperty.call(A, R)
551
551
  }, V = T(R, q, N);
@@ -584,7 +584,7 @@ function ke() {
584
584
  return typeof self < "u" && typeof DedicatedWorkerGlobalScope < "u" && self instanceof DedicatedWorkerGlobalScope;
585
585
  }
586
586
  p() && (self.filterXSS = r.exports);
587
- })(U, U.exports)), U.exports;
587
+ })(z, z.exports)), z.exports;
588
588
  }
589
589
  var Se = ke();
590
590
  const de = /* @__PURE__ */ ye(Se);
@@ -761,4 +761,4 @@ function qe(r, s) {
761
761
  export {
762
762
  qe as s
763
763
  };
764
- //# sourceMappingURL=string2HTML-DhG75NqA.js.map
764
+ //# sourceMappingURL=string2HTML-DUYZT1L9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"string2HTML-DhG75NqA.js","sources":["../node_modules/cssfilter/lib/default.js","../node_modules/cssfilter/lib/util.js","../node_modules/cssfilter/lib/parser.js","../node_modules/cssfilter/lib/css.js","../node_modules/cssfilter/lib/index.js","../node_modules/xss/lib/util.js","../node_modules/xss/lib/default.js","../node_modules/xss/lib/parser.js","../node_modules/xss/lib/xss.js","../node_modules/xss/lib/index.js","../src/Utils/string2HTML.ts"],"sourcesContent":["/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar FilterCSS = require('./css');\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function (str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n },\n};\n","/**\n * default settings\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"preload\",\n \"src\",\n ],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n figcaption: [],\n figure: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\", \"loading\"],\n ins: [\"datetime\"],\n kbd: [],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n summary: [],\n sup: [],\n strong: [],\n strike: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\",\n \"height\",\n \"width\",\n ],\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"&lt;\").replace(REGEXP_GT, \"&gt;\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value.substr(0, 11) === \"data:image/\" ||\n value.substr(0, 6) === \"ftp://\" ||\n value.substr(0, 2) === \"./\" ||\n value.substr(0, 3) === \"../\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = /</g;\nvar REGEXP_GT = />/g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /&quot;/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /&colon;?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 =\n /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a):/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 =\n /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \"&quot;\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function () {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function (tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end,\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function (html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function (pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n },\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n var retHtml = \"\";\n var lastPos = 0;\n while (lastPos < html.length) {\n var i = html.indexOf(\"<!--\", lastPos);\n if (i === -1) {\n retHtml += html.slice(lastPos);\n break;\n }\n retHtml += html.slice(lastPos, i);\n var j = html.indexOf(\"-->\", i);\n if (j === -1) {\n break;\n }\n lastPos = j + 3;\n }\n return retHtml;\n}\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function (char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.attributeWrapSign = '\"';\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. '<a hef=\"#\">'\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n var tagName;\n if (i === -1) {\n tagName = html.slice(1, -1);\n } else {\n tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:'<a hef=\"#\">'\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"</\";\n}\n\n/**\n * parse input html and returns processed html\n *\n * @param {String} html\n * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)\n * @param {Function} escapeHtml\n * @return {String}\n */\nfunction parseTag(html, onTag, escapeHtml) {\n \"use strict\";\n\n var rethtml = \"\";\n var lastPos = 0;\n var tagStart = false;\n var quoteStart = false;\n var currentPos = 0;\n var len = html.length;\n var currentTagName = \"\";\n var currentHtml = \"\";\n\n chariterator: for (currentPos = 0; currentPos < len; currentPos++) {\n var c = html.charAt(currentPos);\n if (tagStart === false) {\n if (c === \"<\") {\n tagStart = currentPos;\n continue;\n }\n } else {\n if (quoteStart === false) {\n if (c === \"<\") {\n rethtml += escapeHtml(html.slice(lastPos, currentPos));\n tagStart = currentPos;\n lastPos = currentPos;\n continue;\n }\n if (c === \">\" || currentPos === len - 1) {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if (c === '\"' || c === \"'\") {\n var i = 1;\n var ic = html.charAt(currentPos - i);\n\n while (ic.trim() === \"\" || ic === \"=\") {\n if (ic === \"=\") {\n quoteStart = c;\n continue chariterator;\n }\n ic = html.charAt(currentPos - ++i);\n }\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < len) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\\\_:.-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"use strict\";\n\n var lastPos = 0;\n var lastMarkPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n lastMarkPos = html.charAt(lastPos) === '\"' || html.charAt(lastPos) === \"'\" ? lastPos : findNextQuotationMark(html, i + 1);\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastMarkPos\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastMarkPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findNextQuotationMark(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"'\" || c === '\"') return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","/**\n * filter xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./util\");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n * - {String} html\n * - {Boolean} closing\n */\nfunction getAttrs(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n return {\n html: \"\",\n closing: html[html.length - 2] === \"/\",\n };\n }\n html = _.trim(html.slice(i + 1, -1));\n var isClosing = html[html.length - 1] === \"/\";\n if (isClosing) html = _.trim(html.slice(0, -1));\n return {\n html: html,\n closing: isClosing,\n };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\nfunction keysToLowerCase(obj) {\n var ret = {};\n for (var i in obj) {\n if (Array.isArray(obj[i])) {\n ret[i.toLowerCase()] = obj[i].map(function (item) {\n return item.toLowerCase();\n });\n } else {\n ret[i.toLowerCase()] = obj[i];\n }\n }\n return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n * whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,\n * onIgnoreTagAttr, safeAttrValue, escapeHtml\n * stripIgnoreTagBody, allowCommentTag, stripBlankChar\n * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n options = shallowCopyObject(options || {});\n\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\n }\n options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n }\n if (options.whiteList || options.allowList) {\n options.whiteList = keysToLowerCase(options.whiteList || options.allowList);\n } else {\n options.whiteList = DEFAULT.whiteList;\n }\n\n this.attributeWrapSign = options.singleQuotedAttributeValue === true ? \"'\" : DEFAULT.attributeWrapSign;\n\n options.onTag = options.onTag || DEFAULT.onTag;\n options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n this.options = options;\n\n if (options.css === false) {\n this.cssFilter = false;\n } else {\n options.css = options.css || {};\n this.cssFilter = new FilterCSS(options.css);\n }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function (html) {\n // compatible with the input\n html = html || \"\";\n html = html.toString();\n if (!html) return \"\";\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onTag = options.onTag;\n var onIgnoreTag = options.onIgnoreTag;\n var onTagAttr = options.onTagAttr;\n var onIgnoreTagAttr = options.onIgnoreTagAttr;\n var safeAttrValue = options.safeAttrValue;\n var escapeHtml = options.escapeHtml;\n var attributeWrapSign = me.attributeWrapSign;\n var cssFilter = me.cssFilter;\n\n // remove invisible characters\n if (options.stripBlankChar) {\n html = DEFAULT.stripBlankChar(html);\n }\n\n // remove html comments\n if (!options.allowCommentTag) {\n html = DEFAULT.stripCommentTag(html);\n }\n\n // if enable stripIgnoreTagBody\n var stripIgnoreTagBody = false;\n if (options.stripIgnoreTagBody) {\n stripIgnoreTagBody = DEFAULT.StripTagBody(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n function (sourcePosition, position, tag, html, isClosing) {\n var info = {\n sourcePosition: sourcePosition,\n position: position,\n isClosing: isClosing,\n isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag),\n };\n\n // call `onTag()`\n var ret = onTag(tag, html, info);\n if (!isNull(ret)) return ret;\n\n if (info.isWhite) {\n if (info.isClosing) {\n return \"</\" + tag + \">\";\n }\n\n var attrs = getAttrs(html);\n var whiteAttrList = whiteList[tag];\n var attrsHtml = parseAttr(attrs.html, function (name, value) {\n // call `onTagAttr()`\n var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n var ret = onTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=' + attributeWrapSign + value + attributeWrapSign;\n } else {\n return name;\n }\n } else {\n // call `onIgnoreTagAttr()`\n ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n return;\n }\n });\n\n // build new tag html\n html = \"<\" + tag;\n if (attrsHtml) html += \" \" + attrsHtml;\n if (attrs.closing) html += \" /\";\n html += \">\";\n return html;\n } else {\n // call `onIgnoreTag()`\n ret = onIgnoreTag(tag, html, info);\n if (!isNull(ret)) return ret;\n return escapeHtml(html);\n }\n },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n","/**\n * xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./xss\");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\n\n(function () {\n for (var i in DEFAULT) {\n exports[i] = DEFAULT[i];\n }\n for (var j in parser) {\n exports[j] = parser[j];\n }\n})();\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return (\n typeof self !== \"undefined\" &&\n typeof DedicatedWorkerGlobalScope !== \"undefined\" &&\n self instanceof DedicatedWorkerGlobalScope\n );\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n","import xss from 'xss';\r\nimport Handlebars from 'handlebars';\r\nimport Mexp from 'math-expression-evaluator';\r\nimport { marked } from 'marked';\r\n\r\nimport { numberFormattingFunction } from './numberFormattingFunction';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getDescendantProp(data: any, desc: string) {\r\n const renderer = new marked.Renderer();\r\n const mexp = new Mexp();\r\n renderer.link = ({ href, title, text }) => {\r\n const target = href.startsWith('/') ? '_self' : '_blank';\r\n return `<a href=\"${href}\" target=\"${target}\" title=\"${title || ''}\">${text}</a>`;\r\n };\r\n\r\n Handlebars.registerHelper('formatNumber', value => {\r\n if (typeof value === 'string') return value;\r\n return numberFormattingFunction(value, '-');\r\n });\r\n Handlebars.registerHelper('mathExpression', expression => {\r\n const tempTemplate = Handlebars.compile(expression);\r\n const exp = tempTemplate(data);\r\n const result = mexp.eval(exp);\r\n return result;\r\n });\r\n Handlebars.registerHelper('mathExpressionWithFormatting', expression => {\r\n const tempTemplate = Handlebars.compile(expression);\r\n const exp = tempTemplate(data);\r\n const result = mexp.eval(exp);\r\n return numberFormattingFunction(result, '-');\r\n });\r\n\r\n marked.setOptions({ renderer });\r\n Handlebars.registerHelper('markdown', text => {\r\n return marked.parse(text || '');\r\n });\r\n const template = Handlebars.compile(desc);\r\n return template(data);\r\n}\r\n\r\nfunction decodeHTMLEntities(input: string) {\r\n return input\r\n .replace(/&lt;/g, '<')\r\n .replace(/&gt;/g, '>')\r\n .replace(/&amp;/g, '&')\r\n .replace(/&quot;/g, '\"')\r\n .replace(/&#39;/g, \"'\");\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function string2HTML(htmlString: string, data?: any) {\r\n // Custom XSS filter configuration\r\n const options = {\r\n whiteList: {\r\n b: ['class', 'id', 'style'],\r\n i: ['class', 'id', 'style'],\r\n strong: ['class', 'id', 'style'],\r\n em: ['class', 'id', 'style'],\r\n u: ['class', 'id', 'style'],\r\n small: ['class', 'id', 'style'],\r\n sub: ['class', 'id', 'style'],\r\n sup: ['class', 'id', 'style'],\r\n mark: ['class', 'id', 'style'],\r\n br: ['class', 'id', 'style'],\r\n hr: ['class', 'id', 'style'],\r\n p: ['class', 'id', 'style'],\r\n div: ['class', 'id', 'style'],\r\n span: ['class', 'id', 'style'],\r\n blockquote: ['class', 'id', 'style'],\r\n pre: ['class', 'id', 'style'],\r\n code: ['class', 'id', 'style'],\r\n h1: ['class', 'id', 'style'],\r\n h2: ['class', 'id', 'style'],\r\n h3: ['class', 'id', 'style'],\r\n h4: ['class', 'id', 'style'],\r\n h5: ['class', 'id', 'style'],\r\n h6: ['class', 'id', 'style'],\r\n ul: ['class', 'id', 'style'],\r\n ol: ['class', 'id', 'style'],\r\n li: ['class', 'id', 'style'],\r\n dl: ['class', 'id', 'style'],\r\n dt: ['class', 'id', 'style'],\r\n dd: ['class', 'id', 'style'],\r\n table: ['class', 'id', 'style'],\r\n thead: ['class', 'id', 'style'],\r\n tbody: ['class', 'id', 'style'],\r\n tfoot: ['class', 'id', 'style'],\r\n tr: ['class', 'id', 'style'],\r\n th: ['class', 'id', 'style'],\r\n td: ['class', 'id', 'style'],\r\n caption: ['class', 'id', 'style'],\r\n img: ['class', 'id', 'style', 'src', 'alt', 'width', 'height'],\r\n figure: ['class', 'id', 'style'],\r\n figcaption: ['class', 'id', 'style'],\r\n a: ['class', 'id', 'style', 'href', 'title'],\r\n abbr: ['class', 'id', 'style', 'title'],\r\n cite: ['class', 'id', 'style'],\r\n dfn: ['class', 'id', 'style'],\r\n kbd: ['class', 'id', 'style'],\r\n samp: ['class', 'id', 'style'],\r\n },\r\n css: {\r\n whiteList: {\r\n color: true,\r\n background: true,\r\n 'background-color': true,\r\n 'background-image': true,\r\n 'font-size': true,\r\n 'font-weight': true,\r\n 'text-transform': true,\r\n 'font-style': true,\r\n 'font-family': true,\r\n 'text-align': true,\r\n margin: true,\r\n padding: true,\r\n border: true,\r\n overflow: true,\r\n 'overflow-x': true,\r\n 'overflow-y': true,\r\n 'border-radius': true,\r\n 'border-color': true,\r\n display: true,\r\n flex: true,\r\n 'flex-direction': true,\r\n 'flex-wrap': true,\r\n 'flex-flow': true,\r\n 'flex-shrink': true,\r\n 'flex-grow': true,\r\n order: true,\r\n 'flex-basis': true,\r\n 'align-self': true,\r\n gap: true,\r\n 'row-gap': true,\r\n 'column-gap': true,\r\n 'justify-content': true,\r\n 'align-items': true,\r\n 'align-content': true,\r\n width: true,\r\n height: true,\r\n position: true,\r\n top: true,\r\n left: true,\r\n right: true,\r\n bottom: true,\r\n 'padding-top': true,\r\n 'padding-left': true,\r\n 'padding-right': true,\r\n 'padding-bottom': true,\r\n 'margin-top': true,\r\n 'margin-left': true,\r\n 'margin-right': true,\r\n 'margin-bottom': true,\r\n 'border-top': true,\r\n 'border-left': true,\r\n 'border-right': true,\r\n 'border-bottom': true,\r\n 'z-index': true,\r\n 'word-wrap': true,\r\n visibility: true,\r\n opacity: true,\r\n filter: true,\r\n transform: true,\r\n transition: true,\r\n cursor: true,\r\n clip: true,\r\n hyphens: true,\r\n direction: true,\r\n 'word-break': true,\r\n 'max-width': true,\r\n 'min-width': true,\r\n 'max-height': true,\r\n 'min-height': true,\r\n fill: true,\r\n 'clip-path': true,\r\n 'border-width': true,\r\n 'border-style': true,\r\n 'box-sizing': true,\r\n 'grid-template-rows': true,\r\n 'grid-template-columns': true,\r\n 'font-variant': true,\r\n 'letter-spacing': true,\r\n 'line-height': true,\r\n 'text-decoration': true,\r\n 'text-indent': true,\r\n 'white-space': true,\r\n 'word-spacing': true,\r\n 'box-shadow': true,\r\n 'transition-property': true,\r\n 'transition-duration': true,\r\n 'transition-timing-function': true,\r\n 'animation-name': true,\r\n 'animation-duration': true,\r\n },\r\n },\r\n };\r\n if (!data) return xss(htmlString, options);\r\n const replacedString = xss(getDescendantProp(data, htmlString), options);\r\n return decodeHTMLEntities(replacedString);\r\n}\r\n"],"names":["getDefaultWhiteList","whiteList","onAttr","name","value","options","onIgnoreAttr","REGEXP_URL_JAVASCRIPT","safeAttrValue","_default","util","arr","item","j","fn","scope","i","str","_","require$$0","parseStyle","css","cssLength","isParenthesisOpen","lastPos","retCSS","addNewAttr","source","ret","c","parser","DEFAULT","require$$1","require$$2","isNull","obj","shallowCopyObject","FilterCSS","me","sourcePosition","position","check","isWhite","opts","filterCSS","html","xss","exports","module","reg","match","getDefaultCSSWhiteList","defaultCSSFilter","onTag","tag","onIgnoreTag","onTagAttr","onIgnoreTagAttr","escapeHtml","REGEXP_LT","REGEXP_GT","cssFilter","friendlyAttrValue","REGEXP_DEFAULT_ON_TAG_ATTR_4","REGEXP_DEFAULT_ON_TAG_ATTR_7","REGEXP_DEFAULT_ON_TAG_ATTR_8","escapeAttrValue","REGEXP_QUOTE","REGEXP_QUOTE_2","REGEXP_ATTR_VALUE_1","REGEXP_ATTR_VALUE_COLON","REGEXP_ATTR_VALUE_NEWLINE","escapeQuote","unescapeQuote","escapeHtmlEntities","code","escapeDangerHtml5Entities","clearNonPrintableCharacter","str2","len","onIgnoreTagStripAll","StripTagBody","tags","next","isRemoveAllTag","isRemoveTag","removeList","posStart","end","rethtml","pos","stripCommentTag","retHtml","stripBlankChar","chars","char","getTagName","tagName","isClosing","parseTag","tagStart","quoteStart","currentPos","currentTagName","currentHtml","chariterator","ic","REGEXP_ILLEGAL_ATTR_NAME","parseAttr","lastMarkPos","retAttrs","tmpName","addAttr","v","findNextQuotationMark","findNextEqual","findBeforeEqual","stripQuoteWrap","isQuoteWrapString","text","require$$3","getAttrs","keysToLowerCase","FilterXSS","attributeWrapSign","stripIgnoreTagBody","info","attrs","whiteAttrList","attrsHtml","isWhiteAttr","filterXSS","isWorkerEnv","getDescendantProp","data","desc","renderer","marked","Renderer","mexp","Mexp","link","href","title","target","startsWith","Handlebars","registerHelper","numberFormattingFunction","expression","exp","compile","eval","result","setOptions","parse","decodeHTMLEntities","input","replace","string2HTML","htmlString","b","strong","em","u","small","sub","sup","mark","br","hr","p","div","span","blockquote","pre","h1","h2","h3","h4","h5","h6","ul","ol","li","dl","dt","dd","table","thead","tbody","tfoot","tr","th","td","caption","img","figure","figcaption","a","abbr","cite","dfn","kbd","samp","color","background","margin","padding","border","overflow","display","flex","order","gap","width","height","top","left","right","bottom","visibility","opacity","filter","transform","transition","cursor","clip","hyphens","direction","fill","replacedString"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
1
+ {"version":3,"file":"string2HTML-DUYZT1L9.js","sources":["../node_modules/cssfilter/lib/default.js","../node_modules/cssfilter/lib/util.js","../node_modules/cssfilter/lib/parser.js","../node_modules/cssfilter/lib/css.js","../node_modules/cssfilter/lib/index.js","../node_modules/xss/lib/util.js","../node_modules/xss/lib/default.js","../node_modules/xss/lib/parser.js","../node_modules/xss/lib/xss.js","../node_modules/xss/lib/index.js","../src/Utils/string2HTML.ts"],"sourcesContent":["/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar FilterCSS = require('./css');\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function (str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n },\n};\n","/**\n * default settings\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"preload\",\n \"src\",\n ],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n figcaption: [],\n figure: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\", \"loading\"],\n ins: [\"datetime\"],\n kbd: [],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n summary: [],\n sup: [],\n strong: [],\n strike: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\",\n \"height\",\n \"width\",\n ],\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"&lt;\").replace(REGEXP_GT, \"&gt;\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value.substr(0, 11) === \"data:image/\" ||\n value.substr(0, 6) === \"ftp://\" ||\n value.substr(0, 2) === \"./\" ||\n value.substr(0, 3) === \"../\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = /</g;\nvar REGEXP_GT = />/g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /&quot;/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /&colon;?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 =\n /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a):/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 =\n /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \"&quot;\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function () {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function (tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end,\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function (html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function (pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n },\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n var retHtml = \"\";\n var lastPos = 0;\n while (lastPos < html.length) {\n var i = html.indexOf(\"<!--\", lastPos);\n if (i === -1) {\n retHtml += html.slice(lastPos);\n break;\n }\n retHtml += html.slice(lastPos, i);\n var j = html.indexOf(\"-->\", i);\n if (j === -1) {\n break;\n }\n lastPos = j + 3;\n }\n return retHtml;\n}\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function (char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.attributeWrapSign = '\"';\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. '<a hef=\"#\">'\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n var tagName;\n if (i === -1) {\n tagName = html.slice(1, -1);\n } else {\n tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:'<a hef=\"#\">'\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"</\";\n}\n\n/**\n * parse input html and returns processed html\n *\n * @param {String} html\n * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)\n * @param {Function} escapeHtml\n * @return {String}\n */\nfunction parseTag(html, onTag, escapeHtml) {\n \"use strict\";\n\n var rethtml = \"\";\n var lastPos = 0;\n var tagStart = false;\n var quoteStart = false;\n var currentPos = 0;\n var len = html.length;\n var currentTagName = \"\";\n var currentHtml = \"\";\n\n chariterator: for (currentPos = 0; currentPos < len; currentPos++) {\n var c = html.charAt(currentPos);\n if (tagStart === false) {\n if (c === \"<\") {\n tagStart = currentPos;\n continue;\n }\n } else {\n if (quoteStart === false) {\n if (c === \"<\") {\n rethtml += escapeHtml(html.slice(lastPos, currentPos));\n tagStart = currentPos;\n lastPos = currentPos;\n continue;\n }\n if (c === \">\" || currentPos === len - 1) {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if (c === '\"' || c === \"'\") {\n var i = 1;\n var ic = html.charAt(currentPos - i);\n\n while (ic.trim() === \"\" || ic === \"=\") {\n if (ic === \"=\") {\n quoteStart = c;\n continue chariterator;\n }\n ic = html.charAt(currentPos - ++i);\n }\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < len) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\\\_:.-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"use strict\";\n\n var lastPos = 0;\n var lastMarkPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n lastMarkPos = html.charAt(lastPos) === '\"' || html.charAt(lastPos) === \"'\" ? lastPos : findNextQuotationMark(html, i + 1);\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastMarkPos\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastMarkPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findNextQuotationMark(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"'\" || c === '\"') return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","/**\n * filter xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./util\");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n * - {String} html\n * - {Boolean} closing\n */\nfunction getAttrs(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n return {\n html: \"\",\n closing: html[html.length - 2] === \"/\",\n };\n }\n html = _.trim(html.slice(i + 1, -1));\n var isClosing = html[html.length - 1] === \"/\";\n if (isClosing) html = _.trim(html.slice(0, -1));\n return {\n html: html,\n closing: isClosing,\n };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\nfunction keysToLowerCase(obj) {\n var ret = {};\n for (var i in obj) {\n if (Array.isArray(obj[i])) {\n ret[i.toLowerCase()] = obj[i].map(function (item) {\n return item.toLowerCase();\n });\n } else {\n ret[i.toLowerCase()] = obj[i];\n }\n }\n return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n * whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,\n * onIgnoreTagAttr, safeAttrValue, escapeHtml\n * stripIgnoreTagBody, allowCommentTag, stripBlankChar\n * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n options = shallowCopyObject(options || {});\n\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\n }\n options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n }\n if (options.whiteList || options.allowList) {\n options.whiteList = keysToLowerCase(options.whiteList || options.allowList);\n } else {\n options.whiteList = DEFAULT.whiteList;\n }\n\n this.attributeWrapSign = options.singleQuotedAttributeValue === true ? \"'\" : DEFAULT.attributeWrapSign;\n\n options.onTag = options.onTag || DEFAULT.onTag;\n options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n this.options = options;\n\n if (options.css === false) {\n this.cssFilter = false;\n } else {\n options.css = options.css || {};\n this.cssFilter = new FilterCSS(options.css);\n }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function (html) {\n // compatible with the input\n html = html || \"\";\n html = html.toString();\n if (!html) return \"\";\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onTag = options.onTag;\n var onIgnoreTag = options.onIgnoreTag;\n var onTagAttr = options.onTagAttr;\n var onIgnoreTagAttr = options.onIgnoreTagAttr;\n var safeAttrValue = options.safeAttrValue;\n var escapeHtml = options.escapeHtml;\n var attributeWrapSign = me.attributeWrapSign;\n var cssFilter = me.cssFilter;\n\n // remove invisible characters\n if (options.stripBlankChar) {\n html = DEFAULT.stripBlankChar(html);\n }\n\n // remove html comments\n if (!options.allowCommentTag) {\n html = DEFAULT.stripCommentTag(html);\n }\n\n // if enable stripIgnoreTagBody\n var stripIgnoreTagBody = false;\n if (options.stripIgnoreTagBody) {\n stripIgnoreTagBody = DEFAULT.StripTagBody(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n function (sourcePosition, position, tag, html, isClosing) {\n var info = {\n sourcePosition: sourcePosition,\n position: position,\n isClosing: isClosing,\n isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag),\n };\n\n // call `onTag()`\n var ret = onTag(tag, html, info);\n if (!isNull(ret)) return ret;\n\n if (info.isWhite) {\n if (info.isClosing) {\n return \"</\" + tag + \">\";\n }\n\n var attrs = getAttrs(html);\n var whiteAttrList = whiteList[tag];\n var attrsHtml = parseAttr(attrs.html, function (name, value) {\n // call `onTagAttr()`\n var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n var ret = onTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=' + attributeWrapSign + value + attributeWrapSign;\n } else {\n return name;\n }\n } else {\n // call `onIgnoreTagAttr()`\n ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n return;\n }\n });\n\n // build new tag html\n html = \"<\" + tag;\n if (attrsHtml) html += \" \" + attrsHtml;\n if (attrs.closing) html += \" /\";\n html += \">\";\n return html;\n } else {\n // call `onIgnoreTag()`\n ret = onIgnoreTag(tag, html, info);\n if (!isNull(ret)) return ret;\n return escapeHtml(html);\n }\n },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n","/**\n * xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./xss\");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\n\n(function () {\n for (var i in DEFAULT) {\n exports[i] = DEFAULT[i];\n }\n for (var j in parser) {\n exports[j] = parser[j];\n }\n})();\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return (\n typeof self !== \"undefined\" &&\n typeof DedicatedWorkerGlobalScope !== \"undefined\" &&\n self instanceof DedicatedWorkerGlobalScope\n );\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n","import xss from 'xss';\r\nimport Handlebars from 'handlebars';\r\nimport Mexp from 'math-expression-evaluator';\r\nimport { marked } from 'marked';\r\n\r\nimport { numberFormattingFunction } from './numberFormattingFunction';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getDescendantProp(data: any, desc: string) {\r\n const renderer = new marked.Renderer();\r\n const mexp = new Mexp();\r\n renderer.link = ({ href, title, text }) => {\r\n const target = href.startsWith('/') ? '_self' : '_blank';\r\n return `<a href=\"${href}\" target=\"${target}\" title=\"${title || ''}\">${text}</a>`;\r\n };\r\n\r\n Handlebars.registerHelper('formatNumber', value => {\r\n if (typeof value === 'string') return value;\r\n return numberFormattingFunction(value, '-');\r\n });\r\n Handlebars.registerHelper('mathExpression', expression => {\r\n const tempTemplate = Handlebars.compile(expression);\r\n const exp = tempTemplate(data);\r\n const result = mexp.eval(exp);\r\n return result;\r\n });\r\n Handlebars.registerHelper('mathExpressionWithFormatting', expression => {\r\n const tempTemplate = Handlebars.compile(expression);\r\n const exp = tempTemplate(data);\r\n const result = mexp.eval(exp);\r\n return numberFormattingFunction(result, '-');\r\n });\r\n\r\n marked.setOptions({ renderer });\r\n Handlebars.registerHelper('markdown', text => {\r\n return marked.parse(text || '');\r\n });\r\n const template = Handlebars.compile(desc);\r\n return template(data);\r\n}\r\n\r\nfunction decodeHTMLEntities(input: string) {\r\n return input\r\n .replace(/&lt;/g, '<')\r\n .replace(/&gt;/g, '>')\r\n .replace(/&amp;/g, '&')\r\n .replace(/&quot;/g, '\"')\r\n .replace(/&#39;/g, \"'\");\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function string2HTML(htmlString: string, data?: any) {\r\n // Custom XSS filter configuration\r\n const options = {\r\n whiteList: {\r\n b: ['class', 'id', 'style'],\r\n i: ['class', 'id', 'style'],\r\n strong: ['class', 'id', 'style'],\r\n em: ['class', 'id', 'style'],\r\n u: ['class', 'id', 'style'],\r\n small: ['class', 'id', 'style'],\r\n sub: ['class', 'id', 'style'],\r\n sup: ['class', 'id', 'style'],\r\n mark: ['class', 'id', 'style'],\r\n br: ['class', 'id', 'style'],\r\n hr: ['class', 'id', 'style'],\r\n p: ['class', 'id', 'style'],\r\n div: ['class', 'id', 'style'],\r\n span: ['class', 'id', 'style'],\r\n blockquote: ['class', 'id', 'style'],\r\n pre: ['class', 'id', 'style'],\r\n code: ['class', 'id', 'style'],\r\n h1: ['class', 'id', 'style'],\r\n h2: ['class', 'id', 'style'],\r\n h3: ['class', 'id', 'style'],\r\n h4: ['class', 'id', 'style'],\r\n h5: ['class', 'id', 'style'],\r\n h6: ['class', 'id', 'style'],\r\n ul: ['class', 'id', 'style'],\r\n ol: ['class', 'id', 'style'],\r\n li: ['class', 'id', 'style'],\r\n dl: ['class', 'id', 'style'],\r\n dt: ['class', 'id', 'style'],\r\n dd: ['class', 'id', 'style'],\r\n table: ['class', 'id', 'style'],\r\n thead: ['class', 'id', 'style'],\r\n tbody: ['class', 'id', 'style'],\r\n tfoot: ['class', 'id', 'style'],\r\n tr: ['class', 'id', 'style'],\r\n th: ['class', 'id', 'style'],\r\n td: ['class', 'id', 'style'],\r\n caption: ['class', 'id', 'style'],\r\n img: ['class', 'id', 'style', 'src', 'alt', 'width', 'height'],\r\n figure: ['class', 'id', 'style'],\r\n figcaption: ['class', 'id', 'style'],\r\n a: ['class', 'id', 'style', 'href', 'title'],\r\n abbr: ['class', 'id', 'style', 'title'],\r\n cite: ['class', 'id', 'style'],\r\n dfn: ['class', 'id', 'style'],\r\n kbd: ['class', 'id', 'style'],\r\n samp: ['class', 'id', 'style'],\r\n },\r\n css: {\r\n whiteList: {\r\n color: true,\r\n background: true,\r\n 'background-color': true,\r\n 'background-image': true,\r\n 'font-size': true,\r\n 'font-weight': true,\r\n 'text-transform': true,\r\n 'font-style': true,\r\n 'font-family': true,\r\n 'text-align': true,\r\n margin: true,\r\n padding: true,\r\n border: true,\r\n overflow: true,\r\n 'overflow-x': true,\r\n 'overflow-y': true,\r\n 'border-radius': true,\r\n 'border-color': true,\r\n display: true,\r\n flex: true,\r\n 'flex-direction': true,\r\n 'flex-wrap': true,\r\n 'flex-flow': true,\r\n 'flex-shrink': true,\r\n 'flex-grow': true,\r\n order: true,\r\n 'flex-basis': true,\r\n 'align-self': true,\r\n gap: true,\r\n 'row-gap': true,\r\n 'column-gap': true,\r\n 'justify-content': true,\r\n 'align-items': true,\r\n 'align-content': true,\r\n width: true,\r\n height: true,\r\n position: true,\r\n top: true,\r\n left: true,\r\n right: true,\r\n bottom: true,\r\n 'padding-top': true,\r\n 'padding-left': true,\r\n 'padding-right': true,\r\n 'padding-bottom': true,\r\n 'margin-top': true,\r\n 'margin-left': true,\r\n 'margin-right': true,\r\n 'margin-bottom': true,\r\n 'border-top': true,\r\n 'border-left': true,\r\n 'border-right': true,\r\n 'border-bottom': true,\r\n 'z-index': true,\r\n 'word-wrap': true,\r\n visibility: true,\r\n opacity: true,\r\n filter: true,\r\n transform: true,\r\n transition: true,\r\n cursor: true,\r\n clip: true,\r\n hyphens: true,\r\n direction: true,\r\n 'word-break': true,\r\n 'max-width': true,\r\n 'min-width': true,\r\n 'max-height': true,\r\n 'min-height': true,\r\n fill: true,\r\n 'clip-path': true,\r\n 'border-width': true,\r\n 'border-style': true,\r\n 'box-sizing': true,\r\n 'grid-template-rows': true,\r\n 'grid-template-columns': true,\r\n 'font-variant': true,\r\n 'letter-spacing': true,\r\n 'line-height': true,\r\n 'text-decoration': true,\r\n 'text-indent': true,\r\n 'white-space': true,\r\n 'word-spacing': true,\r\n 'box-shadow': true,\r\n 'transition-property': true,\r\n 'transition-duration': true,\r\n 'transition-timing-function': true,\r\n 'animation-name': true,\r\n 'animation-duration': true,\r\n },\r\n },\r\n };\r\n if (!data) return xss(htmlString, options);\r\n const replacedString = xss(getDescendantProp(data, htmlString), options);\r\n return decodeHTMLEntities(replacedString);\r\n}\r\n"],"names":["getDefaultWhiteList","whiteList","onAttr","name","value","options","onIgnoreAttr","REGEXP_URL_JAVASCRIPT","safeAttrValue","_default","util","arr","item","j","fn","scope","i","str","_","require$$0","parseStyle","css","cssLength","isParenthesisOpen","lastPos","retCSS","addNewAttr","source","ret","c","parser","DEFAULT","require$$1","require$$2","isNull","obj","shallowCopyObject","FilterCSS","me","sourcePosition","position","check","isWhite","opts","filterCSS","html","xss","exports","module","reg","match","getDefaultCSSWhiteList","defaultCSSFilter","onTag","tag","onIgnoreTag","onTagAttr","onIgnoreTagAttr","escapeHtml","REGEXP_LT","REGEXP_GT","cssFilter","friendlyAttrValue","REGEXP_DEFAULT_ON_TAG_ATTR_4","REGEXP_DEFAULT_ON_TAG_ATTR_7","REGEXP_DEFAULT_ON_TAG_ATTR_8","escapeAttrValue","REGEXP_QUOTE","REGEXP_QUOTE_2","REGEXP_ATTR_VALUE_1","REGEXP_ATTR_VALUE_COLON","REGEXP_ATTR_VALUE_NEWLINE","escapeQuote","unescapeQuote","escapeHtmlEntities","code","escapeDangerHtml5Entities","clearNonPrintableCharacter","str2","len","onIgnoreTagStripAll","StripTagBody","tags","next","isRemoveAllTag","isRemoveTag","removeList","posStart","end","rethtml","pos","stripCommentTag","retHtml","stripBlankChar","chars","char","getTagName","tagName","isClosing","parseTag","tagStart","quoteStart","currentPos","currentTagName","currentHtml","chariterator","ic","REGEXP_ILLEGAL_ATTR_NAME","parseAttr","lastMarkPos","retAttrs","tmpName","addAttr","v","findNextQuotationMark","findNextEqual","findBeforeEqual","stripQuoteWrap","isQuoteWrapString","text","require$$3","getAttrs","keysToLowerCase","FilterXSS","attributeWrapSign","stripIgnoreTagBody","info","attrs","whiteAttrList","attrsHtml","isWhiteAttr","filterXSS","isWorkerEnv","getDescendantProp","data","desc","renderer","marked","Renderer","mexp","Mexp","link","href","title","target","startsWith","Handlebars","registerHelper","numberFormattingFunction","expression","exp","compile","eval","result","setOptions","parse","decodeHTMLEntities","input","replace","string2HTML","htmlString","b","strong","em","u","small","sub","sup","mark","br","hr","p","div","span","blockquote","pre","h1","h2","h3","h4","h5","h6","ul","ol","li","dl","dt","dd","table","thead","tbody","tfoot","tr","th","td","caption","img","figure","figcaption","a","abbr","cite","dfn","kbd","samp","color","background","margin","padding","border","overflow","display","flex","order","gap","width","height","top","left","right","bottom","visibility","opacity","filter","transform","transition","cursor","clip","hyphens","direction","fill","replacedString"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}