@blokkli/editor 2.0.0-alpha.13 → 2.0.0-alpha.14

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 (272) hide show
  1. package/dist/module.d.mts +1 -1
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +4003 -1162
  4. package/dist/modules/drupal/graphql/base/fragment.ParagraphsBlokkliConfigInput.graphql +31 -0
  5. package/dist/modules/drupal/graphql/base/fragment.blokkliProps.graphql +1 -0
  6. package/dist/modules/drupal/graphql/base/fragment.paragraphsBlokkliEditState.graphql +1 -0
  7. package/dist/modules/drupal/graphql/base/query.pbEntityConfig.graphql +5 -0
  8. package/dist/modules/drupal/graphql/features/transform.graphql +9 -1
  9. package/dist/modules/drupal/graphql/features/transform_host.graphql +38 -0
  10. package/dist/modules/drupal/graphql/mutations/update_host_options.graphql +15 -0
  11. package/dist/modules/drupal/index.d.mts +1 -1
  12. package/dist/modules/drupal/index.mjs +20 -7
  13. package/dist/modules/drupal/runtime/adapter/index.js +109 -4
  14. package/dist/runtime/adapter/index.d.ts +54 -1
  15. package/dist/runtime/blokkliPlugins/AddAction/index.vue +27 -3
  16. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue +65 -0
  17. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue.d.ts +26 -0
  18. package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +3 -0
  19. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +3 -2
  20. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +3 -3
  21. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +49 -11
  22. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue.d.ts +29 -15
  23. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +6 -7
  24. package/dist/runtime/blokkliPlugins/Sidebar/index.vue +2 -9
  25. package/dist/runtime/blokkliPlugins/Sidebar/index.vue.d.ts +1 -1
  26. package/dist/runtime/blokkliPlugins/ViewOption/index.vue +6 -3
  27. package/dist/runtime/blokkliPlugins/index.d.ts +8 -7
  28. package/dist/runtime/blokkliPlugins/index.js +15 -13
  29. package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -1
  30. package/dist/runtime/components/BlokkliProvider.vue +1 -0
  31. package/dist/runtime/components/BlokkliProvider.vue.d.ts +1 -0
  32. package/dist/runtime/components/Edit/Actions/index.vue +39 -67
  33. package/dist/runtime/components/Edit/AddListItem/index.vue +2 -5
  34. package/dist/runtime/components/Edit/AddListItem/index.vue.d.ts +1 -1
  35. package/dist/runtime/components/Edit/AddListItemIcon/index.vue +19 -0
  36. package/dist/runtime/components/Edit/AddListItemIcon/index.vue.d.ts +15 -0
  37. package/dist/runtime/components/Edit/AppMenu/index.vue +5 -5
  38. package/dist/runtime/components/Edit/Dialog/index.vue +5 -1
  39. package/dist/runtime/components/Edit/Dialog/index.vue.d.ts +1 -1
  40. package/dist/runtime/components/Edit/DiffViewer/State.vue +276 -0
  41. package/dist/runtime/components/Edit/DiffViewer/State.vue.d.ts +16 -0
  42. package/dist/runtime/components/Edit/DragInteractions/index.vue +35 -6
  43. package/dist/runtime/components/Edit/EditProvider.vue +46 -35
  44. package/dist/runtime/components/Edit/Features/AddList/index.vue +15 -25
  45. package/dist/runtime/components/Edit/Features/Analyze/Overlay/fragment.glsl +58 -0
  46. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue +168 -0
  47. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue.d.ts +9 -0
  48. package/dist/runtime/components/Edit/Features/Analyze/Overlay/vertex.glsl +72 -0
  49. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue +159 -0
  50. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue.d.ts +7 -0
  51. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue +100 -0
  52. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue.d.ts +6 -0
  53. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue +56 -0
  54. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue.d.ts +3 -0
  55. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue +87 -0
  56. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue.d.ts +7 -0
  57. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue +101 -0
  58. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue.d.ts +8 -0
  59. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue +18 -0
  60. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue.d.ts +8 -0
  61. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue +92 -0
  62. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue.d.ts +17 -0
  63. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue +77 -0
  64. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue.d.ts +6 -0
  65. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.d.ts +12 -0
  66. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.js +75 -0
  67. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.d.ts +4 -0
  68. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.js +5 -0
  69. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.d.ts +32 -0
  70. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.js +45 -0
  71. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.d.ts +5 -0
  72. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.js +95 -0
  73. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.d.ts +3 -0
  74. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.js +13 -0
  75. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.d.ts +2 -0
  76. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.js +2 -0
  77. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.d.ts +2 -0
  78. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.js +165 -0
  79. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.d.ts +44 -0
  80. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.js +0 -0
  81. package/dist/runtime/components/Edit/Features/Analyze/helper.d.ts +5 -0
  82. package/dist/runtime/components/Edit/Features/Analyze/helper.js +28 -0
  83. package/dist/runtime/components/Edit/Features/Analyze/index.vue +44 -0
  84. package/dist/runtime/components/Edit/Features/Anchors/Renderer.vue +136 -0
  85. package/dist/runtime/components/Edit/Features/Anchors/index.vue +32 -0
  86. package/dist/runtime/components/Edit/Features/Anchors/index.vue.d.ts +2 -0
  87. package/dist/runtime/components/Edit/Features/Artboard/Overview/index.vue +25 -13
  88. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue +296 -0
  89. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue.d.ts +7 -0
  90. package/dist/runtime/components/Edit/Features/Artboard/index.vue +10 -245
  91. package/dist/runtime/components/Edit/Features/Assistant/index.vue +3 -2
  92. package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +4 -4
  93. package/dist/runtime/components/Edit/Features/Clipboard/index.vue +161 -28
  94. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +16 -4
  95. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue.d.ts +0 -1
  96. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +4 -53
  97. package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +3 -2
  98. package/dist/runtime/components/Edit/Features/Conversions/index.vue +12 -14
  99. package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +14 -0
  100. package/dist/runtime/components/Edit/Features/Debug/index.vue +27 -24
  101. package/dist/runtime/components/Edit/Features/Diff/DiffView/index.vue +13 -190
  102. package/dist/runtime/components/Edit/Features/Diff/index.vue +2 -2
  103. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +4 -4
  104. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +1 -1
  105. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +35 -71
  106. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +1 -1
  107. package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +62 -48
  108. package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +3 -3
  109. package/dist/runtime/components/Edit/Features/EditForm/index.vue +3 -3
  110. package/dist/runtime/components/Edit/Features/EditableField/index.vue +6 -2
  111. package/dist/runtime/components/Edit/Features/EditableMask/index.vue +3 -20
  112. package/dist/runtime/components/Edit/Features/Fragments/index.vue +3 -2
  113. package/dist/runtime/components/Edit/Features/History/index.vue +35 -12
  114. package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +6 -2
  115. package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +3 -2
  116. package/dist/runtime/components/Edit/Features/Library/index.vue +11 -9
  117. package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +5 -8
  118. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +1 -1
  119. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +9 -4
  120. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +1 -1
  121. package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +8 -14
  122. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +3 -2
  123. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue.d.ts +2 -0
  124. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +9 -3
  125. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue.d.ts +0 -1
  126. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +37 -19
  127. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue.d.ts +8 -2
  128. package/dist/runtime/components/Edit/Features/Options/Form/index.vue +81 -37
  129. package/dist/runtime/components/Edit/Features/Options/Form/index.vue.d.ts +5 -5
  130. package/dist/runtime/components/Edit/Features/Options/index.vue +30 -6
  131. package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +3 -3
  132. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue +1 -0
  133. package/dist/runtime/components/Edit/Features/Publish/index.vue +3 -2
  134. package/dist/runtime/components/Edit/Features/Revert/index.vue +3 -3
  135. package/dist/runtime/components/Edit/Features/Search/index.vue +3 -2
  136. package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue +54 -0
  137. package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue.d.ts +14 -0
  138. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue +120 -0
  139. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue.d.ts +15 -0
  140. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue +459 -0
  141. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue.d.ts +6 -0
  142. package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +14 -9
  143. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +32 -11
  144. package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +1 -1
  145. package/dist/runtime/components/Edit/Features/Selection/index.vue +76 -7
  146. package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +12 -17
  147. package/dist/runtime/components/Edit/Features/Settings/index.vue +11 -25
  148. package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +5 -1
  149. package/dist/runtime/components/Edit/Features/Theme/index.vue +2 -1
  150. package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +3 -2
  151. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue +198 -0
  152. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue.d.ts +13 -0
  153. package/dist/runtime/components/Edit/Features/Transform/index.vue +155 -44
  154. package/dist/runtime/components/Edit/Form/Radio/index.vue +33 -0
  155. package/dist/runtime/components/Edit/Form/Radio/index.vue.d.ts +20 -0
  156. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue +37 -0
  157. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue.d.ts +22 -0
  158. package/dist/runtime/components/Edit/Form/Select/index.vue +29 -0
  159. package/dist/runtime/components/Edit/Form/Select/index.vue.d.ts +20 -0
  160. package/dist/runtime/components/Edit/Form/Text/index.vue +33 -0
  161. package/dist/runtime/components/Edit/Form/Text/index.vue.d.ts +19 -0
  162. package/dist/runtime/components/Edit/Form/Textarea/index.vue +13 -6
  163. package/dist/runtime/components/Edit/Form/Textarea/index.vue.d.ts +4 -0
  164. package/dist/runtime/components/Edit/FormOverlay/index.vue +1 -1
  165. package/dist/runtime/components/Edit/Indicators/index.vue +123 -0
  166. package/dist/runtime/components/Edit/Indicators/index.vue.d.ts +2 -0
  167. package/dist/runtime/components/Edit/ItemIcon/index.vue +2 -1
  168. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue +66 -0
  169. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue.d.ts +7 -0
  170. package/dist/runtime/components/Edit/Konami/Game/blokkli.png +0 -0
  171. package/dist/runtime/components/Edit/Konami/Game/charmap.d.ts +2 -0
  172. package/dist/runtime/components/Edit/Konami/Game/charmap.js +168 -0
  173. package/dist/runtime/components/Edit/Konami/Game/index.vue +745 -0
  174. package/dist/runtime/components/Edit/Konami/Game/index.vue.d.ts +6 -0
  175. package/dist/runtime/components/Edit/Konami/Game/textRendering.d.ts +8 -0
  176. package/dist/runtime/components/Edit/Konami/Game/textRendering.js +138 -0
  177. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.d.ts +9 -0
  178. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.js +130 -0
  179. package/dist/runtime/components/Edit/Konami/index.vue +44 -0
  180. package/dist/runtime/components/Edit/Konami/index.vue.d.ts +2 -0
  181. package/dist/runtime/components/Edit/Loading/index.vue +6 -2
  182. package/dist/runtime/components/Edit/Loading/index.vue.d.ts +2 -0
  183. package/dist/runtime/components/Edit/Messages/index.vue +8 -3
  184. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue +17 -0
  185. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue.d.ts +11 -0
  186. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue +37 -0
  187. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue.d.ts +11 -0
  188. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue +43 -0
  189. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue.d.ts +11 -0
  190. package/dist/runtime/components/Edit/PluginConfigForm/index.vue +57 -0
  191. package/dist/runtime/components/Edit/PluginConfigForm/index.vue.d.ts +16 -0
  192. package/dist/runtime/components/Edit/PreviewProvider.vue +3 -4
  193. package/dist/runtime/components/Edit/RelativeTime/index.vue +3 -2
  194. package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +8 -3
  195. package/dist/runtime/components/Edit/SystemRequirements/index.vue +3 -3
  196. package/dist/runtime/components/Edit/Toolbar/index.vue +3 -2
  197. package/dist/runtime/components/Edit/Transition/index.vue +41 -0
  198. package/dist/runtime/components/Edit/Transition/index.vue.d.ts +19 -0
  199. package/dist/runtime/components/Edit/index.d.ts +23 -15
  200. package/dist/runtime/components/Edit/index.js +44 -28
  201. package/dist/runtime/composables/defineBlokkli.js +7 -3
  202. package/dist/runtime/composables/defineBlokkliFeature.d.ts +4 -7
  203. package/dist/runtime/composables/defineBlokkliProvider.d.ts +11 -0
  204. package/dist/runtime/composables/defineBlokkliProvider.js +46 -0
  205. package/dist/runtime/composables/useBlokkliHelper.js +1 -1
  206. package/dist/runtime/constants/index.d.ts +3 -0
  207. package/dist/runtime/constants/index.js +3 -0
  208. package/dist/runtime/css/output.css +1 -1
  209. package/dist/runtime/helpers/addElementClasses.d.ts +2 -0
  210. package/dist/runtime/helpers/addElementClasses.js +24 -0
  211. package/dist/runtime/helpers/animationProvider.d.ts +4 -2
  212. package/dist/runtime/helpers/animationProvider.js +7 -2
  213. package/dist/runtime/helpers/bundles/index.d.ts +1 -0
  214. package/dist/runtime/helpers/bundles/index.js +4 -0
  215. package/dist/runtime/helpers/composables/useStickyToolbar.d.ts +20 -0
  216. package/dist/runtime/helpers/composables/useStickyToolbar.js +215 -0
  217. package/dist/runtime/helpers/definitionProvider.d.ts +2 -1
  218. package/dist/runtime/helpers/definitionProvider.js +17 -0
  219. package/dist/runtime/helpers/domProvider.d.ts +2 -1
  220. package/dist/runtime/helpers/domProvider.js +89 -43
  221. package/dist/runtime/helpers/dropTargets/index.d.ts +6 -0
  222. package/dist/runtime/helpers/dropTargets/index.js +49 -0
  223. package/dist/runtime/helpers/eventBus.d.ts +1 -1
  224. package/dist/runtime/helpers/eventBus.js +2 -2
  225. package/dist/runtime/helpers/index.d.ts +10 -1
  226. package/dist/runtime/helpers/index.js +57 -0
  227. package/dist/runtime/helpers/indicatorsProvider.d.ts +10 -0
  228. package/dist/runtime/helpers/indicatorsProvider.js +23 -0
  229. package/dist/runtime/helpers/keyboardProvider.d.ts +2 -0
  230. package/dist/runtime/helpers/keyboardProvider.js +17 -1
  231. package/dist/runtime/helpers/pluginProvider.d.ts +10 -0
  232. package/dist/runtime/helpers/pluginProvider.js +33 -0
  233. package/dist/runtime/helpers/renderCycle.d.ts +1 -0
  234. package/dist/runtime/helpers/renderCycle.js +10 -0
  235. package/dist/runtime/helpers/runtimeHelpers/index.js +14 -11
  236. package/dist/runtime/helpers/selectionProvider.d.ts +16 -0
  237. package/dist/runtime/helpers/selectionProvider.js +47 -35
  238. package/dist/runtime/helpers/stateProvider.d.ts +6 -2
  239. package/dist/runtime/helpers/stateProvider.js +58 -14
  240. package/dist/runtime/helpers/storageProvider.d.ts +4 -3
  241. package/dist/runtime/helpers/storageProvider.js +56 -3
  242. package/dist/runtime/helpers/symbols.d.ts +1 -0
  243. package/dist/runtime/helpers/symbols.js +1 -0
  244. package/dist/runtime/helpers/textProvider.js +6 -0
  245. package/dist/runtime/helpers/themeProvider.d.ts +2 -0
  246. package/dist/runtime/helpers/themeProvider.js +4 -1
  247. package/dist/runtime/helpers/transform.js +1 -3
  248. package/dist/runtime/helpers/uiProvider.d.ts +7 -2
  249. package/dist/runtime/helpers/uiProvider.js +49 -47
  250. package/dist/runtime/helpers/useTransitionedValue.d.ts +18 -0
  251. package/dist/runtime/helpers/useTransitionedValue.js +57 -0
  252. package/dist/runtime/icons/anchor.svg +1 -0
  253. package/dist/runtime/icons/arrow-left.svg +1 -1
  254. package/dist/runtime/icons/arrow-right.svg +1 -1
  255. package/dist/runtime/icons/arrow-top-right.svg +1 -0
  256. package/dist/runtime/icons/chart.svg +1 -0
  257. package/dist/runtime/icons/copy.svg +1 -0
  258. package/dist/runtime/icons/cursor-move.svg +1 -1
  259. package/dist/runtime/icons/diff.svg +1 -1
  260. package/dist/runtime/icons/eye.svg +1 -1
  261. package/dist/runtime/icons/info.svg +1 -1
  262. package/dist/runtime/icons/link.svg +1 -0
  263. package/dist/runtime/icons/speedometer.svg +1 -0
  264. package/dist/runtime/types/blokkOptions.d.ts +8 -0
  265. package/dist/runtime/types/index.d.ts +163 -5
  266. package/dist/runtime/types/theme.d.ts +2 -1
  267. package/dist/shared/{editor.gz_ac6uT.d.mts → editor.CKsrTpc1.d.mts} +1 -1
  268. package/package.json +20 -5
  269. package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +0 -22
  270. package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +0 -41
  271. /package/dist/runtime/components/Edit/Features/{FieldAreas/Overlay → Analyze}/index.vue.d.ts +0 -0
  272. /package/dist/runtime/components/Edit/Features/{FieldAreas/index.vue.d.ts → Anchors/Renderer.vue.d.ts} +0 -0
