@erudit-js/prose 4.1.0 → 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.
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 +8 -7
  90. package/dist/elements/link/core.js +5 -4
  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 +30 -108
  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 -56
  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 +2 -2
  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 +7 -6
  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 +0 -4
@@ -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
- export interface AppElementDefinition<TSchema extends AnySchema> {
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: ProseElement<TSchema>) => Promise<TSchema['Storage']> | TSchema['Storage'];
10
+ createStorage?: (proseElement: ToProseElement<TSchema>) => Promise<TSchema['Storage']> | TSchema['Storage'];
11
11
  }
12
- export interface AppElement<TSchema extends AnySchema = AnySchema> {
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: ProseElement<TSchema>) => Promise<any> | any;
17
+ createStorage?: (proseElement: ToProseElement<TSchema>) => Promise<any> | any;
18
18
  }
19
- export declare function defineEruditProseAppElement<TSchema extends AnySchema>(appElement: AppElementDefinition<TSchema>): AppElement<TSchema>;
19
+ export type ProseAppElements = Record<string, ProseAppElement>;
20
+ export declare function defineProseAppElement<TSchema extends Schema>(appElement: ProseAppElementDefinition<TSchema>): ProseAppElement<TSchema>;
@@ -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 defineEruditProseAppElement(appElement) {
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 { AnySchema, ProseElement } from '@jsprose/core';
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<ProseElement<AnySchema> | undefined>;
7
- containsAnchorElements: Ref<Set<ProseElement<AnySchema>>>;
6
+ anchorElement: Ref<ToProseElement<Schema> | undefined>;
7
+ containsAnchorElements: Ref<Set<ToProseElement<Schema>>>;
8
8
  }
9
- export declare function useAnchorState(hashId: Ref<string | undefined>, element: ProseElement<AnySchema>): AnchorState;
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: ProseElement<AnySchema>): import("vue").ComputedRef<boolean | undefined>;
12
- export declare function useContainsAnchor(element: ProseElement<AnySchema>): import("vue").ComputedRef<boolean>;
13
- export declare function useArrayContainsAnchor(elements: ProseElement<AnySchema>[]): import("vue").ComputedRef<number | undefined>;
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 { type AnySchema, type ProseElement } from '@jsprose/core';
2
- import type { AppElement } from '../appElement.js';
3
- export declare function useAppElement(schemaName: string): AppElement;
4
- export declare function useAppElement(element: ProseElement<AnySchema>): AppElement;
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.schemaName;
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 ProseError(`No AppElement found for schema "${schemaName}"!`);
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 { AppElement } from '../appElement.js';
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, AppElement>;
11
+ appElements: Record<string, ProseAppElement>;
11
12
  formatText: FormatText;
12
13
  pathUrl: string;
13
14
  baseUrl: string;
@@ -1,3 +1,3 @@
1
- import type { AnySchema, ProseElement } from '@jsprose/core';
1
+ import type { ToProseElement, Schema } from 'tsprose';
2
2
  export declare function useElementIcon(schemaName: string): Promise<string>;
3
- export declare function useElementIcon(element: ProseElement<AnySchema>): Promise<string>;
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.schemaName);
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 { AnySchema, ProseElement } from '@jsprose/core';
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<AnySchema>): Promise<TPhrases>;
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.schemaName);
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 { type AnySchema, type GenericStorage, type ProseElement } from '@jsprose/core';
3
- export declare const proseStorageSymbol: InjectionKey<GenericStorage>;
4
- export declare function useProseStorage(): GenericStorage;
5
- export declare function useElementStorage<TSchema extends AnySchema>(element: ProseElement<TSchema>): Promise<TSchema['Storage']>;
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
  }
@@ -1,9 +1,9 @@
1
1
  <script lang="ts" setup>
2
- import { type mixSchema, type ProseElement } from '@jsprose/core';
2
+ import type { MixSchema, ToProseElement } from 'tsprose';
3
3
 
4
4
  import Render from '../shared/Render.vue';
5
5
 
6
- const { element } = defineProps<{ element: ProseElement<typeof mixSchema> }>();
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 { ProseElement, textSchema } from '@jsprose/core';
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: ProseElement<typeof textSchema> }>();
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 { AnySchema, GenericStorage, ProseElement } from '@jsprose/core';
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<AnySchema>;
17
- storage: GenericStorage;
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<AnySchema> }>();
9
+ const { element } = defineProps<{ element: ProseElement }>();
17
10
 
18
11
  const ElementComponent: Component = await (async () => {
19
- switch (element.schemaName) {
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.schemaName}`,
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.schemaName}/>`,
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 { AnySchema, ProseElement } from '@jsprose/core';
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<AnySchema>;
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) + '#' + elementId,
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: ProseElement<BlockSchema> }>();
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 { InlinerSchema, ProseElement } from '@jsprose/core';
2
+ import type { InlinerProseElement } from 'tsprose';
3
3
 
4
- defineProps<{ element: ProseElement<InlinerSchema> }>();
4
+ defineProps<{ element: InlinerProseElement }>();
5
5
  </script>
6
6
 
7
7
  <template>
@@ -1,10 +1,28 @@
1
- import type { AnyRegistryItem } from '@jsprose/core';
2
- export interface EruditProseCoreElement {
3
- registryItem: AnyRegistryItem;
4
- dependencies?: Record<string, {
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 declare function defineEruditProseCoreElement<TElement extends EruditProseCoreElement>(coreElement: TElement): TElement;
10
- export declare function defineEruditProseCoreElements<TElements extends readonly EruditProseCoreElement[]>(...coreElements: [...TElements]): TElements;
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;
@@ -1,6 +1,6 @@
1
- export function defineEruditProseCoreElement(coreElement) {
1
+ export function defineProseCoreElement(coreElement) {
2
2
  return coreElement;
3
3
  }
4
- export function defineEruditProseCoreElements(...coreElements) {
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 { type ProseElement } from '@jsprose/core';
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: ProseElement<AccentSchema> }>();
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<ProseElement<AccentMainSchema>>();
32
- const sections = shallowRef<ProseElement<AccentSectionSchema>[]>([]);
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 { ProseElement } from '@jsprose/core';
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: ProseElement<AccentSectionSchema>;
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 { ProseElement } from '@jsprose/core';
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: ProseElement<AccentSectionSchema>[];
11
+ sections: ToProseElement<AccentSectionSchema>[];
12
12
  }>();
13
13
 
14
14
  const openedSectionI = ref<number>();
@@ -1,4 +1,4 @@
1
- import { type AppElement, type AppElementDefinition } from '../../app/appElement.js';
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<AppElementDefinition<TAccentSchema>, 'component' | 'createStorage'> & {
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>): AppElement<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 { defineEruditProseAppElement } from "../../app/appElement.js";
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 = defineEruditProseAppElement({
6
+ const appElement = defineProseAppElement({
7
7
  schema: accentApp.schema,
8
8
  component: () => import("./Accent.vue"),
9
9
  icon: accentApp.icon,