@undp/data-viz 1.3.0 → 1.3.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 (572) hide show
  1. package/dist/AreaChart.cjs +2 -0
  2. package/dist/AreaChart.cjs.map +1 -0
  3. package/dist/AreaChart.js +530 -1
  4. package/dist/AreaChart.js.map +1 -1
  5. package/dist/Axis-DE7dSn1_.cjs +2 -0
  6. package/dist/{Axis-BlyBRMNw.cjs.map → Axis-DE7dSn1_.cjs.map} +1 -1
  7. package/dist/{Axis-CvK-w3E2.js → Axis-Ddg-seDi.js} +10 -11
  8. package/dist/{Axis-CvK-w3E2.js.map → Axis-Ddg-seDi.js.map} +1 -1
  9. package/dist/AxisTitle-BmHLMRJZ.js +20 -0
  10. package/dist/{AxisTitle-BeMxcw5I.js.map → AxisTitle-BmHLMRJZ.js.map} +1 -1
  11. package/dist/AxisTitle-CK9YeovX.cjs +2 -0
  12. package/dist/{AxisTitle-BY8MI9jC.cjs.map → AxisTitle-CK9YeovX.cjs.map} +1 -1
  13. package/dist/BarGraph.cjs +2 -0
  14. package/dist/BarGraph.cjs.map +1 -0
  15. package/dist/BarGraph.js +4043 -1
  16. package/dist/BarGraph.js.map +1 -1
  17. package/dist/BasicStatCard.cjs +2 -0
  18. package/dist/BasicStatCard.cjs.map +1 -0
  19. package/dist/BasicStatCard.js +190 -1
  20. package/dist/BasicStatCard.js.map +1 -1
  21. package/dist/BeeSwarmChart.cjs +2 -0
  22. package/dist/BeeSwarmChart.cjs.map +1 -0
  23. package/dist/BeeSwarmChart.d.ts +0 -8
  24. package/dist/BeeSwarmChart.js +1042 -1
  25. package/dist/BeeSwarmChart.js.map +1 -1
  26. package/dist/BiVariateChoroplethMap.cjs +2 -0
  27. package/dist/BiVariateChoroplethMap.cjs.map +1 -0
  28. package/dist/BiVariateChoroplethMap.js +720 -1
  29. package/dist/BiVariateChoroplethMap.js.map +1 -1
  30. package/dist/BulletChart.cjs +2 -0
  31. package/dist/BulletChart.cjs.map +1 -0
  32. package/dist/BulletChart.js +1431 -1
  33. package/dist/BulletChart.js.map +1 -1
  34. package/dist/ButterflyChart.cjs +2 -0
  35. package/dist/ButterflyChart.cjs.map +1 -0
  36. package/dist/ButterflyChart.js +692 -1
  37. package/dist/ButterflyChart.js.map +1 -1
  38. package/dist/ChoroplethMap.cjs +2 -0
  39. package/dist/ChoroplethMap.cjs.map +1 -0
  40. package/dist/ChoroplethMap.js +745 -1
  41. package/dist/ChoroplethMap.js.map +1 -1
  42. package/dist/CirclePackingGraph.cjs +2 -0
  43. package/dist/CirclePackingGraph.cjs.map +1 -0
  44. package/dist/CirclePackingGraph.d.ts +0 -8
  45. package/dist/CirclePackingGraph.js +14 -1
  46. package/dist/CirclePackingGraph.js.map +1 -1
  47. package/dist/ColorLegend.cjs +2 -0
  48. package/dist/ColorLegend.cjs.map +1 -0
  49. package/dist/ColorLegend.js +47 -1
  50. package/dist/ColorLegend.js.map +1 -1
  51. package/dist/ColorLegendWithMouseOver.cjs +2 -0
  52. package/dist/ColorLegendWithMouseOver.cjs.map +1 -0
  53. package/dist/ColorLegendWithMouseOver.js +70 -1
  54. package/dist/ColorLegendWithMouseOver.js.map +1 -1
  55. package/dist/Colors.cjs +2 -0
  56. package/dist/Colors.cjs.map +1 -0
  57. package/dist/Colors.js +561 -1
  58. package/dist/Colors.js.map +1 -1
  59. package/dist/CopyTextButton.cjs +17 -0
  60. package/dist/CopyTextButton.cjs.map +1 -0
  61. package/dist/CopyTextButton.js +698 -16
  62. package/dist/CopyTextButton.js.map +1 -1
  63. package/dist/CsvDownloadButton.cjs +23 -0
  64. package/dist/CsvDownloadButton.cjs.map +1 -0
  65. package/dist/CsvDownloadButton.js +852 -7
  66. package/dist/CsvDownloadButton.js.map +1 -1
  67. package/dist/DataCards.cjs +2 -0
  68. package/dist/DataCards.cjs.map +1 -0
  69. package/dist/DataCards.js +14 -1
  70. package/dist/DataCards.js.map +1 -1
  71. package/dist/DataTable.cjs +2 -0
  72. package/dist/DataTable.cjs.map +1 -0
  73. package/dist/DataTable.js +331 -1
  74. package/dist/DataTable.js.map +1 -1
  75. package/dist/DifferenceLineChart.cjs +2 -0
  76. package/dist/DifferenceLineChart.cjs.map +1 -0
  77. package/dist/DifferenceLineChart.js +805 -1
  78. package/dist/DifferenceLineChart.js.map +1 -1
  79. package/dist/DonutChart.cjs +2 -0
  80. package/dist/DonutChart.cjs.map +1 -0
  81. package/dist/DonutChart.js +478 -1
  82. package/dist/DonutChart.js.map +1 -1
  83. package/dist/DotDensityMap.cjs +2 -0
  84. package/dist/DotDensityMap.cjs.map +1 -0
  85. package/dist/DotDensityMap.js +600 -1
  86. package/dist/DotDensityMap.js.map +1 -1
  87. package/dist/DropdownSelect-0I2QxaVy.cjs +29 -0
  88. package/dist/DropdownSelect-0I2QxaVy.cjs.map +1 -0
  89. package/dist/DropdownSelect-CDC9lEqU.js +4193 -0
  90. package/dist/DropdownSelect-CDC9lEqU.js.map +1 -0
  91. package/dist/DualAxisLineChart.cjs +2 -0
  92. package/dist/DualAxisLineChart.cjs.map +1 -0
  93. package/dist/DualAxisLineChart.js +699 -1
  94. package/dist/DualAxisLineChart.js.map +1 -1
  95. package/dist/DumbbellChart.cjs +2 -0
  96. package/dist/DumbbellChart.cjs.map +1 -0
  97. package/dist/DumbbellChart.js +1510 -1
  98. package/dist/DumbbellChart.js.map +1 -1
  99. package/dist/{EmptyState-b2Ln487i.js → EmptyState-DdTp-Mdn.js} +8 -8
  100. package/dist/{EmptyState-b2Ln487i.js.map → EmptyState-DdTp-Mdn.js.map} +1 -1
  101. package/dist/EmptyState-d8_8SxeW.cjs +2 -0
  102. package/dist/{EmptyState-BQguKAp5.cjs.map → EmptyState-d8_8SxeW.cjs.map} +1 -1
  103. package/dist/ExcelDownloadButton.cjs +2 -0
  104. package/dist/ExcelDownloadButton.cjs.map +1 -0
  105. package/dist/ExcelDownloadButton.js +29 -1
  106. package/dist/ExcelDownloadButton.js.map +1 -1
  107. package/dist/FootNote.cjs +2 -0
  108. package/dist/FootNote.cjs.map +1 -0
  109. package/dist/FootNote.js +20 -1
  110. package/dist/FootNote.js.map +1 -1
  111. package/dist/GeoHubCompareMaps.cjs +2 -0
  112. package/dist/GeoHubCompareMaps.cjs.map +1 -0
  113. package/dist/GeoHubCompareMaps.js +370 -1
  114. package/dist/GeoHubCompareMaps.js.map +1 -1
  115. package/dist/GeoHubMap.cjs +2 -0
  116. package/dist/GeoHubMap.cjs.map +1 -0
  117. package/dist/GeoHubMap.js +429 -1
  118. package/dist/GeoHubMap.js.map +1 -1
  119. package/dist/GeoHubMapWithLayerSelection.cjs +2 -0
  120. package/dist/GeoHubMapWithLayerSelection.cjs.map +1 -0
  121. package/dist/GeoHubMapWithLayerSelection.js +307 -1
  122. package/dist/GeoHubMapWithLayerSelection.js.map +1 -1
  123. package/dist/GraphDescription.cjs +2 -0
  124. package/dist/GraphDescription.cjs.map +1 -0
  125. package/dist/GraphDescription.js +20 -1
  126. package/dist/GraphDescription.js.map +1 -1
  127. package/dist/GraphFooter.cjs +2 -0
  128. package/dist/GraphFooter.cjs.map +1 -0
  129. package/dist/GraphFooter.js +21 -1
  130. package/dist/GraphFooter.js.map +1 -1
  131. package/dist/GraphHeader.cjs +2 -0
  132. package/dist/GraphHeader.cjs.map +1 -0
  133. package/dist/GraphHeader.js +63 -1
  134. package/dist/GraphHeader.js.map +1 -1
  135. package/dist/GraphTitle.cjs +2 -0
  136. package/dist/GraphTitle.cjs.map +1 -0
  137. package/dist/GraphTitle.js +28 -1
  138. package/dist/GraphTitle.js.map +1 -1
  139. package/dist/GriddedGraphs.cjs +2 -0
  140. package/dist/GriddedGraphs.cjs.map +1 -0
  141. package/dist/GriddedGraphs.js +482 -1
  142. package/dist/GriddedGraphs.js.map +1 -1
  143. package/dist/GriddedGraphsFromConfig.cjs +2 -0
  144. package/dist/GriddedGraphsFromConfig.cjs.map +1 -0
  145. package/dist/GriddedGraphsFromConfig.js +42 -1
  146. package/dist/GriddedGraphsFromConfig.js.map +1 -1
  147. package/dist/HeatMap.cjs +2 -0
  148. package/dist/HeatMap.cjs.map +1 -0
  149. package/dist/HeatMap.js +451 -1
  150. package/dist/HeatMap.js.map +1 -1
  151. package/dist/Histogram.cjs +2 -0
  152. package/dist/Histogram.cjs.map +1 -0
  153. package/dist/Histogram.js +287 -1
  154. package/dist/Histogram.js.map +1 -1
  155. package/dist/ImageDownloadButton.cjs +2 -0
  156. package/dist/ImageDownloadButton.cjs.map +1 -0
  157. package/dist/ImageDownloadButton.js +28 -1
  158. package/dist/ImageDownloadButton.js.map +1 -1
  159. package/dist/LineChartWithConfidenceInterval.cjs +2 -0
  160. package/dist/LineChartWithConfidenceInterval.cjs.map +1 -0
  161. package/dist/LineChartWithConfidenceInterval.js +818 -1
  162. package/dist/LineChartWithConfidenceInterval.js.map +1 -1
  163. package/dist/LinearColorLegend.cjs +2 -0
  164. package/dist/LinearColorLegend.cjs.map +1 -0
  165. package/dist/LinearColorLegend.js +33 -1
  166. package/dist/LinearColorLegend.js.map +1 -1
  167. package/dist/Modal-CUU6ZK3U.js +1019 -0
  168. package/dist/Modal-CUU6ZK3U.js.map +1 -0
  169. package/dist/Modal-C_dl0EtQ.cjs +46 -0
  170. package/dist/Modal-C_dl0EtQ.cjs.map +1 -0
  171. package/dist/MultiGraphDashboard.cjs +2 -0
  172. package/dist/MultiGraphDashboard.cjs.map +1 -0
  173. package/dist/MultiGraphDashboard.js +303 -1
  174. package/dist/MultiGraphDashboard.js.map +1 -1
  175. package/dist/MultiGraphDashboardFromConfig.cjs +2 -0
  176. package/dist/MultiGraphDashboardFromConfig.cjs.map +1 -0
  177. package/dist/MultiGraphDashboardFromConfig.js +37 -1
  178. package/dist/MultiGraphDashboardFromConfig.js.map +1 -1
  179. package/dist/MultiGraphDashboardWideToLongFormat.cjs +2 -0
  180. package/dist/MultiGraphDashboardWideToLongFormat.cjs.map +1 -0
  181. package/dist/MultiGraphDashboardWideToLongFormat.js +243 -1
  182. package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -1
  183. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +2 -0
  184. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs.map +1 -0
  185. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +30 -1
  186. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js.map +1 -1
  187. package/dist/MultiLineAltChart.cjs +2 -0
  188. package/dist/MultiLineAltChart.cjs.map +1 -0
  189. package/dist/MultiLineAltChart.js +689 -1
  190. package/dist/MultiLineAltChart.js.map +1 -1
  191. package/dist/MultiLineChart.cjs +2 -0
  192. package/dist/MultiLineChart.cjs.map +1 -0
  193. package/dist/MultiLineChart.js +722 -1
  194. package/dist/MultiLineChart.js.map +1 -1
  195. package/dist/ParetoChart.cjs +2 -0
  196. package/dist/ParetoChart.cjs.map +1 -0
  197. package/dist/ParetoChart.js +636 -1
  198. package/dist/ParetoChart.js.map +1 -1
  199. package/dist/RadarChart.cjs +2 -0
  200. package/dist/RadarChart.cjs.map +1 -0
  201. package/dist/RadarChart.js +677 -1
  202. package/dist/RadarChart.js.map +1 -1
  203. package/dist/{ReferenceLine-BgDdQbDI.js → ReferenceLine-C1GpoG9d.js} +33 -34
  204. package/dist/ReferenceLine-C1GpoG9d.js.map +1 -0
  205. package/dist/ReferenceLine-CuFMk0cI.cjs +2 -0
  206. package/dist/ReferenceLine-CuFMk0cI.cjs.map +1 -0
  207. package/dist/RegressionLine-7_rKTHN_.cjs +2 -0
  208. package/dist/{RegressionLine-BfpCuD7B.cjs.map → RegressionLine-7_rKTHN_.cjs.map} +1 -1
  209. package/dist/{RegressionLine-cSljpHaE.js → RegressionLine-BFwDCTUU.js} +17 -18
  210. package/dist/{RegressionLine-cSljpHaE.js.map → RegressionLine-BFwDCTUU.js.map} +1 -1
  211. package/dist/SVGDownloadButton.cjs +2 -0
  212. package/dist/SVGDownloadButton.cjs.map +1 -0
  213. package/dist/SVGDownloadButton.js +28 -1
  214. package/dist/SVGDownloadButton.js.map +1 -1
  215. package/dist/SankeyChart.cjs +2 -0
  216. package/dist/SankeyChart.cjs.map +1 -0
  217. package/dist/SankeyChart.js +989 -1
  218. package/dist/SankeyChart.js.map +1 -1
  219. package/dist/ScatterPlot.cjs +2 -0
  220. package/dist/ScatterPlot.cjs.map +1 -0
  221. package/dist/ScatterPlot.js +828 -1
  222. package/dist/ScatterPlot.js.map +1 -1
  223. package/dist/ScrollStory.cjs +2 -0
  224. package/dist/ScrollStory.cjs.map +1 -0
  225. package/dist/ScrollStory.js +105 -1
  226. package/dist/ScrollStory.js.map +1 -1
  227. package/dist/SimpleLineChart.cjs +2 -0
  228. package/dist/SimpleLineChart.cjs.map +1 -0
  229. package/dist/SimpleLineChart.js +619 -1
  230. package/dist/SimpleLineChart.js.map +1 -1
  231. package/dist/SingleGraphDashboard.cjs +2 -0
  232. package/dist/SingleGraphDashboard.cjs.map +1 -0
  233. package/dist/SingleGraphDashboard.js +522 -1
  234. package/dist/SingleGraphDashboard.js.map +1 -1
  235. package/dist/SingleGraphDashboardFromConfig.cjs +2 -0
  236. package/dist/SingleGraphDashboardFromConfig.cjs.map +1 -0
  237. package/dist/SingleGraphDashboardFromConfig.js +34 -1
  238. package/dist/SingleGraphDashboardFromConfig.js.map +1 -1
  239. package/dist/SlopeChart.cjs +2 -0
  240. package/dist/SlopeChart.cjs.map +1 -0
  241. package/dist/SlopeChart.js +582 -1
  242. package/dist/SlopeChart.js.map +1 -1
  243. package/dist/Source.cjs +2 -0
  244. package/dist/Source.cjs.map +1 -0
  245. package/dist/Source.js +40 -1
  246. package/dist/Source.js.map +1 -1
  247. package/dist/SparkLine.cjs +2 -0
  248. package/dist/SparkLine.cjs.map +1 -0
  249. package/dist/SparkLine.js +320 -1
  250. package/dist/SparkLine.js.map +1 -1
  251. package/dist/Spinner-C85UF28E.js +30 -0
  252. package/dist/Spinner-C85UF28E.js.map +1 -0
  253. package/dist/Spinner-DA6Z5E4n.cjs +2 -0
  254. package/dist/Spinner-DA6Z5E4n.cjs.map +1 -0
  255. package/dist/StatCardFromData.cjs +2 -0
  256. package/dist/StatCardFromData.cjs.map +1 -0
  257. package/dist/StatCardFromData.js +249 -1
  258. package/dist/StatCardFromData.js.map +1 -1
  259. package/dist/StripChart.cjs +2 -0
  260. package/dist/StripChart.cjs.map +1 -0
  261. package/dist/StripChart.js +988 -1
  262. package/dist/StripChart.js.map +1 -1
  263. package/dist/ThreeDGlobe.cjs +2 -0
  264. package/dist/ThreeDGlobe.cjs.map +1 -0
  265. package/dist/ThreeDGlobe.js +451 -1
  266. package/dist/ThreeDGlobe.js.map +1 -1
  267. package/dist/ThresholdColorLegendWithMouseOver.cjs +2 -0
  268. package/dist/ThresholdColorLegendWithMouseOver.cjs.map +1 -0
  269. package/dist/ThresholdColorLegendWithMouseOver.js +130 -1
  270. package/dist/ThresholdColorLegendWithMouseOver.js.map +1 -1
  271. package/dist/{Tooltip-CzZ1wFyF.js → Tooltip-DyM5snqx.js} +15 -16
  272. package/dist/{Tooltip-CzZ1wFyF.js.map → Tooltip-DyM5snqx.js.map} +1 -1
  273. package/dist/Tooltip-n8z5bfav.cjs +2 -0
  274. package/dist/{Tooltip-BM18N_3l.cjs.map → Tooltip-n8z5bfav.cjs.map} +1 -1
  275. package/dist/TreeMapGraph.cjs +2 -0
  276. package/dist/TreeMapGraph.cjs.map +1 -0
  277. package/dist/TreeMapGraph.js +760 -1
  278. package/dist/TreeMapGraph.js.map +1 -1
  279. package/dist/Types.cjs +2 -0
  280. package/dist/Types.cjs.map +1 -0
  281. package/dist/Types.js +1 -1
  282. package/dist/Typography-Ctgfl1J5.js +140 -0
  283. package/dist/Typography-Ctgfl1J5.js.map +1 -0
  284. package/dist/Typography-k-kOjICQ.cjs +2 -0
  285. package/dist/Typography-k-kOjICQ.cjs.map +1 -0
  286. package/dist/UnitChart.cjs +2 -0
  287. package/dist/UnitChart.cjs.map +1 -0
  288. package/dist/UnitChart.js +216 -1
  289. package/dist/UnitChart.js.map +1 -1
  290. package/dist/XAxesLabels-CJMQbfVy.cjs +2 -0
  291. package/dist/{XAxesLabels-C9REbQQs.cjs.map → XAxesLabels-CJMQbfVy.cjs.map} +1 -1
  292. package/dist/{XAxesLabels-DVw7Lvuz.js → XAxesLabels-DQFo_z2R.js} +21 -22
  293. package/dist/{XAxesLabels-DVw7Lvuz.js.map → XAxesLabels-DQFo_z2R.js.map} +1 -1
  294. package/dist/{XTicksAndGridLines-CUefTINd.js → XTicksAndGridLines-Bn9u5gOM.js} +19 -20
  295. package/dist/{XTicksAndGridLines-CUefTINd.js.map → XTicksAndGridLines-Bn9u5gOM.js.map} +1 -1
  296. package/dist/XTicksAndGridLines-CCzXIV8d.cjs +2 -0
  297. package/dist/{XTicksAndGridLines-DuK35ROS.cjs.map → XTicksAndGridLines-CCzXIV8d.cjs.map} +1 -1
  298. package/dist/YAxesLabels-BXLTX7AI.cjs +2 -0
  299. package/dist/{YAxesLabels-DhBdLk3Z.cjs.map → YAxesLabels-BXLTX7AI.cjs.map} +1 -1
  300. package/dist/{YAxesLabels-CYVY053X.js → YAxesLabels-H5-002X5.js} +11 -12
  301. package/dist/{YAxesLabels-CYVY053X.js.map → YAxesLabels-H5-002X5.js.map} +1 -1
  302. package/dist/{YTicksAndGridLines-BJRXuBdC.js → YTicksAndGridLines-B6ah7CRf.js} +14 -15
  303. package/dist/{YTicksAndGridLines-BJRXuBdC.js.map → YTicksAndGridLines-B6ah7CRf.js.map} +1 -1
  304. package/dist/YTicksAndGridLines-DBDuz6vb.cjs +2 -0
  305. package/dist/{YTicksAndGridLines-CtLvzExe.cjs.map → YTicksAndGridLines-DBDuz6vb.cjs.map} +1 -1
  306. package/dist/{checkIfMultiple-CaefP4X2.js → checkIfMultiple-BB7PlCNh.js} +1013 -518
  307. package/dist/checkIfMultiple-BB7PlCNh.js.map +1 -0
  308. package/dist/checkIfMultiple-D5ysrI7G.cjs +12 -0
  309. package/dist/checkIfMultiple-D5ysrI7G.cjs.map +1 -0
  310. package/dist/checkIfNullOrUndefined-BCW3Y1ML.cjs +2 -0
  311. package/dist/checkIfNullOrUndefined-BCW3Y1ML.cjs.map +1 -0
  312. package/dist/checkIfNullOrUndefined-DmfiKkNw.js +7 -0
  313. package/dist/checkIfNullOrUndefined-DmfiKkNw.js.map +1 -0
  314. package/dist/customArea-BYNyxAkm.cjs +2 -0
  315. package/dist/{customArea-B47Ew5cT.cjs.map → customArea-BYNyxAkm.cjs.map} +1 -1
  316. package/dist/{customArea-I3MsoqIl.js → customArea-CaxScFmW.js} +29 -30
  317. package/dist/{customArea-I3MsoqIl.js.map → customArea-CaxScFmW.js.map} +1 -1
  318. package/dist/excelDownload-BOA-lskf.js +19 -0
  319. package/dist/excelDownload-BOA-lskf.js.map +1 -0
  320. package/dist/excelDownload-BQpsCa62.cjs +2 -0
  321. package/dist/excelDownload-BQpsCa62.cjs.map +1 -0
  322. package/dist/fetchAndParseData-Bcmr659B.js +1196 -0
  323. package/dist/fetchAndParseData-Bcmr659B.js.map +1 -0
  324. package/dist/fetchAndParseData-DmgQtB9n.cjs +16 -0
  325. package/dist/fetchAndParseData-DmgQtB9n.cjs.map +1 -0
  326. package/dist/fetchAndParseData.cjs +2 -0
  327. package/dist/fetchAndParseData.cjs.map +1 -0
  328. package/dist/fetchAndParseData.js +9 -15
  329. package/dist/fetchAndParseData.js.map +1 -1
  330. package/dist/getGraphList-DuColTJM.js +265 -0
  331. package/dist/getGraphList-DuColTJM.js.map +1 -0
  332. package/dist/getGraphList-gf02xgT2.cjs +2 -0
  333. package/dist/getGraphList-gf02xgT2.cjs.map +1 -0
  334. package/dist/getJenks-TWQvbuOz.cjs +2 -0
  335. package/dist/getJenks-TWQvbuOz.cjs.map +1 -0
  336. package/dist/getJenks-VhM3GIoC.js +23 -0
  337. package/dist/getJenks-VhM3GIoC.js.map +1 -0
  338. package/dist/getSchema.cjs +2 -0
  339. package/dist/getSchema.cjs.map +1 -0
  340. package/dist/getSchema.js +910 -1
  341. package/dist/getSchema.js.map +1 -1
  342. package/dist/getSliderMarks-C0jptXeP.js +1054 -0
  343. package/dist/getSliderMarks-C0jptXeP.js.map +1 -0
  344. package/dist/getSliderMarks-CtsEXiLV.cjs +6 -0
  345. package/dist/getSliderMarks-CtsEXiLV.cjs.map +1 -0
  346. package/dist/getTextColorBasedOnBgColor-B6Nk2WBf.js +28 -0
  347. package/dist/getTextColorBasedOnBgColor-B6Nk2WBf.js.map +1 -0
  348. package/dist/getTextColorBasedOnBgColor-nqY-bsM_.cjs +2 -0
  349. package/dist/getTextColorBasedOnBgColor-nqY-bsM_.cjs.map +1 -0
  350. package/dist/getUniqValue-BtUENB2H.js +20 -0
  351. package/dist/getUniqValue-BtUENB2H.js.map +1 -0
  352. package/dist/getUniqValue-CHqgSss5.cjs +2 -0
  353. package/dist/getUniqValue-CHqgSss5.cjs.map +1 -0
  354. package/dist/imageDownload-CgDcm1Sj.cjs +3 -0
  355. package/dist/imageDownload-CgDcm1Sj.cjs.map +1 -0
  356. package/dist/imageDownload-Dcci2LEy.js +495 -0
  357. package/dist/imageDownload-Dcci2LEy.js.map +1 -0
  358. package/dist/index-BVnYktl4.js +435 -0
  359. package/dist/index-BVnYktl4.js.map +1 -0
  360. package/dist/index-BW_-wD2k.cjs +2 -0
  361. package/dist/index-BW_-wD2k.cjs.map +1 -0
  362. package/dist/{index-DXmF_0ez.js → index-BmCqpO1B.js} +74 -40
  363. package/dist/index-BmCqpO1B.js.map +1 -0
  364. package/dist/{index-Db-Yg_Ud.js → index-BxAUvrua.js} +19 -19
  365. package/dist/{index-Db-Yg_Ud.js.map → index-BxAUvrua.js.map} +1 -1
  366. package/dist/index-CHPV5EwG-BPSP-7Jg.js +3341 -0
  367. package/dist/index-CHPV5EwG-BPSP-7Jg.js.map +1 -0
  368. package/dist/index-CHPV5EwG-DDoeWRVt.cjs +44 -0
  369. package/dist/index-CHPV5EwG-DDoeWRVt.cjs.map +1 -0
  370. package/dist/index-CylX-pWB.cjs +2 -0
  371. package/dist/{index-BYroABPm.cjs.map → index-CylX-pWB.cjs.map} +1 -1
  372. package/dist/index-D9h2WYDS.cjs +22 -0
  373. package/dist/index-D9h2WYDS.cjs.map +1 -0
  374. package/dist/index-DG3YrCr5-D3FrrXj8.js +459 -0
  375. package/dist/index-DG3YrCr5-D3FrrXj8.js.map +1 -0
  376. package/dist/index-DG3YrCr5-v7rayV3N.cjs +2 -0
  377. package/dist/index-DG3YrCr5-v7rayV3N.cjs.map +1 -0
  378. package/dist/index-DVOJ7vxH.cjs +10 -0
  379. package/dist/{index-a2C2Bqn2.cjs.map → index-DVOJ7vxH.cjs.map} +1 -1
  380. package/dist/index-D_n8aamX.cjs +2 -0
  381. package/dist/index-D_n8aamX.cjs.map +1 -0
  382. package/dist/index-OCoyy1wG.js +635 -0
  383. package/dist/index-OCoyy1wG.js.map +1 -0
  384. package/dist/{index-DzdwZ2OA.js → index-n_RI8T0n.js} +3 -3
  385. package/dist/{index-DzdwZ2OA.js.map → index-n_RI8T0n.js.map} +1 -1
  386. package/dist/index-tvAyXPPW-DBlMKnNB.js +47 -0
  387. package/dist/index-tvAyXPPW-DBlMKnNB.js.map +1 -0
  388. package/dist/index-tvAyXPPW-DPOG-C2i.cjs +2 -0
  389. package/dist/index-tvAyXPPW-DPOG-C2i.cjs.map +1 -0
  390. package/dist/index.cjs +2 -0
  391. package/dist/index.cjs.map +1 -0
  392. package/dist/index.d.ts +1 -5
  393. package/dist/index.js +180 -1
  394. package/dist/index.js.map +1 -1
  395. package/dist/numberFormattingFunction-02t-wJta.cjs +2 -0
  396. package/dist/numberFormattingFunction-02t-wJta.cjs.map +1 -0
  397. package/dist/numberFormattingFunction-14YCbkN2.js +13 -0
  398. package/dist/numberFormattingFunction-14YCbkN2.js.map +1 -0
  399. package/dist/{use-in-view-CZPXmTZM.js → proxy-DJxJg1kD.js} +699 -732
  400. package/dist/proxy-DJxJg1kD.js.map +1 -0
  401. package/dist/{use-in-view-Dl1CsAIo.cjs → proxy-PQd2AItT.cjs} +2 -2
  402. package/dist/proxy-PQd2AItT.cjs.map +1 -0
  403. package/dist/removeOutliers-DR48e-18.js +57 -0
  404. package/dist/removeOutliers-DR48e-18.js.map +1 -0
  405. package/dist/removeOutliers-WELHHqiI.cjs +2 -0
  406. package/dist/removeOutliers-WELHHqiI.cjs.map +1 -0
  407. package/dist/{string2HTML-BX0oNw83.js → string2HTML-CWHGfz_d.js} +2 -2
  408. package/dist/{string2HTML-BX0oNw83.js.map → string2HTML-CWHGfz_d.js.map} +1 -1
  409. package/dist/{string2HTML-X4ZYX5jI.cjs → string2HTML-D2Avudmb.cjs} +2 -2
  410. package/dist/{string2HTML-X4ZYX5jI.cjs.map → string2HTML-D2Avudmb.cjs.map} +1 -1
  411. package/dist/svgDownload-C2-E3yf2.js +9 -0
  412. package/dist/svgDownload-C2-E3yf2.js.map +1 -0
  413. package/dist/svgDownload-D9zEGjTF.cjs +2 -0
  414. package/dist/svgDownload-D9zEGjTF.cjs.map +1 -0
  415. package/dist/toConsumableArray-DiWOvh_d-DcLaZvDq.cjs +4 -0
  416. package/dist/toConsumableArray-DiWOvh_d-DcLaZvDq.cjs.map +1 -0
  417. package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js +145 -0
  418. package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js.map +1 -0
  419. package/dist/transformData.cjs +2 -0
  420. package/dist/transformData.cjs.map +1 -0
  421. package/dist/transformData.d.ts +170 -0
  422. package/dist/transformData.js +10 -0
  423. package/dist/transformData.js.map +1 -0
  424. package/dist/transformDataForAggregation-BUGJnson.cjs +2 -0
  425. package/dist/transformDataForAggregation-BUGJnson.cjs.map +1 -0
  426. package/dist/transformDataForAggregation-DAQJWGNL.js +759 -0
  427. package/dist/transformDataForAggregation-DAQJWGNL.js.map +1 -0
  428. package/dist/transformDataForGraphFromFile-CrntpaMU.cjs +2 -0
  429. package/dist/transformDataForGraphFromFile-CrntpaMU.cjs.map +1 -0
  430. package/dist/transformDataForGraphFromFile-DdNiOWeC.js +24 -0
  431. package/dist/transformDataForGraphFromFile-DdNiOWeC.js.map +1 -0
  432. package/dist/use-in-view-BAHrBy6b.js +40 -0
  433. package/dist/use-in-view-BAHrBy6b.js.map +1 -0
  434. package/dist/use-in-view-BCmzDU2O.cjs +2 -0
  435. package/dist/use-in-view-BCmzDU2O.cjs.map +1 -0
  436. package/dist/utils.cjs +2 -0
  437. package/dist/utils.cjs.map +1 -0
  438. package/dist/utils.d.ts +217 -0
  439. package/dist/utils.js +27 -0
  440. package/dist/utils.js.map +1 -0
  441. package/dist/validateSchema.cjs +2 -0
  442. package/dist/validateSchema.cjs.map +1 -0
  443. package/dist/validateSchema.js +104 -1
  444. package/dist/validateSchema.js.map +1 -1
  445. package/dist/x-CnsEH4Ox-CGGXQl4M.cjs +27 -0
  446. package/dist/x-CnsEH4Ox-CGGXQl4M.cjs.map +1 -0
  447. package/dist/x-CnsEH4Ox-DDvAJndW.js +101 -0
  448. package/dist/x-CnsEH4Ox-DDvAJndW.js.map +1 -0
  449. package/package.json +15 -90
  450. package/dist/Axis-BlyBRMNw.cjs +0 -2
  451. package/dist/AxisTitle-BY8MI9jC.cjs +0 -2
  452. package/dist/AxisTitle-BeMxcw5I.js +0 -21
  453. package/dist/DropdownSelect-CuzV7gdj.cjs +0 -29
  454. package/dist/DropdownSelect-CuzV7gdj.cjs.map +0 -1
  455. package/dist/DropdownSelect-DmZsXrhY.js +0 -2698
  456. package/dist/DropdownSelect-DmZsXrhY.js.map +0 -1
  457. package/dist/EmptyState-BQguKAp5.cjs +0 -2
  458. package/dist/Modal-C9txyGOk.js +0 -723
  459. package/dist/Modal-C9txyGOk.js.map +0 -1
  460. package/dist/Modal-cQF2UQIa.cjs +0 -46
  461. package/dist/Modal-cQF2UQIa.cjs.map +0 -1
  462. package/dist/ReferenceLine-BgDdQbDI.js.map +0 -1
  463. package/dist/ReferenceLine-Bsb5jeE4.cjs +0 -2
  464. package/dist/ReferenceLine-Bsb5jeE4.cjs.map +0 -1
  465. package/dist/RegressionLine-BfpCuD7B.cjs +0 -2
  466. package/dist/Spinner-DN3s4S0H.js +0 -17
  467. package/dist/Spinner-DN3s4S0H.js.map +0 -1
  468. package/dist/Spinner-UmN-KPe9.cjs +0 -2
  469. package/dist/Spinner-UmN-KPe9.cjs.map +0 -1
  470. package/dist/Tooltip-BM18N_3l.cjs +0 -2
  471. package/dist/Typography-CDR-DAHH.cjs +0 -2
  472. package/dist/Typography-CDR-DAHH.cjs.map +0 -1
  473. package/dist/Typography-XJoSE-By.js +0 -58
  474. package/dist/Typography-XJoSE-By.js.map +0 -1
  475. package/dist/XAxesLabels-C9REbQQs.cjs +0 -2
  476. package/dist/XTicksAndGridLines-DuK35ROS.cjs +0 -2
  477. package/dist/YAxesLabels-DhBdLk3Z.cjs +0 -2
  478. package/dist/YTicksAndGridLines-CtLvzExe.cjs +0 -2
  479. package/dist/checkIfMultiple-CaefP4X2.js.map +0 -1
  480. package/dist/checkIfMultiple-D3h8to1T.cjs +0 -12
  481. package/dist/checkIfMultiple-D3h8to1T.cjs.map +0 -1
  482. package/dist/checkIfNullOrUndefined.d.ts +0 -15
  483. package/dist/checkIfNullOrUndefined.js +0 -2
  484. package/dist/checkIfNullOrUndefined.js.map +0 -1
  485. package/dist/customArea-B47Ew5cT.cjs +0 -2
  486. package/dist/excelDownload.d.ts +0 -31
  487. package/dist/excelDownload.js +0 -2
  488. package/dist/excelDownload.js.map +0 -1
  489. package/dist/generateCodes.d.ts +0 -25
  490. package/dist/generateCodes.js +0 -2
  491. package/dist/generateCodes.js.map +0 -1
  492. package/dist/getJenks.d.ts +0 -17
  493. package/dist/getJenks.js +0 -2
  494. package/dist/getJenks.js.map +0 -1
  495. package/dist/getPercentileValue.d.ts +0 -13
  496. package/dist/getPercentileValue.js +0 -2
  497. package/dist/getPercentileValue.js.map +0 -1
  498. package/dist/getQueryParamsFromLink.d.ts +0 -18
  499. package/dist/getQueryParamsFromLink.js +0 -2
  500. package/dist/getQueryParamsFromLink.js.map +0 -1
  501. package/dist/getSliderMarks-CWajGCGq.js +0 -719
  502. package/dist/getSliderMarks-CWajGCGq.js.map +0 -1
  503. package/dist/getSliderMarks-DDJ1CdhL.cjs +0 -6
  504. package/dist/getSliderMarks-DDJ1CdhL.cjs.map +0 -1
  505. package/dist/getTextColorBasedOnBgColor.d.ts +0 -13
  506. package/dist/getTextColorBasedOnBgColor.js +0 -2
  507. package/dist/getTextColorBasedOnBgColor.js.map +0 -1
  508. package/dist/getUniqValue.d.ts +0 -18
  509. package/dist/getUniqValue.js +0 -2
  510. package/dist/getUniqValue.js.map +0 -1
  511. package/dist/graphList.d.ts +0 -9
  512. package/dist/graphList.js +0 -2
  513. package/dist/graphList.js.map +0 -1
  514. package/dist/imageDownload.d.ts +0 -16
  515. package/dist/imageDownload.js +0 -3
  516. package/dist/imageDownload.js.map +0 -1
  517. package/dist/index-01r5X3Gr-9jE0ObrK.cjs +0 -2
  518. package/dist/index-01r5X3Gr-9jE0ObrK.cjs.map +0 -1
  519. package/dist/index-01r5X3Gr-kH7FxQ7P.js +0 -451
  520. package/dist/index-01r5X3Gr-kH7FxQ7P.js.map +0 -1
  521. package/dist/index-BGMGC-HN.cjs +0 -22
  522. package/dist/index-BGMGC-HN.cjs.map +0 -1
  523. package/dist/index-BHm2KTjD-2e-Fu8L-.js +0 -702
  524. package/dist/index-BHm2KTjD-2e-Fu8L-.js.map +0 -1
  525. package/dist/index-BHm2KTjD-D8FylaKc.cjs +0 -44
  526. package/dist/index-BHm2KTjD-D8FylaKc.cjs.map +0 -1
  527. package/dist/index-BIPNFFja.js +0 -506
  528. package/dist/index-BIPNFFja.js.map +0 -1
  529. package/dist/index-BYroABPm.cjs +0 -2
  530. package/dist/index-CEc_9zWy.cjs +0 -2
  531. package/dist/index-CEc_9zWy.cjs.map +0 -1
  532. package/dist/index-CbVeVrla.cjs +0 -2
  533. package/dist/index-CbVeVrla.cjs.map +0 -1
  534. package/dist/index-CqzhBPuO-CfQywbdq.js +0 -41
  535. package/dist/index-CqzhBPuO-CfQywbdq.js.map +0 -1
  536. package/dist/index-CqzhBPuO-raKZqS7l.cjs +0 -2
  537. package/dist/index-CqzhBPuO-raKZqS7l.cjs.map +0 -1
  538. package/dist/index-DSnvdkHZ.js +0 -495
  539. package/dist/index-DSnvdkHZ.js.map +0 -1
  540. package/dist/index-DXmF_0ez.js.map +0 -1
  541. package/dist/index-a2C2Bqn2.cjs +0 -10
  542. package/dist/numberFormattingFunction.d.ts +0 -22
  543. package/dist/numberFormattingFunction.js +0 -2
  544. package/dist/numberFormattingFunction.js.map +0 -1
  545. package/dist/removeOutliers.d.ts +0 -16
  546. package/dist/removeOutliers.js +0 -2
  547. package/dist/removeOutliers.js.map +0 -1
  548. package/dist/svgDownload.d.ts +0 -16
  549. package/dist/svgDownload.js +0 -2
  550. package/dist/svgDownload.js.map +0 -1
  551. package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js +0 -139
  552. package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js.map +0 -1
  553. package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs +0 -4
  554. package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs.map +0 -1
  555. package/dist/transformColumnsToArray.d.ts +0 -38
  556. package/dist/transformColumnsToArray.js +0 -2
  557. package/dist/transformColumnsToArray.js.map +0 -1
  558. package/dist/transformDataForAggregation.d.ts +0 -38
  559. package/dist/transformDataForAggregation.js +0 -2
  560. package/dist/transformDataForAggregation.js.map +0 -1
  561. package/dist/transformDataForGraph.d.ts +0 -47
  562. package/dist/transformDataForGraph.js +0 -2
  563. package/dist/transformDataForGraph.js.map +0 -1
  564. package/dist/transformDataForGraphFromFile.d.ts +0 -66
  565. package/dist/transformDataForGraphFromFile.js +0 -2
  566. package/dist/transformDataForGraphFromFile.js.map +0 -1
  567. package/dist/use-in-view-CZPXmTZM.js.map +0 -1
  568. package/dist/use-in-view-Dl1CsAIo.cjs.map +0 -1
  569. package/dist/x-Dft9NVe_-DcB7wtv5.js +0 -61
  570. package/dist/x-Dft9NVe_-DcB7wtv5.js.map +0 -1
  571. package/dist/x-Dft9NVe_-LeyJu02C.cjs +0 -27
  572. package/dist/x-Dft9NVe_-LeyJu02C.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"string2HTML-X4ZYX5jI.cjs","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","mexp","Mexp","href","title","target","Handlebars","numberFormattingFunction","expression","exp","result","decodeHTMLEntities","input","string2HTML","htmlString","replacedString"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
