drizzle-cube 0.4.40 → 0.4.41

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 (161) hide show
  1. package/dist/cli/index.cjs +439 -0
  2. package/dist/client/charts/ChartLoader.d.ts +18 -3
  3. package/dist/client/charts/chartConfigRegistry.d.ts +11 -1
  4. package/dist/client/charts/chartPlugin.d.ts +74 -0
  5. package/dist/client/charts/lazyChartConfigRegistry.d.ts +10 -0
  6. package/dist/client/charts.js +13 -15
  7. package/dist/client/chunks/{DashboardEditModal-iGhIvNP6.js → DashboardEditModal-D_7J62sG.js} +683 -685
  8. package/dist/client/chunks/DashboardEditModal-D_7J62sG.js.map +1 -0
  9. package/dist/client/chunks/{FieldSearchModal-BxQ5JhWz.js → FieldSearchModal-5Qz6vvTz.js} +15 -16
  10. package/dist/client/chunks/{FieldSearchModal-BxQ5JhWz.js.map → FieldSearchModal-5Qz6vvTz.js.map} +1 -1
  11. package/dist/client/chunks/{RetentionCombinedChart-D4Yf1TnQ.js → RetentionCombinedChart-B1hUYaXt.js} +2 -2
  12. package/dist/client/chunks/{RetentionCombinedChart-D4Yf1TnQ.js.map → RetentionCombinedChart-B1hUYaXt.js.map} +1 -1
  13. package/dist/client/chunks/{RetentionHeatmap-BoGY6mlZ.js → RetentionHeatmap-Dn2ocjVf.js} +2 -2
  14. package/dist/client/chunks/{RetentionHeatmap-BoGY6mlZ.js.map → RetentionHeatmap-Dn2ocjVf.js.map} +1 -1
  15. package/dist/client/chunks/{analysis-builder-DEGG5NwE.js → analysis-builder-DPJJiHVx.js} +1506 -1564
  16. package/dist/client/chunks/analysis-builder-DPJJiHVx.js.map +1 -0
  17. package/dist/client/chunks/{analysis-builder-shared-BxHYfTzo.js → analysis-builder-shared-C-C-rOgu.js} +762 -778
  18. package/dist/client/chunks/analysis-builder-shared-C-C-rOgu.js.map +1 -0
  19. package/dist/client/chunks/{chart-bar-Bx4oKlqo.js → chart-bar-DVzmau1G.js} +1 -1
  20. package/dist/client/chunks/{chart-bar-Bx4oKlqo.js.map → chart-bar-DVzmau1G.js.map} +1 -1
  21. package/dist/client/chunks/{chart-box-plot-CVIi1aM5.js → chart-box-plot-CCmbHv1Y.js} +1 -1
  22. package/dist/client/chunks/{chart-box-plot-CVIi1aM5.js.map → chart-box-plot-CCmbHv1Y.js.map} +1 -1
  23. package/dist/client/chunks/{chart-bubble-DvyG15UB.js → chart-bubble-S6qSwWdK.js} +1 -1
  24. package/dist/client/chunks/{chart-bubble-DvyG15UB.js.map → chart-bubble-S6qSwWdK.js.map} +1 -1
  25. package/dist/client/chunks/{chart-candlestick-caHyxB9O.js → chart-candlestick-BNKbDruo.js} +1 -1
  26. package/dist/client/chunks/{chart-candlestick-caHyxB9O.js.map → chart-candlestick-BNKbDruo.js.map} +1 -1
  27. package/dist/client/chunks/{chart-config-activity-grid-USo7JrPh.js → chart-config-activity-grid-BSWS08cI.js} +1 -1
  28. package/dist/client/chunks/{chart-config-activity-grid-USo7JrPh.js.map → chart-config-activity-grid-BSWS08cI.js.map} +1 -1
  29. package/dist/client/chunks/{chart-config-area-D_ZufYzg.js → chart-config-area-DKwgcHp4.js} +1 -1
  30. package/dist/client/chunks/{chart-config-area-D_ZufYzg.js.map → chart-config-area-DKwgcHp4.js.map} +1 -1
  31. package/dist/client/chunks/{chart-config-bar-BCi2Wmd6.js → chart-config-bar-deTjEhap.js} +1 -1
  32. package/dist/client/chunks/{chart-config-bar-BCi2Wmd6.js.map → chart-config-bar-deTjEhap.js.map} +1 -1
  33. package/dist/client/chunks/{chart-config-box-plot-afKLzJSp.js → chart-config-box-plot-DU4iWk3V.js} +1 -1
  34. package/dist/client/chunks/{chart-config-box-plot-afKLzJSp.js.map → chart-config-box-plot-DU4iWk3V.js.map} +1 -1
  35. package/dist/client/chunks/{chart-config-bubble-CgbBjPv8.js → chart-config-bubble-B8FSHSW-.js} +1 -1
  36. package/dist/client/chunks/{chart-config-bubble-CgbBjPv8.js.map → chart-config-bubble-B8FSHSW-.js.map} +1 -1
  37. package/dist/client/chunks/{chart-config-candlestick-7boGjZ-A.js → chart-config-candlestick-BGfyWFft.js} +1 -1
  38. package/dist/client/chunks/{chart-config-candlestick-7boGjZ-A.js.map → chart-config-candlestick-BGfyWFft.js.map} +1 -1
  39. package/dist/client/chunks/{chart-config-data-table-Cl7sBasW.js → chart-config-data-table-DKRcGa8t.js} +1 -1
  40. package/dist/client/chunks/{chart-config-data-table-Cl7sBasW.js.map → chart-config-data-table-DKRcGa8t.js.map} +1 -1
  41. package/dist/client/chunks/{chart-config-funnel-CXPYQtTl.js → chart-config-funnel-Bt4iGFo_.js} +1 -1
  42. package/dist/client/chunks/{chart-config-funnel-CXPYQtTl.js.map → chart-config-funnel-Bt4iGFo_.js.map} +1 -1
  43. package/dist/client/chunks/{chart-config-gauge-DUNEUCvh.js → chart-config-gauge-Bk4Jjp3W.js} +1 -1
  44. package/dist/client/chunks/{chart-config-gauge-DUNEUCvh.js.map → chart-config-gauge-Bk4Jjp3W.js.map} +1 -1
  45. package/dist/client/chunks/{chart-config-heat-map-BFf1tO11.js → chart-config-heat-map-CkHsqkrY.js} +1 -1
  46. package/dist/client/chunks/{chart-config-heat-map-BFf1tO11.js.map → chart-config-heat-map-CkHsqkrY.js.map} +1 -1
  47. package/dist/client/chunks/{chart-config-kpi-delta-C5k2waIJ.js → chart-config-kpi-delta-CkUX98JV.js} +1 -1
  48. package/dist/client/chunks/{chart-config-kpi-delta-C5k2waIJ.js.map → chart-config-kpi-delta-CkUX98JV.js.map} +1 -1
  49. package/dist/client/chunks/{chart-config-kpi-number-DptOyhk0.js → chart-config-kpi-number-DcxyiUgs.js} +1 -1
  50. package/dist/client/chunks/{chart-config-kpi-number-DptOyhk0.js.map → chart-config-kpi-number-DcxyiUgs.js.map} +1 -1
  51. package/dist/client/chunks/{chart-config-kpi-text-D9DdVWqd.js → chart-config-kpi-text-DI4mj8CN.js} +1 -1
  52. package/dist/client/chunks/{chart-config-kpi-text-D9DdVWqd.js.map → chart-config-kpi-text-DI4mj8CN.js.map} +1 -1
  53. package/dist/client/chunks/{chart-config-line-B3NgLF7K.js → chart-config-line--j7-dLue.js} +1 -1
  54. package/dist/client/chunks/{chart-config-line-B3NgLF7K.js.map → chart-config-line--j7-dLue.js.map} +1 -1
  55. package/dist/client/chunks/{chart-config-markdown-tlfivQTt.js → chart-config-markdown-DUjvVjV4.js} +1 -1
  56. package/dist/client/chunks/{chart-config-markdown-tlfivQTt.js.map → chart-config-markdown-DUjvVjV4.js.map} +1 -1
  57. package/dist/client/chunks/{chart-config-measure-profile-D7XDwrU2.js → chart-config-measure-profile-B9FKBNGc.js} +1 -1
  58. package/dist/client/chunks/{chart-config-measure-profile-D7XDwrU2.js.map → chart-config-measure-profile-B9FKBNGc.js.map} +1 -1
  59. package/dist/client/chunks/{chart-config-pie-wY0B52PC.js → chart-config-pie-yU4jipl9.js} +1 -1
  60. package/dist/client/chunks/{chart-config-pie-wY0B52PC.js.map → chart-config-pie-yU4jipl9.js.map} +1 -1
  61. package/dist/client/chunks/{chart-config-radar-DRpJBy1M.js → chart-config-radar-R9Fkc8wL.js} +1 -1
  62. package/dist/client/chunks/{chart-config-radar-DRpJBy1M.js.map → chart-config-radar-R9Fkc8wL.js.map} +1 -1
  63. package/dist/client/chunks/{chart-config-radial-bar-DCUpXv9G.js → chart-config-radial-bar-DeoXfpIp.js} +1 -1
  64. package/dist/client/chunks/{chart-config-radial-bar-DCUpXv9G.js.map → chart-config-radial-bar-DeoXfpIp.js.map} +1 -1
  65. package/dist/client/chunks/{chart-config-sankey-CdOhlm4h.js → chart-config-sankey-CXEsxo6s.js} +1 -1
  66. package/dist/client/chunks/{chart-config-sankey-CdOhlm4h.js.map → chart-config-sankey-CXEsxo6s.js.map} +1 -1
  67. package/dist/client/chunks/{chart-config-scatter-B2su_x8f.js → chart-config-scatter-MVUFupub.js} +1 -1
  68. package/dist/client/chunks/{chart-config-scatter-B2su_x8f.js.map → chart-config-scatter-MVUFupub.js.map} +1 -1
  69. package/dist/client/chunks/{chart-config-sunburst-BPdjbk18.js → chart-config-sunburst-Z_gqIY5u.js} +1 -1
  70. package/dist/client/chunks/{chart-config-sunburst-BPdjbk18.js.map → chart-config-sunburst-Z_gqIY5u.js.map} +1 -1
  71. package/dist/client/chunks/{chart-config-tree-map-Cbsh2fe2.js → chart-config-tree-map-BD-xAeIy.js} +1 -1
  72. package/dist/client/chunks/{chart-config-tree-map-Cbsh2fe2.js.map → chart-config-tree-map-BD-xAeIy.js.map} +1 -1
  73. package/dist/client/chunks/{chart-config-waterfall-DGmuZfQF.js → chart-config-waterfall-CHwVkXZc.js} +1 -1
  74. package/dist/client/chunks/{chart-config-waterfall-DGmuZfQF.js.map → chart-config-waterfall-CHwVkXZc.js.map} +1 -1
  75. package/dist/client/chunks/{chart-data-table-CW_qZDpt.js → chart-data-table-D4s27-U3.js} +1452 -826
  76. package/dist/client/chunks/chart-data-table-D4s27-U3.js.map +1 -0
  77. package/dist/client/chunks/{chart-gauge-BLLJqeXo.js → chart-gauge-BFhc4i_f.js} +1 -1
  78. package/dist/client/chunks/{chart-gauge-BLLJqeXo.js.map → chart-gauge-BFhc4i_f.js.map} +1 -1
  79. package/dist/client/chunks/{chart-heat-map-f2fM2mDC.js → chart-heat-map-BOMQeUDL.js} +1 -1
  80. package/dist/client/chunks/{chart-heat-map-f2fM2mDC.js.map → chart-heat-map-BOMQeUDL.js.map} +1 -1
  81. package/dist/client/chunks/{chart-kpi-delta-BPexzOe7.js → chart-kpi-delta-DzGNnIcW.js} +4 -4
  82. package/dist/client/chunks/{chart-kpi-delta-BPexzOe7.js.map → chart-kpi-delta-DzGNnIcW.js.map} +1 -1
  83. package/dist/client/chunks/{chart-kpi-number-BBtGBtZL.js → chart-kpi-number-sHtgbE_f.js} +5 -5
  84. package/dist/client/chunks/{chart-kpi-number-BBtGBtZL.js.map → chart-kpi-number-sHtgbE_f.js.map} +1 -1
  85. package/dist/client/chunks/{chart-kpi-text-BqHhmJEB.js → chart-kpi-text-Bmk-GzVJ.js} +2 -2
  86. package/dist/client/chunks/{chart-kpi-text-BqHhmJEB.js.map → chart-kpi-text-Bmk-GzVJ.js.map} +1 -1
  87. package/dist/client/chunks/{chart-line-CPhQRMZ7.js → chart-line-Bkl5WQAw.js} +1 -1
  88. package/dist/client/chunks/{chart-line-CPhQRMZ7.js.map → chart-line-Bkl5WQAw.js.map} +1 -1
  89. package/dist/client/chunks/{chart-markdown-B2X4IwLO.js → chart-markdown-7MNetRtX.js} +1 -1
  90. package/dist/client/chunks/{chart-markdown-B2X4IwLO.js.map → chart-markdown-7MNetRtX.js.map} +1 -1
  91. package/dist/client/chunks/{chart-measure-profile-CVlqGslU.js → chart-measure-profile-B7h6vQo4.js} +1 -1
  92. package/dist/client/chunks/{chart-measure-profile-CVlqGslU.js.map → chart-measure-profile-B7h6vQo4.js.map} +1 -1
  93. package/dist/client/chunks/{chart-pie-DafSc9sE.js → chart-pie-Do2YnCxl.js} +1 -1
  94. package/dist/client/chunks/{chart-pie-DafSc9sE.js.map → chart-pie-Do2YnCxl.js.map} +1 -1
  95. package/dist/client/chunks/{chart-radar-Dz9F5k-B.js → chart-radar-C7gQkH70.js} +1 -1
  96. package/dist/client/chunks/{chart-radar-Dz9F5k-B.js.map → chart-radar-C7gQkH70.js.map} +1 -1
  97. package/dist/client/chunks/{chart-radial-bar-N3MNUL7o.js → chart-radial-bar-DHqCck3x.js} +1 -1
  98. package/dist/client/chunks/{chart-radial-bar-N3MNUL7o.js.map → chart-radial-bar-DHqCck3x.js.map} +1 -1
  99. package/dist/client/chunks/{chart-scatter-J2JNi88S.js → chart-scatter-YSHOUfXf.js} +1 -1
  100. package/dist/client/chunks/{chart-scatter-J2JNi88S.js.map → chart-scatter-YSHOUfXf.js.map} +1 -1
  101. package/dist/client/chunks/{chart-sunburst-D1NFQjqk.js → chart-sunburst-BGhJ4fui.js} +1 -1
  102. package/dist/client/chunks/{chart-sunburst-D1NFQjqk.js.map → chart-sunburst-BGhJ4fui.js.map} +1 -1
  103. package/dist/client/chunks/{chart-tree-map-CbYjko2s.js → chart-tree-map-BlhcXK1F.js} +1 -1
  104. package/dist/client/chunks/{chart-tree-map-CbYjko2s.js.map → chart-tree-map-BlhcXK1F.js.map} +1 -1
  105. package/dist/client/chunks/{chart-waterfall-Z65TGMUO.js → chart-waterfall-BWCAzlPq.js} +1 -1
  106. package/dist/client/chunks/{chart-waterfall-Z65TGMUO.js.map → chart-waterfall-BWCAzlPq.js.map} +1 -1
  107. package/dist/client/chunks/{charts-core-CJlGzwsW.js → charts-core-Cy3rHADX.js} +1 -1
  108. package/dist/client/chunks/{charts-core-CJlGzwsW.js.map → charts-core-Cy3rHADX.js.map} +1 -1
  109. package/dist/client/chunks/{core-DJrniqct.js → core-BdWfCZ3y.js} +1 -1
  110. package/dist/client/chunks/{core-DJrniqct.js.map → core-BdWfCZ3y.js.map} +1 -1
  111. package/dist/client/chunks/{dist-DDBeV_JI.js → dist-BWPE2m_X.js} +1 -1
  112. package/dist/client/chunks/{dist-DDBeV_JI.js.map → dist-BWPE2m_X.js.map} +1 -1
  113. package/dist/client/chunks/{javascript-BBwTSo6e.js → javascript-O1RIRkZr.js} +1 -1
  114. package/dist/client/chunks/{javascript-BBwTSo6e.js.map → javascript-O1RIRkZr.js.map} +1 -1
  115. package/dist/client/chunks/{json-BpTrLZSh.js → json-C5bX2tt1.js} +1 -1
  116. package/dist/client/chunks/{json-BpTrLZSh.js.map → json-C5bX2tt1.js.map} +1 -1
  117. package/dist/client/chunks/{retention-UEXlSdZ-.js → retention-YhT1Oohi.js} +1 -1
  118. package/dist/client/chunks/{retention-UEXlSdZ-.js.map → retention-YhT1Oohi.js.map} +1 -1
  119. package/dist/client/chunks/{schema-visualization-CwiEtwdu.js → schema-visualization-BJ8HrNqB.js} +11 -11
  120. package/dist/client/chunks/{schema-visualization-CwiEtwdu.js.map → schema-visualization-BJ8HrNqB.js.map} +1 -1
  121. package/dist/client/chunks/{sql-B0chxcEK.js → sql-D2qikO5q.js} +1 -1
  122. package/dist/client/chunks/{sql-B0chxcEK.js.map → sql-D2qikO5q.js.map} +1 -1
  123. package/dist/client/chunks/{syntaxHighlighting-BLl0ch4A.js → syntaxHighlighting-BYYWYmjr.js} +2 -2
  124. package/dist/client/chunks/{syntaxHighlighting-BLl0ch4A.js.map → syntaxHighlighting-BYYWYmjr.js.map} +1 -1
  125. package/dist/client/chunks/{useDebounce-C_wstEud.js → useDebounce-EWynD0lC.js} +12 -12
  126. package/dist/client/chunks/{useDebounce-C_wstEud.js.map → useDebounce-EWynD0lC.js.map} +1 -1
  127. package/dist/client/chunks/{useDirtyStateTracking-CgKZWkel.js → useDirtyStateTracking-KAjwj1Ht.js} +1 -1
  128. package/dist/client/chunks/{useDirtyStateTracking-CgKZWkel.js.map → useDirtyStateTracking-KAjwj1Ht.js.map} +1 -1
  129. package/dist/client/chunks/{useExplainAI-C9ytXRIC.js → useExplainAI-BBTJWQVu.js} +14 -14
  130. package/dist/client/chunks/{useExplainAI-C9ytXRIC.js.map → useExplainAI-BBTJWQVu.js.map} +1 -1
  131. package/dist/client/chunks/{useNotebookLayout-BFZ_33Kb.js → useNotebookLayout-DKkMenhj.js} +1 -1
  132. package/dist/client/chunks/{useNotebookLayout-BFZ_33Kb.js.map → useNotebookLayout-DKkMenhj.js.map} +1 -1
  133. package/dist/client/chunks/{utils-3FNmeZJR.js → utils-DMyRayr_.js} +2 -2
  134. package/dist/client/chunks/{utils-3FNmeZJR.js.map → utils-DMyRayr_.js.map} +1 -1
  135. package/dist/client/chunks/{vendor-BPRWulB7.js → vendor-iY25ogTA.js} +40 -40
  136. package/dist/client/chunks/{vendor-BPRWulB7.js.map → vendor-iY25ogTA.js.map} +1 -1
  137. package/dist/client/components.js +3 -3
  138. package/dist/client/hooks.js +5 -5
  139. package/dist/client/icons/registry.d.ts +6 -0
  140. package/dist/client/icons.js +2 -2
  141. package/dist/client/index.d.ts +3 -1
  142. package/dist/client/index.js +160 -161
  143. package/dist/client/index.js.map +1 -1
  144. package/dist/client/providers/CubeProvider.d.ts +4 -1
  145. package/dist/client/providers.js +2 -2
  146. package/dist/client/types.d.ts +2 -1
  147. package/dist/client/utils.js +6 -6
  148. package/dist/client-bundle-stats.html +1 -1
  149. package/package.json +6 -2
  150. package/dist/client/chunks/DashboardEditModal-iGhIvNP6.js.map +0 -1
  151. package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js +0 -56
  152. package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js.map +0 -1
  153. package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js +0 -25
  154. package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js.map +0 -1
  155. package/dist/client/chunks/analysis-builder-DEGG5NwE.js.map +0 -1
  156. package/dist/client/chunks/analysis-builder-shared-BxHYfTzo.js.map +0 -1
  157. package/dist/client/chunks/chart-data-table-CW_qZDpt.js.map +0 -1
  158. package/dist/client/chunks/charts-loader-gZjOqZwG.js +0 -259
  159. package/dist/client/chunks/charts-loader-gZjOqZwG.js.map +0 -1
  160. package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js +0 -149
  161. package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dist-DDBeV_JI.js","names":[],"sources":["../../../node_modules/modern-screenshot/dist/index.mjs"],"sourcesContent":["function changeJpegDpi(uint8Array, dpi) {\n uint8Array[13] = 1;\n uint8Array[14] = dpi >> 8;\n uint8Array[15] = dpi & 255;\n uint8Array[16] = dpi >> 8;\n uint8Array[17] = dpi & 255;\n return uint8Array;\n}\n\nconst _P = \"p\".charCodeAt(0);\nconst _H = \"H\".charCodeAt(0);\nconst _Y = \"Y\".charCodeAt(0);\nconst _S = \"s\".charCodeAt(0);\nlet pngDataTable;\nfunction createPngDataTable() {\n const crcTable = new Int32Array(256);\n for (let n = 0; n < 256; n++) {\n let c = n;\n for (let k = 0; k < 8; k++) {\n c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;\n }\n crcTable[n] = c;\n }\n return crcTable;\n}\nfunction calcCrc(uint8Array) {\n let c = -1;\n if (!pngDataTable)\n pngDataTable = createPngDataTable();\n for (let n = 0; n < uint8Array.length; n++) {\n c = pngDataTable[(c ^ uint8Array[n]) & 255] ^ c >>> 8;\n }\n return c ^ -1;\n}\nfunction searchStartOfPhys(uint8Array) {\n const length = uint8Array.length - 1;\n for (let i = length; i >= 4; i--) {\n if (uint8Array[i - 4] === 9 && uint8Array[i - 3] === _P && uint8Array[i - 2] === _H && uint8Array[i - 1] === _Y && uint8Array[i] === _S) {\n return i - 3;\n }\n }\n return 0;\n}\nfunction changePngDpi(uint8Array, dpi, overwritepHYs = false) {\n const physChunk = new Uint8Array(13);\n dpi *= 39.3701;\n physChunk[0] = _P;\n physChunk[1] = _H;\n physChunk[2] = _Y;\n physChunk[3] = _S;\n physChunk[4] = dpi >>> 24;\n physChunk[5] = dpi >>> 16;\n physChunk[6] = dpi >>> 8;\n physChunk[7] = dpi & 255;\n physChunk[8] = physChunk[4];\n physChunk[9] = physChunk[5];\n physChunk[10] = physChunk[6];\n physChunk[11] = physChunk[7];\n physChunk[12] = 1;\n const crc = calcCrc(physChunk);\n const crcChunk = new Uint8Array(4);\n crcChunk[0] = crc >>> 24;\n crcChunk[1] = crc >>> 16;\n crcChunk[2] = crc >>> 8;\n crcChunk[3] = crc & 255;\n if (overwritepHYs) {\n const startingIndex = searchStartOfPhys(uint8Array);\n uint8Array.set(physChunk, startingIndex);\n uint8Array.set(crcChunk, startingIndex + 13);\n return uint8Array;\n } else {\n const chunkLength = new Uint8Array(4);\n chunkLength[0] = 0;\n chunkLength[1] = 0;\n chunkLength[2] = 0;\n chunkLength[3] = 9;\n const finalHeader = new Uint8Array(54);\n finalHeader.set(uint8Array, 0);\n finalHeader.set(chunkLength, 33);\n finalHeader.set(physChunk, 37);\n finalHeader.set(crcChunk, 50);\n return finalHeader;\n }\n}\nconst b64PhysSignature1 = \"AAlwSFlz\";\nconst b64PhysSignature2 = \"AAAJcEhZ\";\nconst b64PhysSignature3 = \"AAAACXBI\";\nfunction detectPhysChunkFromDataUrl(dataUrl) {\n let b64index = dataUrl.indexOf(b64PhysSignature1);\n if (b64index === -1) {\n b64index = dataUrl.indexOf(b64PhysSignature2);\n }\n if (b64index === -1) {\n b64index = dataUrl.indexOf(b64PhysSignature3);\n }\n return b64index;\n}\n\nconst PREFIX = \"[modern-screenshot]\";\nconst IN_BROWSER = typeof window !== \"undefined\";\nconst SUPPORT_WEB_WORKER = IN_BROWSER && \"Worker\" in window;\nconst SUPPORT_ATOB = IN_BROWSER && \"atob\" in window;\nconst SUPPORT_BTOA = IN_BROWSER && \"btoa\" in window;\nconst USER_AGENT = IN_BROWSER ? window.navigator?.userAgent : \"\";\nconst IN_CHROME = USER_AGENT.includes(\"Chrome\");\nconst IN_SAFARI = USER_AGENT.includes(\"AppleWebKit\") && !IN_CHROME;\nconst IN_FIREFOX = USER_AGENT.includes(\"Firefox\");\nconst isContext = (value) => value && \"__CONTEXT__\" in value;\nconst isCssFontFaceRule = (rule) => rule.constructor.name === \"CSSFontFaceRule\";\nconst isCSSImportRule = (rule) => rule.constructor.name === \"CSSImportRule\";\nconst isLayerBlockRule = (rule) => rule.constructor.name === \"CSSLayerBlockRule\";\nconst isElementNode = (node) => node.nodeType === 1;\nconst isSVGElementNode = (node) => typeof node.className === \"object\";\nconst isSVGImageElementNode = (node) => node.tagName === \"image\";\nconst isSVGUseElementNode = (node) => node.tagName === \"use\";\nconst isHTMLElementNode = (node) => isElementNode(node) && typeof node.style !== \"undefined\" && !isSVGElementNode(node);\nconst isCommentNode = (node) => node.nodeType === 8;\nconst isTextNode = (node) => node.nodeType === 3;\nconst isImageElement = (node) => node.tagName === \"IMG\";\nconst isVideoElement = (node) => node.tagName === \"VIDEO\";\nconst isCanvasElement = (node) => node.tagName === \"CANVAS\";\nconst isTextareaElement = (node) => node.tagName === \"TEXTAREA\";\nconst isInputElement = (node) => node.tagName === \"INPUT\";\nconst isStyleElement = (node) => node.tagName === \"STYLE\";\nconst isScriptElement = (node) => node.tagName === \"SCRIPT\";\nconst isSelectElement = (node) => node.tagName === \"SELECT\";\nconst isSlotElement = (node) => node.tagName === \"SLOT\";\nconst isIFrameElement = (node) => node.tagName === \"IFRAME\";\nconst consoleWarn = (...args) => console.warn(PREFIX, ...args);\nfunction supportWebp(ownerDocument) {\n const canvas = ownerDocument?.createElement?.(\"canvas\");\n if (canvas) {\n canvas.height = canvas.width = 1;\n }\n return Boolean(canvas) && \"toDataURL\" in canvas && Boolean(canvas.toDataURL(\"image/webp\").includes(\"image/webp\"));\n}\nconst isDataUrl = (url) => url.startsWith(\"data:\");\nfunction resolveUrl(url, baseUrl) {\n if (url.match(/^[a-z]+:\\/\\//i))\n return url;\n if (IN_BROWSER && url.match(/^\\/\\//))\n return window.location.protocol + url;\n if (url.match(/^[a-z]+:/i))\n return url;\n if (!IN_BROWSER)\n return url;\n const doc = getDocument().implementation.createHTMLDocument();\n const base = doc.createElement(\"base\");\n const a = doc.createElement(\"a\");\n doc.head.appendChild(base);\n doc.body.appendChild(a);\n if (baseUrl)\n base.href = baseUrl;\n a.href = url;\n return a.href;\n}\nfunction getDocument(target) {\n return (target && isElementNode(target) ? target?.ownerDocument : target) ?? window.document;\n}\nconst XMLNS = \"http://www.w3.org/2000/svg\";\nfunction createSvg(width, height, ownerDocument) {\n const svg = getDocument(ownerDocument).createElementNS(XMLNS, \"svg\");\n svg.setAttributeNS(null, \"width\", width.toString());\n svg.setAttributeNS(null, \"height\", height.toString());\n svg.setAttributeNS(null, \"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n}\nfunction svgToDataUrl(svg, removeControlCharacter) {\n let xhtml = new XMLSerializer().serializeToString(svg);\n if (removeControlCharacter) {\n xhtml = xhtml.replace(/[\\u0000-\\u0008\\v\\f\\u000E-\\u001F\\uD800-\\uDFFF\\uFFFE\\uFFFF]/gu, \"\");\n }\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(xhtml)}`;\n}\nasync function canvasToBlob(canvas, type = \"image/png\", quality = 1) {\n try {\n return await new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new Error(\"Blob is null\"));\n }\n }, type, quality);\n });\n } catch (error) {\n if (SUPPORT_ATOB) {\n return dataUrlToBlob(canvas.toDataURL(type, quality));\n }\n throw error;\n }\n}\nfunction dataUrlToBlob(dataUrl) {\n const [header, base64] = dataUrl.split(\",\");\n const type = header.match(/data:(.+);/)?.[1] ?? void 0;\n const decoded = window.atob(base64);\n const length = decoded.length;\n const buffer = new Uint8Array(length);\n for (let i = 0; i < length; i += 1) {\n buffer[i] = decoded.charCodeAt(i);\n }\n return new Blob([buffer], { type });\n}\nfunction readBlob(blob, type) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = () => reject(reader.error);\n reader.onabort = () => reject(new Error(`Failed read blob to ${type}`));\n if (type === \"dataUrl\") {\n reader.readAsDataURL(blob);\n } else if (type === \"arrayBuffer\") {\n reader.readAsArrayBuffer(blob);\n }\n });\n}\nconst blobToDataUrl = (blob) => readBlob(blob, \"dataUrl\");\nconst blobToArrayBuffer = (blob) => readBlob(blob, \"arrayBuffer\");\nfunction createImage(url, ownerDocument) {\n const img = getDocument(ownerDocument).createElement(\"img\");\n img.decoding = \"sync\";\n img.loading = \"eager\";\n img.src = url;\n return img;\n}\nfunction loadMedia(media, options) {\n return new Promise((resolve) => {\n const { timeout, ownerDocument, onError: userOnError, onWarn } = options ?? {};\n const node = typeof media === \"string\" ? createImage(media, getDocument(ownerDocument)) : media;\n let timer = null;\n let removeEventListeners = null;\n function onResolve() {\n resolve(node);\n timer && clearTimeout(timer);\n removeEventListeners?.();\n }\n if (timeout) {\n timer = setTimeout(onResolve, timeout);\n }\n if (isVideoElement(node)) {\n const currentSrc = node.currentSrc || node.src;\n if (!currentSrc) {\n if (node.poster) {\n return loadMedia(node.poster, options).then(resolve);\n }\n return onResolve();\n }\n if (node.readyState >= 2) {\n return onResolve();\n }\n const onLoadeddata = onResolve;\n const onError = (error) => {\n onWarn?.(\n \"Failed video load\",\n currentSrc,\n error\n );\n userOnError?.(error);\n onResolve();\n };\n removeEventListeners = () => {\n node.removeEventListener(\"loadeddata\", onLoadeddata);\n node.removeEventListener(\"error\", onError);\n };\n node.addEventListener(\"loadeddata\", onLoadeddata, { once: true });\n node.addEventListener(\"error\", onError, { once: true });\n } else {\n const currentSrc = isSVGImageElementNode(node) ? node.href.baseVal : node.currentSrc || node.src;\n if (!currentSrc) {\n return onResolve();\n }\n const onLoad = async () => {\n if (isImageElement(node) && \"decode\" in node) {\n try {\n await node.decode();\n } catch (error) {\n onWarn?.(\n \"Failed to decode image, trying to render anyway\",\n node.dataset.originalSrc || currentSrc,\n error\n );\n }\n }\n onResolve();\n };\n const onError = (error) => {\n onWarn?.(\n \"Failed image load\",\n node.dataset.originalSrc || currentSrc,\n error\n );\n onResolve();\n };\n if (isImageElement(node) && node.complete) {\n return onLoad();\n }\n removeEventListeners = () => {\n node.removeEventListener(\"load\", onLoad);\n node.removeEventListener(\"error\", onError);\n };\n node.addEventListener(\"load\", onLoad, { once: true });\n node.addEventListener(\"error\", onError, { once: true });\n }\n });\n}\nasync function waitUntilLoad(node, options) {\n if (isHTMLElementNode(node)) {\n if (isImageElement(node) || isVideoElement(node)) {\n await loadMedia(node, options);\n } else {\n await Promise.all(\n [\"img\", \"video\"].flatMap((selectors) => {\n return Array.from(node.querySelectorAll(selectors)).map((el) => loadMedia(el, options));\n })\n );\n }\n }\n}\nconst uuid = /* @__PURE__ */ function uuid2() {\n let counter = 0;\n const random = () => `0000${(Math.random() * 36 ** 4 << 0).toString(36)}`.slice(-4);\n return () => {\n counter += 1;\n return `u${random()}${counter}`;\n };\n}();\nfunction splitFontFamily(fontFamily) {\n return fontFamily?.split(\",\").map((val) => val.trim().replace(/\"|'/g, \"\").toLowerCase()).filter(Boolean);\n}\n\nlet uid = 0;\nfunction createLogger(debug) {\n const prefix = `${PREFIX}[#${uid}]`;\n uid++;\n return {\n // eslint-disable-next-line no-console\n time: (label) => debug && console.time(`${prefix} ${label}`),\n // eslint-disable-next-line no-console\n timeEnd: (label) => debug && console.timeEnd(`${prefix} ${label}`),\n warn: (...args) => debug && consoleWarn(...args)\n };\n}\n\nfunction getDefaultRequestInit(bypassingCache) {\n return {\n cache: bypassingCache ? \"no-cache\" : \"force-cache\"\n };\n}\n\nasync function orCreateContext(node, options) {\n return isContext(node) ? node : createContext(node, { ...options, autoDestruct: true });\n}\nasync function createContext(node, options) {\n const { scale = 1, workerUrl, workerNumber = 1 } = options || {};\n const debug = Boolean(options?.debug);\n const features = options?.features ?? true;\n const ownerDocument = node.ownerDocument ?? (IN_BROWSER ? window.document : void 0);\n const ownerWindow = node.ownerDocument?.defaultView ?? (IN_BROWSER ? window : void 0);\n const requests = /* @__PURE__ */ new Map();\n const context = {\n // Options\n width: 0,\n height: 0,\n quality: 1,\n type: \"image/png\",\n scale,\n backgroundColor: null,\n style: null,\n filter: null,\n maximumCanvasSize: 0,\n timeout: 3e4,\n progress: null,\n debug,\n fetch: {\n requestInit: getDefaultRequestInit(options?.fetch?.bypassingCache),\n placeholderImage: \"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\",\n bypassingCache: false,\n ...options?.fetch\n },\n fetchFn: null,\n font: {},\n drawImageInterval: 100,\n workerUrl: null,\n workerNumber,\n onCloneEachNode: null,\n onCloneNode: null,\n onEmbedNode: null,\n onCreateForeignObjectSvg: null,\n includeStyleProperties: null,\n autoDestruct: false,\n ...options,\n // InternalContext\n __CONTEXT__: true,\n log: createLogger(debug),\n node,\n ownerDocument,\n ownerWindow,\n dpi: scale === 1 ? null : 96 * scale,\n svgStyleElement: createStyleElement(ownerDocument),\n svgDefsElement: ownerDocument?.createElementNS(XMLNS, \"defs\"),\n svgStyles: /* @__PURE__ */ new Map(),\n defaultComputedStyles: /* @__PURE__ */ new Map(),\n workers: [\n ...Array.from({\n length: SUPPORT_WEB_WORKER && workerUrl && workerNumber ? workerNumber : 0\n })\n ].map(() => {\n try {\n const worker = new Worker(workerUrl);\n worker.onmessage = async (event) => {\n const { url, result } = event.data;\n if (result) {\n requests.get(url)?.resolve?.(result);\n } else {\n requests.get(url)?.reject?.(new Error(`Error receiving message from worker: ${url}`));\n }\n };\n worker.onmessageerror = (event) => {\n const { url } = event.data;\n requests.get(url)?.reject?.(new Error(`Error receiving message from worker: ${url}`));\n };\n return worker;\n } catch (error) {\n context.log.warn(\"Failed to new Worker\", error);\n return null;\n }\n }).filter(Boolean),\n fontFamilies: /* @__PURE__ */ new Map(),\n fontCssTexts: /* @__PURE__ */ new Map(),\n acceptOfImage: `${[\n supportWebp(ownerDocument) && \"image/webp\",\n \"image/svg+xml\",\n \"image/*\",\n \"*/*\"\n ].filter(Boolean).join(\",\")};q=0.8`,\n requests,\n drawImageCount: 0,\n tasks: [],\n features,\n isEnable: (key) => {\n if (key === \"restoreScrollPosition\") {\n return typeof features === \"boolean\" ? false : features[key] ?? false;\n }\n if (typeof features === \"boolean\") {\n return features;\n }\n return features[key] ?? true;\n },\n shadowRoots: []\n };\n context.log.time(\"wait until load\");\n await waitUntilLoad(node, { timeout: context.timeout, onWarn: context.log.warn });\n context.log.timeEnd(\"wait until load\");\n const { width, height } = resolveBoundingBox(node, context);\n context.width = width;\n context.height = height;\n return context;\n}\nfunction createStyleElement(ownerDocument) {\n if (!ownerDocument)\n return void 0;\n const style = ownerDocument.createElement(\"style\");\n const cssText = style.ownerDocument.createTextNode(`\n.______background-clip--text {\n background-clip: text;\n -webkit-background-clip: text;\n}\n`);\n style.appendChild(cssText);\n return style;\n}\nfunction resolveBoundingBox(node, context) {\n let { width, height } = context;\n if (isElementNode(node) && (!width || !height)) {\n const box = node.getBoundingClientRect();\n width = width || box.width || Number(node.getAttribute(\"width\")) || 0;\n height = height || box.height || Number(node.getAttribute(\"height\")) || 0;\n }\n return { width, height };\n}\n\nasync function imageToCanvas(image, context) {\n const {\n log,\n timeout,\n drawImageCount,\n drawImageInterval\n } = context;\n log.time(\"image to canvas\");\n const loaded = await loadMedia(image, { timeout, onWarn: context.log.warn });\n const { canvas, context2d } = createCanvas(image.ownerDocument, context);\n const drawImage = () => {\n try {\n context2d?.drawImage(loaded, 0, 0, canvas.width, canvas.height);\n } catch (error) {\n context.log.warn(\"Failed to drawImage\", error);\n }\n };\n drawImage();\n if (context.isEnable(\"fixSvgXmlDecode\")) {\n for (let i = 0; i < drawImageCount; i++) {\n await new Promise((resolve) => {\n setTimeout(() => {\n context2d?.clearRect(0, 0, canvas.width, canvas.height);\n drawImage();\n resolve();\n }, i + drawImageInterval);\n });\n }\n }\n context.drawImageCount = 0;\n log.timeEnd(\"image to canvas\");\n return canvas;\n}\nfunction createCanvas(ownerDocument, context) {\n const { width, height, scale, backgroundColor, maximumCanvasSize: max } = context;\n const canvas = ownerDocument.createElement(\"canvas\");\n canvas.width = Math.floor(width * scale);\n canvas.height = Math.floor(height * scale);\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n if (max) {\n if (canvas.width > max || canvas.height > max) {\n if (canvas.width > max && canvas.height > max) {\n if (canvas.width > canvas.height) {\n canvas.height *= max / canvas.width;\n canvas.width = max;\n } else {\n canvas.width *= max / canvas.height;\n canvas.height = max;\n }\n } else if (canvas.width > max) {\n canvas.height *= max / canvas.width;\n canvas.width = max;\n } else {\n canvas.width *= max / canvas.height;\n canvas.height = max;\n }\n }\n }\n const context2d = canvas.getContext(\"2d\");\n if (context2d && backgroundColor) {\n context2d.fillStyle = backgroundColor;\n context2d.fillRect(0, 0, canvas.width, canvas.height);\n }\n return { canvas, context2d };\n}\n\nfunction cloneCanvas(canvas, context) {\n if (canvas.ownerDocument) {\n try {\n const dataURL = canvas.toDataURL();\n if (dataURL !== \"data:,\") {\n return createImage(dataURL, canvas.ownerDocument);\n }\n } catch (error) {\n context.log.warn(\"Failed to clone canvas\", error);\n }\n }\n const cloned = canvas.cloneNode(false);\n const ctx = canvas.getContext(\"2d\");\n const clonedCtx = cloned.getContext(\"2d\");\n try {\n if (ctx && clonedCtx) {\n clonedCtx.putImageData(\n ctx.getImageData(0, 0, canvas.width, canvas.height),\n 0,\n 0\n );\n }\n return cloned;\n } catch (error) {\n context.log.warn(\"Failed to clone canvas\", error);\n }\n return cloned;\n}\n\nfunction cloneIframe(iframe, context) {\n try {\n if (iframe?.contentDocument?.body) {\n return cloneNode(iframe.contentDocument.body, context);\n }\n } catch (error) {\n context.log.warn(\"Failed to clone iframe\", error);\n }\n return iframe.cloneNode(false);\n}\n\nfunction cloneImage(image) {\n const cloned = image.cloneNode(false);\n if (image.currentSrc && image.currentSrc !== image.src) {\n cloned.src = image.currentSrc;\n cloned.srcset = \"\";\n }\n if (cloned.loading === \"lazy\") {\n cloned.loading = \"eager\";\n }\n return cloned;\n}\n\nasync function cloneVideo(video, context) {\n if (video.ownerDocument && !video.currentSrc && video.poster) {\n return createImage(video.poster, video.ownerDocument);\n }\n const cloned = video.cloneNode(false);\n cloned.crossOrigin = \"anonymous\";\n if (video.currentSrc && video.currentSrc !== video.src) {\n cloned.src = video.currentSrc;\n }\n const ownerDocument = cloned.ownerDocument;\n if (ownerDocument) {\n let canPlay = true;\n await loadMedia(cloned, { onError: () => canPlay = false, onWarn: context.log.warn });\n if (!canPlay) {\n if (video.poster) {\n return createImage(video.poster, video.ownerDocument);\n }\n return cloned;\n }\n cloned.currentTime = video.currentTime;\n await new Promise((resolve) => {\n cloned.addEventListener(\"seeked\", resolve, { once: true });\n });\n const canvas = ownerDocument.createElement(\"canvas\");\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n try {\n const ctx = canvas.getContext(\"2d\");\n if (ctx)\n ctx.drawImage(cloned, 0, 0, canvas.width, canvas.height);\n } catch (error) {\n context.log.warn(\"Failed to clone video\", error);\n if (video.poster) {\n return createImage(video.poster, video.ownerDocument);\n }\n return cloned;\n }\n return cloneCanvas(canvas, context);\n }\n return cloned;\n}\n\nfunction cloneElement(node, context) {\n if (isCanvasElement(node)) {\n return cloneCanvas(node, context);\n }\n if (isIFrameElement(node)) {\n return cloneIframe(node, context);\n }\n if (isImageElement(node)) {\n return cloneImage(node);\n }\n if (isVideoElement(node)) {\n return cloneVideo(node, context);\n }\n return node.cloneNode(false);\n}\n\nfunction getSandBox(context) {\n let sandbox = context.sandbox;\n if (!sandbox) {\n const { ownerDocument } = context;\n try {\n if (ownerDocument) {\n sandbox = ownerDocument.createElement(\"iframe\");\n sandbox.id = `__SANDBOX__${uuid()}`;\n sandbox.width = \"0\";\n sandbox.height = \"0\";\n sandbox.style.visibility = \"hidden\";\n sandbox.style.position = \"fixed\";\n ownerDocument.body.appendChild(sandbox);\n sandbox.srcdoc = '<!DOCTYPE html><meta charset=\"UTF-8\"><title></title><body>';\n context.sandbox = sandbox;\n }\n } catch (error) {\n context.log.warn(\"Failed to getSandBox\", error);\n }\n }\n return sandbox;\n}\n\nconst ignoredStyles = [\n \"width\",\n \"height\",\n \"-webkit-text-fill-color\"\n];\nconst includedAttributes = [\n \"stroke\",\n \"fill\"\n];\nfunction getDefaultStyle(node, pseudoElement, context) {\n const { defaultComputedStyles } = context;\n const nodeName = node.nodeName.toLowerCase();\n const isSvgNode = isSVGElementNode(node) && nodeName !== \"svg\";\n const attributes = isSvgNode ? includedAttributes.map((name) => [name, node.getAttribute(name)]).filter(([, value]) => value !== null) : [];\n const key = [\n isSvgNode && \"svg\",\n nodeName,\n attributes.map((name, value) => `${name}=${value}`).join(\",\"),\n pseudoElement\n ].filter(Boolean).join(\":\");\n if (defaultComputedStyles.has(key))\n return defaultComputedStyles.get(key);\n const sandbox = getSandBox(context);\n const sandboxWindow = sandbox?.contentWindow;\n if (!sandboxWindow)\n return /* @__PURE__ */ new Map();\n const sandboxDocument = sandboxWindow?.document;\n let root;\n let el;\n if (isSvgNode) {\n root = sandboxDocument.createElementNS(XMLNS, \"svg\");\n el = root.ownerDocument.createElementNS(root.namespaceURI, nodeName);\n attributes.forEach(([name, value]) => {\n el.setAttributeNS(null, name, value);\n });\n root.appendChild(el);\n } else {\n root = el = sandboxDocument.createElement(nodeName);\n }\n el.textContent = \" \";\n sandboxDocument.body.appendChild(root);\n const computedStyle = sandboxWindow.getComputedStyle(el, pseudoElement);\n const styles = /* @__PURE__ */ new Map();\n for (let len = computedStyle.length, i = 0; i < len; i++) {\n const name = computedStyle.item(i);\n if (ignoredStyles.includes(name))\n continue;\n styles.set(name, computedStyle.getPropertyValue(name));\n }\n sandboxDocument.body.removeChild(root);\n defaultComputedStyles.set(key, styles);\n return styles;\n}\n\nfunction getDiffStyle(style, defaultStyle, includeStyleProperties) {\n const diffStyle = /* @__PURE__ */ new Map();\n const prefixs = [];\n const prefixTree = /* @__PURE__ */ new Map();\n if (includeStyleProperties) {\n for (const name of includeStyleProperties) {\n applyTo(name);\n }\n } else {\n for (let len = style.length, i = 0; i < len; i++) {\n const name = style.item(i);\n applyTo(name);\n }\n }\n for (let len = prefixs.length, i = 0; i < len; i++) {\n prefixTree.get(prefixs[i])?.forEach((value, name) => diffStyle.set(name, value));\n }\n function applyTo(name) {\n const value = style.getPropertyValue(name);\n const priority = style.getPropertyPriority(name);\n const subIndex = name.lastIndexOf(\"-\");\n const prefix = subIndex > -1 ? name.substring(0, subIndex) : void 0;\n if (prefix) {\n let map = prefixTree.get(prefix);\n if (!map) {\n map = /* @__PURE__ */ new Map();\n prefixTree.set(prefix, map);\n }\n map.set(name, [value, priority]);\n }\n if (defaultStyle.get(name) === value && !priority)\n return;\n if (prefix) {\n prefixs.push(prefix);\n } else {\n diffStyle.set(name, [value, priority]);\n }\n }\n return diffStyle;\n}\n\nfunction copyCssStyles(node, cloned, isRoot, context) {\n const { ownerWindow, includeStyleProperties, currentParentNodeStyle } = context;\n const clonedStyle = cloned.style;\n const computedStyle = ownerWindow.getComputedStyle(node);\n const defaultStyle = getDefaultStyle(node, null, context);\n currentParentNodeStyle?.forEach((_, key) => {\n defaultStyle.delete(key);\n });\n const style = getDiffStyle(computedStyle, defaultStyle, includeStyleProperties);\n style.delete(\"transition-property\");\n style.delete(\"all\");\n style.delete(\"d\");\n style.delete(\"content\");\n if (isRoot) {\n style.delete(\"margin-top\");\n style.delete(\"margin-right\");\n style.delete(\"margin-bottom\");\n style.delete(\"margin-left\");\n style.delete(\"margin-block-start\");\n style.delete(\"margin-block-end\");\n style.delete(\"margin-inline-start\");\n style.delete(\"margin-inline-end\");\n style.set(\"box-sizing\", [\"border-box\", \"\"]);\n }\n if (style.get(\"background-clip\")?.[0] === \"text\") {\n cloned.classList.add(\"______background-clip--text\");\n }\n if (IN_CHROME) {\n if (!style.has(\"font-kerning\"))\n style.set(\"font-kerning\", [\"normal\", \"\"]);\n if ((style.get(\"overflow-x\")?.[0] === \"hidden\" || style.get(\"overflow-y\")?.[0] === \"hidden\") && style.get(\"text-overflow\")?.[0] === \"ellipsis\" && node.scrollWidth === node.clientWidth) {\n style.set(\"text-overflow\", [\"clip\", \"\"]);\n }\n }\n for (let len = clonedStyle.length, i = 0; i < len; i++) {\n clonedStyle.removeProperty(clonedStyle.item(i));\n }\n style.forEach(([value, priority], name) => {\n clonedStyle.setProperty(name, value, priority);\n });\n return style;\n}\n\nfunction copyInputValue(node, cloned) {\n if (isTextareaElement(node) || isInputElement(node) || isSelectElement(node)) {\n cloned.setAttribute(\"value\", node.value);\n }\n}\n\nconst pseudoClasses = [\n \"::before\",\n \"::after\"\n // '::placeholder', TODO\n];\nconst scrollbarPseudoClasses = [\n \"::-webkit-scrollbar\",\n \"::-webkit-scrollbar-button\",\n // '::-webkit-scrollbar:horizontal', TODO\n \"::-webkit-scrollbar-thumb\",\n \"::-webkit-scrollbar-track\",\n \"::-webkit-scrollbar-track-piece\",\n // '::-webkit-scrollbar:vertical', TODO\n \"::-webkit-scrollbar-corner\",\n \"::-webkit-resizer\"\n];\nfunction copyPseudoClass(node, cloned, copyScrollbar, context, addWordToFontFamilies) {\n const { ownerWindow, svgStyleElement, svgStyles, currentNodeStyle } = context;\n if (!svgStyleElement || !ownerWindow)\n return;\n function copyBy(pseudoClass) {\n const computedStyle = ownerWindow.getComputedStyle(node, pseudoClass);\n let content = computedStyle.getPropertyValue(\"content\");\n if (!content || content === \"none\")\n return;\n addWordToFontFamilies?.(content);\n content = content.replace(/(')|(\")|(counter\\(.+\\))/g, \"\");\n const klasses = [uuid()];\n const defaultStyle = getDefaultStyle(node, pseudoClass, context);\n currentNodeStyle?.forEach((_, key) => {\n defaultStyle.delete(key);\n });\n const style = getDiffStyle(computedStyle, defaultStyle, context.includeStyleProperties);\n style.delete(\"content\");\n style.delete(\"-webkit-locale\");\n if (style.get(\"background-clip\")?.[0] === \"text\") {\n cloned.classList.add(\"______background-clip--text\");\n }\n const cloneStyle = [\n `content: '${content}';`\n ];\n style.forEach(([value, priority], name) => {\n cloneStyle.push(`${name}: ${value}${priority ? \" !important\" : \"\"};`);\n });\n if (cloneStyle.length === 1)\n return;\n try {\n cloned.className = [cloned.className, ...klasses].join(\" \");\n } catch (err) {\n context.log.warn(\"Failed to copyPseudoClass\", err);\n return;\n }\n const cssText = cloneStyle.join(\"\\n \");\n let allClasses = svgStyles.get(cssText);\n if (!allClasses) {\n allClasses = [];\n svgStyles.set(cssText, allClasses);\n }\n allClasses.push(`.${klasses[0]}${pseudoClass}`);\n }\n pseudoClasses.forEach(copyBy);\n if (copyScrollbar)\n scrollbarPseudoClasses.forEach(copyBy);\n}\n\nconst excludeParentNodes = /* @__PURE__ */ new Set([\n \"symbol\"\n // test/fixtures/svg.symbol.html\n]);\nasync function appendChildNode(node, cloned, child, context, addWordToFontFamilies) {\n if (isElementNode(child) && (isStyleElement(child) || isScriptElement(child)))\n return;\n if (context.filter && !context.filter(child))\n return;\n if (excludeParentNodes.has(cloned.nodeName) || excludeParentNodes.has(child.nodeName)) {\n context.currentParentNodeStyle = void 0;\n } else {\n context.currentParentNodeStyle = context.currentNodeStyle;\n }\n const childCloned = await cloneNode(child, context, false, addWordToFontFamilies);\n if (context.isEnable(\"restoreScrollPosition\")) {\n restoreScrollPosition(node, childCloned);\n }\n cloned.appendChild(childCloned);\n}\nasync function cloneChildNodes(node, cloned, context, addWordToFontFamilies) {\n let firstChild = node.firstChild;\n if (isElementNode(node)) {\n if (node.shadowRoot) {\n firstChild = node.shadowRoot?.firstChild;\n context.shadowRoots.push(node.shadowRoot);\n }\n }\n for (let child = firstChild; child; child = child.nextSibling) {\n if (isCommentNode(child))\n continue;\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === \"function\") {\n const nodes = child.assignedNodes();\n for (let i = 0; i < nodes.length; i++) {\n await appendChildNode(node, cloned, nodes[i], context, addWordToFontFamilies);\n }\n } else {\n await appendChildNode(node, cloned, child, context, addWordToFontFamilies);\n }\n }\n}\nfunction restoreScrollPosition(node, chlidCloned) {\n if (!isHTMLElementNode(node) || !isHTMLElementNode(chlidCloned))\n return;\n const { scrollTop, scrollLeft } = node;\n if (!scrollTop && !scrollLeft) {\n return;\n }\n const { transform } = chlidCloned.style;\n const matrix = new DOMMatrix(transform);\n const { a, b, c, d } = matrix;\n matrix.a = 1;\n matrix.b = 0;\n matrix.c = 0;\n matrix.d = 1;\n matrix.translateSelf(-scrollLeft, -scrollTop);\n matrix.a = a;\n matrix.b = b;\n matrix.c = c;\n matrix.d = d;\n chlidCloned.style.transform = matrix.toString();\n}\nfunction applyCssStyleWithOptions(cloned, context) {\n const { backgroundColor, width, height, style: styles } = context;\n const clonedStyle = cloned.style;\n if (backgroundColor)\n clonedStyle.setProperty(\"background-color\", backgroundColor, \"important\");\n if (width)\n clonedStyle.setProperty(\"width\", `${width}px`, \"important\");\n if (height)\n clonedStyle.setProperty(\"height\", `${height}px`, \"important\");\n if (styles) {\n for (const name in styles) clonedStyle[name] = styles[name];\n }\n}\nconst NORMAL_ATTRIBUTE_RE = /^[\\w-:]+$/;\nasync function cloneNode(node, context, isRoot = false, addWordToFontFamilies) {\n const { ownerDocument, ownerWindow, fontFamilies, onCloneEachNode } = context;\n if (ownerDocument && isTextNode(node)) {\n if (addWordToFontFamilies && /\\S/.test(node.data)) {\n addWordToFontFamilies(node.data);\n }\n return ownerDocument.createTextNode(node.data);\n }\n if (ownerDocument && ownerWindow && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n const cloned2 = await cloneElement(node, context);\n if (context.isEnable(\"removeAbnormalAttributes\")) {\n const names = cloned2.getAttributeNames();\n for (let len = names.length, i = 0; i < len; i++) {\n const name = names[i];\n if (!NORMAL_ATTRIBUTE_RE.test(name)) {\n cloned2.removeAttribute(name);\n }\n }\n }\n const style = context.currentNodeStyle = copyCssStyles(node, cloned2, isRoot, context);\n if (isRoot)\n applyCssStyleWithOptions(cloned2, context);\n let copyScrollbar = false;\n if (context.isEnable(\"copyScrollbar\")) {\n const overflow = [\n style.get(\"overflow-x\")?.[0],\n style.get(\"overflow-y\")?.[0]\n ];\n copyScrollbar = overflow.includes(\"scroll\") || (overflow.includes(\"auto\") || overflow.includes(\"overlay\")) && (node.scrollHeight > node.clientHeight || node.scrollWidth > node.clientWidth);\n }\n const textTransform = style.get(\"text-transform\")?.[0];\n const families = splitFontFamily(style.get(\"font-family\")?.[0]);\n const addWordToFontFamilies2 = families ? (word) => {\n if (textTransform === \"uppercase\") {\n word = word.toUpperCase();\n } else if (textTransform === \"lowercase\") {\n word = word.toLowerCase();\n } else if (textTransform === \"capitalize\") {\n word = word[0].toUpperCase() + word.substring(1);\n }\n families.forEach((family) => {\n let fontFamily = fontFamilies.get(family);\n if (!fontFamily) {\n fontFamilies.set(family, fontFamily = /* @__PURE__ */ new Set());\n }\n word.split(\"\").forEach((text) => fontFamily.add(text));\n });\n } : void 0;\n copyPseudoClass(\n node,\n cloned2,\n copyScrollbar,\n context,\n addWordToFontFamilies2\n );\n copyInputValue(node, cloned2);\n if (!isVideoElement(node)) {\n await cloneChildNodes(\n node,\n cloned2,\n context,\n addWordToFontFamilies2\n );\n }\n await onCloneEachNode?.(cloned2);\n return cloned2;\n }\n const cloned = node.cloneNode(false);\n await cloneChildNodes(node, cloned, context);\n await onCloneEachNode?.(cloned);\n return cloned;\n}\n\nfunction destroyContext(context) {\n context.ownerDocument = void 0;\n context.ownerWindow = void 0;\n context.svgStyleElement = void 0;\n context.svgDefsElement = void 0;\n context.svgStyles.clear();\n context.defaultComputedStyles.clear();\n if (context.sandbox) {\n try {\n context.sandbox.remove();\n } catch (err) {\n context.log.warn(\"Failed to destroyContext\", err);\n }\n context.sandbox = void 0;\n }\n context.workers = [];\n context.fontFamilies.clear();\n context.fontCssTexts.clear();\n context.requests.clear();\n context.tasks = [];\n context.shadowRoots = [];\n}\n\nfunction baseFetch(options) {\n const { url, timeout, responseType, ...requestInit } = options;\n const controller = new AbortController();\n const timer = timeout ? setTimeout(() => controller.abort(), timeout) : void 0;\n return fetch(url, { signal: controller.signal, ...requestInit }).then((response) => {\n if (!response.ok) {\n throw new Error(\"Failed fetch, not 2xx response\", { cause: response });\n }\n switch (responseType) {\n case \"arrayBuffer\":\n return response.arrayBuffer();\n case \"dataUrl\":\n return response.blob().then(blobToDataUrl);\n case \"text\":\n default:\n return response.text();\n }\n }).finally(() => clearTimeout(timer));\n}\nfunction contextFetch(context, options) {\n const { url: rawUrl, requestType = \"text\", responseType = \"text\", imageDom } = options;\n let url = rawUrl;\n const {\n timeout,\n acceptOfImage,\n requests,\n fetchFn,\n fetch: {\n requestInit,\n bypassingCache,\n placeholderImage\n },\n font,\n workers,\n fontFamilies\n } = context;\n if (requestType === \"image\" && (IN_SAFARI || IN_FIREFOX)) {\n context.drawImageCount++;\n }\n let request = requests.get(rawUrl);\n if (!request) {\n if (bypassingCache) {\n if (bypassingCache instanceof RegExp && bypassingCache.test(url)) {\n url += (/\\?/.test(url) ? \"&\" : \"?\") + (/* @__PURE__ */ new Date()).getTime();\n }\n }\n const canFontMinify = requestType.startsWith(\"font\") && font && font.minify;\n const fontTexts = /* @__PURE__ */ new Set();\n if (canFontMinify) {\n const families = requestType.split(\";\")[1].split(\",\");\n families.forEach((family) => {\n if (!fontFamilies.has(family))\n return;\n fontFamilies.get(family).forEach((text) => fontTexts.add(text));\n });\n }\n const needFontMinify = canFontMinify && fontTexts.size;\n const baseFetchOptions = {\n url,\n timeout,\n responseType: needFontMinify ? \"arrayBuffer\" : responseType,\n headers: requestType === \"image\" ? { accept: acceptOfImage } : void 0,\n ...requestInit\n };\n request = {\n type: requestType,\n resolve: void 0,\n reject: void 0,\n response: null\n };\n request.response = (async () => {\n if (fetchFn && requestType === \"image\") {\n const result = await fetchFn(rawUrl);\n if (result)\n return result;\n }\n if (!IN_SAFARI && rawUrl.startsWith(\"http\") && workers.length) {\n return new Promise((resolve, reject) => {\n const worker = workers[requests.size & workers.length - 1];\n worker.postMessage({ rawUrl, ...baseFetchOptions });\n request.resolve = resolve;\n request.reject = reject;\n });\n }\n return baseFetch(baseFetchOptions);\n })().catch((error) => {\n requests.delete(rawUrl);\n if (requestType === \"image\" && placeholderImage) {\n context.log.warn(\"Failed to fetch image base64, trying to use placeholder image\", url);\n return typeof placeholderImage === \"string\" ? placeholderImage : placeholderImage(imageDom);\n }\n throw error;\n });\n requests.set(rawUrl, request);\n }\n return request.response;\n}\n\nasync function replaceCssUrlToDataUrl(cssText, baseUrl, context, isImage) {\n if (!hasCssUrl(cssText))\n return cssText;\n for (const [rawUrl, url] of parseCssUrls(cssText, baseUrl)) {\n try {\n const dataUrl = await contextFetch(\n context,\n {\n url,\n requestType: isImage ? \"image\" : \"text\",\n responseType: \"dataUrl\"\n }\n );\n cssText = cssText.replace(toRE(rawUrl), `$1${dataUrl}$3`);\n } catch (error) {\n context.log.warn(\"Failed to fetch css data url\", rawUrl, error);\n }\n }\n return cssText;\n}\nfunction hasCssUrl(cssText) {\n return /url\\((['\"]?)([^'\"]+?)\\1\\)/.test(cssText);\n}\nconst URL_RE = /url\\((['\"]?)([^'\"]+?)\\1\\)/g;\nfunction parseCssUrls(cssText, baseUrl) {\n const result = [];\n cssText.replace(URL_RE, (raw, quotation, url) => {\n result.push([url, resolveUrl(url, baseUrl)]);\n return raw;\n });\n return result.filter(([url]) => !isDataUrl(url));\n}\nfunction toRE(url) {\n const escaped = url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\n return new RegExp(`(url\\\\(['\"]?)(${escaped})(['\"]?\\\\))`, \"g\");\n}\n\nconst properties = [\n \"background-image\",\n \"border-image-source\",\n \"-webkit-border-image\",\n \"-webkit-mask-image\",\n \"list-style-image\"\n];\nfunction embedCssStyleImage(style, context) {\n return properties.map((property) => {\n const value = style.getPropertyValue(property);\n if (!value || value === \"none\") {\n return null;\n }\n if (IN_SAFARI || IN_FIREFOX) {\n context.drawImageCount++;\n }\n return replaceCssUrlToDataUrl(value, null, context, true).then((newValue) => {\n if (!newValue || value === newValue)\n return;\n style.setProperty(\n property,\n newValue,\n style.getPropertyPriority(property)\n );\n });\n }).filter(Boolean);\n}\n\nfunction embedImageElement(cloned, context) {\n if (isImageElement(cloned)) {\n const originalSrc = cloned.currentSrc || cloned.src;\n if (!isDataUrl(originalSrc)) {\n return [\n contextFetch(context, {\n url: originalSrc,\n imageDom: cloned,\n requestType: \"image\",\n responseType: \"dataUrl\"\n }).then((url) => {\n if (!url)\n return;\n cloned.srcset = \"\";\n cloned.dataset.originalSrc = originalSrc;\n cloned.src = url || \"\";\n })\n ];\n }\n if (IN_SAFARI || IN_FIREFOX) {\n context.drawImageCount++;\n }\n } else if (isSVGElementNode(cloned) && !isDataUrl(cloned.href.baseVal)) {\n const originalSrc = cloned.href.baseVal;\n return [\n contextFetch(context, {\n url: originalSrc,\n imageDom: cloned,\n requestType: \"image\",\n responseType: \"dataUrl\"\n }).then((url) => {\n if (!url)\n return;\n cloned.dataset.originalSrc = originalSrc;\n cloned.href.baseVal = url || \"\";\n })\n ];\n }\n return [];\n}\n\nfunction embedSvgUse(cloned, context) {\n const { ownerDocument, svgDefsElement } = context;\n const href = cloned.getAttribute(\"href\") ?? cloned.getAttribute(\"xlink:href\");\n if (!href)\n return [];\n const [svgUrl, id] = href.split(\"#\");\n if (id) {\n const query = `#${id}`;\n const definition = context.shadowRoots.reduce(\n (res, root) => {\n return res ?? root.querySelector(`svg ${query}`);\n },\n ownerDocument?.querySelector(`svg ${query}`)\n );\n if (svgUrl) {\n cloned.setAttribute(\"href\", query);\n }\n if (svgDefsElement?.querySelector(query))\n return [];\n if (definition) {\n svgDefsElement?.appendChild(definition.cloneNode(true));\n return [];\n } else if (svgUrl) {\n return [\n contextFetch(context, {\n url: svgUrl,\n responseType: \"text\"\n }).then((svgData) => {\n svgDefsElement?.insertAdjacentHTML(\"beforeend\", svgData);\n })\n ];\n }\n }\n return [];\n}\n\nfunction embedNode(cloned, context) {\n const { tasks } = context;\n if (isElementNode(cloned)) {\n if (isImageElement(cloned) || isSVGImageElementNode(cloned)) {\n tasks.push(...embedImageElement(cloned, context));\n }\n if (isSVGUseElementNode(cloned)) {\n tasks.push(...embedSvgUse(cloned, context));\n }\n }\n if (isHTMLElementNode(cloned)) {\n tasks.push(...embedCssStyleImage(cloned.style, context));\n }\n cloned.childNodes.forEach((child) => {\n embedNode(child, context);\n });\n}\n\nasync function embedWebFont(clone, context) {\n const {\n ownerDocument,\n svgStyleElement,\n fontFamilies,\n fontCssTexts,\n tasks,\n font\n } = context;\n if (!ownerDocument || !svgStyleElement || !fontFamilies.size) {\n return;\n }\n if (font && font.cssText) {\n const cssText = filterPreferredFormat(font.cssText, context);\n svgStyleElement.appendChild(ownerDocument.createTextNode(`${cssText}\n`));\n } else {\n const styleSheets = Array.from(ownerDocument.styleSheets).filter((styleSheet) => {\n try {\n return \"cssRules\" in styleSheet && Boolean(styleSheet.cssRules.length);\n } catch (error) {\n context.log.warn(`Error while reading CSS rules from ${styleSheet.href}`, error);\n return false;\n }\n });\n await Promise.all(\n styleSheets.flatMap((styleSheet) => {\n return Array.from(styleSheet.cssRules).map(async (cssRule, index) => {\n if (isCSSImportRule(cssRule)) {\n let importIndex = index + 1;\n const baseUrl = cssRule.href;\n let cssText = \"\";\n try {\n cssText = await contextFetch(context, {\n url: baseUrl,\n requestType: \"text\",\n responseType: \"text\"\n });\n } catch (error) {\n context.log.warn(`Error fetch remote css import from ${baseUrl}`, error);\n }\n const replacedCssText = cssText.replace(\n URL_RE,\n (raw, quotation, url) => raw.replace(url, resolveUrl(url, baseUrl))\n );\n for (const rule of parseCss(replacedCssText)) {\n try {\n styleSheet.insertRule(\n rule,\n rule.startsWith(\"@import\") ? importIndex += 1 : styleSheet.cssRules.length\n );\n } catch (error) {\n context.log.warn(\"Error inserting rule from remote css import\", { rule, error });\n }\n }\n }\n });\n })\n );\n const cssRules = [];\n styleSheets.forEach((sheet) => {\n unwrapCssLayers(sheet.cssRules, cssRules);\n });\n cssRules.filter((cssRule) => isCssFontFaceRule(cssRule) && hasCssUrl(cssRule.style.getPropertyValue(\"src\")) && splitFontFamily(cssRule.style.getPropertyValue(\"font-family\"))?.some((val) => fontFamilies.has(val))).forEach((value) => {\n const rule = value;\n const cssText = fontCssTexts.get(rule.cssText);\n if (cssText) {\n svgStyleElement.appendChild(ownerDocument.createTextNode(`${cssText}\n`));\n } else {\n tasks.push(\n replaceCssUrlToDataUrl(\n rule.cssText,\n rule.parentStyleSheet ? rule.parentStyleSheet.href : null,\n context\n ).then((cssText2) => {\n cssText2 = filterPreferredFormat(cssText2, context);\n fontCssTexts.set(rule.cssText, cssText2);\n svgStyleElement.appendChild(ownerDocument.createTextNode(`${cssText2}\n`));\n })\n );\n }\n });\n }\n}\nconst COMMENTS_RE = /(\\/\\*[\\s\\S]*?\\*\\/)/g;\nconst KEYFRAMES_RE = /((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})/gi;\nfunction parseCss(source) {\n if (source == null)\n return [];\n const result = [];\n let cssText = source.replace(COMMENTS_RE, \"\");\n while (true) {\n const matches = KEYFRAMES_RE.exec(cssText);\n if (!matches)\n break;\n result.push(matches[0]);\n }\n cssText = cssText.replace(KEYFRAMES_RE, \"\");\n const IMPORT_RE = /@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi;\n const UNIFIED_RE = new RegExp(\n // eslint-disable-next-line\n \"((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})\",\n \"gi\"\n );\n while (true) {\n let matches = IMPORT_RE.exec(cssText);\n if (!matches) {\n matches = UNIFIED_RE.exec(cssText);\n if (!matches) {\n break;\n } else {\n IMPORT_RE.lastIndex = UNIFIED_RE.lastIndex;\n }\n } else {\n UNIFIED_RE.lastIndex = IMPORT_RE.lastIndex;\n }\n result.push(matches[0]);\n }\n return result;\n}\nconst URL_WITH_FORMAT_RE = /url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g;\nconst FONT_SRC_RE = /src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;\nfunction filterPreferredFormat(str, context) {\n const { font } = context;\n const preferredFormat = font ? font?.preferredFormat : void 0;\n return preferredFormat ? str.replace(FONT_SRC_RE, (match) => {\n while (true) {\n const [src, , format] = URL_WITH_FORMAT_RE.exec(match) || [];\n if (!format)\n return \"\";\n if (format === preferredFormat)\n return `src: ${src};`;\n }\n }) : str;\n}\nfunction unwrapCssLayers(rules, out = []) {\n for (const rule of Array.from(rules)) {\n if (isLayerBlockRule(rule)) {\n out.push(...unwrapCssLayers(rule.cssRules));\n } else if (\"cssRules\" in rule) {\n unwrapCssLayers(rule.cssRules, out);\n } else {\n out.push(rule);\n }\n }\n return out;\n}\n\nasync function domToForeignObjectSvg(node, options) {\n const context = await orCreateContext(node, options);\n if (isElementNode(context.node) && isSVGElementNode(context.node))\n return context.node;\n const {\n ownerDocument,\n log,\n tasks,\n svgStyleElement,\n svgDefsElement,\n svgStyles,\n font,\n progress,\n autoDestruct,\n onCloneNode,\n onEmbedNode,\n onCreateForeignObjectSvg\n } = context;\n log.time(\"clone node\");\n const clone = await cloneNode(context.node, context, true);\n if (svgStyleElement && ownerDocument) {\n let allCssText = \"\";\n svgStyles.forEach((klasses, cssText) => {\n allCssText += `${klasses.join(\",\\n\")} {\n ${cssText}\n}\n`;\n });\n svgStyleElement.appendChild(ownerDocument.createTextNode(allCssText));\n }\n log.timeEnd(\"clone node\");\n await onCloneNode?.(clone);\n if (font !== false && isElementNode(clone)) {\n log.time(\"embed web font\");\n await embedWebFont(clone, context);\n log.timeEnd(\"embed web font\");\n }\n log.time(\"embed node\");\n embedNode(clone, context);\n const count = tasks.length;\n let current = 0;\n const runTask = async () => {\n while (true) {\n const task = tasks.pop();\n if (!task)\n break;\n try {\n await task;\n } catch (error) {\n context.log.warn(\"Failed to run task\", error);\n }\n progress?.(++current, count);\n }\n };\n progress?.(current, count);\n await Promise.all([...Array.from({ length: 4 })].map(runTask));\n log.timeEnd(\"embed node\");\n await onEmbedNode?.(clone);\n const svg = createForeignObjectSvg(clone, context);\n svgDefsElement && svg.insertBefore(svgDefsElement, svg.children[0]);\n svgStyleElement && svg.insertBefore(svgStyleElement, svg.children[0]);\n autoDestruct && destroyContext(context);\n await onCreateForeignObjectSvg?.(svg);\n return svg;\n}\nfunction createForeignObjectSvg(clone, context) {\n const { width, height } = context;\n const svg = createSvg(width, height, clone.ownerDocument);\n const foreignObject = svg.ownerDocument.createElementNS(svg.namespaceURI, \"foreignObject\");\n foreignObject.setAttributeNS(null, \"x\", \"0%\");\n foreignObject.setAttributeNS(null, \"y\", \"0%\");\n foreignObject.setAttributeNS(null, \"width\", \"100%\");\n foreignObject.setAttributeNS(null, \"height\", \"100%\");\n foreignObject.append(clone);\n svg.appendChild(foreignObject);\n return svg;\n}\n\nasync function domToCanvas(node, options) {\n const context = await orCreateContext(node, options);\n const svg = await domToForeignObjectSvg(context);\n const dataUrl = svgToDataUrl(svg, context.isEnable(\"removeControlCharacter\"));\n if (!context.autoDestruct) {\n context.svgStyleElement = createStyleElement(context.ownerDocument);\n context.svgDefsElement = context.ownerDocument?.createElementNS(XMLNS, \"defs\");\n context.svgStyles.clear();\n }\n const image = createImage(dataUrl, svg.ownerDocument);\n return await imageToCanvas(image, context);\n}\n\nasync function domToBlob(node, options) {\n const context = await orCreateContext(node, options);\n const { log, type, quality, dpi } = context;\n const canvas = await domToCanvas(context);\n log.time(\"canvas to blob\");\n const blob = await canvasToBlob(canvas, type, quality);\n if ([\"image/png\", \"image/jpeg\"].includes(type) && dpi) {\n const arrayBuffer = await blobToArrayBuffer(blob.slice(0, 33));\n let uint8Array = new Uint8Array(arrayBuffer);\n if (type === \"image/png\") {\n uint8Array = changePngDpi(uint8Array, dpi);\n } else if (type === \"image/jpeg\") {\n uint8Array = changeJpegDpi(uint8Array, dpi);\n }\n log.timeEnd(\"canvas to blob\");\n return new Blob([uint8Array, blob.slice(33)], { type });\n }\n log.timeEnd(\"canvas to blob\");\n return blob;\n}\n\nasync function domToDataUrl(node, options) {\n const context = await orCreateContext(node, options);\n const { log, quality, type, dpi } = context;\n const canvas = await domToCanvas(context);\n log.time(\"canvas to data url\");\n let dataUrl = canvas.toDataURL(type, quality);\n if ([\"image/png\", \"image/jpeg\"].includes(type) && dpi && SUPPORT_ATOB && SUPPORT_BTOA) {\n const [format, body] = dataUrl.split(\",\");\n let headerLength = 0;\n let overwritepHYs = false;\n if (type === \"image/png\") {\n const b64Index = detectPhysChunkFromDataUrl(body);\n if (b64Index >= 0) {\n headerLength = Math.ceil((b64Index + 28) / 3) * 4;\n overwritepHYs = true;\n } else {\n headerLength = 33 / 3 * 4;\n }\n } else if (type === \"image/jpeg\") {\n headerLength = 18 / 3 * 4;\n }\n const stringHeader = body.substring(0, headerLength);\n const restOfData = body.substring(headerLength);\n const headerBytes = window.atob(stringHeader);\n const uint8Array = new Uint8Array(headerBytes.length);\n for (let i = 0; i < uint8Array.length; i++) {\n uint8Array[i] = headerBytes.charCodeAt(i);\n }\n const finalArray = type === \"image/png\" ? changePngDpi(uint8Array, dpi, overwritepHYs) : changeJpegDpi(uint8Array, dpi);\n const base64Header = window.btoa(String.fromCharCode(...finalArray));\n dataUrl = [format, \",\", base64Header, restOfData].join(\"\");\n }\n log.timeEnd(\"canvas to data url\");\n return dataUrl;\n}\n\nasync function domToSvg(node, options) {\n const context = await orCreateContext(node, options);\n const { width, height, ownerDocument } = context;\n const dataUrl = await domToDataUrl(context);\n const svg = createSvg(width, height, ownerDocument);\n const svgImage = svg.ownerDocument.createElementNS(svg.namespaceURI, \"image\");\n svgImage.setAttributeNS(null, \"href\", dataUrl);\n svgImage.setAttributeNS(null, \"height\", \"100%\");\n svgImage.setAttributeNS(null, \"width\", \"100%\");\n svg.appendChild(svgImage);\n return svgToDataUrl(svg, context.isEnable(\"removeControlCharacter\"));\n}\n\nasync function domToImage(node, options) {\n const context = await orCreateContext(node, options);\n const { ownerDocument, width, height, scale, type } = context;\n const url = type === \"image/svg+xml\" ? await domToSvg(context) : await domToDataUrl(context);\n const image = createImage(url, ownerDocument);\n image.width = Math.floor(width * scale);\n image.height = Math.floor(height * scale);\n image.style.width = `${width}px`;\n image.style.height = `${height}px`;\n return image;\n}\n\nasync function domToJpeg(node, options) {\n return domToDataUrl(\n await orCreateContext(node, { ...options, type: \"image/jpeg\" })\n );\n}\n\nasync function domToPixel(node, options) {\n const context = await orCreateContext(node, options);\n const canvas = await domToCanvas(context);\n return canvas.getContext(\"2d\").getImageData(0, 0, canvas.width, canvas.height).data;\n}\n\nasync function domToPng(node, options) {\n return domToDataUrl(\n await orCreateContext(node, { ...options, type: \"image/png\" })\n );\n}\n\nasync function domToWebp(node, options) {\n return domToDataUrl(\n await orCreateContext(node, { ...options, type: \"image/webp\" })\n );\n}\n\nexport { createContext, destroyContext, domToBlob, domToCanvas, domToDataUrl, domToForeignObjectSvg, domToImage, domToJpeg, domToPixel, domToPng, domToSvg, domToWebp, loadMedia, waitUntilLoad };\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"dist-BWPE2m_X.js","names":[],"sources":["../../../node_modules/modern-screenshot/dist/index.mjs"],"sourcesContent":["function changeJpegDpi(uint8Array, dpi) {\n uint8Array[13] = 1;\n uint8Array[14] = dpi >> 8;\n uint8Array[15] = dpi & 255;\n uint8Array[16] = dpi >> 8;\n uint8Array[17] = dpi & 255;\n return uint8Array;\n}\n\nconst _P = \"p\".charCodeAt(0);\nconst _H = \"H\".charCodeAt(0);\nconst _Y = \"Y\".charCodeAt(0);\nconst _S = \"s\".charCodeAt(0);\nlet pngDataTable;\nfunction createPngDataTable() {\n const crcTable = new Int32Array(256);\n for (let n = 0; n < 256; n++) {\n let c = n;\n for (let k = 0; k < 8; k++) {\n c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;\n }\n crcTable[n] = c;\n }\n return crcTable;\n}\nfunction calcCrc(uint8Array) {\n let c = -1;\n if (!pngDataTable)\n pngDataTable = createPngDataTable();\n for (let n = 0; n < uint8Array.length; n++) {\n c = pngDataTable[(c ^ uint8Array[n]) & 255] ^ c >>> 8;\n }\n return c ^ -1;\n}\nfunction searchStartOfPhys(uint8Array) {\n const length = uint8Array.length - 1;\n for (let i = length; i >= 4; i--) {\n if (uint8Array[i - 4] === 9 && uint8Array[i - 3] === _P && uint8Array[i - 2] === _H && uint8Array[i - 1] === _Y && uint8Array[i] === _S) {\n return i - 3;\n }\n }\n return 0;\n}\nfunction changePngDpi(uint8Array, dpi, overwritepHYs = false) {\n const physChunk = new Uint8Array(13);\n dpi *= 39.3701;\n physChunk[0] = _P;\n physChunk[1] = _H;\n physChunk[2] = _Y;\n physChunk[3] = _S;\n physChunk[4] = dpi >>> 24;\n physChunk[5] = dpi >>> 16;\n physChunk[6] = dpi >>> 8;\n physChunk[7] = dpi & 255;\n physChunk[8] = physChunk[4];\n physChunk[9] = physChunk[5];\n physChunk[10] = physChunk[6];\n physChunk[11] = physChunk[7];\n physChunk[12] = 1;\n const crc = calcCrc(physChunk);\n const crcChunk = new Uint8Array(4);\n crcChunk[0] = crc >>> 24;\n crcChunk[1] = crc >>> 16;\n crcChunk[2] = crc >>> 8;\n crcChunk[3] = crc & 255;\n if (overwritepHYs) {\n const startingIndex = searchStartOfPhys(uint8Array);\n uint8Array.set(physChunk, startingIndex);\n uint8Array.set(crcChunk, startingIndex + 13);\n return uint8Array;\n } else {\n const chunkLength = new Uint8Array(4);\n chunkLength[0] = 0;\n chunkLength[1] = 0;\n chunkLength[2] = 0;\n chunkLength[3] = 9;\n const finalHeader = new Uint8Array(54);\n finalHeader.set(uint8Array, 0);\n finalHeader.set(chunkLength, 33);\n finalHeader.set(physChunk, 37);\n finalHeader.set(crcChunk, 50);\n return finalHeader;\n }\n}\nconst b64PhysSignature1 = \"AAlwSFlz\";\nconst b64PhysSignature2 = \"AAAJcEhZ\";\nconst b64PhysSignature3 = \"AAAACXBI\";\nfunction detectPhysChunkFromDataUrl(dataUrl) {\n let b64index = dataUrl.indexOf(b64PhysSignature1);\n if (b64index === -1) {\n b64index = dataUrl.indexOf(b64PhysSignature2);\n }\n if (b64index === -1) {\n b64index = dataUrl.indexOf(b64PhysSignature3);\n }\n return b64index;\n}\n\nconst PREFIX = \"[modern-screenshot]\";\nconst IN_BROWSER = typeof window !== \"undefined\";\nconst SUPPORT_WEB_WORKER = IN_BROWSER && \"Worker\" in window;\nconst SUPPORT_ATOB = IN_BROWSER && \"atob\" in window;\nconst SUPPORT_BTOA = IN_BROWSER && \"btoa\" in window;\nconst USER_AGENT = IN_BROWSER ? window.navigator?.userAgent : \"\";\nconst IN_CHROME = USER_AGENT.includes(\"Chrome\");\nconst IN_SAFARI = USER_AGENT.includes(\"AppleWebKit\") && !IN_CHROME;\nconst IN_FIREFOX = USER_AGENT.includes(\"Firefox\");\nconst isContext = (value) => value && \"__CONTEXT__\" in value;\nconst isCssFontFaceRule = (rule) => rule.constructor.name === \"CSSFontFaceRule\";\nconst isCSSImportRule = (rule) => rule.constructor.name === \"CSSImportRule\";\nconst isLayerBlockRule = (rule) => rule.constructor.name === \"CSSLayerBlockRule\";\nconst isElementNode = (node) => node.nodeType === 1;\nconst isSVGElementNode = (node) => typeof node.className === \"object\";\nconst isSVGImageElementNode = (node) => node.tagName === \"image\";\nconst isSVGUseElementNode = (node) => node.tagName === \"use\";\nconst isHTMLElementNode = (node) => isElementNode(node) && typeof node.style !== \"undefined\" && !isSVGElementNode(node);\nconst isCommentNode = (node) => node.nodeType === 8;\nconst isTextNode = (node) => node.nodeType === 3;\nconst isImageElement = (node) => node.tagName === \"IMG\";\nconst isVideoElement = (node) => node.tagName === \"VIDEO\";\nconst isCanvasElement = (node) => node.tagName === \"CANVAS\";\nconst isTextareaElement = (node) => node.tagName === \"TEXTAREA\";\nconst isInputElement = (node) => node.tagName === \"INPUT\";\nconst isStyleElement = (node) => node.tagName === \"STYLE\";\nconst isScriptElement = (node) => node.tagName === \"SCRIPT\";\nconst isSelectElement = (node) => node.tagName === \"SELECT\";\nconst isSlotElement = (node) => node.tagName === \"SLOT\";\nconst isIFrameElement = (node) => node.tagName === \"IFRAME\";\nconst consoleWarn = (...args) => console.warn(PREFIX, ...args);\nfunction supportWebp(ownerDocument) {\n const canvas = ownerDocument?.createElement?.(\"canvas\");\n if (canvas) {\n canvas.height = canvas.width = 1;\n }\n return Boolean(canvas) && \"toDataURL\" in canvas && Boolean(canvas.toDataURL(\"image/webp\").includes(\"image/webp\"));\n}\nconst isDataUrl = (url) => url.startsWith(\"data:\");\nfunction resolveUrl(url, baseUrl) {\n if (url.match(/^[a-z]+:\\/\\//i))\n return url;\n if (IN_BROWSER && url.match(/^\\/\\//))\n return window.location.protocol + url;\n if (url.match(/^[a-z]+:/i))\n return url;\n if (!IN_BROWSER)\n return url;\n const doc = getDocument().implementation.createHTMLDocument();\n const base = doc.createElement(\"base\");\n const a = doc.createElement(\"a\");\n doc.head.appendChild(base);\n doc.body.appendChild(a);\n if (baseUrl)\n base.href = baseUrl;\n a.href = url;\n return a.href;\n}\nfunction getDocument(target) {\n return (target && isElementNode(target) ? target?.ownerDocument : target) ?? window.document;\n}\nconst XMLNS = \"http://www.w3.org/2000/svg\";\nfunction createSvg(width, height, ownerDocument) {\n const svg = getDocument(ownerDocument).createElementNS(XMLNS, \"svg\");\n svg.setAttributeNS(null, \"width\", width.toString());\n svg.setAttributeNS(null, \"height\", height.toString());\n svg.setAttributeNS(null, \"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n}\nfunction svgToDataUrl(svg, removeControlCharacter) {\n let xhtml = new XMLSerializer().serializeToString(svg);\n if (removeControlCharacter) {\n xhtml = xhtml.replace(/[\\u0000-\\u0008\\v\\f\\u000E-\\u001F\\uD800-\\uDFFF\\uFFFE\\uFFFF]/gu, \"\");\n }\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(xhtml)}`;\n}\nasync function canvasToBlob(canvas, type = \"image/png\", quality = 1) {\n try {\n return await new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new Error(\"Blob is null\"));\n }\n }, type, quality);\n });\n } catch (error) {\n if (SUPPORT_ATOB) {\n return dataUrlToBlob(canvas.toDataURL(type, quality));\n }\n throw error;\n }\n}\nfunction dataUrlToBlob(dataUrl) {\n const [header, base64] = dataUrl.split(\",\");\n const type = header.match(/data:(.+);/)?.[1] ?? void 0;\n const decoded = window.atob(base64);\n const length = decoded.length;\n const buffer = new Uint8Array(length);\n for (let i = 0; i < length; i += 1) {\n buffer[i] = decoded.charCodeAt(i);\n }\n return new Blob([buffer], { type });\n}\nfunction readBlob(blob, type) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = () => reject(reader.error);\n reader.onabort = () => reject(new Error(`Failed read blob to ${type}`));\n if (type === \"dataUrl\") {\n reader.readAsDataURL(blob);\n } else if (type === \"arrayBuffer\") {\n reader.readAsArrayBuffer(blob);\n }\n });\n}\nconst blobToDataUrl = (blob) => readBlob(blob, \"dataUrl\");\nconst blobToArrayBuffer = (blob) => readBlob(blob, \"arrayBuffer\");\nfunction createImage(url, ownerDocument) {\n const img = getDocument(ownerDocument).createElement(\"img\");\n img.decoding = \"sync\";\n img.loading = \"eager\";\n img.src = url;\n return img;\n}\nfunction loadMedia(media, options) {\n return new Promise((resolve) => {\n const { timeout, ownerDocument, onError: userOnError, onWarn } = options ?? {};\n const node = typeof media === \"string\" ? createImage(media, getDocument(ownerDocument)) : media;\n let timer = null;\n let removeEventListeners = null;\n function onResolve() {\n resolve(node);\n timer && clearTimeout(timer);\n removeEventListeners?.();\n }\n if (timeout) {\n timer = setTimeout(onResolve, timeout);\n }\n if (isVideoElement(node)) {\n const currentSrc = node.currentSrc || node.src;\n if (!currentSrc) {\n if (node.poster) {\n return loadMedia(node.poster, options).then(resolve);\n }\n return onResolve();\n }\n if (node.readyState >= 2) {\n return onResolve();\n }\n const onLoadeddata = onResolve;\n const onError = (error) => {\n onWarn?.(\n \"Failed video load\",\n currentSrc,\n error\n );\n userOnError?.(error);\n onResolve();\n };\n removeEventListeners = () => {\n node.removeEventListener(\"loadeddata\", onLoadeddata);\n node.removeEventListener(\"error\", onError);\n };\n node.addEventListener(\"loadeddata\", onLoadeddata, { once: true });\n node.addEventListener(\"error\", onError, { once: true });\n } else {\n const currentSrc = isSVGImageElementNode(node) ? node.href.baseVal : node.currentSrc || node.src;\n if (!currentSrc) {\n return onResolve();\n }\n const onLoad = async () => {\n if (isImageElement(node) && \"decode\" in node) {\n try {\n await node.decode();\n } catch (error) {\n onWarn?.(\n \"Failed to decode image, trying to render anyway\",\n node.dataset.originalSrc || currentSrc,\n error\n );\n }\n }\n onResolve();\n };\n const onError = (error) => {\n onWarn?.(\n \"Failed image load\",\n node.dataset.originalSrc || currentSrc,\n error\n );\n onResolve();\n };\n if (isImageElement(node) && node.complete) {\n return onLoad();\n }\n removeEventListeners = () => {\n node.removeEventListener(\"load\", onLoad);\n node.removeEventListener(\"error\", onError);\n };\n node.addEventListener(\"load\", onLoad, { once: true });\n node.addEventListener(\"error\", onError, { once: true });\n }\n });\n}\nasync function waitUntilLoad(node, options) {\n if (isHTMLElementNode(node)) {\n if (isImageElement(node) || isVideoElement(node)) {\n await loadMedia(node, options);\n } else {\n await Promise.all(\n [\"img\", \"video\"].flatMap((selectors) => {\n return Array.from(node.querySelectorAll(selectors)).map((el) => loadMedia(el, options));\n })\n );\n }\n }\n}\nconst uuid = /* @__PURE__ */ function uuid2() {\n let counter = 0;\n const random = () => `0000${(Math.random() * 36 ** 4 << 0).toString(36)}`.slice(-4);\n return () => {\n counter += 1;\n return `u${random()}${counter}`;\n };\n}();\nfunction splitFontFamily(fontFamily) {\n return fontFamily?.split(\",\").map((val) => val.trim().replace(/\"|'/g, \"\").toLowerCase()).filter(Boolean);\n}\n\nlet uid = 0;\nfunction createLogger(debug) {\n const prefix = `${PREFIX}[#${uid}]`;\n uid++;\n return {\n // eslint-disable-next-line no-console\n time: (label) => debug && console.time(`${prefix} ${label}`),\n // eslint-disable-next-line no-console\n timeEnd: (label) => debug && console.timeEnd(`${prefix} ${label}`),\n warn: (...args) => debug && consoleWarn(...args)\n };\n}\n\nfunction getDefaultRequestInit(bypassingCache) {\n return {\n cache: bypassingCache ? \"no-cache\" : \"force-cache\"\n };\n}\n\nasync function orCreateContext(node, options) {\n return isContext(node) ? node : createContext(node, { ...options, autoDestruct: true });\n}\nasync function createContext(node, options) {\n const { scale = 1, workerUrl, workerNumber = 1 } = options || {};\n const debug = Boolean(options?.debug);\n const features = options?.features ?? true;\n const ownerDocument = node.ownerDocument ?? (IN_BROWSER ? window.document : void 0);\n const ownerWindow = node.ownerDocument?.defaultView ?? (IN_BROWSER ? window : void 0);\n const requests = /* @__PURE__ */ new Map();\n const context = {\n // Options\n width: 0,\n height: 0,\n quality: 1,\n type: \"image/png\",\n scale,\n backgroundColor: null,\n style: null,\n filter: null,\n maximumCanvasSize: 0,\n timeout: 3e4,\n progress: null,\n debug,\n fetch: {\n requestInit: getDefaultRequestInit(options?.fetch?.bypassingCache),\n placeholderImage: \"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\",\n bypassingCache: false,\n ...options?.fetch\n },\n fetchFn: null,\n font: {},\n drawImageInterval: 100,\n workerUrl: null,\n workerNumber,\n onCloneEachNode: null,\n onCloneNode: null,\n onEmbedNode: null,\n onCreateForeignObjectSvg: null,\n includeStyleProperties: null,\n autoDestruct: false,\n ...options,\n // InternalContext\n __CONTEXT__: true,\n log: createLogger(debug),\n node,\n ownerDocument,\n ownerWindow,\n dpi: scale === 1 ? null : 96 * scale,\n svgStyleElement: createStyleElement(ownerDocument),\n svgDefsElement: ownerDocument?.createElementNS(XMLNS, \"defs\"),\n svgStyles: /* @__PURE__ */ new Map(),\n defaultComputedStyles: /* @__PURE__ */ new Map(),\n workers: [\n ...Array.from({\n length: SUPPORT_WEB_WORKER && workerUrl && workerNumber ? workerNumber : 0\n })\n ].map(() => {\n try {\n const worker = new Worker(workerUrl);\n worker.onmessage = async (event) => {\n const { url, result } = event.data;\n if (result) {\n requests.get(url)?.resolve?.(result);\n } else {\n requests.get(url)?.reject?.(new Error(`Error receiving message from worker: ${url}`));\n }\n };\n worker.onmessageerror = (event) => {\n const { url } = event.data;\n requests.get(url)?.reject?.(new Error(`Error receiving message from worker: ${url}`));\n };\n return worker;\n } catch (error) {\n context.log.warn(\"Failed to new Worker\", error);\n return null;\n }\n }).filter(Boolean),\n fontFamilies: /* @__PURE__ */ new Map(),\n fontCssTexts: /* @__PURE__ */ new Map(),\n acceptOfImage: `${[\n supportWebp(ownerDocument) && \"image/webp\",\n \"image/svg+xml\",\n \"image/*\",\n \"*/*\"\n ].filter(Boolean).join(\",\")};q=0.8`,\n requests,\n drawImageCount: 0,\n tasks: [],\n features,\n isEnable: (key) => {\n if (key === \"restoreScrollPosition\") {\n return typeof features === \"boolean\" ? false : features[key] ?? false;\n }\n if (typeof features === \"boolean\") {\n return features;\n }\n return features[key] ?? true;\n },\n shadowRoots: []\n };\n context.log.time(\"wait until load\");\n await waitUntilLoad(node, { timeout: context.timeout, onWarn: context.log.warn });\n context.log.timeEnd(\"wait until load\");\n const { width, height } = resolveBoundingBox(node, context);\n context.width = width;\n context.height = height;\n return context;\n}\nfunction createStyleElement(ownerDocument) {\n if (!ownerDocument)\n return void 0;\n const style = ownerDocument.createElement(\"style\");\n const cssText = style.ownerDocument.createTextNode(`\n.______background-clip--text {\n background-clip: text;\n -webkit-background-clip: text;\n}\n`);\n style.appendChild(cssText);\n return style;\n}\nfunction resolveBoundingBox(node, context) {\n let { width, height } = context;\n if (isElementNode(node) && (!width || !height)) {\n const box = node.getBoundingClientRect();\n width = width || box.width || Number(node.getAttribute(\"width\")) || 0;\n height = height || box.height || Number(node.getAttribute(\"height\")) || 0;\n }\n return { width, height };\n}\n\nasync function imageToCanvas(image, context) {\n const {\n log,\n timeout,\n drawImageCount,\n drawImageInterval\n } = context;\n log.time(\"image to canvas\");\n const loaded = await loadMedia(image, { timeout, onWarn: context.log.warn });\n const { canvas, context2d } = createCanvas(image.ownerDocument, context);\n const drawImage = () => {\n try {\n context2d?.drawImage(loaded, 0, 0, canvas.width, canvas.height);\n } catch (error) {\n context.log.warn(\"Failed to drawImage\", error);\n }\n };\n drawImage();\n if (context.isEnable(\"fixSvgXmlDecode\")) {\n for (let i = 0; i < drawImageCount; i++) {\n await new Promise((resolve) => {\n setTimeout(() => {\n context2d?.clearRect(0, 0, canvas.width, canvas.height);\n drawImage();\n resolve();\n }, i + drawImageInterval);\n });\n }\n }\n context.drawImageCount = 0;\n log.timeEnd(\"image to canvas\");\n return canvas;\n}\nfunction createCanvas(ownerDocument, context) {\n const { width, height, scale, backgroundColor, maximumCanvasSize: max } = context;\n const canvas = ownerDocument.createElement(\"canvas\");\n canvas.width = Math.floor(width * scale);\n canvas.height = Math.floor(height * scale);\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n if (max) {\n if (canvas.width > max || canvas.height > max) {\n if (canvas.width > max && canvas.height > max) {\n if (canvas.width > canvas.height) {\n canvas.height *= max / canvas.width;\n canvas.width = max;\n } else {\n canvas.width *= max / canvas.height;\n canvas.height = max;\n }\n } else if (canvas.width > max) {\n canvas.height *= max / canvas.width;\n canvas.width = max;\n } else {\n canvas.width *= max / canvas.height;\n canvas.height = max;\n }\n }\n }\n const context2d = canvas.getContext(\"2d\");\n if (context2d && backgroundColor) {\n context2d.fillStyle = backgroundColor;\n context2d.fillRect(0, 0, canvas.width, canvas.height);\n }\n return { canvas, context2d };\n}\n\nfunction cloneCanvas(canvas, context) {\n if (canvas.ownerDocument) {\n try {\n const dataURL = canvas.toDataURL();\n if (dataURL !== \"data:,\") {\n return createImage(dataURL, canvas.ownerDocument);\n }\n } catch (error) {\n context.log.warn(\"Failed to clone canvas\", error);\n }\n }\n const cloned = canvas.cloneNode(false);\n const ctx = canvas.getContext(\"2d\");\n const clonedCtx = cloned.getContext(\"2d\");\n try {\n if (ctx && clonedCtx) {\n clonedCtx.putImageData(\n ctx.getImageData(0, 0, canvas.width, canvas.height),\n 0,\n 0\n );\n }\n return cloned;\n } catch (error) {\n context.log.warn(\"Failed to clone canvas\", error);\n }\n return cloned;\n}\n\nfunction cloneIframe(iframe, context) {\n try {\n if (iframe?.contentDocument?.body) {\n return cloneNode(iframe.contentDocument.body, context);\n }\n } catch (error) {\n context.log.warn(\"Failed to clone iframe\", error);\n }\n return iframe.cloneNode(false);\n}\n\nfunction cloneImage(image) {\n const cloned = image.cloneNode(false);\n if (image.currentSrc && image.currentSrc !== image.src) {\n cloned.src = image.currentSrc;\n cloned.srcset = \"\";\n }\n if (cloned.loading === \"lazy\") {\n cloned.loading = \"eager\";\n }\n return cloned;\n}\n\nasync function cloneVideo(video, context) {\n if (video.ownerDocument && !video.currentSrc && video.poster) {\n return createImage(video.poster, video.ownerDocument);\n }\n const cloned = video.cloneNode(false);\n cloned.crossOrigin = \"anonymous\";\n if (video.currentSrc && video.currentSrc !== video.src) {\n cloned.src = video.currentSrc;\n }\n const ownerDocument = cloned.ownerDocument;\n if (ownerDocument) {\n let canPlay = true;\n await loadMedia(cloned, { onError: () => canPlay = false, onWarn: context.log.warn });\n if (!canPlay) {\n if (video.poster) {\n return createImage(video.poster, video.ownerDocument);\n }\n return cloned;\n }\n cloned.currentTime = video.currentTime;\n await new Promise((resolve) => {\n cloned.addEventListener(\"seeked\", resolve, { once: true });\n });\n const canvas = ownerDocument.createElement(\"canvas\");\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n try {\n const ctx = canvas.getContext(\"2d\");\n if (ctx)\n ctx.drawImage(cloned, 0, 0, canvas.width, canvas.height);\n } catch (error) {\n context.log.warn(\"Failed to clone video\", error);\n if (video.poster) {\n return createImage(video.poster, video.ownerDocument);\n }\n return cloned;\n }\n return cloneCanvas(canvas, context);\n }\n return cloned;\n}\n\nfunction cloneElement(node, context) {\n if (isCanvasElement(node)) {\n return cloneCanvas(node, context);\n }\n if (isIFrameElement(node)) {\n return cloneIframe(node, context);\n }\n if (isImageElement(node)) {\n return cloneImage(node);\n }\n if (isVideoElement(node)) {\n return cloneVideo(node, context);\n }\n return node.cloneNode(false);\n}\n\nfunction getSandBox(context) {\n let sandbox = context.sandbox;\n if (!sandbox) {\n const { ownerDocument } = context;\n try {\n if (ownerDocument) {\n sandbox = ownerDocument.createElement(\"iframe\");\n sandbox.id = `__SANDBOX__${uuid()}`;\n sandbox.width = \"0\";\n sandbox.height = \"0\";\n sandbox.style.visibility = \"hidden\";\n sandbox.style.position = \"fixed\";\n ownerDocument.body.appendChild(sandbox);\n sandbox.srcdoc = '<!DOCTYPE html><meta charset=\"UTF-8\"><title></title><body>';\n context.sandbox = sandbox;\n }\n } catch (error) {\n context.log.warn(\"Failed to getSandBox\", error);\n }\n }\n return sandbox;\n}\n\nconst ignoredStyles = [\n \"width\",\n \"height\",\n \"-webkit-text-fill-color\"\n];\nconst includedAttributes = [\n \"stroke\",\n \"fill\"\n];\nfunction getDefaultStyle(node, pseudoElement, context) {\n const { defaultComputedStyles } = context;\n const nodeName = node.nodeName.toLowerCase();\n const isSvgNode = isSVGElementNode(node) && nodeName !== \"svg\";\n const attributes = isSvgNode ? includedAttributes.map((name) => [name, node.getAttribute(name)]).filter(([, value]) => value !== null) : [];\n const key = [\n isSvgNode && \"svg\",\n nodeName,\n attributes.map((name, value) => `${name}=${value}`).join(\",\"),\n pseudoElement\n ].filter(Boolean).join(\":\");\n if (defaultComputedStyles.has(key))\n return defaultComputedStyles.get(key);\n const sandbox = getSandBox(context);\n const sandboxWindow = sandbox?.contentWindow;\n if (!sandboxWindow)\n return /* @__PURE__ */ new Map();\n const sandboxDocument = sandboxWindow?.document;\n let root;\n let el;\n if (isSvgNode) {\n root = sandboxDocument.createElementNS(XMLNS, \"svg\");\n el = root.ownerDocument.createElementNS(root.namespaceURI, nodeName);\n attributes.forEach(([name, value]) => {\n el.setAttributeNS(null, name, value);\n });\n root.appendChild(el);\n } else {\n root = el = sandboxDocument.createElement(nodeName);\n }\n el.textContent = \" \";\n sandboxDocument.body.appendChild(root);\n const computedStyle = sandboxWindow.getComputedStyle(el, pseudoElement);\n const styles = /* @__PURE__ */ new Map();\n for (let len = computedStyle.length, i = 0; i < len; i++) {\n const name = computedStyle.item(i);\n if (ignoredStyles.includes(name))\n continue;\n styles.set(name, computedStyle.getPropertyValue(name));\n }\n sandboxDocument.body.removeChild(root);\n defaultComputedStyles.set(key, styles);\n return styles;\n}\n\nfunction getDiffStyle(style, defaultStyle, includeStyleProperties) {\n const diffStyle = /* @__PURE__ */ new Map();\n const prefixs = [];\n const prefixTree = /* @__PURE__ */ new Map();\n if (includeStyleProperties) {\n for (const name of includeStyleProperties) {\n applyTo(name);\n }\n } else {\n for (let len = style.length, i = 0; i < len; i++) {\n const name = style.item(i);\n applyTo(name);\n }\n }\n for (let len = prefixs.length, i = 0; i < len; i++) {\n prefixTree.get(prefixs[i])?.forEach((value, name) => diffStyle.set(name, value));\n }\n function applyTo(name) {\n const value = style.getPropertyValue(name);\n const priority = style.getPropertyPriority(name);\n const subIndex = name.lastIndexOf(\"-\");\n const prefix = subIndex > -1 ? name.substring(0, subIndex) : void 0;\n if (prefix) {\n let map = prefixTree.get(prefix);\n if (!map) {\n map = /* @__PURE__ */ new Map();\n prefixTree.set(prefix, map);\n }\n map.set(name, [value, priority]);\n }\n if (defaultStyle.get(name) === value && !priority)\n return;\n if (prefix) {\n prefixs.push(prefix);\n } else {\n diffStyle.set(name, [value, priority]);\n }\n }\n return diffStyle;\n}\n\nfunction copyCssStyles(node, cloned, isRoot, context) {\n const { ownerWindow, includeStyleProperties, currentParentNodeStyle } = context;\n const clonedStyle = cloned.style;\n const computedStyle = ownerWindow.getComputedStyle(node);\n const defaultStyle = getDefaultStyle(node, null, context);\n currentParentNodeStyle?.forEach((_, key) => {\n defaultStyle.delete(key);\n });\n const style = getDiffStyle(computedStyle, defaultStyle, includeStyleProperties);\n style.delete(\"transition-property\");\n style.delete(\"all\");\n style.delete(\"d\");\n style.delete(\"content\");\n if (isRoot) {\n style.delete(\"margin-top\");\n style.delete(\"margin-right\");\n style.delete(\"margin-bottom\");\n style.delete(\"margin-left\");\n style.delete(\"margin-block-start\");\n style.delete(\"margin-block-end\");\n style.delete(\"margin-inline-start\");\n style.delete(\"margin-inline-end\");\n style.set(\"box-sizing\", [\"border-box\", \"\"]);\n }\n if (style.get(\"background-clip\")?.[0] === \"text\") {\n cloned.classList.add(\"______background-clip--text\");\n }\n if (IN_CHROME) {\n if (!style.has(\"font-kerning\"))\n style.set(\"font-kerning\", [\"normal\", \"\"]);\n if ((style.get(\"overflow-x\")?.[0] === \"hidden\" || style.get(\"overflow-y\")?.[0] === \"hidden\") && style.get(\"text-overflow\")?.[0] === \"ellipsis\" && node.scrollWidth === node.clientWidth) {\n style.set(\"text-overflow\", [\"clip\", \"\"]);\n }\n }\n for (let len = clonedStyle.length, i = 0; i < len; i++) {\n clonedStyle.removeProperty(clonedStyle.item(i));\n }\n style.forEach(([value, priority], name) => {\n clonedStyle.setProperty(name, value, priority);\n });\n return style;\n}\n\nfunction copyInputValue(node, cloned) {\n if (isTextareaElement(node) || isInputElement(node) || isSelectElement(node)) {\n cloned.setAttribute(\"value\", node.value);\n }\n}\n\nconst pseudoClasses = [\n \"::before\",\n \"::after\"\n // '::placeholder', TODO\n];\nconst scrollbarPseudoClasses = [\n \"::-webkit-scrollbar\",\n \"::-webkit-scrollbar-button\",\n // '::-webkit-scrollbar:horizontal', TODO\n \"::-webkit-scrollbar-thumb\",\n \"::-webkit-scrollbar-track\",\n \"::-webkit-scrollbar-track-piece\",\n // '::-webkit-scrollbar:vertical', TODO\n \"::-webkit-scrollbar-corner\",\n \"::-webkit-resizer\"\n];\nfunction copyPseudoClass(node, cloned, copyScrollbar, context, addWordToFontFamilies) {\n const { ownerWindow, svgStyleElement, svgStyles, currentNodeStyle } = context;\n if (!svgStyleElement || !ownerWindow)\n return;\n function copyBy(pseudoClass) {\n const computedStyle = ownerWindow.getComputedStyle(node, pseudoClass);\n let content = computedStyle.getPropertyValue(\"content\");\n if (!content || content === \"none\")\n return;\n addWordToFontFamilies?.(content);\n content = content.replace(/(')|(\")|(counter\\(.+\\))/g, \"\");\n const klasses = [uuid()];\n const defaultStyle = getDefaultStyle(node, pseudoClass, context);\n currentNodeStyle?.forEach((_, key) => {\n defaultStyle.delete(key);\n });\n const style = getDiffStyle(computedStyle, defaultStyle, context.includeStyleProperties);\n style.delete(\"content\");\n style.delete(\"-webkit-locale\");\n if (style.get(\"background-clip\")?.[0] === \"text\") {\n cloned.classList.add(\"______background-clip--text\");\n }\n const cloneStyle = [\n `content: '${content}';`\n ];\n style.forEach(([value, priority], name) => {\n cloneStyle.push(`${name}: ${value}${priority ? \" !important\" : \"\"};`);\n });\n if (cloneStyle.length === 1)\n return;\n try {\n cloned.className = [cloned.className, ...klasses].join(\" \");\n } catch (err) {\n context.log.warn(\"Failed to copyPseudoClass\", err);\n return;\n }\n const cssText = cloneStyle.join(\"\\n \");\n let allClasses = svgStyles.get(cssText);\n if (!allClasses) {\n allClasses = [];\n svgStyles.set(cssText, allClasses);\n }\n allClasses.push(`.${klasses[0]}${pseudoClass}`);\n }\n pseudoClasses.forEach(copyBy);\n if (copyScrollbar)\n scrollbarPseudoClasses.forEach(copyBy);\n}\n\nconst excludeParentNodes = /* @__PURE__ */ new Set([\n \"symbol\"\n // test/fixtures/svg.symbol.html\n]);\nasync function appendChildNode(node, cloned, child, context, addWordToFontFamilies) {\n if (isElementNode(child) && (isStyleElement(child) || isScriptElement(child)))\n return;\n if (context.filter && !context.filter(child))\n return;\n if (excludeParentNodes.has(cloned.nodeName) || excludeParentNodes.has(child.nodeName)) {\n context.currentParentNodeStyle = void 0;\n } else {\n context.currentParentNodeStyle = context.currentNodeStyle;\n }\n const childCloned = await cloneNode(child, context, false, addWordToFontFamilies);\n if (context.isEnable(\"restoreScrollPosition\")) {\n restoreScrollPosition(node, childCloned);\n }\n cloned.appendChild(childCloned);\n}\nasync function cloneChildNodes(node, cloned, context, addWordToFontFamilies) {\n let firstChild = node.firstChild;\n if (isElementNode(node)) {\n if (node.shadowRoot) {\n firstChild = node.shadowRoot?.firstChild;\n context.shadowRoots.push(node.shadowRoot);\n }\n }\n for (let child = firstChild; child; child = child.nextSibling) {\n if (isCommentNode(child))\n continue;\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === \"function\") {\n const nodes = child.assignedNodes();\n for (let i = 0; i < nodes.length; i++) {\n await appendChildNode(node, cloned, nodes[i], context, addWordToFontFamilies);\n }\n } else {\n await appendChildNode(node, cloned, child, context, addWordToFontFamilies);\n }\n }\n}\nfunction restoreScrollPosition(node, chlidCloned) {\n if (!isHTMLElementNode(node) || !isHTMLElementNode(chlidCloned))\n return;\n const { scrollTop, scrollLeft } = node;\n if (!scrollTop && !scrollLeft) {\n return;\n }\n const { transform } = chlidCloned.style;\n const matrix = new DOMMatrix(transform);\n const { a, b, c, d } = matrix;\n matrix.a = 1;\n matrix.b = 0;\n matrix.c = 0;\n matrix.d = 1;\n matrix.translateSelf(-scrollLeft, -scrollTop);\n matrix.a = a;\n matrix.b = b;\n matrix.c = c;\n matrix.d = d;\n chlidCloned.style.transform = matrix.toString();\n}\nfunction applyCssStyleWithOptions(cloned, context) {\n const { backgroundColor, width, height, style: styles } = context;\n const clonedStyle = cloned.style;\n if (backgroundColor)\n clonedStyle.setProperty(\"background-color\", backgroundColor, \"important\");\n if (width)\n clonedStyle.setProperty(\"width\", `${width}px`, \"important\");\n if (height)\n clonedStyle.setProperty(\"height\", `${height}px`, \"important\");\n if (styles) {\n for (const name in styles) clonedStyle[name] = styles[name];\n }\n}\nconst NORMAL_ATTRIBUTE_RE = /^[\\w-:]+$/;\nasync function cloneNode(node, context, isRoot = false, addWordToFontFamilies) {\n const { ownerDocument, ownerWindow, fontFamilies, onCloneEachNode } = context;\n if (ownerDocument && isTextNode(node)) {\n if (addWordToFontFamilies && /\\S/.test(node.data)) {\n addWordToFontFamilies(node.data);\n }\n return ownerDocument.createTextNode(node.data);\n }\n if (ownerDocument && ownerWindow && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n const cloned2 = await cloneElement(node, context);\n if (context.isEnable(\"removeAbnormalAttributes\")) {\n const names = cloned2.getAttributeNames();\n for (let len = names.length, i = 0; i < len; i++) {\n const name = names[i];\n if (!NORMAL_ATTRIBUTE_RE.test(name)) {\n cloned2.removeAttribute(name);\n }\n }\n }\n const style = context.currentNodeStyle = copyCssStyles(node, cloned2, isRoot, context);\n if (isRoot)\n applyCssStyleWithOptions(cloned2, context);\n let copyScrollbar = false;\n if (context.isEnable(\"copyScrollbar\")) {\n const overflow = [\n style.get(\"overflow-x\")?.[0],\n style.get(\"overflow-y\")?.[0]\n ];\n copyScrollbar = overflow.includes(\"scroll\") || (overflow.includes(\"auto\") || overflow.includes(\"overlay\")) && (node.scrollHeight > node.clientHeight || node.scrollWidth > node.clientWidth);\n }\n const textTransform = style.get(\"text-transform\")?.[0];\n const families = splitFontFamily(style.get(\"font-family\")?.[0]);\n const addWordToFontFamilies2 = families ? (word) => {\n if (textTransform === \"uppercase\") {\n word = word.toUpperCase();\n } else if (textTransform === \"lowercase\") {\n word = word.toLowerCase();\n } else if (textTransform === \"capitalize\") {\n word = word[0].toUpperCase() + word.substring(1);\n }\n families.forEach((family) => {\n let fontFamily = fontFamilies.get(family);\n if (!fontFamily) {\n fontFamilies.set(family, fontFamily = /* @__PURE__ */ new Set());\n }\n word.split(\"\").forEach((text) => fontFamily.add(text));\n });\n } : void 0;\n copyPseudoClass(\n node,\n cloned2,\n copyScrollbar,\n context,\n addWordToFontFamilies2\n );\n copyInputValue(node, cloned2);\n if (!isVideoElement(node)) {\n await cloneChildNodes(\n node,\n cloned2,\n context,\n addWordToFontFamilies2\n );\n }\n await onCloneEachNode?.(cloned2);\n return cloned2;\n }\n const cloned = node.cloneNode(false);\n await cloneChildNodes(node, cloned, context);\n await onCloneEachNode?.(cloned);\n return cloned;\n}\n\nfunction destroyContext(context) {\n context.ownerDocument = void 0;\n context.ownerWindow = void 0;\n context.svgStyleElement = void 0;\n context.svgDefsElement = void 0;\n context.svgStyles.clear();\n context.defaultComputedStyles.clear();\n if (context.sandbox) {\n try {\n context.sandbox.remove();\n } catch (err) {\n context.log.warn(\"Failed to destroyContext\", err);\n }\n context.sandbox = void 0;\n }\n context.workers = [];\n context.fontFamilies.clear();\n context.fontCssTexts.clear();\n context.requests.clear();\n context.tasks = [];\n context.shadowRoots = [];\n}\n\nfunction baseFetch(options) {\n const { url, timeout, responseType, ...requestInit } = options;\n const controller = new AbortController();\n const timer = timeout ? setTimeout(() => controller.abort(), timeout) : void 0;\n return fetch(url, { signal: controller.signal, ...requestInit }).then((response) => {\n if (!response.ok) {\n throw new Error(\"Failed fetch, not 2xx response\", { cause: response });\n }\n switch (responseType) {\n case \"arrayBuffer\":\n return response.arrayBuffer();\n case \"dataUrl\":\n return response.blob().then(blobToDataUrl);\n case \"text\":\n default:\n return response.text();\n }\n }).finally(() => clearTimeout(timer));\n}\nfunction contextFetch(context, options) {\n const { url: rawUrl, requestType = \"text\", responseType = \"text\", imageDom } = options;\n let url = rawUrl;\n const {\n timeout,\n acceptOfImage,\n requests,\n fetchFn,\n fetch: {\n requestInit,\n bypassingCache,\n placeholderImage\n },\n font,\n workers,\n fontFamilies\n } = context;\n if (requestType === \"image\" && (IN_SAFARI || IN_FIREFOX)) {\n context.drawImageCount++;\n }\n let request = requests.get(rawUrl);\n if (!request) {\n if (bypassingCache) {\n if (bypassingCache instanceof RegExp && bypassingCache.test(url)) {\n url += (/\\?/.test(url) ? \"&\" : \"?\") + (/* @__PURE__ */ new Date()).getTime();\n }\n }\n const canFontMinify = requestType.startsWith(\"font\") && font && font.minify;\n const fontTexts = /* @__PURE__ */ new Set();\n if (canFontMinify) {\n const families = requestType.split(\";\")[1].split(\",\");\n families.forEach((family) => {\n if (!fontFamilies.has(family))\n return;\n fontFamilies.get(family).forEach((text) => fontTexts.add(text));\n });\n }\n const needFontMinify = canFontMinify && fontTexts.size;\n const baseFetchOptions = {\n url,\n timeout,\n responseType: needFontMinify ? \"arrayBuffer\" : responseType,\n headers: requestType === \"image\" ? { accept: acceptOfImage } : void 0,\n ...requestInit\n };\n request = {\n type: requestType,\n resolve: void 0,\n reject: void 0,\n response: null\n };\n request.response = (async () => {\n if (fetchFn && requestType === \"image\") {\n const result = await fetchFn(rawUrl);\n if (result)\n return result;\n }\n if (!IN_SAFARI && rawUrl.startsWith(\"http\") && workers.length) {\n return new Promise((resolve, reject) => {\n const worker = workers[requests.size & workers.length - 1];\n worker.postMessage({ rawUrl, ...baseFetchOptions });\n request.resolve = resolve;\n request.reject = reject;\n });\n }\n return baseFetch(baseFetchOptions);\n })().catch((error) => {\n requests.delete(rawUrl);\n if (requestType === \"image\" && placeholderImage) {\n context.log.warn(\"Failed to fetch image base64, trying to use placeholder image\", url);\n return typeof placeholderImage === \"string\" ? placeholderImage : placeholderImage(imageDom);\n }\n throw error;\n });\n requests.set(rawUrl, request);\n }\n return request.response;\n}\n\nasync function replaceCssUrlToDataUrl(cssText, baseUrl, context, isImage) {\n if (!hasCssUrl(cssText))\n return cssText;\n for (const [rawUrl, url] of parseCssUrls(cssText, baseUrl)) {\n try {\n const dataUrl = await contextFetch(\n context,\n {\n url,\n requestType: isImage ? \"image\" : \"text\",\n responseType: \"dataUrl\"\n }\n );\n cssText = cssText.replace(toRE(rawUrl), `$1${dataUrl}$3`);\n } catch (error) {\n context.log.warn(\"Failed to fetch css data url\", rawUrl, error);\n }\n }\n return cssText;\n}\nfunction hasCssUrl(cssText) {\n return /url\\((['\"]?)([^'\"]+?)\\1\\)/.test(cssText);\n}\nconst URL_RE = /url\\((['\"]?)([^'\"]+?)\\1\\)/g;\nfunction parseCssUrls(cssText, baseUrl) {\n const result = [];\n cssText.replace(URL_RE, (raw, quotation, url) => {\n result.push([url, resolveUrl(url, baseUrl)]);\n return raw;\n });\n return result.filter(([url]) => !isDataUrl(url));\n}\nfunction toRE(url) {\n const escaped = url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\n return new RegExp(`(url\\\\(['\"]?)(${escaped})(['\"]?\\\\))`, \"g\");\n}\n\nconst properties = [\n \"background-image\",\n \"border-image-source\",\n \"-webkit-border-image\",\n \"-webkit-mask-image\",\n \"list-style-image\"\n];\nfunction embedCssStyleImage(style, context) {\n return properties.map((property) => {\n const value = style.getPropertyValue(property);\n if (!value || value === \"none\") {\n return null;\n }\n if (IN_SAFARI || IN_FIREFOX) {\n context.drawImageCount++;\n }\n return replaceCssUrlToDataUrl(value, null, context, true).then((newValue) => {\n if (!newValue || value === newValue)\n return;\n style.setProperty(\n property,\n newValue,\n style.getPropertyPriority(property)\n );\n });\n }).filter(Boolean);\n}\n\nfunction embedImageElement(cloned, context) {\n if (isImageElement(cloned)) {\n const originalSrc = cloned.currentSrc || cloned.src;\n if (!isDataUrl(originalSrc)) {\n return [\n contextFetch(context, {\n url: originalSrc,\n imageDom: cloned,\n requestType: \"image\",\n responseType: \"dataUrl\"\n }).then((url) => {\n if (!url)\n return;\n cloned.srcset = \"\";\n cloned.dataset.originalSrc = originalSrc;\n cloned.src = url || \"\";\n })\n ];\n }\n if (IN_SAFARI || IN_FIREFOX) {\n context.drawImageCount++;\n }\n } else if (isSVGElementNode(cloned) && !isDataUrl(cloned.href.baseVal)) {\n const originalSrc = cloned.href.baseVal;\n return [\n contextFetch(context, {\n url: originalSrc,\n imageDom: cloned,\n requestType: \"image\",\n responseType: \"dataUrl\"\n }).then((url) => {\n if (!url)\n return;\n cloned.dataset.originalSrc = originalSrc;\n cloned.href.baseVal = url || \"\";\n })\n ];\n }\n return [];\n}\n\nfunction embedSvgUse(cloned, context) {\n const { ownerDocument, svgDefsElement } = context;\n const href = cloned.getAttribute(\"href\") ?? cloned.getAttribute(\"xlink:href\");\n if (!href)\n return [];\n const [svgUrl, id] = href.split(\"#\");\n if (id) {\n const query = `#${id}`;\n const definition = context.shadowRoots.reduce(\n (res, root) => {\n return res ?? root.querySelector(`svg ${query}`);\n },\n ownerDocument?.querySelector(`svg ${query}`)\n );\n if (svgUrl) {\n cloned.setAttribute(\"href\", query);\n }\n if (svgDefsElement?.querySelector(query))\n return [];\n if (definition) {\n svgDefsElement?.appendChild(definition.cloneNode(true));\n return [];\n } else if (svgUrl) {\n return [\n contextFetch(context, {\n url: svgUrl,\n responseType: \"text\"\n }).then((svgData) => {\n svgDefsElement?.insertAdjacentHTML(\"beforeend\", svgData);\n })\n ];\n }\n }\n return [];\n}\n\nfunction embedNode(cloned, context) {\n const { tasks } = context;\n if (isElementNode(cloned)) {\n if (isImageElement(cloned) || isSVGImageElementNode(cloned)) {\n tasks.push(...embedImageElement(cloned, context));\n }\n if (isSVGUseElementNode(cloned)) {\n tasks.push(...embedSvgUse(cloned, context));\n }\n }\n if (isHTMLElementNode(cloned)) {\n tasks.push(...embedCssStyleImage(cloned.style, context));\n }\n cloned.childNodes.forEach((child) => {\n embedNode(child, context);\n });\n}\n\nasync function embedWebFont(clone, context) {\n const {\n ownerDocument,\n svgStyleElement,\n fontFamilies,\n fontCssTexts,\n tasks,\n font\n } = context;\n if (!ownerDocument || !svgStyleElement || !fontFamilies.size) {\n return;\n }\n if (font && font.cssText) {\n const cssText = filterPreferredFormat(font.cssText, context);\n svgStyleElement.appendChild(ownerDocument.createTextNode(`${cssText}\n`));\n } else {\n const styleSheets = Array.from(ownerDocument.styleSheets).filter((styleSheet) => {\n try {\n return \"cssRules\" in styleSheet && Boolean(styleSheet.cssRules.length);\n } catch (error) {\n context.log.warn(`Error while reading CSS rules from ${styleSheet.href}`, error);\n return false;\n }\n });\n await Promise.all(\n styleSheets.flatMap((styleSheet) => {\n return Array.from(styleSheet.cssRules).map(async (cssRule, index) => {\n if (isCSSImportRule(cssRule)) {\n let importIndex = index + 1;\n const baseUrl = cssRule.href;\n let cssText = \"\";\n try {\n cssText = await contextFetch(context, {\n url: baseUrl,\n requestType: \"text\",\n responseType: \"text\"\n });\n } catch (error) {\n context.log.warn(`Error fetch remote css import from ${baseUrl}`, error);\n }\n const replacedCssText = cssText.replace(\n URL_RE,\n (raw, quotation, url) => raw.replace(url, resolveUrl(url, baseUrl))\n );\n for (const rule of parseCss(replacedCssText)) {\n try {\n styleSheet.insertRule(\n rule,\n rule.startsWith(\"@import\") ? importIndex += 1 : styleSheet.cssRules.length\n );\n } catch (error) {\n context.log.warn(\"Error inserting rule from remote css import\", { rule, error });\n }\n }\n }\n });\n })\n );\n const cssRules = [];\n styleSheets.forEach((sheet) => {\n unwrapCssLayers(sheet.cssRules, cssRules);\n });\n cssRules.filter((cssRule) => isCssFontFaceRule(cssRule) && hasCssUrl(cssRule.style.getPropertyValue(\"src\")) && splitFontFamily(cssRule.style.getPropertyValue(\"font-family\"))?.some((val) => fontFamilies.has(val))).forEach((value) => {\n const rule = value;\n const cssText = fontCssTexts.get(rule.cssText);\n if (cssText) {\n svgStyleElement.appendChild(ownerDocument.createTextNode(`${cssText}\n`));\n } else {\n tasks.push(\n replaceCssUrlToDataUrl(\n rule.cssText,\n rule.parentStyleSheet ? rule.parentStyleSheet.href : null,\n context\n ).then((cssText2) => {\n cssText2 = filterPreferredFormat(cssText2, context);\n fontCssTexts.set(rule.cssText, cssText2);\n svgStyleElement.appendChild(ownerDocument.createTextNode(`${cssText2}\n`));\n })\n );\n }\n });\n }\n}\nconst COMMENTS_RE = /(\\/\\*[\\s\\S]*?\\*\\/)/g;\nconst KEYFRAMES_RE = /((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})/gi;\nfunction parseCss(source) {\n if (source == null)\n return [];\n const result = [];\n let cssText = source.replace(COMMENTS_RE, \"\");\n while (true) {\n const matches = KEYFRAMES_RE.exec(cssText);\n if (!matches)\n break;\n result.push(matches[0]);\n }\n cssText = cssText.replace(KEYFRAMES_RE, \"\");\n const IMPORT_RE = /@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi;\n const UNIFIED_RE = new RegExp(\n // eslint-disable-next-line\n \"((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})\",\n \"gi\"\n );\n while (true) {\n let matches = IMPORT_RE.exec(cssText);\n if (!matches) {\n matches = UNIFIED_RE.exec(cssText);\n if (!matches) {\n break;\n } else {\n IMPORT_RE.lastIndex = UNIFIED_RE.lastIndex;\n }\n } else {\n UNIFIED_RE.lastIndex = IMPORT_RE.lastIndex;\n }\n result.push(matches[0]);\n }\n return result;\n}\nconst URL_WITH_FORMAT_RE = /url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g;\nconst FONT_SRC_RE = /src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;\nfunction filterPreferredFormat(str, context) {\n const { font } = context;\n const preferredFormat = font ? font?.preferredFormat : void 0;\n return preferredFormat ? str.replace(FONT_SRC_RE, (match) => {\n while (true) {\n const [src, , format] = URL_WITH_FORMAT_RE.exec(match) || [];\n if (!format)\n return \"\";\n if (format === preferredFormat)\n return `src: ${src};`;\n }\n }) : str;\n}\nfunction unwrapCssLayers(rules, out = []) {\n for (const rule of Array.from(rules)) {\n if (isLayerBlockRule(rule)) {\n out.push(...unwrapCssLayers(rule.cssRules));\n } else if (\"cssRules\" in rule) {\n unwrapCssLayers(rule.cssRules, out);\n } else {\n out.push(rule);\n }\n }\n return out;\n}\n\nasync function domToForeignObjectSvg(node, options) {\n const context = await orCreateContext(node, options);\n if (isElementNode(context.node) && isSVGElementNode(context.node))\n return context.node;\n const {\n ownerDocument,\n log,\n tasks,\n svgStyleElement,\n svgDefsElement,\n svgStyles,\n font,\n progress,\n autoDestruct,\n onCloneNode,\n onEmbedNode,\n onCreateForeignObjectSvg\n } = context;\n log.time(\"clone node\");\n const clone = await cloneNode(context.node, context, true);\n if (svgStyleElement && ownerDocument) {\n let allCssText = \"\";\n svgStyles.forEach((klasses, cssText) => {\n allCssText += `${klasses.join(\",\\n\")} {\n ${cssText}\n}\n`;\n });\n svgStyleElement.appendChild(ownerDocument.createTextNode(allCssText));\n }\n log.timeEnd(\"clone node\");\n await onCloneNode?.(clone);\n if (font !== false && isElementNode(clone)) {\n log.time(\"embed web font\");\n await embedWebFont(clone, context);\n log.timeEnd(\"embed web font\");\n }\n log.time(\"embed node\");\n embedNode(clone, context);\n const count = tasks.length;\n let current = 0;\n const runTask = async () => {\n while (true) {\n const task = tasks.pop();\n if (!task)\n break;\n try {\n await task;\n } catch (error) {\n context.log.warn(\"Failed to run task\", error);\n }\n progress?.(++current, count);\n }\n };\n progress?.(current, count);\n await Promise.all([...Array.from({ length: 4 })].map(runTask));\n log.timeEnd(\"embed node\");\n await onEmbedNode?.(clone);\n const svg = createForeignObjectSvg(clone, context);\n svgDefsElement && svg.insertBefore(svgDefsElement, svg.children[0]);\n svgStyleElement && svg.insertBefore(svgStyleElement, svg.children[0]);\n autoDestruct && destroyContext(context);\n await onCreateForeignObjectSvg?.(svg);\n return svg;\n}\nfunction createForeignObjectSvg(clone, context) {\n const { width, height } = context;\n const svg = createSvg(width, height, clone.ownerDocument);\n const foreignObject = svg.ownerDocument.createElementNS(svg.namespaceURI, \"foreignObject\");\n foreignObject.setAttributeNS(null, \"x\", \"0%\");\n foreignObject.setAttributeNS(null, \"y\", \"0%\");\n foreignObject.setAttributeNS(null, \"width\", \"100%\");\n foreignObject.setAttributeNS(null, \"height\", \"100%\");\n foreignObject.append(clone);\n svg.appendChild(foreignObject);\n return svg;\n}\n\nasync function domToCanvas(node, options) {\n const context = await orCreateContext(node, options);\n const svg = await domToForeignObjectSvg(context);\n const dataUrl = svgToDataUrl(svg, context.isEnable(\"removeControlCharacter\"));\n if (!context.autoDestruct) {\n context.svgStyleElement = createStyleElement(context.ownerDocument);\n context.svgDefsElement = context.ownerDocument?.createElementNS(XMLNS, \"defs\");\n context.svgStyles.clear();\n }\n const image = createImage(dataUrl, svg.ownerDocument);\n return await imageToCanvas(image, context);\n}\n\nasync function domToBlob(node, options) {\n const context = await orCreateContext(node, options);\n const { log, type, quality, dpi } = context;\n const canvas = await domToCanvas(context);\n log.time(\"canvas to blob\");\n const blob = await canvasToBlob(canvas, type, quality);\n if ([\"image/png\", \"image/jpeg\"].includes(type) && dpi) {\n const arrayBuffer = await blobToArrayBuffer(blob.slice(0, 33));\n let uint8Array = new Uint8Array(arrayBuffer);\n if (type === \"image/png\") {\n uint8Array = changePngDpi(uint8Array, dpi);\n } else if (type === \"image/jpeg\") {\n uint8Array = changeJpegDpi(uint8Array, dpi);\n }\n log.timeEnd(\"canvas to blob\");\n return new Blob([uint8Array, blob.slice(33)], { type });\n }\n log.timeEnd(\"canvas to blob\");\n return blob;\n}\n\nasync function domToDataUrl(node, options) {\n const context = await orCreateContext(node, options);\n const { log, quality, type, dpi } = context;\n const canvas = await domToCanvas(context);\n log.time(\"canvas to data url\");\n let dataUrl = canvas.toDataURL(type, quality);\n if ([\"image/png\", \"image/jpeg\"].includes(type) && dpi && SUPPORT_ATOB && SUPPORT_BTOA) {\n const [format, body] = dataUrl.split(\",\");\n let headerLength = 0;\n let overwritepHYs = false;\n if (type === \"image/png\") {\n const b64Index = detectPhysChunkFromDataUrl(body);\n if (b64Index >= 0) {\n headerLength = Math.ceil((b64Index + 28) / 3) * 4;\n overwritepHYs = true;\n } else {\n headerLength = 33 / 3 * 4;\n }\n } else if (type === \"image/jpeg\") {\n headerLength = 18 / 3 * 4;\n }\n const stringHeader = body.substring(0, headerLength);\n const restOfData = body.substring(headerLength);\n const headerBytes = window.atob(stringHeader);\n const uint8Array = new Uint8Array(headerBytes.length);\n for (let i = 0; i < uint8Array.length; i++) {\n uint8Array[i] = headerBytes.charCodeAt(i);\n }\n const finalArray = type === \"image/png\" ? changePngDpi(uint8Array, dpi, overwritepHYs) : changeJpegDpi(uint8Array, dpi);\n const base64Header = window.btoa(String.fromCharCode(...finalArray));\n dataUrl = [format, \",\", base64Header, restOfData].join(\"\");\n }\n log.timeEnd(\"canvas to data url\");\n return dataUrl;\n}\n\nasync function domToSvg(node, options) {\n const context = await orCreateContext(node, options);\n const { width, height, ownerDocument } = context;\n const dataUrl = await domToDataUrl(context);\n const svg = createSvg(width, height, ownerDocument);\n const svgImage = svg.ownerDocument.createElementNS(svg.namespaceURI, \"image\");\n svgImage.setAttributeNS(null, \"href\", dataUrl);\n svgImage.setAttributeNS(null, \"height\", \"100%\");\n svgImage.setAttributeNS(null, \"width\", \"100%\");\n svg.appendChild(svgImage);\n return svgToDataUrl(svg, context.isEnable(\"removeControlCharacter\"));\n}\n\nasync function domToImage(node, options) {\n const context = await orCreateContext(node, options);\n const { ownerDocument, width, height, scale, type } = context;\n const url = type === \"image/svg+xml\" ? await domToSvg(context) : await domToDataUrl(context);\n const image = createImage(url, ownerDocument);\n image.width = Math.floor(width * scale);\n image.height = Math.floor(height * scale);\n image.style.width = `${width}px`;\n image.style.height = `${height}px`;\n return image;\n}\n\nasync function domToJpeg(node, options) {\n return domToDataUrl(\n await orCreateContext(node, { ...options, type: \"image/jpeg\" })\n );\n}\n\nasync function domToPixel(node, options) {\n const context = await orCreateContext(node, options);\n const canvas = await domToCanvas(context);\n return canvas.getContext(\"2d\").getImageData(0, 0, canvas.width, canvas.height).data;\n}\n\nasync function domToPng(node, options) {\n return domToDataUrl(\n await orCreateContext(node, { ...options, type: \"image/png\" })\n );\n}\n\nasync function domToWebp(node, options) {\n return domToDataUrl(\n await orCreateContext(node, { ...options, type: \"image/webp\" })\n );\n}\n\nexport { createContext, destroyContext, domToBlob, domToCanvas, domToDataUrl, domToForeignObjectSvg, domToImage, domToJpeg, domToPixel, domToPng, domToSvg, domToWebp, loadMedia, waitUntilLoad };\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -435,4 +435,4 @@ function c(c) {
