@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,76 @@
1
+ /**
2
+ * Static seed not random for SEO reasons.
3
+ * It ensures that initial problem content is always the same on each build, helping search engines to index initial problem content consistently.
4
+ */
5
+ export const DEFAULT_SEED = "3141592653";
6
+ export function normalizeSeed(seed) {
7
+ if (typeof seed === "number") return seed;
8
+ let hash = 0;
9
+ for (let i = 0; i < seed.length; i++) {
10
+ hash = (hash << 5) - hash + seed.charCodeAt(i);
11
+ hash |= 0;
12
+ }
13
+ return hash;
14
+ }
15
+ export class Random {
16
+ _rng;
17
+ constructor(seed) {
18
+ const normalizedSeed = normalizeSeed(seed);
19
+ this._rng = splitmix32(normalizedSeed);
20
+ }
21
+ rng() {
22
+ return this._rng();
23
+ }
24
+ boolean() {
25
+ return this.rng() % 2 === 0;
26
+ }
27
+ integer(min, max) {
28
+ const range = max - min + 1;
29
+ return this.rng() % range + min;
30
+ }
31
+ float(min, max, decimals) {
32
+ const range = max - min;
33
+ const randomValue = this.rng() / 4294967295 * range + min;
34
+ return parseFloat(randomValue.toFixed(decimals));
35
+ }
36
+ shuffle(arr) {
37
+ const shuffled = [...arr];
38
+ for (let i = shuffled.length - 1; i > 0; i--) {
39
+ const j = this.rng() % (i + 1);
40
+ [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
41
+ }
42
+ return shuffled;
43
+ }
44
+ arrayElement(arr) {
45
+ if (arr.length === 0) return undefined;
46
+ const index = this.rng() % arr.length;
47
+ return arr[index];
48
+ }
49
+ arrayElements(arr, count, unique = true) {
50
+ if (arr.length === 0) return [];
51
+ const result = [];
52
+ if (unique) {
53
+ const shuffled = this.shuffle(arr);
54
+ for (let i = 0; i < count && i < shuffled.length; i++) {
55
+ result.push(shuffled[i]);
56
+ }
57
+ } else {
58
+ for (let i = 0; i < count; i++) {
59
+ const index = this.rng() % arr.length;
60
+ result.push(arr[index]);
61
+ }
62
+ }
63
+ return result;
64
+ }
65
+ }
66
+ function splitmix32(seed) {
67
+ return function() {
68
+ seed |= 0;
69
+ seed = seed + 2654435769 | 0;
70
+ let t = seed ^ seed >>> 16;
71
+ t = Math.imul(t, 569420461);
72
+ t = t ^ t >>> 15;
73
+ t = Math.imul(t, 1935289751);
74
+ return (t = t ^ t >>> 15) >>> 0;
75
+ };
76
+ }
@@ -0,0 +1,28 @@
1
+ export declare const problemLevels: readonly ["example", "easy", "medium", "hard"];
2
+ export type ProblemLevel = (typeof problemLevels)[number];
3
+ export declare function isProblemLevel(value: unknown): value is ProblemLevel;
4
+ export declare const problemAttributes: readonly ["pretty", "applied", "method", "inter"];
5
+ export type ProblemAttribute = (typeof problemAttributes)[number];
6
+ export interface ProblemCustomAttribute {
7
+ label: string;
8
+ icon?: string;
9
+ hint?: string;
10
+ }
11
+ export declare const problemActions: readonly ["hint", "answer", "solution", "note", "check", "generate"];
12
+ export type ProblemAction = (typeof problemActions)[number];
13
+ export declare function isProblemAction(value: unknown): value is ProblemAction;
14
+ export interface ProblemInfo {
15
+ title: string;
16
+ level: ProblemLevel;
17
+ attributes: (ProblemAttribute | ProblemCustomAttribute)[];
18
+ }
19
+ export type ProblemInfoProps = {
20
+ title: string;
21
+ level: ProblemLevel;
22
+ attributes?: (ProblemAttribute | ProblemCustomAttribute)[];
23
+ } & AttributeProps;
24
+ type AttributeProps = {
25
+ [K in ProblemAttribute]?: true;
26
+ };
27
+ export declare function problemProps2Info(props: ProblemInfoProps): ProblemInfo;
28
+ export {};
@@ -0,0 +1,42 @@
1
+ //
2
+ // Problem Levels
3
+ //
4
+ export const problemLevels = [
5
+ "example",
6
+ "easy",
7
+ "medium",
8
+ "hard"
9
+ ];
10
+ export function isProblemLevel(value) {
11
+ return typeof value === "string" && problemLevels.includes(value);
12
+ }
13
+ //
14
+ // Problem Attributes
15
+ //
16
+ export const problemAttributes = [
17
+ "pretty",
18
+ "applied",
19
+ "method",
20
+ "inter"
21
+ ];
22
+ //
23
+ // Problem Actions
24
+ //
25
+ export const problemActions = [
26
+ "hint",
27
+ "answer",
28
+ "solution",
29
+ "note",
30
+ "check",
31
+ "generate"
32
+ ];
33
+ export function isProblemAction(value) {
34
+ return typeof value === "string" && problemActions.includes(value);
35
+ }
36
+ export function problemProps2Info(props) {
37
+ return {
38
+ title: props.title,
39
+ level: props.level,
40
+ attributes: [...problemAttributes.filter((attr) => props[attr] === true), ...props.attributes ?? []]
41
+ };
42
+ }
@@ -0,0 +1,5 @@
1
+ export declare const problemScriptStep: ({ rawElement }: {
2
+ context: import("../../context.js").EruditProseContext;
3
+ rawElement: import("../../rawElement.js").EruditRawElement<import("@jsprose/core").AnySchema>;
4
+ proseElement: import("@jsprose/core").ProseElement<import("@jsprose/core").AnySchema>;
5
+ }) => string | undefined;
@@ -0,0 +1,13 @@
1
+ import { isRawElement } from "@jsprose/core";
2
+ import { defineResolveStep } from "../../resolveStep.js";
3
+ import { problemSchema } from "./problem.js";
4
+ import { subProblemSchema } from "./problems.js";
5
+ export const problemScriptStep = defineResolveStep(({ rawElement }) => {
6
+ if (!isRawElement(rawElement, problemSchema) && !isRawElement(rawElement, subProblemSchema)) {
7
+ return;
8
+ }
9
+ const script = rawElement.storageKey?.replace("problemScript:", "");
10
+ if (script) {
11
+ return script;
12
+ }
13
+ });
@@ -0,0 +1,5 @@
1
+ export type ProblemScriptStorage = {
2
+ resolvedScriptSrc: string;
3
+ } | undefined;
4
+ export declare function problemScriptStorageKey(scriptId: string): string;
5
+ export declare function createProblemScriptStorage(projectAbsPath: string, projectBaseUrl: string, scriptSrc: string): ProblemScriptStorage;
@@ -0,0 +1,8 @@
1
+ import { projectRelFilePath } from "../../shared/filePath.js";
2
+ export function problemScriptStorageKey(scriptId) {
3
+ return `problemScript:${scriptId}`;
4
+ }
5
+ export function createProblemScriptStorage(projectAbsPath, projectBaseUrl, scriptSrc) {
6
+ const resolvedSrc = projectBaseUrl + "api/problemScript/" + projectRelFilePath(projectAbsPath, scriptSrc.replace(".tsx", "")) + ".js";
7
+ return { resolvedScriptSrc: resolvedSrc };
8
+ }
@@ -0,0 +1,104 @@
1
+ <script lang="ts" setup>
2
+ import { computed } from 'vue';
3
+ import { isProseElement, type ProseElement } from '@jsprose/core';
4
+
5
+ import type { tableSchema } from './core.js';
6
+ import { captionSchema } from '../caption/core.js';
7
+ import Render from '../../app/shared/Render.vue';
8
+ import Block from '../../app/shared/block/Block.vue';
9
+ import Caption from '../caption/Caption.vue';
10
+
11
+ const { element } = defineProps<{
12
+ element: ProseElement<typeof tableSchema>;
13
+ }>();
14
+
15
+ const caption = computed(() => {
16
+ const maybeCaption = element.children[element.children.length - 1];
17
+ return isProseElement(maybeCaption, captionSchema)
18
+ ? maybeCaption
19
+ : undefined;
20
+ });
21
+
22
+ const rows = computed(() =>
23
+ caption.value ? element.children.slice(0, -1) : element.children,
24
+ );
25
+ </script>
26
+
27
+ <template>
28
+ <Block :element>
29
+ <div class="nice-scrollbars overflow-auto">
30
+ <table
31
+ :class="[
32
+ $style.table,
33
+ `text-main-sm bg-bg-main m-auto max-w-full border-separate
34
+ border-spacing-[3px] rounded border border-(--tableBorder)
35
+ transition-[background,border]`,
36
+ ]"
37
+ >
38
+ <tbody>
39
+ <tr
40
+ v-for="row in rows"
41
+ :key="row.id"
42
+ class="transition-[background] odd:bg-(--oddCellBg)
43
+ even:bg-(--evenCellBg)"
44
+ >
45
+ <td
46
+ v-for="cell in row.children"
47
+ :key="cell.id"
48
+ class="py-small px-normal rounded"
49
+ >
50
+ <Render
51
+ v-for="inliner of cell.children"
52
+ :key="inliner.id"
53
+ :element="inliner"
54
+ />
55
+ </td>
56
+ </tr>
57
+ </tbody>
58
+ </table>
59
+ </div>
60
+ <Caption v-if="caption" :caption="caption" />
61
+ </Block>
62
+ </template>
63
+
64
+ <style module>
65
+ .table {
66
+ --tableBorder: color-mix(
67
+ in srgb,
68
+ var(--color-brand),
69
+ var(--color-border) 85%
70
+ );
71
+
72
+ --evenCellBg: color-mix(
73
+ in srgb,
74
+ light-dark(#f5f5f5, #282828),
75
+ var(--color-brand) 3%
76
+ );
77
+
78
+ --oddCellBg: color-mix(
79
+ in srgb,
80
+ light-dark(#f5f5f5, #282828),
81
+ var(--color-brand) 10%
82
+ );
83
+
84
+ [data-prose-accent] & {
85
+ --tableBorder: color-mix(
86
+ in srgb,
87
+ var(--accentBorder),
88
+ var(--color-border) 50%
89
+ );
90
+
91
+ --evenCellBg: color-mix(
92
+ in srgb,
93
+ light-dark(var(--color-bg-main), #202020),
94
+ var(--accentText) 12%
95
+ );
96
+
97
+ --oddCellBg: color-mix(
98
+ in srgb,
99
+ light-dark(var(--color-bg-main), #202020),
100
+ var(--accentText) 18%
101
+ );
102
+ }
103
+ }
104
+ </style>
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Tables are used to organize data into rows and columns.
3
+ * Rows (`<Tr>` — table row) goes first, then data cells (`<Td>` — table data) within each row which represent the columns.
4
+ *
5
+ * Tables can optionally have a `<Caption>` as their last child.
6
+ *
7
+ * @title Table
8
+ * @layout block
9
+ * @example
10
+ * ```tsx
11
+ * // Name | Age | City
12
+ * // Alice | 30 | New York
13
+ * // Bob | 25 | Los Angeles
14
+ * <Table>
15
+ * <Tr>
16
+ * <Td>Name</Td>
17
+ * <Td>Age</Td>
18
+ * <Td>City</Td>
19
+ * </Tr>
20
+ * <Tr>
21
+ * <Td>Alice</Td>
22
+ * <Td>30</Td>
23
+ * <Td>New York</Td>
24
+ * </Tr>
25
+ * <Tr>
26
+ * <Td>Bob</Td>
27
+ * <Td>25</Td>
28
+ * <Td>Los Angeles</Td>
29
+ * </Tr>
30
+ * <Caption>Example Table</Caption>
31
+ * </Table>
32
+ * ```
33
+ */
34
+ export const Table = '_tag_';
35
+ export const Tr = '_tag_';
36
+ export const Td = '_tag_';
@@ -0,0 +1,30 @@
1
+ declare const _default: import("../../app/appElement.js").AppElement<{
2
+ name: "table";
3
+ type: "block";
4
+ linkable: true;
5
+ Data: undefined;
6
+ Storage: undefined;
7
+ Children: ({
8
+ name: "caption";
9
+ type: "inliner";
10
+ linkable: false;
11
+ Data: import("../caption/core.js").CaptionData | undefined;
12
+ Storage: undefined;
13
+ Children: import("@jsprose/core").InlinerSchema[];
14
+ } | {
15
+ name: "tableRow";
16
+ type: "inliner";
17
+ linkable: false;
18
+ Data: undefined;
19
+ Storage: undefined;
20
+ Children: {
21
+ name: "tableData";
22
+ type: "inliner";
23
+ linkable: false;
24
+ Data: undefined;
25
+ Storage: undefined;
26
+ Children: import("@jsprose/core").InlinerSchema[];
27
+ }[];
28
+ })[];
29
+ }>;
30
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { defineEruditProseAppElement } from "../../app/appElement.js";
2
+ import { tableSchema } from "./core.js";
3
+ export default defineEruditProseAppElement({
4
+ schema: tableSchema,
5
+ component: () => import("./Table.vue"),
6
+ languages: {
7
+ en: () => import("./languages/en.js"),
8
+ ru: () => import("./languages/ru.js")
9
+ },
10
+ icon: () => import("./icon.svg?raw")
11
+ });
@@ -0,0 +1,324 @@
1
+ import { type InlinerSchema, type TagChildren } from '@jsprose/core';
2
+ export declare const tableDataSchema: {
3
+ name: "tableData";
4
+ type: "inliner";
5
+ linkable: false;
6
+ Data: undefined;
7
+ Storage: undefined;
8
+ Children: InlinerSchema[];
9
+ };
10
+ export declare const Td: import("@jsprose/core").Tag<"Td", {
11
+ name: "tableData";
12
+ type: "inliner";
13
+ linkable: false;
14
+ Data: undefined;
15
+ Storage: undefined;
16
+ Children: InlinerSchema[];
17
+ }, TagChildren>;
18
+ export declare const tableDataRegistryItem: import("@jsprose/core").RegistryItem<{
19
+ name: "tableData";
20
+ type: "inliner";
21
+ linkable: false;
22
+ Data: undefined;
23
+ Storage: undefined;
24
+ Children: InlinerSchema[];
25
+ }, {
26
+ Td: import("@jsprose/core").Tag<"Td", {
27
+ name: "tableData";
28
+ type: "inliner";
29
+ linkable: false;
30
+ Data: undefined;
31
+ Storage: undefined;
32
+ Children: InlinerSchema[];
33
+ }, TagChildren>;
34
+ }, undefined>;
35
+ export declare const tableRowSchema: {
36
+ name: "tableRow";
37
+ type: "inliner";
38
+ linkable: false;
39
+ Data: undefined;
40
+ Storage: undefined;
41
+ Children: {
42
+ name: "tableData";
43
+ type: "inliner";
44
+ linkable: false;
45
+ Data: undefined;
46
+ Storage: undefined;
47
+ Children: InlinerSchema[];
48
+ }[];
49
+ };
50
+ export declare const Tr: import("@jsprose/core").Tag<"Tr", {
51
+ name: "tableRow";
52
+ type: "inliner";
53
+ linkable: false;
54
+ Data: undefined;
55
+ Storage: undefined;
56
+ Children: {
57
+ name: "tableData";
58
+ type: "inliner";
59
+ linkable: false;
60
+ Data: undefined;
61
+ Storage: undefined;
62
+ Children: InlinerSchema[];
63
+ }[];
64
+ }, TagChildren>;
65
+ export declare const tableRowRegistryItem: import("@jsprose/core").RegistryItem<{
66
+ name: "tableRow";
67
+ type: "inliner";
68
+ linkable: false;
69
+ Data: undefined;
70
+ Storage: undefined;
71
+ Children: {
72
+ name: "tableData";
73
+ type: "inliner";
74
+ linkable: false;
75
+ Data: undefined;
76
+ Storage: undefined;
77
+ Children: InlinerSchema[];
78
+ }[];
79
+ }, {
80
+ Tr: import("@jsprose/core").Tag<"Tr", {
81
+ name: "tableRow";
82
+ type: "inliner";
83
+ linkable: false;
84
+ Data: undefined;
85
+ Storage: undefined;
86
+ Children: {
87
+ name: "tableData";
88
+ type: "inliner";
89
+ linkable: false;
90
+ Data: undefined;
91
+ Storage: undefined;
92
+ Children: InlinerSchema[];
93
+ }[];
94
+ }, TagChildren>;
95
+ }, undefined>;
96
+ export declare const tableSchema: {
97
+ name: "table";
98
+ type: "block";
99
+ linkable: true;
100
+ Data: undefined;
101
+ Storage: undefined;
102
+ Children: ({
103
+ name: "caption";
104
+ type: "inliner";
105
+ linkable: false;
106
+ Data: import("../caption/core.js").CaptionData | undefined;
107
+ Storage: undefined;
108
+ Children: InlinerSchema[];
109
+ } | {
110
+ name: "tableRow";
111
+ type: "inliner";
112
+ linkable: false;
113
+ Data: undefined;
114
+ Storage: undefined;
115
+ Children: {
116
+ name: "tableData";
117
+ type: "inliner";
118
+ linkable: false;
119
+ Data: undefined;
120
+ Storage: undefined;
121
+ Children: InlinerSchema[];
122
+ }[];
123
+ })[];
124
+ };
125
+ export declare const Table: import("@jsprose/core").Tag<"Table", {
126
+ name: "table";
127
+ type: "block";
128
+ linkable: true;
129
+ Data: undefined;
130
+ Storage: undefined;
131
+ Children: ({
132
+ name: "caption";
133
+ type: "inliner";
134
+ linkable: false;
135
+ Data: import("../caption/core.js").CaptionData | undefined;
136
+ Storage: undefined;
137
+ Children: InlinerSchema[];
138
+ } | {
139
+ name: "tableRow";
140
+ type: "inliner";
141
+ linkable: false;
142
+ Data: undefined;
143
+ Storage: undefined;
144
+ Children: {
145
+ name: "tableData";
146
+ type: "inliner";
147
+ linkable: false;
148
+ Data: undefined;
149
+ Storage: undefined;
150
+ Children: InlinerSchema[];
151
+ }[];
152
+ })[];
153
+ }, TagChildren & import("../../toc.js").ObjPropToc & import("../../snippet.js").ObjPropSnippet & import("../../snippet.js").ObjPropSearch & import("../../snippet.js").ObjPropQuick & import("../../snippet.js").ObjPropSeo>;
154
+ export declare const tableRegistryItem: import("@jsprose/core").RegistryItem<{
155
+ name: "table";
156
+ type: "block";
157
+ linkable: true;
158
+ Data: undefined;
159
+ Storage: undefined;
160
+ Children: ({
161
+ name: "caption";
162
+ type: "inliner";
163
+ linkable: false;
164
+ Data: import("../caption/core.js").CaptionData | undefined;
165
+ Storage: undefined;
166
+ Children: InlinerSchema[];
167
+ } | {
168
+ name: "tableRow";
169
+ type: "inliner";
170
+ linkable: false;
171
+ Data: undefined;
172
+ Storage: undefined;
173
+ Children: {
174
+ name: "tableData";
175
+ type: "inliner";
176
+ linkable: false;
177
+ Data: undefined;
178
+ Storage: undefined;
179
+ Children: InlinerSchema[];
180
+ }[];
181
+ })[];
182
+ }, {
183
+ Table: import("@jsprose/core").Tag<"Table", {
184
+ name: "table";
185
+ type: "block";
186
+ linkable: true;
187
+ Data: undefined;
188
+ Storage: undefined;
189
+ Children: ({
190
+ name: "caption";
191
+ type: "inliner";
192
+ linkable: false;
193
+ Data: import("../caption/core.js").CaptionData | undefined;
194
+ Storage: undefined;
195
+ Children: InlinerSchema[];
196
+ } | {
197
+ name: "tableRow";
198
+ type: "inliner";
199
+ linkable: false;
200
+ Data: undefined;
201
+ Storage: undefined;
202
+ Children: {
203
+ name: "tableData";
204
+ type: "inliner";
205
+ linkable: false;
206
+ Data: undefined;
207
+ Storage: undefined;
208
+ Children: InlinerSchema[];
209
+ }[];
210
+ })[];
211
+ }, TagChildren & import("../../toc.js").ObjPropToc & import("../../snippet.js").ObjPropSnippet & import("../../snippet.js").ObjPropSearch & import("../../snippet.js").ObjPropQuick & import("../../snippet.js").ObjPropSeo>;
212
+ }, undefined>;
213
+ declare const _default: [{
214
+ registryItem: import("@jsprose/core").RegistryItem<{
215
+ name: "tableData";
216
+ type: "inliner";
217
+ linkable: false;
218
+ Data: undefined;
219
+ Storage: undefined;
220
+ Children: InlinerSchema[];
221
+ }, {
222
+ Td: import("@jsprose/core").Tag<"Td", {
223
+ name: "tableData";
224
+ type: "inliner";
225
+ linkable: false;
226
+ Data: undefined;
227
+ Storage: undefined;
228
+ Children: InlinerSchema[];
229
+ }, TagChildren>;
230
+ }, undefined>;
231
+ }, {
232
+ registryItem: import("@jsprose/core").RegistryItem<{
233
+ name: "tableRow";
234
+ type: "inliner";
235
+ linkable: false;
236
+ Data: undefined;
237
+ Storage: undefined;
238
+ Children: {
239
+ name: "tableData";
240
+ type: "inliner";
241
+ linkable: false;
242
+ Data: undefined;
243
+ Storage: undefined;
244
+ Children: InlinerSchema[];
245
+ }[];
246
+ }, {
247
+ Tr: import("@jsprose/core").Tag<"Tr", {
248
+ name: "tableRow";
249
+ type: "inliner";
250
+ linkable: false;
251
+ Data: undefined;
252
+ Storage: undefined;
253
+ Children: {
254
+ name: "tableData";
255
+ type: "inliner";
256
+ linkable: false;
257
+ Data: undefined;
258
+ Storage: undefined;
259
+ Children: InlinerSchema[];
260
+ }[];
261
+ }, TagChildren>;
262
+ }, undefined>;
263
+ }, {
264
+ registryItem: import("@jsprose/core").RegistryItem<{
265
+ name: "table";
266
+ type: "block";
267
+ linkable: true;
268
+ Data: undefined;
269
+ Storage: undefined;
270
+ Children: ({
271
+ name: "caption";
272
+ type: "inliner";
273
+ linkable: false;
274
+ Data: import("../caption/core.js").CaptionData | undefined;
275
+ Storage: undefined;
276
+ Children: InlinerSchema[];
277
+ } | {
278
+ name: "tableRow";
279
+ type: "inliner";
280
+ linkable: false;
281
+ Data: undefined;
282
+ Storage: undefined;
283
+ Children: {
284
+ name: "tableData";
285
+ type: "inliner";
286
+ linkable: false;
287
+ Data: undefined;
288
+ Storage: undefined;
289
+ Children: InlinerSchema[];
290
+ }[];
291
+ })[];
292
+ }, {
293
+ Table: import("@jsprose/core").Tag<"Table", {
294
+ name: "table";
295
+ type: "block";
296
+ linkable: true;
297
+ Data: undefined;
298
+ Storage: undefined;
299
+ Children: ({
300
+ name: "caption";
301
+ type: "inliner";
302
+ linkable: false;
303
+ Data: import("../caption/core.js").CaptionData | undefined;
304
+ Storage: undefined;
305
+ Children: InlinerSchema[];
306
+ } | {
307
+ name: "tableRow";
308
+ type: "inliner";
309
+ linkable: false;
310
+ Data: undefined;
311
+ Storage: undefined;
312
+ Children: {
313
+ name: "tableData";
314
+ type: "inliner";
315
+ linkable: false;
316
+ Data: undefined;
317
+ Storage: undefined;
318
+ Children: InlinerSchema[];
319
+ }[];
320
+ })[];
321
+ }, TagChildren & import("../../toc.js").ObjPropToc & import("../../snippet.js").ObjPropSnippet & import("../../snippet.js").ObjPropSearch & import("../../snippet.js").ObjPropQuick & import("../../snippet.js").ObjPropSeo>;
322
+ }, undefined>;
323
+ }];
324
+ export default _default;