@erudit-js/prose 4.1.1 → 4.2.0

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 (208) hide show
  1. package/dist/app/appElement.d.ts +7 -6
  2. package/dist/app/appElement.js +1 -1
  3. package/dist/app/composables/anchor.d.ts +7 -7
  4. package/dist/app/composables/appElement.d.ts +4 -4
  5. package/dist/app/composables/appElement.js +3 -3
  6. package/dist/app/composables/context.d.ts +3 -2
  7. package/dist/app/composables/elementIcon.d.ts +2 -2
  8. package/dist/app/composables/elementIcon.js +1 -1
  9. package/dist/app/composables/language.d.ts +2 -2
  10. package/dist/app/composables/language.js +1 -1
  11. package/dist/app/composables/storage.d.ts +4 -4
  12. package/dist/app/composables/storage.js +0 -4
  13. package/dist/app/default/Mix.vue +2 -2
  14. package/dist/app/default/Text.vue +2 -2
  15. package/dist/app/shared/Prose.vue +3 -3
  16. package/dist/app/shared/Render.vue +5 -14
  17. package/dist/app/shared/block/AsideMenu.vue +2 -2
  18. package/dist/app/shared/block/AsideMenuCopyLink.vue +1 -1
  19. package/dist/app/shared/block/Block.vue +4 -4
  20. package/dist/app/shared/inliner/Inliner.vue +2 -2
  21. package/dist/coreElement.d.ts +25 -7
  22. package/dist/coreElement.js +2 -2
  23. package/dist/elements/accent/Accent.vue +4 -4
  24. package/dist/elements/accent/AccentColumnSection.vue +2 -2
  25. package/dist/elements/accent/AccentRowSections.vue +2 -2
  26. package/dist/elements/accent/app.d.ts +3 -3
  27. package/dist/elements/accent/app.js +2 -2
  28. package/dist/elements/accent/core.d.ts +61 -300
  29. package/dist/elements/accent/core.js +83 -68
  30. package/dist/elements/callout/Callout.vue +4 -4
  31. package/dist/elements/callout/app.d.ts +1 -8
  32. package/dist/elements/callout/app.js +2 -2
  33. package/dist/elements/callout/core.d.ts +21 -59
  34. package/dist/elements/callout/core.js +18 -17
  35. package/dist/elements/caption/Caption.vue +3 -3
  36. package/dist/elements/caption/app.d.ts +1 -8
  37. package/dist/elements/caption/app.js +2 -2
  38. package/dist/elements/caption/core.d.ts +21 -99
  39. package/dist/elements/caption/core.js +18 -22
  40. package/dist/elements/details/Details.vue +3 -3
  41. package/dist/elements/details/app.d.ts +1 -8
  42. package/dist/elements/details/app.js +2 -2
  43. package/dist/elements/details/core.d.ts +18 -61
  44. package/dist/elements/details/core.js +16 -11
  45. package/dist/elements/diagram/Diagram.vue +14 -11
  46. package/dist/elements/diagram/app.d.ts +1 -29
  47. package/dist/elements/diagram/app.js +2 -2
  48. package/dist/elements/diagram/core.d.ts +14 -177
  49. package/dist/elements/diagram/core.js +5 -8
  50. package/dist/elements/emphasis/Emphasis.vue +3 -3
  51. package/dist/elements/emphasis/app.d.ts +1 -8
  52. package/dist/elements/emphasis/app.js +2 -2
  53. package/dist/elements/emphasis/core.d.ts +13 -76
  54. package/dist/elements/emphasis/core.js +8 -9
  55. package/dist/elements/flex/Flex.vue +3 -3
  56. package/dist/elements/flex/app.d.ts +1 -8
  57. package/dist/elements/flex/app.js +2 -2
  58. package/dist/elements/flex/core.d.ts +16 -58
  59. package/dist/elements/flex/core.js +6 -7
  60. package/dist/elements/gallery/Gallery.vue +3 -3
  61. package/dist/elements/gallery/app.d.ts +1 -22
  62. package/dist/elements/gallery/app.js +2 -2
  63. package/dist/elements/gallery/core.d.ts +11 -132
  64. package/dist/elements/gallery/core.js +4 -5
  65. package/dist/elements/heading/Heading.vue +3 -3
  66. package/dist/elements/heading/_global.d.ts +2 -2
  67. package/dist/elements/heading/app.d.ts +1 -8
  68. package/dist/elements/heading/app.js +2 -2
  69. package/dist/elements/heading/core.d.ts +13 -97
  70. package/dist/elements/heading/core.js +8 -8
  71. package/dist/elements/horizontalLine/app.d.ts +1 -8
  72. package/dist/elements/horizontalLine/app.js +2 -2
  73. package/dist/elements/horizontalLine/core.d.ts +9 -47
  74. package/dist/elements/horizontalLine/core.js +4 -5
  75. package/dist/elements/image/Image.vue +3 -3
  76. package/dist/elements/image/ImageElement.vue +4 -4
  77. package/dist/elements/image/app.d.ts +1 -15
  78. package/dist/elements/image/app.js +2 -2
  79. package/dist/elements/image/core.d.ts +29 -108
  80. package/dist/elements/image/core.js +12 -19
  81. package/dist/elements/image/storage.d.ts +1 -1
  82. package/dist/elements/image/storage.js +6 -6
  83. package/dist/elements/lineBreak/app.d.ts +1 -8
  84. package/dist/elements/lineBreak/app.js +2 -2
  85. package/dist/elements/lineBreak/core.d.ts +9 -47
  86. package/dist/elements/lineBreak/core.js +4 -5
  87. package/dist/elements/link/BlockLink.vue +4 -6
  88. package/dist/elements/link/Link.vue +4 -4
  89. package/dist/elements/link/core.d.ts +6 -6
  90. package/dist/elements/link/core.js +4 -3
  91. package/dist/elements/link/dependency/app.d.ts +1 -15
  92. package/dist/elements/link/dependency/app.js +3 -3
  93. package/dist/elements/link/dependency/core.d.ts +27 -105
  94. package/dist/elements/link/dependency/core.js +6 -8
  95. package/dist/elements/link/hook.d.ts +12 -0
  96. package/dist/elements/link/hook.js +45 -0
  97. package/dist/elements/link/reference/app.d.ts +1 -15
  98. package/dist/elements/link/reference/app.js +3 -3
  99. package/dist/elements/link/reference/core.d.ts +24 -103
  100. package/dist/elements/link/reference/core.js +6 -8
  101. package/dist/elements/link/storage.js +1 -1
  102. package/dist/elements/list/List.vue +7 -5
  103. package/dist/elements/list/_global.d.ts +3 -3
  104. package/dist/elements/list/app.d.ts +1 -15
  105. package/dist/elements/list/app.js +2 -2
  106. package/dist/elements/list/core.d.ts +33 -155
  107. package/dist/elements/list/core.js +20 -18
  108. package/dist/elements/math/app.d.ts +1 -15
  109. package/dist/elements/math/app.js +3 -3
  110. package/dist/elements/math/block.d.ts +31 -43
  111. package/dist/elements/math/block.js +10 -9
  112. package/dist/elements/math/components/BlockMath.vue +4 -4
  113. package/dist/elements/math/components/InlinerMath.vue +4 -4
  114. package/dist/elements/math/core.d.ts +25 -53
  115. package/dist/elements/math/core.js +3 -11
  116. package/dist/elements/math/inliner.d.ts +24 -36
  117. package/dist/elements/math/inliner.js +10 -12
  118. package/dist/elements/paragraph/Paragraph.vue +3 -3
  119. package/dist/elements/paragraph/app.d.ts +1 -8
  120. package/dist/elements/paragraph/app.js +2 -2
  121. package/dist/elements/paragraph/core.d.ts +12 -53
  122. package/dist/elements/paragraph/core.js +6 -7
  123. package/dist/elements/problem/app.d.ts +1 -29
  124. package/dist/elements/problem/app.js +4 -4
  125. package/dist/elements/problem/components/Problem.vue +3 -3
  126. package/dist/elements/problem/components/ProblemContent.vue +15 -21
  127. package/dist/elements/problem/components/ProblemExpanderSection.vue +2 -2
  128. package/dist/elements/problem/components/Problems.vue +11 -7
  129. package/dist/elements/problem/components/SubProblem.vue +3 -4
  130. package/dist/elements/problem/components/expanders/Check.vue +3 -3
  131. package/dist/elements/problem/components/expanders/Checks.vue +6 -3
  132. package/dist/elements/problem/components/expanders/DefaultPlusSections.vue +3 -7
  133. package/dist/elements/problem/components/expanders/Hint.vue +3 -3
  134. package/dist/elements/problem/composables/problemScript.d.ts +2 -2
  135. package/dist/elements/problem/core.d.ts +63 -299
  136. package/dist/elements/problem/core.js +9 -11
  137. package/dist/elements/problem/hook.d.ts +1 -0
  138. package/dist/elements/problem/hook.js +14 -0
  139. package/dist/elements/problem/problem.d.ts +20 -77
  140. package/dist/elements/problem/problem.js +6 -6
  141. package/dist/elements/problem/problemCheck.d.ts +33 -83
  142. package/dist/elements/problem/problemCheck.js +16 -10
  143. package/dist/elements/problem/problemContent.d.ts +54 -401
  144. package/dist/elements/problem/problemContent.js +47 -58
  145. package/dist/elements/problem/problemScript.d.ts +18 -10
  146. package/dist/elements/problem/problemScript.js +15 -26
  147. package/dist/elements/problem/problems.d.ts +29 -188
  148. package/dist/elements/problem/problems.js +11 -15
  149. package/dist/elements/problem/storage.d.ts +1 -1
  150. package/dist/elements/problem/storage.js +2 -3
  151. package/dist/elements/table/Table.vue +3 -3
  152. package/dist/elements/table/app.d.ts +1 -29
  153. package/dist/elements/table/app.js +2 -2
  154. package/dist/elements/table/core.d.ts +28 -309
  155. package/dist/elements/table/core.js +17 -29
  156. package/dist/elements/video/Video.vue +4 -4
  157. package/dist/elements/video/app.d.ts +1 -15
  158. package/dist/elements/video/app.js +2 -2
  159. package/dist/elements/video/core.d.ts +26 -106
  160. package/dist/elements/video/core.js +11 -16
  161. package/dist/elements/video/storage.d.ts +1 -1
  162. package/dist/elements/video/storage.js +2 -3
  163. package/dist/error.d.ts +3 -0
  164. package/dist/error.js +6 -0
  165. package/dist/include.d.ts +4 -4
  166. package/dist/include.js +6 -12
  167. package/dist/index.d.ts +11 -11
  168. package/dist/index.js +11 -11
  169. package/dist/rawElement.d.ts +9 -6
  170. package/dist/rawElement.js +4 -0
  171. package/dist/rawToProse/countSchemas.d.ts +1 -0
  172. package/dist/rawToProse/countSchemas.js +11 -0
  173. package/dist/rawToProse/hook.d.ts +39 -0
  174. package/dist/rawToProse/hook.js +6 -0
  175. package/dist/rawToProse/index.d.ts +34 -0
  176. package/dist/rawToProse/index.js +92 -0
  177. package/dist/rawToProse/uniqueTitles.d.ts +1 -0
  178. package/dist/rawToProse/uniqueTitles.js +11 -0
  179. package/dist/shared/filePath.js +31 -4
  180. package/dist/shared/paragraphWrap.d.ts +3 -3
  181. package/dist/shared/paragraphWrap.js +7 -12
  182. package/dist/slugify/index.d.ts +3 -1
  183. package/dist/slugify/index.js +5 -6
  184. package/dist/slugify/languages/en.js +1 -1
  185. package/dist/slugify/languages/ru.js +1 -1
  186. package/dist/snippet.d.ts +39 -33
  187. package/dist/snippet.js +139 -73
  188. package/dist/tag.d.ts +22 -19
  189. package/dist/tag.js +19 -15
  190. package/dist/toc.d.ts +12 -18
  191. package/dist/toc.js +120 -42
  192. package/package.json +8 -7
  193. package/dist/app/default/Inliners.vue +0 -11
  194. package/dist/context.d.ts +0 -4
  195. package/dist/context.js +0 -1
  196. package/dist/elements/link/step.d.ts +0 -16
  197. package/dist/elements/link/step.js +0 -36
  198. package/dist/elements/problem/step.d.ts +0 -5
  199. package/dist/elements/problem/step.js +0 -13
  200. package/dist/resolve.d.ts +0 -21
  201. package/dist/resolve.js +0 -102
  202. package/dist/resolveStep.d.ts +0 -9
  203. package/dist/resolveStep.js +0 -3
  204. package/dist/title.d.ts +0 -8
  205. package/dist/title.js +0 -6
  206. package/dist/utils/docs.d.ts +0 -1
  207. package/dist/utils/docs.js +0 -22
  208. /package/{types.d.ts → raw.d.ts} +0 -0
