rimelight-components 2.0.60 → 2.0.63
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/module.json +1 -1
- package/dist/module.mjs +1 -2
- package/dist/runtime/app.config.d.ts +4 -0
- package/dist/runtime/app.config.js +4 -0
- package/dist/runtime/components/blocks/BlockEditRenderer.d.vue.ts +1 -1
- package/dist/runtime/components/blocks/BlockEditRenderer.vue.d.ts +1 -1
- package/dist/runtime/components/blocks/BlockEditor.d.vue.ts +1 -1
- package/dist/runtime/components/blocks/BlockEditor.vue +1 -1
- package/dist/runtime/components/blocks/BlockEditor.vue.d.ts +1 -1
- package/dist/runtime/components/blocks/BlockViewRenderer.d.vue.ts +1 -1
- package/dist/runtime/components/blocks/BlockViewRenderer.vue.d.ts +1 -1
- package/dist/runtime/components/blocks/TOC.d.vue.ts +2 -2
- package/dist/runtime/components/blocks/TOC.vue.d.ts +2 -2
- package/dist/runtime/components/blocks/TextRenderer.d.vue.ts +1 -1
- package/dist/runtime/components/blocks/TextRenderer.vue.d.ts +1 -1
- package/dist/runtime/components/blocks/editor/ParagraphBlockEditor.d.vue.ts +1 -1
- package/dist/runtime/components/blocks/editor/ParagraphBlockEditor.vue.d.ts +1 -1
- package/dist/runtime/components/blocks/editor/SectionBlockEditor.d.vue.ts +1 -1
- package/dist/runtime/components/blocks/editor/SectionBlockEditor.vue.d.ts +1 -1
- package/dist/runtime/components/blocks/editor/TestBlockEditor.d.vue.ts +1 -1
- package/dist/runtime/components/blocks/editor/TestBlockEditor.vue.d.ts +1 -1
- package/dist/runtime/components/content/Section.vue +1 -1
- package/dist/runtime/components/page/PageEditor.d.vue.ts +17 -5
- package/dist/runtime/components/page/PageEditor.vue +1 -1
- package/dist/runtime/components/page/PageEditor.vue.d.ts +17 -5
- package/dist/runtime/components/page/PagePropertiesEditor.d.vue.ts +9 -3
- package/dist/runtime/components/page/PagePropertiesEditor.vue +16 -12
- package/dist/runtime/components/page/PagePropertiesEditor.vue.d.ts +9 -3
- package/dist/runtime/components/page/PagePropertiesRenderer.d.vue.ts +1 -1
- package/dist/runtime/components/page/PagePropertiesRenderer.vue +25 -17
- package/dist/runtime/components/page/PagePropertiesRenderer.vue.d.ts +1 -1
- package/dist/runtime/components/swatches/ColorSwatch.vue +1 -1
- package/dist/runtime/composables/index.d.ts +3 -0
- package/dist/runtime/composables/index.js +3 -0
- package/dist/runtime/composables/useBlockEditor.d.ts +131 -131
- package/dist/runtime/composables/usePageEditor.d.ts +1 -1
- package/dist/runtime/types/app.config.d.ts +10 -2
- package/dist/runtime/types/index.d.ts +3 -4
- package/dist/runtime/types/index.js +0 -1
- package/dist/runtime/types/pages.d.ts +31 -109
- package/dist/runtime/types/pages.js +3 -58
- package/dist/runtime/types/schemas.d.ts +0 -6
- package/dist/runtime/types/schemas.js +0 -10
- package/dist/runtime/utils/blockMapper.d.ts +1 -1
- package/dist/runtime/utils/database.d.ts +6 -0
- package/dist/runtime/utils/database.js +10 -0
- package/dist/runtime/utils/index.d.ts +4 -3
- package/dist/runtime/utils/index.js +1 -0
- package/dist/runtime/utils/page.d.ts +7 -4
- package/dist/runtime/utils/page.js +64 -13
- package/dist/runtime/utils/richTextHelpers.d.ts +1 -1
- package/package.json +30 -23
- package/dist/runtime/types/pageTemplates.d.ts +0 -3
- package/dist/runtime/types/pageTemplates.js +0 -173
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
declare module '#build/app.config' {
|
|
2
2
|
import type { AppConfig } from '@nuxt/schema'
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
interface RimelightComponentsConfig {
|
|
5
|
+
[key: string]: any
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface CustomAppConfig extends AppConfig {
|
|
9
|
+
rimelightComponents?: RimelightComponentsConfig
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const _default: CustomAppConfig
|
|
5
13
|
export default _default
|
|
6
|
-
}
|
|
14
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from "./blocks
|
|
2
|
-
export * from "./pages
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./schemas.js";
|
|
1
|
+
export * from "./blocks";
|
|
2
|
+
export * from "./pages";
|
|
3
|
+
export * from "./schemas";
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { type Image } from "../types
|
|
2
|
-
import { type Block } from "
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { type Image } from "../types";
|
|
2
|
+
import { type Block } from "../types";
|
|
3
|
+
declare global {
|
|
4
|
+
interface RimelightRegisterPageTypes {
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export type PageType = keyof RegisterPageTypes;
|
|
8
|
+
export interface Property<T = any> {
|
|
9
|
+
value: T;
|
|
5
10
|
label: string;
|
|
6
11
|
type: "number" | "text" | "text-array" | "enum" | "page" | "page-array";
|
|
7
12
|
options?: string[];
|
|
@@ -9,70 +14,33 @@ export interface Property {
|
|
|
9
14
|
order?: number;
|
|
10
15
|
visibleIf?: (properties: any) => boolean;
|
|
11
16
|
}
|
|
17
|
+
export type Localized<T = string> = Record<string, T>;
|
|
12
18
|
export interface PropertyGroup {
|
|
13
|
-
|
|
14
|
-
label: string;
|
|
19
|
+
label: Localized<string>;
|
|
15
20
|
order?: number;
|
|
16
21
|
fields: Record<string, Property>;
|
|
17
22
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
export interface PatchNoteProperties extends BasePageProperties {
|
|
25
|
-
}
|
|
26
|
-
export interface LocationProperties extends BasePageProperties {
|
|
27
|
-
}
|
|
28
|
-
export interface SpeciesProperties extends BasePageProperties {
|
|
29
|
-
}
|
|
30
|
-
export interface CharacterProperties extends BasePageProperties {
|
|
31
|
-
name: string;
|
|
32
|
-
title?: string;
|
|
33
|
-
aliases?: string[];
|
|
34
|
-
flavourText?: string;
|
|
35
|
-
species?: string;
|
|
36
|
-
sex?: string;
|
|
37
|
-
pronouns?: string;
|
|
38
|
-
height?: number;
|
|
39
|
-
weight?: number;
|
|
40
|
-
dateOfBirth?: string;
|
|
41
|
-
dateOfDeath?: string;
|
|
42
|
-
placeOfBirth?: string;
|
|
43
|
-
placeOfDeath?: string;
|
|
44
|
-
formerAffiliations?: string[];
|
|
45
|
-
currentAffiliations?: string[];
|
|
46
|
-
equipment?: string[];
|
|
47
|
-
pets?: string[];
|
|
48
|
-
mounts?: string[];
|
|
49
|
-
favouriteFood?: string;
|
|
50
|
-
}
|
|
51
|
-
export interface ObjectProperties extends BasePageProperties {
|
|
52
|
-
}
|
|
53
|
-
export interface TaleProperties extends BasePageProperties {
|
|
54
|
-
}
|
|
55
|
-
export interface ItemProperties extends BasePageProperties {
|
|
56
|
-
}
|
|
57
|
-
export interface SkillProperties extends BasePageProperties {
|
|
58
|
-
}
|
|
59
|
-
export interface HeroProperties extends BasePageProperties {
|
|
60
|
-
}
|
|
61
|
-
export interface CardProperties extends BasePageProperties {
|
|
62
|
-
name: string;
|
|
63
|
-
alignment: string;
|
|
64
|
-
type: string;
|
|
65
|
-
flavourText: string;
|
|
23
|
+
/**
|
|
24
|
+
* A PageTemplate is the single definition for a page's properties and initial blocks.
|
|
25
|
+
*/
|
|
26
|
+
export interface PageDefinition {
|
|
27
|
+
properties: Record<string, PropertyGroup>;
|
|
28
|
+
initialBlocks?: () => Block[];
|
|
66
29
|
}
|
|
67
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Helper to define a page with full type safety and literal preservation.
|
|
32
|
+
* This is used by consuming apps to define their custom page types.
|
|
33
|
+
*/
|
|
34
|
+
export declare function definePageDefinition<T extends PageDefinition>(def: T): T;
|
|
35
|
+
export interface BasePageProperties {
|
|
68
36
|
}
|
|
69
|
-
export interface
|
|
37
|
+
export interface RegisterPageTypes extends RimelightRegisterPageTypes {
|
|
38
|
+
Default: BasePageProperties;
|
|
70
39
|
}
|
|
71
|
-
export type Localized<T = string> = Record<string, T>;
|
|
72
40
|
/**
|
|
73
41
|
* Common fields shared by every page regardless of type.
|
|
74
42
|
*/
|
|
75
|
-
interface BasePage {
|
|
43
|
+
export interface BasePage {
|
|
76
44
|
id: string;
|
|
77
45
|
slug: string;
|
|
78
46
|
image?: Image;
|
|
@@ -89,54 +57,8 @@ interface BasePage {
|
|
|
89
57
|
* Discriminated Union for Page Data structure
|
|
90
58
|
*/
|
|
91
59
|
export type Page = {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
} & BasePage | {
|
|
98
|
-
type: "BlogPost";
|
|
99
|
-
properties: BlogPostProperties;
|
|
100
|
-
} & BasePage | {
|
|
101
|
-
type: "PatchNote";
|
|
102
|
-
properties: PatchNoteProperties;
|
|
103
|
-
} & BasePage | {
|
|
104
|
-
type: "Character";
|
|
105
|
-
properties: CharacterProperties;
|
|
106
|
-
} & BasePage | {
|
|
107
|
-
type: "Card";
|
|
108
|
-
properties: CardProperties;
|
|
109
|
-
} & BasePage | {
|
|
110
|
-
type: "Location";
|
|
111
|
-
properties: BasePageProperties;
|
|
112
|
-
} & BasePage | {
|
|
113
|
-
type: "Species";
|
|
114
|
-
properties: BasePageProperties;
|
|
115
|
-
} & BasePage | {
|
|
116
|
-
type: "Object";
|
|
117
|
-
properties: BasePageProperties;
|
|
118
|
-
} & BasePage | {
|
|
119
|
-
type: "Tale";
|
|
120
|
-
properties: BasePageProperties;
|
|
121
|
-
} & BasePage | {
|
|
122
|
-
type: "Item";
|
|
123
|
-
properties: BasePageProperties;
|
|
124
|
-
} & BasePage | {
|
|
125
|
-
type: "Skill";
|
|
126
|
-
properties: BasePageProperties;
|
|
127
|
-
} & BasePage | {
|
|
128
|
-
type: "Hero";
|
|
129
|
-
properties: BasePageProperties;
|
|
130
|
-
} & BasePage | {
|
|
131
|
-
type: "Series";
|
|
132
|
-
properties: BasePageProperties;
|
|
133
|
-
} & BasePage | {
|
|
134
|
-
type: "Episode";
|
|
135
|
-
properties: BasePageProperties;
|
|
136
|
-
} & BasePage;
|
|
137
|
-
/**
|
|
138
|
-
* Registry mapping PageTypes to their UI schema.
|
|
139
|
-
* This drives the dynamic form generation in the Sidebar.
|
|
140
|
-
*/
|
|
141
|
-
export declare const PAGE_SCHEMAS: Record<PageType, PropertyGroup[]>;
|
|
142
|
-
export {};
|
|
60
|
+
[K in PageType]: {
|
|
61
|
+
type: K;
|
|
62
|
+
properties: RegisterPageTypes[K];
|
|
63
|
+
} & BasePage;
|
|
64
|
+
}[PageType];
|
|
@@ -1,58 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
BlogPost: [],
|
|
5
|
-
PatchNote: [],
|
|
6
|
-
Character: [
|
|
7
|
-
{
|
|
8
|
-
id: "identity",
|
|
9
|
-
label: "Identity",
|
|
10
|
-
fields: {
|
|
11
|
-
name: { label: "Name", type: "text" },
|
|
12
|
-
title: { label: "Social Title", type: "text" },
|
|
13
|
-
aliases: { label: "Aliases", type: "text-array" }
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
id: "characteristics",
|
|
18
|
-
label: "Characteristics",
|
|
19
|
-
fields: {
|
|
20
|
-
species: { label: "Species", type: "page", allowedPageTypes: ["Species"] },
|
|
21
|
-
sex: { label: "Sex", type: "enum", options: ["Male", "Female", "Other", "Unknown"] },
|
|
22
|
-
height: { label: "Height", type: "number" },
|
|
23
|
-
weight: { label: "Weight", type: "number" }
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
id: "timeline",
|
|
28
|
-
label: "Timeline",
|
|
29
|
-
fields: {
|
|
30
|
-
dateOfBirth: { label: "Date of Birth", type: "text" },
|
|
31
|
-
dateOfDeath: { label: "Date of Death", type: "text" },
|
|
32
|
-
placeOfDeath: {
|
|
33
|
-
label: "Place of Death",
|
|
34
|
-
type: "text",
|
|
35
|
-
visibleIf: (props) => !!props.dateOfDeath
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
id: "other",
|
|
41
|
-
label: "Other",
|
|
42
|
-
order: 3,
|
|
43
|
-
fields: {
|
|
44
|
-
flavourText: { label: "Flavour Text", type: "text" }
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
],
|
|
48
|
-
Location: [],
|
|
49
|
-
Species: [],
|
|
50
|
-
Object: [],
|
|
51
|
-
Tale: [],
|
|
52
|
-
Item: [],
|
|
53
|
-
Skill: [],
|
|
54
|
-
Hero: [],
|
|
55
|
-
Card: [],
|
|
56
|
-
Series: [],
|
|
57
|
-
Episode: []
|
|
58
|
-
};
|
|
1
|
+
export function definePageDefinition(def) {
|
|
2
|
+
return def;
|
|
3
|
+
}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
export declare const id: import("drizzle-orm").NotNull<import("drizzle-orm").HasDefault<import("drizzle-orm/pg-core").PgUUIDBuilderInitial<"id">>>;
|
|
3
|
-
export declare const timestamps: {
|
|
4
|
-
updated_at: import("drizzle-orm").HasDefault<import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"updated_at">>;
|
|
5
|
-
created_at: import("drizzle-orm").NotNull<import("drizzle-orm").HasDefault<import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"created_at">>>;
|
|
6
|
-
deleted_at: import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"deleted_at">;
|
|
7
|
-
};
|
|
8
2
|
export declare const linkVariantEnum: z.ZodEnum<{
|
|
9
3
|
link: "link";
|
|
10
4
|
solid: "solid";
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
import { uuid, timestamp } from "drizzle-orm/pg-core";
|
|
2
1
|
import { z } from "zod";
|
|
3
|
-
import { sql } from "drizzle-orm";
|
|
4
|
-
export const id = uuid("id").default(sql`uuidv7()`).notNull();
|
|
5
|
-
export const timestamps = {
|
|
6
|
-
updated_at: timestamp("updated_at", {
|
|
7
|
-
withTimezone: true
|
|
8
|
-
}).$onUpdate(() => /* @__PURE__ */ new Date()),
|
|
9
|
-
created_at: timestamp("created_at", { withTimezone: true }).defaultNow().notNull(),
|
|
10
|
-
deleted_at: timestamp("deleted_at", { withTimezone: true })
|
|
11
|
-
};
|
|
12
2
|
export const linkVariantEnum = z.enum(["solid", "outline", "subtle", "soft", "ghost", "link"]);
|
|
13
3
|
export const linkColorEnum = z.enum([
|
|
14
4
|
"primary",
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const id: import("drizzle-orm").NotNull<import("drizzle-orm").HasDefault<import("drizzle-orm/pg-core").PgUUIDBuilderInitial<"id">>>;
|
|
2
|
+
export declare const timestamps: {
|
|
3
|
+
updated_at: import("drizzle-orm").HasDefault<import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"updated_at">>;
|
|
4
|
+
created_at: import("drizzle-orm").NotNull<import("drizzle-orm").HasDefault<import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"created_at">>>;
|
|
5
|
+
deleted_at: import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"deleted_at">;
|
|
6
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { uuid, timestamp } from "drizzle-orm/pg-core";
|
|
2
|
+
import { sql } from "drizzle-orm";
|
|
3
|
+
export const id = uuid("id").default(sql`uuidv7()`).notNull();
|
|
4
|
+
export const timestamps = {
|
|
5
|
+
updated_at: timestamp("updated_at", {
|
|
6
|
+
withTimezone: true
|
|
7
|
+
}).$onUpdate(() => /* @__PURE__ */ new Date()),
|
|
8
|
+
created_at: timestamp("created_at", { withTimezone: true }).defaultNow().notNull(),
|
|
9
|
+
deleted_at: timestamp("deleted_at", { withTimezone: true })
|
|
10
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export * from "./richTextHelpers
|
|
2
|
-
export * from "./blockMapper
|
|
3
|
-
export * from "./page
|
|
1
|
+
export * from "./richTextHelpers";
|
|
2
|
+
export * from "./blockMapper";
|
|
3
|
+
export * from "./page";
|
|
4
|
+
export * from "./database";
|
|
4
5
|
/**
|
|
5
6
|
* Converts a string into a URL-friendly slug.
|
|
6
7
|
* - Converts to lowercase.
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type { Page, Localized } from "../types/pages
|
|
1
|
+
import type { Page, Localized, PageDefinition } from "../types/pages";
|
|
2
2
|
export declare const getLocalizedContent: (field: Localized | undefined, currentLocale: string) => string;
|
|
3
3
|
/**
|
|
4
|
-
* Ensures
|
|
5
|
-
*
|
|
4
|
+
* Ensures a page strictly adheres to its PageDefinition.
|
|
5
|
+
* - Adds missing properties and groups in the correct order.
|
|
6
|
+
* - Removes properties and groups no longer in the definition.
|
|
7
|
+
* - Adds missing templated blocks in the correct relative position.
|
|
8
|
+
* - Removes templated blocks no longer in the definition.
|
|
6
9
|
*/
|
|
7
|
-
export declare function
|
|
10
|
+
export declare function syncPageWithDefinition(page: Page, definition?: PageDefinition): Page;
|
|
@@ -1,20 +1,71 @@
|
|
|
1
|
-
import { PAGE_TEMPLATES } from "../types/pageTemplates.js";
|
|
2
1
|
export const getLocalizedContent = (field, currentLocale) => {
|
|
3
2
|
if (!field) return "";
|
|
4
3
|
return field[currentLocale] || field["en"] || "";
|
|
5
4
|
};
|
|
6
|
-
export function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
5
|
+
export function syncPageWithDefinition(page, definition) {
|
|
6
|
+
if (!definition) return page;
|
|
7
|
+
let hasChanged = false;
|
|
8
|
+
const updatedProperties = {};
|
|
9
|
+
const definitionGroups = definition.properties;
|
|
10
|
+
for (const [groupId, definitionGroup] of Object.entries(definitionGroups)) {
|
|
11
|
+
const existingGroup = page.properties[groupId];
|
|
12
|
+
const updatedGroupFields = {};
|
|
13
|
+
for (const [fieldId, definitionField] of Object.entries(definitionGroup.fields)) {
|
|
14
|
+
if (existingGroup?.fields[fieldId]) {
|
|
15
|
+
updatedGroupFields[fieldId] = {
|
|
16
|
+
...definitionField,
|
|
17
|
+
value: existingGroup.fields[fieldId].value
|
|
18
|
+
};
|
|
19
|
+
} else {
|
|
20
|
+
updatedGroupFields[fieldId] = { ...definitionField };
|
|
21
|
+
hasChanged = true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
updatedProperties[groupId] = {
|
|
25
|
+
...definitionGroup,
|
|
26
|
+
fields: updatedGroupFields
|
|
27
|
+
};
|
|
28
|
+
if (!existingGroup) {
|
|
29
|
+
hasChanged = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (Object.keys(page.properties).length !== Object.keys(updatedProperties).length) {
|
|
33
|
+
hasChanged = true;
|
|
34
|
+
} else {
|
|
35
|
+
for (const groupId in updatedProperties) {
|
|
36
|
+
const pageGroup = page.properties[groupId];
|
|
37
|
+
if (Object.keys(pageGroup?.fields || {}).length !== Object.keys(updatedProperties[groupId].fields).length) {
|
|
38
|
+
hasChanged = true;
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
page.properties = updatedProperties;
|
|
44
|
+
if (definition.initialBlocks) {
|
|
45
|
+
const idealBlocks = definition.initialBlocks();
|
|
46
|
+
const currentBlocks = [...page.blocks];
|
|
47
|
+
const idealBlocksMap = new Map(idealBlocks.map((b) => [b.id, b]));
|
|
48
|
+
const filteredCurrent = currentBlocks.filter((b) => {
|
|
49
|
+
if (!b.isTemplated) return true;
|
|
50
|
+
return idealBlocksMap.has(b.id);
|
|
51
|
+
});
|
|
52
|
+
if (filteredCurrent.length !== currentBlocks.length) {
|
|
53
|
+
hasChanged = true;
|
|
54
|
+
}
|
|
55
|
+
let lastExistingIdealIndex = -1;
|
|
56
|
+
for (const idealBlock of idealBlocks) {
|
|
57
|
+
const existingIndex = filteredCurrent.findIndex((b) => b.id === idealBlock.id);
|
|
58
|
+
if (existingIndex !== -1) {
|
|
59
|
+
lastExistingIdealIndex = existingIndex;
|
|
60
|
+
} else {
|
|
61
|
+
filteredCurrent.splice(lastExistingIdealIndex + 1, 0, { ...idealBlock });
|
|
62
|
+
lastExistingIdealIndex++;
|
|
63
|
+
hasChanged = true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
page.blocks = filteredCurrent;
|
|
67
|
+
}
|
|
68
|
+
if (hasChanged) {
|
|
18
69
|
page.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
19
70
|
}
|
|
20
71
|
return page;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RichTextContent } from "../types/blocks
|
|
1
|
+
import type { RichTextContent } from "../types/blocks";
|
|
2
2
|
/**
|
|
3
3
|
* Helper: Converts RichTextContent array into a plain string for a simple contenteditable area.
|
|
4
4
|
* For complex editors, this would generate full HTML/DOM nodes, preserving links/mentions.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rimelight-components",
|
|
3
3
|
"description": "A component library by Rimelight Entertainment.",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.63",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -22,50 +22,55 @@
|
|
|
22
22
|
"exports": {
|
|
23
23
|
".": {
|
|
24
24
|
"types": "./dist/module.d.mts",
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
},
|
|
28
|
-
"./types": {
|
|
29
|
-
"types": "./dist/runtime/types/index.d.ts",
|
|
30
|
-
"import": "./dist/runtime/types/index.js",
|
|
31
|
-
"require": "./dist/runtime/types/index.js"
|
|
25
|
+
"style": "./dist/runtime/index.css",
|
|
26
|
+
"import": "./dist/module.mjs"
|
|
32
27
|
},
|
|
33
28
|
"./runtime/*": "./dist/runtime/*",
|
|
34
29
|
"./components/*": "./dist/runtime/components/*",
|
|
35
|
-
"./composables
|
|
30
|
+
"./composables": {
|
|
31
|
+
"types": "./dist/runtime/composables/index.d.mts",
|
|
32
|
+
"import": "./dist/runtime/composables/index.mjs"
|
|
33
|
+
},
|
|
34
|
+
"./composables/*": {
|
|
35
|
+
"types": "./dist/runtime/composables/*.d.mts",
|
|
36
|
+
"import": "./dist/runtime/composables/*.mjs"
|
|
37
|
+
},
|
|
38
|
+
"./utils": {
|
|
39
|
+
"types": "./dist/runtime/utils/index.d.mts",
|
|
40
|
+
"import": "./dist/runtime/utils/index.mjs"
|
|
41
|
+
},
|
|
36
42
|
"./utils/*": {
|
|
37
43
|
"types": "./dist/runtime/utils/*.d.mts",
|
|
38
|
-
"import": "./dist/runtime/utils/*.
|
|
44
|
+
"import": "./dist/runtime/utils/*.mjs"
|
|
39
45
|
}
|
|
40
46
|
},
|
|
41
|
-
"main": "./dist/module.mjs",
|
|
42
|
-
"types": "./dist/module.d.mts",
|
|
43
|
-
"style": "./dist/runtime/index.css",
|
|
44
47
|
"typesVersions": {
|
|
45
48
|
"*": {
|
|
46
49
|
".": [
|
|
47
50
|
"./dist/module.d.mts"
|
|
48
51
|
],
|
|
49
|
-
"
|
|
50
|
-
"./dist/
|
|
51
|
-
],
|
|
52
|
-
"./runtime/*": [
|
|
53
|
-
"./dist/runtime/index.d.ts"
|
|
52
|
+
"runtime/*": [
|
|
53
|
+
"./dist/runtime/*"
|
|
54
54
|
],
|
|
55
55
|
"components/*": [
|
|
56
56
|
"./dist/runtime/components/*"
|
|
57
57
|
],
|
|
58
|
+
"composables": [
|
|
59
|
+
"./dist/runtime/composables/index.d.mts"
|
|
60
|
+
],
|
|
58
61
|
"composables/*": [
|
|
59
|
-
"./dist/runtime/composables
|
|
62
|
+
"./dist/runtime/composables/*.d.mts"
|
|
60
63
|
],
|
|
61
64
|
"utils": [
|
|
62
|
-
"./dist/runtime/utils/index.d.
|
|
65
|
+
"./dist/runtime/utils/index.d.mts"
|
|
63
66
|
],
|
|
64
67
|
"utils/*": [
|
|
65
|
-
"./dist/runtime/utils/*.d.
|
|
68
|
+
"./dist/runtime/utils/*.d.mts"
|
|
66
69
|
]
|
|
67
70
|
}
|
|
68
71
|
},
|
|
72
|
+
"style": "./dist/runtime/index.css",
|
|
73
|
+
"main": "./dist/module.mjs",
|
|
69
74
|
"files": [
|
|
70
75
|
"dist"
|
|
71
76
|
],
|
|
@@ -78,8 +83,10 @@
|
|
|
78
83
|
"typecheck": "vue-tsc --noEmit && nuxt typecheck",
|
|
79
84
|
"lint": "oxlint .",
|
|
80
85
|
"lint:fix": "oxlint . --fix",
|
|
81
|
-
"format": "
|
|
82
|
-
"format:fix": "
|
|
86
|
+
"format": "oxfmt --check",
|
|
87
|
+
"format:fix": "oxfmt .",
|
|
88
|
+
"check": "bun run typecheck && bun run lint && bun run format",
|
|
89
|
+
"fix": "bun run lint:fix && bun run format:fix",
|
|
83
90
|
"test": "vitest",
|
|
84
91
|
"release": "release-it --ci"
|
|
85
92
|
},
|