Skip to content

Commit b319455

Browse files
tlouissedaKmoR
authored andcommitted
chore: change get renderFunction() in renderStory(html, container, opts)
1 parent 7732541 commit b319455

File tree

3 files changed

+42
-28
lines changed

3 files changed

+42
-28
lines changed

docs/docs/markdown-javascript/preview.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -241,14 +241,12 @@ import { isTemplateResult as isTemplateResult2 } from 'lit/directive-helpers.js'
241241
import { render as render1 } from 'lit-html';
242242

243243
export class HybridLitMdjsPreview extends MdJsPreview {
244-
get renderFunction() {
245-
return function renderHybrid(html, container, options) {
246-
if (isTemplateResult2(html)) {
247-
render2(html, container, options);
248-
} else {
249-
render1(html, container, options);
250-
}
251-
};
244+
renderStory(html, container, options) {
245+
if (isTemplateResult2(html)) {
246+
render2(html, container, options);
247+
} else {
248+
render1(html, container, options);
249+
}
252250
}
253251
customElements.define('mdjs-preview', HybridLitMdjsPreview);
254252
```

packages/mdjs-preview/src/MdJsPreview.js

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ import {
1010
} from './mdjsViewerSharedStates.js';
1111
import { addResizeHandler } from './resizeHandler.js';
1212

13+
/**
14+
* @typedef {{values: unknown[], strings:string[],processor:Function}} TemplateResult1
15+
* @typedef {import('lit').TemplateResult} TemplateResult2
16+
* @typedef {{templateFactory:any; eventContext: EventTarget }} RenderOptions1
17+
* @typedef {import('lit').RenderOptions} RenderOptions2
18+
*/
19+
1320
/**
1421
* @param {string} input
1522
* @param {'js'|'css'} type
@@ -79,6 +86,16 @@ export class MdJsPreview extends ScopedElementsMixin(LitElement) {
7986
* TemplateResult, whether the render function of lit 1 or 2 should called.
8087
* Overriding the render function would look like:
8188
*
89+
* @protected
90+
* @param {TemplateResult1|TemplateResult2|LitHtmlStoryFn} html Any value renderable by NodePart - typically a TemplateResult
91+
* created by evaluating a template tag like `html` or `svg`.
92+
* @param {HTMLElement} container A DOM parent to render to. The entire contents are either
93+
* replaced, or efficiently updated if the same result type was previous
94+
* rendered there.
95+
* @param {Partial<RenderOptions2>} [options] RenderOptions for the entire render tree rendered to this
96+
* container. Render options must *not* change between renders to the same
97+
* container, as those changes will not effect previously rendered DOM.
98+
*
8299
* @example
83100
* ```js
84101
* import { MdJsPreview } from '@mdjs/mdjs-preview';
@@ -87,21 +104,19 @@ export class MdJsPreview extends ScopedElementsMixin(LitElement) {
87104
* import { render as render1 } from 'lit-html';
88105
*
89106
* export class HybridLitMdjsPreview extends MdJsPreview {
90-
* get renderFunction() {
91-
* return function renderHybrid(html, container, options) {
92-
* if (isTemplateResult2(html)) {
93-
* render2(html, container, options);
94-
* } else {
95-
* render1(html, container, options);
96-
* }
97-
* };
107+
* renderStory(html, container, options) {
108+
* if (isTemplateResult2(html)) {
109+
* render2(html, container, options);
110+
* } else {
111+
* render1(html, container, options);
112+
* }
98113
* }
99114
* }
100115
* customElements.define('mdjs-preview', HybridLitMdjsPreview);
101116
* ```
102117
*/
103-
get renderFunction() {
104-
return render;
118+
renderStory(html, container, options) {
119+
render(html, container, options);
105120
}
106121

107122
constructor() {
@@ -289,7 +304,10 @@ export class MdJsPreview extends ScopedElementsMixin(LitElement) {
289304
}
290305

291306
if (this.lightDomRenderTarget && changeProps.has('story')) {
292-
this.renderFunction(this.story({ shadowRoot: this }), this.lightDomRenderTarget);
307+
this.renderStory(
308+
/** @type {LitHtmlStoryFn} */ (this.story({ shadowRoot: this })),
309+
this.lightDomRenderTarget,
310+
);
293311
}
294312

295313
if (changeProps.has('platform') || changeProps.has('size')) {

packages/mdjs-preview/test-web/mdjs-preview.subclasser.test.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@ describe('mdjs-preview Subclasser', () => {
1010
it('will expose a render function getter to override in extensions', async () => {
1111
let isCalled = false;
1212
class HybridLitMdjsPreview extends MdJsPreview {
13-
get renderFunction() {
14-
return function renderStrict(html, container, options) {
15-
isCalled = true;
16-
if (isTemplateResult2(html)) {
17-
render2(html, container, options);
18-
} else {
19-
throw new Error('[mdjs-preview]: Only lit2 allowed');
20-
}
21-
};
13+
renderStory(html, container, options) {
14+
isCalled = true;
15+
if (isTemplateResult2(html)) {
16+
render2(html, container, options);
17+
} else {
18+
throw new Error('[mdjs-preview]: Only lit2 allowed');
19+
}
2220
}
2321
}
2422
customElements.define('mdjs-preview', HybridLitMdjsPreview);

0 commit comments

Comments
 (0)