@@ -0,0 +1,58 @@
1
+ precision highp float;
2
+
3
+ varying vec4 v_quad;
4
+ varying float v_rect_type;
5
+ varying vec3 v_color;
6
+ varying vec2 v_rect_size;
7
+ varying vec2 v_rect_center;
8
+
9
+ uniform float u_dpi;
10
+
11
+ int pseudoQuadrant(vec2 p) {
12
+ return int(floor(step(0.0, p.x) + 2.0 * step(0.0, -p.y)));
13
+ }
14
+
15
+ float sdRoundBox(vec2 p, vec2 b, vec4 radii) {
16
+ int idx = pseudoQuadrant(p);
17
+ float cr;
18
+ if (idx == 0) cr = radii[0];
19
+ else if (idx == 1) cr = radii[1];
20
+ else if (idx == 2) cr = radii[3];
21
+ else cr = radii[2];
22
+ vec2 q = abs(p) - b + cr;
23
+ return min(max(q.x, q.y), 0.0) + length(max(q, 0.0)) - cr;
24
+ }
25
+
26
+ void main() {
27
+ float borderThickness = 2.0 * u_dpi;
28
+ vec2 size = v_rect_size;
29
+ vec4 radius = vec4(0.0); // No rounded corners for now
30
+
31
+ vec2 posRelativeToQuad = gl_FragCoord.xy - v_rect_center;
32
+
33
+ float mainDist = sdRoundBox(posRelativeToQuad, size / 2.0, radius);
34
+
35
+ // Calculate fill alpha (inside the rectangle)
36
+ float fillAlpha = 1.0 - smoothstep(-1.0, 0.0, mainDist);
37
+
38
+ // Calculate border alpha (edge of the rectangle)
39
+ float borderAlpha =
40
+ 1.0 - smoothstep(-1.0, 0.0, abs(mainDist) - borderThickness);
41
+
42
+ // Background (transparent)
43
+ vec4 bg = vec4(0.0, 0.0, 0.0, 0.0);
44
+
45
+ // Fill (semi-transparent)
46
+ vec4 fill = vec4(v_color, 0.3);
47
+
48
+ // Border (fully opaque)
49
+ vec4 border = vec4(v_color, 1.0);
50
+
51
+ // Mix background with fill
52
+ vec4 res_with_fill = mix(bg, fill, fillAlpha);
53
+
54
+ // Mix with border
55
+ vec4 finalColor = mix(res_with_fill, border, borderAlpha * border.a);
56
+
57
+ gl_FragColor = finalColor;
58
+ }
@@ -0,0 +1,168 @@
1
+ <template>
2
+ <div />
3
+ </template>
4
+
5
+ <script setup>
6
+ import onBlokkliEvent from "#blokkli/helpers/composables/onBlokkliEvent";
7
+ import { useBlokkli, onBeforeUnmount, computed } from "#imports";
8
+ import {
9
+ setBuffersAndAttributes,
10
+ drawBufferInfo,
11
+ setUniforms
12
+ } from "twgl.js";
13
+ import vs from "./vertex.glsl?raw";
14
+ import fs from "./fragment.glsl?raw";
15
+ import { RectangleBufferCollector } from "#blokkli/helpers/webgl";
16
+ import { toShaderColor } from "#blokkli/helpers";
17
+ const props = defineProps({
18
+ results: { type: Array, required: true },
19
+ gl: { type: null, required: true }
20
+ });
21
+ const { animation, ui, theme, selection, eventBus } = useBlokkli();
22
+ const programInfo = animation.registerProgram("analyze", props.gl, [vs, fs]);
23
+ const statusPriority = {
24
+ violation: 3,
25
+ incomplete: 2,
26
+ pass: 1,
27
+ inapplicable: 0
28
+ };
29
+ const providerElement = ui.providerElement();
30
+ const nodes = computed(() => {
31
+ const allNodes = props.results.filter((v) => v.status === "incomplete" || v.status === "violation").flatMap((result) => {
32
+ const nodes2 = Array.isArray(result.nodes) ? result.nodes : [result.nodes];
33
+ return nodes2.flatMap((node) => {
34
+ const targets = Array.isArray(node.targets) ? node.targets : [node.targets];
35
+ return targets.map((v) => {
36
+ if (typeof v === "string") {
37
+ return providerElement.querySelector(v);
38
+ }
39
+ return v;
40
+ }).filter((v) => v instanceof HTMLElement).filter((v) => providerElement.contains(v));
41
+ }).map((element) => {
42
+ return {
43
+ id: result.id,
44
+ element,
45
+ title: result.title,
46
+ status: result.status
47
+ };
48
+ });
49
+ });
50
+ const nodeMap = /* @__PURE__ */ new Map();
51
+ for (const node of allNodes) {
52
+ const existing = nodeMap.get(node.element);
53
+ if (!existing || statusPriority[node.status] > statusPriority[existing.status]) {
54
+ nodeMap.set(node.element, node);
55
+ }
56
+ }
57
+ return Array.from(nodeMap.values());
58
+ });
59
+ class AnalyzeRectangleBufferCollector extends RectangleBufferCollector {
60
+ prevKey = "";
61
+ rectCache = /* @__PURE__ */ new Map();
62
+ clearCache() {
63
+ this.rectCache.clear();
64
+ }
65
+ getBufferInfo(force) {
66
+ const key = nodes.value.map((node, index) => {
67
+ if (!this.rectCache.has(node.element)) {
68
+ this.rectCache.set(
69
+ node.element,
70
+ ui.getAbsoluteElementRect(node.element)
71
+ );
72
+ }
73
+ const rect = this.rectCache.get(node.element);
74
+ if (!rect) {
75
+ return `${index}_no_rect`;
76
+ }
77
+ return `${index}_${rect.x}_${rect.y}_${rect.width}_${rect.height}_${node.status}`;
78
+ }).join("_");
79
+ const hasChanged = force || this.prevKey !== key;
80
+ if (hasChanged) {
81
+ this.reset();
82
+ for (let i = 0; i < nodes.value.length; i++) {
83
+ const node = nodes.value[i];
84
+ const id = `analyze_${i}`;
85
+ if (this.added.has(id)) {
86
+ continue;
87
+ }
88
+ const rect = this.rectCache.get(node.element);
89
+ if (!rect) {
90
+ continue;
91
+ }
92
+ this.added.add(id);
93
+ const statusType = node.status === "violation" ? 3 : node.status === "incomplete" ? 1 : node.status === "inapplicable" ? 2 : 0;
94
+ this.addRectangle(
95
+ {
96
+ id,
97
+ x: rect.x,
98
+ y: rect.y,
99
+ width: rect.width,
100
+ height: rect.height,
101
+ status: node.status
102
+ },
103
+ statusType
104
+ );
105
+ }
106
+ this.prevKey = key;
107
+ }
108
+ if (hasChanged) {
109
+ this.bufferInfo = this.createBufferInfo();
110
+ }
111
+ return { info: this.bufferInfo, hasChanged };
112
+ }
113
+ }
114
+ const collector = new AnalyzeRectangleBufferCollector(props.gl);
115
+ onBlokkliEvent("canvas:draw", () => {
116
+ if (selection.isMultiSelecting.value || selection.isDragging.value) {
117
+ return;
118
+ }
119
+ props.gl.useProgram(programInfo.program);
120
+ const { info } = collector.getBufferInfo();
121
+ if (!info) {
122
+ return;
123
+ }
124
+ setUniforms(programInfo, {
125
+ u_color_violation: toShaderColor(theme.red.value.normal),
126
+ u_color_incomplete: toShaderColor(theme.yellow.value.normal),
127
+ u_color_pass: toShaderColor(theme.lime.value.normal)
128
+ });
129
+ animation.setSharedUniforms(props.gl, programInfo);
130
+ setBuffersAndAttributes(props.gl, programInfo, info);
131
+ drawBufferInfo(props.gl, info, props.gl.TRIANGLES);
132
+ });
133
+ onBlokkliEvent("ui:resized", function() {
134
+ collector.clearCache();
135
+ collector.reset();
136
+ });
137
+ onBlokkliEvent("state:reloaded", function() {
138
+ collector.clearCache();
139
+ collector.reset();
140
+ });
141
+ onBlokkliEvent("mouse:up", (e) => {
142
+ const artboardX = (e.x - ui.artboardOffset.value.x) / ui.artboardScale.value;
143
+ const artboardY = (e.y - ui.artboardOffset.value.y) / ui.artboardScale.value;
144
+ for (let i = 0; i < nodes.value.length; i++) {
145
+ const node = nodes.value[i];
146
+ const rect = collector.rectCache.get(node.element);
147
+ if (!rect) {
148
+ continue;
149
+ }
150
+ if (artboardX >= rect.x && artboardX <= rect.x + rect.width && artboardY >= rect.y && artboardY <= rect.y + rect.height) {
151
+ eventBus.emit("analyze:click-node", {
152
+ id: node.id,
153
+ target: node.element
154
+ });
155
+ return;
156
+ }
157
+ }
158
+ });
159
+ onBeforeUnmount(() => {
160
+ props.gl.clear(props.gl.COLOR_BUFFER_BIT);
161
+ });
162
+ </script>
163
+
164
+ <script>
165
+ export default {
166
+ name: "AnalyzeOverlay"
167
+ };
168
+ </script>
@@ -0,0 +1,9 @@
1
+ import type { AnalyzeResultMapped } from '#blokkli/analyzer/types';
2
+ declare const _default: import("vue").DefineComponent<{
3
+ results: AnalyzeResultMapped[];
4
+ gl: WebGLRenderingContext;
5
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
6
+ results: AnalyzeResultMapped[];
7
+ gl: WebGLRenderingContext;
8
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ export default _default;
@@ -0,0 +1,72 @@
1
+ precision highp float;
2
+
3
+ // [x, y] position.
4
+ attribute vec2 a_position;
5
+ // The [x,y,width, height] of the quad the vertex belongs to.
6
+ attribute vec4 a_quad;
7
+ attribute float a_rect_id;
8
+ attribute float a_rect_type;
9
+
10
+ // The global scaling applied to all quads.
11
+ uniform float u_scale;
12
+ uniform float u_dpi;
13
+ // The amount of pixels to offset on the x axis.
14
+ uniform float u_offset_x;
15
+ // The amount of pixels to offset on the y axis.
16
+ uniform float u_offset_y;
17
+ uniform vec2 u_resolution;
18
+ uniform vec3 u_color_violation;
19
+ uniform vec3 u_color_incomplete;
20
+ uniform vec3 u_color_pass;
21
+
22
+ varying vec4 v_quad;
23
+ varying float v_rect_type;
24
+ varying vec3 v_color;
25
+ varying vec2 v_rect_size;
26
+ varying vec2 v_rect_center;
27
+
28
+ void main() {
29
+ // Apply global scale and offsets
30
+ vec2 offsetPosition = a_position * u_scale;
31
+ offsetPosition.x += u_offset_x;
32
+ offsetPosition.y += u_offset_y;
33
+
34
+ // Normalize position for rendering
35
+ vec2 normalizedPosition = offsetPosition / u_resolution;
36
+
37
+ // Transform to screen space (-1 to 1)
38
+ vec2 screenSpacePosition = normalizedPosition * 2.0 - vec2(1.0, 1.0);
39
+ screenSpacePosition.y = -screenSpacePosition.y;
40
+
41
+ // Output final position in clip space
42
+ gl_Position = vec4(screenSpacePosition, 0.0, 1.0) * u_dpi;
43
+
44
+ // Pass quad and type to fragment shader
45
+ vec4 transformed_quad = vec4(
46
+ (a_quad.x * u_scale + u_offset_x) * u_dpi,
47
+ (u_resolution.y - a_quad.y * u_scale - a_quad.w * u_scale - u_offset_y) *
48
+ u_dpi,
49
+ a_quad.z * u_scale * u_dpi,
50
+ a_quad.w * u_scale * u_dpi
51
+ );
52
+ v_quad = transformed_quad;
53
+ v_rect_type = a_rect_type;
54
+ v_rect_size = vec2(v_quad.z, v_quad.w);
55
+ v_rect_center = vec2(v_quad.x + v_quad.z / 2.0, v_quad.y + v_quad.w / 2.0);
56
+
57
+ // Set color based on status type
58
+ // 0 = pass, 1 = incomplete, 2 = inapplicable, 3 = violation
59
+ if (a_rect_type > 2.5) {
60
+ // violation
61
+ v_color = u_color_violation;
62
+ } else if (a_rect_type > 0.5 && a_rect_type < 1.5) {
63
+ // incomplete
64
+ v_color = u_color_incomplete;
65
+ } else if (a_rect_type < 0.5) {
66
+ // pass
67
+ v_color = u_color_pass;
68
+ } else {
69
+ // inapplicable - use a neutral gray
70
+ v_color = vec3(0.5, 0.5, 0.5);
71
+ }
72
+ }
@@ -0,0 +1,159 @@
1
+ <template>
2
+ <div class="bk bk-analyze">
3
+ <div class="bk-analyze-button">
4
+ <button
5
+ class="bk-button bk-is-primary"
6
+ :disabled="!isStale"
7
+ @click="onClick"
8
+ >
9
+ {{ $t("analyzeButtonLabel", "Analyze Page") }}
10
+ </button>
11
+
12
+ <p v-if="lastRun" class="bk-analyze-last-run">
13
+ <RelativeTime v-slot="{ formatted }" :timestamp="lastRun">
14
+ {{
15
+ $t("analyzeLastRun", "Last run: @time").replace("@time", formatted)
16
+ }}
17
+ </RelativeTime>
18
+ </p>
19
+ <p v-if="isStale && hasRunOnce" class="bk-message-info">
20
+ {{
21
+ $t(
22
+ "analyzeStaleMessage",
23
+ "The contents of the page have changed since last analyzing the page. Please run the analyzers again to get updated results."
24
+ )
25
+ }}
26
+ </p>
27
+ </div>
28
+
29
+ <div v-if="resultsFiltered.length" class="bk-analyze-wrapper">
30
+ <div class="bk-analyze-form">
31
+ <FormSelect
32
+ id="category"
33
+ v-model="selectedCategory"
34
+ :label="$t('analyzeCategory', 'Category')"
35
+ :options="categoryOptions"
36
+ />
37
+ </div>
38
+ <AnalyzeSummary :results="resultsFiltered" />
39
+ <Results :results="resultsFiltered" />
40
+ </div>
41
+ </div>
42
+ <Overlay
43
+ v-if="
44
+ resultsFiltered.length && gl && animation.webglEnabled.value && !isStale
45
+ "
46
+ :results="resultsFiltered"
47
+ :gl="gl"
48
+ />
49
+ </template>
50
+
51
+ <script setup>
52
+ import { computed, useBlokkli, useState, ref } from "#imports";
53
+ import Results from "./Results/Results.vue";
54
+ import AnalyzeSummary from "./Summary/index.vue";
55
+ import Overlay from "./Overlay/index.vue";
56
+ import { useAnalyzeHelper } from "./helper";
57
+ import { FormSelect, RelativeTime } from "#blokkli/components";
58
+ import { AnalyzerContext } from "./analyzers/helpers/Context";
59
+ import { normalizeToArray } from "./analyzers/helpers/normalizeArray";
60
+ import { falsy } from "#blokkli/helpers";
61
+ import { renderCycle } from "#blokkli/helpers/renderCycle";
62
+ const props = defineProps({
63
+ langcode: { type: String, required: true },
64
+ analyzers: { type: Array, required: true }
65
+ });
66
+ const ALL = "ALL";
67
+ const { $t, ui, state, animation } = useBlokkli();
68
+ const { getCategoryLabel } = useAnalyzeHelper();
69
+ const gl = animation.gl();
70
+ const currentPlugin = ref("readability");
71
+ const hasRunOnce = useState(() => false);
72
+ const results = useState("blokkli:analyze", () => []);
73
+ const isLoading = useState(() => false);
74
+ const lastRun = useState(() => 0);
75
+ const lastRunKey = useState(() => "");
76
+ const selectedCategory = useState(() => ALL);
77
+ const hasInitialized = useState(() => false);
78
+ const providerRootElement = ui.providerElement();
79
+ const resultsFiltered = computed(() => {
80
+ if (selectedCategory.value === ALL) {
81
+ return results.value;
82
+ }
83
+ return results.value.filter((v) => v.category === selectedCategory.value);
84
+ });
85
+ const isStale = computed(() => lastRunKey.value !== state.refreshKey.value);
86
+ function getContext() {
87
+ return new AnalyzerContext(
88
+ props.langcode,
89
+ ui.interfaceLanguage.value,
90
+ providerRootElement,
91
+ state,
92
+ $t
93
+ );
94
+ }
95
+ async function onClick() {
96
+ if (isLoading.value) {
97
+ return;
98
+ }
99
+ const requiresRawPage = props.analyzers.some(
100
+ (analyzer) => analyzer.requireRawPage
101
+ );
102
+ if (requiresRawPage) {
103
+ ui.isAnalyzing.value = true;
104
+ }
105
+ isLoading.value = true;
106
+ await renderCycle();
107
+ const context = getContext();
108
+ if (!hasInitialized.value) {
109
+ await Promise.all(
110
+ props.analyzers.map(async (analyzer) => {
111
+ if (analyzer.init) {
112
+ await analyzer.init(context);
113
+ }
114
+ })
115
+ );
116
+ }
117
+ hasInitialized.value = true;
118
+ const newResults = [];
119
+ for (let i = 0; i < props.analyzers.length; i++) {
120
+ const analyzer = props.analyzers[i];
121
+ currentPlugin.value = analyzer.id;
122
+ const result = await normalizeToArray(analyzer.run(context));
123
+ const mapped = result.filter(falsy).map((v) => {
124
+ return {
125
+ ...v,
126
+ plugin: analyzer.id
127
+ };
128
+ });
129
+ newResults.push(...mapped);
130
+ }
131
+ results.value = newResults;
132
+ isLoading.value = false;
133
+ hasRunOnce.value = true;
134
+ lastRun.value = Date.now() / 1e3;
135
+ lastRunKey.value = state.refreshKey.value;
136
+ if (requiresRawPage) {
137
+ ui.isAnalyzing.value = false;
138
+ }
139
+ }
140
+ const categoryOptions = computed(() => {
141
+ const set = results.value.reduce((acc, v) => {
142
+ acc.add(v.category);
143
+ return acc;
144
+ }, /* @__PURE__ */ new Set());
145
+ const categories = [...set.values()].map((value) => {
146
+ return {
147
+ value,
148
+ label: getCategoryLabel(value)
149
+ };
150
+ });
151
+ return [
152
+ {
153
+ value: ALL,
154
+ label: $t("all", "All")
155
+ },
156
+ ...categories
157
+ ];
158
+ });
159
+ </script>
@@ -0,0 +1,7 @@
1
+ import type { Analyzer } from './analyzers/types.js';
2
+ type __VLS_Props = {
3
+ langcode: string;
4
+ analyzers: Analyzer[];
5
+ };
6
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ export default _default;
@@ -0,0 +1,100 @@
1
+ <template>
2
+ <div>
3
+ <details
4
+ v-for="group in grouped"
5
+ :key="group.group"
6
+ :open="group.open"
7
+ class="bk-analyze-results"
8
+ >
9
+ <summary v-show="!group.open">
10
+ <div>
11
+ <span>{{ group.label }}</span>
12
+ <div>
13
+ <span class="bk-pill">{{ group.results.length }}</span>
14
+ </div>
15
+ </div>
16
+ <Icon name="caret" />
17
+ </summary>
18
+ <ul
19
+ :class="{
20
+ 'bk-is-always-open': group.open
21
+ }"
22
+ >
23
+ <li>
24
+ <ResultsItem
25
+ v-for="result in group.results"
26
+ v-bind="result"
27
+ :key="group.group + result.id"
28
+ />
29
+ </li>
30
+ </ul>
31
+ </details>
32
+ </div>
33
+ </template>
34
+
35
+ <script setup>
36
+ import { computed, useBlokkli } from "#imports";
37
+ import ResultsItem from "./ResultsItem.vue";
38
+ import { Icon } from "#blokkli/components";
39
+ const props = defineProps({
40
+ results: { type: Array, required: true }
41
+ });
42
+ const { $t } = useBlokkli();
43
+ const groupOrder = {
44
+ problems: 1,
45
+ success: 2,
46
+ inapplicable: 3
47
+ };
48
+ const statusOrder = {
49
+ violation: 1,
50
+ incomplete: 2,
51
+ pass: 3,
52
+ inapplicable: 4
53
+ };
54
+ function getGroup(status) {
55
+ if (status === "violation" || status === "incomplete") {
56
+ return "problems";
57
+ } else if (status === "pass") {
58
+ return "success";
59
+ }
60
+ return "inapplicable";
61
+ }
62
+ function getGroupLabel(group) {
63
+ if (group === "problems") {
64
+ return "Problems";
65
+ } else if (group === "success") {
66
+ return $t("analyzeStatusPass", "Pass");
67
+ }
68
+ return $t("analyzeStatusInapplicable", "Inapplicable");
69
+ }
70
+ const grouped = computed(() => {
71
+ const map = props.results.reduce(
72
+ (acc, result) => {
73
+ const group = getGroup(result.status);
74
+ if (!acc[group]) {
75
+ acc[group] = [];
76
+ }
77
+ acc[group].push(result);
78
+ return acc;
79
+ },
80
+ {}
81
+ );
82
+ return Object.entries(map).map(([key, results]) => {
83
+ const group = key;
84
+ return {
85
+ group,
86
+ label: getGroupLabel(group),
87
+ open: group === "problems",
88
+ results: results.sort((a, b) => {
89
+ const statusDiff = statusOrder[a.status] - statusOrder[b.status];
90
+ if (statusDiff !== 0) {
91
+ return statusDiff;
92
+ }
93
+ return a.title.localeCompare(b.title);
94
+ })
95
+ };
96
+ }).sort((a, b) => {
97
+ return groupOrder[a.group] - groupOrder[b.group];
98
+ });
99
+ });
100
+ </script>
@@ -0,0 +1,6 @@
1
+ import type { AnalyzeResultMapped } from '../analyzers/types.js';
2
+ type __VLS_Props = {
3
+ results: AnalyzeResultMapped[];
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,56 @@
1
+ <template>
2
+ <div class="bk-analyze-results-item">
3
+ <div class="bk-analyze-results-item-tags">
4
+ <Status :status :title="key" />
5
+ <div class="bk-pill bk-is-mono">{{ categoryLabel }}</div>
6
+ <div class="bk-analyze-results-item-help">
7
+ <a v-if="link" :href="link" target="_blank" :title="link">
8
+ <span>{{ $t("analyzeMoreLink", "More") }}</span>
9
+ <Icon name="help" />
10
+ </a>
11
+ </div>
12
+ </div>
13
+ <h3>{{ title }}</h3>
14
+ <p v-if="descriptionMapped || link">
15
+ {{ descriptionMapped }}
16
+ </p>
17
+
18
+ <ResultsItemNodes :nodes :result-id="id" />
19
+ </div>
20
+ </template>
21
+
22
+ <script setup>
23
+ import { computed, useBlokkli } from "#imports";
24
+ import { Icon } from "#blokkli/components";
25
+ import Status from "./Status.vue";
26
+ import ResultsItemNodes from "./ResultsItemNodes.vue";
27
+ import { useAnalyzeHelper } from "../helper";
28
+ const props = defineProps({
29
+ id: { type: String, required: true },
30
+ title: { type: String, required: true },
31
+ category: { type: String, required: true },
32
+ description: { type: String, required: true },
33
+ link: { type: String, required: false },
34
+ status: { type: String, required: true },
35
+ nodes: { type: [Object, Array], required: true },
36
+ impact: { type: String, required: false },
37
+ scoreTargets: { type: Boolean, required: false },
38
+ plugin: { type: String, required: true }
39
+ });
40
+ const { getCategoryLabel } = useAnalyzeHelper();
41
+ const { $t } = useBlokkli();
42
+ const categoryLabel = computed(() => {
43
+ return getCategoryLabel(props.category);
44
+ });
45
+ const descriptionMapped = computed(() => {
46
+ if (!props.description) {
47
+ return "";
48
+ }
49
+ const punctuation = /[.!?]$/;
50
+ if (punctuation.test(props.description.trim())) {
51
+ return props.description;
52
+ }
53
+ return props.description + ".";
54
+ });
55
+ const key = computed(() => `${props.plugin}:${props.id}`);
56
+ </script>
@@ -0,0 +1,3 @@
1
+ import type { AnalyzeResultMapped } from '../analyzers/types.js';
2
+ declare const _default: import("vue").DefineComponent<AnalyzeResultMapped, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AnalyzeResultMapped> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
3
+ export default _default;