From 354420397f093581202cc4f49cc86a4be74a963a Mon Sep 17 00:00:00 2001 From: "Daniel A.C. Martin" Date: Mon, 23 May 2022 17:29:03 +0100 Subject: [PATCH 1/2] Add support for custom pragma --- loader.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/loader.js b/loader.js index d7256c5..4e8e216 100644 --- a/loader.js +++ b/loader.js @@ -1,8 +1,8 @@ const { getOptions } = require('loader-utils'); const { compile } = require('./compiler'); -const DEFAULT_RENDERER = ` -import React from 'react'; +const renderer = (importStr, importSrc) => ` +import ${importStr} from '${importSrc}'; `; // Lifted from MDXv1 loader @@ -18,6 +18,8 @@ const loader = async function (content) { const options = Object.assign({}, queryOptions, { filepath: this.resourcePath, }); + const importSrc = options.pragmaImportSource || 'react'; + const importStr = options.pragma ? `{ createElement as ${options.pragma} }` : 'React'; let result; try { @@ -26,7 +28,7 @@ const loader = async function (content) { return callback(err); } - const code = `${DEFAULT_RENDERER}\n${result}`; + const code = `${renderer(importStr, importSrc)}\n${result}`; return callback(null, code); }; From f17dc013e9540825274be90cd3fbdd5e88f0d6b2 Mon Sep 17 00:00:00 2001 From: "Daniel A.C. Martin" Date: Mon, 23 May 2022 17:39:29 +0100 Subject: [PATCH 2/2] Add new loader options to README --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 1463622..1dc6fb1 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,15 @@ module.exports = { }; ``` +### Options + +The loader accepts the following options: + +- `options.pragma` (default: `React.createElement`) + Pragma for JSX. e.g. A `pragma` of `h` will compile `` to `h(Elem, {})`. +- `options.pragmaImportSource` (default: `react`) + Where to import the pragma from. + ## Contributing We welcome contributions to Storybook!