@hywax/cms 0.0.4 → 0.0.6
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/.nuxt/cms/autocomplete-select.ts +5 -0
- package/.nuxt/cms/button-copy.ts +5 -0
- package/.nuxt/cms/button-delete.ts +5 -0
- package/.nuxt/cms/editor/callout.ts +21 -0
- package/.nuxt/cms/editor/index.ts +2 -0
- package/.nuxt/cms/editor/uplora-image.ts +5 -0
- package/.nuxt/cms/form-panel-aside-section.ts +9 -0
- package/.nuxt/cms/form-panel-section.ts +8 -0
- package/.nuxt/cms/form-panel.ts +15 -0
- package/.nuxt/cms/index.ts +16 -0
- package/.nuxt/cms/input-seo.ts +5 -0
- package/.nuxt/cms/input-slug.ts +5 -0
- package/.nuxt/cms/modal-confirm.ts +5 -0
- package/.nuxt/cms/table-cell-preview.ts +9 -0
- package/.nuxt/cms/table-cell-seo.ts +5 -0
- package/.nuxt/cms/table-cell-user.ts +5 -0
- package/.nuxt/cms/table-panel-column-sorting.ts +5 -0
- package/.nuxt/cms/table-panel-column-visibility.ts +5 -0
- package/.nuxt/cms/table-panel-filters.ts +5 -0
- package/.nuxt/cms/table-panel.ts +8 -0
- package/cli/templates.mjs +4 -3
- package/dist/module.json +1 -1
- package/dist/module.mjs +213 -11
- package/dist/runtime/components/AutocompleteSelect.vue +170 -0
- package/dist/runtime/components/AutocompleteSelect.vue.d.ts +42 -0
- package/dist/runtime/components/ButtonCopy.vue +40 -0
- package/dist/runtime/components/ButtonCopy.vue.d.ts +23 -0
- package/dist/runtime/components/ButtonDelete.vue +59 -0
- package/dist/runtime/components/ButtonDelete.vue.d.ts +34 -0
- package/dist/runtime/components/FormPanel.vue +70 -0
- package/dist/runtime/components/FormPanel.vue.d.ts +41 -0
- package/dist/runtime/components/FormPanelAsideSection.vue +41 -0
- package/dist/runtime/components/FormPanelAsideSection.vue.d.ts +23 -0
- package/dist/runtime/components/FormPanelSection.vue +31 -0
- package/dist/runtime/components/FormPanelSection.vue.d.ts +20 -0
- package/dist/runtime/components/InputSeo.vue +73 -0
- package/dist/runtime/components/InputSeo.vue.d.ts +19 -0
- package/dist/runtime/components/InputSlug.vue +74 -0
- package/dist/runtime/components/InputSlug.vue.d.ts +31 -0
- package/dist/runtime/components/ModalConfirm.vue +96 -0
- package/dist/runtime/components/ModalConfirm.vue.d.ts +32 -0
- package/dist/runtime/components/TableCellPreview.vue +40 -0
- package/dist/runtime/components/TableCellPreview.vue.d.ts +18 -0
- package/dist/runtime/components/TableCellSeo.vue +34 -0
- package/dist/runtime/components/TableCellSeo.vue.d.ts +13 -0
- package/dist/runtime/components/TableCellUser.vue +33 -0
- package/dist/runtime/components/TableCellUser.vue.d.ts +15 -0
- package/dist/runtime/components/TablePanel.vue +153 -0
- package/dist/runtime/components/TablePanel.vue.d.ts +50 -0
- package/dist/runtime/components/TablePanelColumnSorting.vue +72 -0
- package/dist/runtime/components/TablePanelColumnSorting.vue.d.ts +20 -0
- package/dist/runtime/components/TablePanelColumnVisibility.vue +49 -0
- package/dist/runtime/components/TablePanelColumnVisibility.vue.d.ts +20 -0
- package/dist/runtime/components/TablePanelFilters.vue +79 -0
- package/dist/runtime/components/TablePanelFilters.vue.d.ts +34 -0
- package/dist/runtime/components/prose/UploraImage.vue +8 -3
- package/dist/runtime/composables/useAdmin.d.ts +6 -0
- package/dist/runtime/composables/useAdmin.js +14 -0
- package/dist/runtime/composables/useDeleteConfirm.d.ts +15 -0
- package/dist/runtime/composables/useDeleteConfirm.js +27 -0
- package/dist/runtime/composables/useSeoStats.d.ts +2 -2
- package/dist/runtime/composables/useSeoStats.js +1 -1
- package/dist/runtime/composables/useTable.d.ts +19 -0
- package/dist/runtime/composables/useTable.js +90 -0
- package/dist/runtime/editor/extensions/callout/CalloutView.vue +79 -0
- package/dist/runtime/editor/extensions/callout/CalloutView.vue.d.ts +7 -0
- package/dist/runtime/editor/extensions/callout/extension.d.ts +13 -0
- package/dist/runtime/editor/extensions/callout/extension.js +48 -0
- package/dist/runtime/editor/extensions/callout/index.d.ts +2 -0
- package/dist/runtime/editor/extensions/callout/index.js +2 -0
- package/dist/runtime/editor/extensions/callout/types.d.ts +3 -0
- package/dist/runtime/editor/extensions/callout/types.js +0 -0
- package/dist/runtime/editor/extensions/index.d.ts +26 -0
- package/dist/runtime/editor/extensions/index.js +85 -0
- package/dist/runtime/editor/extensions/uplora-image/UploraImageView.vue +26 -0
- package/dist/runtime/editor/extensions/uplora-image/UploraImageView.vue.d.ts +7 -0
- package/dist/runtime/editor/extensions/uplora-image/extension.d.ts +13 -0
- package/dist/runtime/editor/extensions/uplora-image/extension.js +60 -0
- package/dist/runtime/editor/extensions/uplora-image/index.d.ts +2 -0
- package/dist/runtime/editor/extensions/uplora-image/index.js +2 -0
- package/dist/runtime/editor/extensions/uplora-image/types.d.ts +5 -0
- package/dist/runtime/editor/extensions/uplora-image/types.js +0 -0
- package/dist/runtime/editor/markdown/index.d.ts +3 -0
- package/dist/runtime/editor/markdown/index.js +47 -0
- package/dist/runtime/editor/markdown/nodes/callout.d.ts +2 -0
- package/dist/runtime/editor/markdown/nodes/callout.js +21 -0
- package/dist/runtime/editor/markdown/nodes/uploraImage.d.ts +2 -0
- package/dist/runtime/editor/markdown/nodes/uploraImage.js +31 -0
- package/dist/runtime/server/api/uplora/[id].delete.d.ts +2 -0
- package/dist/runtime/server/api/uplora/[id].delete.js +4 -0
- package/dist/runtime/server/api/uplora/index.post.d.ts +2 -0
- package/dist/runtime/server/api/uplora/index.post.js +4 -0
- package/dist/runtime/server/utils/validation.d.ts +2 -2
- package/dist/runtime/types/index.d.ts +16 -0
- package/dist/runtime/types/index.js +16 -0
- package/dist/runtime/types/query.d.ts +3 -1
- package/dist/runtime/types/tv.d.ts +9 -3
- package/package.json +5 -5
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type DefineFullExtension = ReturnType<typeof defineFullExtension>;
|
|
2
|
+
export type DefineLightExtension = ReturnType<typeof defineLightExtension>;
|
|
3
|
+
export declare function defineFullExtension(): import("prosekit/core").Union<readonly [import("prosekit/extensions/doc").DocExtension, import("prosekit/extensions/text").TextExtension, import("prosekit/extensions/paragraph").ParagraphExtension, import("prosekit/extensions/heading").HeadingExtension, import("prosekit/extensions/list").ListExtension, import("prosekit/extensions/blockquote").BlockquoteExtension, import("prosekit/extensions/image").ImageExtension, import("prosekit/extensions/horizontal-rule").HorizontalRuleExtension, import("prosekit/extensions/table").TableExtension, import("prosekit/extensions/code-block").CodeBlockExtension, import("prosekit/extensions/italic").ItalicExtension, import("prosekit/extensions/bold").BoldExtension, import("prosekit/extensions/underline").UnderlineExtension, import("prosekit/extensions/strike").StrikeExtension, import("prosekit/extensions/code").CodeExtension, import("prosekit/extensions/link").LinkExtension, import("prosekit/core").PlainExtension, import("prosekit/core").BaseCommandsExtension, import("prosekit/core").HistoryExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension, import("prosekit/core").Union<readonly [import("prosekit/core").Extension<{
|
|
4
|
+
Nodes: {
|
|
5
|
+
uploraImage: import("./uplora-image").UploraImageAttrs;
|
|
6
|
+
};
|
|
7
|
+
}>, import("prosekit/core").Extension<import("prosekit/core").ExtensionTyping<any, any, any>>, import("prosekit/core").Extension<{
|
|
8
|
+
Commands: {
|
|
9
|
+
setUploraImage: [attrs?: import("./uplora-image").UploraImageAttrs | undefined];
|
|
10
|
+
insertUploraImage: [attrs?: import("./uplora-image").UploraImageAttrs | undefined];
|
|
11
|
+
toggleUploraImage: [attrs?: import("./uplora-image").UploraImageAttrs | undefined];
|
|
12
|
+
setUploraAttrs: [attrs: import("./uplora-image").UploraImageAttrs];
|
|
13
|
+
};
|
|
14
|
+
}>]>, import("prosekit/core").Union<readonly [import("prosekit/core").Extension<{
|
|
15
|
+
Nodes: {
|
|
16
|
+
callout: import("./callout").CalloutAttrs;
|
|
17
|
+
};
|
|
18
|
+
}>, import("prosekit/core").Extension<import("prosekit/core").ExtensionTyping<any, any, any>>, import("prosekit/core").Extension<{
|
|
19
|
+
Commands: {
|
|
20
|
+
setCallout: [attrs?: import("./callout").CalloutAttrs | undefined];
|
|
21
|
+
insertCallout: [attrs?: import("./callout").CalloutAttrs | undefined];
|
|
22
|
+
toggleCallout: [attrs?: import("./callout").CalloutAttrs | undefined];
|
|
23
|
+
setCalloutAttrs: [attrs: import("./callout").CalloutAttrs];
|
|
24
|
+
};
|
|
25
|
+
}>]>]>;
|
|
26
|
+
export declare function defineLightExtension(): import("prosekit/core").Union<readonly [import("prosekit/extensions/doc").DocExtension, import("prosekit/extensions/text").TextExtension, import("prosekit/extensions/paragraph").ParagraphExtension, import("prosekit/extensions/list").ListExtension, import("prosekit/extensions/blockquote").BlockquoteExtension, import("prosekit/extensions/code-block").CodeBlockExtension, import("prosekit/extensions/italic").ItalicExtension, import("prosekit/extensions/bold").BoldExtension, import("prosekit/extensions/underline").UnderlineExtension, import("prosekit/extensions/strike").StrikeExtension, import("prosekit/extensions/code").CodeExtension, import("prosekit/extensions/link").LinkExtension, import("prosekit/core").PlainExtension, import("prosekit/core").BaseCommandsExtension, import("prosekit/core").HistoryExtension, import("prosekit/core").PlainExtension, import("prosekit/core").PlainExtension]>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { defineBaseCommands, defineBaseKeymap, defineHistory, union } from "prosekit/core";
|
|
2
|
+
import { defineBlockquote } from "prosekit/extensions/blockquote";
|
|
3
|
+
import { defineBold } from "prosekit/extensions/bold";
|
|
4
|
+
import { defineCode } from "prosekit/extensions/code";
|
|
5
|
+
import { defineCodeBlock } from "prosekit/extensions/code-block";
|
|
6
|
+
import { defineDoc } from "prosekit/extensions/doc";
|
|
7
|
+
import { defineDropCursor } from "prosekit/extensions/drop-cursor";
|
|
8
|
+
import { defineGapCursor } from "prosekit/extensions/gap-cursor";
|
|
9
|
+
import { defineHeading } from "prosekit/extensions/heading";
|
|
10
|
+
import { defineHorizontalRule } from "prosekit/extensions/horizontal-rule";
|
|
11
|
+
import { defineImage } from "prosekit/extensions/image";
|
|
12
|
+
import { defineItalic } from "prosekit/extensions/italic";
|
|
13
|
+
import { defineLink } from "prosekit/extensions/link";
|
|
14
|
+
import { defineList } from "prosekit/extensions/list";
|
|
15
|
+
import { defineModClickPrevention } from "prosekit/extensions/mod-click-prevention";
|
|
16
|
+
import { defineParagraph } from "prosekit/extensions/paragraph";
|
|
17
|
+
import { definePlaceholder } from "prosekit/extensions/placeholder";
|
|
18
|
+
import { defineStrike } from "prosekit/extensions/strike";
|
|
19
|
+
import { defineTable } from "prosekit/extensions/table";
|
|
20
|
+
import { defineText } from "prosekit/extensions/text";
|
|
21
|
+
import { defineUnderline } from "prosekit/extensions/underline";
|
|
22
|
+
import { defineVirtualSelection } from "prosekit/extensions/virtual-selection";
|
|
23
|
+
import { defineCallout } from "./callout/index.js";
|
|
24
|
+
import { defineUploraImage } from "./uplora-image/index.js";
|
|
25
|
+
export function defineFullExtension() {
|
|
26
|
+
return union([
|
|
27
|
+
// Nodes
|
|
28
|
+
defineDoc(),
|
|
29
|
+
defineText(),
|
|
30
|
+
defineParagraph(),
|
|
31
|
+
defineHeading(),
|
|
32
|
+
defineList(),
|
|
33
|
+
defineBlockquote(),
|
|
34
|
+
defineImage(),
|
|
35
|
+
defineHorizontalRule(),
|
|
36
|
+
defineTable(),
|
|
37
|
+
defineCodeBlock(),
|
|
38
|
+
// Marks
|
|
39
|
+
defineItalic(),
|
|
40
|
+
defineBold(),
|
|
41
|
+
defineUnderline(),
|
|
42
|
+
defineStrike(),
|
|
43
|
+
defineCode(),
|
|
44
|
+
defineLink(),
|
|
45
|
+
// Others
|
|
46
|
+
defineBaseKeymap(),
|
|
47
|
+
defineBaseCommands(),
|
|
48
|
+
defineHistory(),
|
|
49
|
+
defineDropCursor(),
|
|
50
|
+
defineGapCursor(),
|
|
51
|
+
defineVirtualSelection(),
|
|
52
|
+
defineModClickPrevention(),
|
|
53
|
+
definePlaceholder({
|
|
54
|
+
placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 '/' \u0434\u043B\u044F \u043A\u043E\u043C\u0430\u043D\u0434"
|
|
55
|
+
}),
|
|
56
|
+
defineUploraImage(),
|
|
57
|
+
defineCallout()
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
export function defineLightExtension() {
|
|
61
|
+
return union([
|
|
62
|
+
// Nodes
|
|
63
|
+
defineDoc(),
|
|
64
|
+
defineText(),
|
|
65
|
+
defineParagraph(),
|
|
66
|
+
defineList(),
|
|
67
|
+
defineBlockquote(),
|
|
68
|
+
defineCodeBlock(),
|
|
69
|
+
// Marks
|
|
70
|
+
defineItalic(),
|
|
71
|
+
defineBold(),
|
|
72
|
+
defineUnderline(),
|
|
73
|
+
defineStrike(),
|
|
74
|
+
defineCode(),
|
|
75
|
+
defineLink(),
|
|
76
|
+
// Others
|
|
77
|
+
defineBaseKeymap(),
|
|
78
|
+
defineBaseCommands(),
|
|
79
|
+
defineHistory(),
|
|
80
|
+
defineModClickPrevention(),
|
|
81
|
+
definePlaceholder({
|
|
82
|
+
placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043A\u0441\u0442..."
|
|
83
|
+
})
|
|
84
|
+
]);
|
|
85
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div :class="ui.root()">
|
|
3
|
+
...
|
|
4
|
+
</div>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script>
|
|
8
|
+
import theme from "#build/cms/editor/uplora-image";
|
|
9
|
+
import { computed, useAppConfig } from "#imports";
|
|
10
|
+
import { tv } from "../../../utils/tv";
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<script setup>
|
|
14
|
+
const _props = defineProps({
|
|
15
|
+
contentRef: { type: [String, Object, Function], required: true },
|
|
16
|
+
view: { type: Object, required: true },
|
|
17
|
+
getPos: { type: Function, required: true },
|
|
18
|
+
setAttrs: { type: Function, required: true },
|
|
19
|
+
node: { type: null, required: true },
|
|
20
|
+
selected: { type: null, required: true },
|
|
21
|
+
decorations: { type: null, required: true },
|
|
22
|
+
innerDecorations: { type: null, required: true }
|
|
23
|
+
});
|
|
24
|
+
const appConfig = useAppConfig();
|
|
25
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.cms?.editor?.uploraImage || {} })());
|
|
26
|
+
</script>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import type { VueNodeViewProps } from 'prosekit/vue';
|
|
3
|
+
import type { ComponentConfig } from '../../../types';
|
|
4
|
+
import theme from '#build/cms/editor/uplora-image';
|
|
5
|
+
export type ProseUploraImage = ComponentConfig<typeof theme, AppConfig, 'uploraImage', 'cms.editor'>;
|
|
6
|
+
declare const _default: import("vue").DefineComponent<VueNodeViewProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VueNodeViewProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { UploraImageAttrs } from './types';
|
|
2
|
+
export declare function defineUploraImage(): import("prosekit/core").Union<readonly [import("prosekit/core").Extension<{
|
|
3
|
+
Nodes: {
|
|
4
|
+
uploraImage: UploraImageAttrs;
|
|
5
|
+
};
|
|
6
|
+
}>, import("prosekit/core").Extension<import("prosekit/core").ExtensionTyping<any, any, any>>, import("prosekit/core").Extension<{
|
|
7
|
+
Commands: {
|
|
8
|
+
setUploraImage: [attrs?: UploraImageAttrs | undefined];
|
|
9
|
+
insertUploraImage: [attrs?: UploraImageAttrs | undefined];
|
|
10
|
+
toggleUploraImage: [attrs?: UploraImageAttrs | undefined];
|
|
11
|
+
setUploraAttrs: [attrs: UploraImageAttrs];
|
|
12
|
+
};
|
|
13
|
+
}>]>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Fragment, Slice } from "@prosekit/pm/model";
|
|
2
|
+
import { defineCommands, defineNodeSpec, getNodeType, insertNode, setNodeAttrs, toggleWrap, union } from "prosekit/core";
|
|
3
|
+
import { defineVueNodeView } from "prosekit/vue";
|
|
4
|
+
import UploraImageView from "./UploraImageView.vue";
|
|
5
|
+
function defineUploraImageSpec() {
|
|
6
|
+
return defineNodeSpec({
|
|
7
|
+
name: "uploraImage",
|
|
8
|
+
group: "block",
|
|
9
|
+
atom: true,
|
|
10
|
+
attrs: {
|
|
11
|
+
image: { default: "" },
|
|
12
|
+
alt: { default: "" },
|
|
13
|
+
lqip: { default: "" }
|
|
14
|
+
},
|
|
15
|
+
parseDOM: [{ tag: 'div[data-type="uplora-image"]' }],
|
|
16
|
+
toDOM({ attrs }) {
|
|
17
|
+
return ["div", { "data-type": "uplora-image", ...attrs }];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
function defineUploraImageView() {
|
|
22
|
+
return defineVueNodeView({
|
|
23
|
+
name: "uploraImage",
|
|
24
|
+
component: UploraImageView
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function defineUploraImageCommands() {
|
|
28
|
+
return defineCommands({
|
|
29
|
+
setUploraImage: (attrs) => {
|
|
30
|
+
return (state, dispatch) => {
|
|
31
|
+
if (!dispatch) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
const { schema, tr } = state;
|
|
35
|
+
const type = getNodeType(schema, "uploraImage");
|
|
36
|
+
const node = type.create(attrs);
|
|
37
|
+
const pos = tr.selection.anchor;
|
|
38
|
+
tr.replaceRange(pos, pos, new Slice(Fragment.from(node), 0, 0));
|
|
39
|
+
dispatch(tr);
|
|
40
|
+
return true;
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
insertUploraImage: (attrs) => {
|
|
44
|
+
return insertNode({ type: "uploraImage", attrs });
|
|
45
|
+
},
|
|
46
|
+
toggleUploraImage: (attrs) => {
|
|
47
|
+
return toggleWrap({ type: "uploraImage", attrs });
|
|
48
|
+
},
|
|
49
|
+
setUploraAttrs: (attrs) => {
|
|
50
|
+
return setNodeAttrs({ type: "uploraImage", attrs });
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export function defineUploraImage() {
|
|
55
|
+
return union([
|
|
56
|
+
defineUploraImageSpec(),
|
|
57
|
+
defineUploraImageView(),
|
|
58
|
+
defineUploraImageCommands()
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { MDCProsemirrorOptions } from '@unpress/mdc-prosemirror';
|
|
2
|
+
export declare function docToMarkdown(doc: any, config?: MDCProsemirrorOptions): Promise<string>;
|
|
3
|
+
export declare function markdownToDoc(markdown: string, config?: MDCProsemirrorOptions): Promise<import("@unpress/mdc-prosemirror").NodeJSON>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { docToMarkdown as docToMarkdownProsemirror, markdownToDoc as markdownToDocProsemirror } from "@unpress/mdc-prosemirror";
|
|
2
|
+
import { defu } from "defu";
|
|
3
|
+
import { calloutNode } from "./nodes/callout.js";
|
|
4
|
+
import { uploraImageNode } from "./nodes/uploraImage.js";
|
|
5
|
+
function genericComponentNode(type) {
|
|
6
|
+
const componentMap = {
|
|
7
|
+
"callout": "callout",
|
|
8
|
+
"caution": "callout",
|
|
9
|
+
"note": "callout",
|
|
10
|
+
"warning": "callout",
|
|
11
|
+
"tip": "callout",
|
|
12
|
+
"uplora-image": "uploraImage"
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
type,
|
|
16
|
+
parse: () => {
|
|
17
|
+
},
|
|
18
|
+
compile: (node) => {
|
|
19
|
+
if (!node || !node.attrs?.componentName) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
for (const [markdown, prosemirror] of Object.entries(componentMap)) {
|
|
23
|
+
if (markdown === node.attrs.componentName) {
|
|
24
|
+
node.type = prosemirror;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const extraNodes = [
|
|
32
|
+
genericComponentNode("containerComponent"),
|
|
33
|
+
genericComponentNode("textComponent"),
|
|
34
|
+
genericComponentNode("leafComponent"),
|
|
35
|
+
uploraImageNode,
|
|
36
|
+
calloutNode
|
|
37
|
+
];
|
|
38
|
+
export function docToMarkdown(doc, config) {
|
|
39
|
+
return docToMarkdownProsemirror(doc, defu(config || {}, {
|
|
40
|
+
extraNodes
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
export function markdownToDoc(markdown, config) {
|
|
44
|
+
return markdownToDocProsemirror(markdown, defu(config || {}, {
|
|
45
|
+
extraNodes
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const calloutNode = {
|
|
2
|
+
type: "callout",
|
|
3
|
+
parse: (node) => {
|
|
4
|
+
if (!node) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
Object.assign(node, {
|
|
8
|
+
type: "containerComponent",
|
|
9
|
+
name: node.attrs?.type || "note"
|
|
10
|
+
});
|
|
11
|
+
},
|
|
12
|
+
compile: (node) => {
|
|
13
|
+
if (!node) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
node.type = "callout";
|
|
17
|
+
node.attrs = {
|
|
18
|
+
type: node.attrs?.componentName
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const uploraImageNode = {
|
|
2
|
+
type: "uploraImage",
|
|
3
|
+
parse: (node) => {
|
|
4
|
+
if (!node) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
Object.assign(node, {
|
|
8
|
+
type: "containerComponent",
|
|
9
|
+
name: "uplora-image",
|
|
10
|
+
attributes: {
|
|
11
|
+
image: node.attrs?.image || "",
|
|
12
|
+
alt: node.attrs?.alt || "",
|
|
13
|
+
lqip: node.attrs?.lqip || ""
|
|
14
|
+
},
|
|
15
|
+
children: []
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
compile: (node) => {
|
|
19
|
+
if (!node) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
node.type = "uploraImage";
|
|
23
|
+
node.attrs = {
|
|
24
|
+
image: node.attrs?.attributes?.image || node.attrs?.fmAttributes?.image || "",
|
|
25
|
+
alt: node.attrs?.attributes?.alt || node.attrs?.fmAttributes?.alt || "",
|
|
26
|
+
color: node.attrs?.attributes?.color || node.attrs?.fmAttributes?.color || "",
|
|
27
|
+
lqip: node.attrs?.attributes?.lqip || node.attrs?.fmAttributes?.lqip || ""
|
|
28
|
+
};
|
|
29
|
+
delete node.children;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PaginationQueryRaw, PaginationQueryValidated, SortQuery, SortQueryRaw } from '../../types';
|
|
2
2
|
export declare function getValidatedSort<T extends string[]>(query: SortQueryRaw, availableColumns: readonly [...T]): SortQuery<T[number]>;
|
|
3
|
-
export declare function getValidatedPagination(query: PaginationQueryRaw):
|
|
3
|
+
export declare function getValidatedPagination(query: PaginationQueryRaw): PaginationQueryValidated;
|
|
@@ -1,4 +1,20 @@
|
|
|
1
|
+
export * from '../components/AutocompleteSelect.vue';
|
|
1
2
|
export * from '../components/ButtonClear.vue';
|
|
3
|
+
export * from '../components/ButtonCopy.vue';
|
|
4
|
+
export * from '../components/ButtonDelete.vue';
|
|
5
|
+
export * from '../components/FormPanel.vue';
|
|
6
|
+
export * from '../components/FormPanelAsideSection.vue';
|
|
7
|
+
export * from '../components/FormPanelSection.vue';
|
|
8
|
+
export * from '../components/InputSeo.vue';
|
|
9
|
+
export * from '../components/InputSlug.vue';
|
|
10
|
+
export * from '../components/ModalConfirm.vue';
|
|
11
|
+
export * from '../components/TableCellPreview.vue';
|
|
12
|
+
export * from '../components/TableCellSeo.vue';
|
|
13
|
+
export * from '../components/TableCellUser.vue';
|
|
14
|
+
export * from '../components/TablePanel.vue';
|
|
15
|
+
export * from '../components/TablePanelColumnSorting.vue';
|
|
16
|
+
export * from '../components/TablePanelColumnVisibility.vue';
|
|
17
|
+
export * from '../components/TablePanelFilters.vue';
|
|
2
18
|
export * from '../components/UploraImage.vue';
|
|
3
19
|
export * from './image';
|
|
4
20
|
export * from './query';
|
|
@@ -1,4 +1,20 @@
|
|
|
1
|
+
export * from "../components/AutocompleteSelect.vue";
|
|
1
2
|
export * from "../components/ButtonClear.vue";
|
|
3
|
+
export * from "../components/ButtonCopy.vue";
|
|
4
|
+
export * from "../components/ButtonDelete.vue";
|
|
5
|
+
export * from "../components/FormPanel.vue";
|
|
6
|
+
export * from "../components/FormPanelAsideSection.vue";
|
|
7
|
+
export * from "../components/FormPanelSection.vue";
|
|
8
|
+
export * from "../components/InputSeo.vue";
|
|
9
|
+
export * from "../components/InputSlug.vue";
|
|
10
|
+
export * from "../components/ModalConfirm.vue";
|
|
11
|
+
export * from "../components/TableCellPreview.vue";
|
|
12
|
+
export * from "../components/TableCellSeo.vue";
|
|
13
|
+
export * from "../components/TableCellUser.vue";
|
|
14
|
+
export * from "../components/TablePanel.vue";
|
|
15
|
+
export * from "../components/TablePanelColumnSorting.vue";
|
|
16
|
+
export * from "../components/TablePanelColumnVisibility.vue";
|
|
17
|
+
export * from "../components/TablePanelFilters.vue";
|
|
2
18
|
export * from "../components/UploraImage.vue";
|
|
3
19
|
export * from "./image.js";
|
|
4
20
|
export * from "./query.js";
|
|
@@ -27,14 +27,20 @@ type ComponentSlots<T extends {
|
|
|
27
27
|
[K in keyof T['slots']]?: ClassValue;
|
|
28
28
|
}>;
|
|
29
29
|
type GetComponentAppConfig<A, U extends string, K extends string> = A extends Record<U, Record<K, any>> ? A[U][K] : object;
|
|
30
|
-
type ComponentAppConfig<T, A extends Record<string, any>, K extends string, U extends string = 'cms' | 'cms.prose'> = A & (U extends 'cms.prose' ? {
|
|
30
|
+
type ComponentAppConfig<T, A extends Record<string, any>, K extends string, U extends string = 'cms' | 'cms.prose' | 'cms.editor'> = A & (U extends 'cms.prose' ? {
|
|
31
31
|
cms?: {
|
|
32
32
|
prose?: {
|
|
33
33
|
[k in K]?: Partial<T>;
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
|
+
} : U extends 'cms.editor' ? {
|
|
37
|
+
cms?: {
|
|
38
|
+
editor?: {
|
|
39
|
+
[k in K]?: Partial<T>;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
36
42
|
} : {
|
|
37
|
-
[key in Exclude<U, 'cms.prose'>]?: {
|
|
43
|
+
[key in Exclude<U, 'cms.prose' | 'cms.editor'>]?: {
|
|
38
44
|
[k in K]?: Partial<T>;
|
|
39
45
|
};
|
|
40
46
|
});
|
|
@@ -45,7 +51,7 @@ type ComponentAppConfig<T, A extends Record<string, any>, K extends string, U ex
|
|
|
45
51
|
* @template K The key identifying the component (e.g., 'badge').
|
|
46
52
|
* @template U The top-level key in AppConfig ('cms' or 'cms.prose').
|
|
47
53
|
*/
|
|
48
|
-
export type ComponentConfig<T extends Record<string, any>, A extends Record<string, any>, K extends string, U extends 'cms' | 'cms.prose' = 'cms'> = {
|
|
54
|
+
export type ComponentConfig<T extends Record<string, any>, A extends Record<string, any>, K extends string, U extends 'cms' | 'cms.prose' | 'cms.editor' = 'cms'> = {
|
|
49
55
|
AppConfig: ComponentAppConfig<T, A, K, U>;
|
|
50
56
|
variants: ComponentVariants<T & GetComponentAppConfig<A, U, K>>;
|
|
51
57
|
slots: ComponentSlots<T>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hywax/cms",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.6",
|
|
5
5
|
"description": "Hywax CMS. ⚠️ This package is intended for internal use only.",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@dicebear/collection": "^9.2.2",
|
|
59
59
|
"@dicebear/core": "^9.2.2",
|
|
60
|
-
"@iconify-json/lucide": "1.2.
|
|
60
|
+
"@iconify-json/lucide": "1.2.51",
|
|
61
61
|
"@nuxt/kit": "^3.17.5",
|
|
62
62
|
"@nuxt/ui-pro": "^3.1.3",
|
|
63
63
|
"@nuxtjs/mdc": "^0.17.0",
|
|
@@ -74,14 +74,14 @@
|
|
|
74
74
|
"zod": "^3.25.67"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
|
-
"@antfu/eslint-config": "^4.
|
|
77
|
+
"@antfu/eslint-config": "^4.15.0",
|
|
78
78
|
"@commitlint/cli": "^19.8.1",
|
|
79
79
|
"@commitlint/config-conventional": "^19.8.1",
|
|
80
80
|
"@nuxt/devtools": "^2.5.0",
|
|
81
81
|
"@nuxt/module-builder": "^1.0.1",
|
|
82
82
|
"@nuxt/schema": "^3.17.5",
|
|
83
83
|
"@nuxt/test-utils": "^3.19.1",
|
|
84
|
-
"@types/node": "^22.
|
|
84
|
+
"@types/node": "^22.15.32",
|
|
85
85
|
"@vue/test-utils": "^2.4.6",
|
|
86
86
|
"changelogen": "^0.6.1",
|
|
87
87
|
"eslint": "^9.29.0",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"lint-staged": "^16.1.2",
|
|
91
91
|
"nuxt": "^3.17.5",
|
|
92
92
|
"typescript": "^5.8.3",
|
|
93
|
-
"vitest": "^3.2.
|
|
93
|
+
"vitest": "^3.2.4",
|
|
94
94
|
"vue-tsc": "^2.2.10"
|
|
95
95
|
},
|
|
96
96
|
"resolutions": {
|