1
+ {"version":3,"file":"string2HTML-D2Avudmb.cjs","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","mexp","Mexp","href","title","target","Handlebars","numberFormattingFunction","expression","exp","result","decodeHTMLEntities","input","string2HTML","htmlString","replacedString"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
@@ -0,0 +1,9 @@
1
+ import { elementToSVG as c } from "dom-to-svg";
2
+ function s(o, n) {
3
+ const t = c(o), i = new XMLSerializer().serializeToString(t), l = new Blob([i], { type: "application/xml" }), e = document.createElement("a");
4
+ e.href = window.URL.createObjectURL(l), e.download = `${n}.svg`, document.body.appendChild(e), e.click(), document.body.removeChild(e);
5
+ }
6
+ export {
7
+ s
8
+ };
9
+ //# sourceMappingURL=svgDownload-C2-E3yf2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svgDownload-C2-E3yf2.js","sources":["../src/Utils/svgDownload.ts"],"sourcesContent":["import { elementToSVG } from 'dom-to-svg';\r\n/**\r\n * Downloads an SVG representation of a specified HTML element.\r\n *\r\n * Converts the HTML element into an SVG format using the `dom-to-svg` library, serializes it to a string,\r\n * and creates a downloadable `.svg` file.\r\n *\r\n * @param node - The HTMLElement to convert to SVG and download.\r\n * @param filename - The desired filename for the downloaded SVG file (without extension).\r\n *\r\n * @example\r\n * const element = document.getElementById('myElement');\r\n * svgDownload(element, 'downloaded-svg');\r\n */\r\nexport function svgDownload(node: HTMLElement, filename: string) {\r\n const svgDocument = elementToSVG(node);\r\n const serializer = new XMLSerializer();\r\n const xmlString = serializer.serializeToString(svgDocument);\r\n const blob = new Blob([xmlString], { type: 'application/xml' });\r\n const link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = `${filename}.svg`;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n}\r\n"],"names":["svgDownload","node","filename","svgDocument","elementToSVG","xmlString","blob","link"],"mappings":";AAcO,SAASA,EAAYC,GAAmBC,GAAkB;AAC/D,QAAMC,IAAcC,EAAaH,CAAI,GAE/BI,IADa,IAAI,cAAA,EACM,kBAAkBF,CAAW,GACpDG,IAAO,IAAI,KAAK,CAACD,CAAS,GAAG,EAAE,MAAM,mBAAmB,GACxDE,IAAO,SAAS,cAAc,GAAG;AACvC,EAAAA,EAAK,OAAO,OAAO,IAAI,gBAAgBD,CAAI,GAC3CC,EAAK,WAAW,GAAGL,CAAQ,QAC3B,SAAS,KAAK,YAAYK,CAAI,GAC9BA,EAAK,MAAA,GACL,SAAS,KAAK,YAAYA,CAAI;AAChC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const l=require("dom-to-svg");function r(o,n){const t=l.elementToSVG(o),i=new XMLSerializer().serializeToString(t),c=new Blob([i],{type:"application/xml"}),e=document.createElement("a");e.href=window.URL.createObjectURL(c),e.download=`${n}.svg`,document.body.appendChild(e),e.click(),document.body.removeChild(e)}exports.svgDownload=r;
2
+ //# sourceMappingURL=svgDownload-D9zEGjTF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svgDownload-D9zEGjTF.cjs","sources":["../src/Utils/svgDownload.ts"],"sourcesContent":["import { elementToSVG } from 'dom-to-svg';\r\n/**\r\n * Downloads an SVG representation of a specified HTML element.\r\n *\r\n * Converts the HTML element into an SVG format using the `dom-to-svg` library, serializes it to a string,\r\n * and creates a downloadable `.svg` file.\r\n *\r\n * @param node - The HTMLElement to convert to SVG and download.\r\n * @param filename - The desired filename for the downloaded SVG file (without extension).\r\n *\r\n * @example\r\n * const element = document.getElementById('myElement');\r\n * svgDownload(element, 'downloaded-svg');\r\n */\r\nexport function svgDownload(node: HTMLElement, filename: string) {\r\n const svgDocument = elementToSVG(node);\r\n const serializer = new XMLSerializer();\r\n const xmlString = serializer.serializeToString(svgDocument);\r\n const blob = new Blob([xmlString], { type: 'application/xml' });\r\n const link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = `${filename}.svg`;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n}\r\n"],"names":["svgDownload","node","filename","svgDocument","elementToSVG","xmlString","blob","link"],"mappings":"2CAcO,SAASA,EAAYC,EAAmBC,EAAkB,CAC/D,MAAMC,EAAcC,EAAAA,aAAaH,CAAI,EAE/BI,EADa,IAAI,cAAA,EACM,kBAAkBF,CAAW,EACpDG,EAAO,IAAI,KAAK,CAACD,CAAS,EAAG,CAAE,KAAM,kBAAmB,EACxDE,EAAO,SAAS,cAAc,GAAG,EACvCA,EAAK,KAAO,OAAO,IAAI,gBAAgBD,CAAI,EAC3CC,EAAK,SAAW,GAAGL,CAAQ,OAC3B,SAAS,KAAK,YAAYK,CAAI,EAC9BA,EAAK,MAAA,EACL,SAAS,KAAK,YAAYA,CAAI,CAChC"}
@@ -0,0 +1,4 @@
1
+ "use strict";function i(t){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},i(t)}function g(t,r){if(i(t)!="object"||!t)return t;var e=t[Symbol.toPrimitive];if(e!==void 0){var n=e.call(t,r);if(i(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(r==="string"?String:Number)(t)}function p(t){var r=g(t,"string");return i(r)=="symbol"?r:r+""}function m(t,r,e){return(r=p(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function s(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),e.push.apply(e,n)}return e}function j(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?s(Object(e),!0).forEach(function(n){m(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):s(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function h(t){if(Array.isArray(t))return t}function d(t,r){var e=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(e!=null){var n,o,u,l,f=[],a=!0,b=!1;try{if(u=(e=e.call(t)).next,r===0){if(Object(e)!==e)return;a=!1}else for(;!(a=(n=u.call(e)).done)&&(f.push(n.value),f.length!==r);a=!0);}catch(v){b=!0,o=v}finally{try{if(!a&&e.return!=null&&(l=e.return(),Object(l)!==l))return}finally{if(b)throw o}}return f}}function c(t,r){(r==null||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}function O(t,r){if(t){if(typeof t=="string")return c(t,r);var e={}.toString.call(t).slice(8,-1);return e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set"?Array.from(t):e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?c(t,r):void 0}}function S(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function w(t,r){return h(t)||d(t,r)||O(t,r)||S()}function P(t,r){if(t==null)return{};var e={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(r.indexOf(n)!==-1)continue;e[n]=t[n]}return e}function A(t,r){if(t==null)return{};var e,n,o=P(t,r);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(n=0;n<u.length;n++)e=u[n],r.indexOf(e)===-1&&{}.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}function y(){return y=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var n in e)({}).hasOwnProperty.call(e,n)&&(t[n]=e[n])}return t},y.apply(null,arguments)}function E(t){if(Array.isArray(t))return c(t)}function I(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function T(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
3
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function D(t){return E(t)||I(t)||O(t)||T()}exports.A=j;exports.E=D;exports.I=w;exports.O=p;exports.T=A;exports.a=i;exports.b=y;exports.d=m;
4
+ //# sourceMappingURL=toConsumableArray-DiWOvh_d-DcLaZvDq.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toConsumableArray-DiWOvh_d-DcLaZvDq.cjs","sources":["../node_modules/@undp/design-system-react/dist/toConsumableArray-DiWOvh_d.js"],"sourcesContent":["function a(r) {\n \"@babel/helpers - typeof\";\n return a = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(t) {\n return typeof t;\n } : function(t) {\n return t && typeof Symbol == \"function\" && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t;\n }, a(r);\n}\nfunction v(r, t) {\n if (a(r) != \"object\" || !r) return r;\n var e = r[Symbol.toPrimitive];\n if (e !== void 0) {\n var n = e.call(r, t);\n if (a(n) != \"object\") return n;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (t === \"string\" ? String : Number)(r);\n}\nfunction O(r) {\n var t = v(r, \"string\");\n return a(t) == \"symbol\" ? t : t + \"\";\n}\nfunction d(r, t, e) {\n return (t = O(t)) in r ? Object.defineProperty(r, t, {\n value: e,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : r[t] = e, r;\n}\nfunction s(r, t) {\n var e = Object.keys(r);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(r);\n t && (n = n.filter(function(o) {\n return Object.getOwnPropertyDescriptor(r, o).enumerable;\n })), e.push.apply(e, n);\n }\n return e;\n}\nfunction A(r) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t] != null ? arguments[t] : {};\n t % 2 ? s(Object(e), !0).forEach(function(n) {\n d(r, n, e[n]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(r, Object.getOwnPropertyDescriptors(e)) : s(Object(e)).forEach(function(n) {\n Object.defineProperty(r, n, Object.getOwnPropertyDescriptor(e, n));\n });\n }\n return r;\n}\nfunction g(r) {\n if (Array.isArray(r)) return r;\n}\nfunction h(r, t) {\n var e = r == null ? null : typeof Symbol < \"u\" && r[Symbol.iterator] || r[\"@@iterator\"];\n if (e != null) {\n var n, o, i, l, c = [], u = !0, y = !1;\n try {\n if (i = (e = e.call(r)).next, t === 0) {\n if (Object(e) !== e) return;\n u = !1;\n } else for (; !(u = (n = i.call(e)).done) && (c.push(n.value), c.length !== t); u = !0) ;\n } catch (m) {\n y = !0, o = m;\n } finally {\n try {\n if (!u && e.return != null && (l = e.return(), Object(l) !== l)) return;\n } finally {\n if (y) throw o;\n }\n }\n return c;\n }\n}\nfunction f(r, t) {\n (t == null || t > r.length) && (t = r.length);\n for (var e = 0, n = Array(t); e < t; e++) n[e] = r[e];\n return n;\n}\nfunction p(r, t) {\n if (r) {\n if (typeof r == \"string\") return f(r, t);\n var e = {}.toString.call(r).slice(8, -1);\n return e === \"Object\" && r.constructor && (e = r.constructor.name), e === \"Map\" || e === \"Set\" ? Array.from(r) : e === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e) ? f(r, t) : void 0;\n }\n}\nfunction j() {\n throw new TypeError(`Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);\n}\nfunction I(r, t) {\n return g(r) || h(r, t) || p(r, t) || j();\n}\nfunction S(r, t) {\n if (r == null) return {};\n var e = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (t.indexOf(n) !== -1) continue;\n e[n] = r[n];\n }\n return e;\n}\nfunction T(r, t) {\n if (r == null) return {};\n var e, n, o = S(r, t);\n if (Object.getOwnPropertySymbols) {\n var i = Object.getOwnPropertySymbols(r);\n for (n = 0; n < i.length; n++) e = i[n], t.indexOf(e) === -1 && {}.propertyIsEnumerable.call(r, e) && (o[e] = r[e]);\n }\n return o;\n}\nfunction b() {\n return b = Object.assign ? Object.assign.bind() : function(r) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n for (var n in e) ({}).hasOwnProperty.call(e, n) && (r[n] = e[n]);\n }\n return r;\n }, b.apply(null, arguments);\n}\nfunction P(r) {\n if (Array.isArray(r)) return f(r);\n}\nfunction w(r) {\n if (typeof Symbol < \"u\" && r[Symbol.iterator] != null || r[\"@@iterator\"] != null) return Array.from(r);\n}\nfunction _() {\n throw new TypeError(`Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);\n}\nfunction E(r) {\n return P(r) || w(r) || p(r) || _();\n}\nexport {\n T as _,\n I as a,\n A as b,\n a as c,\n b as d,\n d as e,\n E as f,\n O as t\n};\n//# sourceMappingURL=toConsumableArray-DiWOvh_d.js.map\n"],"names":["a","r","t","v","O","d","A","g","h","i","c","u","y","m","f","p","j","I","S","T","b","P","w","_","E"],"mappings":"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","x_google_ignoreList":[0]}