@erudit-js/prose 4.0.0 → 4.1.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.
- package/dist/app/composables/context.d.ts +6 -1
- package/dist/app/default/Inliners.vue +11 -11
- package/dist/app/default/Mix.vue +11 -11
- package/dist/app/default/Text.vue +25 -25
- package/dist/app/language/element.d.ts +1 -1
- package/dist/app/shared/Prose.vue +40 -40
- package/dist/app/shared/Render.vue +51 -51
- package/dist/app/shared/assets/block.svg +2 -2
- package/dist/app/shared/assets/check.svg +2 -2
- package/dist/app/shared/assets/inliner.svg +2 -2
- package/dist/app/shared/assets/plus.svg +2 -2
- package/dist/app/shared/block/AsideMenu.vue +44 -44
- package/dist/app/shared/block/AsideMenuButton.vue +51 -51
- package/dist/app/shared/block/AsideMenuCopyLink.vue +40 -40
- package/dist/app/shared/block/AsideMenuSeparator.vue +3 -3
- package/dist/app/shared/block/Block.vue +270 -270
- package/dist/app/shared/inliner/Inliner.vue +11 -11
- package/dist/app/shared/photoswipe/style.css +22 -22
- package/dist/elements/accent/Accent.vue +89 -88
- package/dist/elements/accent/AccentColumnSection.vue +61 -61
- package/dist/elements/accent/AccentRowSections.vue +64 -64
- package/dist/elements/callout/Callout.vue +81 -81
- package/dist/elements/callout/_global.d.ts +15 -15
- package/dist/elements/caption/Caption.vue +44 -44
- package/dist/elements/caption/_global.d.ts +26 -26
- package/dist/elements/details/Details.vue +49 -49
- package/dist/elements/details/_global.d.ts +27 -27
- package/dist/elements/details/icon.svg +2 -2
- package/dist/elements/diagram/Diagram.vue +356 -360
- package/dist/elements/diagram/_global.d.ts +19 -19
- package/dist/elements/emphasis/Emphasis.vue +25 -25
- package/dist/elements/emphasis/_global.d.ts +18 -18
- package/dist/elements/flex/Flex.vue +36 -36
- package/dist/elements/flex/_global.d.ts +23 -23
- package/dist/elements/gallery/Gallery.vue +56 -56
- package/dist/elements/gallery/_global.d.ts +18 -18
- package/dist/elements/heading/Heading.vue +44 -44
- package/dist/elements/heading/_global.d.ts +42 -42
- package/dist/elements/heading/icon.svg +2 -2
- package/dist/elements/horizontalLine/HorizontalLine.vue +6 -6
- package/dist/elements/horizontalLine/_global.d.ts +17 -17
- package/dist/elements/image/Image.vue +15 -15
- package/dist/elements/image/ImageElement.vue +80 -80
- package/dist/elements/image/_global.d.ts +18 -18
- package/dist/elements/lineBreak/LineBreak.vue +3 -3
- package/dist/elements/lineBreak/_global.d.ts +18 -18
- package/dist/elements/link/BlockLink.vue +159 -108
- package/dist/elements/link/Link.vue +119 -92
- package/dist/elements/link/core.js +1 -1
- package/dist/elements/link/dependency/_global.d.ts +47 -47
- package/dist/elements/link/dependency/app.d.ts +2 -2
- package/dist/elements/link/dependency/core.d.ts +12 -18
- package/dist/elements/link/dependency/core.js +1 -17
- package/dist/elements/link/reference/_global.d.ts +49 -49
- package/dist/elements/link/reference/languages/en.d.ts +2 -3
- package/dist/elements/link/reference/languages/en.js +5 -1
- package/dist/elements/link/reference/languages/ru.d.ts +2 -3
- package/dist/elements/link/reference/languages/ru.js +5 -1
- package/dist/elements/link/reference/phrases.d.ts +5 -0
- package/dist/elements/link/reference/phrases.js +1 -0
- package/dist/elements/link/step.d.ts +16 -0
- package/dist/elements/link/step.js +36 -0
- package/dist/elements/link/storage.d.ts +9 -5
- package/dist/elements/link/storage.js +4 -4
- package/dist/elements/list/List.vue +58 -58
- package/dist/elements/list/_global.d.ts +50 -50
- package/dist/elements/math/_global.d.ts +79 -72
- package/dist/elements/math/_global.ts +3 -3
- package/dist/elements/math/block.d.ts +2 -0
- package/dist/elements/math/block.js +42 -29
- package/dist/elements/math/components/BlockMath.vue +30 -30
- package/dist/elements/math/components/InlinerMath.vue +65 -65
- package/dist/elements/math/components/Katex.vue +88 -88
- package/dist/elements/math/components/MathGroup.vue +58 -41
- package/dist/elements/paragraph/Paragraph.vue +25 -25
- package/dist/elements/paragraph/_global.d.ts +27 -27
- package/dist/elements/paragraph/icon.svg +3 -3
- package/dist/elements/problem/_global.d.ts +257 -112
- package/dist/elements/problem/app.d.ts +7 -7
- package/dist/elements/problem/app.js +13 -12
- package/dist/elements/problem/assets/actions/answer.svg +2 -2
- package/dist/elements/problem/assets/actions/check.svg +2 -2
- package/dist/elements/problem/assets/actions/generate.svg +2 -2
- package/dist/elements/problem/assets/actions/hint.svg +2 -2
- package/dist/elements/problem/assets/actions/note.svg +2 -2
- package/dist/elements/problem/assets/actions/solution.svg +2 -2
- package/dist/elements/problem/assets/icon.svg +2 -2
- package/dist/elements/problem/components/Problem.vue +22 -22
- package/dist/elements/problem/components/ProblemButton.vue +20 -20
- package/dist/elements/problem/components/ProblemButtonGenerate.vue +96 -0
- package/dist/elements/problem/components/ProblemContainer.vue +8 -8
- package/dist/elements/problem/components/ProblemContent.vue +266 -356
- package/dist/elements/problem/components/ProblemExpander.vue +7 -7
- package/dist/elements/problem/components/ProblemExpanderSection.vue +57 -57
- package/dist/elements/problem/components/ProblemHeader.vue +100 -100
- package/dist/elements/problem/components/Problems.vue +83 -83
- package/dist/elements/problem/components/SubProblem.vue +14 -14
- package/dist/elements/problem/components/expanders/Check.vue +200 -153
- package/dist/elements/problem/components/expanders/Checks.vue +146 -146
- package/dist/elements/problem/components/expanders/DefaultPlusSections.vue +36 -38
- package/dist/elements/problem/components/expanders/Hint.vue +26 -26
- package/dist/elements/problem/core.d.ts +55 -28
- package/dist/elements/problem/core.js +2 -1
- package/dist/elements/problem/languages/{en.d.ts → problem/en.d.ts} +1 -1
- package/dist/elements/problem/languages/problem/en.js +6 -0
- package/dist/elements/problem/languages/{ru.d.ts → problem/ru.d.ts} +1 -1
- package/dist/elements/problem/languages/problem/ru.js +6 -0
- package/dist/elements/problem/languages/problems/en.d.ts +3 -0
- package/dist/elements/problem/languages/problems/en.js +6 -0
- package/dist/elements/problem/languages/problems/ru.d.ts +3 -0
- package/dist/elements/problem/languages/problems/ru.js +6 -0
- package/dist/elements/problem/languages/shared/en.d.ts +3 -0
- package/dist/elements/problem/languages/{en.js → shared/en.js} +12 -3
- package/dist/elements/problem/languages/shared/ru.d.ts +3 -0
- package/dist/elements/problem/languages/{ru.js → shared/ru.js} +12 -3
- package/dist/elements/problem/phrases.d.ts +4 -0
- package/dist/elements/problem/problemCheck.d.ts +166 -0
- package/dist/elements/problem/problemCheck.js +203 -0
- package/dist/elements/problem/problemContent.d.ts +2 -120
- package/dist/elements/problem/problemContent.js +2 -127
- package/dist/elements/problem/problemScript.d.ts +6 -1
- package/dist/elements/table/Table.vue +100 -100
- package/dist/elements/table/_global.d.ts +36 -36
- package/dist/elements/video/Video.vue +110 -110
- package/dist/elements/video/_global.d.ts +18 -18
- package/dist/resolve.d.ts +2 -1
- package/dist/resolve.js +8 -5
- package/package.json +4 -4
- package/types.d.ts +4 -4
|
@@ -1,38 +1,36 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
</ProblemExpander>
|
|
38
|
-
</template>
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import {
|
|
3
|
+
isProseElement,
|
|
4
|
+
type AnySchema,
|
|
5
|
+
type ProseElement,
|
|
6
|
+
} from '@jsprose/core';
|
|
7
|
+
|
|
8
|
+
import { problemSectionSchema } from '../../problemContent.js';
|
|
9
|
+
import ProblemExpander from '../ProblemExpander.vue';
|
|
10
|
+
import ProblemExpanderSection from '../ProblemExpanderSection.vue';
|
|
11
|
+
import Render from '../../../../app/shared/Render.vue';
|
|
12
|
+
|
|
13
|
+
const { value } = defineProps<{ value: ProseElement<AnySchema> }>();
|
|
14
|
+
|
|
15
|
+
const defaultBlocks = value.children!.filter(
|
|
16
|
+
(element) => !isProseElement(element, problemSectionSchema),
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const sections = value.children!.filter((element) =>
|
|
20
|
+
isProseElement(element, problemSectionSchema),
|
|
21
|
+
) as ProseElement<typeof problemSectionSchema>[];
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<template>
|
|
25
|
+
<ProblemExpander>
|
|
26
|
+
<div v-if="defaultBlocks.length" class="py-(--proseAsideWidth)">
|
|
27
|
+
<Render v-for="child of defaultBlocks" :element="child" />
|
|
28
|
+
</div>
|
|
29
|
+
<ProblemExpanderSection
|
|
30
|
+
v-if="sections.length"
|
|
31
|
+
v-for="section of sections"
|
|
32
|
+
:title="section.data"
|
|
33
|
+
:element="section"
|
|
34
|
+
/>
|
|
35
|
+
</ProblemExpander>
|
|
36
|
+
</template>
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import type { ProseElement } from '@jsprose/core';
|
|
3
|
-
|
|
4
|
-
import type { problemHintSchema } from '../../problemContent.js';
|
|
5
|
-
import { useProblemPhrase } from '../../composables/phrase.js';
|
|
6
|
-
import ProblemExpander from '../ProblemExpander.vue';
|
|
7
|
-
import Render from '../../../../app/shared/Render.vue';
|
|
8
|
-
import ProblemExpanderSection from '../ProblemExpanderSection.vue';
|
|
9
|
-
|
|
10
|
-
defineProps<{ value: ProseElement<typeof problemHintSchema>[] }>();
|
|
11
|
-
const phrase = await useProblemPhrase();
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
<template>
|
|
15
|
-
<ProblemExpander>
|
|
16
|
-
<div v-if="value.length === 1" class="py-(--proseAsideWidth)">
|
|
17
|
-
<Render v-for="child of value[0]!.children" :element="child" />
|
|
18
|
-
</div>
|
|
19
|
-
<ProblemExpanderSection
|
|
20
|
-
v-else
|
|
21
|
-
v-for="(hint, i) of value"
|
|
22
|
-
:title="phrase.action_hint + ' ' + (i + 1)"
|
|
23
|
-
:element="hint"
|
|
24
|
-
/>
|
|
25
|
-
</ProblemExpander>
|
|
26
|
-
</template>
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import type { ProseElement } from '@jsprose/core';
|
|
3
|
+
|
|
4
|
+
import type { problemHintSchema } from '../../problemContent.js';
|
|
5
|
+
import { useProblemPhrase } from '../../composables/phrase.js';
|
|
6
|
+
import ProblemExpander from '../ProblemExpander.vue';
|
|
7
|
+
import Render from '../../../../app/shared/Render.vue';
|
|
8
|
+
import ProblemExpanderSection from '../ProblemExpanderSection.vue';
|
|
9
|
+
|
|
10
|
+
defineProps<{ value: ProseElement<typeof problemHintSchema>[] }>();
|
|
11
|
+
const phrase = await useProblemPhrase();
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<template>
|
|
15
|
+
<ProblemExpander>
|
|
16
|
+
<div v-if="value.length === 1" class="py-(--proseAsideWidth)">
|
|
17
|
+
<Render v-for="child of value[0]!.children" :element="child" />
|
|
18
|
+
</div>
|
|
19
|
+
<ProblemExpanderSection
|
|
20
|
+
v-else
|
|
21
|
+
v-for="(hint, i) of value"
|
|
22
|
+
:title="phrase.action_hint + ' ' + (i + 1)"
|
|
23
|
+
:element="hint"
|
|
24
|
+
/>
|
|
25
|
+
</ProblemExpander>
|
|
26
|
+
</template>
|
|
@@ -93,68 +93,95 @@ declare const _default: [{
|
|
|
93
93
|
name: "problemCheck";
|
|
94
94
|
type: "block";
|
|
95
95
|
linkable: false;
|
|
96
|
-
Data: import("./
|
|
96
|
+
Data: import("./problemCheck.js").ProblemCheckData;
|
|
97
97
|
Storage: undefined;
|
|
98
|
-
Children: import("
|
|
98
|
+
Children: import("./problemCheck.js").ProblemCheckSchema[] | undefined;
|
|
99
99
|
}, {
|
|
100
100
|
ProblemCheck: import("@jsprose/core").Tag<"ProblemCheck", {
|
|
101
101
|
name: "problemCheck";
|
|
102
102
|
type: "block";
|
|
103
103
|
linkable: false;
|
|
104
|
-
Data: import("./
|
|
104
|
+
Data: import("./problemCheck.js").ProblemCheckData;
|
|
105
105
|
Storage: undefined;
|
|
106
|
-
Children: import("
|
|
106
|
+
Children: import("./problemCheck.js").ProblemCheckSchema[] | undefined;
|
|
107
107
|
}, ({
|
|
108
108
|
label?: string;
|
|
109
109
|
hint?: string;
|
|
110
110
|
placeholder?: string;
|
|
111
111
|
} & (((Pick<{
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
yes: true;
|
|
113
|
+
no: true;
|
|
114
|
+
answer: import("./problemCheck.js").ProblemCheckValue;
|
|
115
|
+
answers: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[] | {
|
|
116
|
+
ordered?: boolean;
|
|
117
|
+
separator?: string;
|
|
118
|
+
values: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[];
|
|
117
119
|
};
|
|
118
120
|
script: string;
|
|
119
121
|
}, "answer"> & {
|
|
120
|
-
|
|
122
|
+
yes?: undefined;
|
|
123
|
+
no?: undefined;
|
|
121
124
|
answers?: undefined;
|
|
122
125
|
script?: undefined;
|
|
123
126
|
}) | (Pick<{
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
yes: true;
|
|
128
|
+
no: true;
|
|
129
|
+
answer: import("./problemCheck.js").ProblemCheckValue;
|
|
130
|
+
answers: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[] | {
|
|
131
|
+
ordered?: boolean;
|
|
132
|
+
separator?: string;
|
|
133
|
+
values: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[];
|
|
129
134
|
};
|
|
130
135
|
script: string;
|
|
131
|
-
}, "
|
|
136
|
+
}, "yes"> & {
|
|
132
137
|
answer?: undefined;
|
|
138
|
+
no?: undefined;
|
|
133
139
|
answers?: undefined;
|
|
134
140
|
script?: undefined;
|
|
135
141
|
}) | (Pick<{
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
142
|
+
yes: true;
|
|
143
|
+
no: true;
|
|
144
|
+
answer: import("./problemCheck.js").ProblemCheckValue;
|
|
145
|
+
answers: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[] | {
|
|
146
|
+
ordered?: boolean;
|
|
147
|
+
separator?: string;
|
|
148
|
+
values: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[];
|
|
149
|
+
};
|
|
150
|
+
script: string;
|
|
151
|
+
}, "no"> & {
|
|
152
|
+
answer?: undefined;
|
|
153
|
+
yes?: undefined;
|
|
154
|
+
answers?: undefined;
|
|
155
|
+
script?: undefined;
|
|
156
|
+
}) | (Pick<{
|
|
157
|
+
yes: true;
|
|
158
|
+
no: true;
|
|
159
|
+
answer: import("./problemCheck.js").ProblemCheckValue;
|
|
160
|
+
answers: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[] | {
|
|
161
|
+
ordered?: boolean;
|
|
162
|
+
separator?: string;
|
|
163
|
+
values: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[];
|
|
141
164
|
};
|
|
142
165
|
script: string;
|
|
143
166
|
}, "answers"> & {
|
|
144
167
|
answer?: undefined;
|
|
145
|
-
|
|
168
|
+
yes?: undefined;
|
|
169
|
+
no?: undefined;
|
|
146
170
|
script?: undefined;
|
|
147
171
|
}) | (Pick<{
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
172
|
+
yes: true;
|
|
173
|
+
no: true;
|
|
174
|
+
answer: import("./problemCheck.js").ProblemCheckValue;
|
|
175
|
+
answers: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[] | {
|
|
176
|
+
ordered?: boolean;
|
|
177
|
+
separator?: string;
|
|
178
|
+
values: (import("./problemCheck.js").ProblemCheckValueDefined | import("./problemCheck.js").ProblemCheckValueDefined[])[];
|
|
153
179
|
};
|
|
154
180
|
script: string;
|
|
155
181
|
}, "script"> & {
|
|
156
182
|
answer?: undefined;
|
|
157
|
-
|
|
183
|
+
yes?: undefined;
|
|
184
|
+
no?: undefined;
|
|
158
185
|
answers?: undefined;
|
|
159
186
|
})) & (import("@jsprose/core").TagChildren | import("@jsprose/core").NoTagChildren))) & {}>;
|
|
160
187
|
}, undefined>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { defineEruditProseCoreElements } from "../../coreElement.js";
|
|
2
2
|
import { problemCoreElement } from "./problem.js";
|
|
3
|
-
import {
|
|
3
|
+
import { problemCheckCoreElement } from "./problemCheck.js";
|
|
4
|
+
import { problemAnswer, problemDescriptionCoreElement, problemHintCoreElement, problemNote, problemSectionCoreElement, problemSolution } from "./problemContent.js";
|
|
4
5
|
import { problemsCoreElement, subProblemCoreElement } from "./problems.js";
|
|
5
6
|
export default defineEruditProseCoreElements(
|
|
6
7
|
problemDescriptionCoreElement,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineElementLanguage } from "
|
|
1
|
+
import { defineElementLanguage } from "../../../../app/language/element.js";
|
|
2
2
|
export default defineElementLanguage({
|
|
3
|
-
element_name: "
|
|
3
|
+
element_name: "",
|
|
4
4
|
"level.example": "Example",
|
|
5
5
|
"level.easy": "Elementary",
|
|
6
6
|
"level.medium": "Intermediate",
|
|
@@ -20,5 +20,14 @@ export default defineElementLanguage({
|
|
|
20
20
|
action_note: "Note",
|
|
21
21
|
action_check: "Check",
|
|
22
22
|
action_generate: "Similar",
|
|
23
|
-
seed_explain: "The seed from which all random values in the problem are calculated. Same seeds = completely identical problems."
|
|
23
|
+
seed_explain: "The seed from which all random values in the problem are calculated. Same seeds = completely identical problems.",
|
|
24
|
+
yes_regexp: /^\s*(yes|y|true|1)\s*$/i,
|
|
25
|
+
no_regexp: /^\s*(no|n|false|0)\s*$/i,
|
|
26
|
+
boolean_check_hint: "Yes/No",
|
|
27
|
+
array_check_hint: (ordered, separator) => {
|
|
28
|
+
let hint = "";
|
|
29
|
+
hint += separator === "," ? "Comma separated." : `Separator "${separator}".`;
|
|
30
|
+
hint += ordered ? " Order matters." : " In any order.";
|
|
31
|
+
return hint;
|
|
32
|
+
}
|
|
24
33
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineElementLanguage } from "
|
|
1
|
+
import { defineElementLanguage } from "../../../../app/language/element.js";
|
|
2
2
|
export default defineElementLanguage({
|
|
3
|
-
element_name: "
|
|
3
|
+
element_name: "",
|
|
4
4
|
"level.example": "Пример",
|
|
5
5
|
"level.easy": "Ликбез",
|
|
6
6
|
"level.medium": "Нормальный",
|
|
@@ -20,5 +20,14 @@ export default defineElementLanguage({
|
|
|
20
20
|
action_note: "Примечание",
|
|
21
21
|
action_check: "Проверить",
|
|
22
22
|
action_generate: "Аналог",
|
|
23
|
-
seed_explain: "Зерно, от которого высчитываются все случайные величины в задаче. Одинаковые зерна = полностью идентичные задачи."
|
|
23
|
+
seed_explain: "Зерно, от которого высчитываются все случайные величины в задаче. Одинаковые зерна = полностью идентичные задачи.",
|
|
24
|
+
yes_regexp: /^\s*(да|1)\s*$/i,
|
|
25
|
+
no_regexp: /^\s*(нет|0)\s*$/i,
|
|
26
|
+
boolean_check_hint: "Да/Нет",
|
|
27
|
+
array_check_hint: (ordered, separator) => {
|
|
28
|
+
let hint = "";
|
|
29
|
+
hint += separator === "," ? "Через запятую." : `Разделитель "${separator}".`;
|
|
30
|
+
hint += ordered ? " Порядок важен." : " В любом порядке.";
|
|
31
|
+
return hint;
|
|
32
|
+
}
|
|
24
33
|
});
|
|
@@ -13,4 +13,8 @@ export type ProblemPhrases = ElementPhrases<{
|
|
|
13
13
|
action_check: string;
|
|
14
14
|
action_generate: string;
|
|
15
15
|
seed_explain: string;
|
|
16
|
+
yes_regexp: RegExp;
|
|
17
|
+
no_regexp: RegExp;
|
|
18
|
+
boolean_check_hint: string;
|
|
19
|
+
array_check_hint: (ordered: boolean, separator: string) => string;
|
|
16
20
|
}>;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { type NoTagChildren, type TagChildren } from '@jsprose/core';
|
|
2
|
+
export interface ProblemCheckInfo {
|
|
3
|
+
label?: string;
|
|
4
|
+
hint?: string;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
}
|
|
7
|
+
export type ProblemCheckData = ProblemCheckInfo & {
|
|
8
|
+
serializedValidator: any;
|
|
9
|
+
};
|
|
10
|
+
export type ProblemCheckSchema = {
|
|
11
|
+
name: 'problemCheck';
|
|
12
|
+
type: 'block';
|
|
13
|
+
linkable: false;
|
|
14
|
+
Data: ProblemCheckData;
|
|
15
|
+
Storage: undefined;
|
|
16
|
+
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
|
+
}, ({
|
|
40
|
+
label?: string;
|
|
41
|
+
hint?: string;
|
|
42
|
+
placeholder?: string;
|
|
43
|
+
} & (OneOf<{
|
|
44
|
+
yes: true;
|
|
45
|
+
no: true;
|
|
46
|
+
answer: ProblemCheckValue;
|
|
47
|
+
answers: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[] | {
|
|
48
|
+
ordered?: boolean;
|
|
49
|
+
separator?: string;
|
|
50
|
+
values: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[];
|
|
51
|
+
};
|
|
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
|
+
}, {
|
|
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
|
+
}, ({
|
|
70
|
+
label?: string;
|
|
71
|
+
hint?: string;
|
|
72
|
+
placeholder?: string;
|
|
73
|
+
} & (OneOf<{
|
|
74
|
+
yes: true;
|
|
75
|
+
no: true;
|
|
76
|
+
answer: ProblemCheckValue;
|
|
77
|
+
answers: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[] | {
|
|
78
|
+
ordered?: boolean;
|
|
79
|
+
separator?: string;
|
|
80
|
+
values: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[];
|
|
81
|
+
};
|
|
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
|
+
}, {
|
|
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>;
|
|
117
|
+
};
|
|
118
|
+
export interface ProblemCheckValidatorBoolean {
|
|
119
|
+
type: 'boolean';
|
|
120
|
+
answer: boolean;
|
|
121
|
+
}
|
|
122
|
+
export type ProblemCheckValue = undefined | number | string | RegExp;
|
|
123
|
+
export type ProblemCheckValueDefined = Exclude<ProblemCheckValue, undefined>;
|
|
124
|
+
export interface ProblemCheckValidatorValue {
|
|
125
|
+
type: 'value';
|
|
126
|
+
answer: ProblemCheckValue;
|
|
127
|
+
}
|
|
128
|
+
export interface ProblemCheckValidatorArray {
|
|
129
|
+
type: 'array';
|
|
130
|
+
ordered: boolean;
|
|
131
|
+
separator: string;
|
|
132
|
+
answers: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[];
|
|
133
|
+
}
|
|
134
|
+
export interface ProblemCheckValidatorScript {
|
|
135
|
+
type: 'script';
|
|
136
|
+
name: string;
|
|
137
|
+
}
|
|
138
|
+
export type ProblemCheckValidator = ProblemCheckValidatorBoolean | ProblemCheckValidatorValue | ProblemCheckValidatorArray | ProblemCheckValidatorScript;
|
|
139
|
+
export declare function toSerializableValidator(validator: ProblemCheckValidator): ProblemCheckValidatorBoolean | ProblemCheckValidatorScript | {
|
|
140
|
+
type: string;
|
|
141
|
+
answer: string | number | {
|
|
142
|
+
readonly type: "regexp";
|
|
143
|
+
readonly source: string;
|
|
144
|
+
readonly flags: string;
|
|
145
|
+
} | undefined;
|
|
146
|
+
ordered?: undefined;
|
|
147
|
+
separator?: undefined;
|
|
148
|
+
answers?: undefined;
|
|
149
|
+
} | {
|
|
150
|
+
type: string;
|
|
151
|
+
ordered: boolean;
|
|
152
|
+
separator: string;
|
|
153
|
+
answers: (string | number | {
|
|
154
|
+
readonly type: "regexp";
|
|
155
|
+
readonly source: string;
|
|
156
|
+
readonly flags: string;
|
|
157
|
+
} | (string | number | {
|
|
158
|
+
readonly type: "regexp";
|
|
159
|
+
readonly source: string;
|
|
160
|
+
readonly flags: string;
|
|
161
|
+
} | undefined)[] | undefined)[];
|
|
162
|
+
answer?: undefined;
|
|
163
|
+
};
|
|
164
|
+
export declare function fromSerializableValidator(serializedValidator: any): ProblemCheckValidator;
|
|
165
|
+
export declare function checkProblemAnswer(answer: string, yesRegexp: RegExp, noRegexp: RegExp, validator: ProblemCheckValidator): boolean;
|
|
166
|
+
export {};
|