@erudit-js/prose 3.0.0-dev.25

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 (355) hide show
  1. package/dist/app/appElement.d.ts +19 -0
  2. package/dist/app/appElement.js +12 -0
  3. package/dist/app/component.d.ts +6 -0
  4. package/dist/app/component.js +6 -0
  5. package/dist/app/composables/anchor.d.ts +16 -0
  6. package/dist/app/composables/anchor.js +89 -0
  7. package/dist/app/composables/appElement.d.ts +4 -0
  8. package/dist/app/composables/appElement.js +16 -0
  9. package/dist/app/composables/context.d.ts +22 -0
  10. package/dist/app/composables/context.js +5 -0
  11. package/dist/app/composables/elementIcon.d.ts +3 -0
  12. package/dist/app/composables/elementIcon.js +5 -0
  13. package/dist/app/composables/formatText.d.ts +1 -0
  14. package/dist/app/composables/formatText.js +5 -0
  15. package/dist/app/composables/language.d.ts +8 -0
  16. package/dist/app/composables/language.js +13 -0
  17. package/dist/app/composables/storage.d.ts +5 -0
  18. package/dist/app/composables/storage.js +23 -0
  19. package/dist/app/default/Inliners.vue +11 -0
  20. package/dist/app/default/Mix.vue +11 -0
  21. package/dist/app/default/Text.vue +21 -0
  22. package/dist/app/icon.d.ts +5 -0
  23. package/dist/app/icon.js +7 -0
  24. package/dist/app/index.d.ts +18 -0
  25. package/dist/app/index.js +18 -0
  26. package/dist/app/language/element.d.ts +10 -0
  27. package/dist/app/language/element.js +12 -0
  28. package/dist/app/language/list/en.d.ts +3 -0
  29. package/dist/app/language/list/en.js +5 -0
  30. package/dist/app/language/list/ru.d.ts +3 -0
  31. package/dist/app/language/list/ru.js +5 -0
  32. package/dist/app/language/prose.d.ts +9 -0
  33. package/dist/app/language/prose.js +4 -0
  34. package/dist/app/shared/Prose.vue +36 -0
  35. package/dist/app/shared/Render.vue +51 -0
  36. package/dist/app/shared/assets/block.svg +3 -0
  37. package/dist/app/shared/assets/check.svg +3 -0
  38. package/dist/app/shared/assets/inliner.svg +3 -0
  39. package/dist/app/shared/assets/plus.svg +3 -0
  40. package/dist/app/shared/assets/share.svg +3 -0
  41. package/dist/app/shared/block/AsideMenu.vue +44 -0
  42. package/dist/app/shared/block/AsideMenuButton.vue +53 -0
  43. package/dist/app/shared/block/AsideMenuCopyLink.vue +40 -0
  44. package/dist/app/shared/block/AsideMenuSeparator.vue +3 -0
  45. package/dist/app/shared/block/Block.vue +270 -0
  46. package/dist/app/shared/inliner/Inliner.vue +11 -0
  47. package/dist/app/shared/invert.d.ts +2 -0
  48. package/dist/app/shared/invert.js +2 -0
  49. package/dist/app/shared/photoswipe/composable.d.ts +9 -0
  50. package/dist/app/shared/photoswipe/composable.js +68 -0
  51. package/dist/app/shared/photoswipe/style.css +26 -0
  52. package/dist/context.d.ts +4 -0
  53. package/dist/context.js +1 -0
  54. package/dist/coreElement.d.ts +10 -0
  55. package/dist/coreElement.js +6 -0
  56. package/dist/elements/accent/Accent.vue +92 -0
  57. package/dist/elements/accent/AccentColumnSection.vue +61 -0
  58. package/dist/elements/accent/AccentRowSections.vue +65 -0
  59. package/dist/elements/accent/app.d.ts +21 -0
  60. package/dist/elements/accent/app.js +16 -0
  61. package/dist/elements/accent/core.d.ts +340 -0
  62. package/dist/elements/accent/core.js +175 -0
  63. package/dist/elements/callout/Callout.vue +88 -0
  64. package/dist/elements/callout/_global.d.ts +15 -0
  65. package/dist/elements/callout/app.d.ts +9 -0
  66. package/dist/elements/callout/app.js +11 -0
  67. package/dist/elements/callout/core.d.ts +80 -0
  68. package/dist/elements/callout/core.js +37 -0
  69. package/dist/elements/callout/icon.svg +3 -0
  70. package/dist/elements/callout/languages/en.d.ts +4 -0
  71. package/dist/elements/callout/languages/en.js +2 -0
  72. package/dist/elements/callout/languages/ru.d.ts +4 -0
  73. package/dist/elements/callout/languages/ru.js +2 -0
  74. package/dist/elements/callout/storage.d.ts +2 -0
  75. package/dist/elements/callout/storage.js +5 -0
  76. package/dist/elements/caption/Caption.vue +47 -0
  77. package/dist/elements/caption/_global.d.ts +26 -0
  78. package/dist/elements/caption/app.d.ts +9 -0
  79. package/dist/elements/caption/app.js +6 -0
  80. package/dist/elements/caption/core.d.ts +114 -0
  81. package/dist/elements/caption/core.js +61 -0
  82. package/dist/elements/details/Details.vue +51 -0
  83. package/dist/elements/details/_global.d.ts +27 -0
  84. package/dist/elements/details/app.d.ts +9 -0
  85. package/dist/elements/details/app.js +11 -0
  86. package/dist/elements/details/core.d.ts +68 -0
  87. package/dist/elements/details/core.js +30 -0
  88. package/dist/elements/details/icon.svg +3 -0
  89. package/dist/elements/details/languages/en.d.ts +4 -0
  90. package/dist/elements/details/languages/en.js +2 -0
  91. package/dist/elements/details/languages/ru.d.ts +4 -0
  92. package/dist/elements/details/languages/ru.js +2 -0
  93. package/dist/elements/diagram/Diagram.vue +364 -0
  94. package/dist/elements/diagram/_global.d.ts +19 -0
  95. package/dist/elements/diagram/app.d.ts +30 -0
  96. package/dist/elements/diagram/app.js +11 -0
  97. package/dist/elements/diagram/core.d.ts +194 -0
  98. package/dist/elements/diagram/core.js +36 -0
  99. package/dist/elements/diagram/icon.svg +3 -0
  100. package/dist/elements/diagram/languages/en.d.ts +4 -0
  101. package/dist/elements/diagram/languages/en.js +2 -0
  102. package/dist/elements/diagram/languages/ru.d.ts +4 -0
  103. package/dist/elements/diagram/languages/ru.js +2 -0
  104. package/dist/elements/emphasis/Emphasis.vue +25 -0
  105. package/dist/elements/emphasis/_global.d.ts +18 -0
  106. package/dist/elements/emphasis/app.d.ts +9 -0
  107. package/dist/elements/emphasis/app.js +6 -0
  108. package/dist/elements/emphasis/core.d.ts +90 -0
  109. package/dist/elements/emphasis/core.js +32 -0
  110. package/dist/elements/flex/Flex.vue +32 -0
  111. package/dist/elements/flex/_global.d.ts +23 -0
  112. package/dist/elements/flex/app.d.ts +9 -0
  113. package/dist/elements/flex/app.js +11 -0
  114. package/dist/elements/flex/core.d.ts +67 -0
  115. package/dist/elements/flex/core.js +28 -0
  116. package/dist/elements/flex/icon.svg +3 -0
  117. package/dist/elements/flex/languages/en.d.ts +4 -0
  118. package/dist/elements/flex/languages/en.js +2 -0
  119. package/dist/elements/flex/languages/ru.d.ts +4 -0
  120. package/dist/elements/flex/languages/ru.js +2 -0
  121. package/dist/elements/gallery/Gallery.vue +56 -0
  122. package/dist/elements/gallery/_global.d.ts +18 -0
  123. package/dist/elements/gallery/app.d.ts +23 -0
  124. package/dist/elements/gallery/app.js +11 -0
  125. package/dist/elements/gallery/core.d.ts +138 -0
  126. package/dist/elements/gallery/core.js +21 -0
  127. package/dist/elements/gallery/icon.svg +3 -0
  128. package/dist/elements/gallery/languages/en.d.ts +4 -0
  129. package/dist/elements/gallery/languages/en.js +2 -0
  130. package/dist/elements/gallery/languages/ru.d.ts +4 -0
  131. package/dist/elements/gallery/languages/ru.js +2 -0
  132. package/dist/elements/heading/Heading.vue +44 -0
  133. package/dist/elements/heading/_global.d.ts +45 -0
  134. package/dist/elements/heading/app.d.ts +9 -0
  135. package/dist/elements/heading/app.js +11 -0
  136. package/dist/elements/heading/core.d.ts +108 -0
  137. package/dist/elements/heading/core.js +52 -0
  138. package/dist/elements/heading/icon.svg +3 -0
  139. package/dist/elements/heading/languages/en.d.ts +4 -0
  140. package/dist/elements/heading/languages/en.js +2 -0
  141. package/dist/elements/heading/languages/ru.d.ts +4 -0
  142. package/dist/elements/heading/languages/ru.js +2 -0
  143. package/dist/elements/horizontalLine/HorizontalLine.vue +6 -0
  144. package/dist/elements/horizontalLine/_global.d.ts +17 -0
  145. package/dist/elements/horizontalLine/app.d.ts +9 -0
  146. package/dist/elements/horizontalLine/app.js +6 -0
  147. package/dist/elements/horizontalLine/core.d.ts +54 -0
  148. package/dist/elements/horizontalLine/core.js +19 -0
  149. package/dist/elements/image/Image.vue +15 -0
  150. package/dist/elements/image/ImageElement.vue +80 -0
  151. package/dist/elements/image/_global.d.ts +18 -0
  152. package/dist/elements/image/app.d.ts +16 -0
  153. package/dist/elements/image/app.js +11 -0
  154. package/dist/elements/image/core.d.ts +136 -0
  155. package/dist/elements/image/core.js +44 -0
  156. package/dist/elements/image/icon.svg +3 -0
  157. package/dist/elements/image/languages/en.d.ts +4 -0
  158. package/dist/elements/image/languages/en.js +2 -0
  159. package/dist/elements/image/languages/ru.d.ts +4 -0
  160. package/dist/elements/image/languages/ru.js +2 -0
  161. package/dist/elements/image/storage.d.ts +6 -0
  162. package/dist/elements/image/storage.js +23 -0
  163. package/dist/elements/lineBreak/LineBreak.vue +3 -0
  164. package/dist/elements/lineBreak/_global.d.ts +18 -0
  165. package/dist/elements/lineBreak/app.d.ts +9 -0
  166. package/dist/elements/lineBreak/app.js +6 -0
  167. package/dist/elements/lineBreak/core.d.ts +54 -0
  168. package/dist/elements/lineBreak/core.js +19 -0
  169. package/dist/elements/link/BlockLink.vue +111 -0
  170. package/dist/elements/link/Link.vue +93 -0
  171. package/dist/elements/link/core.d.ts +13 -0
  172. package/dist/elements/link/core.js +12 -0
  173. package/dist/elements/link/dependency/_global.d.ts +47 -0
  174. package/dist/elements/link/dependency/app.d.ts +16 -0
  175. package/dist/elements/link/dependency/app.js +14 -0
  176. package/dist/elements/link/dependency/core.d.ts +125 -0
  177. package/dist/elements/link/dependency/core.js +51 -0
  178. package/dist/elements/link/dependency/languages/en.d.ts +4 -0
  179. package/dist/elements/link/dependency/languages/en.js +2 -0
  180. package/dist/elements/link/dependency/languages/ru.d.ts +4 -0
  181. package/dist/elements/link/dependency/languages/ru.js +2 -0
  182. package/dist/elements/link/icon.svg +3 -0
  183. package/dist/elements/link/reference/_global.d.ts +49 -0
  184. package/dist/elements/link/reference/app.d.ts +16 -0
  185. package/dist/elements/link/reference/app.js +14 -0
  186. package/dist/elements/link/reference/core.d.ts +120 -0
  187. package/dist/elements/link/reference/core.js +35 -0
  188. package/dist/elements/link/reference/languages/en.d.ts +4 -0
  189. package/dist/elements/link/reference/languages/en.js +2 -0
  190. package/dist/elements/link/reference/languages/ru.d.ts +4 -0
  191. package/dist/elements/link/reference/languages/ru.js +2 -0
  192. package/dist/elements/link/storage.d.ts +34 -0
  193. package/dist/elements/link/storage.js +20 -0
  194. package/dist/elements/list/List.vue +63 -0
  195. package/dist/elements/list/_global.d.ts +50 -0
  196. package/dist/elements/list/app.d.ts +16 -0
  197. package/dist/elements/list/app.js +11 -0
  198. package/dist/elements/list/core.d.ts +169 -0
  199. package/dist/elements/list/core.js +49 -0
  200. package/dist/elements/list/icon.svg +3 -0
  201. package/dist/elements/list/languages/en.d.ts +4 -0
  202. package/dist/elements/list/languages/en.js +2 -0
  203. package/dist/elements/list/languages/ru.d.ts +4 -0
  204. package/dist/elements/list/languages/ru.js +2 -0
  205. package/dist/elements/math/_global.d.ts +72 -0
  206. package/dist/elements/math/_global.ts +3 -0
  207. package/dist/elements/math/app.d.ts +16 -0
  208. package/dist/elements/math/app.js +20 -0
  209. package/dist/elements/math/block.d.ts +75 -0
  210. package/dist/elements/math/block.js +115 -0
  211. package/dist/elements/math/components/BlockMath.vue +30 -0
  212. package/dist/elements/math/components/InlinerMath.vue +65 -0
  213. package/dist/elements/math/components/Katex.vue +89 -0
  214. package/dist/elements/math/components/MathGroup.vue +39 -0
  215. package/dist/elements/math/core.d.ts +66 -0
  216. package/dist/elements/math/core.js +11 -0
  217. package/dist/elements/math/icon.svg +3 -0
  218. package/dist/elements/math/inliner.d.ts +64 -0
  219. package/dist/elements/math/inliner.js +85 -0
  220. package/dist/elements/math/katex.d.ts +8 -0
  221. package/dist/elements/math/katex.js +18 -0
  222. package/dist/elements/math/languages/en.d.ts +4 -0
  223. package/dist/elements/math/languages/en.js +2 -0
  224. package/dist/elements/math/languages/ru.d.ts +4 -0
  225. package/dist/elements/math/languages/ru.js +2 -0
  226. package/dist/elements/math/macros.d.ts +13 -0
  227. package/dist/elements/math/macros.js +12 -0
  228. package/dist/elements/paragraph/Paragraph.vue +27 -0
  229. package/dist/elements/paragraph/_global.d.ts +27 -0
  230. package/dist/elements/paragraph/app.d.ts +9 -0
  231. package/dist/elements/paragraph/app.js +11 -0
  232. package/dist/elements/paragraph/core.d.ts +67 -0
  233. package/dist/elements/paragraph/core.js +29 -0
  234. package/dist/elements/paragraph/icon.svg +4 -0
  235. package/dist/elements/paragraph/languages/en.d.ts +4 -0
  236. package/dist/elements/paragraph/languages/en.js +2 -0
  237. package/dist/elements/paragraph/languages/ru.d.ts +4 -0
  238. package/dist/elements/paragraph/languages/ru.js +2 -0
  239. package/dist/elements/problem/_global.d.ts +112 -0
  240. package/dist/elements/problem/app.d.ts +30 -0
  241. package/dist/elements/problem/app.js +27 -0
  242. package/dist/elements/problem/assets/actions/answer.svg +3 -0
  243. package/dist/elements/problem/assets/actions/check.svg +3 -0
  244. package/dist/elements/problem/assets/actions/generate.svg +3 -0
  245. package/dist/elements/problem/assets/actions/hint.svg +3 -0
  246. package/dist/elements/problem/assets/actions/note.svg +3 -0
  247. package/dist/elements/problem/assets/actions/solution.svg +3 -0
  248. package/dist/elements/problem/assets/attributes/applied.svg +3 -0
  249. package/dist/elements/problem/assets/attributes/inter.svg +3 -0
  250. package/dist/elements/problem/assets/attributes/method.svg +3 -0
  251. package/dist/elements/problem/assets/attributes/pretty.svg +1 -0
  252. package/dist/elements/problem/assets/icon.svg +3 -0
  253. package/dist/elements/problem/components/Problem.vue +22 -0
  254. package/dist/elements/problem/components/ProblemButton.vue +21 -0
  255. package/dist/elements/problem/components/ProblemContainer.vue +9 -0
  256. package/dist/elements/problem/components/ProblemContent.vue +371 -0
  257. package/dist/elements/problem/components/ProblemExpander.vue +7 -0
  258. package/dist/elements/problem/components/ProblemExpanderSection.vue +58 -0
  259. package/dist/elements/problem/components/ProblemHeader.vue +106 -0
  260. package/dist/elements/problem/components/Problems.vue +87 -0
  261. package/dist/elements/problem/components/SubProblem.vue +14 -0
  262. package/dist/elements/problem/components/expanders/Check.vue +151 -0
  263. package/dist/elements/problem/components/expanders/Checks.vue +83 -0
  264. package/dist/elements/problem/components/expanders/DefaultPlusSections.vue +38 -0
  265. package/dist/elements/problem/components/expanders/Hint.vue +26 -0
  266. package/dist/elements/problem/composables/phrase.d.ts +2 -0
  267. package/dist/elements/problem/composables/phrase.js +7 -0
  268. package/dist/elements/problem/composables/problemScript.d.ts +3 -0
  269. package/dist/elements/problem/composables/problemScript.js +11 -0
  270. package/dist/elements/problem/core.d.ts +248 -0
  271. package/dist/elements/problem/core.js +17 -0
  272. package/dist/elements/problem/languages/en.d.ts +3 -0
  273. package/dist/elements/problem/languages/en.js +24 -0
  274. package/dist/elements/problem/languages/ru.d.ts +3 -0
  275. package/dist/elements/problem/languages/ru.js +24 -0
  276. package/dist/elements/problem/phrases.d.ts +16 -0
  277. package/dist/elements/problem/phrases.js +1 -0
  278. package/dist/elements/problem/problem.d.ts +106 -0
  279. package/dist/elements/problem/problem.js +37 -0
  280. package/dist/elements/problem/problemContent.d.ts +439 -0
  281. package/dist/elements/problem/problemContent.js +236 -0
  282. package/dist/elements/problem/problemScript.d.ts +26 -0
  283. package/dist/elements/problem/problemScript.js +79 -0
  284. package/dist/elements/problem/problems.d.ts +212 -0
  285. package/dist/elements/problem/problems.js +74 -0
  286. package/dist/elements/problem/rng.d.ts +18 -0
  287. package/dist/elements/problem/rng.js +76 -0
  288. package/dist/elements/problem/shared.d.ts +28 -0
  289. package/dist/elements/problem/shared.js +42 -0
  290. package/dist/elements/problem/step.d.ts +5 -0
  291. package/dist/elements/problem/step.js +13 -0
  292. package/dist/elements/problem/storage.d.ts +5 -0
  293. package/dist/elements/problem/storage.js +8 -0
  294. package/dist/elements/table/Table.vue +104 -0
  295. package/dist/elements/table/_global.d.ts +36 -0
  296. package/dist/elements/table/app.d.ts +30 -0
  297. package/dist/elements/table/app.js +11 -0
  298. package/dist/elements/table/core.d.ts +324 -0
  299. package/dist/elements/table/core.js +65 -0
  300. package/dist/elements/table/icon.svg +3 -0
  301. package/dist/elements/table/languages/en.d.ts +4 -0
  302. package/dist/elements/table/languages/en.js +2 -0
  303. package/dist/elements/table/languages/ru.d.ts +4 -0
  304. package/dist/elements/table/languages/ru.js +2 -0
  305. package/dist/elements/video/Video.vue +109 -0
  306. package/dist/elements/video/_global.d.ts +18 -0
  307. package/dist/elements/video/app.d.ts +16 -0
  308. package/dist/elements/video/app.js +11 -0
  309. package/dist/elements/video/core.d.ts +128 -0
  310. package/dist/elements/video/core.js +43 -0
  311. package/dist/elements/video/icon.svg +3 -0
  312. package/dist/elements/video/languages/en.d.ts +4 -0
  313. package/dist/elements/video/languages/en.js +2 -0
  314. package/dist/elements/video/languages/ru.d.ts +4 -0
  315. package/dist/elements/video/languages/ru.js +2 -0
  316. package/dist/elements/video/storage.d.ts +2 -0
  317. package/dist/elements/video/storage.js +5 -0
  318. package/dist/include.d.ts +6 -0
  319. package/dist/include.js +42 -0
  320. package/dist/index.d.ts +15 -0
  321. package/dist/index.js +15 -0
  322. package/dist/rawElement.d.ts +6 -0
  323. package/dist/rawElement.js +3 -0
  324. package/dist/resolve.d.ts +20 -0
  325. package/dist/resolve.js +99 -0
  326. package/dist/resolveStep.d.ts +9 -0
  327. package/dist/resolveStep.js +3 -0
  328. package/dist/shared/filePath.d.ts +5 -0
  329. package/dist/shared/filePath.js +11 -0
  330. package/dist/shared/invert.d.ts +1 -0
  331. package/dist/shared/invert.js +1 -0
  332. package/dist/shared/paragraphWrap.d.ts +3 -0
  333. package/dist/shared/paragraphWrap.js +15 -0
  334. package/dist/shared/photoswipe.d.ts +10 -0
  335. package/dist/shared/photoswipe.js +10 -0
  336. package/dist/slugify/index.d.ts +1 -0
  337. package/dist/slugify/index.js +12 -0
  338. package/dist/slugify/languages/en.d.ts +2 -0
  339. package/dist/slugify/languages/en.js +3 -0
  340. package/dist/slugify/languages/ru.d.ts +2 -0
  341. package/dist/slugify/languages/ru.js +38 -0
  342. package/dist/snippet.d.ts +66 -0
  343. package/dist/snippet.js +57 -0
  344. package/dist/tag.d.ts +22 -0
  345. package/dist/tag.js +20 -0
  346. package/dist/title.d.ts +8 -0
  347. package/dist/title.js +6 -0
  348. package/dist/toc.d.ts +34 -0
  349. package/dist/toc.js +52 -0
  350. package/dist/utils/case.d.ts +4 -0
  351. package/dist/utils/case.js +8 -0
  352. package/dist/utils/docs.d.ts +1 -0
  353. package/dist/utils/docs.js +22 -0
  354. package/package.json +48 -0
  355. package/types.d.ts +4 -0
