@erudit-js/prose 4.1.1 → 4.2.0-dev.1
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/appElement.d.ts +7 -6
- package/dist/app/appElement.js +1 -1
- package/dist/app/composables/anchor.d.ts +7 -7
- package/dist/app/composables/appElement.d.ts +4 -4
- package/dist/app/composables/appElement.js +3 -3
- package/dist/app/composables/context.d.ts +3 -2
- package/dist/app/composables/elementIcon.d.ts +2 -2
- package/dist/app/composables/elementIcon.js +1 -1
- package/dist/app/composables/language.d.ts +2 -2
- package/dist/app/composables/language.js +1 -1
- package/dist/app/composables/storage.d.ts +4 -4
- package/dist/app/composables/storage.js +0 -4
- package/dist/app/default/Mix.vue +2 -2
- package/dist/app/default/Text.vue +2 -2
- package/dist/app/shared/Prose.vue +3 -3
- package/dist/app/shared/Render.vue +5 -14
- package/dist/app/shared/block/AsideMenu.vue +2 -2
- package/dist/app/shared/block/AsideMenuCopyLink.vue +1 -1
- package/dist/app/shared/block/Block.vue +4 -4
- package/dist/app/shared/inliner/Inliner.vue +2 -2
- package/dist/coreElement.d.ts +25 -7
- package/dist/coreElement.js +2 -2
- package/dist/elements/accent/Accent.vue +4 -4
- package/dist/elements/accent/AccentColumnSection.vue +2 -2
- package/dist/elements/accent/AccentRowSections.vue +2 -2
- package/dist/elements/accent/app.d.ts +3 -3
- package/dist/elements/accent/app.js +2 -2
- package/dist/elements/accent/core.d.ts +61 -300
- package/dist/elements/accent/core.js +83 -68
- package/dist/elements/callout/Callout.vue +4 -4
- package/dist/elements/callout/app.d.ts +1 -8
- package/dist/elements/callout/app.js +2 -2
- package/dist/elements/callout/core.d.ts +21 -59
- package/dist/elements/callout/core.js +18 -17
- package/dist/elements/caption/Caption.vue +3 -3
- package/dist/elements/caption/app.d.ts +1 -8
- package/dist/elements/caption/app.js +2 -2
- package/dist/elements/caption/core.d.ts +21 -99
- package/dist/elements/caption/core.js +18 -22
- package/dist/elements/details/Details.vue +3 -3
- package/dist/elements/details/app.d.ts +1 -8
- package/dist/elements/details/app.js +2 -2
- package/dist/elements/details/core.d.ts +18 -61
- package/dist/elements/details/core.js +16 -11
- package/dist/elements/diagram/Diagram.vue +14 -11
- package/dist/elements/diagram/app.d.ts +1 -29
- package/dist/elements/diagram/app.js +2 -2
- package/dist/elements/diagram/core.d.ts +14 -177
- package/dist/elements/diagram/core.js +5 -8
- package/dist/elements/emphasis/Emphasis.vue +3 -3
- package/dist/elements/emphasis/app.d.ts +1 -8
- package/dist/elements/emphasis/app.js +2 -2
- package/dist/elements/emphasis/core.d.ts +13 -76
- package/dist/elements/emphasis/core.js +8 -9
- package/dist/elements/flex/Flex.vue +3 -3
- package/dist/elements/flex/app.d.ts +1 -8
- package/dist/elements/flex/app.js +2 -2
- package/dist/elements/flex/core.d.ts +16 -58
- package/dist/elements/flex/core.js +6 -7
- package/dist/elements/gallery/Gallery.vue +3 -3
- package/dist/elements/gallery/app.d.ts +1 -22
- package/dist/elements/gallery/app.js +2 -2
- package/dist/elements/gallery/core.d.ts +11 -132
- package/dist/elements/gallery/core.js +4 -5
- package/dist/elements/heading/Heading.vue +3 -3
- package/dist/elements/heading/_global.d.ts +2 -2
- package/dist/elements/heading/app.d.ts +1 -8
- package/dist/elements/heading/app.js +2 -2
- package/dist/elements/heading/core.d.ts +13 -97
- package/dist/elements/heading/core.js +8 -8
- package/dist/elements/horizontalLine/app.d.ts +1 -8
- package/dist/elements/horizontalLine/app.js +2 -2
- package/dist/elements/horizontalLine/core.d.ts +9 -47
- package/dist/elements/horizontalLine/core.js +4 -5
- package/dist/elements/image/Image.vue +3 -3
- package/dist/elements/image/ImageElement.vue +4 -4
- package/dist/elements/image/app.d.ts +1 -15
- package/dist/elements/image/app.js +2 -2
- package/dist/elements/image/core.d.ts +29 -108
- package/dist/elements/image/core.js +12 -19
- package/dist/elements/image/storage.d.ts +1 -1
- package/dist/elements/image/storage.js +6 -6
- package/dist/elements/lineBreak/app.d.ts +1 -8
- package/dist/elements/lineBreak/app.js +2 -2
- package/dist/elements/lineBreak/core.d.ts +9 -47
- package/dist/elements/lineBreak/core.js +4 -5
- package/dist/elements/link/BlockLink.vue +4 -6
- package/dist/elements/link/Link.vue +4 -4
- package/dist/elements/link/core.d.ts +6 -6
- package/dist/elements/link/core.js +4 -3
- package/dist/elements/link/dependency/app.d.ts +1 -15
- package/dist/elements/link/dependency/app.js +3 -3
- package/dist/elements/link/dependency/core.d.ts +27 -105
- package/dist/elements/link/dependency/core.js +6 -8
- package/dist/elements/link/hook.d.ts +12 -0
- package/dist/elements/link/hook.js +45 -0
- package/dist/elements/link/reference/app.d.ts +1 -15
- package/dist/elements/link/reference/app.js +3 -3
- package/dist/elements/link/reference/core.d.ts +24 -103
- package/dist/elements/link/reference/core.js +6 -8
- package/dist/elements/link/storage.js +1 -1
- package/dist/elements/list/List.vue +7 -5
- package/dist/elements/list/_global.d.ts +3 -3
- package/dist/elements/list/app.d.ts +1 -15
- package/dist/elements/list/app.js +2 -2
- package/dist/elements/list/core.d.ts +33 -155
- package/dist/elements/list/core.js +20 -18
- package/dist/elements/math/app.d.ts +1 -15
- package/dist/elements/math/app.js +3 -3
- package/dist/elements/math/block.d.ts +31 -43
- package/dist/elements/math/block.js +10 -9
- package/dist/elements/math/components/BlockMath.vue +4 -4
- package/dist/elements/math/components/InlinerMath.vue +4 -4
- package/dist/elements/math/core.d.ts +25 -53
- package/dist/elements/math/core.js +3 -11
- package/dist/elements/math/inliner.d.ts +24 -36
- package/dist/elements/math/inliner.js +10 -12
- package/dist/elements/paragraph/Paragraph.vue +3 -3
- package/dist/elements/paragraph/app.d.ts +1 -8
- package/dist/elements/paragraph/app.js +2 -2
- package/dist/elements/paragraph/core.d.ts +12 -53
- package/dist/elements/paragraph/core.js +6 -7
- package/dist/elements/problem/app.d.ts +1 -29
- package/dist/elements/problem/app.js +4 -4
- package/dist/elements/problem/components/Problem.vue +3 -3
- package/dist/elements/problem/components/ProblemContent.vue +15 -21
- package/dist/elements/problem/components/ProblemExpanderSection.vue +2 -2
- package/dist/elements/problem/components/Problems.vue +11 -7
- package/dist/elements/problem/components/SubProblem.vue +3 -4
- package/dist/elements/problem/components/expanders/Check.vue +3 -3
- package/dist/elements/problem/components/expanders/Checks.vue +6 -3
- package/dist/elements/problem/components/expanders/DefaultPlusSections.vue +3 -7
- package/dist/elements/problem/components/expanders/Hint.vue +3 -3
- package/dist/elements/problem/composables/problemScript.d.ts +2 -2
- package/dist/elements/problem/core.d.ts +63 -299
- package/dist/elements/problem/core.js +9 -11
- package/dist/elements/problem/hook.d.ts +1 -0
- package/dist/elements/problem/hook.js +14 -0
- package/dist/elements/problem/problem.d.ts +20 -77
- package/dist/elements/problem/problem.js +6 -6
- package/dist/elements/problem/problemCheck.d.ts +33 -83
- package/dist/elements/problem/problemCheck.js +16 -10
- package/dist/elements/problem/problemContent.d.ts +54 -401
- package/dist/elements/problem/problemContent.js +47 -56
- package/dist/elements/problem/problemScript.d.ts +18 -10
- package/dist/elements/problem/problemScript.js +15 -26
- package/dist/elements/problem/problems.d.ts +29 -188
- package/dist/elements/problem/problems.js +11 -15
- package/dist/elements/problem/storage.d.ts +1 -1
- package/dist/elements/problem/storage.js +2 -3
- package/dist/elements/table/Table.vue +3 -3
- package/dist/elements/table/app.d.ts +1 -29
- package/dist/elements/table/app.js +2 -2
- package/dist/elements/table/core.d.ts +28 -309
- package/dist/elements/table/core.js +17 -29
- package/dist/elements/video/Video.vue +4 -4
- package/dist/elements/video/app.d.ts +1 -15
- package/dist/elements/video/app.js +2 -2
- package/dist/elements/video/core.d.ts +26 -106
- package/dist/elements/video/core.js +11 -16
- package/dist/elements/video/storage.d.ts +1 -1
- package/dist/elements/video/storage.js +2 -3
- package/dist/error.d.ts +3 -0
- package/dist/error.js +6 -0
- package/dist/include.d.ts +4 -4
- package/dist/include.js +6 -12
- package/dist/index.d.ts +11 -11
- package/dist/index.js +11 -11
- package/dist/rawElement.d.ts +9 -6
- package/dist/rawElement.js +4 -0
- package/dist/rawToProse/countSchemas.d.ts +1 -0
- package/dist/rawToProse/countSchemas.js +11 -0
- package/dist/rawToProse/hook.d.ts +39 -0
- package/dist/rawToProse/hook.js +6 -0
- package/dist/rawToProse/index.d.ts +34 -0
- package/dist/rawToProse/index.js +92 -0
- package/dist/rawToProse/uniqueTitles.d.ts +1 -0
- package/dist/rawToProse/uniqueTitles.js +11 -0
- package/dist/shared/filePath.js +2 -2
- package/dist/shared/paragraphWrap.d.ts +3 -3
- package/dist/shared/paragraphWrap.js +7 -12
- package/dist/slugify/index.d.ts +3 -1
- package/dist/slugify/index.js +5 -6
- package/dist/slugify/languages/en.js +1 -1
- package/dist/slugify/languages/ru.js +1 -1
- package/dist/snippet.d.ts +39 -33
- package/dist/snippet.js +139 -73
- package/dist/tag.d.ts +22 -19
- package/dist/tag.js +19 -15
- package/dist/toc.d.ts +12 -18
- package/dist/toc.js +120 -42
- package/package.json +7 -6
- package/dist/app/default/Inliners.vue +0 -11
- package/dist/context.d.ts +0 -4
- package/dist/context.js +0 -1
- package/dist/elements/link/step.d.ts +0 -16
- package/dist/elements/link/step.js +0 -36
- package/dist/elements/problem/step.d.ts +0 -5
- package/dist/elements/problem/step.js +0 -13
- package/dist/resolve.d.ts +0 -21
- package/dist/resolve.js +0 -102
- package/dist/resolveStep.d.ts +0 -9
- package/dist/resolveStep.js +0 -3
- package/dist/title.d.ts +0 -8
- package/dist/title.js +0 -6
- package/dist/utils/docs.d.ts +0 -1
- package/dist/utils/docs.js +0 -22
- package/types.d.ts +0 -4
package/dist/app/appElement.d.ts
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import type { AnySchema, ProseElement } from '@jsprose/core';
|
|
2
1
|
import { type ElementIcon, type ElementIconRaw } from './icon.js';
|
|
3
2
|
import { type ElementComponent, type ElementComponentRaw } from './component.js';
|
|
4
3
|
import { type ElementLanguages, type ElementLanguagesRaw, type ElementPhrases } from './language/element.js';
|
|
5
|
-
|
|
4
|
+
import type { Schema, ToProseElement } from 'tsprose';
|
|
5
|
+
export interface ProseAppElementDefinition<TSchema extends Schema> {
|
|
6
6
|
schema: TSchema;
|
|
7
7
|
component: ElementComponentRaw;
|
|
8
8
|
languages?: ElementLanguagesRaw<ElementPhrases>;
|
|
9
9
|
icon?: ElementIconRaw;
|
|
10
|
-
createStorage?: (proseElement:
|
|
10
|
+
createStorage?: (proseElement: ToProseElement<TSchema>) => Promise<TSchema['Storage']> | TSchema['Storage'];
|
|
11
11
|
}
|
|
12
|
-
export interface
|
|
12
|
+
export interface ProseAppElement<TSchema extends Schema = Schema> {
|
|
13
13
|
schema: TSchema;
|
|
14
14
|
component: ElementComponent;
|
|
15
15
|
languages: ElementLanguages<ElementPhrases>;
|
|
16
16
|
icon: ElementIcon;
|
|
17
|
-
createStorage?: (proseElement:
|
|
17
|
+
createStorage?: (proseElement: ToProseElement<TSchema>) => Promise<any> | any;
|
|
18
18
|
}
|
|
19
|
-
export
|
|
19
|
+
export type ProseAppElements = Record<string, ProseAppElement>;
|
|
20
|
+
export declare function defineProseAppElement<TSchema extends Schema>(appElement: ProseAppElementDefinition<TSchema>): ProseAppElement<TSchema>;
|
package/dist/app/appElement.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolveElementIcon } from "./icon.js";
|
|
2
2
|
import { resolveElementComponent } from "./component.js";
|
|
3
3
|
import { resolveElementLanguages } from "./language/element.js";
|
|
4
|
-
export function
|
|
4
|
+
export function defineProseAppElement(appElement) {
|
|
5
5
|
return {
|
|
6
6
|
schema: appElement.schema,
|
|
7
7
|
component: resolveElementComponent(appElement.component),
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { type InjectionKey, type Ref } from 'vue';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Schema, ToProseElement } from 'tsprose';
|
|
3
3
|
export interface AnchorState {
|
|
4
4
|
anchorResolving: Ref<boolean>;
|
|
5
5
|
allowJumpToAnchor: Ref<boolean>;
|
|
6
|
-
anchorElement: Ref<
|
|
7
|
-
containsAnchorElements: Ref<Set<
|
|
6
|
+
anchorElement: Ref<ToProseElement<Schema> | undefined>;
|
|
7
|
+
containsAnchorElements: Ref<Set<ToProseElement<Schema>>>;
|
|
8
8
|
}
|
|
9
|
-
export declare function useAnchorState(hashId: Ref<string | undefined>, element:
|
|
9
|
+
export declare function useAnchorState(hashId: Ref<string | undefined>, element: ToProseElement<Schema>): AnchorState;
|
|
10
10
|
export declare const anchorStateSymbol: InjectionKey<AnchorState>;
|
|
11
|
-
export declare function useIsAnchor(element:
|
|
12
|
-
export declare function useContainsAnchor(element:
|
|
13
|
-
export declare function useArrayContainsAnchor(elements:
|
|
11
|
+
export declare function useIsAnchor(element: ToProseElement<Schema>): import("vue").ComputedRef<boolean | undefined>;
|
|
12
|
+
export declare function useContainsAnchor(element: ToProseElement<Schema>): import("vue").ComputedRef<boolean>;
|
|
13
|
+
export declare function useArrayContainsAnchor(elements: ToProseElement<Schema>[]): import("vue").ComputedRef<number | undefined>;
|
|
14
14
|
export declare function useAnchorResolving(): Ref<boolean, boolean>;
|
|
15
15
|
export declare function useJumpToAnchor(): (element: HTMLElement) => void;
|
|
16
16
|
export declare function useResolveAnchor(): () => void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
export declare function useAppElement(schemaName: string):
|
|
4
|
-
export declare function useAppElement(element:
|
|
1
|
+
import type { Schema, ToProseElement } from 'tsprose';
|
|
2
|
+
import type { ProseAppElement } from '../appElement.js';
|
|
3
|
+
export declare function useAppElement(schemaName: string): ProseAppElement;
|
|
4
|
+
export declare function useAppElement(element: ToProseElement<Schema>): ProseAppElement;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { ProseError } from "@jsprose/core";
|
|
2
1
|
import { useProseContext } from "./context.js";
|
|
2
|
+
import { EruditProseError } from "../../error.js";
|
|
3
3
|
export function useAppElement(elementOrName) {
|
|
4
4
|
let schemaName;
|
|
5
5
|
if (typeof elementOrName === "string") {
|
|
6
6
|
schemaName = elementOrName;
|
|
7
7
|
} else {
|
|
8
|
-
schemaName = elementOrName.
|
|
8
|
+
schemaName = elementOrName.schema.name;
|
|
9
9
|
}
|
|
10
10
|
const { appElements } = useProseContext();
|
|
11
11
|
const appElement = appElements[schemaName];
|
|
12
12
|
if (!appElement) {
|
|
13
|
-
throw new
|
|
13
|
+
throw new EruditProseError(`No AppElement found for schema "${schemaName}"!`);
|
|
14
14
|
}
|
|
15
15
|
return appElement;
|
|
16
16
|
}
|
|
@@ -3,11 +3,12 @@ import type { useFloating, UseFloatingOptions } from '@floating-ui/vue';
|
|
|
3
3
|
import type { EruditLanguageCode } from '@erudit-js/core/eruditConfig/language';
|
|
4
4
|
import type { EruditMode } from '@erudit-js/core/mode';
|
|
5
5
|
import type { FormatText } from '@erudit-js/core/formatText';
|
|
6
|
-
import type {
|
|
6
|
+
import type { ProseAppElement } from '../appElement.js';
|
|
7
7
|
export interface ProseContext {
|
|
8
8
|
mode: EruditMode;
|
|
9
|
+
setHtmlIds: boolean;
|
|
9
10
|
languageCode: EruditLanguageCode;
|
|
10
|
-
appElements: Record<string,
|
|
11
|
+
appElements: Record<string, ProseAppElement>;
|
|
11
12
|
formatText: FormatText;
|
|
12
13
|
pathUrl: string;
|
|
13
14
|
baseUrl: string;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ToProseElement, Schema } from 'tsprose';
|
|
2
2
|
export declare function useElementIcon(schemaName: string): Promise<string>;
|
|
3
|
-
export declare function useElementIcon(element:
|
|
3
|
+
export declare function useElementIcon(element: ToProseElement<Schema>): Promise<string>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useAppElement } from "./appElement.js";
|
|
2
2
|
export async function useElementIcon(elementOrName) {
|
|
3
|
-
const appElement = useAppElement(typeof elementOrName === "string" ? elementOrName : elementOrName.
|
|
3
|
+
const appElement = useAppElement(typeof elementOrName === "string" ? elementOrName : elementOrName.schema.name);
|
|
4
4
|
return appElement.icon();
|
|
5
5
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProseElement } from 'tsprose';
|
|
2
2
|
import type { ElementPhrases } from '../language/element.js';
|
|
3
3
|
export declare function useProseLanguage(): Promise<{
|
|
4
4
|
copy_link: string;
|
|
5
5
|
copied: string;
|
|
6
6
|
}>;
|
|
7
7
|
export declare function useElementPhrase<TPhrases extends ElementPhrases>(schemaName: string): Promise<TPhrases>;
|
|
8
|
-
export declare function useElementPhrase<TPhrases extends ElementPhrases>(element: ProseElement
|
|
8
|
+
export declare function useElementPhrase<TPhrases extends ElementPhrases>(element: ProseElement): Promise<TPhrases>;
|
|
@@ -7,7 +7,7 @@ export async function useProseLanguage() {
|
|
|
7
7
|
}
|
|
8
8
|
export async function useElementPhrase(elementOrName) {
|
|
9
9
|
const { languageCode } = useProseContext();
|
|
10
|
-
const appElement = useAppElement(typeof elementOrName === "string" ? elementOrName : elementOrName.
|
|
10
|
+
const appElement = useAppElement(typeof elementOrName === "string" ? elementOrName : elementOrName.schema.name);
|
|
11
11
|
const languages = appElement.languages;
|
|
12
12
|
return await languages[languageCode]();
|
|
13
13
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type InjectionKey } from 'vue';
|
|
2
|
-
import
|
|
3
|
-
export declare const proseStorageSymbol: InjectionKey<
|
|
4
|
-
export declare function useProseStorage():
|
|
5
|
-
export declare function useElementStorage<
|
|
2
|
+
import type { ProseElement, ProseStorage } from 'tsprose';
|
|
3
|
+
export declare const proseStorageSymbol: InjectionKey<ProseStorage>;
|
|
4
|
+
export declare function useProseStorage(): ProseStorage;
|
|
5
|
+
export declare function useElementStorage<TElement extends ProseElement>(element: TElement): Promise<TElement['schema']['Storage']>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { inject } from "vue";
|
|
2
|
-
import { ProseError } from "@jsprose/core";
|
|
3
2
|
import { useAppElement } from "./appElement.js";
|
|
4
3
|
export const proseStorageSymbol = Symbol();
|
|
5
4
|
export function useProseStorage() {
|
|
@@ -17,7 +16,4 @@ export async function useElementStorage(element) {
|
|
|
17
16
|
if (element.storageKey in storage) {
|
|
18
17
|
return storage[element.storageKey];
|
|
19
18
|
}
|
|
20
|
-
// throw new ProseError(
|
|
21
|
-
// `Element ${element.schemaName} with storage key "${element.storageKey}" has no storage value!`,
|
|
22
|
-
// );
|
|
23
19
|
}
|
package/dist/app/default/Mix.vue
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
-
import {
|
|
2
|
+
import type { MixSchema, ToProseElement } from 'tsprose';
|
|
3
3
|
|
|
4
4
|
import Render from '../shared/Render.vue';
|
|
5
5
|
|
|
6
|
-
const { element } = defineProps<{ element:
|
|
6
|
+
const { element } = defineProps<{ element: ToProseElement<MixSchema> }>();
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
9
|
<template>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import { Text, h } from 'vue';
|
|
3
|
-
import type {
|
|
3
|
+
import type { TextSchema, ToProseElement } from 'tsprose';
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
useFormatText,
|
|
7
7
|
useFormatTextState,
|
|
8
8
|
} from '../composables/formatText.js';
|
|
9
9
|
|
|
10
|
-
const { element } = defineProps<{ element:
|
|
10
|
+
const { element } = defineProps<{ element: ToProseElement<TextSchema> }>();
|
|
11
11
|
const formatTextState = useFormatTextState();
|
|
12
12
|
const formatText = useFormatText();
|
|
13
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import { provide } from 'vue';
|
|
3
|
-
import type {
|
|
3
|
+
import type { ProseElement, ProseStorage } from 'tsprose';
|
|
4
4
|
import { createFormatTextState } from '@erudit-js/core/formatText';
|
|
5
5
|
|
|
6
6
|
import {
|
|
@@ -13,8 +13,8 @@ import { anchorStateSymbol, useAnchorState } from '../composables/anchor.js';
|
|
|
13
13
|
import { formatTextStateSymbol } from '../composables/formatText.js';
|
|
14
14
|
|
|
15
15
|
const { element, storage, context } = defineProps<{
|
|
16
|
-
element: ProseElement
|
|
17
|
-
storage:
|
|
16
|
+
element: ProseElement;
|
|
17
|
+
storage: ProseStorage;
|
|
18
18
|
context: ProseContext;
|
|
19
19
|
}>();
|
|
20
20
|
|
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import { h, type Component } from 'vue';
|
|
3
|
-
import {
|
|
4
|
-
inlinersSchema,
|
|
5
|
-
mixSchema,
|
|
6
|
-
textSchema,
|
|
7
|
-
type AnySchema,
|
|
8
|
-
type ProseElement,
|
|
9
|
-
} from '@jsprose/core';
|
|
3
|
+
import { mixSchema, textSchema, type ProseElement } from 'tsprose';
|
|
10
4
|
|
|
11
5
|
import { useAppElement } from '../composables/appElement.js';
|
|
12
6
|
import Mix from '../default/Mix.vue';
|
|
13
|
-
import Inliners from '../default/Inliners.vue';
|
|
14
7
|
import Text from '../default/Text.vue';
|
|
15
8
|
|
|
16
|
-
const { element } = defineProps<{ element: ProseElement
|
|
9
|
+
const { element } = defineProps<{ element: ProseElement }>();
|
|
17
10
|
|
|
18
11
|
const ElementComponent: Component = await (async () => {
|
|
19
|
-
switch (element.
|
|
12
|
+
switch (element.schema.name) {
|
|
20
13
|
case mixSchema.name:
|
|
21
14
|
return Mix;
|
|
22
|
-
case inlinersSchema.name:
|
|
23
|
-
return Inliners;
|
|
24
15
|
case textSchema.name:
|
|
25
16
|
return Text;
|
|
26
17
|
}
|
|
@@ -30,7 +21,7 @@ const ElementComponent: Component = await (async () => {
|
|
|
30
21
|
return await appElement.component();
|
|
31
22
|
} catch (error) {
|
|
32
23
|
console.warn(
|
|
33
|
-
`[Prose] [Render] Missing component for element schema: ${element.
|
|
24
|
+
`[Prose] [Render] Missing component for element schema: ${element.schema.name}`,
|
|
34
25
|
);
|
|
35
26
|
|
|
36
27
|
return {
|
|
@@ -38,7 +29,7 @@ const ElementComponent: Component = await (async () => {
|
|
|
38
29
|
return h(
|
|
39
30
|
'span',
|
|
40
31
|
{ class: 'text-red-500 font-semibold font-mono' },
|
|
41
|
-
`<${element.
|
|
32
|
+
`<${element.schema.name}/>`,
|
|
42
33
|
);
|
|
43
34
|
},
|
|
44
35
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed } from 'vue';
|
|
3
|
-
import type {
|
|
3
|
+
import type { ProseElement } from 'tsprose';
|
|
4
4
|
|
|
5
5
|
import { useElementPhrase } from '../../composables/language.js';
|
|
6
6
|
import AsideMenuSeparator from './AsideMenuSeparator.vue';
|
|
7
7
|
import AsideMenuCopyLink from './AsideMenuCopyLink.vue';
|
|
8
8
|
|
|
9
9
|
const { element } = defineProps<{
|
|
10
|
-
element: ProseElement
|
|
10
|
+
element: ProseElement;
|
|
11
11
|
}>();
|
|
12
12
|
|
|
13
13
|
const hasLink = computed(() => {
|
|
@@ -19,7 +19,7 @@ let resetTimer: number | undefined;
|
|
|
19
19
|
|
|
20
20
|
async function copyLink() {
|
|
21
21
|
await navigator.clipboard.writeText(
|
|
22
|
-
location.origin + baseUrl + pathUrl.substring(1) + '
|
|
22
|
+
location.origin + baseUrl + pathUrl.substring(1) + '?element=' + elementId,
|
|
23
23
|
);
|
|
24
24
|
copied.value = true;
|
|
25
25
|
if (resetTimer) clearTimeout(resetTimer);
|
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
watchEffect,
|
|
9
9
|
} from 'vue';
|
|
10
10
|
import { useFloating, autoUpdate, offset, shift } from '@floating-ui/vue';
|
|
11
|
-
import type { BlockSchema, ProseElement } from '@jsprose/core';
|
|
12
11
|
|
|
13
12
|
import { useProseContext } from '../../composables/context.js';
|
|
14
13
|
import { useElementIcon } from '../../composables/elementIcon.js';
|
|
@@ -19,9 +18,10 @@ import {
|
|
|
19
18
|
} from '../../composables/anchor.js';
|
|
20
19
|
import AsideMenu from './AsideMenu.vue';
|
|
21
20
|
import { useFormatTextState } from '../../composables/formatText.js';
|
|
21
|
+
import type { BlockProseElement } from 'tsprose';
|
|
22
22
|
|
|
23
|
-
const { element } = defineProps<{ element:
|
|
24
|
-
const { EruditIcon, EruditTransition } = useProseContext();
|
|
23
|
+
const { element } = defineProps<{ element: BlockProseElement }>();
|
|
24
|
+
const { EruditIcon, EruditTransition, setHtmlIds } = useProseContext();
|
|
25
25
|
const elementIcon = await useElementIcon(element);
|
|
26
26
|
|
|
27
27
|
const formatTextState = useFormatTextState();
|
|
@@ -173,7 +173,7 @@ onBeforeUnmount(() => {
|
|
|
173
173
|
<template>
|
|
174
174
|
<div
|
|
175
175
|
ref="block"
|
|
176
|
-
:id="element.id"
|
|
176
|
+
:id="setHtmlIds ? element.id : undefined"
|
|
177
177
|
:class="[$style.block, 'scroll-mt-big pr-(--proseAsideWidth)']"
|
|
178
178
|
>
|
|
179
179
|
<div :class="[$style.blockAbove, 'h-(--proseGap)']"></div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
-
import type {
|
|
2
|
+
import type { InlinerProseElement } from 'tsprose';
|
|
3
3
|
|
|
4
|
-
defineProps<{ element:
|
|
4
|
+
defineProps<{ element: InlinerProseElement }>();
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
7
|
<template>
|
package/dist/coreElement.d.ts
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { ElementStorageCreator, Schema } from 'tsprose';
|
|
2
|
+
import type { RawToProseSchemaHook } from './rawToProse/hook.js';
|
|
3
|
+
import type { EruditTag, ToEruditTag } from './tag.js';
|
|
4
|
+
export interface ProseCoreElementDependencies {
|
|
5
|
+
[dependencyName: string]: {
|
|
5
6
|
transpile?: boolean;
|
|
6
7
|
optimize?: boolean;
|
|
7
|
-
}
|
|
8
|
+
};
|
|
8
9
|
}
|
|
9
|
-
export
|
|
10
|
-
|
|
10
|
+
export type ToProseCoreElement<TSchema extends Schema, Tags extends EruditTag[] | undefined> = {
|
|
11
|
+
schema: TSchema;
|
|
12
|
+
tags: Tags;
|
|
13
|
+
dependencies?: ProseCoreElementDependencies;
|
|
14
|
+
} & ({
|
|
15
|
+
createStorage: ElementStorageCreator<TSchema>;
|
|
16
|
+
} | {
|
|
17
|
+
createStorage?: undefined;
|
|
18
|
+
}) & ({
|
|
19
|
+
rawToProseHook: RawToProseSchemaHook<TSchema>;
|
|
20
|
+
} | {
|
|
21
|
+
rawToProseHook?: undefined;
|
|
22
|
+
});
|
|
23
|
+
export type ProseCoreElement = ToProseCoreElement<Schema, EruditTag[] | undefined>;
|
|
24
|
+
export type ProseCoreElements = Record<string, ProseCoreElement>;
|
|
25
|
+
export declare function defineProseCoreElement<const TSchema extends Schema, const CoreElement extends ToProseCoreElement<TSchema, ToEruditTag<TSchema, string, any>[] | undefined>>(coreElement: CoreElement & {
|
|
26
|
+
schema: TSchema;
|
|
27
|
+
}): CoreElement;
|
|
28
|
+
export declare function defineProseCoreElements<const CoreElements extends ProseCoreElement[]>(...coreElements: CoreElements): CoreElements;
|
package/dist/coreElement.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function defineProseCoreElement(coreElement) {
|
|
2
2
|
return coreElement;
|
|
3
3
|
}
|
|
4
|
-
export function
|
|
4
|
+
export function defineProseCoreElements(...coreElements) {
|
|
5
5
|
return coreElements;
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import { shallowRef } from 'vue';
|
|
3
|
-
import {
|
|
3
|
+
import type { ToProseElement } from 'tsprose';
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
isAccentMainElement,
|
|
@@ -19,7 +19,7 @@ import Render from '../../app/shared/Render.vue';
|
|
|
19
19
|
import AccentColumnSection from './AccentColumnSection.vue';
|
|
20
20
|
import AccentRowSections from './AccentRowSections.vue';
|
|
21
21
|
|
|
22
|
-
const { element } = defineProps<{ element:
|
|
22
|
+
const { element } = defineProps<{ element: ToProseElement<AccentSchema> }>();
|
|
23
23
|
|
|
24
24
|
const { EruditIcon } = useProseContext();
|
|
25
25
|
const formatText = useFormatText();
|
|
@@ -28,8 +28,8 @@ const accentIcon = await useElementIcon(element);
|
|
|
28
28
|
const phrase =
|
|
29
29
|
await useElementPhrase<ElementPhrases<Record<string, string>>>(element);
|
|
30
30
|
|
|
31
|
-
const mainSection = shallowRef<
|
|
32
|
-
const sections = shallowRef<
|
|
31
|
+
const mainSection = shallowRef<ToProseElement<AccentMainSchema>>();
|
|
32
|
+
const sections = shallowRef<ToProseElement<AccentSectionSchema>[]>([]);
|
|
33
33
|
|
|
34
34
|
for (const child of element.children) {
|
|
35
35
|
if (isAccentMainElement(child)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import { ref, watchEffect } from 'vue';
|
|
3
|
-
import type {
|
|
3
|
+
import type { ToProseElement } from 'tsprose';
|
|
4
4
|
|
|
5
5
|
import type { AccentSectionSchema } from './core.js';
|
|
6
6
|
import { useProseContext } from '../../app/composables/context.js';
|
|
@@ -10,7 +10,7 @@ import Render from '../../app/shared/Render.vue';
|
|
|
10
10
|
|
|
11
11
|
const { section } = defineProps<{
|
|
12
12
|
title: string;
|
|
13
|
-
section:
|
|
13
|
+
section: ToProseElement<AccentSectionSchema>;
|
|
14
14
|
}>();
|
|
15
15
|
|
|
16
16
|
const { EruditIcon } = useProseContext();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import { ref, watchEffect } from 'vue';
|
|
3
|
-
import type {
|
|
3
|
+
import type { ToProseElement } from 'tsprose';
|
|
4
4
|
|
|
5
5
|
import type { AccentSectionSchema } from './core.js';
|
|
6
6
|
import { useArrayContainsAnchor } from '../../app/composables/anchor.js';
|
|
@@ -8,7 +8,7 @@ import Render from '../../app/shared/Render.vue';
|
|
|
8
8
|
|
|
9
9
|
const { sections } = defineProps<{
|
|
10
10
|
sectionTitles: string[];
|
|
11
|
-
sections:
|
|
11
|
+
sections: ToProseElement<AccentSectionSchema>[];
|
|
12
12
|
}>();
|
|
13
13
|
|
|
14
14
|
const openedSectionI = ref<number>();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ProseAppElement, type ProseAppElementDefinition } from '../../app/appElement.js';
|
|
2
2
|
import type { ElementLanguagesRaw, ElementPhrases } from '../../app/language/element.js';
|
|
3
3
|
import type { AccentSchema } from './core.js';
|
|
4
4
|
export interface AccentAppOptions {
|
|
@@ -9,13 +9,13 @@ export interface AccentAppOptions {
|
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
11
|
export declare function accentSectionNamePhrase<TSectionName extends string>(sectionName: TSectionName): `section_title_${TSectionName}`;
|
|
12
|
-
export type AccentAppDefinition<TAccentSchema extends AccentSchema> = Omit<
|
|
12
|
+
export type AccentAppDefinition<TAccentSchema extends AccentSchema> = Omit<ProseAppElementDefinition<TAccentSchema>, 'component' | 'createStorage'> & {
|
|
13
13
|
schema: TAccentSchema;
|
|
14
14
|
accent: AccentAppOptions;
|
|
15
15
|
languages: ElementLanguagesRaw<ElementPhrases<{
|
|
16
16
|
[K in ReturnType<typeof accentSectionNamePhrase<TAccentSchema['SectionNames'][number]>>]: string;
|
|
17
17
|
}>>;
|
|
18
18
|
};
|
|
19
|
-
export declare function defineAccentApp<TAccentSchema extends AccentSchema>(accentApp: AccentAppDefinition<TAccentSchema>):
|
|
19
|
+
export declare function defineAccentApp<TAccentSchema extends AccentSchema>(accentApp: AccentAppDefinition<TAccentSchema>): ProseAppElement<TAccentSchema> & {
|
|
20
20
|
accent: AccentAppOptions;
|
|
21
21
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineProseAppElement } from "../../app/appElement.js";
|
|
2
2
|
export function accentSectionNamePhrase(sectionName) {
|
|
3
3
|
return `section_title_${sectionName}`;
|
|
4
4
|
}
|
|
5
5
|
export function defineAccentApp(accentApp) {
|
|
6
|
-
const appElement =
|
|
6
|
+
const appElement = defineProseAppElement({
|
|
7
7
|
schema: accentApp.schema,
|
|
8
8
|
component: () => import("./Accent.vue"),
|
|
9
9
|
icon: accentApp.icon,
|