@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,68 @@
1
+ import { type AnySchema, type Tag, type TagChildren, type Unique } from '@jsprose/core';
2
+ import { type NoSnippet, type NoToc } from '../../tag.js';
3
+ export interface DetailsData {
4
+ title?: string;
5
+ }
6
+ export declare const detailsSchema: {
7
+ name: "details";
8
+ type: "block";
9
+ linkable: true;
10
+ Data: DetailsData;
11
+ Storage: undefined;
12
+ Children: AnySchema[];
13
+ };
14
+ export declare const detailsTagName = "Details";
15
+ export declare const Details: Tag<"Details", {
16
+ name: "details";
17
+ type: "block";
18
+ linkable: true;
19
+ Data: DetailsData;
20
+ Storage: undefined;
21
+ Children: AnySchema[];
22
+ }, {
23
+ title?: string;
24
+ $: Unique<Tag<typeof detailsTagName, typeof detailsSchema, any>>;
25
+ } & TagChildren & NoToc & NoSnippet>;
26
+ export declare const detailsRegistryItem: import("@jsprose/core").RegistryItem<{
27
+ name: "details";
28
+ type: "block";
29
+ linkable: true;
30
+ Data: DetailsData;
31
+ Storage: undefined;
32
+ Children: AnySchema[];
33
+ }, {
34
+ Details: Tag<"Details", {
35
+ name: "details";
36
+ type: "block";
37
+ linkable: true;
38
+ Data: DetailsData;
39
+ Storage: undefined;
40
+ Children: AnySchema[];
41
+ }, {
42
+ title?: string;
43
+ $: Unique<Tag<typeof detailsTagName, typeof detailsSchema, any>>;
44
+ } & TagChildren & NoToc & NoSnippet>;
45
+ }, undefined>;
46
+ declare const _default: {
47
+ registryItem: import("@jsprose/core").RegistryItem<{
48
+ name: "details";
49
+ type: "block";
50
+ linkable: true;
51
+ Data: DetailsData;
52
+ Storage: undefined;
53
+ Children: AnySchema[];
54
+ }, {
55
+ Details: Tag<"Details", {
56
+ name: "details";
57
+ type: "block";
58
+ linkable: true;
59
+ Data: DetailsData;
60
+ Storage: undefined;
61
+ Children: AnySchema[];
62
+ }, {
63
+ title?: string;
64
+ $: Unique<Tag<typeof detailsTagName, typeof detailsSchema, any>>;
65
+ } & TagChildren & NoToc & NoSnippet>;
66
+ }, undefined>;
67
+ };
68
+ export default _default;
@@ -0,0 +1,30 @@
1
+ import { defineRegistryItem, defineSchema, ensureTagChildren, ProseError } from "@jsprose/core";
2
+ import { defineEruditProseCoreElement } from "../../coreElement.js";
3
+ import { defineEruditTag } from "../../tag.js";
4
+ export const detailsSchema = defineSchema({
5
+ name: "details",
6
+ type: "block",
7
+ linkable: true
8
+ })();
9
+ export const detailsTagName = "Details";
10
+ export const Details = defineEruditTag({
11
+ tagName: detailsTagName,
12
+ schema: detailsSchema
13
+ })(({ element, tagName, children, props }) => {
14
+ if (!element.uniqueName) {
15
+ throw new ProseError(`<${tagName}> must be connected to unique!`);
16
+ }
17
+ ensureTagChildren(tagName, children);
18
+ element.children = children;
19
+ const title = props.title?.trim();
20
+ if (title) {
21
+ element.data = { title };
22
+ element.slug = title;
23
+ element.title = title;
24
+ }
25
+ });
26
+ export const detailsRegistryItem = defineRegistryItem({
27
+ schema: detailsSchema,
28
+ tags: [Details]
29
+ });
30
+ export default defineEruditProseCoreElement({ registryItem: detailsRegistryItem });
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 34">
2
+ <path d="M30.3,11.3c-.56-.56-1.52-.56-2.08,0l-1.92,2c-1.04-.96-2.32-1.92-3.85-2.56l.8-2.72c.24-.8-.16-1.68-.96-1.92-.8-.24-1.6.24-1.84,1.04l-.8,2.72c-1.6-.32-3.53-.32-5.13,0l-.8-2.72c-.24-.8-1.04-1.28-1.84-1.04s-1.2,1.12-.96,1.92l.8,2.72c-1.52.72-2.8,1.6-3.85,2.56l-1.92-2c-.56-.56-1.52-.56-2.08,0-.56.56-.56,1.52,0,2.16l2,2.16c-1.12,1.52-1.6,2.8-1.6,3.21,0,1.04,4.09,9.14,12.74,9.14s12.74-8.09,12.74-9.14-.56-1.68-1.6-3.21l2-2.16c.56-.56.56-1.52,0-2.16h.16ZM17.08,24.92c-5.85,0-8.82-4.57-9.7-6.09.64-1.2,2.72-4.33,6.41-5.61h.24c.88-.24,1.92-.4,3.05-.4s2.08.16,3.05.4h.24c3.77,1.2,5.77,4.33,6.41,5.61-.88,1.52-3.85,6.09-9.7,6.09ZM18.2,13.95c-2.56-.64-5.13.96-5.77,3.77-.64,2.64.96,5.37,3.53,6.01.4.08.72.16,1.12.16.88,0,1.68-.24,2.48-.72,1.12-.72,1.84-1.76,2.16-3.05v-.08c.32-1.28.08-2.64-.56-3.77-.64-1.12-1.68-1.92-2.97-2.24v-.08ZM18.84,19.31c-.08.48-.4.96-.8,1.2s-.88.32-1.36.24c-.96-.24-1.6-1.28-1.36-2.4.24-.88.96-1.44,1.76-1.44s.32,0,.4,0h0c.48.16.88.4,1.12.88.24.4.32.96.16,1.52h.08Z"/>
3
+ </svg>
@@ -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: "Details" });
@@ -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,364 @@
1
+ <script lang="ts" setup>
2
+ import {
3
+ nextTick,
4
+ onMounted,
5
+ onUnmounted,
6
+ ref,
7
+ shallowRef,
8
+ useCssModule,
9
+ useId,
10
+ useTemplateRef,
11
+ } from 'vue';
12
+ import type { ProseElement } from '@jsprose/core';
13
+
14
+ import type { diagramSchema } from './core.js';
15
+ import { usePhotoSwipe } from '../../app/shared/photoswipe/composable.js';
16
+ import { useProseContext } from '../../app/composables/context.js';
17
+ import Caption from '../caption/Caption.vue';
18
+ import Block from '../../app/shared/block/Block.vue';
19
+
20
+ const { element } = defineProps<{
21
+ element: ProseElement<typeof diagramSchema>;
22
+ }>();
23
+
24
+ const style = useCssModule();
25
+ const { EruditIcon, loadingSvg } = useProseContext();
26
+ const loading = ref(true);
27
+ const diagramRendering = ref(false);
28
+ const dummyMathHtml = ref('');
29
+ const diagramContent = ref(element.children[0].data);
30
+ const diagramSvgContent = ref('');
31
+ const diagramElement = useTemplateRef('diagram');
32
+ const diagramSvgElement = useTemplateRef('diagramSvg');
33
+ const diagramUid = useId();
34
+ const captionElement = shallowRef<HTMLElement>();
35
+ const { lightbox, initLightbox } = usePhotoSwipe();
36
+ const latexRegex = {
37
+ display: /\$\$(.*?)\$\$/gs,
38
+ inline: /\$(?!\$)(.*?)(?<!\$)\$/gs,
39
+ };
40
+
41
+ let observer: IntersectionObserver;
42
+
43
+ onMounted(async () => {
44
+ if (hasLatex(diagramContent.value)) {
45
+ await prepareMathDiagram();
46
+ }
47
+
48
+ observer = new IntersectionObserver(diagramIntersectHit, {
49
+ root: null,
50
+ threshold: 0.01,
51
+ });
52
+ observer.observe(diagramElement.value!);
53
+ });
54
+
55
+ onUnmounted(() => {
56
+ if (observer) {
57
+ observer.disconnect();
58
+ }
59
+ });
60
+
61
+ function diagramClick() {
62
+ if (!lightbox.value) {
63
+ const svgElement = diagramSvgElement.value!.querySelector('svg')!;
64
+
65
+ const slideSvg = svgElement.cloneNode(true) as SVGSVGElement;
66
+ slideSvg.removeAttribute('width');
67
+ slideSvg.removeAttribute('style');
68
+ slideSvg.classList.add(style.diagram);
69
+
70
+ let slideRoot: HTMLElement | SVGSVGElement = slideSvg;
71
+ const accentAncestor = diagramElement.value!.closest(
72
+ '[data-prose-accent]',
73
+ );
74
+ if (accentAncestor) {
75
+ const wrapper = document.createElement('div');
76
+ wrapper.setAttribute('data-prose-accent', '');
77
+ const computed = getComputedStyle(accentAncestor as Element);
78
+ for (const prop of computed) {
79
+ if (prop.startsWith('--accent')) {
80
+ const val = computed.getPropertyValue(prop).trim();
81
+ if (val) {
82
+ wrapper.style.setProperty(prop, val);
83
+ }
84
+ }
85
+ }
86
+ wrapper.appendChild(slideSvg);
87
+ slideRoot = wrapper;
88
+ }
89
+
90
+ const width = Math.min(1000, 0.9 * window.innerWidth);
91
+ const scaleHeightFactor =
92
+ svgElement.clientHeight / svgElement.clientWidth;
93
+
94
+ const html = `
95
+ <div class="pswp__img-overlay-wrapper" style="position: relative">
96
+ <div class="pswp__img" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;"></div>
97
+ ${slideRoot.outerHTML}
98
+ </div>
99
+ `;
100
+ initLightbox(
101
+ {
102
+ dataSource: [
103
+ {
104
+ html,
105
+ width: width,
106
+ height: width * scaleHeightFactor,
107
+ },
108
+ ],
109
+ },
110
+ captionElement.value,
111
+ );
112
+ }
113
+ lightbox.value!.loadAndOpen(0);
114
+ }
115
+
116
+ //
117
+ //
118
+ //
119
+
120
+ function hasLatex(content: string): boolean {
121
+ return latexRegex.display.test(content) || latexRegex.inline.test(content);
122
+ }
123
+
124
+ async function prepareMathDiagram() {
125
+ await import('katex/dist/katex.min.css');
126
+ const katex = await import('katex');
127
+
128
+ const globalCode = '__ERUDIT_DIAGRAM_MATH_DUMMY__';
129
+
130
+ if (!(window as any)[globalCode]) {
131
+ dummyMathHtml.value = katex.renderToString(
132
+ '\\sum_{i=1}^n i^2 = \\frac{n(n+1)(2n+1)}{6}',
133
+ {
134
+ displayMode: true,
135
+ },
136
+ );
137
+ (window as any)[globalCode] = true;
138
+ }
139
+
140
+ const renderMathWithKatex = (
141
+ text: string,
142
+ regex: RegExp,
143
+ displayMode: boolean,
144
+ ): string => {
145
+ return text.replace(regex, (_, latexContent) => {
146
+ return katex.renderToString(latexContent, {
147
+ displayMode,
148
+ });
149
+ });
150
+ };
151
+
152
+ diagramContent.value = renderMathWithKatex(
153
+ diagramContent.value,
154
+ latexRegex.display,
155
+ true,
156
+ );
157
+
158
+ diagramContent.value = renderMathWithKatex(
159
+ diagramContent.value,
160
+ latexRegex.inline,
161
+ false,
162
+ );
163
+
164
+ await nextTick();
165
+ await new Promise(requestAnimationFrame);
166
+ }
167
+
168
+ async function diagramIntersectHit(entries: IntersectionObserverEntry[]) {
169
+ if (!entries.some((e) => e.isIntersecting)) return;
170
+ if (!loading.value || diagramRendering.value) return;
171
+
172
+ diagramRendering.value = true;
173
+ await renderDiagram();
174
+ diagramRendering.value = false;
175
+ loading.value = false;
176
+
177
+ observer.disconnect();
178
+
179
+ await nextTick();
180
+ const svg = diagramSvgElement.value?.querySelector('svg');
181
+ if (svg) {
182
+ svg.addEventListener('click', diagramClick);
183
+ }
184
+ }
185
+
186
+ async function renderDiagram() {
187
+ const mermaid = (await import('mermaid')).default;
188
+
189
+ mermaid.initialize({
190
+ startOnLoad: false,
191
+ securityLevel: 'loose',
192
+ markdownAutoWrap: false,
193
+ flowchart: {
194
+ useMaxWidth: true,
195
+ padding: 10,
196
+ wrappingWidth: 400,
197
+ },
198
+ theme: 'base',
199
+ });
200
+
201
+ const { svg } = await mermaid.render(diagramUid, diagramContent.value);
202
+
203
+ diagramSvgContent.value = svg;
204
+ }
205
+ </script>
206
+
207
+ <template>
208
+ <Block :element>
209
+ <div
210
+ class="fixed -top-[9999px] -left-[9999px]"
211
+ v-html="dummyMathHtml"
212
+ ></div>
213
+ <div ref="diagram">
214
+ <div v-if="loading" class="p-normal text-center">
215
+ <EruditIcon
216
+ :name="loadingSvg"
217
+ class="text-text-dimmed inline text-[60px]"
218
+ />
219
+ </div>
220
+ <div
221
+ v-else
222
+ ref="diagramSvg"
223
+ v-html="diagramSvgContent"
224
+ :class="$style.diagram"
225
+ ></div>
226
+ </div>
227
+ <Caption
228
+ v-if="element.children[1]"
229
+ :caption="element.children[1]"
230
+ @captionMounted="(element) => (captionElement = element)"
231
+ />
232
+ </Block>
233
+ </template>
234
+
235
+ <style module>
236
+ .diagram {
237
+ > svg {
238
+ margin: auto;
239
+ cursor: pointer;
240
+ }
241
+
242
+ /* Text color */
243
+
244
+ :global(.edgeLabel) {
245
+ *:not(.katex *):not(.katex) {
246
+ color: var(--color-text-muted) !important;
247
+ }
248
+ }
249
+
250
+ :global(.nodeLabel) {
251
+ *:not(.katex *):not(.katex) {
252
+ color: var(--color-text) !important;
253
+ }
254
+ }
255
+
256
+ /* Arrows */
257
+
258
+ --arrowColor: var(--color-text-dimmed);
259
+
260
+ :global(.flowchart-link) {
261
+ stroke: var(--arrowColor) !important;
262
+ }
263
+
264
+ :global(.edge-thickness-normal) {
265
+ stroke-width: 2px !important;
266
+ }
267
+
268
+ :global(.edge-pattern-dotted) {
269
+ stroke-width: 2px !important;
270
+ stroke-dasharray: 3 2.2 !important;
271
+ }
272
+
273
+ :global(.marker) {
274
+ fill: var(--arrowColor) !important;
275
+ stroke: var(--arrowColor) !important;
276
+ }
277
+
278
+ :global(.edgeLabel) * {
279
+ background: var(--color-bg-main) !important;
280
+ }
281
+
282
+ [data-prose-accent] & {
283
+ --arrowColor: color-mix(
284
+ in hsl,
285
+ var(--accentText) 45%,
286
+ var(--accentBackground)
287
+ );
288
+
289
+ :global(.edgeLabel) * {
290
+ background: var(--accentBackground) !important;
291
+ }
292
+ }
293
+
294
+ /* Nodes */
295
+
296
+ :global(.node) rect,
297
+ :global(.node) path,
298
+ :global(.node) polygon,
299
+ :global(.node) circle,
300
+ :global(.node) ellipse {
301
+ fill: color-mix(in hsl, var(--color-brand) 20%, transparent) !important;
302
+ stroke: color-mix(
303
+ in hsl,
304
+ var(--color-brand) 35%,
305
+ transparent
306
+ ) !important;
307
+ }
308
+
309
+ [data-prose-accent] & {
310
+ :global(.node) rect,
311
+ :global(.node) path,
312
+ :global(.node) polygon,
313
+ :global(.node) circle,
314
+ :global(.node) ellipse {
315
+ fill: color-mix(
316
+ in hsl,
317
+ var(--accentText) 30%,
318
+ var(--accentBackground)
319
+ ) !important;
320
+ stroke: color-mix(
321
+ in hsl,
322
+ var(--accentText) 45%,
323
+ var(--accentBackground)
324
+ ) !important;
325
+ }
326
+ }
327
+
328
+ /* "fill" node modificator */
329
+
330
+ :global(.fill) {
331
+ *:not(.katex *):not(.katex) {
332
+ color: white !important;
333
+ }
334
+
335
+ rect,
336
+ path,
337
+ polygon,
338
+ circle,
339
+ ellipse {
340
+ fill: color-mix(
341
+ in hsl,
342
+ var(--color-brand) 75%,
343
+ transparent
344
+ ) !important;
345
+ stroke: transparent !important;
346
+ }
347
+
348
+ [data-prose-accent] & {
349
+ rect,
350
+ path,
351
+ polygon,
352
+ circle,
353
+ ellipse {
354
+ fill: color-mix(
355
+ in hsl,
356
+ var(--accentText) 70%,
357
+ var(--color-border)
358
+ ) !important;
359
+ stroke: transparent !important;
360
+ }
361
+ }
362
+ }
363
+ }
364
+ </style>
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Diagrams written in [Mermaid](https://mermaid.js.org/syntax/flowchart.html) syntax.
3
+ *
4
+ * Diagrams can optionally have a `<Caption>` as their last child.
5
+ *
6
+ * @title Diagram
7
+ * @layout block
8
+ * @example
9
+ * ```tsx
10
+ * <Diagram>
11
+ * {`
12
+ * flowchart TD
13
+ * A[Start] --> B{Is it working?}
14
+ * `}
15
+ * <Caption>Simple flowchart diagram</Caption>
16
+ * </Diagram>
17
+ * ```
18
+ */
19
+ export const Diagram = '_tag_';
@@ -0,0 +1,30 @@
1
+ declare const _default: import("../../app/appElement.js").AppElement<{
2
+ name: "diagram";
3
+ type: "block";
4
+ linkable: true;
5
+ Data: undefined;
6
+ Storage: undefined;
7
+ Children: [{
8
+ name: "text";
9
+ type: "inliner";
10
+ linkable: false;
11
+ Data: string;
12
+ Storage: undefined;
13
+ Children: undefined;
14
+ }] | [{
15
+ name: "text";
16
+ type: "inliner";
17
+ linkable: false;
18
+ Data: string;
19
+ Storage: undefined;
20
+ Children: undefined;
21
+ }, {
22
+ name: "caption";
23
+ type: "inliner";
24
+ linkable: false;
25
+ Data: import("../caption/core.js").CaptionData | undefined;
26
+ Storage: undefined;
27
+ Children: import("@jsprose/core").InlinerSchema[];
28
+ }];
29
+ }>;
30
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { defineEruditProseAppElement } from "../../app/appElement.js";
2
+ import { diagramSchema } from "./core.js";
3
+ export default defineEruditProseAppElement({
4
+ schema: diagramSchema,
5
+ component: () => import("./Diagram.vue"),
6
+ languages: {
7
+ en: () => import("./languages/en.js"),
8
+ ru: () => import("./languages/ru.js")
9
+ },
10
+ icon: () => import("./icon.svg?raw")
11
+ });