@@ -1,4 +1,5 @@
1
- import { type NoTagChildren, type TagChildren } from '@jsprose/core';
1
+ import type { XOR } from 'ts-xor';
2
+ import { type OptionalChildren, type Schema } from 'tsprose';
2
3
  export interface ProblemCheckInfo {
3
4
  label?: string;
4
5
  hint?: string;
@@ -7,113 +8,59 @@ export interface ProblemCheckInfo {
7
8
  export type ProblemCheckData = ProblemCheckInfo & {
8
9
  serializedValidator: any;
9
10
  };
10
- export type ProblemCheckSchema = {
11
+ export interface ProblemCheckSchema extends Schema {
11
12
  name: 'problemCheck';
12
13
  type: 'block';
13
14
  linkable: false;
14
15
  Data: ProblemCheckData;
15
16
  Storage: undefined;
16
17
  Children: ProblemCheckSchema[] | undefined;
17
- };
18
- export declare const problemCheckSchema: {
19
- name: "problemCheck";
20
- type: "block";
21
- linkable: false;
22
- Data: ProblemCheckData;
23
- Storage: undefined;
24
- Children: ProblemCheckSchema[] | undefined;
25
- };
26
- type UndefinedOnly<T> = {
27
- [K in keyof T]?: undefined;
28
- };
29
- type OneOf<T extends Record<string, any>> = {
30
- [K in keyof T]: Pick<T, K> & UndefinedOnly<Omit<T, K>>;
31
- }[keyof T];
32
- export declare const ProblemCheck: import("@jsprose/core").Tag<"ProblemCheck", {
33
- name: "problemCheck";
34
- type: "block";
35
- linkable: false;
36
- Data: ProblemCheckData;
37
- Storage: undefined;
38
- Children: ProblemCheckSchema[] | undefined;
39
- }, ({
18
+ }
19
+ export declare const problemCheckSchema: ProblemCheckSchema;
20
+ export declare const ProblemCheck: import("../../tag.js").ToEruditTag<ProblemCheckSchema, "ProblemCheck", {
40
21
  label?: string;
41
22
  hint?: string;
42
23
  placeholder?: string;
43
- } & (OneOf<{
24
+ } & (XOR<{
44
25
  yes: true;
26
+ }, {
45
27
  no: true;
46
- answer: ProblemCheckValue;
28
+ }, {
29
+ boolean: boolean;
30
+ }, {
31
+ answer: ProblemCheckValue | ProblemCheckValue[];
32
+ }, {
47
33
  answers: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[] | {
48
34
  ordered?: boolean;
49
35
  separator?: string;
50
36
  values: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[];
51
37
  };
52
- script: string;
53
- }> & (TagChildren | NoTagChildren))) & {}>;
54
- export declare const problemCheckRegistryItem: import("@jsprose/core").RegistryItem<{
55
- name: "problemCheck";
56
- type: "block";
57
- linkable: false;
58
- Data: ProblemCheckData;
59
- Storage: undefined;
60
- Children: ProblemCheckSchema[] | undefined;
61
38
  }, {
62
- ProblemCheck: import("@jsprose/core").Tag<"ProblemCheck", {
63
- name: "problemCheck";
64
- type: "block";
65
- linkable: false;
66
- Data: ProblemCheckData;
67
- Storage: undefined;
68
- Children: ProblemCheckSchema[] | undefined;
69
- }, ({
39
+ script: string;
40
+ }> & OptionalChildren)>;
41
+ export declare const problemCheckCoreElement: {
42
+ readonly schema: ProblemCheckSchema;
43
+ readonly tags: [import("../../tag.js").ToEruditTag<ProblemCheckSchema, "ProblemCheck", {
70
44
  label?: string;
71
45
  hint?: string;
72
46
  placeholder?: string;
73
- } & (OneOf<{
47
+ } & (XOR<{
74
48
  yes: true;
49
+ }, {
75
50
  no: true;
76
- answer: ProblemCheckValue;
51
+ }, {
52
+ boolean: boolean;
53
+ }, {
54
+ answer: ProblemCheckValue | ProblemCheckValue[];
55
+ }, {
77
56
  answers: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[] | {
78
57
  ordered?: boolean;
79
58
  separator?: string;
80
59
  values: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[];
81
60
  };
82
- script: string;
83
- }> & (TagChildren | NoTagChildren))) & {}>;
84
- }, undefined>;
85
- export declare const problemCheckCoreElement: {
86
- registryItem: import("@jsprose/core").RegistryItem<{
87
- name: "problemCheck";
88
- type: "block";
89
- linkable: false;
90
- Data: ProblemCheckData;
91
- Storage: undefined;
92
- Children: ProblemCheckSchema[] | undefined;
93
61
  }, {
94
- ProblemCheck: import("@jsprose/core").Tag<"ProblemCheck", {
95
- name: "problemCheck";
96
- type: "block";
97
- linkable: false;
98
- Data: ProblemCheckData;
99
- Storage: undefined;
100
- Children: ProblemCheckSchema[] | undefined;
101
- }, ({
102
- label?: string;
103
- hint?: string;
104
- placeholder?: string;
105
- } & (OneOf<{
106
- yes: true;
107
- no: true;
108
- answer: ProblemCheckValue;
109
- answers: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[] | {
110
- ordered?: boolean;
111
- separator?: string;
112
- values: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[];
113
- };
114
- script: string;
115
- }> & (TagChildren | NoTagChildren))) & {}>;
116
- }, undefined>;
62
+ script: string;
63
+ }> & OptionalChildren)>];
117
64
  };
118
65
  export interface ProblemCheckValidatorBoolean {
119
66
  type: 'boolean';
@@ -123,7 +70,7 @@ export type ProblemCheckValue = undefined | number | string | RegExp;
123
70
  export type ProblemCheckValueDefined = Exclude<ProblemCheckValue, undefined>;
124
71
  export interface ProblemCheckValidatorValue {
125
72
  type: 'value';
126
- answer: ProblemCheckValue;
73
+ answer: ProblemCheckValue | ProblemCheckValue[];
127
74
  }
128
75
  export interface ProblemCheckValidatorArray {
129
76
  type: 'array';
@@ -142,7 +89,11 @@ export declare function toSerializableValidator(validator: ProblemCheckValidator
142
89
  readonly type: "regexp";
143
90
  readonly source: string;
144
91
  readonly flags: string;
145
- } | undefined;
92
+ } | (string | number | {
93
+ readonly type: "regexp";
94
+ readonly source: string;
95
+ readonly flags: string;
96
+ } | undefined)[] | undefined;
146
97
  ordered?: undefined;
147
98
  separator?: undefined;
148
99
  answers?: undefined;
@@ -163,4 +114,3 @@ export declare function toSerializableValidator(validator: ProblemCheckValidator
163
114
  };
164
115
  export declare function fromSerializableValidator(serializedValidator: any): ProblemCheckValidator;
165
116
  export declare function checkProblemAnswer(answer: string, yesRegexp: RegExp, noRegexp: RegExp, validator: ProblemCheckValidator): boolean;
166
- export {};
@@ -1,11 +1,12 @@
1
- import { defineRegistryItem, defineSchema, ensureTagChildren, ProseError } from "@jsprose/core";
1
+ import { defineSchema, ensureTagChildren } from "tsprose";
2
2
  import { defineEruditTag } from "../../tag.js";
3
- import { defineEruditProseCoreElement } from "../../coreElement.js";
3
+ import { defineProseCoreElement } from "../../coreElement.js";
4
+ import { EruditProseError } from "../../error.js";
4
5
  export const problemCheckSchema = defineSchema({
5
6
  name: "problemCheck",
6
7
  type: "block",
7
8
  linkable: false
8
- })();
9
+ });
9
10
  export const ProblemCheck = defineEruditTag({
10
11
  tagName: "ProblemCheck",
11
12
  schema: problemCheckSchema
@@ -39,6 +40,11 @@ export const ProblemCheck = defineEruditTag({
39
40
  type: "boolean",
40
41
  answer: false
41
42
  };
43
+ } else if ("boolean" in props) {
44
+ validator = {
45
+ type: "boolean",
46
+ answer: !!props.boolean
47
+ };
42
48
  } else if ("answer" in props) {
43
49
  validator = {
44
50
  type: "value",
@@ -73,11 +79,10 @@ export const ProblemCheck = defineEruditTag({
73
79
  serializedValidator: toSerializableValidator(validator)
74
80
  };
75
81
  });
76
- export const problemCheckRegistryItem = defineRegistryItem({
82
+ export const problemCheckCoreElement = defineProseCoreElement({
77
83
  schema: problemCheckSchema,
78
84
  tags: [ProblemCheck]
79
85
  });
80
- export const problemCheckCoreElement = defineEruditProseCoreElement({ registryItem: problemCheckRegistryItem });
81
86
  export function toSerializableValidator(validator) {
82
87
  if (validator.type === "boolean") {
83
88
  return validator;
@@ -95,7 +100,7 @@ export function toSerializableValidator(validator) {
95
100
  if (validator.type === "value") {
96
101
  return {
97
102
  type: "value",
98
- answer: toSerializableValue(validator.answer)
103
+ answer: Array.isArray(validator.answer) ? validator.answer.map(toSerializableValue) : toSerializableValue(validator.answer)
99
104
  };
100
105
  }
101
106
  if (validator.type === "array") {
@@ -129,7 +134,7 @@ export function fromSerializableValidator(serializedValidator) {
129
134
  if (serializedValidator.type === "value") {
130
135
  return {
131
136
  type: "value",
132
- answer: fromSerializableValue(serializedValidator.answer)
137
+ answer: Array.isArray(serializedValidator.answer) ? serializedValidator.answer.map(fromSerializableValue) : fromSerializableValue(serializedValidator.answer)
133
138
  };
134
139
  }
135
140
  if (serializedValidator.type === "array") {
@@ -164,13 +169,14 @@ export function checkProblemAnswer(answer, yesRegexp, noRegexp, validator) {
164
169
  return answer === String(expected);
165
170
  };
166
171
  const checkAnswer = (expect, answer) => {
167
- if (expect === undefined) {
172
+ if (expect === undefined || expect === null) {
168
173
  return answer.trim() === "";
169
174
  }
170
175
  return checkDefinedAnswer(expect, answer);
171
176
  };
172
177
  if (validator.type === "value") {
173
- return checkAnswer(validator.answer, answer);
178
+ const anyOf = Array.isArray(validator.answer) ? validator.answer : [validator.answer];
179
+ return anyOf.some((expect) => checkAnswer(expect, answer));
174
180
  }
175
181
  if (validator.type === "array") {
176
182
  const separatorRegexp = new RegExp(`\\s*${validator.separator.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\s*`, "g");
@@ -199,5 +205,5 @@ export function checkProblemAnswer(answer, yesRegexp, noRegexp, validator) {
199
205
  }
200
206
  return true;
201
207
  }
202
- throw new ProseError(`"checkProblemAnswer" not implemented for type "${validator.type}"!`);
208
+ throw new EruditProseError(`"checkProblemAnswer" not implemented for type "${validator.type}"!`);
203
209
  }