Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/lazy-buckets-double.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@studiocms/wysiwyg": patch
"@studiocms/md": patch
---

Update dependencies, lint, and update tests
3 changes: 2 additions & 1 deletion .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
"@astrojs/node",
"@astrojs/rss",
"@astrojs/internal-helpers",
"@astrojs/markdown-remark"
"@astrojs/markdown-remark",
"kysely"
]
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html

exports[`@studiocms/blog Package Tests > Layout renders correctly 1`] = `
"<html lang="en" id="blog-layout"> <head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Test Page | Test Site</title><link rel="canonical" href="https://example.com/"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&#38;display=swap" rel="stylesheet"/><link rel="shortcut icon" href="/favicon.svg" type="image/svg+xml"/><meta name="title" content="Test Page | Test Site"/><meta name="description" content="This is a test page - A test site for StudioCMS"/><meta name="generator" content="Astro v0.0.0-test"/><meta name="generator" content="StudioCMS v0.0.0-test"/><meta property="og:title" content="Test Page | Test Site"/><meta property="og:type" content="website"/><meta property="og:url" content="https://example.com/"/><meta property="og:locale" content="en"/><meta property="og:description" content="This is a test page - A test site for StudioCMS"/><meta property="og:site_name" content="Test Page | Test Site"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:url" content="https://example.com/"/><meta name="twitter:title" content="Test Page | Test Site"/><meta name="twitter:description" content="This is a test page - A test site for StudioCMS"/><meta property="og:image" content="https://example.com/default-og-image.png"/><meta name="twitter:image" content="https://example.com/default-og-image.png"/></head> <body> <!-- If no dropdown items --><div class="navigation"><div class="title"><a href="/">Test Site</a></div><div class="mini-nav"><button>Menu</button><div class="mini-nav-content"><a href="/">Home</a><a href="/blog">Blog</a></div></div><a class="links" href="/">Home</a><a class="links" href="/blog">Blog</a><a class="avatar" href="/dashboard/login">
"<html lang="en" id="blog-layout"> <head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Test Page | Test Site</title><link rel="canonical" href="https://example.com/"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/><link href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&amp;display=swap" rel="stylesheet"/><link rel="shortcut icon" href="/favicon.svg" type="image/svg+xml"/><meta name="title" content="Test Page | Test Site"/><meta name="description" content="This is a test page - A test site for StudioCMS"/><meta name="generator" content="Astro v0.0.0-test"/><meta name="generator" content="StudioCMS v0.0.0-test"/><meta property="og:title" content="Test Page | Test Site"/><meta property="og:type" content="website"/><meta property="og:url" content="https://example.com/"/><meta property="og:locale" content="en"/><meta property="og:description" content="This is a test page - A test site for StudioCMS"/><meta property="og:site_name" content="Test Page | Test Site"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:url" content="https://example.com/"/><meta name="twitter:title" content="Test Page | Test Site"/><meta name="twitter:description" content="This is a test page - A test site for StudioCMS"/><meta property="og:image" content="https://example.com/default-og-image.png"/><meta name="twitter:image" content="https://example.com/default-og-image.png"/></head> <body> <!-- If no dropdown items --><div class="navigation"><div class="title"><a href="/">Test Site</a></div><div class="mini-nav"><button>Menu</button><div class="mini-nav-content"><a href="/">Home</a><a href="/blog">Blog</a></div></div><a class="links" href="/">Home</a><a class="links" href="/blog">Blog</a><a class="avatar" href="/dashboard/login">
Dashboard
</a></div><!-- If dropdown items --> <footer>
&copy; <span id="footer-year">2026</span> Test Site. All rights reserved.
Expand Down
1 change: 0 additions & 1 deletion packages/@studiocms/md/src/lib/markdown-prerender.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ export function preRender(): (content: string) => Promise<string> {
if (!studioCMSMDPromise) {
// Recompute options at first use to reflect shared state
studioCMSMDPromise = createStudioCMSMD({
...(shared.astroMDRemark ?? {}),
studiocms: parseStudioCMSMDOpts(),
});
}
Expand Down
1 change: 1 addition & 0 deletions packages/@studiocms/md/src/lib/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export const symbol: symbol = Symbol.for('@studiocms/md');
*/
export const shared: {
mdConfig?: MarkdownSchemaOptions | undefined;
// TODO: Astro has deprecated/changed these options... we should change this to be part of just the mdConfig instead now.
astroMDRemark?: AstroConfig['markdown'] | undefined;
} =
// @ts-expect-error
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ export default (editor: Editor, opts: RequiredGrapesBlocksOptions) => {
const privateCls = [`.${clsRow}`, `.${clsCell}`];
editor.on(
'selector:add',
(selector) => privateCls.indexOf(selector.getFullName()) >= 0 && selector.set('private', 1)
(selector) => privateCls.indexOf(selector.getFullName()) >= 0 && selector.set('private', true)
);

// biome-ignore lint/suspicious/noExplicitAny: This is the type that was already used in the original code
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html

exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #1 1`] = `"<div class="scms-grapesjs-container" data-page-id="test-page-id" data-component-registry="[{&#34;name&#34;:&#34;Text&#34;,&#34;safeName&#34;:&#34;text&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the text component&#34;}]},{&#34;name&#34;:&#34;Heading&#34;,&#34;safeName&#34;:&#34;heading&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the heading component&#34;},{&#34;name&#34;:&#34;level&#34;,&#34;type&#34;:&#34;number&#34;,&#34;optional&#34;:true,&#34;defaultValue&#34;:&#34;1&#34;,&#34;description&#34;:&#34;Heading level (1-6)&#34;}]}]"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;">&lt;p&gt;Hello World&lt;/p&gt;</textarea> <script type="module" src="/mock/path/Editor.astro?astro&type=script&index=0&lang.ts"></script>"`;
exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #1 1`] = `"<div class="scms-grapesjs-container" data-page-id="test-page-id" data-component-registry="[{&quot;name&quot;:&quot;Text&quot;,&quot;safeName&quot;:&quot;text&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the text component&quot;}]},{&quot;name&quot;:&quot;Heading&quot;,&quot;safeName&quot;:&quot;heading&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the heading component&quot;},{&quot;name&quot;:&quot;level&quot;,&quot;type&quot;:&quot;number&quot;,&quot;optional&quot;:true,&quot;defaultValue&quot;:&quot;1&quot;,&quot;description&quot;:&quot;Heading level (1-6)&quot;}]}]"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;">&lt;p&gt;Hello World&lt;/p&gt;</textarea> <script type="module" src="/mock/path/Editor.astro?astro&type=script&index=0&lang.ts"></script>"`;

exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #2 1`] = `"<div class="scms-grapesjs-container" data-page-id data-component-registry="[{&#34;name&#34;:&#34;Text&#34;,&#34;safeName&#34;:&#34;text&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the text component&#34;}]},{&#34;name&#34;:&#34;Heading&#34;,&#34;safeName&#34;:&#34;heading&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the heading component&#34;},{&#34;name&#34;:&#34;level&#34;,&#34;type&#34;:&#34;number&#34;,&#34;optional&#34;:true,&#34;defaultValue&#34;:&#34;1&#34;,&#34;description&#34;:&#34;Heading level (1-6)&#34;}]}]"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;">&lt;h1&gt;Title&lt;/h1&gt;</textarea> <script type="module" src="/mock/path/Editor.astro?astro&type=script&index=0&lang.ts"></script>"`;
exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #2 1`] = `"<div class="scms-grapesjs-container" data-page-id data-component-registry="[{&quot;name&quot;:&quot;Text&quot;,&quot;safeName&quot;:&quot;text&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the text component&quot;}]},{&quot;name&quot;:&quot;Heading&quot;,&quot;safeName&quot;:&quot;heading&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the heading component&quot;},{&quot;name&quot;:&quot;level&quot;,&quot;type&quot;:&quot;number&quot;,&quot;optional&quot;:true,&quot;defaultValue&quot;:&quot;1&quot;,&quot;description&quot;:&quot;Heading level (1-6)&quot;}]}]"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;">&lt;h1&gt;Title&lt;/h1&gt;</textarea> <script type="module" src="/mock/path/Editor.astro?astro&type=script&index=0&lang.ts"></script>"`;

exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #3 1`] = `"<div class="scms-grapesjs-container" data-page-id="empty-page" data-component-registry="[{&#34;name&#34;:&#34;Text&#34;,&#34;safeName&#34;:&#34;text&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the text component&#34;}]},{&#34;name&#34;:&#34;Heading&#34;,&#34;safeName&#34;:&#34;heading&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the heading component&#34;},{&#34;name&#34;:&#34;level&#34;,&#34;type&#34;:&#34;number&#34;,&#34;optional&#34;:true,&#34;defaultValue&#34;:&#34;1&#34;,&#34;description&#34;:&#34;Heading level (1-6)&#34;}]}]"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;"></textarea> <script type="module" src="/mock/path/Editor.astro?astro&type=script&index=0&lang.ts"></script>"`;
exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #3 1`] = `"<div class="scms-grapesjs-container" data-page-id="empty-page" data-component-registry="[{&quot;name&quot;:&quot;Text&quot;,&quot;safeName&quot;:&quot;text&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the text component&quot;}]},{&quot;name&quot;:&quot;Heading&quot;,&quot;safeName&quot;:&quot;heading&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the heading component&quot;},{&quot;name&quot;:&quot;level&quot;,&quot;type&quot;:&quot;number&quot;,&quot;optional&quot;:true,&quot;defaultValue&quot;:&quot;1&quot;,&quot;description&quot;:&quot;Heading level (1-6)&quot;}]}]"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;"></textarea> <script type="module" src="/mock/path/Editor.astro?astro&type=script&index=0&lang.ts"></script>"`;

exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #4 1`] = `
"<div class="scms-grapesjs-container" data-page-id="complex-page" data-component-registry="[{&#34;name&#34;:&#34;Text&#34;,&#34;safeName&#34;:&#34;text&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the text component&#34;}]},{&#34;name&#34;:&#34;Heading&#34;,&#34;safeName&#34;:&#34;heading&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the heading component&#34;},{&#34;name&#34;:&#34;level&#34;,&#34;type&#34;:&#34;number&#34;,&#34;optional&#34;:true,&#34;defaultValue&#34;:&#34;1&#34;,&#34;description&#34;:&#34;Heading level (1-6)&#34;}]}]"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;">
"<div class="scms-grapesjs-container" data-page-id="complex-page" data-component-registry="[{&quot;name&quot;:&quot;Text&quot;,&quot;safeName&quot;:&quot;text&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the text component&quot;}]},{&quot;name&quot;:&quot;Heading&quot;,&quot;safeName&quot;:&quot;heading&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the heading component&quot;},{&quot;name&quot;:&quot;level&quot;,&quot;type&quot;:&quot;number&quot;,&quot;optional&quot;:true,&quot;defaultValue&quot;:&quot;1&quot;,&quot;description&quot;:&quot;Heading level (1-6)&quot;}]}]"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;">
&lt;div class=&quot;container&quot;&gt;
&lt;h1&gt;Title&lt;/h1&gt;
&lt;p&gt;Content with &lt;strong&gt;bold&lt;/strong&gt; text&lt;/p&gt;
Expand All @@ -19,4 +19,4 @@ exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #
</textarea> <script type="module" src="/mock/path/Editor.astro?astro&type=script&index=0&lang.ts"></script>"
`;

exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #5 1`] = `"<div class="scms-grapesjs-container" data-page-id="csrf-test" data-component-registry="[{&#34;name&#34;:&#34;Text&#34;,&#34;safeName&#34;:&#34;text&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the text component&#34;}]},{&#34;name&#34;:&#34;Heading&#34;,&#34;safeName&#34;:&#34;heading&#34;,&#34;props&#34;:[{&#34;name&#34;:&#34;class&#34;,&#34;type&#34;:&#34;string&#34;,&#34;optional&#34;:true,&#34;description&#34;:&#34;CSS class for the heading component&#34;},{&#34;name&#34;:&#34;level&#34;,&#34;type&#34;:&#34;number&#34;,&#34;optional&#34;:true,&#34;defaultValue&#34;:&#34;1&#34;,&#34;description&#34;:&#34;Heading level (1-6)&#34;}]}]" data-editor-csrf-token="mock-csrf-token"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;">&lt;p&gt;Test&lt;/p&gt;</textarea> <script type="module" src="/mock/path/Editor.astro?astro&type=script&index=0&lang.ts"></script>"`;
exports[`@studiocms/wysiwyg Package Tests > WYSIWYG Editor Component Test Case #5 1`] = `"<div class="scms-grapesjs-container" data-page-id="csrf-test" data-component-registry="[{&quot;name&quot;:&quot;Text&quot;,&quot;safeName&quot;:&quot;text&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the text component&quot;}]},{&quot;name&quot;:&quot;Heading&quot;,&quot;safeName&quot;:&quot;heading&quot;,&quot;props&quot;:[{&quot;name&quot;:&quot;class&quot;,&quot;type&quot;:&quot;string&quot;,&quot;optional&quot;:true,&quot;description&quot;:&quot;CSS class for the heading component&quot;},{&quot;name&quot;:&quot;level&quot;,&quot;type&quot;:&quot;number&quot;,&quot;optional&quot;:true,&quot;defaultValue&quot;:&quot;1&quot;,&quot;description&quot;:&quot;Heading level (1-6)&quot;}]}]" data-editor-csrf-token="mock-csrf-token"> <div class="editor"> <div id="gjs"></div> </div> </div> <textarea id="page-content" name="page-content" style="display: none;">&lt;p&gt;Test&lt;/p&gt;</textarea> <script type="module" src="/mock/path/Editor.astro?astro&type=script&index=0&lang.ts"></script>"`;
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ exports[`studiocms Package Tests > Components Container tests - Code component 1
})();</script>"
`;

exports[`studiocms Package Tests > Components Container tests - FallbackCanvas component 1`] = `"<div class="fallback-container" id="fallback-config" data-config="{&#34;loginPageBackground&#34;:&#34;studiocms-curves&#34;,&#34;loginPageCustomImage&#34;:null}"> <svg class="static-logo" width="755" height="792" viewBox="0 0 755 792" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect x="295" width="460" height="466" rx="32" fill="currentColor"></rect> <path d="M272 434V166H180C162.327 166 148 180.327 148 198V597C148 614.673 162.327 629 180 629H577.5C595.173 629 609.5 614.673 609.5 597V490H328C297.072 490 272 464.928 272 434Z" fill="currentColor"></path> <path d="M124 597V329H32C14.3269 329 0 343.327 0 361V760C0 777.673 14.3269 792 32 792H429.5C447.173 792 461.5 777.673 461.5 760V653H180C149.072 653 124 627.928 124 597Z" fill="currentColor"></path> </svg> <img src="/mock/path/FallbackCanvas.astro?href=%2Fmock%2Fpath%2Fimage.webp&#38;w=1920&#38;h=1080&#38;q=100&#38;f=webp" data-image-component="true" alt="A fallback image displaying because the interactive wallpaper couldn't be loaded." loading="lazy" decoding="async" width="1920" height="1080" class="fallback-image"> <script type="module" src="/mock/path/FallbackCanvas.astro?astro&type=script&index=0&lang.ts"></script> </div>"`;
exports[`studiocms Package Tests > Components Container tests - FallbackCanvas component 1`] = `"<div class="fallback-container" id="fallback-config" data-config="{&quot;loginPageBackground&quot;:&quot;studiocms-curves&quot;,&quot;loginPageCustomImage&quot;:null}"> <svg class="static-logo" width="755" height="792" viewBox="0 0 755 792" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect x="295" width="460" height="466" rx="32" fill="currentColor"></rect> <path d="M272 434V166H180C162.327 166 148 180.327 148 198V597C148 614.673 162.327 629 180 629H577.5C595.173 629 609.5 614.673 609.5 597V490H328C297.072 490 272 464.928 272 434Z" fill="currentColor"></path> <path d="M124 597V329H32C14.3269 329 0 343.327 0 361V760C0 777.673 14.3269 792 32 792H429.5C447.173 792 461.5 777.673 461.5 760V653H180C149.072 653 124 627.928 124 597Z" fill="currentColor"></path> </svg> <img src="/mock/path/FallbackCanvas.astro?href=%2Fmock%2Fpath%2Fimage.webp&amp;w=1920&amp;h=1080&amp;q=100&amp;f=webp" data-image-component="true" alt="A fallback image displaying because the interactive wallpaper couldn't be loaded." loading="lazy" decoding="async" width="1920" height="1080" class="fallback-image"> <script type="module" src="/mock/path/FallbackCanvas.astro?astro&type=script&index=0&lang.ts"></script> </div>"`;

exports[`studiocms Package Tests > Components Container tests - OAuthButton component 1`] = `"<a tabindex="0" as="a" href="/test/endpoint" class="sui-button full lg default solid"> <img src="/fake/image.jpg"> <span>test auth</span> </a>"`;

Expand Down
Loading
Loading