@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,111 @@
1
+ <script lang="ts" setup>
2
+ import { shallowRef } from 'vue';
3
+ import { ProseError, type ProseElement } from '@jsprose/core';
4
+
5
+ import type { dependencySchema } from './dependency/core.js';
6
+ import type { referenceSchema } from './reference/core.js';
7
+ import type { LinkStorage } from './storage.js';
8
+ import { useProseContext } from '../../app/composables/context.js';
9
+ import { useElementStorage } from '../../app/composables/storage.js';
10
+ import { useFormatText } from '../../app/composables/formatText.js';
11
+ import { useElementPhrase } from '../../app/composables/language.js';
12
+ import { useElementIcon } from '../../app/composables/elementIcon.js';
13
+ import Block from '../../app/shared/block/Block.vue';
14
+
15
+ const { element } = defineProps<{
16
+ element:
17
+ | ProseElement<typeof referenceSchema>
18
+ | ProseElement<typeof dependencySchema>;
19
+ }>();
20
+
21
+ const { EruditLink, EruditIcon, eruditIcons } = useProseContext();
22
+ const linkStorage = (await useElementStorage(element as any)) as LinkStorage;
23
+ const formatText = useFormatText();
24
+
25
+ interface UIData {
26
+ icon: string;
27
+ text: string;
28
+ secondary?: {
29
+ icon: string;
30
+ text: string;
31
+ };
32
+ }
33
+
34
+ const uiData = shallowRef<UIData>();
35
+
36
+ switch (linkStorage.type) {
37
+ case 'unique':
38
+ const elementPhrase = await useElementPhrase(linkStorage.schemaName);
39
+ uiData.value = {
40
+ icon: await useElementIcon(linkStorage.schemaName),
41
+ text: linkStorage.elementTitle || elementPhrase.element_name,
42
+ secondary: {
43
+ icon: eruditIcons[
44
+ linkStorage.content.contentType === 'topic'
45
+ ? linkStorage.content.topicPart
46
+ : linkStorage.content.contentType
47
+ ],
48
+ text: linkStorage.content.contentTitle,
49
+ },
50
+ };
51
+ break;
52
+ case 'contentItem':
53
+ uiData.value = {
54
+ icon: eruditIcons[
55
+ linkStorage.content.contentType === 'topic'
56
+ ? linkStorage.content.topicPart
57
+ : linkStorage.content.contentType
58
+ ],
59
+ text: linkStorage.content.contentTitle,
60
+ };
61
+ break;
62
+ default:
63
+ throw new ProseError(
64
+ 'BlockLink supports only Unique and Document link types!',
65
+ );
66
+ }
67
+ </script>
68
+
69
+ <template>
70
+ <Block :element>
71
+ <EruditLink
72
+ target="_blank"
73
+ :to="linkStorage.resolvedHref"
74
+ class="group bg-brand/5 border-brand/20 hocus:bg-brand/10
75
+ hocus:border-brand/40 relative block rounded-xl border-2
76
+ border-dashed p-(--proseAsideWidth)
77
+ transition-[border,background]"
78
+ >
79
+ <EruditIcon
80
+ name="arrow/outward"
81
+ class="text-brand/15 group-hocus:text-brand/20 top-small
82
+ right-small absolute shrink-0 text-[60px]
83
+ transition-[color]"
84
+ />
85
+ <div
86
+ class="text-brand/80 group-hocus:text-brand mb-small gap-small
87
+ font-medium transition-[color]"
88
+ >
89
+ <EruditIcon
90
+ :name="uiData!.icon"
91
+ class="mr-small relative top-0.5 inline align-baseline
92
+ text-[1.1em]"
93
+ />
94
+ <span>{{ formatText(uiData!.text) }}</span>
95
+ </div>
96
+ <div class="text-text-muted">
97
+ {{ formatText(element.data.label) }}
98
+ </div>
99
+ <div
100
+ v-if="uiData!.secondary"
101
+ class="text-text-dimmed mt-small text-main-xs"
102
+ >
103
+ <EruditIcon
104
+ :name="uiData!.secondary!.icon"
105
+ class="mr-small relative top-0.5 inline align-baseline"
106
+ />
107
+ <span>{{ formatText(uiData!.secondary!.text) }}</span>
108
+ </div>
109
+ </EruditLink>
110
+ </Block>
111
+ </template>
@@ -0,0 +1,93 @@
1
+ <script lang="ts" setup>
2
+ import type { ProseElement } from '@jsprose/core';
3
+
4
+ import type { depSchema } from './dependency/core.js';
5
+ import type { refSchema } from './reference/core.js';
6
+ import type { LinkStorage } from './storage.js';
7
+ import { useProseContext } from '../../app/composables/context.js';
8
+ import { useFormatText } from '../../app/composables/formatText.js';
9
+ import { useElementStorage } from '../../app/composables/storage.js';
10
+ import { useElementIcon } from '../../app/composables/elementIcon.js';
11
+ import Inliner from '../../app/shared/inliner/Inliner.vue';
12
+
13
+ const { element } = defineProps<{
14
+ element: ProseElement<typeof refSchema> | ProseElement<typeof depSchema>;
15
+ }>();
16
+
17
+ const {
18
+ EruditIcon,
19
+ EruditLink,
20
+ eruditIcons,
21
+ setPreview,
22
+ closePreview,
23
+ baseUrl,
24
+ } = useProseContext();
25
+ const formatText = useFormatText();
26
+ const linkStorage = (await useElementStorage(element as any)) as LinkStorage;
27
+
28
+ const icon = await (async () => {
29
+ switch (linkStorage.type) {
30
+ case 'direct':
31
+ return 'arrow/outward-box';
32
+ case 'contentItem':
33
+ return eruditIcons[
34
+ linkStorage.content.contentType === 'topic'
35
+ ? linkStorage.content.topicPart
36
+ : linkStorage.content.contentType
37
+ ];
38
+ case 'unique':
39
+ return await useElementIcon(linkStorage.schemaName);
40
+ }
41
+ })();
42
+
43
+ const doubleClick = {
44
+ timeout: undefined as ReturnType<typeof setTimeout> | undefined,
45
+ startTimeout() {
46
+ this.timeout = setTimeout(() => {
47
+ this.reset();
48
+ }, 400);
49
+ },
50
+ reset() {
51
+ clearTimeout(this.timeout);
52
+ this.timeout = undefined;
53
+ },
54
+ };
55
+
56
+ function linkClick() {
57
+ if (doubleClick.timeout) {
58
+ doubleClick.reset();
59
+ closePreview();
60
+ const openUrl =
61
+ linkStorage.type === 'direct'
62
+ ? linkStorage.resolvedHref
63
+ : baseUrl + linkStorage.resolvedHref.slice(1);
64
+ window.open(openUrl, '_blank');
65
+ return false;
66
+ }
67
+
68
+ setPreview(linkStorage.previewRequest);
69
+ doubleClick.startTimeout();
70
+ return false;
71
+ }
72
+ </script>
73
+
74
+ <template>
75
+ <Inliner :element>
76
+ <EruditLink
77
+ @click.capture.prevent="linkClick"
78
+ :to="linkStorage.resolvedHref"
79
+ :style="{ '--tGap': '1px', '--xGap': '4px', '--bGap': '4px' }"
80
+ class="text-brand hocus:bg-brand/15 relative
81
+ -mx-[calc(var(--xGap)-3px)] -mt-(--tGap) -mb-(--bGap) rounded-sm
82
+ bg-transparent px-(--xGap) pt-(--tGap) pb-(--bGap) underline
83
+ decoration-[color-mix(in_srgb,var(--color-brand)30%,transparent)]
84
+ decoration-2 underline-offset-2 transition-[color,background]"
85
+ >
86
+ <EruditIcon
87
+ :name="icon"
88
+ class="micro:pr-1.5 inline pr-1 text-[1.3em]"
89
+ />
90
+ <span>{{ formatText(element.data.label) }}</span>
91
+ </EruditLink>
92
+ </Inliner>
93
+ </template>
@@ -0,0 +1,13 @@
1
+ import { type AnyUnique, type NormalizedChildren } from '@jsprose/core';
2
+ import type { GlobalContentTypeguard } from '@erudit-js/core/content/global';
3
+ import type { EruditRawElement } from '../../rawElement.js';
4
+ import type { depSchema, dependencySchema } from './dependency/core.js';
5
+ import type { referenceSchema, refSchema } from './reference/core.js';
6
+ export interface LinkData {
7
+ label: string;
8
+ storageKey?: string;
9
+ }
10
+ export type LinkToProp = string | GlobalContentTypeguard | AnyUnique;
11
+ export declare function handleLinkTag(element: EruditRawElement<typeof depSchema | typeof dependencySchema | typeof refSchema | typeof referenceSchema>, tagName: string, props: {
12
+ to: LinkToProp;
13
+ }, children: NormalizedChildren): void;
@@ -0,0 +1,12 @@
1
+ import { ensureTagChild, ProseError, textSchema } from "@jsprose/core";
2
+ import { createLinkStorageKey } from "./storage.js";
3
+ export function handleLinkTag(element, tagName, props, children) {
4
+ ensureTagChild(tagName, children, [textSchema]);
5
+ const child = children[0];
6
+ const label = child.data.trim();
7
+ if (!label) {
8
+ throw new ProseError(`<${tagName}> label cannot be empty!`);
9
+ }
10
+ element.data = { label };
11
+ element.storageKey = createLinkStorageKey(props.to, tagName);
12
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Dependencies are used to reference content the reader **must know and understand** in order to proceed further.
3
+ *
4
+ * Never use dependencies to simply mention other content; for that, use `<Ref>` and `<Reference>` tags.
5
+ *
6
+ * Dependency types:
7
+ * * Global Content — points to content items and uniques via `$CONTENT` global object.
8
+ * * Unique — points to a unique element directly.
9
+ *
10
+ * @title Inliner Dependency
11
+ * @layout inliner
12
+ * @example
13
+ * ```tsx
14
+ * // Global content dependency
15
+ * <P>
16
+ * We need to use <Dep to={$CONTENT.combinatorics.sumRule}>Rule of Sum</Dep> to calculate the answer.
17
+ * </P>
18
+ *
19
+ * // Link to uniques directly
20
+ * <P $={uniques.intro}>Intro Paragraph</P>
21
+ * <P>
22
+ * We need to use <Dep to={uniques.intro}>introduction</Dep> to understand this transform.
23
+ * </P>
24
+ * ```
25
+ */
26
+ export const Dep = '_tag_';
27
+
28
+ /**
29
+ * Same as `<Dep>`, but as a block element which draws more attention.
30
+ *
31
+ * @title Block Dependency
32
+ * @layout block
33
+ * @example
34
+ * ```tsx
35
+ * // Global content dependency
36
+ * <Dependency to={$CONTENT.combinatorics.sumRule}>
37
+ * To proceed, you must understand the Rule of Sum in combinatorics.
38
+ * </Dependency>
39
+ *
40
+ * // Link to uniques directly
41
+ * <P $={uniques.intro}>Intro Paragraph</P>
42
+ * <Dependency to={uniques.intro}>
43
+ * To proceed, you must read the introduction.
44
+ * </Dependency>
45
+ * ```
46
+ */
47
+ export const Dependency = '_tag_';
@@ -0,0 +1,16 @@
1
+ declare const _default: (import("../../../app/appElement.js").AppElement<{
2
+ name: "dependencyInliner";
3
+ type: "inliner";
4
+ linkable: true;
5
+ Data: import("../core.js").LinkData;
6
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
7
+ Children: undefined;
8
+ }> | import("../../../app/appElement.js").AppElement<{
9
+ name: "dependencyBlock";
10
+ type: "block";
11
+ linkable: true;
12
+ Data: import("../core.js").LinkData;
13
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
14
+ Children: undefined;
15
+ }>)[];
16
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import { defineEruditProseAppElement } from "../../../app/appElement.js";
2
+ import { dependencySchema, depSchema } from "./core.js";
3
+ export default [defineEruditProseAppElement({
4
+ schema: depSchema,
5
+ component: () => import("../Link.vue")
6
+ }), defineEruditProseAppElement({
7
+ schema: dependencySchema,
8
+ component: () => import("../BlockLink.vue"),
9
+ icon: () => import("../icon.svg?raw"),
10
+ languages: {
11
+ en: () => import("./languages/en.js"),
12
+ ru: () => import("./languages/ru.js")
13
+ }
14
+ })];
@@ -0,0 +1,125 @@
1
+ import { type TagChildren } from '@jsprose/core';
2
+ import { type LinkData, type LinkToProp } from '../core.js';
3
+ import { type NoSnippet, type NoToc } from '../../../tag.js';
4
+ import type { EruditRawElement } from '../../../rawElement.js';
5
+ export declare const depSchema: {
6
+ name: "dependencyInliner";
7
+ type: "inliner";
8
+ linkable: true;
9
+ Data: LinkData;
10
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
11
+ Children: undefined;
12
+ };
13
+ export declare const dependencySchema: {
14
+ name: "dependencyBlock";
15
+ type: "block";
16
+ linkable: true;
17
+ Data: LinkData;
18
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
19
+ Children: undefined;
20
+ };
21
+ export declare const Dep: import("@jsprose/core").Tag<"Dep", {
22
+ name: "dependencyInliner";
23
+ type: "inliner";
24
+ linkable: true;
25
+ Data: LinkData;
26
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
27
+ Children: undefined;
28
+ }, {
29
+ to: Exclude<LinkToProp, string>;
30
+ } & TagChildren & NoSnippet & NoToc>;
31
+ export declare const Dependency: import("@jsprose/core").Tag<"Dependency", {
32
+ name: "dependencyBlock";
33
+ type: "block";
34
+ linkable: true;
35
+ Data: LinkData;
36
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
37
+ Children: undefined;
38
+ }, {
39
+ to: Exclude<LinkToProp, string>;
40
+ } & TagChildren & NoSnippet & NoToc>;
41
+ export declare const depRegistryItem: import("@jsprose/core").RegistryItem<{
42
+ name: "dependencyInliner";
43
+ type: "inliner";
44
+ linkable: true;
45
+ Data: LinkData;
46
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
47
+ Children: undefined;
48
+ }, {
49
+ Dep: import("@jsprose/core").Tag<"Dep", {
50
+ name: "dependencyInliner";
51
+ type: "inliner";
52
+ linkable: true;
53
+ Data: LinkData;
54
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
55
+ Children: undefined;
56
+ }, {
57
+ to: Exclude<LinkToProp, string>;
58
+ } & TagChildren & NoSnippet & NoToc>;
59
+ }, undefined>;
60
+ export declare const dependencyRegistryItem: import("@jsprose/core").RegistryItem<{
61
+ name: "dependencyBlock";
62
+ type: "block";
63
+ linkable: true;
64
+ Data: LinkData;
65
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
66
+ Children: undefined;
67
+ }, {
68
+ Dependency: import("@jsprose/core").Tag<"Dependency", {
69
+ name: "dependencyBlock";
70
+ type: "block";
71
+ linkable: true;
72
+ Data: LinkData;
73
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
74
+ Children: undefined;
75
+ }, {
76
+ to: Exclude<LinkToProp, string>;
77
+ } & TagChildren & NoSnippet & NoToc>;
78
+ }, undefined>;
79
+ declare const _default: [{
80
+ registryItem: import("@jsprose/core").RegistryItem<{
81
+ name: "dependencyInliner";
82
+ type: "inliner";
83
+ linkable: true;
84
+ Data: LinkData;
85
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
86
+ Children: undefined;
87
+ }, {
88
+ Dep: import("@jsprose/core").Tag<"Dep", {
89
+ name: "dependencyInliner";
90
+ type: "inliner";
91
+ linkable: true;
92
+ Data: LinkData;
93
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
94
+ Children: undefined;
95
+ }, {
96
+ to: Exclude<LinkToProp, string>;
97
+ } & TagChildren & NoSnippet & NoToc>;
98
+ }, undefined>;
99
+ }, {
100
+ registryItem: import("@jsprose/core").RegistryItem<{
101
+ name: "dependencyBlock";
102
+ type: "block";
103
+ linkable: true;
104
+ Data: LinkData;
105
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
106
+ Children: undefined;
107
+ }, {
108
+ Dependency: import("@jsprose/core").Tag<"Dependency", {
109
+ name: "dependencyBlock";
110
+ type: "block";
111
+ linkable: true;
112
+ Data: LinkData;
113
+ Storage: import("../storage.js").ContentItemLinkStorage | import("../storage.js").UniqueLinkStorage;
114
+ Children: undefined;
115
+ }, {
116
+ to: Exclude<LinkToProp, string>;
117
+ } & TagChildren & NoSnippet & NoToc>;
118
+ }, undefined>;
119
+ }];
120
+ export default _default;
121
+ export declare const dependencyStep: ({ rawElement, proseElement }: {
122
+ context: import("../../../context.js").EruditProseContext;
123
+ rawElement: EruditRawElement<import("@jsprose/core").AnySchema>;
124
+ proseElement: import("@jsprose/core").ProseElement<import("@jsprose/core").AnySchema>;
125
+ }) => string | undefined;
@@ -0,0 +1,51 @@
1
+ import { defineRegistryItem, defineSchema, isRawElement } from "@jsprose/core";
2
+ import { handleLinkTag } from "../core.js";
3
+ import { defineEruditTag } from "../../../tag.js";
4
+ import { defineResolveStep } from "../../../resolveStep.js";
5
+ import { defineEruditProseCoreElements } from "../../../coreElement.js";
6
+ export const depSchema = defineSchema({
7
+ name: "dependencyInliner",
8
+ type: "inliner",
9
+ linkable: true
10
+ })();
11
+ export const dependencySchema = defineSchema({
12
+ name: "dependencyBlock",
13
+ type: "block",
14
+ linkable: true
15
+ })();
16
+ export const Dep = defineEruditTag({
17
+ tagName: "Dep",
18
+ schema: depSchema
19
+ })(({ element, tagName, props, children }) => {
20
+ handleLinkTag(element, tagName, props, children);
21
+ });
22
+ export const Dependency = defineEruditTag({
23
+ tagName: "Dependency",
24
+ schema: dependencySchema
25
+ })(({ element, tagName, props, children }) => {
26
+ handleLinkTag(element, tagName, props, children);
27
+ });
28
+ export const depRegistryItem = defineRegistryItem({
29
+ schema: depSchema,
30
+ tags: [Dep]
31
+ });
32
+ export const dependencyRegistryItem = defineRegistryItem({
33
+ schema: dependencySchema,
34
+ tags: [Dependency]
35
+ });
36
+ export default defineEruditProseCoreElements({ registryItem: depRegistryItem }, { registryItem: dependencyRegistryItem });
37
+ //
38
+ // Resolve
39
+ //
40
+ export const dependencyStep = defineResolveStep(({ rawElement, proseElement }) => {
41
+ if (!isRawElement(rawElement, depSchema) && !isRawElement(rawElement, dependencySchema)) {
42
+ return;
43
+ }
44
+ if (!proseElement.id) {
45
+ return;
46
+ }
47
+ if (!rawElement.storageKey) {
48
+ return;
49
+ }
50
+ return rawElement.storageKey;
51
+ });
@@ -0,0 +1,4 @@
1
+ declare const _default: {
2
+ element_name: string;
3
+ };
4
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import { defineElementLanguage } from "../../../../app/language/element.js";
2
+ export default defineElementLanguage({ element_name: "Dependency" });
@@ -0,0 +1,4 @@
1
+ declare const _default: {
2
+ element_name: string;
3
+ };
4
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import { defineElementLanguage } from "../../../../app/language/element.js";
2
+ export default defineElementLanguage({ element_name: "Зависимость" });
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640">
2
+ <path d="M384 64C366.3 64 352 78.3 352 96C352 113.7 366.3 128 384 128L466.7 128L265.3 329.4C252.8 341.9 252.8 362.2 265.3 374.7C277.8 387.2 298.1 387.2 310.6 374.7L512 173.3L512 256C512 273.7 526.3 288 544 288C561.7 288 576 273.7 576 256L576 96C576 78.3 561.7 64 544 64L384 64zM144 160C99.8 160 64 195.8 64 240L64 496C64 540.2 99.8 576 144 576L400 576C444.2 576 480 540.2 480 496L480 416C480 398.3 465.7 384 448 384C430.3 384 416 398.3 416 416L416 496C416 504.8 408.8 512 400 512L144 512C135.2 512 128 504.8 128 496L128 240C128 231.2 135.2 224 144 224L224 224C241.7 224 256 209.7 256 192C256 174.3 241.7 160 224 160L144 160z"/>
3
+ </svg>
@@ -0,0 +1,49 @@
1
+ /**
2
+ * References are used to simply mention, **not requiring knowledge of** other content inside or outside site.
3
+ *
4
+ * Reference types:
5
+ * * Global Content — points to content items and uniques via `$CONTENT` global object.
6
+ * * Unique — points to a unique element directly.
7
+ * * Direct — points to an external URL (when possible, avoid using of these).
8
+ *
9
+ * @title Inliner Reference
10
+ * @layout inliner
11
+ * @example
12
+ * ```tsx
13
+ * // Global content reference
14
+ * <P>
15
+ * The method we used here is somewhat similar to <Ref to={$CONTENT.combinatorics.sumRule}>Rule of Sum</Ref> in combinatorics.
16
+ * </P>
17
+ *
18
+ * // Link to uniques directly
19
+ * <P $={uniques.intro}>Intro Paragraph</P>
20
+ * <P>
21
+ * If you remember, we also did this transform back in the <Ref to={uniques.intro}>introduction</Ref>.
22
+ * </P>
23
+ *
24
+ * // Direct reference
25
+ * <Ref to="https://google.com">Just Google It!</Ref>
26
+ * ```
27
+ */
28
+ export const Ref = '_tag_';
29
+
30
+ /**
31
+ * Same as `<Ref>`, but as a block element which draws more attention.
32
+ *
33
+ * @title Block Reference
34
+ * @layout block
35
+ * @example
36
+ * ```tsx
37
+ * // Global content reference
38
+ * <Reference to={$CONTENT.combinatorics.sumRule}>
39
+ * There is a similar method called Rule of Sum in combinatorics which you might want to review.
40
+ * </Reference>
41
+ *
42
+ * // Link to uniques directly
43
+ * <P $={uniques.intro}>Intro Paragraph</P>
44
+ * <Reference to={uniques.intro}>
45
+ * If you remember, we also did this transform back in the introduction.
46
+ * </Reference>
47
+ * ```
48
+ */
49
+ export const Reference = '_tag_';
@@ -0,0 +1,16 @@
1
+ declare const _default: (import("../../../app/appElement.js").AppElement<{
2
+ name: "referenceInliner";
3
+ type: "inliner";
4
+ linkable: true;
5
+ Data: import("../core.js").LinkData;
6
+ Storage: import("../storage.js").LinkStorage;
7
+ Children: undefined;
8
+ }> | import("../../../app/appElement.js").AppElement<{
9
+ name: "referenceBlock";
10
+ type: "block";
11
+ linkable: true;
12
+ Data: import("../core.js").LinkData;
13
+ Storage: import("../storage.js").LinkStorage;
14
+ Children: undefined;
15
+ }>)[];
16
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import { defineEruditProseAppElement } from "../../../app/appElement.js";
2
+ import { referenceSchema, refSchema } from "./core.js";
3
+ export default [defineEruditProseAppElement({
4
+ schema: refSchema,
5
+ component: () => import("../Link.vue")
6
+ }), defineEruditProseAppElement({
7
+ schema: referenceSchema,
8
+ component: () => import("../BlockLink.vue"),
9
+ icon: () => import("../icon.svg?raw"),
10
+ languages: {
11
+ en: () => import("./languages/en.js"),
12
+ ru: () => import("./languages/ru.js")
13
+ }
14
+ })];