435
435
  //#endregion
436
436
  export { c as default };
437
437
 
438
- //# sourceMappingURL=javascript-BBwTSo6e.js.map
438
+ //# sourceMappingURL=javascript-O1RIRkZr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"javascript-BBwTSo6e.js","names":[],"sources":["../../../node_modules/highlight.js/es/languages/javascript.js"],"sourcesContent":["const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\nexport { javascript as default };\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"javascript-O1RIRkZr.js","names":[],"sources":["../../../node_modules/highlight.js/es/languages/javascript.js"],"sourcesContent":["const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\nexport { javascript as default };\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -35,4 +35,4 @@ function e(e) {
35
35
  //#endregion
36
36
  export { e as default };
37
37
 
38
- //# sourceMappingURL=json-BpTrLZSh.js.map
38
+ //# sourceMappingURL=json-C5bX2tt1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-BpTrLZSh.js","names":[],"sources":["../../../node_modules/highlight.js/es/languages/json.js"],"sourcesContent":["/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: http://www.json.org\nCategory: common, protocols, web\n*/\n\nfunction json(hljs) {\n const ATTRIBUTE = {\n className: 'attr',\n begin: /\"(\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n relevance: 1.01\n };\n const PUNCTUATION = {\n match: /[{}[\\],:]/,\n className: \"punctuation\",\n relevance: 0\n };\n const LITERALS = [\n \"true\",\n \"false\",\n \"null\"\n ];\n // NOTE: normally we would rely on `keywords` for this but using a mode here allows us\n // - to use the very tight `illegal: \\S` rule later to flag any other character\n // - as illegal indicating that despite looking like JSON we do not truly have\n // - JSON and thus improve false-positively greatly since JSON will try and claim\n // - all sorts of JSON looking stuff\n const LITERALS_MODE = {\n scope: \"literal\",\n beginKeywords: LITERALS.join(\" \"),\n };\n\n return {\n name: 'JSON',\n aliases: ['jsonc'],\n keywords:{\n literal: LITERALS,\n },\n contains: [\n ATTRIBUTE,\n PUNCTUATION,\n hljs.QUOTE_STRING_MODE,\n LITERALS_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: '\\\\S'\n };\n}\n\nexport { json as default };\n"],"x_google_ignoreList":[0],"mappings":";AAQA,SAAS,EAAK,GAAM;CAClB,IAAM,IAAY;EAChB,WAAW;EACX,OAAO;EACP,WAAW;EACZ,EACK,IAAc;EAClB,OAAO;EACP,WAAW;EACX,WAAW;EACZ,EACK,IAAW;EACf;EACA;EACA;EACD,EAMK,IAAgB;EACpB,OAAO;EACP,eAAe,EAAS,KAAK,IAAI;EAClC;AAED,QAAO;EACL,MAAM;EACN,SAAS,CAAC,QAAQ;EAClB,UAAS,EACP,SAAS,GACV;EACD,UAAU;GACR;GACA;GACA,EAAK;GACL;GACA,EAAK;GACL,EAAK;GACL,EAAK;GACN;EACD,SAAS;EACV"}
1
+ {"version":3,"file":"json-C5bX2tt1.js","names":[],"sources":["../../../node_modules/highlight.js/es/languages/json.js"],"sourcesContent":["/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: http://www.json.org\nCategory: common, protocols, web\n*/\n\nfunction json(hljs) {\n const ATTRIBUTE = {\n className: 'attr',\n begin: /\"(\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n relevance: 1.01\n };\n const PUNCTUATION = {\n match: /[{}[\\],:]/,\n className: \"punctuation\",\n relevance: 0\n };\n const LITERALS = [\n \"true\",\n \"false\",\n \"null\"\n ];\n // NOTE: normally we would rely on `keywords` for this but using a mode here allows us\n // - to use the very tight `illegal: \\S` rule later to flag any other character\n // - as illegal indicating that despite looking like JSON we do not truly have\n // - JSON and thus improve false-positively greatly since JSON will try and claim\n // - all sorts of JSON looking stuff\n const LITERALS_MODE = {\n scope: \"literal\",\n beginKeywords: LITERALS.join(\" \"),\n };\n\n return {\n name: 'JSON',\n aliases: ['jsonc'],\n keywords:{\n literal: LITERALS,\n },\n contains: [\n ATTRIBUTE,\n PUNCTUATION,\n hljs.QUOTE_STRING_MODE,\n LITERALS_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: '\\\\S'\n };\n}\n\nexport { json as default };\n"],"x_google_ignoreList":[0],"mappings":";AAQA,SAAS,EAAK,GAAM;CAClB,IAAM,IAAY;EAChB,WAAW;EACX,OAAO;EACP,WAAW;EACZ,EACK,IAAc;EAClB,OAAO;EACP,WAAW;EACX,WAAW;EACZ,EACK,IAAW;EACf;EACA;EACA;EACD,EAMK,IAAgB;EACpB,OAAO;EACP,eAAe,EAAS,KAAK,IAAI;EAClC;AAED,QAAO;EACL,MAAM;EACN,SAAS,CAAC,QAAQ;EAClB,UAAS,EACP,SAAS,GACV;EACD,UAAU;GACR;GACA;GACA,EAAK;GACL;GACA,EAAK;GACL,EAAK;GACL,EAAK;GACN;EACD,SAAS;EACV"}