@@ -0,0 +1,65 @@
1
+ <script lang="ts" setup>
2
+ import { ref, watchEffect } from 'vue';
3
+ import type { ProseElement } from '@jsprose/core';
4
+
5
+ import type { AccentSectionSchema } from './core.js';
6
+ import { useArrayContainsAnchor } from '../../app/composables/anchor.js';
7
+ import Render from '../../app/shared/Render.vue';
8
+
9
+ const { sections } = defineProps<{
10
+ sectionTitles: string[];
11
+ sections: ProseElement<AccentSectionSchema>[];
12
+ }>();
13
+
14
+ const openedSectionI = ref<number>();
15
+ const containsAnchorI = useArrayContainsAnchor(sections);
16
+
17
+ watchEffect(() => {
18
+ if (containsAnchorI.value !== undefined) {
19
+ openedSectionI.value = containsAnchorI.value;
20
+ }
21
+ });
22
+ </script>
23
+
24
+ <template>
25
+ <div
26
+ :class="[
27
+ `relative flex flex-wrap items-center gap-(--proseAsideWidth)
28
+ p-(--proseAsideWidth) pt-0`,
29
+ ]"
30
+ >
31
+ <button
32
+ v-for="(_section, i) of sections"
33
+ @click="openedSectionI = i === openedSectionI ? undefined : i"
34
+ :class="[
35
+ `text-main-sm micro:py-2 micro:px-2.5 cursor-pointer rounded-xl
36
+ px-2 py-1.5 font-medium transition-[color,background]`,
37
+ i === openedSectionI
38
+ ? 'bg-(--accentText)/80 text-white'
39
+ : `hocus:bg-(--accentText)/30 bg-(--accentText)/15
40
+ text-(--accentText)`,
41
+ ]"
42
+ >
43
+ {{ sectionTitles[i] }}
44
+ </button>
45
+ <div
46
+ :class="[
47
+ `absolute bottom-0 left-0 w-full border-b
48
+ border-(--accentBorder) transition-[border]`,
49
+ openedSectionI === undefined ? 'opacity-0' : 'opacity-100',
50
+ ]"
51
+ ></div>
52
+ </div>
53
+ <Suspense>
54
+ <div
55
+ v-if="openedSectionI !== undefined"
56
+ :key="openedSectionI"
57
+ class="py-(--proseAsideWidth)"
58
+ >
59
+ <Render
60
+ v-for="child of sections[openedSectionI].children"
61
+ :element="child"
62
+ />
63
+ </div>
64
+ </Suspense>
65
+ </template>
@@ -0,0 +1,21 @@
1
+ import { type AppElement, type AppElementDefinition } from '../../app/appElement.js';
2
+ import type { ElementLanguagesRaw, ElementPhrases } from '../../app/language/element.js';
3
+ import type { AccentSchema } from './core.js';
4
+ export interface AccentAppOptions {
5
+ colors: {
6
+ text: string;
7
+ background: string;
8
+ border: string;
9
+ };
10
+ }
11
+ export declare function accentSectionNamePhrase<TSectionName extends string>(sectionName: TSectionName): `section_title_${TSectionName}`;
12
+ export type AccentAppDefinition<TAccentSchema extends AccentSchema> = Omit<AppElementDefinition<TAccentSchema>, 'component' | 'createStorage'> & {
13
+ schema: TAccentSchema;
14
+ accent: AccentAppOptions;
15
+ languages: ElementLanguagesRaw<ElementPhrases<{
16
+ [K in ReturnType<typeof accentSectionNamePhrase<TAccentSchema['SectionNames'][number]>>]: string;
17
+ }>>;
18
+ };
19
+ export declare function defineAccentApp<TAccentSchema extends AccentSchema>(accentApp: AccentAppDefinition<TAccentSchema>): AppElement<TAccentSchema> & {
20
+ accent: AccentAppOptions;
21
+ };
@@ -0,0 +1,16 @@
1
+ import { defineEruditProseAppElement } from "../../app/appElement.js";
2
+ export function accentSectionNamePhrase(sectionName) {
3
+ return `section_title_${sectionName}`;
4
+ }
5
+ export function defineAccentApp(accentApp) {
6
+ const appElement = defineEruditProseAppElement({
7
+ schema: accentApp.schema,
8
+ component: () => import("./Accent.vue"),
9
+ icon: accentApp.icon,
10
+ languages: accentApp.languages
11
+ });
12
+ return {
13
+ ...appElement,
14
+ accent: accentApp.accent
15
+ };
16
+ }
@@ -0,0 +1,340 @@
1
+ import { type AnySchema, type BlockSchema, type ProseElement, type TagChildren } from '@jsprose/core';
2
+ import { type UppercaseFirst } from '../../utils/case.js';
3
+ export interface AccentDefinition<TName extends string, TSectionNames extends readonly string[]> {
4
+ name: TName;
5
+ sectionNames: TSectionNames;
6
+ }
7
+ export type AccentMainSchema = Omit<BlockSchema, 'Data' | 'linkable'> & {
8
+ linkable: false;
9
+ Data: undefined;
10
+ };
11
+ export type AccentSectionSchema = Omit<BlockSchema, 'Data' | 'linkable'> & {
12
+ linkable: false;
13
+ Data: {
14
+ type: 'named';
15
+ name: string;
16
+ } | {
17
+ type: 'manual';
18
+ title: string;
19
+ };
20
+ };
21
+ export type AccentSchema = Omit<BlockSchema, 'Data' | 'Children' | 'linkable'> & {
22
+ linkable: true;
23
+ Data: {
24
+ title: string;
25
+ layout: 'column' | 'row';
26
+ };
27
+ Children: (AccentMainSchema | AccentSectionSchema)[];
28
+ SectionNames: string[];
29
+ };
30
+ export declare function isAccentElement(element: ProseElement<AnySchema>): element is ProseElement<AccentSchema>;
31
+ export declare function isAccentMainElement(element: ProseElement<AnySchema>): element is ProseElement<AccentMainSchema>;
32
+ export declare function isAccentSectionElement(element: ProseElement<AnySchema>): element is ProseElement<AccentSectionSchema>;
33
+ export declare function defineAccentCore<const I extends string, const J extends string[], const TDefinition extends AccentDefinition<I, J>>(definition: TDefinition): {
34
+ _sectionNames: TDefinition["sectionNames"];
35
+ accent: {
36
+ schema: {
37
+ name: `accent_${TDefinition["name"]}`;
38
+ type: "block";
39
+ linkable: true;
40
+ Data: {
41
+ title: string;
42
+ layout: "column" | "row";
43
+ };
44
+ Storage: undefined;
45
+ Children: [{
46
+ name: `accentMain_${TDefinition["name"]}`;
47
+ type: "block";
48
+ linkable: false;
49
+ Data: undefined;
50
+ Storage: undefined;
51
+ Children: AnySchema[];
52
+ }, ...{
53
+ name: `accentSection_${TDefinition["name"]}`;
54
+ type: "block";
55
+ linkable: false;
56
+ Data: {
57
+ type: "named";
58
+ name: string;
59
+ } | {
60
+ type: "manual";
61
+ title: string;
62
+ };
63
+ Storage: undefined;
64
+ Children: AnySchema[];
65
+ }[]];
66
+ } & {
67
+ SectionNames: TDefinition["sectionNames"];
68
+ };
69
+ tag: import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}`, {
70
+ name: `accent_${TDefinition["name"]}`;
71
+ type: "block";
72
+ linkable: true;
73
+ Data: {
74
+ title: string;
75
+ layout: "column" | "row";
76
+ };
77
+ Storage: undefined;
78
+ Children: [{
79
+ name: `accentMain_${TDefinition["name"]}`;
80
+ type: "block";
81
+ linkable: false;
82
+ Data: undefined;
83
+ Storage: undefined;
84
+ Children: AnySchema[];
85
+ }, ...{
86
+ name: `accentSection_${TDefinition["name"]}`;
87
+ type: "block";
88
+ linkable: false;
89
+ Data: {
90
+ type: "named";
91
+ name: string;
92
+ } | {
93
+ type: "manual";
94
+ title: string;
95
+ };
96
+ Storage: undefined;
97
+ Children: AnySchema[];
98
+ }[]];
99
+ } & {
100
+ SectionNames: TDefinition["sectionNames"];
101
+ }, ({
102
+ title: string;
103
+ } & (({
104
+ row?: true;
105
+ column?: undefined;
106
+ } | {
107
+ row?: undefined;
108
+ column?: true;
109
+ }) & TagChildren)) & import("../../toc.js").ObjPropToc & import("../../snippet.js").ObjPropSnippet & import("../../snippet.js").ObjPropSearch & import("../../snippet.js").ObjPropQuick & import("../../snippet.js").ObjPropSeo>;
110
+ registryItem: import("@jsprose/core").RegistryItem<{
111
+ name: `accent_${TDefinition["name"]}`;
112
+ type: "block";
113
+ linkable: true;
114
+ Data: {
115
+ title: string;
116
+ layout: "column" | "row";
117
+ };
118
+ Storage: undefined;
119
+ Children: [{
120
+ name: `accentMain_${TDefinition["name"]}`;
121
+ type: "block";
122
+ linkable: false;
123
+ Data: undefined;
124
+ Storage: undefined;
125
+ Children: AnySchema[];
126
+ }, ...{
127
+ name: `accentSection_${TDefinition["name"]}`;
128
+ type: "block";
129
+ linkable: false;
130
+ Data: {
131
+ type: "named";
132
+ name: string;
133
+ } | {
134
+ type: "manual";
135
+ title: string;
136
+ };
137
+ Storage: undefined;
138
+ Children: AnySchema[];
139
+ }[]];
140
+ } & {
141
+ SectionNames: TDefinition["sectionNames"];
142
+ }, { [K in `${UppercaseFirst<TDefinition["name"]>}`]: Extract<import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}`, {
143
+ name: `accent_${TDefinition["name"]}`;
144
+ type: "block";
145
+ linkable: true;
146
+ Data: {
147
+ title: string;
148
+ layout: "column" | "row";
149
+ };
150
+ Storage: undefined;
151
+ Children: [{
152
+ name: `accentMain_${TDefinition["name"]}`;
153
+ type: "block";
154
+ linkable: false;
155
+ Data: undefined;
156
+ Storage: undefined;
157
+ Children: AnySchema[];
158
+ }, ...{
159
+ name: `accentSection_${TDefinition["name"]}`;
160
+ type: "block";
161
+ linkable: false;
162
+ Data: {
163
+ type: "named";
164
+ name: string;
165
+ } | {
166
+ type: "manual";
167
+ title: string;
168
+ };
169
+ Storage: undefined;
170
+ Children: AnySchema[];
171
+ }[]];
172
+ } & {
173
+ SectionNames: TDefinition["sectionNames"];
174
+ }, ({
175
+ title: string;
176
+ } & (({
177
+ row?: true;
178
+ column?: undefined;
179
+ } | {
180
+ row?: undefined;
181
+ column?: true;
182
+ }) & TagChildren)) & import("../../toc.js").ObjPropToc & import("../../snippet.js").ObjPropSnippet & import("../../snippet.js").ObjPropSearch & import("../../snippet.js").ObjPropQuick & import("../../snippet.js").ObjPropSeo>, {
183
+ tagName: K;
184
+ }>; }, undefined>;
185
+ };
186
+ main: {
187
+ schema: {
188
+ name: `accentMain_${TDefinition["name"]}`;
189
+ type: "block";
190
+ linkable: false;
191
+ Data: undefined;
192
+ Storage: undefined;
193
+ Children: AnySchema[];
194
+ };
195
+ tag: import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}Main`, {
196
+ name: `accentMain_${TDefinition["name"]}`;
197
+ type: "block";
198
+ linkable: false;
199
+ Data: undefined;
200
+ Storage: undefined;
201
+ Children: AnySchema[];
202
+ }, TagChildren>;
203
+ registryItem: import("@jsprose/core").RegistryItem<{
204
+ name: `accentMain_${TDefinition["name"]}`;
205
+ type: "block";
206
+ linkable: false;
207
+ Data: undefined;
208
+ Storage: undefined;
209
+ Children: AnySchema[];
210
+ }, { [K_1 in `${UppercaseFirst<TDefinition["name"]>}Main`]: Extract<import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}Main`, {
211
+ name: `accentMain_${TDefinition["name"]}`;
212
+ type: "block";
213
+ linkable: false;
214
+ Data: undefined;
215
+ Storage: undefined;
216
+ Children: AnySchema[];
217
+ }, TagChildren>, {
218
+ tagName: K_1;
219
+ }>; }, undefined>;
220
+ };
221
+ section: {
222
+ schema: {
223
+ name: `accentSection_${TDefinition["name"]}`;
224
+ type: "block";
225
+ linkable: false;
226
+ Data: {
227
+ type: "named";
228
+ name: string;
229
+ } | {
230
+ type: "manual";
231
+ title: string;
232
+ };
233
+ Storage: undefined;
234
+ Children: AnySchema[];
235
+ };
236
+ tags: [import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}Section`, {
237
+ name: `accentSection_${TDefinition["name"]}`;
238
+ type: "block";
239
+ linkable: false;
240
+ Data: {
241
+ type: "named";
242
+ name: string;
243
+ } | {
244
+ type: "manual";
245
+ title: string;
246
+ };
247
+ Storage: undefined;
248
+ Children: AnySchema[];
249
+ }, {
250
+ title: string;
251
+ } & TagChildren>, ...{ [K_2 in TDefinition["sectionNames"][number]]: import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}${UppercaseFirst<K_2>}`, {
252
+ name: `accentSection_${TDefinition["name"]}`;
253
+ type: "block";
254
+ linkable: false;
255
+ Data: {
256
+ type: "named";
257
+ name: string;
258
+ } | {
259
+ type: "manual";
260
+ title: string;
261
+ };
262
+ Storage: undefined;
263
+ Children: AnySchema[];
264
+ }, TagChildren>; }[TDefinition["sectionNames"][number]][]];
265
+ registryItem: import("@jsprose/core").RegistryItem<{
266
+ name: `accentSection_${TDefinition["name"]}`;
267
+ type: "block";
268
+ linkable: false;
269
+ Data: {
270
+ type: "named";
271
+ name: string;
272
+ } | {
273
+ type: "manual";
274
+ title: string;
275
+ };
276
+ Storage: undefined;
277
+ Children: AnySchema[];
278
+ }, { [K_3 in (import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}Section`, {
279
+ name: `accentSection_${TDefinition["name"]}`;
280
+ type: "block";
281
+ linkable: false;
282
+ Data: {
283
+ type: "named";
284
+ name: string;
285
+ } | {
286
+ type: "manual";
287
+ title: string;
288
+ };
289
+ Storage: undefined;
290
+ Children: AnySchema[];
291
+ }, {
292
+ title: string;
293
+ } & TagChildren> | { [K_2 in TDefinition["sectionNames"][number]]: import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}${UppercaseFirst<K_2>}`, {
294
+ name: `accentSection_${TDefinition["name"]}`;
295
+ type: "block";
296
+ linkable: false;
297
+ Data: {
298
+ type: "named";
299
+ name: string;
300
+ } | {
301
+ type: "manual";
302
+ title: string;
303
+ };
304
+ Storage: undefined;
305
+ Children: AnySchema[];
306
+ }, TagChildren>; }[TDefinition["sectionNames"][number]])["tagName"]]: Extract<import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}Section`, {
307
+ name: `accentSection_${TDefinition["name"]}`;
308
+ type: "block";
309
+ linkable: false;
310
+ Data: {
311
+ type: "named";
312
+ name: string;
313
+ } | {
314
+ type: "manual";
315
+ title: string;
316
+ };
317
+ Storage: undefined;
318
+ Children: AnySchema[];
319
+ }, {
320
+ title: string;
321
+ } & TagChildren>, {
322
+ tagName: K_3;
323
+ }> | Extract<{ [K_2 in TDefinition["sectionNames"][number]]: import("@jsprose/core").Tag<`${UppercaseFirst<TDefinition["name"]>}${UppercaseFirst<K_2>}`, {
324
+ name: `accentSection_${TDefinition["name"]}`;
325
+ type: "block";
326
+ linkable: false;
327
+ Data: {
328
+ type: "named";
329
+ name: string;
330
+ } | {
331
+ type: "manual";
332
+ title: string;
333
+ };
334
+ Storage: undefined;
335
+ Children: AnySchema[];
336
+ }, TagChildren>; }[TDefinition["sectionNames"][number]], {
337
+ tagName: K_3;
338
+ }>; }, undefined>;
339
+ };
340
+ };
@@ -0,0 +1,175 @@
1
+ import { defineRegistryItem, defineSchema, ensureTagChildren, ensureTagInlinerChildren, isRawElement, PROSE_REGISTRY, ProseError } from "@jsprose/core";
2
+ import { defineEruditTag } from "../../tag.js";
3
+ import { uppercaseFirst } from "../../utils/case.js";
4
+ import { tryParagraphWrap } from "../../shared/paragraphWrap.js";
5
+ function validateTitle(tagName, title) {
6
+ if (!title) {
7
+ throw new ProseError(`<${tagName}> requires non-empty title attribute!`);
8
+ }
9
+ }
10
+ export function isAccentElement(element) {
11
+ return element.schemaName.startsWith("accent_");
12
+ }
13
+ export function isAccentMainElement(element) {
14
+ return element.schemaName.startsWith("accentMain_");
15
+ }
16
+ export function isAccentSectionElement(element) {
17
+ return element.schemaName.startsWith("accentSection_");
18
+ }
19
+ export function defineAccentCore(definition) {
20
+ // Accent name must start with lowercase
21
+ if (!/^[a-z]/.test(definition.name)) {
22
+ throw new ProseError(`
23
+ Invalid accent name "${definition.name}"!
24
+ Accent names should start with lower case letter.
25
+ `.trim());
26
+ }
27
+ for (const sectionName of definition.sectionNames) {
28
+ if (sectionName === "section" || sectionName === "main") {
29
+ throw new ProseError(`Section names "section" and "main" are reserved for accent "${definition.name}"!`);
30
+ }
31
+ // Section name must start with lowercase
32
+ if (!/^[a-z]/.test(sectionName)) {
33
+ throw new ProseError(`
34
+ Invalid section name "${sectionName}" for accent "${definition.name}"!
35
+ Section names should start with lower case letter.
36
+ `.trim());
37
+ }
38
+ }
39
+ //
40
+ // Schemas
41
+ //
42
+ const mainSchema = defineSchema({
43
+ name: `accentMain_${definition.name}`,
44
+ type: "block",
45
+ linkable: false
46
+ })();
47
+ const sectionSchema = defineSchema({
48
+ name: `accentSection_${definition.name}`,
49
+ type: "block",
50
+ linkable: false
51
+ })();
52
+ const accentSchema = defineSchema({
53
+ name: `accent_${definition.name}`,
54
+ type: "block",
55
+ linkable: true
56
+ })();
57
+ const typedAccentSchema = accentSchema;
58
+ //
59
+ // Tags
60
+ //
61
+ const mainTag = defineEruditTag({
62
+ tagName: `${uppercaseFirst(definition.name)}Main`,
63
+ schema: mainSchema
64
+ })(({ tagName, element, children }) => {
65
+ ensureTagChildren(tagName, children);
66
+ element.children = children;
67
+ const paragraphWrap = tryParagraphWrap(children);
68
+ if (paragraphWrap) {
69
+ element.children = paragraphWrap;
70
+ }
71
+ });
72
+ const sectionTag = defineEruditTag({
73
+ tagName: `${uppercaseFirst(definition.name)}Section`,
74
+ schema: sectionSchema
75
+ })(({ tagName, element, props, children }) => {
76
+ ensureTagChildren(tagName, children);
77
+ element.children = children;
78
+ const paragraphWrap = tryParagraphWrap(children);
79
+ if (paragraphWrap) {
80
+ element.children = paragraphWrap;
81
+ }
82
+ const title = props.title.trim();
83
+ validateTitle(tagName, title);
84
+ element.data = {
85
+ type: "manual",
86
+ title
87
+ };
88
+ });
89
+ function createSuffixSectionTag(suffix) {
90
+ return defineEruditTag({
91
+ tagName: `${uppercaseFirst(definition.name)}${uppercaseFirst(suffix)}`,
92
+ schema: sectionSchema
93
+ })(({ tagName, element, children }) => {
94
+ ensureTagChildren(tagName, children);
95
+ element.children = children;
96
+ const paragraphWrap = tryParagraphWrap(children);
97
+ if (paragraphWrap) {
98
+ element.children = paragraphWrap;
99
+ }
100
+ element.data = {
101
+ type: "named",
102
+ name: suffix
103
+ };
104
+ });
105
+ }
106
+ const namedSectionTags = Object.fromEntries(definition.sectionNames.map((sectionName) => {
107
+ const sectionTag = createSuffixSectionTag(sectionName);
108
+ return [sectionName, sectionTag];
109
+ }));
110
+ const sectionTags = [sectionTag, ...Object.values(namedSectionTags)];
111
+ const accentTag = defineEruditTag({
112
+ tagName: `${uppercaseFirst(definition.name)}`,
113
+ schema: typedAccentSchema
114
+ })(({ tagName, children, element, props, registry }) => {
115
+ try {
116
+ ensureTagChildren(tagName, children, [mainSchema, sectionSchema]);
117
+ element.children = children;
118
+ if (!isRawElement(element.children[0], mainSchema)) {
119
+ throw new ProseError(`<${tagName}> requires a <${mainTag.tagName}> as the first child element!`);
120
+ }
121
+ } catch {
122
+ element.children = [mainTag({
123
+ __JSPROSE_registryProp: PROSE_REGISTRY,
124
+ children
125
+ })];
126
+ }
127
+ const title = props.title.trim();
128
+ validateTitle(tagName, title);
129
+ let layout = "column";
130
+ if (props.row === true) {
131
+ layout = "row";
132
+ }
133
+ element.data = {
134
+ title,
135
+ layout
136
+ };
137
+ element.title = title;
138
+ });
139
+ //
140
+ // Registry Items
141
+ //
142
+ const mainRegistryItem = defineRegistryItem({
143
+ schema: mainSchema,
144
+ tags: [mainTag]
145
+ });
146
+ const sectionRegistryItem = defineRegistryItem({
147
+ schema: sectionSchema,
148
+ tags: [sectionTag, ...Object.values(namedSectionTags)]
149
+ });
150
+ const accentRegistryItem = defineRegistryItem({
151
+ schema: typedAccentSchema,
152
+ tags: [accentTag]
153
+ });
154
+ //
155
+ // Return
156
+ //
157
+ return {
158
+ _sectionNames: definition.sectionNames,
159
+ accent: {
160
+ schema: typedAccentSchema,
161
+ tag: accentTag,
162
+ registryItem: accentRegistryItem
163
+ },
164
+ main: {
165
+ schema: mainSchema,
166
+ tag: mainTag,
167
+ registryItem: mainRegistryItem
168
+ },
169
+ section: {
170
+ schema: sectionSchema,
171
+ tags: sectionTags,
172
+ registryItem: sectionRegistryItem
173
+ }
174
+ };
175
+ }