1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
7 const path = require('path');
8 const camelcase = require('camelcase');
10 // This is a custom Jest transformer turning file imports into filenames.
11 // http://facebook.github.io/jest/docs/en/webpack.html
14 process(src, filename) {
15 const assetFilename = JSON.stringify(path.basename(filename));
17 if (filename.match(/\.svg$/)) {
18 // Based on how SVGR generates a component name:
19 // https://github.com/smooth-code/svgr/blob/01b194cf967347d43d4cbe6b434404731b87cf27/packages/core/src/state.js#L6
20 const pascalCaseFilename = camelcase(path.parse(filename).name, {
23 const componentName = `Svg${pascalCaseFilename}`;
24 return `const React = require('react');
27 default: ${assetFilename},
28 ReactComponent: React.forwardRef(function ${componentName}(props, ref) {
30 $$typeof: Symbol.for('react.element'),
34 props: Object.assign({}, props, {
35 children: ${assetFilename}
42 return `module.exports = ${assetFilename};`;