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

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 (289) hide show
  1. package/dist/module.d.mts +1 -1
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +4873 -1167
  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 +5 -0
  7. package/dist/modules/drupal/graphql/base/query.pbEntityConfig.graphql +5 -0
  8. package/dist/modules/drupal/graphql/features/publishNew.graphql +1 -4
  9. package/dist/modules/drupal/graphql/features/scheduler.graphql +31 -0
  10. package/dist/modules/drupal/graphql/features/transform.graphql +9 -1
  11. package/dist/modules/drupal/graphql/features/transform_host.graphql +38 -0
  12. package/dist/modules/drupal/graphql/mutations/update_host_options.graphql +15 -0
  13. package/dist/modules/drupal/index.d.mts +1 -1
  14. package/dist/modules/drupal/index.mjs +37 -7
  15. package/dist/modules/drupal/runtime/adapter/index.js +140 -5
  16. package/dist/runtime/adapter/index.d.ts +90 -1
  17. package/dist/runtime/blokkliPlugins/AddAction/index.vue +27 -3
  18. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue +65 -0
  19. package/dist/runtime/blokkliPlugins/BlockIndicator/index.vue.d.ts +26 -0
  20. package/dist/runtime/blokkliPlugins/ContextMenu/Menu/index.vue +3 -0
  21. package/dist/runtime/blokkliPlugins/ContextMenu/index.vue +3 -2
  22. package/dist/runtime/blokkliPlugins/DroppableEdit/index.vue +3 -3
  23. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue +49 -11
  24. package/dist/runtime/blokkliPlugins/ItemDropdown/index.vue.d.ts +29 -15
  25. package/dist/runtime/blokkliPlugins/MenuButton/index.vue.d.ts +2 -2
  26. package/dist/runtime/blokkliPlugins/Sidebar/Detached/index.vue +6 -7
  27. package/dist/runtime/blokkliPlugins/Sidebar/index.vue +2 -9
  28. package/dist/runtime/blokkliPlugins/Sidebar/index.vue.d.ts +1 -1
  29. package/dist/runtime/blokkliPlugins/ViewOption/index.vue +6 -3
  30. package/dist/runtime/blokkliPlugins/index.d.ts +8 -7
  31. package/dist/runtime/blokkliPlugins/index.js +15 -13
  32. package/dist/runtime/components/Blocks/Fragment/icon.svg +1 -1
  33. package/dist/runtime/components/BlokkliProvider.vue +1 -0
  34. package/dist/runtime/components/BlokkliProvider.vue.d.ts +1 -0
  35. package/dist/runtime/components/Edit/Actions/index.vue +39 -67
  36. package/dist/runtime/components/Edit/AddListItem/index.vue +2 -5
  37. package/dist/runtime/components/Edit/AddListItem/index.vue.d.ts +1 -1
  38. package/dist/runtime/components/Edit/AddListItemIcon/index.vue +19 -0
  39. package/dist/runtime/components/Edit/AddListItemIcon/index.vue.d.ts +15 -0
  40. package/dist/runtime/components/Edit/AppMenu/index.vue +5 -5
  41. package/dist/runtime/components/Edit/Dialog/index.vue +5 -1
  42. package/dist/runtime/components/Edit/Dialog/index.vue.d.ts +1 -1
  43. package/dist/runtime/components/Edit/DiffViewer/State.vue +276 -0
  44. package/dist/runtime/components/Edit/DiffViewer/State.vue.d.ts +16 -0
  45. package/dist/runtime/components/Edit/DragInteractions/index.vue +35 -6
  46. package/dist/runtime/components/Edit/EditProvider.vue +46 -35
  47. package/dist/runtime/components/Edit/Features/AddList/index.vue +15 -25
  48. package/dist/runtime/components/Edit/Features/Analyze/Overlay/fragment.glsl +58 -0
  49. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue +168 -0
  50. package/dist/runtime/components/Edit/Features/Analyze/Overlay/index.vue.d.ts +9 -0
  51. package/dist/runtime/components/Edit/Features/Analyze/Overlay/vertex.glsl +72 -0
  52. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue +159 -0
  53. package/dist/runtime/components/Edit/Features/Analyze/Renderer.vue.d.ts +7 -0
  54. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue +100 -0
  55. package/dist/runtime/components/Edit/Features/Analyze/Results/Results.vue.d.ts +6 -0
  56. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue +56 -0
  57. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItem.vue.d.ts +3 -0
  58. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue +87 -0
  59. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodes.vue.d.ts +7 -0
  60. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue +101 -0
  61. package/dist/runtime/components/Edit/Features/Analyze/Results/ResultsItemNodesTarget.vue.d.ts +8 -0
  62. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue +18 -0
  63. package/dist/runtime/components/Edit/Features/Analyze/Results/Status.vue.d.ts +8 -0
  64. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue +92 -0
  65. package/dist/runtime/components/Edit/Features/Analyze/Summary/Chart.vue.d.ts +17 -0
  66. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue +77 -0
  67. package/dist/runtime/components/Edit/Features/Analyze/Summary/index.vue.d.ts +6 -0
  68. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.d.ts +12 -0
  69. package/dist/runtime/components/Edit/Features/Analyze/analyzers/axe.js +75 -0
  70. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.d.ts +4 -0
  71. package/dist/runtime/components/Edit/Features/Analyze/analyzers/defineAnalyzer.js +5 -0
  72. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.d.ts +32 -0
  73. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/Context.js +45 -0
  74. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.d.ts +5 -0
  75. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/collectTextElements.js +95 -0
  76. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.d.ts +3 -0
  77. package/dist/runtime/components/Edit/Features/Analyze/analyzers/helpers/normalizeArray.js +13 -0
  78. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.d.ts +2 -0
  79. package/dist/runtime/components/Edit/Features/Analyze/analyzers/index.js +2 -0
  80. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.d.ts +2 -0
  81. package/dist/runtime/components/Edit/Features/Analyze/analyzers/readability.js +165 -0
  82. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.d.ts +44 -0
  83. package/dist/runtime/components/Edit/Features/Analyze/analyzers/types.js +0 -0
  84. package/dist/runtime/components/Edit/Features/Analyze/helper.d.ts +5 -0
  85. package/dist/runtime/components/Edit/Features/Analyze/helper.js +28 -0
  86. package/dist/runtime/components/Edit/Features/Analyze/index.vue +44 -0
  87. package/dist/runtime/components/Edit/Features/Anchors/Renderer.vue +136 -0
  88. package/dist/runtime/components/Edit/Features/Anchors/index.vue +32 -0
  89. package/dist/runtime/components/Edit/Features/Anchors/index.vue.d.ts +2 -0
  90. package/dist/runtime/components/Edit/Features/Artboard/Overview/index.vue +25 -13
  91. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue +296 -0
  92. package/dist/runtime/components/Edit/Features/Artboard/Renderer.vue.d.ts +7 -0
  93. package/dist/runtime/components/Edit/Features/Artboard/index.vue +10 -245
  94. package/dist/runtime/components/Edit/Features/Assistant/index.vue +3 -2
  95. package/dist/runtime/components/Edit/Features/BlockAddList/index.vue +4 -4
  96. package/dist/runtime/components/Edit/Features/Clipboard/index.vue +161 -28
  97. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue +16 -4
  98. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/Group/index.vue.d.ts +0 -1
  99. package/dist/runtime/components/Edit/Features/CommandPalette/Palette/index.vue +4 -53
  100. package/dist/runtime/components/Edit/Features/CommandPalette/index.vue +3 -2
  101. package/dist/runtime/components/Edit/Features/Conversions/index.vue +12 -14
  102. package/dist/runtime/components/Edit/Features/Debug/Viewport/index.vue +14 -0
  103. package/dist/runtime/components/Edit/Features/Debug/index.vue +27 -24
  104. package/dist/runtime/components/Edit/Features/Diff/DiffView/index.vue +13 -190
  105. package/dist/runtime/components/Edit/Features/Diff/index.vue +2 -2
  106. package/dist/runtime/components/Edit/Features/DraggingOverlay/DragItems/index.vue +4 -4
  107. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/fragment.glsl +1 -1
  108. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/index.vue +35 -71
  109. package/dist/runtime/components/Edit/Features/DraggingOverlay/DropTargets/vertex.glsl +1 -1
  110. package/dist/runtime/components/Edit/Features/DraggingOverlay/index.vue +62 -48
  111. package/dist/runtime/components/Edit/Features/EditForm/Frame/index.vue +3 -3
  112. package/dist/runtime/components/Edit/Features/EditForm/index.vue +3 -3
  113. package/dist/runtime/components/Edit/Features/EditableField/index.vue +6 -2
  114. package/dist/runtime/components/Edit/Features/EditableMask/index.vue +3 -20
  115. package/dist/runtime/components/Edit/Features/EntityTitle/index.vue +33 -1
  116. package/dist/runtime/components/Edit/Features/Fragments/index.vue +3 -2
  117. package/dist/runtime/components/Edit/Features/History/index.vue +35 -12
  118. package/dist/runtime/components/Edit/Features/ImportExisting/Dialog/index.vue +6 -2
  119. package/dist/runtime/components/Edit/Features/ImportExisting/index.vue +3 -2
  120. package/dist/runtime/components/Edit/Features/Library/index.vue +11 -9
  121. package/dist/runtime/components/Edit/Features/MediaLibrary/Library/index.vue +5 -8
  122. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/fragment.glsl +1 -1
  123. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/index.vue +9 -4
  124. package/dist/runtime/components/Edit/Features/MultiSelect/Overlay/vertex.glsl +1 -1
  125. package/dist/runtime/components/Edit/Features/MultiSelect/index.vue +8 -14
  126. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue +3 -2
  127. package/dist/runtime/components/Edit/Features/Options/Form/Checkbox/index.vue.d.ts +2 -0
  128. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue +9 -3
  129. package/dist/runtime/components/Edit/Features/Options/Form/Item.vue.d.ts +0 -1
  130. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue +37 -19
  131. package/dist/runtime/components/Edit/Features/Options/Form/Radios/index.vue.d.ts +8 -2
  132. package/dist/runtime/components/Edit/Features/Options/Form/index.vue +81 -37
  133. package/dist/runtime/components/Edit/Features/Options/Form/index.vue.d.ts +5 -5
  134. package/dist/runtime/components/Edit/Features/Options/index.vue +30 -6
  135. package/dist/runtime/components/Edit/Features/PreviewGrant/index.vue +3 -3
  136. package/dist/runtime/components/Edit/Features/Publish/Dialog/Item.vue +41 -14
  137. package/dist/runtime/components/Edit/Features/Publish/Dialog/Item.vue.d.ts +2 -0
  138. package/dist/runtime/components/Edit/Features/Publish/Dialog/PublishOption.vue +47 -0
  139. package/dist/runtime/components/Edit/Features/Publish/Dialog/PublishOption.vue.d.ts +19 -0
  140. package/dist/runtime/components/Edit/Features/Publish/Dialog/ScheduleDate.vue +183 -0
  141. package/dist/runtime/components/Edit/Features/Publish/Dialog/ScheduleDate.vue.d.ts +13 -0
  142. package/dist/runtime/components/Edit/Features/Publish/Dialog/Summary.vue +83 -0
  143. package/dist/runtime/components/Edit/Features/Publish/Dialog/Summary.vue.d.ts +9 -0
  144. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue +381 -128
  145. package/dist/runtime/components/Edit/Features/Publish/Dialog/index.vue.d.ts +3 -14
  146. package/dist/runtime/components/Edit/Features/Publish/index.vue +37 -22
  147. package/dist/runtime/components/Edit/Features/Revert/index.vue +3 -3
  148. package/dist/runtime/components/Edit/Features/Search/index.vue +3 -2
  149. package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue +54 -0
  150. package/dist/runtime/components/Edit/Features/Selection/AddButtons/AddButtonsField.vue.d.ts +14 -0
  151. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue +120 -0
  152. package/dist/runtime/components/Edit/Features/Selection/AddButtons/Overlay/index.vue.d.ts +15 -0
  153. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue +459 -0
  154. package/dist/runtime/components/Edit/Features/Selection/AddButtons/index.vue.d.ts +6 -0
  155. package/dist/runtime/components/Edit/Features/Selection/Overlay/fragment.glsl +14 -9
  156. package/dist/runtime/components/Edit/Features/Selection/Overlay/index.vue +32 -11
  157. package/dist/runtime/components/Edit/Features/Selection/Overlay/vertex.glsl +1 -1
  158. package/dist/runtime/components/Edit/Features/Selection/index.vue +76 -7
  159. package/dist/runtime/components/Edit/Features/Settings/Dialog/FeatureSetting/index.vue +12 -17
  160. package/dist/runtime/components/Edit/Features/Settings/index.vue +11 -25
  161. package/dist/runtime/components/Edit/Features/Theme/Color/index.vue +5 -1
  162. package/dist/runtime/components/Edit/Features/Theme/index.vue +2 -1
  163. package/dist/runtime/components/Edit/Features/TouchActionBar/index.vue +3 -2
  164. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue +198 -0
  165. package/dist/runtime/components/Edit/Features/Transform/Dialog/index.vue.d.ts +13 -0
  166. package/dist/runtime/components/Edit/Features/Transform/index.vue +155 -44
  167. package/dist/runtime/components/Edit/Form/Datepicker/index.vue +198 -0
  168. package/dist/runtime/components/Edit/Form/Datepicker/index.vue.d.ts +15 -0
  169. package/dist/runtime/components/Edit/Form/Radio/index.vue +33 -0
  170. package/dist/runtime/components/Edit/Form/Radio/index.vue.d.ts +20 -0
  171. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue +37 -0
  172. package/dist/runtime/components/Edit/Form/RadioTabs/index.vue.d.ts +22 -0
  173. package/dist/runtime/components/Edit/Form/Select/index.vue +29 -0
  174. package/dist/runtime/components/Edit/Form/Select/index.vue.d.ts +20 -0
  175. package/dist/runtime/components/Edit/Form/Text/index.vue +33 -0
  176. package/dist/runtime/components/Edit/Form/Text/index.vue.d.ts +19 -0
  177. package/dist/runtime/components/Edit/Form/Textarea/index.vue +13 -6
  178. package/dist/runtime/components/Edit/Form/Textarea/index.vue.d.ts +4 -0
  179. package/dist/runtime/components/Edit/FormOverlay/index.vue +1 -1
  180. package/dist/runtime/components/Edit/Indicators/index.vue +123 -0
  181. package/dist/runtime/components/Edit/Indicators/index.vue.d.ts +2 -0
  182. package/dist/runtime/components/Edit/ItemIcon/index.vue +2 -1
  183. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue +66 -0
  184. package/dist/runtime/components/Edit/Konami/Game/PixelGrid.vue.d.ts +7 -0
  185. package/dist/runtime/components/Edit/Konami/Game/blokkli.png +0 -0
  186. package/dist/runtime/components/Edit/Konami/Game/charmap.d.ts +2 -0
  187. package/dist/runtime/components/Edit/Konami/Game/charmap.js +168 -0
  188. package/dist/runtime/components/Edit/Konami/Game/index.vue +752 -0
  189. package/dist/runtime/components/Edit/Konami/Game/index.vue.d.ts +6 -0
  190. package/dist/runtime/components/Edit/Konami/Game/textRendering.d.ts +8 -0
  191. package/dist/runtime/components/Edit/Konami/Game/textRendering.js +138 -0
  192. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.d.ts +9 -0
  193. package/dist/runtime/components/Edit/Konami/Game/useIconRendering.js +130 -0
  194. package/dist/runtime/components/Edit/Konami/index.vue +44 -0
  195. package/dist/runtime/components/Edit/Konami/index.vue.d.ts +2 -0
  196. package/dist/runtime/components/Edit/Loading/index.vue +6 -2
  197. package/dist/runtime/components/Edit/Loading/index.vue.d.ts +2 -0
  198. package/dist/runtime/components/Edit/Messages/index.vue +8 -3
  199. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue +17 -0
  200. package/dist/runtime/components/Edit/PluginConfigForm/Checkbox/index.vue.d.ts +11 -0
  201. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue +37 -0
  202. package/dist/runtime/components/Edit/PluginConfigForm/Options/index.vue.d.ts +11 -0
  203. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue +43 -0
  204. package/dist/runtime/components/Edit/PluginConfigForm/Text/index.vue.d.ts +11 -0
  205. package/dist/runtime/components/Edit/PluginConfigForm/index.vue +57 -0
  206. package/dist/runtime/components/Edit/PluginConfigForm/index.vue.d.ts +16 -0
  207. package/dist/runtime/components/Edit/PreviewProvider.vue +3 -4
  208. package/dist/runtime/components/Edit/RelativeTime/index.vue +3 -2
  209. package/dist/runtime/components/Edit/ShortcutIndicator/index.vue +8 -3
  210. package/dist/runtime/components/Edit/SystemRequirements/index.vue +3 -3
  211. package/dist/runtime/components/Edit/Toolbar/index.vue +3 -2
  212. package/dist/runtime/components/Edit/Transition/index.vue +41 -0
  213. package/dist/runtime/components/Edit/Transition/index.vue.d.ts +19 -0
  214. package/dist/runtime/components/Edit/index.d.ts +24 -15
  215. package/dist/runtime/components/Edit/index.js +46 -28
  216. package/dist/runtime/composables/defineBlokkli.js +7 -3
  217. package/dist/runtime/composables/defineBlokkliFeature.d.ts +4 -7
  218. package/dist/runtime/composables/defineBlokkliProvider.d.ts +11 -0
  219. package/dist/runtime/composables/defineBlokkliProvider.js +46 -0
  220. package/dist/runtime/composables/useBlokkliHelper.js +1 -1
  221. package/dist/runtime/constants/index.d.ts +3 -0
  222. package/dist/runtime/constants/index.js +3 -0
  223. package/dist/runtime/css/output.css +1 -1
  224. package/dist/runtime/helpers/addElementClasses.d.ts +2 -0
  225. package/dist/runtime/helpers/addElementClasses.js +24 -0
  226. package/dist/runtime/helpers/animationProvider.d.ts +4 -2
  227. package/dist/runtime/helpers/animationProvider.js +7 -2
  228. package/dist/runtime/helpers/bundles/index.d.ts +1 -0
  229. package/dist/runtime/helpers/bundles/index.js +4 -0
  230. package/dist/runtime/helpers/composables/useStickyToolbar.d.ts +20 -0
  231. package/dist/runtime/helpers/composables/useStickyToolbar.js +215 -0
  232. package/dist/runtime/helpers/definitionProvider.d.ts +2 -1
  233. package/dist/runtime/helpers/definitionProvider.js +17 -0
  234. package/dist/runtime/helpers/domProvider.d.ts +2 -1
  235. package/dist/runtime/helpers/domProvider.js +89 -43
  236. package/dist/runtime/helpers/dropTargets/index.d.ts +6 -0
  237. package/dist/runtime/helpers/dropTargets/index.js +49 -0
  238. package/dist/runtime/helpers/eventBus.d.ts +1 -1
  239. package/dist/runtime/helpers/eventBus.js +2 -2
  240. package/dist/runtime/helpers/index.d.ts +10 -1
  241. package/dist/runtime/helpers/index.js +57 -0
  242. package/dist/runtime/helpers/indicatorsProvider.d.ts +10 -0
  243. package/dist/runtime/helpers/indicatorsProvider.js +23 -0
  244. package/dist/runtime/helpers/keyboardProvider.d.ts +2 -0
  245. package/dist/runtime/helpers/keyboardProvider.js +17 -1
  246. package/dist/runtime/helpers/pluginProvider.d.ts +10 -0
  247. package/dist/runtime/helpers/pluginProvider.js +33 -0
  248. package/dist/runtime/helpers/renderCycle.d.ts +1 -0
  249. package/dist/runtime/helpers/renderCycle.js +10 -0
  250. package/dist/runtime/helpers/runtimeHelpers/index.js +14 -11
  251. package/dist/runtime/helpers/selectionProvider.d.ts +16 -0
  252. package/dist/runtime/helpers/selectionProvider.js +47 -35
  253. package/dist/runtime/helpers/stateProvider.d.ts +7 -2
  254. package/dist/runtime/helpers/stateProvider.js +89 -14
  255. package/dist/runtime/helpers/storageProvider.d.ts +4 -3
  256. package/dist/runtime/helpers/storageProvider.js +56 -3
  257. package/dist/runtime/helpers/symbols.d.ts +1 -0
  258. package/dist/runtime/helpers/symbols.js +1 -0
  259. package/dist/runtime/helpers/textProvider.js +6 -0
  260. package/dist/runtime/helpers/themeProvider.d.ts +2 -0
  261. package/dist/runtime/helpers/themeProvider.js +4 -1
  262. package/dist/runtime/helpers/transform.js +1 -3
  263. package/dist/runtime/helpers/uiProvider.d.ts +9 -2
  264. package/dist/runtime/helpers/uiProvider.js +72 -47
  265. package/dist/runtime/helpers/useTransitionedValue.d.ts +18 -0
  266. package/dist/runtime/helpers/useTransitionedValue.js +57 -0
  267. package/dist/runtime/icons/anchor.svg +1 -0
  268. package/dist/runtime/icons/arrow-left.svg +1 -1
  269. package/dist/runtime/icons/arrow-right.svg +1 -1
  270. package/dist/runtime/icons/arrow-top-right.svg +1 -0
  271. package/dist/runtime/icons/calendar-clock.svg +1 -0
  272. package/dist/runtime/icons/chart.svg +1 -0
  273. package/dist/runtime/icons/copy.svg +1 -0
  274. package/dist/runtime/icons/cursor-move.svg +1 -1
  275. package/dist/runtime/icons/diff.svg +1 -1
  276. package/dist/runtime/icons/eye-off.svg +1 -0
  277. package/dist/runtime/icons/eye.svg +1 -1
  278. package/dist/runtime/icons/info.svg +1 -1
  279. package/dist/runtime/icons/link.svg +1 -0
  280. package/dist/runtime/icons/speedometer.svg +1 -0
  281. package/dist/runtime/types/blokkOptions.d.ts +8 -0
  282. package/dist/runtime/types/index.d.ts +172 -6
  283. package/dist/runtime/types/theme.d.ts +2 -1
  284. package/dist/shared/{editor.gz_ac6uT.d.mts → editor.CKsrTpc1.d.mts} +1 -1
  285. package/package.json +20 -5
  286. package/dist/runtime/components/Edit/Features/FieldAreas/Overlay/index.vue +0 -22
  287. package/dist/runtime/components/Edit/Features/FieldAreas/index.vue +0 -41
  288. /package/dist/runtime/components/Edit/Features/{FieldAreas/Overlay → Analyze}/index.vue.d.ts +0 -0
  289. /package/dist/runtime/components/Edit/Features/{FieldAreas/index.vue.d.ts → Anchors/Renderer.vue.d.ts} +0 -0
@@ -0,0 +1,77 @@
1
+ <template>
2
+ <div class="bk-analyze-summary">
3
+ <div class="bk-analyze-summary-chart">
4
+ <Chart :data="summary" :percentage />
5
+ <ul>
6
+ <li v-for="item in summary" :key="item.status">
7
+ <div :style="{ backgroundColor: item.color }" />
8
+ <div>
9
+ <span>{{ item.label }}</span>
10
+ <span>{{ item.value }}</span>
11
+ </div>
12
+ </li>
13
+ </ul>
14
+ </div>
15
+ </div>
16
+ </template>
17
+
18
+ <script setup>
19
+ import { rgbaToString } from "#blokkli/helpers";
20
+ import { computed, useBlokkli } from "#imports";
21
+ import { useAnalyzeHelper } from "../helper";
22
+ import Chart from "./Chart.vue";
23
+ const props = defineProps({
24
+ results: { type: Array, required: true }
25
+ });
26
+ const { theme } = useBlokkli();
27
+ const { getStatusLabel } = useAnalyzeHelper();
28
+ const SORT = {
29
+ violation: 4,
30
+ incomplete: 3,
31
+ pass: 2,
32
+ inapplicable: 1
33
+ };
34
+ function getColor(status) {
35
+ if (status === "pass") {
36
+ return rgbaToString(theme.lime.value.normal);
37
+ } else if (status === "incomplete") {
38
+ return rgbaToString(theme.yellow.value.normal);
39
+ } else if (status === "violation") {
40
+ return rgbaToString(theme.red.value.normal);
41
+ }
42
+ return rgbaToString(theme.mono.value[200]);
43
+ }
44
+ const summary = computed(() => {
45
+ const byStatus = props.results.reduce(
46
+ (acc, result) => {
47
+ acc[result.status] ||= 0;
48
+ const nodes = Array.isArray(result.nodes) ? result.nodes : [result.nodes];
49
+ const total = nodes.reduce((acc2, node) => {
50
+ const targets = Array.isArray(node.targets) ? node.targets : [node.targets];
51
+ return acc2 + targets.length;
52
+ }, 0);
53
+ acc[result.status] += total;
54
+ return acc;
55
+ },
56
+ {}
57
+ );
58
+ return Object.entries(byStatus).map(([key, value]) => {
59
+ const status = key;
60
+ return {
61
+ status,
62
+ label: getStatusLabel(status),
63
+ value,
64
+ color: getColor(status)
65
+ };
66
+ }).filter((v) => v.status !== "inapplicable").sort((a, b) => {
67
+ return SORT[b.status] - SORT[a.status];
68
+ });
69
+ });
70
+ const percentage = computed(() => {
71
+ const total = summary.value.reduce((acc, item) => {
72
+ return acc + item.value;
73
+ }, 0);
74
+ const pass = summary.value.find((v) => v.status === "pass")?.value ?? 0;
75
+ return Math.round(pass / total * 100);
76
+ });
77
+ </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,12 @@
1
+ import { type RunOptions } from 'axe-core';
2
+ declare const _default: (options?: {
3
+ /**
4
+ * Selectors to exclude.
5
+ */
6
+ exclude?: string[];
7
+ /**
8
+ * Run options passed to axe-core.
9
+ */
10
+ runOptions?: RunOptions;
11
+ } | undefined) => import("./types.js").Analyzer;
12
+ export default _default;
@@ -0,0 +1,75 @@
1
+ import { defineAnalyzer } from "./defineAnalyzer.js";
2
+ import axe from "axe-core";
3
+ import { falsy } from "#blokkli/helpers";
4
+ import de from "axe-core/locales/de.json";
5
+ import fr from "axe-core/locales/fr.json";
6
+ import it from "axe-core/locales/it.json";
7
+ function mapAxeNode(node) {
8
+ return {
9
+ description: node.failureSummary,
10
+ impact: node.impact ?? void 0,
11
+ targets: node.target.map((v) => {
12
+ if (Array.isArray(v)) {
13
+ return null;
14
+ }
15
+ return v;
16
+ }).filter(falsy)
17
+ };
18
+ }
19
+ function mapAxeResult(result, status) {
20
+ return {
21
+ id: result.id,
22
+ title: result.description,
23
+ category: "accessibility",
24
+ description: result.help,
25
+ link: result.helpUrl,
26
+ status,
27
+ impact: result.impact ?? void 0,
28
+ nodes: result.nodes.map(mapAxeNode)
29
+ };
30
+ }
31
+ function mapAxeResults(results, status) {
32
+ return results.map((v) => mapAxeResult(v, status));
33
+ }
34
+ function getLocale(langcode) {
35
+ if (langcode === "de") {
36
+ return de;
37
+ } else if (langcode === "fr") {
38
+ return fr;
39
+ } else if (langcode === "it") {
40
+ return it;
41
+ }
42
+ return null;
43
+ }
44
+ export default defineAnalyzer((options) => {
45
+ const userExclude = options?.exclude ?? [];
46
+ const elementContext = {
47
+ exclude: [
48
+ "#nuxt-devtools-container",
49
+ ".bk",
50
+ ".bk-sidebar",
51
+ "#bk-animation-canvas-webgl",
52
+ ...userExclude
53
+ ]
54
+ };
55
+ return {
56
+ id: "axe",
57
+ requireRawPage: true,
58
+ init: function(context) {
59
+ const locale = getLocale(context.interfaceLangcode) ?? {};
60
+ axe.configure({
61
+ locale
62
+ });
63
+ },
64
+ run: function() {
65
+ return axe.run(elementContext, options?.runOptions ?? {}).then((result) => {
66
+ return [
67
+ ...mapAxeResults(result.incomplete, "incomplete"),
68
+ ...mapAxeResults(result.inapplicable, "inapplicable"),
69
+ ...mapAxeResults(result.passes, "pass"),
70
+ ...mapAxeResults(result.violations, "violation")
71
+ ];
72
+ });
73
+ }
74
+ };
75
+ });
@@ -0,0 +1,4 @@
1
+ import type { Analyzer } from './types.js';
2
+ type AnalyzerInit<O extends object> = (options?: O) => Analyzer;
3
+ export declare function defineAnalyzer<O extends object, HasOptions = object extends O ? true : false>(init: AnalyzerInit<O>): HasOptions extends true ? (options?: O) => Analyzer : (options: O) => Analyzer;
4
+ export {};
@@ -0,0 +1,5 @@
1
+ export function defineAnalyzer(init) {
2
+ return function(options) {
3
+ return init(options);
4
+ };
5
+ }
@@ -0,0 +1,32 @@
1
+ import type { FieldListItemTyped } from '#blokkli-build/generated-types';
2
+ import type { StateProvider } from '#blokkli/helpers/stateProvider';
3
+ import type { TextProvider } from '#blokkli/helpers/textProvider';
4
+ import type { MutatedField } from '#blokkli/types';
5
+ import type { AnalyzeCategory, AnalyzeNode, AnalyzeResult, AnalyzeStatus } from '../types.js';
6
+ import { type TextElement } from './collectTextElements.js';
7
+ export declare class AnalyzerContext {
8
+ readonly langcode: string;
9
+ readonly interfaceLangcode: string;
10
+ readonly providerRootElement: HTMLElement;
11
+ private state;
12
+ readonly $t: TextProvider;
13
+ readonly mutatedFields: Readonly<MutatedField[]>;
14
+ /**
15
+ * The collected text elements.
16
+ */
17
+ private textElements;
18
+ constructor(langcode: string, interfaceLangcode: string, providerRootElement: HTMLElement, state: StateProvider, $t: TextProvider);
19
+ /**
20
+ * Get the field list item for a block UUID.
21
+ */
22
+ getFieldListItem(uuid: string): FieldListItemTyped | undefined;
23
+ /**
24
+ * Returns an array of all text elements inside the provider root element.
25
+ *
26
+ * A 'text element' is defined as the lowest block element that contains text.
27
+ * For example, a structure like `<p><span>Foobar</span> <strong>Test</strong></p>`
28
+ * would return as a single text element containing "Foobar Test".
29
+ */
30
+ getTextElements(): Readonly<TextElement[]>;
31
+ defineResult(id: string, title: string, category: AnalyzeCategory, description: string, status: AnalyzeStatus, nodes?: AnalyzeNode | AnalyzeNode[]): AnalyzeResult;
32
+ }
@@ -0,0 +1,45 @@
1
+ import { collectTextElements } from "./collectTextElements.js";
2
+ export class AnalyzerContext {
3
+ constructor(langcode, interfaceLangcode, providerRootElement, state, $t) {
4
+ this.langcode = langcode;
5
+ this.interfaceLangcode = interfaceLangcode;
6
+ this.providerRootElement = providerRootElement;
7
+ this.state = state;
8
+ this.$t = $t;
9
+ this.mutatedFields = JSON.parse(JSON.stringify(state.mutatedFields.value));
10
+ }
11
+ mutatedFields;
12
+ /**
13
+ * The collected text elements.
14
+ */
15
+ textElements = null;
16
+ /**
17
+ * Get the field list item for a block UUID.
18
+ */
19
+ getFieldListItem(uuid) {
20
+ return this.state.getFieldListItem(uuid);
21
+ }
22
+ /**
23
+ * Returns an array of all text elements inside the provider root element.
24
+ *
25
+ * A 'text element' is defined as the lowest block element that contains text.
26
+ * For example, a structure like `<p><span>Foobar</span> <strong>Test</strong></p>`
27
+ * would return as a single text element containing "Foobar Test".
28
+ */
29
+ getTextElements() {
30
+ if (!this.textElements) {
31
+ this.textElements = collectTextElements(this.providerRootElement);
32
+ }
33
+ return this.textElements;
34
+ }
35
+ defineResult(id, title, category, description, status, nodes = []) {
36
+ return {
37
+ id,
38
+ title,
39
+ category,
40
+ description,
41
+ status,
42
+ nodes
43
+ };
44
+ }
45
+ }
@@ -0,0 +1,5 @@
1
+ export interface TextElement {
2
+ text: string;
3
+ element: HTMLElement;
4
+ }
5
+ export declare function collectTextElements(rootElement: HTMLElement): TextElement[];
@@ -0,0 +1,95 @@
1
+ const blockElements = /* @__PURE__ */ new Set([
2
+ "ADDRESS",
3
+ "ARTICLE",
4
+ "ASIDE",
5
+ "BLOCKQUOTE",
6
+ "CANVAS",
7
+ "DD",
8
+ "DIV",
9
+ "DL",
10
+ "DT",
11
+ "FIELDSET",
12
+ "FIGCAPTION",
13
+ "FIGURE",
14
+ "FOOTER",
15
+ "FORM",
16
+ "H1",
17
+ "H2",
18
+ "H3",
19
+ "H4",
20
+ "H5",
21
+ "H6",
22
+ "HEADER",
23
+ "HR",
24
+ "LI",
25
+ "MAIN",
26
+ "NAV",
27
+ "OL",
28
+ "P",
29
+ "PRE",
30
+ "SECTION",
31
+ "TABLE",
32
+ "TD",
33
+ "TH",
34
+ "UL",
35
+ "DETAILS",
36
+ "SUMMARY",
37
+ "DIALOG"
38
+ ]);
39
+ const isBlockElement = (element) => {
40
+ if (blockElements.has(element.tagName.toUpperCase())) {
41
+ return true;
42
+ }
43
+ if (element.tagName.toUpperCase() === "A" && element instanceof HTMLElement) {
44
+ const display = window.getComputedStyle(element).display;
45
+ return display === "block" || display === "flex" || display === "grid";
46
+ }
47
+ return false;
48
+ };
49
+ const containsBlockElements = (element) => {
50
+ for (const child of element.children) {
51
+ if (isBlockElement(child)) {
52
+ return true;
53
+ }
54
+ if (child instanceof HTMLElement && containsBlockElements(child)) {
55
+ return true;
56
+ }
57
+ }
58
+ return false;
59
+ };
60
+ const getCleanText = (element) => {
61
+ return element.textContent?.trim() || "";
62
+ };
63
+ const traverse = (element, results) => {
64
+ if (element.tagName === "SCRIPT" || element.tagName === "STYLE") {
65
+ return;
66
+ }
67
+ if (isBlockElement(element)) {
68
+ if (!containsBlockElements(element)) {
69
+ const text = getCleanText(element);
70
+ if (text) {
71
+ results.push({
72
+ text,
73
+ element
74
+ });
75
+ }
76
+ } else {
77
+ for (const child of element.children) {
78
+ if (child instanceof HTMLElement) {
79
+ traverse(child, results);
80
+ }
81
+ }
82
+ }
83
+ } else {
84
+ for (const child of element.children) {
85
+ if (child instanceof HTMLElement) {
86
+ traverse(child, results);
87
+ }
88
+ }
89
+ }
90
+ };
91
+ export function collectTextElements(rootElement) {
92
+ const results = [];
93
+ traverse(rootElement, results);
94
+ return results;
95
+ }
@@ -0,0 +1,3 @@
1
+ type NormalizeToArray<T> = undefined | null | T | T[] | Promise<T | T[] | undefined | null>;
2
+ export declare function normalizeToArray<T>(input: NormalizeToArray<T>): Promise<T[]>;
3
+ export {};
@@ -0,0 +1,13 @@
1
+ export async function normalizeToArray(input) {
2
+ if (input === null || input === void 0) {
3
+ return [];
4
+ }
5
+ if (input instanceof Promise) {
6
+ const resolved = await input;
7
+ if (resolved === null || resolved === void 0) {
8
+ return [];
9
+ }
10
+ return Array.isArray(resolved) ? resolved : [resolved];
11
+ }
12
+ return Array.isArray(input) ? input : [input];
13
+ }
@@ -0,0 +1,2 @@
1
+ import { defineAnalyzer } from './defineAnalyzer.js';
2
+ export { defineAnalyzer };
@@ -0,0 +1,2 @@
1
+ import { defineAnalyzer } from "./defineAnalyzer.js";
2
+ export { defineAnalyzer };
@@ -0,0 +1,2 @@
1
+ declare const _default: (options?: object | undefined) => import("./types.js").Analyzer;
2
+ export default _default;
@@ -0,0 +1,165 @@
1
+ import { defineAnalyzer } from "./defineAnalyzer.js";
2
+ import { TextReadability } from "@lunarisapp/readability";
3
+ function isSupportedLangcode(v) {
4
+ if (v === "en" || v === "de" || v === "fr" || v === "it") {
5
+ return true;
6
+ }
7
+ return false;
8
+ }
9
+ const LIX_BANDS = { easyMax: 40, okMax: 59 };
10
+ const CLI_HARD_MIN = 12;
11
+ const ARI_HARD_MIN = 12;
12
+ const GULPEASE_BANDS = { easyMin: 80, okMin: 60 };
13
+ const MIN_WORDS_FOR_CONFIDENCE = 30;
14
+ function mapLang(langcode) {
15
+ const lc = (langcode || "").toLowerCase();
16
+ if (lc.startsWith("de")) return "de_CH";
17
+ if (lc.startsWith("fr")) return "fr";
18
+ if (lc.startsWith("it")) return "it";
19
+ return "en_GB";
20
+ }
21
+ function segmentWords(text) {
22
+ if ("Segmenter" in Intl) {
23
+ const seg = new Intl.Segmenter(void 0, { granularity: "word" });
24
+ const out = [];
25
+ for (const s of seg.segment(text)) {
26
+ if (s.isWordLike)
27
+ out.push(text.slice(s.index, s.index + s.segment.length));
28
+ }
29
+ return out;
30
+ }
31
+ return text.match(/\p{Letter}+(?:['’]\p{Letter}+)?/gu) ?? [];
32
+ }
33
+ function countSentences(text) {
34
+ const m = text.match(/[.!?…]+["')\]]*(\s+|$)/g);
35
+ if (m?.length) return m.length;
36
+ return /\p{Letter}/u.test(text) ? 1 : 0;
37
+ }
38
+ function toBand(lang, scores) {
39
+ const { lix, cli, ari, gulpease } = scores;
40
+ if (typeof lix === "number") {
41
+ if (lix <= LIX_BANDS.easyMax) return "easy";
42
+ if (lix <= LIX_BANDS.okMax) return "ok";
43
+ }
44
+ if (lang === "it" && typeof gulpease === "number") {
45
+ if (gulpease >= GULPEASE_BANDS.easyMin) return "easy";
46
+ if (gulpease >= GULPEASE_BANDS.okMin) return "ok";
47
+ return "hard";
48
+ }
49
+ const hardVotes = (typeof cli === "number" && cli >= CLI_HARD_MIN ? 1 : 0) + (typeof ari === "number" && ari >= ARI_HARD_MIN ? 1 : 0);
50
+ if (hardVotes >= 1) return "hard";
51
+ return "ok";
52
+ }
53
+ function impactFor(lix) {
54
+ if (lix == null) return "moderate";
55
+ if (lix >= 70) return "critical";
56
+ if (lix >= 60) return "serious";
57
+ if (lix >= 50) return "moderate";
58
+ return "minor";
59
+ }
60
+ function summarizeImpact(nodes) {
61
+ const order = ["minor", "moderate", "serious", "critical"];
62
+ let maxIdx = -1;
63
+ for (const n of nodes) {
64
+ if (!n.impact) continue;
65
+ const i = order.indexOf(n.impact);
66
+ if (i > maxIdx) maxIdx = i;
67
+ }
68
+ return maxIdx >= 0 ? order[maxIdx] : void 0;
69
+ }
70
+ function format(n, d = 1) {
71
+ return typeof n === "number" && Number.isFinite(n) ? n.toFixed(d) : "\u2014";
72
+ }
73
+ function analyzeReadability(tr, blocks, langcode, $t) {
74
+ const lang = langcode ?? "en";
75
+ const nodes = [];
76
+ for (const b of blocks) {
77
+ const text = (b.text || "").trim();
78
+ if (!text) continue;
79
+ const words = segmentWords(text);
80
+ if (words.length < MIN_WORDS_FOR_CONFIDENCE) continue;
81
+ const sentences = Math.max(1, countSentences(text));
82
+ const avgSentLen = words.length / sentences;
83
+ const lix = safe(() => tr.lix(text));
84
+ const cli = safe(() => tr.colemanLiauIndex(text));
85
+ const ari = safe(() => tr.automatedReadabilityIndex(text));
86
+ const gulpease = lang === "it" ? safe(() => tr.gulpeaseIndex(text)) : void 0;
87
+ const band = toBand(lang, { lix, cli, ari, gulpease });
88
+ if (band !== "hard") continue;
89
+ const parts = [];
90
+ parts.push(
91
+ $t("analyzerReadabiliyHardToRead", `Hard to read (@lang).`).replace(
92
+ "@lang",
93
+ lang.toUpperCase()
94
+ )
95
+ );
96
+ if (lix != null) parts.push(`LIX ${format(lix)}`);
97
+ if (lang === "it" && gulpease != null)
98
+ parts.push(`Gulpease ${format(gulpease)}`);
99
+ if (cli != null) parts.push(`CLI ${format(cli)}`);
100
+ if (avgSentLen > 25) {
101
+ parts.push(
102
+ $t(
103
+ "analyzerReadabiliyAverageSentenceLength",
104
+ `Average sentence length @length \u2192 split sentences.`
105
+ ).replace("@length", format(avgSentLen))
106
+ );
107
+ } else {
108
+ parts.push(
109
+ $t(
110
+ "analyzerReadabiliyShorterSentences",
111
+ `Consider shorter sentences and simpler wording.`
112
+ )
113
+ );
114
+ }
115
+ nodes.push({
116
+ description: parts.join(" \xB7 "),
117
+ impact: impactFor(lix),
118
+ targets: [b.element]
119
+ });
120
+ }
121
+ return {
122
+ id: "low-readability",
123
+ title: $t("analyzerReadabiliyTitle", "Text readability issues"),
124
+ category: "text",
125
+ description: $t(
126
+ "analyzerReadabiliyDescription",
127
+ "Avoid texts that are hard to read."
128
+ ),
129
+ link: "https://en.wikipedia.org/wiki/Readability",
130
+ status: nodes.length ? "violation" : "pass",
131
+ nodes,
132
+ impact: summarizeImpact(nodes)
133
+ };
134
+ }
135
+ function safe(fn) {
136
+ try {
137
+ const n = fn();
138
+ return Number.isFinite(n) ? n : void 0;
139
+ } catch {
140
+ return void 0;
141
+ }
142
+ }
143
+ export default defineAnalyzer(() => {
144
+ let textReadability = null;
145
+ return {
146
+ id: "readability",
147
+ init: function(context) {
148
+ textReadability = new TextReadability({
149
+ lang: mapLang(context.langcode),
150
+ cache: true
151
+ });
152
+ },
153
+ run(context) {
154
+ if (!isSupportedLangcode(context.langcode)) {
155
+ return;
156
+ }
157
+ return analyzeReadability(
158
+ textReadability,
159
+ context.getTextElements(),
160
+ context.langcode,
161
+ context.$t
162
+ );
163
+ }
164
+ };
165
+ });
@@ -0,0 +1,44 @@
1
+ import type { AnalyzerContext } from './helpers/Context.js';
2
+ export type AnalyzeStatus = 'pass' | 'incomplete' | 'inapplicable' | 'violation';
3
+ export type AnalyzeImpact = 'minor' | 'moderate' | 'serious' | 'critical';
4
+ export type AnalyzeCategory = 'accessibility' | 'seo' | 'text' | 'content';
5
+ export type AnalyzeNodeTarget = string | HTMLElement | {
6
+ uuid: string;
7
+ };
8
+ export type AnalyzeNode = {
9
+ description?: string;
10
+ impact?: AnalyzeImpact;
11
+ /**
12
+ * An array of either:
13
+ * - string: a valid selector
14
+ * - HTMLElement: the DOM node
15
+ * - object: An object containing the UUID of a block
16
+ */
17
+ targets: AnalyzeNodeTarget | AnalyzeNodeTarget[];
18
+ };
19
+ export type AnalyzeResult = {
20
+ id: string;
21
+ title: string;
22
+ category: AnalyzeCategory;
23
+ description: string;
24
+ link?: string;
25
+ status: AnalyzeStatus;
26
+ nodes: AnalyzeNode | AnalyzeNode[];
27
+ impact?: AnalyzeImpact;
28
+ /**
29
+ * If true, the total summary score will be calculated for each target element.
30
+ */
31
+ scoreTargets?: boolean;
32
+ };
33
+ export type AnalyzeResultMapped = AnalyzeResult & {
34
+ plugin: string;
35
+ };
36
+ export type Analyzer = {
37
+ id: string;
38
+ /**
39
+ * If true, the raw page (without editor UI) is required for this analyzer.
40
+ */
41
+ requireRawPage?: boolean;
42
+ init?: (context: AnalyzerContext) => void | Promise<void>;
43
+ run: (context: AnalyzerContext) => undefined | null | AnalyzeResult | AnalyzeResult[] | Promise<undefined | null | AnalyzeResult | AnalyzeResult[]>;
44
+ };
@@ -0,0 +1,5 @@
1
+ import type { AnalyzeCategory, AnalyzeStatus } from './analyzers/types.js';
2
+ export declare function useAnalyzeHelper(): {
3
+ getCategoryLabel: (category: AnalyzeCategory) => string;
4
+ getStatusLabel: (status: AnalyzeStatus) => string;
5
+ };
@@ -0,0 +1,28 @@
1
+ import { useBlokkli } from "#imports";
2
+ export function useAnalyzeHelper() {
3
+ const { $t } = useBlokkli();
4
+ function getCategoryLabel(category) {
5
+ if (category === "accessibility") {
6
+ return $t("analyzeCategoryAccessibility", "Accessibility");
7
+ } else if (category === "seo") {
8
+ return $t("analyzeCategorySeo", "SEO");
9
+ } else if (category === "content") {
10
+ return $t("analyzeCategoryContent", "Content");
11
+ }
12
+ return $t("analyzeCategoryText", "Text");
13
+ }
14
+ function getStatusLabel(status) {
15
+ if (status === "pass") {
16
+ return $t("analyzeStatusPass", "Pass");
17
+ } else if (status === "incomplete") {
18
+ return $t("analyzeStatusIncomplete", "Incomplete");
19
+ } else if (status === "violation") {
20
+ return $t("analyzeStatusViolation", "Violation");
21
+ }
22
+ return $t("analyzeStatusInapplicable", "Inapplicable");
23
+ }
24
+ return {
25
+ getCategoryLabel,
26
+ getStatusLabel
27
+ };
28
+ }