├── .eslintignore ├── .github ├── renovate.json └── workflows │ └── main.yml ├── .gitignore ├── .husky ├── pre-commit └── pre-push ├── .prettierignore ├── LICENSE ├── README.md ├── lib ├── config.js ├── config.spec.js ├── internal │ ├── Dependency.js │ ├── Parser.js │ └── Transformer.js ├── plugin.js ├── plugin.spec.js └── utils │ ├── memoize.js │ ├── resolveModule.js │ └── resolveModule.spec.js ├── package-lock.json ├── package.json ├── test ├── @material-ui │ ├── core │ │ ├── exports.spec.js │ │ └── plugin.spec.js │ ├── icons │ │ └── plugin.spec.js │ ├── lab │ │ ├── exports.spec.js │ │ └── plugin.spec.js │ └── system │ │ ├── exports.spec.js │ │ └── plugin.spec.js ├── @mui │ ├── core │ │ ├── exports.spec.js │ │ └── plugin.spec.js │ ├── icons-material │ │ └── plugin.spec.js │ ├── lab │ │ ├── exports.spec.js │ │ └── plugin.spec.js │ ├── material │ │ ├── exports.spec.js │ │ └── plugin.spec.js │ └── system │ │ ├── exports.spec.js │ │ └── plugin.spec.js ├── setup.js └── utils.js ├── tsconfig.json └── vitest.config.mjs /.eslintignore: -------------------------------------------------------------------------------- 1 | coverage/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["github>umidbekk/configs:renovate"] 3 | } 4 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Main 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | concurrency: 12 | group: ${{ github.workflow }}-${{ github.ref }} 13 | cancel-in-progress: true 14 | 15 | jobs: 16 | checks: 17 | runs-on: ubuntu-latest 18 | 19 | steps: 20 | - uses: umidbekk/actions/prepare-node-repo@v2 21 | - run: npm run checks 22 | - uses: paambaati/codeclimate-action@v3.1.1 23 | env: 24 | CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} 25 | with: 26 | coverageLocations: | 27 | ${{github.workspace}}/coverage/lcov.info:lcov 28 | 29 | tests: 30 | runs-on: ${{ matrix.os }} 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | os: [ubuntu-latest, windows-latest] 36 | node: [14, 16, 18] 37 | 38 | steps: 39 | - uses: umidbekk/actions/prepare-node-repo@v2 40 | with: 41 | node-version: ${{ matrix.node }} 42 | - run: npm test 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | node_modules/ 3 | 4 | # Testing 5 | /coverage 6 | 7 | # Logs 8 | *.log 9 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.husky/pre-push: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx tsc 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /coverage 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Umidbek Karimov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## babel-plugin-direct-import 2 | 3 | [![Main](https://github.com/umidbekk/babel-plugin-direct-import/workflows/Main/badge.svg?branch=master)](https://github.com/umidbekk/babel-plugin-direct-import/actions) 4 | [![npm version](https://img.shields.io/npm/v/babel-plugin-direct-import.svg)](https://www.npmjs.com/package/babel-plugin-direct-import) 5 | [![npm downloads](https://img.shields.io/npm/dm/babel-plugin-direct-import.svg)](https://www.npmjs.com/package/babel-plugin-direct-import) 6 | [![Maintainability](https://api.codeclimate.com/v1/badges/92d8a9981651c1ec498c/maintainability)](https://codeclimate.com/github/avocadowastaken/babel-plugin-direct-import/maintainability) 7 | [![Test Coverage](https://api.codeclimate.com/v1/badges/92d8a9981651c1ec498c/test_coverage)](https://codeclimate.com/github/avocadowastaken/babel-plugin-direct-import/test_coverage) 8 | 9 | Babel plugin to cherry-pick ES module imports. 10 | 11 | ### Installation 12 | 13 | ```bash 14 | npm install --save-dev babel-plugin-direct-import 15 | ``` 16 | 17 | ### Example 18 | 19 | **In** 20 | 21 | ```javascript 22 | import { Button, colors, ThemeProvider } from "@mui/material"; 23 | import { 24 | ChevronLeft as ChevronLeftIcon, 25 | ChevronRight as ChevronRightIcon, 26 | } from "@mui/icons-material"; 27 | ``` 28 | 29 | **Out** 30 | 31 | ```javascript 32 | import Button from "@mui/material/Button/Button.js"; 33 | import * as colors from "@mui/material/colors/index.js"; 34 | import ThemeProvider from "@mui/system/esm/ThemeProvider/ThemeProvider.js"; 35 | import ChevronLeftIcon from "@mui/icons-material/esm/ChevronLeft.js"; 36 | import ChevronRightIcon from "@mui/icons-material/esm/ChevronRight.js"; 37 | ``` 38 | 39 | ### Usage 40 | 41 | #### **Via .babelrc (Recommended)** 42 | 43 | **.babelrc** 44 | 45 | ```json 46 | { 47 | "plugins": [ 48 | [ 49 | "babel-plugin-direct-import", 50 | { 51 | "modules": ["@mui/system", "@mui/material", "@mui/icons-material"] 52 | } 53 | ] 54 | ] 55 | } 56 | ``` 57 | 58 | #### **Via Node API** 59 | 60 | ```javascript 61 | require("babel-core").transform("code", { 62 | plugins: [ 63 | [ 64 | "babel-plugin-direct-import", 65 | { 66 | modules: ["@mui/system", "@mui/material", "@mui/icons-material"], 67 | }, 68 | ], 69 | ], 70 | }); 71 | ``` 72 | 73 | ### Limitations 74 | 75 | ##### Transformation of namespace imports: 76 | 77 | Namespace imports are hard to analyze, that's why we skip them. 78 | 79 | ```jsx 80 | import * as MUI from "@mui/material"; 81 | 82 | return (props) => ; 83 | ``` 84 | 85 | ##### Mapping of variable exports: 86 | 87 | ```js 88 | import * as colors from "./colors"; 89 | 90 | export const blue = colors.blue; 91 | export const cyan = colors.cyan; 92 | export const getDefaultColor = () => red; 93 | ``` 94 | 95 | ### Tested Packages 96 | 97 | ##### [Material UI (v4)](https://github.com/mui-org/material-ui/tree/v4.12.3) 98 | 99 | ```json 100 | { 101 | "plugins": [ 102 | [ 103 | "babel-plugin-direct-import", 104 | { 105 | "modules": [ 106 | "@material-ui/lab", 107 | "@material-ui/core", 108 | "@material-ui/icons", 109 | "@material-ui/system" 110 | ] 111 | } 112 | ] 113 | ] 114 | } 115 | ``` 116 | 117 | ##### [Material UI (v5)](https://github.com/mui-org/material-ui/tree/v5.0.0-rc.0) 118 | 119 | ```json 120 | { 121 | "plugins": [ 122 | [ 123 | "babel-plugin-direct-import", 124 | { 125 | "modules": [ 126 | "@mui/lab", 127 | "@mui/system", 128 | "@mui/material", 129 | "@mui/icons-material" 130 | ] 131 | } 132 | ] 133 | ] 134 | } 135 | ``` 136 | 137 | ### Integrations 138 | 139 | #### Next.js 140 | 141 | ```js 142 | // babel.config.js 143 | 144 | module.exports = (api) => { 145 | const target = api.caller((caller) => caller.target); 146 | 147 | api.cache.using(() => JSON.stringify({ target })); 148 | 149 | const presets = ["next/babel"]; 150 | const plugins = []; 151 | 152 | // Enable optimizations only for the `web` bundle. 153 | if (target === "web") { 154 | plugins.push([ 155 | "babel-plugin-direct-import", 156 | { modules: ["@mui/lab", "@mui/material", "@mui/icons-material"] }, 157 | ]); 158 | } 159 | 160 | return { presets, plugins }; 161 | }; 162 | ``` 163 | 164 | ### Migration 165 | 166 | #### 0.5.0 to 0.6.0 167 | 168 | After migration to Babel v7 it's impossible to pass arrays as configs, and now you have to pass an object with `modules` property: 169 | 170 | Before: 171 | 172 | ```json 173 | { 174 | "plugins": [["babel-plugin-direct-import", ["@material-ui/core"]]] 175 | } 176 | ``` 177 | 178 | After: 179 | 180 | ```json 181 | { 182 | "plugins": [ 183 | ["babel-plugin-direct-import", { "modules": ["@material-ui/core"] }] 184 | ] 185 | } 186 | ``` 187 | 188 | ### Heavily inspired by: 189 | 190 | - [babel-plugin-date-fns](https://github.com/date-fns/babel-plugin-date-fns) 191 | - [babel-plugin-lodash](https://github.com/lodash/babel-plugin-lodash) 192 | - [babel-plugin-recharts](https://github.com/recharts/babel-plugin-recharts) 193 | - [babel-transform-imports](https://bitbucket.org/amctheatres/babel-transform-imports) 194 | - [babel-plugin-import](https://github.com/ant-design/babel-plugin-import) 195 | -------------------------------------------------------------------------------- /lib/config.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const assert = require("node:assert"); 4 | 5 | /** 6 | * @typedef {object} PluginConfig 7 | * @property {Set} modules 8 | */ 9 | 10 | /** 11 | * @param {object} options 12 | * @returns {PluginConfig} 13 | */ 14 | module.exports.parseConfig = function parseConfig(options) { 15 | assert.ok("modules" in options, "invalid 'options.modules': not defined"); 16 | 17 | const { modules, ...unknownPluginOptions } = options; 18 | assert.ok( 19 | Array.isArray(modules), 20 | "invalid 'options.modules': not an 'array'" 21 | ); 22 | assert.ok(!!modules.length, "invalid 'options.modules': value is empty"); 23 | 24 | const unknownPluginOptionKeys = Object.keys(unknownPluginOptions); 25 | assert.ok( 26 | !unknownPluginOptionKeys.length, 27 | `invalid 'options': has unknown properties (${unknownPluginOptionKeys.join( 28 | ", " 29 | )})` 30 | ); 31 | 32 | /** @type {PluginConfig} */ 33 | const config = { modules: new Set() }; 34 | for (const [idx, id] of modules.entries()) { 35 | const optionPath = `options.modules[${idx}]`; 36 | assert.ok(typeof id == "string", `invalid '${optionPath}': not a 'string'`); 37 | assert.ok(!!id.length, `invalid '${optionPath}': value is empty`); 38 | config.modules.add(id); 39 | } 40 | return config; 41 | }; 42 | -------------------------------------------------------------------------------- /lib/config.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { parseConfig } from "./config"; 3 | 4 | test("basic", () => { 5 | expect(parseConfig({ modules: ["@mui/material", "@mui/material/Button"] })) 6 | .toMatchInlineSnapshot(` 7 | { 8 | "modules": Set { 9 | "@mui/material", 10 | "@mui/material/Button", 11 | }, 12 | } 13 | `); 14 | }); 15 | 16 | test.each([ 17 | [{}, "invalid 'options.modules': not defined"], 18 | [{ modules: null }, "invalid 'options.modules': not an 'array'"], 19 | [{ modules: undefined }, "invalid 'options.modules': not an 'array'"], 20 | [{ modules: "@mui/core" }, "invalid 'options.modules': not an 'array'"], 21 | [ 22 | { modules: { "@mui/core": "@mui/core" } }, 23 | "invalid 'options.modules': not an 'array'", 24 | ], 25 | 26 | [{ modules: [] }, "invalid 'options.modules': value is empty"], 27 | 28 | [ 29 | { modules: ["@mui/core"], foo: "bar", baz: 10 }, 30 | "invalid 'options': has unknown properties (foo, baz)", 31 | ], 32 | 33 | [{ modules: [""] }, "invalid 'options.modules[0]': value is empty"], 34 | [ 35 | { modules: ["@mui/core", ""] }, 36 | "invalid 'options.modules[1]': value is empty", 37 | ], 38 | 39 | [{ modules: [null] }, "invalid 'options.modules[0]': not a 'string'"], 40 | ])("invalid options: %o -> %p", (input, error) => { 41 | expect(() => parseConfig(input)).toThrow(error); 42 | }); 43 | -------------------------------------------------------------------------------- /lib/internal/Dependency.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const path = require("node:path"); 4 | 5 | class Dependency { 6 | /** 7 | * @param {string} filename 8 | * @returns {string} 9 | */ 10 | static #getSource(filename) { 11 | const chunks = filename.split(path.sep); 12 | const nodeModulesIdx = chunks.lastIndexOf("node_modules"); 13 | return chunks.slice(nodeModulesIdx + 1).join("/"); 14 | } 15 | 16 | #id; 17 | #internalID; 18 | /** @readonly */ 19 | #source; 20 | 21 | /** 22 | * @param {string} filename 23 | * @param {string} id 24 | * @param {string} [internalID] 25 | */ 26 | constructor(filename, id, internalID = id) { 27 | this.#id = id; 28 | this.#internalID = internalID; 29 | this.#source = Dependency.#getSource(filename); 30 | } 31 | 32 | /** @returns {string} */ 33 | get id() { 34 | return this.#id; 35 | } 36 | 37 | /** @returns {string} */ 38 | get internalID() { 39 | return this.#internalID; 40 | } 41 | 42 | /** @returns {string} */ 43 | get source() { 44 | return this.#source; 45 | } 46 | 47 | /** 48 | * @param {string} id 49 | * @param {string} [internalID] 50 | * @returns {Dependency} 51 | */ 52 | update(id, internalID = this.#internalID) { 53 | this.#id = id; 54 | this.#internalID = internalID; 55 | return this; 56 | } 57 | } 58 | 59 | module.exports = Dependency; 60 | -------------------------------------------------------------------------------- /lib/internal/Parser.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const fs = require("fs"); 4 | const assert = require("assert"); 5 | const path = require("path"); 6 | const Dependency = require("./Dependency"); 7 | const resolveModule = require("../utils/resolveModule"); 8 | const memoize = require("../utils/memoize"); 9 | 10 | class Parser { 11 | /** @readonly */ 12 | #parse; 13 | /** @readonly */ 14 | #types; 15 | /** 16 | * @type {(filename: string) => import("@babel/types").Statement[]} 17 | * @readonly 18 | */ 19 | #visitFile = memoize((filename) => { 20 | const content = fs.readFileSync(filename, "utf-8"); 21 | const ast = this.#parse(content, { 22 | filename, 23 | ast: true, 24 | babelrc: false, 25 | configFile: false, 26 | sourceType: "module", 27 | }); 28 | assert.ok(this.#types.isFile(ast)); 29 | return ast.program.body; 30 | }); 31 | /** 32 | * @type {(input: [id: string, basedir?: string]) => string} 33 | * @readonly 34 | */ 35 | #resolveModule = memoize(([id, basedir]) => resolveModule(id, basedir), { 36 | serializeKey: JSON.stringify, 37 | }); 38 | 39 | /** 40 | * @param {import("@babel/core").parse} parse 41 | * @param {import("@babel/types")} types 42 | */ 43 | constructor(parse, types) { 44 | this.#parse = parse; 45 | this.#types = types; 46 | } 47 | 48 | /** 49 | * @param {string} filename 50 | * @param {import("@babel/types").ExportAllDeclaration} node 51 | * @returns {Generator} 52 | */ 53 | *#visitExportAllDeclaration(filename, node) { 54 | const sourcePath = this.#resolveModule([ 55 | node.source.value, 56 | path.dirname(filename), 57 | ]); 58 | for (const dependency of this.#collectDependencies(sourcePath)) { 59 | if (dependency.id !== "default") yield dependency; 60 | } 61 | } 62 | 63 | /** 64 | * @param {import("@babel/types").VariableDeclaration} node 65 | * @returns {Generator} 66 | */ 67 | *#visitVariableDeclaration(node) { 68 | for (const declaration of node.declarations) { 69 | /* istanbul ignore else */ 70 | if (this.#types.isIdentifier(declaration.id)) { 71 | yield declaration.id.name; 72 | } 73 | } 74 | } 75 | 76 | /** 77 | * @param {string} filename 78 | * @param {import("@babel/types").ImportDeclaration} node 79 | * @returns {Generator} 80 | */ 81 | *#visitImportDeclaration(filename, node) { 82 | const t = this.#types; 83 | 84 | if (!node.source.value.startsWith(".")) return; 85 | 86 | const sourcePath = this.#resolveModule([ 87 | node.source.value, 88 | path.dirname(filename), 89 | ]); 90 | 91 | for (const specifier of node.specifiers) { 92 | if (t.isImportNamespaceSpecifier(specifier)) { 93 | yield new Dependency(sourcePath, specifier.local.name, "*"); 94 | break; 95 | } 96 | 97 | if (t.isImportDefaultSpecifier(specifier)) { 98 | yield new Dependency(sourcePath, specifier.local.name, "default"); 99 | } else { 100 | assert.ok(t.isIdentifier(specifier.imported)); 101 | yield new Dependency( 102 | sourcePath, 103 | specifier.local.name, 104 | specifier.imported.name 105 | ); 106 | } 107 | } 108 | } 109 | 110 | /** 111 | * @param {string} filename 112 | * @param {import("@babel/types").ExportNamedDeclaration} node 113 | * @param {Map} imports 114 | * @returns {Generator} 115 | */ 116 | *#visitExportNamedDeclaration(filename, node, imports) { 117 | const t = this.#types; 118 | 119 | if (node.source) { 120 | if (!node.source.value.startsWith(".")) { 121 | for (const specifier of node.specifiers) { 122 | assert.ok(t.isExportSpecifier(specifier)); 123 | assert.ok(t.isIdentifier(specifier.local)); 124 | assert.ok(t.isIdentifier(specifier.exported)); 125 | yield new Dependency( 126 | node.source.value, 127 | specifier.exported.name, 128 | specifier.local.name 129 | ); 130 | } 131 | } else { 132 | const sourcePath = this.#resolveModule([ 133 | node.source.value, 134 | path.dirname(filename), 135 | ]); 136 | 137 | const specifiers = new Map( 138 | node.specifiers.map((specifier) => { 139 | assert.ok(t.isExportSpecifier(specifier)); 140 | return [specifier.local.name, specifier]; 141 | }) 142 | ); 143 | 144 | for (const dependency of this.#collectDependencies(sourcePath)) { 145 | const specifier = specifiers.get(dependency.id); 146 | 147 | if (specifier) { 148 | specifiers.delete(dependency.id); 149 | assert.ok(t.isIdentifier(specifier.exported)); 150 | 151 | if (specifier.exported.name === "default") { 152 | yield dependency.update( 153 | specifier.exported.name, 154 | specifier.exported.name 155 | ); 156 | } else { 157 | yield dependency.update(specifier.exported.name); 158 | } 159 | } 160 | } 161 | } 162 | } else { 163 | for (const specifier of node.specifiers) { 164 | assert.ok(t.isExportSpecifier(specifier)); 165 | assert.ok(t.isIdentifier(specifier.exported)); 166 | 167 | const importedDependency = imports.get(specifier.local.name); 168 | 169 | if (importedDependency) { 170 | yield importedDependency.update(specifier.exported.name); 171 | } else { 172 | yield new Dependency( 173 | filename, 174 | specifier.exported.name, 175 | specifier.local.name 176 | ); 177 | } 178 | } 179 | } 180 | 181 | if (node.declaration) { 182 | if (t.isVariableDeclaration(node.declaration)) { 183 | for (const id of this.#visitVariableDeclaration(node.declaration)) { 184 | yield new Dependency(filename, id); 185 | } 186 | } 187 | 188 | if (t.isFunctionDeclaration(node.declaration)) { 189 | assert.ok(node.declaration.id); 190 | yield new Dependency(filename, node.declaration.id.name); 191 | } 192 | } 193 | } 194 | 195 | /** 196 | * @param {string} filename 197 | * @returns {Generator} 198 | */ 199 | *#collectDependencies(filename) { 200 | const t = this.#types; 201 | /** @type {Map} */ 202 | const imports = new Map(); 203 | 204 | for (const node of this.#visitFile(filename)) { 205 | if (t.isImportDeclaration(node)) { 206 | for (const dependency of this.#visitImportDeclaration(filename, node)) { 207 | imports.set(dependency.id, dependency); 208 | } 209 | } else if (t.isExportDefaultDeclaration(node)) { 210 | yield new Dependency(filename, "default"); 211 | } else if (t.isExportAllDeclaration(node)) { 212 | yield* this.#visitExportAllDeclaration(filename, node); 213 | } else if (t.isExportNamedDeclaration(node)) { 214 | yield* this.#visitExportNamedDeclaration(filename, node, imports); 215 | } 216 | } 217 | } 218 | 219 | /** 220 | * @param {string} id 221 | * @returns {Map} 222 | */ 223 | getDependenciesMap(id) { 224 | /** @type {Map} */ 225 | const dependencies = new Map(); 226 | const entry = this.#resolveModule([id]); 227 | for (const dependency of this.#collectDependencies(entry)) { 228 | dependencies.set(dependency.id, dependency); 229 | } 230 | return dependencies; 231 | } 232 | } 233 | 234 | module.exports = Parser; 235 | -------------------------------------------------------------------------------- /lib/internal/Transformer.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const memoize = require("../utils/memoize"); 4 | 5 | /** 6 | * @param {string} localName 7 | * @param {string} source 8 | */ 9 | function warnNamespaceImport(localName, source) { 10 | console.warn( 11 | ` 12 | babel-plugin-direct-import: Can not optimize 'import * as ${localName} from "${source}"'. 13 | See plugin limitations https://git.io/vFDOO for more details. 14 | `.trim() 15 | ); 16 | } 17 | 18 | /** 19 | * @typedef {object} BabelAPI 20 | * @property {import("@babel/core").parse} parse 21 | * @property {import("@babel/core").types} types 22 | */ 23 | 24 | class Transformer { 25 | /** @readonly */ 26 | #types; 27 | /** @readonly */ 28 | #config; 29 | /** @readonly */ 30 | #parser; 31 | /** 32 | * @type {(id: string) => Map} 33 | * @readonly 34 | */ 35 | #getDependenciesMap = memoize((id) => this.#parser.getDependenciesMap(id)); 36 | 37 | /** 38 | * @param {import('../config').PluginConfig} config 39 | * @param {import("./Parser")} parser 40 | * @param {import("@babel/core").types} types 41 | */ 42 | constructor(config, parser, types) { 43 | this.#types = types; 44 | this.#parser = parser; 45 | this.#config = config; 46 | } 47 | 48 | /** 49 | * @param {import("@babel/core").NodePath< 50 | * import("@babel/types").ImportDeclaration 51 | * >} declaration 52 | * @returns {void} 53 | */ 54 | transform(declaration) { 55 | const t = this.#types; 56 | const { 57 | specifiers, 58 | importKind, 59 | source: { value: id }, 60 | } = declaration.node; 61 | if ( 62 | importKind === "type" || 63 | !specifiers.length || 64 | !this.#config.modules.has(id) 65 | ) { 66 | return; 67 | } 68 | 69 | const dependencies = this.#getDependenciesMap(id); 70 | if (!dependencies.size) { 71 | return; 72 | } 73 | 74 | /** @type {Set} */ 75 | const removedSpecifiers = new Set(); 76 | 77 | for (const specifier of specifiers) { 78 | if (t.isImportNamespaceSpecifier(specifier)) { 79 | warnNamespaceImport(specifier.local.name, id); 80 | continue; 81 | } 82 | 83 | const moduleName = t.isImportDefaultSpecifier(specifier) 84 | ? "default" 85 | : t.isIdentifier(specifier.imported) 86 | ? specifier.imported.name 87 | : specifier.imported.value; 88 | const dependency = dependencies.get(moduleName); 89 | 90 | if (!dependency) { 91 | continue; 92 | } 93 | 94 | const localName = t.identifier(specifier.local.name); 95 | const replacement = t.importDeclaration( 96 | [ 97 | dependency.internalID === "*" 98 | ? t.importNamespaceSpecifier(localName) 99 | : dependency.internalID === "default" 100 | ? t.importDefaultSpecifier(localName) 101 | : t.importSpecifier(localName, t.identifier(dependency.internalID)), 102 | ], 103 | t.stringLiteral(dependency.source) 104 | ); 105 | 106 | removedSpecifiers.add(specifier); 107 | declaration.insertBefore(replacement); 108 | } 109 | 110 | if (removedSpecifiers.size === declaration.node.specifiers.length) { 111 | declaration.remove(); 112 | } else { 113 | declaration.node.specifiers = declaration.node.specifiers.filter( 114 | (specifier) => !removedSpecifiers.has(specifier) 115 | ); 116 | } 117 | } 118 | } 119 | 120 | module.exports = Transformer; 121 | -------------------------------------------------------------------------------- /lib/plugin.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const Transformer = require("./internal/Transformer"); 4 | const Parser = require("./internal/Parser"); 5 | const memoize = require("./utils/memoize"); 6 | const { parseConfig } = require("./config"); 7 | 8 | /** 9 | * @typedef {object} BabelAPI 10 | * @property {import("@babel/core").parse} parse 11 | * @property {import("@babel/core").types} types 12 | */ 13 | 14 | /** 15 | * @param {BabelAPI} babel 16 | * @returns {( 17 | * path: import("@babel/core").NodePath< 18 | * import("@babel/types").ImportDeclaration 19 | * >, 20 | * state: import("@babel/core").PluginPass 21 | * ) => void} 22 | */ 23 | function createImportDeclarationVisitor(babel) { 24 | const parser = new Parser(babel.parse, babel.types); 25 | /** @type {(options: object) => Transformer} */ 26 | const getTransformer = memoize( 27 | (options) => { 28 | const config = parseConfig(options); 29 | return new Transformer(config, parser, babel.types); 30 | }, 31 | { map: new WeakMap() } 32 | ); 33 | return (path, { opts }) => { 34 | const transformer = getTransformer(opts); 35 | transformer.transform(path); 36 | }; 37 | } 38 | 39 | /** 40 | * @param {BabelAPI} babel 41 | * @returns {import("@babel/core").PluginObj} 42 | */ 43 | module.exports = function createDirectImportPlugin(babel) { 44 | return { 45 | name: "babel-plugin-direct-import", 46 | visitor: { ImportDeclaration: createImportDeclarationVisitor(babel) }, 47 | }; 48 | }; 49 | -------------------------------------------------------------------------------- /lib/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { transformSync } from "@babel/core"; 2 | import { expect, test, vi } from "vitest"; 3 | import plugin from "./plugin"; 4 | 5 | /** 6 | * @param {string} code 7 | * @param {unknown} options 8 | * @returns {null | string} 9 | */ 10 | function transform(code, options) { 11 | const result = transformSync(code, { 12 | plugins: [[plugin, options], "@babel/plugin-syntax-flow"], 13 | }); 14 | 15 | return (result && result.code) || null; 16 | } 17 | 18 | test("basic", () => { 19 | expect( 20 | transform('import { Button } from "@mui/material";', { 21 | modules: ["@mui/material"], 22 | }) 23 | ).toMatchInlineSnapshot( 24 | `"import Button from "@mui/material/Button/Button.js";"` 25 | ); 26 | }); 27 | 28 | test("type imports", () => { 29 | expect( 30 | transform( 31 | ` 32 | import { Button } from "@mui/material"; 33 | import type { ButtonProps } from "@mui/material"; 34 | `, 35 | { modules: ["@mui/material"] } 36 | ) 37 | ).toMatchInlineSnapshot(` 38 | "import Button from "@mui/material/Button/Button.js"; 39 | import type { ButtonProps } from "@mui/material";" 40 | `); 41 | }); 42 | 43 | test("default import", () => { 44 | expect( 45 | transform('import Button from "@mui/material/Button";', { 46 | modules: ["@mui/material/Button"], 47 | }) 48 | ).toMatchInlineSnapshot( 49 | `"import Button from "@mui/material/Button/Button.js";"` 50 | ); 51 | }); 52 | 53 | test("named import", () => { 54 | const warn = vi.spyOn(console, "warn"); 55 | warn.mockImplementation(() => void 0); 56 | 57 | expect( 58 | transform('import * as mui from "@mui/material";', { 59 | modules: ["@mui/material"], 60 | }) 61 | ).toMatchInlineSnapshot(`"import * as mui from "@mui/material";"`); 62 | 63 | expect(warn).toHaveBeenCalledTimes(1); 64 | expect(warn.mock.calls[0]).toMatchInlineSnapshot(` 65 | [ 66 | "babel-plugin-direct-import: Can not optimize 'import * as mui from "@mui/material"'. 67 | See plugin limitations https://git.io/vFDOO for more details.", 68 | ] 69 | `); 70 | 71 | warn.mockRestore(); 72 | }); 73 | 74 | test("string import", () => { 75 | expect( 76 | transform('import { "?" as Button } from "@mui/material";', { 77 | modules: ["@mui/material"], 78 | }) 79 | ).toMatchInlineSnapshot(`"import { "?" as Button } from "@mui/material";"`); 80 | }); 81 | 82 | test("deep module dependencies", () => { 83 | expect( 84 | transform('import { ThemeProvider as Theme } from "@mui/material";', { 85 | modules: ["@mui/material"], 86 | }) 87 | ).toMatchInlineSnapshot( 88 | `"import { ThemeProvider as Theme } from "@mui/system";"` 89 | ); 90 | 91 | expect( 92 | transform('import { ThemeProvider as Theme } from "@mui/material";', { 93 | modules: ["@mui/material", "@material-ui/system"], 94 | }) 95 | ).toMatchInlineSnapshot( 96 | `"import { ThemeProvider as Theme } from "@mui/system";"` 97 | ); 98 | }); 99 | -------------------------------------------------------------------------------- /lib/utils/memoize.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @template T 3 | * @typedef {object} MapAPI 4 | * @property {(key: any) => undefined | T} get 5 | * @property {(key: any, value: T) => void} set 6 | */ 7 | 8 | /** 9 | * @template TKey 10 | * @template TValue 11 | * @typedef {object} MemoizeOptions 12 | * @property {MapAPI} [map] 13 | * @property {(value: TKey) => unknown} [serializeKey] 14 | */ 15 | 16 | /** 17 | * @template TKey 18 | * @template TValue 19 | * @param {(key: TKey) => TValue} loader 20 | * @param {MemoizeOptions} [options] 21 | * @returns {(key: TKey) => TValue} 22 | */ 23 | module.exports = function memoize(loader, options = {}) { 24 | const { map = new Map(), serializeKey = (x) => x } = options; 25 | return (key) => { 26 | const cacheKey = serializeKey(key); 27 | let value = map.get(cacheKey); 28 | if (value === undefined) { 29 | value = loader(key); 30 | map.set(cacheKey, value); 31 | } 32 | return value; 33 | }; 34 | }; 35 | -------------------------------------------------------------------------------- /lib/utils/resolveModule.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const resolve = require("resolve"); 4 | 5 | const MAIN_FIELDS = ["module", "esnext", "jsnext:main"]; 6 | 7 | /** 8 | * @param {resolve.PackageJSON} pkg 9 | * @returns {resolve.PackageJSON} 10 | */ 11 | function packageFilter(pkg) { 12 | for (const key of MAIN_FIELDS) { 13 | /* istanbul ignore else */ 14 | const main = pkg[key]; 15 | /* istanbul ignore else */ 16 | if (typeof main === "string" && main) { 17 | return { ...pkg, main }; 18 | } 19 | } 20 | /* istanbul ignore next */ 21 | return pkg; 22 | } 23 | 24 | /** 25 | * @param {string} id 26 | * @param {string} [basedir] 27 | * @returns {string} 28 | */ 29 | module.exports = function resolveModule(id, basedir) { 30 | return resolve.sync(id, { basedir, packageFilter }); 31 | }; 32 | -------------------------------------------------------------------------------- /lib/utils/resolveModule.spec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import { expect, test } from "vitest"; 4 | import resolveModule from "./resolveModule"; 5 | 6 | test("basic", () => { 7 | expect(resolveModule("@mui/material")).toMatchInlineSnapshot( 8 | `"/node_modules/@mui/material/index.js"` 9 | ); 10 | expect(resolveModule("@mui/material/Button")).toMatchInlineSnapshot( 11 | `"/node_modules/@mui/material/Button/index.js"` 12 | ); 13 | expect(() => 14 | resolveModule("@mui/core/Button") 15 | ).toThrowErrorMatchingInlineSnapshot( 16 | `"Cannot find module '@mui/core/Button' from '/lib/utils'"` 17 | ); 18 | 19 | expect(() => 20 | resolveModule( 21 | // @ts-expect-error 22 | null 23 | ) 24 | ).toThrowErrorMatchingInlineSnapshot(`"Path must be a string."`); 25 | }); 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "babel-plugin-direct-import", 3 | "version": "1.0.0", 4 | "description": "Babel plugin to cherry-pick ES module imports", 5 | "keywords": [ 6 | "babel-plugin", 7 | "modules", 8 | "materia-ui" 9 | ], 10 | "repository": "https://github.com/umidbekk/babel-plugin-direct-import.git", 11 | "license": "MIT", 12 | "author": "Umidbek Karimov <4734297+umidbekk@users.noreply.github.com>", 13 | "main": "lib/plugin.js", 14 | "files": [ 15 | "lib", 16 | "!**/*.spec.js" 17 | ], 18 | "scripts": { 19 | "checks": "npx tsc && npm run lint && npm run format -- --no-write && npm t", 20 | "format": "prettier --write --check .", 21 | "lint": "eslint .", 22 | "prepare": "husky install", 23 | "release": "npx --yes np --test-script checks", 24 | "tdd": "vitest watch", 25 | "test": "vitest run --coverage" 26 | }, 27 | "lint-staged": { 28 | "*.js": "eslint --fix", 29 | "*.*": "prettier --write --ignore-unknown" 30 | }, 31 | "eslintConfig": { 32 | "extends": [ 33 | "eslint:recommended" 34 | ], 35 | "overrides": [ 36 | { 37 | "files": [ 38 | "lib/**/*.js" 39 | ], 40 | "excludedFiles": [ 41 | "**/*.spec.js" 42 | ], 43 | "parserOptions": { 44 | "ecmaVersion": 2022 45 | }, 46 | "extends": [ 47 | "plugin:node/recommended-script" 48 | ] 49 | }, 50 | { 51 | "files": [ 52 | "**/*.spec.js", 53 | "test/**/*.js", 54 | "vitest.config.js" 55 | ], 56 | "parserOptions": { 57 | "ecmaVersion": 2022 58 | }, 59 | "extends": [ 60 | "plugin:node/recommended-module" 61 | ], 62 | "rules": { 63 | "node/no-missing-import": "off" 64 | } 65 | } 66 | ] 67 | }, 68 | "dependencies": { 69 | "resolve": "^1.22.1" 70 | }, 71 | "devDependencies": { 72 | "@babel/core": "7.21.0", 73 | "@babel/parser": "7.21.2", 74 | "@babel/plugin-syntax-flow": "7.18.6", 75 | "@material-ui/core": "4.12.3", 76 | "@material-ui/icons": "4.11.3", 77 | "@material-ui/lab": "4.0.0-alpha.60", 78 | "@mui/core": "5.0.0-alpha.54", 79 | "@mui/icons-material": "5.11.11", 80 | "@mui/lab": "5.0.0-alpha.121", 81 | "@mui/material": "5.11.11", 82 | "@mui/system": "5.11.11", 83 | "@types/babel__core": "7.20.0", 84 | "@types/node": "18.14.4", 85 | "@types/resolve": "1.20.2", 86 | "@umidbekk/configs": "0.2.0", 87 | "@vitest/coverage-c8": "^0.29.2", 88 | "eslint": "8.35.0", 89 | "eslint-plugin-node": "11.1.0", 90 | "husky": "8.0.3", 91 | "lint-staged": "13.1.2", 92 | "prettier": "2.8.4", 93 | "prettier-plugin-jsdoc": "0.4.2", 94 | "prettier-plugin-organize-imports": "3.2.2", 95 | "prettier-plugin-packagejson": "2.4.3", 96 | "typescript": "4.9.5", 97 | "vite": "4.1.4", 98 | "vitest": "0.29.2" 99 | }, 100 | "engines": { 101 | "node": ">=14", 102 | "npm": ">=7" 103 | }, 104 | "volta": { 105 | "node": "14.21.3", 106 | "npm": "8.19.4" 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /test/@material-ui/core/exports.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { testExports } from "../../utils.js"; 3 | 4 | test("exports", () => { 5 | expect(testExports("@material-ui/core")).toMatchInlineSnapshot(` 6 | [ 7 | [ 8 | "Accordion", 9 | "default", 10 | "@material-ui/core/esm/Accordion/Accordion.js", 11 | ], 12 | [ 13 | "AccordionActions", 14 | "default", 15 | "@material-ui/core/esm/AccordionActions/AccordionActions.js", 16 | ], 17 | [ 18 | "AccordionDetails", 19 | "default", 20 | "@material-ui/core/esm/AccordionDetails/AccordionDetails.js", 21 | ], 22 | [ 23 | "AccordionSummary", 24 | "default", 25 | "@material-ui/core/esm/AccordionSummary/AccordionSummary.js", 26 | ], 27 | [ 28 | "AppBar", 29 | "default", 30 | "@material-ui/core/esm/AppBar/AppBar.js", 31 | ], 32 | [ 33 | "Avatar", 34 | "default", 35 | "@material-ui/core/esm/Avatar/Avatar.js", 36 | ], 37 | [ 38 | "Backdrop", 39 | "default", 40 | "@material-ui/core/esm/Backdrop/Backdrop.js", 41 | ], 42 | [ 43 | "Badge", 44 | "default", 45 | "@material-ui/core/esm/Badge/Badge.js", 46 | ], 47 | [ 48 | "BottomNavigation", 49 | "default", 50 | "@material-ui/core/esm/BottomNavigation/BottomNavigation.js", 51 | ], 52 | [ 53 | "BottomNavigationAction", 54 | "default", 55 | "@material-ui/core/esm/BottomNavigationAction/BottomNavigationAction.js", 56 | ], 57 | [ 58 | "Box", 59 | "default", 60 | "@material-ui/core/esm/Box/Box.js", 61 | ], 62 | [ 63 | "styleFunction", 64 | "styleFunction", 65 | "@material-ui/core/esm/Box/Box.js", 66 | ], 67 | [ 68 | "Breadcrumbs", 69 | "default", 70 | "@material-ui/core/esm/Breadcrumbs/Breadcrumbs.js", 71 | ], 72 | [ 73 | "Button", 74 | "default", 75 | "@material-ui/core/esm/Button/Button.js", 76 | ], 77 | [ 78 | "ButtonBase", 79 | "default", 80 | "@material-ui/core/esm/ButtonBase/ButtonBase.js", 81 | ], 82 | [ 83 | "ButtonGroup", 84 | "default", 85 | "@material-ui/core/esm/ButtonGroup/ButtonGroup.js", 86 | ], 87 | [ 88 | "Card", 89 | "default", 90 | "@material-ui/core/esm/Card/Card.js", 91 | ], 92 | [ 93 | "CardActionArea", 94 | "default", 95 | "@material-ui/core/esm/CardActionArea/CardActionArea.js", 96 | ], 97 | [ 98 | "CardActions", 99 | "default", 100 | "@material-ui/core/esm/CardActions/CardActions.js", 101 | ], 102 | [ 103 | "CardContent", 104 | "default", 105 | "@material-ui/core/esm/CardContent/CardContent.js", 106 | ], 107 | [ 108 | "CardHeader", 109 | "default", 110 | "@material-ui/core/esm/CardHeader/CardHeader.js", 111 | ], 112 | [ 113 | "CardMedia", 114 | "default", 115 | "@material-ui/core/esm/CardMedia/CardMedia.js", 116 | ], 117 | [ 118 | "Checkbox", 119 | "default", 120 | "@material-ui/core/esm/Checkbox/Checkbox.js", 121 | ], 122 | [ 123 | "Chip", 124 | "default", 125 | "@material-ui/core/esm/Chip/Chip.js", 126 | ], 127 | [ 128 | "CircularProgress", 129 | "default", 130 | "@material-ui/core/esm/CircularProgress/CircularProgress.js", 131 | ], 132 | [ 133 | "ClickAwayListener", 134 | "default", 135 | "@material-ui/core/esm/ClickAwayListener/ClickAwayListener.js", 136 | ], 137 | [ 138 | "Collapse", 139 | "default", 140 | "@material-ui/core/esm/Collapse/Collapse.js", 141 | ], 142 | [ 143 | "colors", 144 | "*", 145 | "@material-ui/core/esm/colors/index.js", 146 | ], 147 | [ 148 | "Container", 149 | "default", 150 | "@material-ui/core/esm/Container/Container.js", 151 | ], 152 | [ 153 | "CssBaseline", 154 | "default", 155 | "@material-ui/core/esm/CssBaseline/CssBaseline.js", 156 | ], 157 | [ 158 | "Dialog", 159 | "default", 160 | "@material-ui/core/esm/Dialog/Dialog.js", 161 | ], 162 | [ 163 | "DialogActions", 164 | "default", 165 | "@material-ui/core/esm/DialogActions/DialogActions.js", 166 | ], 167 | [ 168 | "DialogContent", 169 | "default", 170 | "@material-ui/core/esm/DialogContent/DialogContent.js", 171 | ], 172 | [ 173 | "DialogContentText", 174 | "default", 175 | "@material-ui/core/esm/DialogContentText/DialogContentText.js", 176 | ], 177 | [ 178 | "DialogTitle", 179 | "default", 180 | "@material-ui/core/esm/DialogTitle/DialogTitle.js", 181 | ], 182 | [ 183 | "Divider", 184 | "default", 185 | "@material-ui/core/esm/Divider/Divider.js", 186 | ], 187 | [ 188 | "Drawer", 189 | "default", 190 | "@material-ui/core/esm/Drawer/Drawer.js", 191 | ], 192 | [ 193 | "ExpansionPanel", 194 | "default", 195 | "@material-ui/core/esm/ExpansionPanel/ExpansionPanel.js", 196 | ], 197 | [ 198 | "ExpansionPanelActions", 199 | "default", 200 | "@material-ui/core/esm/ExpansionPanelActions/ExpansionPanelActions.js", 201 | ], 202 | [ 203 | "ExpansionPanelDetails", 204 | "default", 205 | "@material-ui/core/esm/ExpansionPanelDetails/ExpansionPanelDetails.js", 206 | ], 207 | [ 208 | "ExpansionPanelSummary", 209 | "default", 210 | "@material-ui/core/esm/ExpansionPanelSummary/ExpansionPanelSummary.js", 211 | ], 212 | [ 213 | "Fab", 214 | "default", 215 | "@material-ui/core/esm/Fab/Fab.js", 216 | ], 217 | [ 218 | "Fade", 219 | "default", 220 | "@material-ui/core/esm/Fade/Fade.js", 221 | ], 222 | [ 223 | "FilledInput", 224 | "default", 225 | "@material-ui/core/esm/FilledInput/FilledInput.js", 226 | ], 227 | [ 228 | "FormControl", 229 | "default", 230 | "@material-ui/core/esm/FormControl/FormControl.js", 231 | ], 232 | [ 233 | "useFormControl", 234 | "default", 235 | "@material-ui/core/esm/FormControl/useFormControl.js", 236 | ], 237 | [ 238 | "FormControlLabel", 239 | "default", 240 | "@material-ui/core/esm/FormControlLabel/FormControlLabel.js", 241 | ], 242 | [ 243 | "FormGroup", 244 | "default", 245 | "@material-ui/core/esm/FormGroup/FormGroup.js", 246 | ], 247 | [ 248 | "FormHelperText", 249 | "default", 250 | "@material-ui/core/esm/FormHelperText/FormHelperText.js", 251 | ], 252 | [ 253 | "FormLabel", 254 | "default", 255 | "@material-ui/core/esm/FormLabel/FormLabel.js", 256 | ], 257 | [ 258 | "Grid", 259 | "default", 260 | "@material-ui/core/esm/Grid/Grid.js", 261 | ], 262 | [ 263 | "GridList", 264 | "default", 265 | "@material-ui/core/esm/GridList/GridList.js", 266 | ], 267 | [ 268 | "GridListTile", 269 | "default", 270 | "@material-ui/core/esm/GridListTile/GridListTile.js", 271 | ], 272 | [ 273 | "GridListTileBar", 274 | "default", 275 | "@material-ui/core/esm/GridListTileBar/GridListTileBar.js", 276 | ], 277 | [ 278 | "Grow", 279 | "default", 280 | "@material-ui/core/esm/Grow/Grow.js", 281 | ], 282 | [ 283 | "Hidden", 284 | "default", 285 | "@material-ui/core/esm/Hidden/Hidden.js", 286 | ], 287 | [ 288 | "Icon", 289 | "default", 290 | "@material-ui/core/esm/Icon/Icon.js", 291 | ], 292 | [ 293 | "IconButton", 294 | "default", 295 | "@material-ui/core/esm/IconButton/IconButton.js", 296 | ], 297 | [ 298 | "ImageList", 299 | "default", 300 | "@material-ui/core/esm/ImageList/ImageList.js", 301 | ], 302 | [ 303 | "ImageListItem", 304 | "default", 305 | "@material-ui/core/esm/ImageListItem/ImageListItem.js", 306 | ], 307 | [ 308 | "ImageListItemBar", 309 | "default", 310 | "@material-ui/core/esm/ImageListItemBar/ImageListItemBar.js", 311 | ], 312 | [ 313 | "Input", 314 | "default", 315 | "@material-ui/core/esm/Input/Input.js", 316 | ], 317 | [ 318 | "InputAdornment", 319 | "default", 320 | "@material-ui/core/esm/InputAdornment/InputAdornment.js", 321 | ], 322 | [ 323 | "InputBase", 324 | "default", 325 | "@material-ui/core/esm/InputBase/InputBase.js", 326 | ], 327 | [ 328 | "InputLabel", 329 | "default", 330 | "@material-ui/core/esm/InputLabel/InputLabel.js", 331 | ], 332 | [ 333 | "LinearProgress", 334 | "default", 335 | "@material-ui/core/esm/LinearProgress/LinearProgress.js", 336 | ], 337 | [ 338 | "Link", 339 | "default", 340 | "@material-ui/core/esm/Link/Link.js", 341 | ], 342 | [ 343 | "List", 344 | "default", 345 | "@material-ui/core/esm/List/List.js", 346 | ], 347 | [ 348 | "ListItem", 349 | "default", 350 | "@material-ui/core/esm/ListItem/ListItem.js", 351 | ], 352 | [ 353 | "ListItemAvatar", 354 | "default", 355 | "@material-ui/core/esm/ListItemAvatar/ListItemAvatar.js", 356 | ], 357 | [ 358 | "ListItemIcon", 359 | "default", 360 | "@material-ui/core/esm/ListItemIcon/ListItemIcon.js", 361 | ], 362 | [ 363 | "ListItemSecondaryAction", 364 | "default", 365 | "@material-ui/core/esm/ListItemSecondaryAction/ListItemSecondaryAction.js", 366 | ], 367 | [ 368 | "ListItemText", 369 | "default", 370 | "@material-ui/core/esm/ListItemText/ListItemText.js", 371 | ], 372 | [ 373 | "ListSubheader", 374 | "default", 375 | "@material-ui/core/esm/ListSubheader/ListSubheader.js", 376 | ], 377 | [ 378 | "Menu", 379 | "default", 380 | "@material-ui/core/esm/Menu/Menu.js", 381 | ], 382 | [ 383 | "MenuItem", 384 | "default", 385 | "@material-ui/core/esm/MenuItem/MenuItem.js", 386 | ], 387 | [ 388 | "MenuList", 389 | "default", 390 | "@material-ui/core/esm/MenuList/MenuList.js", 391 | ], 392 | [ 393 | "MobileStepper", 394 | "default", 395 | "@material-ui/core/esm/MobileStepper/MobileStepper.js", 396 | ], 397 | [ 398 | "Modal", 399 | "default", 400 | "@material-ui/core/esm/Modal/Modal.js", 401 | ], 402 | [ 403 | "ModalManager", 404 | "ModalManager", 405 | "@material-ui/core/esm/Modal/ModalManager.js", 406 | ], 407 | [ 408 | "NativeSelect", 409 | "default", 410 | "@material-ui/core/esm/NativeSelect/NativeSelect.js", 411 | ], 412 | [ 413 | "NoSsr", 414 | "default", 415 | "@material-ui/core/esm/NoSsr/NoSsr.js", 416 | ], 417 | [ 418 | "OutlinedInput", 419 | "default", 420 | "@material-ui/core/esm/OutlinedInput/OutlinedInput.js", 421 | ], 422 | [ 423 | "Paper", 424 | "default", 425 | "@material-ui/core/esm/Paper/Paper.js", 426 | ], 427 | [ 428 | "Popover", 429 | "default", 430 | "@material-ui/core/esm/Popover/Popover.js", 431 | ], 432 | [ 433 | "Popper", 434 | "default", 435 | "@material-ui/core/esm/Popper/Popper.js", 436 | ], 437 | [ 438 | "Portal", 439 | "default", 440 | "@material-ui/core/esm/Portal/Portal.js", 441 | ], 442 | [ 443 | "Radio", 444 | "default", 445 | "@material-ui/core/esm/Radio/Radio.js", 446 | ], 447 | [ 448 | "RadioGroup", 449 | "default", 450 | "@material-ui/core/esm/RadioGroup/RadioGroup.js", 451 | ], 452 | [ 453 | "useRadioGroup", 454 | "default", 455 | "@material-ui/core/esm/RadioGroup/useRadioGroup.js", 456 | ], 457 | [ 458 | "RootRef", 459 | "default", 460 | "@material-ui/core/esm/RootRef/RootRef.js", 461 | ], 462 | [ 463 | "Select", 464 | "default", 465 | "@material-ui/core/esm/Select/Select.js", 466 | ], 467 | [ 468 | "Slide", 469 | "default", 470 | "@material-ui/core/esm/Slide/Slide.js", 471 | ], 472 | [ 473 | "Slider", 474 | "default", 475 | "@material-ui/core/esm/Slider/Slider.js", 476 | ], 477 | [ 478 | "Snackbar", 479 | "default", 480 | "@material-ui/core/esm/Snackbar/Snackbar.js", 481 | ], 482 | [ 483 | "SnackbarContent", 484 | "default", 485 | "@material-ui/core/esm/SnackbarContent/SnackbarContent.js", 486 | ], 487 | [ 488 | "Step", 489 | "default", 490 | "@material-ui/core/esm/Step/Step.js", 491 | ], 492 | [ 493 | "StepButton", 494 | "default", 495 | "@material-ui/core/esm/StepButton/StepButton.js", 496 | ], 497 | [ 498 | "StepConnector", 499 | "default", 500 | "@material-ui/core/esm/StepConnector/StepConnector.js", 501 | ], 502 | [ 503 | "StepContent", 504 | "default", 505 | "@material-ui/core/esm/StepContent/StepContent.js", 506 | ], 507 | [ 508 | "StepIcon", 509 | "default", 510 | "@material-ui/core/esm/StepIcon/StepIcon.js", 511 | ], 512 | [ 513 | "StepLabel", 514 | "default", 515 | "@material-ui/core/esm/StepLabel/StepLabel.js", 516 | ], 517 | [ 518 | "Stepper", 519 | "default", 520 | "@material-ui/core/esm/Stepper/Stepper.js", 521 | ], 522 | [ 523 | "hexToRgb", 524 | "hexToRgb", 525 | "@material-ui/core/esm/styles/colorManipulator.js", 526 | ], 527 | [ 528 | "rgbToHex", 529 | "rgbToHex", 530 | "@material-ui/core/esm/styles/colorManipulator.js", 531 | ], 532 | [ 533 | "hslToRgb", 534 | "hslToRgb", 535 | "@material-ui/core/esm/styles/colorManipulator.js", 536 | ], 537 | [ 538 | "decomposeColor", 539 | "decomposeColor", 540 | "@material-ui/core/esm/styles/colorManipulator.js", 541 | ], 542 | [ 543 | "recomposeColor", 544 | "recomposeColor", 545 | "@material-ui/core/esm/styles/colorManipulator.js", 546 | ], 547 | [ 548 | "getContrastRatio", 549 | "getContrastRatio", 550 | "@material-ui/core/esm/styles/colorManipulator.js", 551 | ], 552 | [ 553 | "getLuminance", 554 | "getLuminance", 555 | "@material-ui/core/esm/styles/colorManipulator.js", 556 | ], 557 | [ 558 | "emphasize", 559 | "emphasize", 560 | "@material-ui/core/esm/styles/colorManipulator.js", 561 | ], 562 | [ 563 | "fade", 564 | "fade", 565 | "@material-ui/core/esm/styles/colorManipulator.js", 566 | ], 567 | [ 568 | "alpha", 569 | "alpha", 570 | "@material-ui/core/esm/styles/colorManipulator.js", 571 | ], 572 | [ 573 | "darken", 574 | "darken", 575 | "@material-ui/core/esm/styles/colorManipulator.js", 576 | ], 577 | [ 578 | "lighten", 579 | "lighten", 580 | "@material-ui/core/esm/styles/colorManipulator.js", 581 | ], 582 | [ 583 | "unstable_createMuiStrictModeTheme", 584 | "default", 585 | "@material-ui/core/esm/styles/createMuiStrictModeTheme.js", 586 | ], 587 | [ 588 | "createStyles", 589 | "default", 590 | "@material-ui/core/esm/styles/createStyles.js", 591 | ], 592 | [ 593 | "createMuiTheme", 594 | "createMuiTheme", 595 | "@material-ui/core/esm/styles/createTheme.js", 596 | ], 597 | [ 598 | "createTheme", 599 | "default", 600 | "@material-ui/core/esm/styles/createTheme.js", 601 | ], 602 | [ 603 | "makeStyles", 604 | "default", 605 | "@material-ui/core/esm/styles/makeStyles.js", 606 | ], 607 | [ 608 | "responsiveFontSizes", 609 | "default", 610 | "@material-ui/core/esm/styles/responsiveFontSizes.js", 611 | ], 612 | [ 613 | "styled", 614 | "default", 615 | "@material-ui/core/esm/styles/styled.js", 616 | ], 617 | [ 618 | "easing", 619 | "easing", 620 | "@material-ui/core/esm/styles/transitions.js", 621 | ], 622 | [ 623 | "duration", 624 | "duration", 625 | "@material-ui/core/esm/styles/transitions.js", 626 | ], 627 | [ 628 | "useTheme", 629 | "default", 630 | "@material-ui/core/esm/styles/useTheme.js", 631 | ], 632 | [ 633 | "withStyles", 634 | "default", 635 | "@material-ui/core/esm/styles/withStyles.js", 636 | ], 637 | [ 638 | "withTheme", 639 | "default", 640 | "@material-ui/core/esm/styles/withTheme.js", 641 | ], 642 | [ 643 | "SvgIcon", 644 | "default", 645 | "@material-ui/core/esm/SvgIcon/SvgIcon.js", 646 | ], 647 | [ 648 | "SwipeableDrawer", 649 | "default", 650 | "@material-ui/core/esm/SwipeableDrawer/SwipeableDrawer.js", 651 | ], 652 | [ 653 | "Switch", 654 | "default", 655 | "@material-ui/core/esm/Switch/Switch.js", 656 | ], 657 | [ 658 | "Tab", 659 | "default", 660 | "@material-ui/core/esm/Tab/Tab.js", 661 | ], 662 | [ 663 | "Table", 664 | "default", 665 | "@material-ui/core/esm/Table/Table.js", 666 | ], 667 | [ 668 | "TableBody", 669 | "default", 670 | "@material-ui/core/esm/TableBody/TableBody.js", 671 | ], 672 | [ 673 | "TableCell", 674 | "default", 675 | "@material-ui/core/esm/TableCell/TableCell.js", 676 | ], 677 | [ 678 | "TableContainer", 679 | "default", 680 | "@material-ui/core/esm/TableContainer/TableContainer.js", 681 | ], 682 | [ 683 | "TableFooter", 684 | "default", 685 | "@material-ui/core/esm/TableFooter/TableFooter.js", 686 | ], 687 | [ 688 | "TableHead", 689 | "default", 690 | "@material-ui/core/esm/TableHead/TableHead.js", 691 | ], 692 | [ 693 | "TablePagination", 694 | "default", 695 | "@material-ui/core/esm/TablePagination/TablePagination.js", 696 | ], 697 | [ 698 | "TableRow", 699 | "default", 700 | "@material-ui/core/esm/TableRow/TableRow.js", 701 | ], 702 | [ 703 | "TableSortLabel", 704 | "default", 705 | "@material-ui/core/esm/TableSortLabel/TableSortLabel.js", 706 | ], 707 | [ 708 | "Tabs", 709 | "default", 710 | "@material-ui/core/esm/Tabs/Tabs.js", 711 | ], 712 | [ 713 | "TabScrollButton", 714 | "default", 715 | "@material-ui/core/esm/TabScrollButton/TabScrollButton.js", 716 | ], 717 | [ 718 | "TextareaAutosize", 719 | "default", 720 | "@material-ui/core/esm/TextareaAutosize/TextareaAutosize.js", 721 | ], 722 | [ 723 | "TextField", 724 | "default", 725 | "@material-ui/core/esm/TextField/TextField.js", 726 | ], 727 | [ 728 | "Toolbar", 729 | "default", 730 | "@material-ui/core/esm/Toolbar/Toolbar.js", 731 | ], 732 | [ 733 | "Tooltip", 734 | "default", 735 | "@material-ui/core/esm/Tooltip/Tooltip.js", 736 | ], 737 | [ 738 | "Typography", 739 | "default", 740 | "@material-ui/core/esm/Typography/Typography.js", 741 | ], 742 | [ 743 | "Unstable_TrapFocus", 744 | "default", 745 | "@material-ui/core/esm/Unstable_TrapFocus/Unstable_TrapFocus.js", 746 | ], 747 | [ 748 | "useMediaQuery", 749 | "default", 750 | "@material-ui/core/esm/useMediaQuery/useMediaQuery.js", 751 | ], 752 | [ 753 | "useScrollTrigger", 754 | "default", 755 | "@material-ui/core/esm/useScrollTrigger/useScrollTrigger.js", 756 | ], 757 | [ 758 | "capitalize", 759 | "default", 760 | "@material-ui/core/esm/utils/capitalize.js", 761 | ], 762 | [ 763 | "createChainedFunction", 764 | "default", 765 | "@material-ui/core/esm/utils/createChainedFunction.js", 766 | ], 767 | [ 768 | "createSvgIcon", 769 | "default", 770 | "@material-ui/core/esm/utils/createSvgIcon.js", 771 | ], 772 | [ 773 | "debounce", 774 | "default", 775 | "@material-ui/core/esm/utils/debounce.js", 776 | ], 777 | [ 778 | "deprecatedPropType", 779 | "default", 780 | "@material-ui/core/esm/utils/deprecatedPropType.js", 781 | ], 782 | [ 783 | "isMuiElement", 784 | "default", 785 | "@material-ui/core/esm/utils/isMuiElement.js", 786 | ], 787 | [ 788 | "ownerDocument", 789 | "default", 790 | "@material-ui/core/esm/utils/ownerDocument.js", 791 | ], 792 | [ 793 | "ownerWindow", 794 | "default", 795 | "@material-ui/core/esm/utils/ownerWindow.js", 796 | ], 797 | [ 798 | "requirePropFactory", 799 | "default", 800 | "@material-ui/core/esm/utils/requirePropFactory.js", 801 | ], 802 | [ 803 | "setRef", 804 | "default", 805 | "@material-ui/core/esm/utils/setRef.js", 806 | ], 807 | [ 808 | "unstable_useId", 809 | "default", 810 | "@material-ui/core/esm/utils/unstable_useId.js", 811 | ], 812 | [ 813 | "unsupportedProp", 814 | "default", 815 | "@material-ui/core/esm/utils/unsupportedProp.js", 816 | ], 817 | [ 818 | "useControlled", 819 | "default", 820 | "@material-ui/core/esm/utils/useControlled.js", 821 | ], 822 | [ 823 | "useEventCallback", 824 | "default", 825 | "@material-ui/core/esm/utils/useEventCallback.js", 826 | ], 827 | [ 828 | "useForkRef", 829 | "default", 830 | "@material-ui/core/esm/utils/useForkRef.js", 831 | ], 832 | [ 833 | "useIsFocusVisible", 834 | "default", 835 | "@material-ui/core/esm/utils/useIsFocusVisible.js", 836 | ], 837 | [ 838 | "withMobileDialog", 839 | "default", 840 | "@material-ui/core/esm/withMobileDialog/withMobileDialog.js", 841 | ], 842 | [ 843 | "withWidth", 844 | "default", 845 | "@material-ui/core/esm/withWidth/withWidth.js", 846 | ], 847 | [ 848 | "isWidthUp", 849 | "isWidthUp", 850 | "@material-ui/core/esm/withWidth/withWidth.js", 851 | ], 852 | [ 853 | "isWidthDown", 854 | "isWidthDown", 855 | "@material-ui/core/esm/withWidth/withWidth.js", 856 | ], 857 | [ 858 | "Zoom", 859 | "default", 860 | "@material-ui/core/esm/Zoom/Zoom.js", 861 | ], 862 | [ 863 | "createGenerateClassName", 864 | "createGenerateClassName", 865 | "@material-ui/styles", 866 | ], 867 | [ 868 | "jssPreset", 869 | "jssPreset", 870 | "@material-ui/styles", 871 | ], 872 | [ 873 | "ServerStyleSheets", 874 | "ServerStyleSheets", 875 | "@material-ui/styles", 876 | ], 877 | [ 878 | "StylesProvider", 879 | "StylesProvider", 880 | "@material-ui/styles", 881 | ], 882 | [ 883 | "MuiThemeProvider", 884 | "ThemeProvider", 885 | "@material-ui/styles", 886 | ], 887 | [ 888 | "ThemeProvider", 889 | "ThemeProvider", 890 | "@material-ui/styles", 891 | ], 892 | ] 893 | `); 894 | }); 895 | -------------------------------------------------------------------------------- /test/@material-ui/core/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { runPlugin } from "../../utils.js"; 3 | 4 | test("transformation", () => { 5 | expect( 6 | runPlugin( 7 | [ 8 | 'import Button from "@material-ui/core/Button"', 9 | 'import { colors, ThemeProvider } from "@material-ui/core"', 10 | ].join("\n"), 11 | ["@material-ui/core", "@material-ui/core/Button"] 12 | ) 13 | ).toMatchInlineSnapshot(` 14 | import Button from "@material-ui/core/esm/Button/Button.js"; 15 | import * as colors from "@material-ui/core/esm/colors/index.js"; 16 | import { ThemeProvider } from "@material-ui/styles"; 17 | `); 18 | }); 19 | -------------------------------------------------------------------------------- /test/@material-ui/icons/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { runPlugin } from "../../utils.js"; 3 | 4 | test("transformation", () => { 5 | expect( 6 | runPlugin( 7 | 'import { ChevronLeft, ChevronRight } from "@material-ui/icons"', 8 | ["@material-ui/icons"] 9 | ) 10 | ).toMatchInlineSnapshot(` 11 | import ChevronLeft from "@material-ui/icons/esm/ChevronLeft.js"; 12 | import ChevronRight from "@material-ui/icons/esm/ChevronRight.js"; 13 | `); 14 | }); 15 | -------------------------------------------------------------------------------- /test/@material-ui/lab/exports.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { testExports } from "../../utils.js"; 3 | 4 | test("exports", () => { 5 | expect(testExports("@material-ui/lab")).toMatchInlineSnapshot(` 6 | [ 7 | [ 8 | "Alert", 9 | "default", 10 | "@material-ui/lab/esm/Alert/Alert.js", 11 | ], 12 | [ 13 | "AlertTitle", 14 | "default", 15 | "@material-ui/lab/esm/AlertTitle/AlertTitle.js", 16 | ], 17 | [ 18 | "Autocomplete", 19 | "default", 20 | "@material-ui/lab/esm/Autocomplete/Autocomplete.js", 21 | ], 22 | [ 23 | "AvatarGroup", 24 | "default", 25 | "@material-ui/lab/esm/AvatarGroup/AvatarGroup.js", 26 | ], 27 | [ 28 | "Pagination", 29 | "default", 30 | "@material-ui/lab/esm/Pagination/Pagination.js", 31 | ], 32 | [ 33 | "usePagination", 34 | "default", 35 | "@material-ui/lab/esm/Pagination/usePagination.js", 36 | ], 37 | [ 38 | "PaginationItem", 39 | "default", 40 | "@material-ui/lab/esm/PaginationItem/PaginationItem.js", 41 | ], 42 | [ 43 | "Rating", 44 | "default", 45 | "@material-ui/lab/esm/Rating/Rating.js", 46 | ], 47 | [ 48 | "Skeleton", 49 | "default", 50 | "@material-ui/lab/esm/Skeleton/Skeleton.js", 51 | ], 52 | [ 53 | "SpeedDial", 54 | "default", 55 | "@material-ui/lab/esm/SpeedDial/SpeedDial.js", 56 | ], 57 | [ 58 | "SpeedDialAction", 59 | "default", 60 | "@material-ui/lab/esm/SpeedDialAction/SpeedDialAction.js", 61 | ], 62 | [ 63 | "SpeedDialIcon", 64 | "default", 65 | "@material-ui/lab/esm/SpeedDialIcon/SpeedDialIcon.js", 66 | ], 67 | [ 68 | "TabContext", 69 | "default", 70 | "@material-ui/lab/esm/TabContext/TabContext.js", 71 | ], 72 | [ 73 | "useTabContext", 74 | "useTabContext", 75 | "@material-ui/lab/esm/TabContext/TabContext.js", 76 | ], 77 | [ 78 | "getPanelId", 79 | "getPanelId", 80 | "@material-ui/lab/esm/TabContext/TabContext.js", 81 | ], 82 | [ 83 | "getTabId", 84 | "getTabId", 85 | "@material-ui/lab/esm/TabContext/TabContext.js", 86 | ], 87 | [ 88 | "TabList", 89 | "default", 90 | "@material-ui/lab/esm/TabList/TabList.js", 91 | ], 92 | [ 93 | "TabPanel", 94 | "default", 95 | "@material-ui/lab/esm/TabPanel/TabPanel.js", 96 | ], 97 | [ 98 | "Timeline", 99 | "default", 100 | "@material-ui/lab/esm/Timeline/Timeline.js", 101 | ], 102 | [ 103 | "TimelineConnector", 104 | "default", 105 | "@material-ui/lab/esm/TimelineConnector/TimelineConnector.js", 106 | ], 107 | [ 108 | "TimelineContent", 109 | "default", 110 | "@material-ui/lab/esm/TimelineContent/TimelineContent.js", 111 | ], 112 | [ 113 | "TimelineDot", 114 | "default", 115 | "@material-ui/lab/esm/TimelineDot/TimelineDot.js", 116 | ], 117 | [ 118 | "TimelineItem", 119 | "default", 120 | "@material-ui/lab/esm/TimelineItem/TimelineItem.js", 121 | ], 122 | [ 123 | "TimelineOppositeContent", 124 | "default", 125 | "@material-ui/lab/esm/TimelineOppositeContent/TimelineOppositeContent.js", 126 | ], 127 | [ 128 | "TimelineSeparator", 129 | "default", 130 | "@material-ui/lab/esm/TimelineSeparator/TimelineSeparator.js", 131 | ], 132 | [ 133 | "ToggleButton", 134 | "default", 135 | "@material-ui/lab/esm/ToggleButton/ToggleButton.js", 136 | ], 137 | [ 138 | "ToggleButtonGroup", 139 | "default", 140 | "@material-ui/lab/esm/ToggleButtonGroup/ToggleButtonGroup.js", 141 | ], 142 | [ 143 | "TreeItem", 144 | "default", 145 | "@material-ui/lab/esm/TreeItem/TreeItem.js", 146 | ], 147 | [ 148 | "TreeView", 149 | "default", 150 | "@material-ui/lab/esm/TreeView/TreeView.js", 151 | ], 152 | [ 153 | "createFilterOptions", 154 | "createFilterOptions", 155 | "@material-ui/lab/esm/useAutocomplete/index.js", 156 | ], 157 | [ 158 | "useAutocomplete", 159 | "default", 160 | "@material-ui/lab/esm/useAutocomplete/useAutocomplete.js", 161 | ], 162 | ] 163 | `); 164 | }); 165 | -------------------------------------------------------------------------------- /test/@material-ui/lab/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { runPlugin } from "../../utils.js"; 3 | 4 | test("transformation", () => { 5 | expect( 6 | runPlugin('import { Alert, AlertTitle } from "@material-ui/lab"', [ 7 | "@material-ui/lab", 8 | ]) 9 | ).toMatchInlineSnapshot(` 10 | import Alert from "@material-ui/lab/esm/Alert/Alert.js"; 11 | import AlertTitle from "@material-ui/lab/esm/AlertTitle/AlertTitle.js"; 12 | `); 13 | }); 14 | -------------------------------------------------------------------------------- /test/@material-ui/system/exports.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { testExports } from "../../utils.js"; 3 | 4 | test("exports", () => { 5 | expect(testExports("@material-ui/system")).toMatchInlineSnapshot(` 6 | [ 7 | [ 8 | "borders", 9 | "default", 10 | "@material-ui/system/esm/borders.js", 11 | ], 12 | [ 13 | "border", 14 | "border", 15 | "@material-ui/system/esm/borders.js", 16 | ], 17 | [ 18 | "borderTop", 19 | "borderTop", 20 | "@material-ui/system/esm/borders.js", 21 | ], 22 | [ 23 | "borderRight", 24 | "borderRight", 25 | "@material-ui/system/esm/borders.js", 26 | ], 27 | [ 28 | "borderBottom", 29 | "borderBottom", 30 | "@material-ui/system/esm/borders.js", 31 | ], 32 | [ 33 | "borderLeft", 34 | "borderLeft", 35 | "@material-ui/system/esm/borders.js", 36 | ], 37 | [ 38 | "borderColor", 39 | "borderColor", 40 | "@material-ui/system/esm/borders.js", 41 | ], 42 | [ 43 | "borderRadius", 44 | "borderRadius", 45 | "@material-ui/system/esm/borders.js", 46 | ], 47 | [ 48 | "breakpoints", 49 | "default", 50 | "@material-ui/system/esm/breakpoints.js", 51 | ], 52 | [ 53 | "compose", 54 | "default", 55 | "@material-ui/system/esm/compose.js", 56 | ], 57 | [ 58 | "display", 59 | "default", 60 | "@material-ui/system/esm/display.js", 61 | ], 62 | [ 63 | "flexbox", 64 | "default", 65 | "@material-ui/system/esm/flexbox.js", 66 | ], 67 | [ 68 | "flexBasis", 69 | "flexBasis", 70 | "@material-ui/system/esm/flexbox.js", 71 | ], 72 | [ 73 | "flexDirection", 74 | "flexDirection", 75 | "@material-ui/system/esm/flexbox.js", 76 | ], 77 | [ 78 | "flexWrap", 79 | "flexWrap", 80 | "@material-ui/system/esm/flexbox.js", 81 | ], 82 | [ 83 | "justifyContent", 84 | "justifyContent", 85 | "@material-ui/system/esm/flexbox.js", 86 | ], 87 | [ 88 | "alignItems", 89 | "alignItems", 90 | "@material-ui/system/esm/flexbox.js", 91 | ], 92 | [ 93 | "alignContent", 94 | "alignContent", 95 | "@material-ui/system/esm/flexbox.js", 96 | ], 97 | [ 98 | "order", 99 | "order", 100 | "@material-ui/system/esm/flexbox.js", 101 | ], 102 | [ 103 | "flex", 104 | "flex", 105 | "@material-ui/system/esm/flexbox.js", 106 | ], 107 | [ 108 | "flexGrow", 109 | "flexGrow", 110 | "@material-ui/system/esm/flexbox.js", 111 | ], 112 | [ 113 | "flexShrink", 114 | "flexShrink", 115 | "@material-ui/system/esm/flexbox.js", 116 | ], 117 | [ 118 | "alignSelf", 119 | "alignSelf", 120 | "@material-ui/system/esm/flexbox.js", 121 | ], 122 | [ 123 | "justifyItems", 124 | "justifyItems", 125 | "@material-ui/system/esm/flexbox.js", 126 | ], 127 | [ 128 | "justifySelf", 129 | "justifySelf", 130 | "@material-ui/system/esm/flexbox.js", 131 | ], 132 | [ 133 | "grid", 134 | "default", 135 | "@material-ui/system/esm/grid.js", 136 | ], 137 | [ 138 | "gridGap", 139 | "gridGap", 140 | "@material-ui/system/esm/grid.js", 141 | ], 142 | [ 143 | "gridColumnGap", 144 | "gridColumnGap", 145 | "@material-ui/system/esm/grid.js", 146 | ], 147 | [ 148 | "gridRowGap", 149 | "gridRowGap", 150 | "@material-ui/system/esm/grid.js", 151 | ], 152 | [ 153 | "gridColumn", 154 | "gridColumn", 155 | "@material-ui/system/esm/grid.js", 156 | ], 157 | [ 158 | "gridRow", 159 | "gridRow", 160 | "@material-ui/system/esm/grid.js", 161 | ], 162 | [ 163 | "gridAutoFlow", 164 | "gridAutoFlow", 165 | "@material-ui/system/esm/grid.js", 166 | ], 167 | [ 168 | "gridAutoColumns", 169 | "gridAutoColumns", 170 | "@material-ui/system/esm/grid.js", 171 | ], 172 | [ 173 | "gridAutoRows", 174 | "gridAutoRows", 175 | "@material-ui/system/esm/grid.js", 176 | ], 177 | [ 178 | "gridTemplateColumns", 179 | "gridTemplateColumns", 180 | "@material-ui/system/esm/grid.js", 181 | ], 182 | [ 183 | "gridTemplateRows", 184 | "gridTemplateRows", 185 | "@material-ui/system/esm/grid.js", 186 | ], 187 | [ 188 | "gridTemplateAreas", 189 | "gridTemplateAreas", 190 | "@material-ui/system/esm/grid.js", 191 | ], 192 | [ 193 | "gridArea", 194 | "gridArea", 195 | "@material-ui/system/esm/grid.js", 196 | ], 197 | [ 198 | "palette", 199 | "default", 200 | "@material-ui/system/esm/palette.js", 201 | ], 202 | [ 203 | "color", 204 | "color", 205 | "@material-ui/system/esm/palette.js", 206 | ], 207 | [ 208 | "bgcolor", 209 | "bgcolor", 210 | "@material-ui/system/esm/palette.js", 211 | ], 212 | [ 213 | "positions", 214 | "default", 215 | "@material-ui/system/esm/positions.js", 216 | ], 217 | [ 218 | "position", 219 | "position", 220 | "@material-ui/system/esm/positions.js", 221 | ], 222 | [ 223 | "zIndex", 224 | "zIndex", 225 | "@material-ui/system/esm/positions.js", 226 | ], 227 | [ 228 | "top", 229 | "top", 230 | "@material-ui/system/esm/positions.js", 231 | ], 232 | [ 233 | "right", 234 | "right", 235 | "@material-ui/system/esm/positions.js", 236 | ], 237 | [ 238 | "bottom", 239 | "bottom", 240 | "@material-ui/system/esm/positions.js", 241 | ], 242 | [ 243 | "left", 244 | "left", 245 | "@material-ui/system/esm/positions.js", 246 | ], 247 | [ 248 | "shadows", 249 | "default", 250 | "@material-ui/system/esm/shadows.js", 251 | ], 252 | [ 253 | "sizing", 254 | "default", 255 | "@material-ui/system/esm/sizing.js", 256 | ], 257 | [ 258 | "width", 259 | "width", 260 | "@material-ui/system/esm/sizing.js", 261 | ], 262 | [ 263 | "maxWidth", 264 | "maxWidth", 265 | "@material-ui/system/esm/sizing.js", 266 | ], 267 | [ 268 | "minWidth", 269 | "minWidth", 270 | "@material-ui/system/esm/sizing.js", 271 | ], 272 | [ 273 | "height", 274 | "height", 275 | "@material-ui/system/esm/sizing.js", 276 | ], 277 | [ 278 | "maxHeight", 279 | "maxHeight", 280 | "@material-ui/system/esm/sizing.js", 281 | ], 282 | [ 283 | "minHeight", 284 | "minHeight", 285 | "@material-ui/system/esm/sizing.js", 286 | ], 287 | [ 288 | "sizeWidth", 289 | "sizeWidth", 290 | "@material-ui/system/esm/sizing.js", 291 | ], 292 | [ 293 | "sizeHeight", 294 | "sizeHeight", 295 | "@material-ui/system/esm/sizing.js", 296 | ], 297 | [ 298 | "boxSizing", 299 | "boxSizing", 300 | "@material-ui/system/esm/sizing.js", 301 | ], 302 | [ 303 | "spacing", 304 | "default", 305 | "@material-ui/system/esm/spacing.js", 306 | ], 307 | [ 308 | "createUnarySpacing", 309 | "createUnarySpacing", 310 | "@material-ui/system/esm/spacing.js", 311 | ], 312 | [ 313 | "style", 314 | "default", 315 | "@material-ui/system/esm/style.js", 316 | ], 317 | [ 318 | "styleFunctionSx", 319 | "default", 320 | "@material-ui/system/esm/styleFunctionSx.js", 321 | ], 322 | [ 323 | "css", 324 | "css", 325 | "@material-ui/system/esm/styleFunctionSx.js", 326 | ], 327 | [ 328 | "typography", 329 | "default", 330 | "@material-ui/system/esm/typography.js", 331 | ], 332 | [ 333 | "fontFamily", 334 | "fontFamily", 335 | "@material-ui/system/esm/typography.js", 336 | ], 337 | [ 338 | "fontSize", 339 | "fontSize", 340 | "@material-ui/system/esm/typography.js", 341 | ], 342 | [ 343 | "fontStyle", 344 | "fontStyle", 345 | "@material-ui/system/esm/typography.js", 346 | ], 347 | [ 348 | "fontWeight", 349 | "fontWeight", 350 | "@material-ui/system/esm/typography.js", 351 | ], 352 | [ 353 | "letterSpacing", 354 | "letterSpacing", 355 | "@material-ui/system/esm/typography.js", 356 | ], 357 | [ 358 | "lineHeight", 359 | "lineHeight", 360 | "@material-ui/system/esm/typography.js", 361 | ], 362 | [ 363 | "textAlign", 364 | "textAlign", 365 | "@material-ui/system/esm/typography.js", 366 | ], 367 | ] 368 | `); 369 | }); 370 | -------------------------------------------------------------------------------- /test/@material-ui/system/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { runPlugin } from "../../utils.js"; 3 | 4 | test("transformation", () => { 5 | expect( 6 | runPlugin( 7 | 'import { ThemeProvider, ThemeProviderProps } from "@material-ui/system";', 8 | ["@material-ui/system"] 9 | ) 10 | ).toMatchInlineSnapshot( 11 | `import { ThemeProvider, ThemeProviderProps } from "@material-ui/system";` 12 | ); 13 | }); 14 | -------------------------------------------------------------------------------- /test/@mui/core/exports.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { testExports } from "../../utils.js"; 3 | 4 | test("exports", () => { 5 | expect(testExports("@mui/core")).toMatchInlineSnapshot(` 6 | [ 7 | [ 8 | "createFilterOptions", 9 | "createFilterOptions", 10 | "@mui/core/AutocompleteUnstyled/useAutocomplete.js", 11 | ], 12 | [ 13 | "useAutocomplete", 14 | "default", 15 | "@mui/core/AutocompleteUnstyled/useAutocomplete.js", 16 | ], 17 | [ 18 | "BackdropUnstyled", 19 | "default", 20 | "@mui/core/BackdropUnstyled/BackdropUnstyled.js", 21 | ], 22 | [ 23 | "getBackdropUtilityClass", 24 | "getBackdropUtilityClass", 25 | "@mui/core/BackdropUnstyled/backdropUnstyledClasses.js", 26 | ], 27 | [ 28 | "backdropUnstyledClasses", 29 | "default", 30 | "@mui/core/BackdropUnstyled/backdropUnstyledClasses.js", 31 | ], 32 | [ 33 | "BadgeUnstyled", 34 | "default", 35 | "@mui/core/BadgeUnstyled/BadgeUnstyled.js", 36 | ], 37 | [ 38 | "getBadgeUtilityClass", 39 | "getBadgeUtilityClass", 40 | "@mui/core/BadgeUnstyled/badgeUnstyledClasses.js", 41 | ], 42 | [ 43 | "badgeUnstyledClasses", 44 | "default", 45 | "@mui/core/BadgeUnstyled/badgeUnstyledClasses.js", 46 | ], 47 | [ 48 | "ButtonUnstyled", 49 | "default", 50 | "@mui/core/ButtonUnstyled/ButtonUnstyled.js", 51 | ], 52 | [ 53 | "getButtonUnstyledUtilityClass", 54 | "getButtonUnstyledUtilityClass", 55 | "@mui/core/ButtonUnstyled/buttonUnstyledClasses.js", 56 | ], 57 | [ 58 | "buttonUnstyledClasses", 59 | "default", 60 | "@mui/core/ButtonUnstyled/buttonUnstyledClasses.js", 61 | ], 62 | [ 63 | "useButton", 64 | "default", 65 | "@mui/core/ButtonUnstyled/useButton.js", 66 | ], 67 | [ 68 | "unstable_composeClasses", 69 | "default", 70 | "@mui/core/composeClasses/composeClasses.js", 71 | ], 72 | [ 73 | "FormControlUnstyledContext", 74 | "default", 75 | "@mui/core/FormControlUnstyled/FormControlContext.js", 76 | ], 77 | [ 78 | "FormControlUnstyled", 79 | "default", 80 | "@mui/core/FormControlUnstyled/FormControlUnstyled.js", 81 | ], 82 | [ 83 | "formControlUnstyledClasses", 84 | "default", 85 | "@mui/core/FormControlUnstyled/formControlUnstyledClasses.js", 86 | ], 87 | [ 88 | "getFormControlUnstyledUtilityClasses", 89 | "getFormControlUnstyledUtilityClasses", 90 | "@mui/core/FormControlUnstyled/formControlUnstyledClasses.js", 91 | ], 92 | [ 93 | "useFormControlUnstyled", 94 | "default", 95 | "@mui/core/FormControlUnstyled/useFormControl.js", 96 | ], 97 | [ 98 | "unstable_ClassNameGenerator", 99 | "default", 100 | "@mui/core/generateUtilityClass/ClassNameGenerator.js", 101 | ], 102 | [ 103 | "generateUtilityClass", 104 | "default", 105 | "@mui/core/generateUtilityClass/generateUtilityClass.js", 106 | ], 107 | [ 108 | "generateUtilityClasses", 109 | "default", 110 | "@mui/core/generateUtilityClasses/generateUtilityClasses.js", 111 | ], 112 | [ 113 | "InputUnstyled", 114 | "default", 115 | "@mui/core/InputUnstyled/InputUnstyled.js", 116 | ], 117 | [ 118 | "inputUnstyledClasses", 119 | "default", 120 | "@mui/core/InputUnstyled/inputUnstyledClasses.js", 121 | ], 122 | [ 123 | "getInputUnstyledUtilityClass", 124 | "getInputUnstyledUtilityClass", 125 | "@mui/core/InputUnstyled/inputUnstyledClasses.js", 126 | ], 127 | [ 128 | "useInput", 129 | "default", 130 | "@mui/core/InputUnstyled/useInput.js", 131 | ], 132 | [ 133 | "ModalManager", 134 | "default", 135 | "@mui/core/ModalUnstyled/ModalManager.js", 136 | ], 137 | [ 138 | "ModalUnstyled", 139 | "default", 140 | "@mui/core/ModalUnstyled/ModalUnstyled.js", 141 | ], 142 | [ 143 | "getModalUtilityClass", 144 | "getModalUtilityClass", 145 | "@mui/core/ModalUnstyled/modalUnstyledClasses.js", 146 | ], 147 | [ 148 | "modalUnstyledClasses", 149 | "default", 150 | "@mui/core/ModalUnstyled/modalUnstyledClasses.js", 151 | ], 152 | [ 153 | "NoSsr", 154 | "default", 155 | "@mui/core/NoSsr/NoSsr.js", 156 | ], 157 | [ 158 | "Popper", 159 | "default", 160 | "@mui/core/Popper/Popper.js", 161 | ], 162 | [ 163 | "Portal", 164 | "default", 165 | "@mui/core/Portal/Portal.js", 166 | ], 167 | [ 168 | "SliderUnstyled", 169 | "default", 170 | "@mui/core/SliderUnstyled/SliderUnstyled.js", 171 | ], 172 | [ 173 | "sliderUnstyledClasses", 174 | "default", 175 | "@mui/core/SliderUnstyled/sliderUnstyledClasses.js", 176 | ], 177 | [ 178 | "getSliderUtilityClass", 179 | "getSliderUtilityClass", 180 | "@mui/core/SliderUnstyled/sliderUnstyledClasses.js", 181 | ], 182 | [ 183 | "SliderValueLabelUnstyled", 184 | "default", 185 | "@mui/core/SliderUnstyled/SliderValueLabelUnstyled.js", 186 | ], 187 | [ 188 | "SwitchUnstyled", 189 | "default", 190 | "@mui/core/SwitchUnstyled/SwitchUnstyled.js", 191 | ], 192 | [ 193 | "switchUnstyledClasses", 194 | "default", 195 | "@mui/core/SwitchUnstyled/switchUnstyledClasses.js", 196 | ], 197 | [ 198 | "getSwitchUnstyledUtilityClass", 199 | "getSwitchUnstyledUtilityClass", 200 | "@mui/core/SwitchUnstyled/switchUnstyledClasses.js", 201 | ], 202 | [ 203 | "useSwitch", 204 | "default", 205 | "@mui/core/SwitchUnstyled/useSwitch.js", 206 | ], 207 | [ 208 | "TextareaAutosize", 209 | "default", 210 | "@mui/core/TextareaAutosize/TextareaAutosize.js", 211 | ], 212 | [ 213 | "Unstable_TrapFocus", 214 | "default", 215 | "@mui/core/Unstable_TrapFocus/Unstable_TrapFocus.js", 216 | ], 217 | [ 218 | "appendOwnerState", 219 | "default", 220 | "@mui/core/utils/appendOwnerState.js", 221 | ], 222 | [ 223 | "extractEventHandlers", 224 | "default", 225 | "@mui/core/utils/extractEventHandlers.js", 226 | ], 227 | [ 228 | "isHostComponent", 229 | "default", 230 | "@mui/core/utils/isHostComponent.js", 231 | ], 232 | ] 233 | `); 234 | }); 235 | -------------------------------------------------------------------------------- /test/@mui/core/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { runPlugin } from "../../utils.js"; 3 | 4 | test("transformation", () => { 5 | expect( 6 | runPlugin( 7 | 'import { ButtonUnstyled, ButtonUnstyledProps } from "@mui/core";', 8 | ["@mui/core"] 9 | ) 10 | ).toMatchInlineSnapshot(` 11 | import ButtonUnstyled from "@mui/core/ButtonUnstyled/ButtonUnstyled.js"; 12 | import { ButtonUnstyledProps } from "@mui/core"; 13 | `); 14 | }); 15 | -------------------------------------------------------------------------------- /test/@mui/icons-material/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { runPlugin } from "../../utils.js"; 3 | 4 | test("transformation", () => { 5 | expect( 6 | runPlugin( 7 | 'import { ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon } from "@mui/icons-material";', 8 | ["@mui/icons-material"] 9 | ) 10 | ).toMatchInlineSnapshot(` 11 | import ChevronLeftIcon from "@mui/icons-material/esm/ChevronLeft.js"; 12 | import ChevronRightIcon from "@mui/icons-material/esm/ChevronRight.js"; 13 | `); 14 | }); 15 | -------------------------------------------------------------------------------- /test/@mui/lab/exports.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { testExports } from "../../utils.js"; 3 | 4 | test("exports", () => { 5 | expect(testExports("@mui/lab")).toMatchInlineSnapshot(` 6 | [ 7 | [ 8 | "useAutocomplete", 9 | "useAutocomplete", 10 | "@mui/base", 11 | ], 12 | [ 13 | "Alert", 14 | "default", 15 | "@mui/lab/Alert/Alert.js", 16 | ], 17 | [ 18 | "AlertTitle", 19 | "default", 20 | "@mui/lab/AlertTitle/AlertTitle.js", 21 | ], 22 | [ 23 | "Autocomplete", 24 | "default", 25 | "@mui/lab/Autocomplete/Autocomplete.js", 26 | ], 27 | [ 28 | "AvatarGroup", 29 | "default", 30 | "@mui/lab/AvatarGroup/AvatarGroup.js", 31 | ], 32 | [ 33 | "CalendarPicker", 34 | "default", 35 | "@mui/lab/CalendarPicker/CalendarPicker.js", 36 | ], 37 | [ 38 | "calendarPickerClasses", 39 | "calendarPickerClasses", 40 | "@mui/lab/CalendarPicker/CalendarPicker.js", 41 | ], 42 | [ 43 | "CalendarPickerSkeleton", 44 | "default", 45 | "@mui/lab/CalendarPickerSkeleton/CalendarPickerSkeleton.js", 46 | ], 47 | [ 48 | "calendarPickerSkeletonClasses", 49 | "calendarPickerSkeletonClasses", 50 | "@mui/lab/CalendarPickerSkeleton/CalendarPickerSkeleton.js", 51 | ], 52 | [ 53 | "getCalendarPickerSkeletonUtilityClass", 54 | "getCalendarPickerSkeletonUtilityClass", 55 | "@mui/lab/CalendarPickerSkeleton/CalendarPickerSkeleton.js", 56 | ], 57 | [ 58 | "ClockPicker", 59 | "default", 60 | "@mui/lab/ClockPicker/ClockPicker.js", 61 | ], 62 | [ 63 | "clockPickerClasses", 64 | "clockPickerClasses", 65 | "@mui/lab/ClockPicker/ClockPicker.js", 66 | ], 67 | [ 68 | "DatePicker", 69 | "default", 70 | "@mui/lab/DatePicker/DatePicker.js", 71 | ], 72 | [ 73 | "DateRangePicker", 74 | "default", 75 | "@mui/lab/DateRangePicker/DateRangePicker.js", 76 | ], 77 | [ 78 | "DateRangePickerDay", 79 | "default", 80 | "@mui/lab/DateRangePickerDay/DateRangePickerDay.js", 81 | ], 82 | [ 83 | "getDateRangePickerDayUtilityClass", 84 | "getDateRangePickerDayUtilityClass", 85 | "@mui/lab/DateRangePickerDay/DateRangePickerDay.js", 86 | ], 87 | [ 88 | "DateTimePicker", 89 | "default", 90 | "@mui/lab/DateTimePicker/DateTimePicker.js", 91 | ], 92 | [ 93 | "DesktopDatePicker", 94 | "default", 95 | "@mui/lab/DesktopDatePicker/DesktopDatePicker.js", 96 | ], 97 | [ 98 | "DesktopDateRangePicker", 99 | "default", 100 | "@mui/lab/DesktopDateRangePicker/DesktopDateRangePicker.js", 101 | ], 102 | [ 103 | "DesktopDateTimePicker", 104 | "default", 105 | "@mui/lab/DesktopDateTimePicker/DesktopDateTimePicker.js", 106 | ], 107 | [ 108 | "DesktopTimePicker", 109 | "default", 110 | "@mui/lab/DesktopTimePicker/DesktopTimePicker.js", 111 | ], 112 | [ 113 | "LoadingButton", 114 | "default", 115 | "@mui/lab/LoadingButton/LoadingButton.js", 116 | ], 117 | [ 118 | "loadingButtonClasses", 119 | "default", 120 | "@mui/lab/LoadingButton/loadingButtonClasses.js", 121 | ], 122 | [ 123 | "getLoadingButtonUtilityClass", 124 | "getLoadingButtonUtilityClass", 125 | "@mui/lab/LoadingButton/loadingButtonClasses.js", 126 | ], 127 | [ 128 | "LocalizationProvider", 129 | "default", 130 | "@mui/lab/LocalizationProvider/LocalizationProvider.js", 131 | ], 132 | [ 133 | "Masonry", 134 | "default", 135 | "@mui/lab/Masonry/Masonry.js", 136 | ], 137 | [ 138 | "getMasonryUtilityClass", 139 | "getMasonryUtilityClass", 140 | "@mui/lab/Masonry/masonryClasses.js", 141 | ], 142 | [ 143 | "masonryClasses", 144 | "default", 145 | "@mui/lab/Masonry/masonryClasses.js", 146 | ], 147 | [ 148 | "MobileDatePicker", 149 | "default", 150 | "@mui/lab/MobileDatePicker/MobileDatePicker.js", 151 | ], 152 | [ 153 | "MobileDateRangePicker", 154 | "default", 155 | "@mui/lab/MobileDateRangePicker/MobileDateRangePicker.js", 156 | ], 157 | [ 158 | "MobileDateTimePicker", 159 | "default", 160 | "@mui/lab/MobileDateTimePicker/MobileDateTimePicker.js", 161 | ], 162 | [ 163 | "MobileTimePicker", 164 | "default", 165 | "@mui/lab/MobileTimePicker/MobileTimePicker.js", 166 | ], 167 | [ 168 | "MonthPicker", 169 | "default", 170 | "@mui/lab/MonthPicker/MonthPicker.js", 171 | ], 172 | [ 173 | "monthPickerClasses", 174 | "monthPickerClasses", 175 | "@mui/lab/MonthPicker/MonthPicker.js", 176 | ], 177 | [ 178 | "getMonthPickerUtilityClass", 179 | "getMonthPickerUtilityClass", 180 | "@mui/lab/MonthPicker/MonthPicker.js", 181 | ], 182 | [ 183 | "Pagination", 184 | "default", 185 | "@mui/lab/Pagination/Pagination.js", 186 | ], 187 | [ 188 | "PaginationItem", 189 | "default", 190 | "@mui/lab/PaginationItem/PaginationItem.js", 191 | ], 192 | [ 193 | "PickersDay", 194 | "default", 195 | "@mui/lab/PickersDay/PickersDay.js", 196 | ], 197 | [ 198 | "pickersDayClasses", 199 | "pickersDayClasses", 200 | "@mui/lab/PickersDay/PickersDay.js", 201 | ], 202 | [ 203 | "getPickersDayUtilityClass", 204 | "getPickersDayUtilityClass", 205 | "@mui/lab/PickersDay/PickersDay.js", 206 | ], 207 | [ 208 | "Rating", 209 | "default", 210 | "@mui/lab/Rating/Rating.js", 211 | ], 212 | [ 213 | "Skeleton", 214 | "default", 215 | "@mui/lab/Skeleton/Skeleton.js", 216 | ], 217 | [ 218 | "SpeedDial", 219 | "default", 220 | "@mui/lab/SpeedDial/SpeedDial.js", 221 | ], 222 | [ 223 | "SpeedDialAction", 224 | "default", 225 | "@mui/lab/SpeedDialAction/SpeedDialAction.js", 226 | ], 227 | [ 228 | "SpeedDialIcon", 229 | "default", 230 | "@mui/lab/SpeedDialIcon/SpeedDialIcon.js", 231 | ], 232 | [ 233 | "StaticDatePicker", 234 | "default", 235 | "@mui/lab/StaticDatePicker/StaticDatePicker.js", 236 | ], 237 | [ 238 | "StaticDateRangePicker", 239 | "default", 240 | "@mui/lab/StaticDateRangePicker/StaticDateRangePicker.js", 241 | ], 242 | [ 243 | "StaticDateTimePicker", 244 | "default", 245 | "@mui/lab/StaticDateTimePicker/StaticDateTimePicker.js", 246 | ], 247 | [ 248 | "StaticTimePicker", 249 | "default", 250 | "@mui/lab/StaticTimePicker/StaticTimePicker.js", 251 | ], 252 | [ 253 | "TabContext", 254 | "default", 255 | "@mui/lab/TabContext/TabContext.js", 256 | ], 257 | [ 258 | "useTabContext", 259 | "useTabContext", 260 | "@mui/lab/TabContext/TabContext.js", 261 | ], 262 | [ 263 | "getPanelId", 264 | "getPanelId", 265 | "@mui/lab/TabContext/TabContext.js", 266 | ], 267 | [ 268 | "getTabId", 269 | "getTabId", 270 | "@mui/lab/TabContext/TabContext.js", 271 | ], 272 | [ 273 | "TabList", 274 | "default", 275 | "@mui/lab/TabList/TabList.js", 276 | ], 277 | [ 278 | "TabPanel", 279 | "default", 280 | "@mui/lab/TabPanel/TabPanel.js", 281 | ], 282 | [ 283 | "tabPanelClasses", 284 | "default", 285 | "@mui/lab/TabPanel/tabPanelClasses.js", 286 | ], 287 | [ 288 | "getTabPanelUtilityClass", 289 | "getTabPanelUtilityClass", 290 | "@mui/lab/TabPanel/tabPanelClasses.js", 291 | ], 292 | [ 293 | "Timeline", 294 | "default", 295 | "@mui/lab/Timeline/Timeline.js", 296 | ], 297 | [ 298 | "timelineClasses", 299 | "default", 300 | "@mui/lab/Timeline/timelineClasses.js", 301 | ], 302 | [ 303 | "getTimelineUtilityClass", 304 | "getTimelineUtilityClass", 305 | "@mui/lab/Timeline/timelineClasses.js", 306 | ], 307 | [ 308 | "TimelineConnector", 309 | "default", 310 | "@mui/lab/TimelineConnector/TimelineConnector.js", 311 | ], 312 | [ 313 | "timelineConnectorClasses", 314 | "default", 315 | "@mui/lab/TimelineConnector/timelineConnectorClasses.js", 316 | ], 317 | [ 318 | "getTimelineConnectorUtilityClass", 319 | "getTimelineConnectorUtilityClass", 320 | "@mui/lab/TimelineConnector/timelineConnectorClasses.js", 321 | ], 322 | [ 323 | "TimelineContent", 324 | "default", 325 | "@mui/lab/TimelineContent/TimelineContent.js", 326 | ], 327 | [ 328 | "timelineContentClasses", 329 | "default", 330 | "@mui/lab/TimelineContent/timelineContentClasses.js", 331 | ], 332 | [ 333 | "getTimelineContentUtilityClass", 334 | "getTimelineContentUtilityClass", 335 | "@mui/lab/TimelineContent/timelineContentClasses.js", 336 | ], 337 | [ 338 | "TimelineDot", 339 | "default", 340 | "@mui/lab/TimelineDot/TimelineDot.js", 341 | ], 342 | [ 343 | "timelineDotClasses", 344 | "default", 345 | "@mui/lab/TimelineDot/timelineDotClasses.js", 346 | ], 347 | [ 348 | "getTimelineDotUtilityClass", 349 | "getTimelineDotUtilityClass", 350 | "@mui/lab/TimelineDot/timelineDotClasses.js", 351 | ], 352 | [ 353 | "TimelineItem", 354 | "default", 355 | "@mui/lab/TimelineItem/TimelineItem.js", 356 | ], 357 | [ 358 | "timelineItemClasses", 359 | "default", 360 | "@mui/lab/TimelineItem/timelineItemClasses.js", 361 | ], 362 | [ 363 | "getTimelineItemUtilityClass", 364 | "getTimelineItemUtilityClass", 365 | "@mui/lab/TimelineItem/timelineItemClasses.js", 366 | ], 367 | [ 368 | "TimelineOppositeContent", 369 | "default", 370 | "@mui/lab/TimelineOppositeContent/TimelineOppositeContent.js", 371 | ], 372 | [ 373 | "timelineOppositeContentClasses", 374 | "default", 375 | "@mui/lab/TimelineOppositeContent/timelineOppositeContentClasses.js", 376 | ], 377 | [ 378 | "getTimelineOppositeContentUtilityClass", 379 | "getTimelineOppositeContentUtilityClass", 380 | "@mui/lab/TimelineOppositeContent/timelineOppositeContentClasses.js", 381 | ], 382 | [ 383 | "TimelineSeparator", 384 | "default", 385 | "@mui/lab/TimelineSeparator/TimelineSeparator.js", 386 | ], 387 | [ 388 | "timelineSeparatorClasses", 389 | "default", 390 | "@mui/lab/TimelineSeparator/timelineSeparatorClasses.js", 391 | ], 392 | [ 393 | "getTimelineSeparatorUtilityClass", 394 | "getTimelineSeparatorUtilityClass", 395 | "@mui/lab/TimelineSeparator/timelineSeparatorClasses.js", 396 | ], 397 | [ 398 | "TimePicker", 399 | "default", 400 | "@mui/lab/TimePicker/TimePicker.js", 401 | ], 402 | [ 403 | "ToggleButton", 404 | "default", 405 | "@mui/lab/ToggleButton/ToggleButton.js", 406 | ], 407 | [ 408 | "ToggleButtonGroup", 409 | "default", 410 | "@mui/lab/ToggleButtonGroup/ToggleButtonGroup.js", 411 | ], 412 | [ 413 | "TreeItem", 414 | "default", 415 | "@mui/lab/TreeItem/TreeItem.js", 416 | ], 417 | [ 418 | "treeItemClasses", 419 | "default", 420 | "@mui/lab/TreeItem/treeItemClasses.js", 421 | ], 422 | [ 423 | "getTreeItemUtilityClass", 424 | "getTreeItemUtilityClass", 425 | "@mui/lab/TreeItem/treeItemClasses.js", 426 | ], 427 | [ 428 | "useTreeItem", 429 | "default", 430 | "@mui/lab/TreeItem/useTreeItem.js", 431 | ], 432 | [ 433 | "TreeView", 434 | "default", 435 | "@mui/lab/TreeView/TreeView.js", 436 | ], 437 | [ 438 | "treeViewClasses", 439 | "default", 440 | "@mui/lab/TreeView/treeViewClasses.js", 441 | ], 442 | [ 443 | "getTreeViewUtilityClass", 444 | "getTreeViewUtilityClass", 445 | "@mui/lab/TreeView/treeViewClasses.js", 446 | ], 447 | [ 448 | "YearPicker", 449 | "default", 450 | "@mui/lab/YearPicker/YearPicker.js", 451 | ], 452 | [ 453 | "yearPickerClasses", 454 | "yearPickerClasses", 455 | "@mui/lab/YearPicker/YearPicker.js", 456 | ], 457 | [ 458 | "getYearPickerUtilityClass", 459 | "getYearPickerUtilityClass", 460 | "@mui/lab/YearPicker/YearPicker.js", 461 | ], 462 | [ 463 | "usePagination", 464 | "default", 465 | "@mui/material/usePagination", 466 | ], 467 | ] 468 | `); 469 | }); 470 | -------------------------------------------------------------------------------- /test/@mui/lab/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { runPlugin } from "../../utils.js"; 3 | 4 | test("transformation", () => { 5 | expect( 6 | runPlugin('import { Alert, AlertProps } from "@mui/lab"', ["@mui/lab"]) 7 | ).toMatchInlineSnapshot(` 8 | import Alert from "@mui/lab/Alert/Alert.js"; 9 | import { AlertProps } from "@mui/lab"; 10 | `); 11 | }); 12 | -------------------------------------------------------------------------------- /test/@mui/material/exports.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { testExports } from "../../utils.js"; 3 | 4 | test("exports", () => { 5 | expect(testExports("@mui/material")).toMatchInlineSnapshot(` 6 | [ 7 | [ 8 | "ClickAwayListener", 9 | "default", 10 | "@mui/base/ClickAwayListener", 11 | ], 12 | [ 13 | "unstable_composeClasses", 14 | "default", 15 | "@mui/base/composeClasses", 16 | ], 17 | [ 18 | "Unstable_TrapFocus", 19 | "default", 20 | "@mui/base/FocusTrap", 21 | ], 22 | [ 23 | "ModalManager", 24 | "default", 25 | "@mui/base/ModalUnstyled/ModalManager.js", 26 | ], 27 | [ 28 | "ariaHidden", 29 | "ariaHidden", 30 | "@mui/base/ModalUnstyled/ModalManager.js", 31 | ], 32 | [ 33 | "modalUnstyledClasses", 34 | "default", 35 | "@mui/base/ModalUnstyled/modalUnstyledClasses.js", 36 | ], 37 | [ 38 | "getModalUtilityClass", 39 | "getModalUtilityClass", 40 | "@mui/base/ModalUnstyled/modalUnstyledClasses.js", 41 | ], 42 | [ 43 | "NoSsr", 44 | "default", 45 | "@mui/base/NoSsr", 46 | ], 47 | [ 48 | "Portal", 49 | "default", 50 | "@mui/base/Portal", 51 | ], 52 | [ 53 | "TextareaAutosize", 54 | "default", 55 | "@mui/base/TextareaAutosize", 56 | ], 57 | [ 58 | "useAutocomplete", 59 | "default", 60 | "@mui/base/useAutocomplete", 61 | ], 62 | [ 63 | "Accordion", 64 | "default", 65 | "@mui/material/Accordion/Accordion.js", 66 | ], 67 | [ 68 | "accordionClasses", 69 | "default", 70 | "@mui/material/Accordion/accordionClasses.js", 71 | ], 72 | [ 73 | "getAccordionUtilityClass", 74 | "getAccordionUtilityClass", 75 | "@mui/material/Accordion/accordionClasses.js", 76 | ], 77 | [ 78 | "AccordionActions", 79 | "default", 80 | "@mui/material/AccordionActions/AccordionActions.js", 81 | ], 82 | [ 83 | "accordionActionsClasses", 84 | "default", 85 | "@mui/material/AccordionActions/accordionActionsClasses.js", 86 | ], 87 | [ 88 | "getAccordionActionsUtilityClass", 89 | "getAccordionActionsUtilityClass", 90 | "@mui/material/AccordionActions/accordionActionsClasses.js", 91 | ], 92 | [ 93 | "AccordionDetails", 94 | "default", 95 | "@mui/material/AccordionDetails/AccordionDetails.js", 96 | ], 97 | [ 98 | "accordionDetailsClasses", 99 | "default", 100 | "@mui/material/AccordionDetails/accordionDetailsClasses.js", 101 | ], 102 | [ 103 | "getAccordionDetailsUtilityClass", 104 | "getAccordionDetailsUtilityClass", 105 | "@mui/material/AccordionDetails/accordionDetailsClasses.js", 106 | ], 107 | [ 108 | "AccordionSummary", 109 | "default", 110 | "@mui/material/AccordionSummary/AccordionSummary.js", 111 | ], 112 | [ 113 | "accordionSummaryClasses", 114 | "default", 115 | "@mui/material/AccordionSummary/accordionSummaryClasses.js", 116 | ], 117 | [ 118 | "getAccordionSummaryUtilityClass", 119 | "getAccordionSummaryUtilityClass", 120 | "@mui/material/AccordionSummary/accordionSummaryClasses.js", 121 | ], 122 | [ 123 | "Alert", 124 | "default", 125 | "@mui/material/Alert/Alert.js", 126 | ], 127 | [ 128 | "alertClasses", 129 | "default", 130 | "@mui/material/Alert/alertClasses.js", 131 | ], 132 | [ 133 | "getAlertUtilityClass", 134 | "getAlertUtilityClass", 135 | "@mui/material/Alert/alertClasses.js", 136 | ], 137 | [ 138 | "AlertTitle", 139 | "default", 140 | "@mui/material/AlertTitle/AlertTitle.js", 141 | ], 142 | [ 143 | "alertTitleClasses", 144 | "default", 145 | "@mui/material/AlertTitle/alertTitleClasses.js", 146 | ], 147 | [ 148 | "getAlertTitleUtilityClass", 149 | "getAlertTitleUtilityClass", 150 | "@mui/material/AlertTitle/alertTitleClasses.js", 151 | ], 152 | [ 153 | "AppBar", 154 | "default", 155 | "@mui/material/AppBar/AppBar.js", 156 | ], 157 | [ 158 | "appBarClasses", 159 | "default", 160 | "@mui/material/AppBar/appBarClasses.js", 161 | ], 162 | [ 163 | "getAppBarUtilityClass", 164 | "getAppBarUtilityClass", 165 | "@mui/material/AppBar/appBarClasses.js", 166 | ], 167 | [ 168 | "Autocomplete", 169 | "default", 170 | "@mui/material/Autocomplete/Autocomplete.js", 171 | ], 172 | [ 173 | "createFilterOptions", 174 | "createFilterOptions", 175 | "@mui/material/Autocomplete/Autocomplete.js", 176 | ], 177 | [ 178 | "autocompleteClasses", 179 | "default", 180 | "@mui/material/Autocomplete/autocompleteClasses.js", 181 | ], 182 | [ 183 | "getAutocompleteUtilityClass", 184 | "getAutocompleteUtilityClass", 185 | "@mui/material/Autocomplete/autocompleteClasses.js", 186 | ], 187 | [ 188 | "Avatar", 189 | "default", 190 | "@mui/material/Avatar/Avatar.js", 191 | ], 192 | [ 193 | "avatarClasses", 194 | "default", 195 | "@mui/material/Avatar/avatarClasses.js", 196 | ], 197 | [ 198 | "getAvatarUtilityClass", 199 | "getAvatarUtilityClass", 200 | "@mui/material/Avatar/avatarClasses.js", 201 | ], 202 | [ 203 | "AvatarGroup", 204 | "default", 205 | "@mui/material/AvatarGroup/AvatarGroup.js", 206 | ], 207 | [ 208 | "avatarGroupClasses", 209 | "default", 210 | "@mui/material/AvatarGroup/avatarGroupClasses.js", 211 | ], 212 | [ 213 | "getAvatarGroupUtilityClass", 214 | "getAvatarGroupUtilityClass", 215 | "@mui/material/AvatarGroup/avatarGroupClasses.js", 216 | ], 217 | [ 218 | "Backdrop", 219 | "default", 220 | "@mui/material/Backdrop/Backdrop.js", 221 | ], 222 | [ 223 | "backdropClasses", 224 | "default", 225 | "@mui/material/Backdrop/backdropClasses.js", 226 | ], 227 | [ 228 | "getBackdropUtilityClass", 229 | "getBackdropUtilityClass", 230 | "@mui/material/Backdrop/backdropClasses.js", 231 | ], 232 | [ 233 | "Badge", 234 | "default", 235 | "@mui/material/Badge/Badge.js", 236 | ], 237 | [ 238 | "badgeClasses", 239 | "default", 240 | "@mui/material/Badge/badgeClasses.js", 241 | ], 242 | [ 243 | "getBadgeUtilityClass", 244 | "getBadgeUtilityClass", 245 | "@mui/material/Badge/badgeClasses.js", 246 | ], 247 | [ 248 | "BottomNavigation", 249 | "default", 250 | "@mui/material/BottomNavigation/BottomNavigation.js", 251 | ], 252 | [ 253 | "bottomNavigationClasses", 254 | "default", 255 | "@mui/material/BottomNavigation/bottomNavigationClasses.js", 256 | ], 257 | [ 258 | "getBottomNavigationUtilityClass", 259 | "getBottomNavigationUtilityClass", 260 | "@mui/material/BottomNavigation/bottomNavigationClasses.js", 261 | ], 262 | [ 263 | "BottomNavigationAction", 264 | "default", 265 | "@mui/material/BottomNavigationAction/BottomNavigationAction.js", 266 | ], 267 | [ 268 | "bottomNavigationActionClasses", 269 | "default", 270 | "@mui/material/BottomNavigationAction/bottomNavigationActionClasses.js", 271 | ], 272 | [ 273 | "getBottomNavigationActionUtilityClass", 274 | "getBottomNavigationActionUtilityClass", 275 | "@mui/material/BottomNavigationAction/bottomNavigationActionClasses.js", 276 | ], 277 | [ 278 | "Box", 279 | "default", 280 | "@mui/material/Box/Box.js", 281 | ], 282 | [ 283 | "Breadcrumbs", 284 | "default", 285 | "@mui/material/Breadcrumbs/Breadcrumbs.js", 286 | ], 287 | [ 288 | "breadcrumbsClasses", 289 | "default", 290 | "@mui/material/Breadcrumbs/breadcrumbsClasses.js", 291 | ], 292 | [ 293 | "getBreadcrumbsUtilityClass", 294 | "getBreadcrumbsUtilityClass", 295 | "@mui/material/Breadcrumbs/breadcrumbsClasses.js", 296 | ], 297 | [ 298 | "Button", 299 | "default", 300 | "@mui/material/Button/Button.js", 301 | ], 302 | [ 303 | "buttonClasses", 304 | "default", 305 | "@mui/material/Button/buttonClasses.js", 306 | ], 307 | [ 308 | "getButtonUtilityClass", 309 | "getButtonUtilityClass", 310 | "@mui/material/Button/buttonClasses.js", 311 | ], 312 | [ 313 | "ButtonBase", 314 | "default", 315 | "@mui/material/ButtonBase/ButtonBase.js", 316 | ], 317 | [ 318 | "buttonBaseClasses", 319 | "default", 320 | "@mui/material/ButtonBase/buttonBaseClasses.js", 321 | ], 322 | [ 323 | "getButtonBaseUtilityClass", 324 | "getButtonBaseUtilityClass", 325 | "@mui/material/ButtonBase/buttonBaseClasses.js", 326 | ], 327 | [ 328 | "touchRippleClasses", 329 | "default", 330 | "@mui/material/ButtonBase/touchRippleClasses.js", 331 | ], 332 | [ 333 | "getTouchRippleUtilityClass", 334 | "getTouchRippleUtilityClass", 335 | "@mui/material/ButtonBase/touchRippleClasses.js", 336 | ], 337 | [ 338 | "ButtonGroup", 339 | "default", 340 | "@mui/material/ButtonGroup/ButtonGroup.js", 341 | ], 342 | [ 343 | "buttonGroupClasses", 344 | "default", 345 | "@mui/material/ButtonGroup/buttonGroupClasses.js", 346 | ], 347 | [ 348 | "getButtonGroupUtilityClass", 349 | "getButtonGroupUtilityClass", 350 | "@mui/material/ButtonGroup/buttonGroupClasses.js", 351 | ], 352 | [ 353 | "Card", 354 | "default", 355 | "@mui/material/Card/Card.js", 356 | ], 357 | [ 358 | "cardClasses", 359 | "default", 360 | "@mui/material/Card/cardClasses.js", 361 | ], 362 | [ 363 | "getCardUtilityClass", 364 | "getCardUtilityClass", 365 | "@mui/material/Card/cardClasses.js", 366 | ], 367 | [ 368 | "CardActionArea", 369 | "default", 370 | "@mui/material/CardActionArea/CardActionArea.js", 371 | ], 372 | [ 373 | "cardActionAreaClasses", 374 | "default", 375 | "@mui/material/CardActionArea/cardActionAreaClasses.js", 376 | ], 377 | [ 378 | "getCardActionAreaUtilityClass", 379 | "getCardActionAreaUtilityClass", 380 | "@mui/material/CardActionArea/cardActionAreaClasses.js", 381 | ], 382 | [ 383 | "CardActions", 384 | "default", 385 | "@mui/material/CardActions/CardActions.js", 386 | ], 387 | [ 388 | "cardActionsClasses", 389 | "default", 390 | "@mui/material/CardActions/cardActionsClasses.js", 391 | ], 392 | [ 393 | "getCardActionsUtilityClass", 394 | "getCardActionsUtilityClass", 395 | "@mui/material/CardActions/cardActionsClasses.js", 396 | ], 397 | [ 398 | "CardContent", 399 | "default", 400 | "@mui/material/CardContent/CardContent.js", 401 | ], 402 | [ 403 | "cardContentClasses", 404 | "default", 405 | "@mui/material/CardContent/cardContentClasses.js", 406 | ], 407 | [ 408 | "getCardContentUtilityClass", 409 | "getCardContentUtilityClass", 410 | "@mui/material/CardContent/cardContentClasses.js", 411 | ], 412 | [ 413 | "CardHeader", 414 | "default", 415 | "@mui/material/CardHeader/CardHeader.js", 416 | ], 417 | [ 418 | "cardHeaderClasses", 419 | "default", 420 | "@mui/material/CardHeader/cardHeaderClasses.js", 421 | ], 422 | [ 423 | "getCardHeaderUtilityClass", 424 | "getCardHeaderUtilityClass", 425 | "@mui/material/CardHeader/cardHeaderClasses.js", 426 | ], 427 | [ 428 | "CardMedia", 429 | "default", 430 | "@mui/material/CardMedia/CardMedia.js", 431 | ], 432 | [ 433 | "cardMediaClasses", 434 | "default", 435 | "@mui/material/CardMedia/cardMediaClasses.js", 436 | ], 437 | [ 438 | "getCardMediaUtilityClass", 439 | "getCardMediaUtilityClass", 440 | "@mui/material/CardMedia/cardMediaClasses.js", 441 | ], 442 | [ 443 | "Checkbox", 444 | "default", 445 | "@mui/material/Checkbox/Checkbox.js", 446 | ], 447 | [ 448 | "checkboxClasses", 449 | "default", 450 | "@mui/material/Checkbox/checkboxClasses.js", 451 | ], 452 | [ 453 | "getCheckboxUtilityClass", 454 | "getCheckboxUtilityClass", 455 | "@mui/material/Checkbox/checkboxClasses.js", 456 | ], 457 | [ 458 | "Chip", 459 | "default", 460 | "@mui/material/Chip/Chip.js", 461 | ], 462 | [ 463 | "chipClasses", 464 | "default", 465 | "@mui/material/Chip/chipClasses.js", 466 | ], 467 | [ 468 | "getChipUtilityClass", 469 | "getChipUtilityClass", 470 | "@mui/material/Chip/chipClasses.js", 471 | ], 472 | [ 473 | "CircularProgress", 474 | "default", 475 | "@mui/material/CircularProgress/CircularProgress.js", 476 | ], 477 | [ 478 | "circularProgressClasses", 479 | "default", 480 | "@mui/material/CircularProgress/circularProgressClasses.js", 481 | ], 482 | [ 483 | "getCircularProgressUtilityClass", 484 | "getCircularProgressUtilityClass", 485 | "@mui/material/CircularProgress/circularProgressClasses.js", 486 | ], 487 | [ 488 | "Collapse", 489 | "default", 490 | "@mui/material/Collapse/Collapse.js", 491 | ], 492 | [ 493 | "collapseClasses", 494 | "default", 495 | "@mui/material/Collapse/collapseClasses.js", 496 | ], 497 | [ 498 | "getCollapseUtilityClass", 499 | "getCollapseUtilityClass", 500 | "@mui/material/Collapse/collapseClasses.js", 501 | ], 502 | [ 503 | "colors", 504 | "*", 505 | "@mui/material/colors/index.js", 506 | ], 507 | [ 508 | "Container", 509 | "default", 510 | "@mui/material/Container/Container.js", 511 | ], 512 | [ 513 | "containerClasses", 514 | "default", 515 | "@mui/material/Container/containerClasses.js", 516 | ], 517 | [ 518 | "getContainerUtilityClass", 519 | "getContainerUtilityClass", 520 | "@mui/material/Container/containerClasses.js", 521 | ], 522 | [ 523 | "CssBaseline", 524 | "default", 525 | "@mui/material/CssBaseline/CssBaseline.js", 526 | ], 527 | [ 528 | "darkScrollbar", 529 | "default", 530 | "@mui/material/darkScrollbar/index.js", 531 | ], 532 | [ 533 | "Dialog", 534 | "default", 535 | "@mui/material/Dialog/Dialog.js", 536 | ], 537 | [ 538 | "dialogClasses", 539 | "default", 540 | "@mui/material/Dialog/dialogClasses.js", 541 | ], 542 | [ 543 | "getDialogUtilityClass", 544 | "getDialogUtilityClass", 545 | "@mui/material/Dialog/dialogClasses.js", 546 | ], 547 | [ 548 | "DialogActions", 549 | "default", 550 | "@mui/material/DialogActions/DialogActions.js", 551 | ], 552 | [ 553 | "dialogActionsClasses", 554 | "default", 555 | "@mui/material/DialogActions/dialogActionsClasses.js", 556 | ], 557 | [ 558 | "getDialogActionsUtilityClass", 559 | "getDialogActionsUtilityClass", 560 | "@mui/material/DialogActions/dialogActionsClasses.js", 561 | ], 562 | [ 563 | "DialogContent", 564 | "default", 565 | "@mui/material/DialogContent/DialogContent.js", 566 | ], 567 | [ 568 | "dialogContentClasses", 569 | "default", 570 | "@mui/material/DialogContent/dialogContentClasses.js", 571 | ], 572 | [ 573 | "getDialogContentUtilityClass", 574 | "getDialogContentUtilityClass", 575 | "@mui/material/DialogContent/dialogContentClasses.js", 576 | ], 577 | [ 578 | "DialogContentText", 579 | "default", 580 | "@mui/material/DialogContentText/DialogContentText.js", 581 | ], 582 | [ 583 | "dialogContentTextClasses", 584 | "default", 585 | "@mui/material/DialogContentText/dialogContentTextClasses.js", 586 | ], 587 | [ 588 | "getDialogContentTextUtilityClass", 589 | "getDialogContentTextUtilityClass", 590 | "@mui/material/DialogContentText/dialogContentTextClasses.js", 591 | ], 592 | [ 593 | "DialogTitle", 594 | "default", 595 | "@mui/material/DialogTitle/DialogTitle.js", 596 | ], 597 | [ 598 | "dialogTitleClasses", 599 | "default", 600 | "@mui/material/DialogTitle/dialogTitleClasses.js", 601 | ], 602 | [ 603 | "getDialogTitleUtilityClass", 604 | "getDialogTitleUtilityClass", 605 | "@mui/material/DialogTitle/dialogTitleClasses.js", 606 | ], 607 | [ 608 | "Divider", 609 | "default", 610 | "@mui/material/Divider/Divider.js", 611 | ], 612 | [ 613 | "dividerClasses", 614 | "default", 615 | "@mui/material/Divider/dividerClasses.js", 616 | ], 617 | [ 618 | "getDividerUtilityClass", 619 | "getDividerUtilityClass", 620 | "@mui/material/Divider/dividerClasses.js", 621 | ], 622 | [ 623 | "Drawer", 624 | "default", 625 | "@mui/material/Drawer/Drawer.js", 626 | ], 627 | [ 628 | "drawerClasses", 629 | "default", 630 | "@mui/material/Drawer/drawerClasses.js", 631 | ], 632 | [ 633 | "getDrawerUtilityClass", 634 | "getDrawerUtilityClass", 635 | "@mui/material/Drawer/drawerClasses.js", 636 | ], 637 | [ 638 | "Fab", 639 | "default", 640 | "@mui/material/Fab/Fab.js", 641 | ], 642 | [ 643 | "fabClasses", 644 | "default", 645 | "@mui/material/Fab/fabClasses.js", 646 | ], 647 | [ 648 | "getFabUtilityClass", 649 | "getFabUtilityClass", 650 | "@mui/material/Fab/fabClasses.js", 651 | ], 652 | [ 653 | "Fade", 654 | "default", 655 | "@mui/material/Fade/Fade.js", 656 | ], 657 | [ 658 | "FilledInput", 659 | "default", 660 | "@mui/material/FilledInput/FilledInput.js", 661 | ], 662 | [ 663 | "filledInputClasses", 664 | "default", 665 | "@mui/material/FilledInput/filledInputClasses.js", 666 | ], 667 | [ 668 | "getFilledInputUtilityClass", 669 | "getFilledInputUtilityClass", 670 | "@mui/material/FilledInput/filledInputClasses.js", 671 | ], 672 | [ 673 | "FormControl", 674 | "default", 675 | "@mui/material/FormControl/FormControl.js", 676 | ], 677 | [ 678 | "formControlClasses", 679 | "default", 680 | "@mui/material/FormControl/formControlClasses.js", 681 | ], 682 | [ 683 | "getFormControlUtilityClasses", 684 | "getFormControlUtilityClasses", 685 | "@mui/material/FormControl/formControlClasses.js", 686 | ], 687 | [ 688 | "useFormControl", 689 | "default", 690 | "@mui/material/FormControl/useFormControl.js", 691 | ], 692 | [ 693 | "FormControlLabel", 694 | "default", 695 | "@mui/material/FormControlLabel/FormControlLabel.js", 696 | ], 697 | [ 698 | "formControlLabelClasses", 699 | "default", 700 | "@mui/material/FormControlLabel/formControlLabelClasses.js", 701 | ], 702 | [ 703 | "getFormControlLabelUtilityClasses", 704 | "getFormControlLabelUtilityClasses", 705 | "@mui/material/FormControlLabel/formControlLabelClasses.js", 706 | ], 707 | [ 708 | "FormGroup", 709 | "default", 710 | "@mui/material/FormGroup/FormGroup.js", 711 | ], 712 | [ 713 | "formGroupClasses", 714 | "default", 715 | "@mui/material/FormGroup/formGroupClasses.js", 716 | ], 717 | [ 718 | "getFormGroupUtilityClass", 719 | "getFormGroupUtilityClass", 720 | "@mui/material/FormGroup/formGroupClasses.js", 721 | ], 722 | [ 723 | "FormHelperText", 724 | "default", 725 | "@mui/material/FormHelperText/FormHelperText.js", 726 | ], 727 | [ 728 | "formHelperTextClasses", 729 | "default", 730 | "@mui/material/FormHelperText/formHelperTextClasses.js", 731 | ], 732 | [ 733 | "getFormHelperTextUtilityClasses", 734 | "getFormHelperTextUtilityClasses", 735 | "@mui/material/FormHelperText/formHelperTextClasses.js", 736 | ], 737 | [ 738 | "FormLabel", 739 | "default", 740 | "@mui/material/FormLabel/FormLabel.js", 741 | ], 742 | [ 743 | "FormLabelRoot", 744 | "FormLabelRoot", 745 | "@mui/material/FormLabel/FormLabel.js", 746 | ], 747 | [ 748 | "formLabelClasses", 749 | "default", 750 | "@mui/material/FormLabel/formLabelClasses.js", 751 | ], 752 | [ 753 | "getFormLabelUtilityClasses", 754 | "getFormLabelUtilityClasses", 755 | "@mui/material/FormLabel/formLabelClasses.js", 756 | ], 757 | [ 758 | "GlobalStyles", 759 | "default", 760 | "@mui/material/GlobalStyles/GlobalStyles.js", 761 | ], 762 | [ 763 | "Grid", 764 | "default", 765 | "@mui/material/Grid/Grid.js", 766 | ], 767 | [ 768 | "gridClasses", 769 | "default", 770 | "@mui/material/Grid/gridClasses.js", 771 | ], 772 | [ 773 | "getGridUtilityClass", 774 | "getGridUtilityClass", 775 | "@mui/material/Grid/gridClasses.js", 776 | ], 777 | [ 778 | "Grow", 779 | "default", 780 | "@mui/material/Grow/Grow.js", 781 | ], 782 | [ 783 | "Hidden", 784 | "default", 785 | "@mui/material/Hidden/Hidden.js", 786 | ], 787 | [ 788 | "Icon", 789 | "default", 790 | "@mui/material/Icon/Icon.js", 791 | ], 792 | [ 793 | "iconClasses", 794 | "default", 795 | "@mui/material/Icon/iconClasses.js", 796 | ], 797 | [ 798 | "getIconUtilityClass", 799 | "getIconUtilityClass", 800 | "@mui/material/Icon/iconClasses.js", 801 | ], 802 | [ 803 | "IconButton", 804 | "default", 805 | "@mui/material/IconButton/IconButton.js", 806 | ], 807 | [ 808 | "iconButtonClasses", 809 | "default", 810 | "@mui/material/IconButton/iconButtonClasses.js", 811 | ], 812 | [ 813 | "getIconButtonUtilityClass", 814 | "getIconButtonUtilityClass", 815 | "@mui/material/IconButton/iconButtonClasses.js", 816 | ], 817 | [ 818 | "ImageList", 819 | "default", 820 | "@mui/material/ImageList/ImageList.js", 821 | ], 822 | [ 823 | "getImageListUtilityClass", 824 | "getImageListUtilityClass", 825 | "@mui/material/ImageList/imageListClasses.js", 826 | ], 827 | [ 828 | "imageListClasses", 829 | "default", 830 | "@mui/material/ImageList/imageListClasses.js", 831 | ], 832 | [ 833 | "ImageListItem", 834 | "default", 835 | "@mui/material/ImageListItem/ImageListItem.js", 836 | ], 837 | [ 838 | "getImageListItemUtilityClass", 839 | "getImageListItemUtilityClass", 840 | "@mui/material/ImageListItem/imageListItemClasses.js", 841 | ], 842 | [ 843 | "imageListItemClasses", 844 | "default", 845 | "@mui/material/ImageListItem/imageListItemClasses.js", 846 | ], 847 | [ 848 | "ImageListItemBar", 849 | "default", 850 | "@mui/material/ImageListItemBar/ImageListItemBar.js", 851 | ], 852 | [ 853 | "getImageListItemBarUtilityClass", 854 | "getImageListItemBarUtilityClass", 855 | "@mui/material/ImageListItemBar/imageListItemBarClasses.js", 856 | ], 857 | [ 858 | "imageListItemBarClasses", 859 | "default", 860 | "@mui/material/ImageListItemBar/imageListItemBarClasses.js", 861 | ], 862 | [ 863 | "Input", 864 | "default", 865 | "@mui/material/Input/Input.js", 866 | ], 867 | [ 868 | "inputClasses", 869 | "default", 870 | "@mui/material/Input/inputClasses.js", 871 | ], 872 | [ 873 | "getInputUtilityClass", 874 | "getInputUtilityClass", 875 | "@mui/material/Input/inputClasses.js", 876 | ], 877 | [ 878 | "InputAdornment", 879 | "default", 880 | "@mui/material/InputAdornment/InputAdornment.js", 881 | ], 882 | [ 883 | "inputAdornmentClasses", 884 | "default", 885 | "@mui/material/InputAdornment/inputAdornmentClasses.js", 886 | ], 887 | [ 888 | "getInputAdornmentUtilityClass", 889 | "getInputAdornmentUtilityClass", 890 | "@mui/material/InputAdornment/inputAdornmentClasses.js", 891 | ], 892 | [ 893 | "InputBase", 894 | "default", 895 | "@mui/material/InputBase/InputBase.js", 896 | ], 897 | [ 898 | "inputBaseClasses", 899 | "default", 900 | "@mui/material/InputBase/inputBaseClasses.js", 901 | ], 902 | [ 903 | "getInputBaseUtilityClass", 904 | "getInputBaseUtilityClass", 905 | "@mui/material/InputBase/inputBaseClasses.js", 906 | ], 907 | [ 908 | "InputLabel", 909 | "default", 910 | "@mui/material/InputLabel/InputLabel.js", 911 | ], 912 | [ 913 | "inputLabelClasses", 914 | "default", 915 | "@mui/material/InputLabel/inputLabelClasses.js", 916 | ], 917 | [ 918 | "getInputLabelUtilityClasses", 919 | "getInputLabelUtilityClasses", 920 | "@mui/material/InputLabel/inputLabelClasses.js", 921 | ], 922 | [ 923 | "LinearProgress", 924 | "default", 925 | "@mui/material/LinearProgress/LinearProgress.js", 926 | ], 927 | [ 928 | "linearProgressClasses", 929 | "default", 930 | "@mui/material/LinearProgress/linearProgressClasses.js", 931 | ], 932 | [ 933 | "getLinearProgressUtilityClass", 934 | "getLinearProgressUtilityClass", 935 | "@mui/material/LinearProgress/linearProgressClasses.js", 936 | ], 937 | [ 938 | "Link", 939 | "default", 940 | "@mui/material/Link/Link.js", 941 | ], 942 | [ 943 | "linkClasses", 944 | "default", 945 | "@mui/material/Link/linkClasses.js", 946 | ], 947 | [ 948 | "getLinkUtilityClass", 949 | "getLinkUtilityClass", 950 | "@mui/material/Link/linkClasses.js", 951 | ], 952 | [ 953 | "List", 954 | "default", 955 | "@mui/material/List/List.js", 956 | ], 957 | [ 958 | "listClasses", 959 | "default", 960 | "@mui/material/List/listClasses.js", 961 | ], 962 | [ 963 | "getListUtilityClass", 964 | "getListUtilityClass", 965 | "@mui/material/List/listClasses.js", 966 | ], 967 | [ 968 | "ListItem", 969 | "default", 970 | "@mui/material/ListItem/ListItem.js", 971 | ], 972 | [ 973 | "listItemClasses", 974 | "default", 975 | "@mui/material/ListItem/listItemClasses.js", 976 | ], 977 | [ 978 | "getListItemUtilityClass", 979 | "getListItemUtilityClass", 980 | "@mui/material/ListItem/listItemClasses.js", 981 | ], 982 | [ 983 | "ListItemAvatar", 984 | "default", 985 | "@mui/material/ListItemAvatar/ListItemAvatar.js", 986 | ], 987 | [ 988 | "listItemAvatarClasses", 989 | "default", 990 | "@mui/material/ListItemAvatar/listItemAvatarClasses.js", 991 | ], 992 | [ 993 | "getListItemAvatarUtilityClass", 994 | "getListItemAvatarUtilityClass", 995 | "@mui/material/ListItemAvatar/listItemAvatarClasses.js", 996 | ], 997 | [ 998 | "ListItemButton", 999 | "default", 1000 | "@mui/material/ListItemButton/ListItemButton.js", 1001 | ], 1002 | [ 1003 | "listItemButtonClasses", 1004 | "default", 1005 | "@mui/material/ListItemButton/listItemButtonClasses.js", 1006 | ], 1007 | [ 1008 | "getListItemButtonUtilityClass", 1009 | "getListItemButtonUtilityClass", 1010 | "@mui/material/ListItemButton/listItemButtonClasses.js", 1011 | ], 1012 | [ 1013 | "ListItemIcon", 1014 | "default", 1015 | "@mui/material/ListItemIcon/ListItemIcon.js", 1016 | ], 1017 | [ 1018 | "listItemIconClasses", 1019 | "default", 1020 | "@mui/material/ListItemIcon/listItemIconClasses.js", 1021 | ], 1022 | [ 1023 | "getListItemIconUtilityClass", 1024 | "getListItemIconUtilityClass", 1025 | "@mui/material/ListItemIcon/listItemIconClasses.js", 1026 | ], 1027 | [ 1028 | "ListItemSecondaryAction", 1029 | "default", 1030 | "@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js", 1031 | ], 1032 | [ 1033 | "listItemSecondaryActionClasses", 1034 | "default", 1035 | "@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js", 1036 | ], 1037 | [ 1038 | "getListItemSecondaryActionClassesUtilityClass", 1039 | "getListItemSecondaryActionClassesUtilityClass", 1040 | "@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js", 1041 | ], 1042 | [ 1043 | "ListItemText", 1044 | "default", 1045 | "@mui/material/ListItemText/ListItemText.js", 1046 | ], 1047 | [ 1048 | "listItemTextClasses", 1049 | "default", 1050 | "@mui/material/ListItemText/listItemTextClasses.js", 1051 | ], 1052 | [ 1053 | "getListItemTextUtilityClass", 1054 | "getListItemTextUtilityClass", 1055 | "@mui/material/ListItemText/listItemTextClasses.js", 1056 | ], 1057 | [ 1058 | "ListSubheader", 1059 | "default", 1060 | "@mui/material/ListSubheader/ListSubheader.js", 1061 | ], 1062 | [ 1063 | "listSubheaderClasses", 1064 | "default", 1065 | "@mui/material/ListSubheader/listSubheaderClasses.js", 1066 | ], 1067 | [ 1068 | "getListSubheaderUtilityClass", 1069 | "getListSubheaderUtilityClass", 1070 | "@mui/material/ListSubheader/listSubheaderClasses.js", 1071 | ], 1072 | [ 1073 | "Menu", 1074 | "default", 1075 | "@mui/material/Menu/Menu.js", 1076 | ], 1077 | [ 1078 | "menuClasses", 1079 | "default", 1080 | "@mui/material/Menu/menuClasses.js", 1081 | ], 1082 | [ 1083 | "getMenuUtilityClass", 1084 | "getMenuUtilityClass", 1085 | "@mui/material/Menu/menuClasses.js", 1086 | ], 1087 | [ 1088 | "MenuItem", 1089 | "default", 1090 | "@mui/material/MenuItem/MenuItem.js", 1091 | ], 1092 | [ 1093 | "getMenuItemUtilityClass", 1094 | "getMenuItemUtilityClass", 1095 | "@mui/material/MenuItem/menuItemClasses.js", 1096 | ], 1097 | [ 1098 | "menuItemClasses", 1099 | "default", 1100 | "@mui/material/MenuItem/menuItemClasses.js", 1101 | ], 1102 | [ 1103 | "MenuList", 1104 | "default", 1105 | "@mui/material/MenuList/MenuList.js", 1106 | ], 1107 | [ 1108 | "MobileStepper", 1109 | "default", 1110 | "@mui/material/MobileStepper/MobileStepper.js", 1111 | ], 1112 | [ 1113 | "mobileStepperClasses", 1114 | "default", 1115 | "@mui/material/MobileStepper/mobileStepperClasses.js", 1116 | ], 1117 | [ 1118 | "getMobileStepperUtilityClass", 1119 | "getMobileStepperUtilityClass", 1120 | "@mui/material/MobileStepper/mobileStepperClasses.js", 1121 | ], 1122 | [ 1123 | "Modal", 1124 | "default", 1125 | "@mui/material/Modal/Modal.js", 1126 | ], 1127 | [ 1128 | "modalClasses", 1129 | "modalClasses", 1130 | "@mui/material/Modal/Modal.js", 1131 | ], 1132 | [ 1133 | "NativeSelect", 1134 | "default", 1135 | "@mui/material/NativeSelect/NativeSelect.js", 1136 | ], 1137 | [ 1138 | "nativeSelectClasses", 1139 | "default", 1140 | "@mui/material/NativeSelect/nativeSelectClasses.js", 1141 | ], 1142 | [ 1143 | "getNativeSelectUtilityClasses", 1144 | "getNativeSelectUtilityClasses", 1145 | "@mui/material/NativeSelect/nativeSelectClasses.js", 1146 | ], 1147 | [ 1148 | "OutlinedInput", 1149 | "default", 1150 | "@mui/material/OutlinedInput/OutlinedInput.js", 1151 | ], 1152 | [ 1153 | "outlinedInputClasses", 1154 | "default", 1155 | "@mui/material/OutlinedInput/outlinedInputClasses.js", 1156 | ], 1157 | [ 1158 | "getOutlinedInputUtilityClass", 1159 | "getOutlinedInputUtilityClass", 1160 | "@mui/material/OutlinedInput/outlinedInputClasses.js", 1161 | ], 1162 | [ 1163 | "Pagination", 1164 | "default", 1165 | "@mui/material/Pagination/Pagination.js", 1166 | ], 1167 | [ 1168 | "paginationClasses", 1169 | "default", 1170 | "@mui/material/Pagination/paginationClasses.js", 1171 | ], 1172 | [ 1173 | "getPaginationUtilityClass", 1174 | "getPaginationUtilityClass", 1175 | "@mui/material/Pagination/paginationClasses.js", 1176 | ], 1177 | [ 1178 | "PaginationItem", 1179 | "default", 1180 | "@mui/material/PaginationItem/PaginationItem.js", 1181 | ], 1182 | [ 1183 | "paginationItemClasses", 1184 | "default", 1185 | "@mui/material/PaginationItem/paginationItemClasses.js", 1186 | ], 1187 | [ 1188 | "getPaginationItemUtilityClass", 1189 | "getPaginationItemUtilityClass", 1190 | "@mui/material/PaginationItem/paginationItemClasses.js", 1191 | ], 1192 | [ 1193 | "Paper", 1194 | "default", 1195 | "@mui/material/Paper/Paper.js", 1196 | ], 1197 | [ 1198 | "paperClasses", 1199 | "default", 1200 | "@mui/material/Paper/paperClasses.js", 1201 | ], 1202 | [ 1203 | "getPaperUtilityClass", 1204 | "getPaperUtilityClass", 1205 | "@mui/material/Paper/paperClasses.js", 1206 | ], 1207 | [ 1208 | "Popover", 1209 | "default", 1210 | "@mui/material/Popover/Popover.js", 1211 | ], 1212 | [ 1213 | "getOffsetTop", 1214 | "getOffsetTop", 1215 | "@mui/material/Popover/Popover.js", 1216 | ], 1217 | [ 1218 | "getOffsetLeft", 1219 | "getOffsetLeft", 1220 | "@mui/material/Popover/Popover.js", 1221 | ], 1222 | [ 1223 | "popoverClasses", 1224 | "default", 1225 | "@mui/material/Popover/popoverClasses.js", 1226 | ], 1227 | [ 1228 | "getPopoverUtilityClass", 1229 | "getPopoverUtilityClass", 1230 | "@mui/material/Popover/popoverClasses.js", 1231 | ], 1232 | [ 1233 | "Popper", 1234 | "default", 1235 | "@mui/material/Popper/Popper.js", 1236 | ], 1237 | [ 1238 | "Radio", 1239 | "default", 1240 | "@mui/material/Radio/Radio.js", 1241 | ], 1242 | [ 1243 | "radioClasses", 1244 | "default", 1245 | "@mui/material/Radio/radioClasses.js", 1246 | ], 1247 | [ 1248 | "getRadioUtilityClass", 1249 | "getRadioUtilityClass", 1250 | "@mui/material/Radio/radioClasses.js", 1251 | ], 1252 | [ 1253 | "RadioGroup", 1254 | "default", 1255 | "@mui/material/RadioGroup/RadioGroup.js", 1256 | ], 1257 | [ 1258 | "useRadioGroup", 1259 | "default", 1260 | "@mui/material/RadioGroup/useRadioGroup.js", 1261 | ], 1262 | [ 1263 | "Rating", 1264 | "default", 1265 | "@mui/material/Rating/Rating.js", 1266 | ], 1267 | [ 1268 | "ratingClasses", 1269 | "default", 1270 | "@mui/material/Rating/ratingClasses.js", 1271 | ], 1272 | [ 1273 | "getRatingUtilityClass", 1274 | "getRatingUtilityClass", 1275 | "@mui/material/Rating/ratingClasses.js", 1276 | ], 1277 | [ 1278 | "ScopedCssBaseline", 1279 | "default", 1280 | "@mui/material/ScopedCssBaseline/ScopedCssBaseline.js", 1281 | ], 1282 | [ 1283 | "scopedCssBaselineClasses", 1284 | "default", 1285 | "@mui/material/ScopedCssBaseline/scopedCssBaselineClasses.js", 1286 | ], 1287 | [ 1288 | "getScopedCssBaselineUtilityClass", 1289 | "getScopedCssBaselineUtilityClass", 1290 | "@mui/material/ScopedCssBaseline/scopedCssBaselineClasses.js", 1291 | ], 1292 | [ 1293 | "Select", 1294 | "default", 1295 | "@mui/material/Select/Select.js", 1296 | ], 1297 | [ 1298 | "selectClasses", 1299 | "default", 1300 | "@mui/material/Select/selectClasses.js", 1301 | ], 1302 | [ 1303 | "getSelectUtilityClasses", 1304 | "getSelectUtilityClasses", 1305 | "@mui/material/Select/selectClasses.js", 1306 | ], 1307 | [ 1308 | "Skeleton", 1309 | "default", 1310 | "@mui/material/Skeleton/Skeleton.js", 1311 | ], 1312 | [ 1313 | "getSkeletonUtilityClass", 1314 | "getSkeletonUtilityClass", 1315 | "@mui/material/Skeleton/skeletonClasses.js", 1316 | ], 1317 | [ 1318 | "skeletonClasses", 1319 | "default", 1320 | "@mui/material/Skeleton/skeletonClasses.js", 1321 | ], 1322 | [ 1323 | "Slide", 1324 | "default", 1325 | "@mui/material/Slide/Slide.js", 1326 | ], 1327 | [ 1328 | "Slider", 1329 | "default", 1330 | "@mui/material/Slider/Slider.js", 1331 | ], 1332 | [ 1333 | "SliderRoot", 1334 | "SliderRoot", 1335 | "@mui/material/Slider/Slider.js", 1336 | ], 1337 | [ 1338 | "SliderRail", 1339 | "SliderRail", 1340 | "@mui/material/Slider/Slider.js", 1341 | ], 1342 | [ 1343 | "SliderTrack", 1344 | "SliderTrack", 1345 | "@mui/material/Slider/Slider.js", 1346 | ], 1347 | [ 1348 | "SliderThumb", 1349 | "SliderThumb", 1350 | "@mui/material/Slider/Slider.js", 1351 | ], 1352 | [ 1353 | "SliderValueLabel", 1354 | "StyledSliderValueLabel", 1355 | "@mui/material/Slider/Slider.js", 1356 | ], 1357 | [ 1358 | "SliderMark", 1359 | "SliderMark", 1360 | "@mui/material/Slider/Slider.js", 1361 | ], 1362 | [ 1363 | "SliderMarkLabel", 1364 | "SliderMarkLabel", 1365 | "@mui/material/Slider/Slider.js", 1366 | ], 1367 | [ 1368 | "sliderClasses", 1369 | "default", 1370 | "@mui/material/Slider/sliderClasses.js", 1371 | ], 1372 | [ 1373 | "getSliderUtilityClass", 1374 | "getSliderUtilityClass", 1375 | "@mui/material/Slider/sliderClasses.js", 1376 | ], 1377 | [ 1378 | "Snackbar", 1379 | "default", 1380 | "@mui/material/Snackbar/Snackbar.js", 1381 | ], 1382 | [ 1383 | "snackbarClasses", 1384 | "default", 1385 | "@mui/material/Snackbar/snackbarClasses.js", 1386 | ], 1387 | [ 1388 | "getSnackbarUtilityClass", 1389 | "getSnackbarUtilityClass", 1390 | "@mui/material/Snackbar/snackbarClasses.js", 1391 | ], 1392 | [ 1393 | "SnackbarContent", 1394 | "default", 1395 | "@mui/material/SnackbarContent/SnackbarContent.js", 1396 | ], 1397 | [ 1398 | "snackbarContentClasses", 1399 | "default", 1400 | "@mui/material/SnackbarContent/snackbarContentClasses.js", 1401 | ], 1402 | [ 1403 | "getSnackbarContentUtilityClass", 1404 | "getSnackbarContentUtilityClass", 1405 | "@mui/material/SnackbarContent/snackbarContentClasses.js", 1406 | ], 1407 | [ 1408 | "SpeedDial", 1409 | "default", 1410 | "@mui/material/SpeedDial/SpeedDial.js", 1411 | ], 1412 | [ 1413 | "speedDialClasses", 1414 | "default", 1415 | "@mui/material/SpeedDial/speedDialClasses.js", 1416 | ], 1417 | [ 1418 | "getSpeedDialUtilityClass", 1419 | "getSpeedDialUtilityClass", 1420 | "@mui/material/SpeedDial/speedDialClasses.js", 1421 | ], 1422 | [ 1423 | "SpeedDialAction", 1424 | "default", 1425 | "@mui/material/SpeedDialAction/SpeedDialAction.js", 1426 | ], 1427 | [ 1428 | "speedDialActionClasses", 1429 | "default", 1430 | "@mui/material/SpeedDialAction/speedDialActionClasses.js", 1431 | ], 1432 | [ 1433 | "getSpeedDialActionUtilityClass", 1434 | "getSpeedDialActionUtilityClass", 1435 | "@mui/material/SpeedDialAction/speedDialActionClasses.js", 1436 | ], 1437 | [ 1438 | "SpeedDialIcon", 1439 | "default", 1440 | "@mui/material/SpeedDialIcon/SpeedDialIcon.js", 1441 | ], 1442 | [ 1443 | "speedDialIconClasses", 1444 | "default", 1445 | "@mui/material/SpeedDialIcon/speedDialIconClasses.js", 1446 | ], 1447 | [ 1448 | "getSpeedDialIconUtilityClass", 1449 | "getSpeedDialIconUtilityClass", 1450 | "@mui/material/SpeedDialIcon/speedDialIconClasses.js", 1451 | ], 1452 | [ 1453 | "Stack", 1454 | "default", 1455 | "@mui/material/Stack/Stack.js", 1456 | ], 1457 | [ 1458 | "stackClasses", 1459 | "default", 1460 | "@mui/material/Stack/stackClasses.js", 1461 | ], 1462 | [ 1463 | "Step", 1464 | "default", 1465 | "@mui/material/Step/Step.js", 1466 | ], 1467 | [ 1468 | "stepClasses", 1469 | "default", 1470 | "@mui/material/Step/stepClasses.js", 1471 | ], 1472 | [ 1473 | "getStepUtilityClass", 1474 | "getStepUtilityClass", 1475 | "@mui/material/Step/stepClasses.js", 1476 | ], 1477 | [ 1478 | "StepContext", 1479 | "default", 1480 | "@mui/material/Step/StepContext.js", 1481 | ], 1482 | [ 1483 | "useStepContext", 1484 | "useStepContext", 1485 | "@mui/material/Step/StepContext.js", 1486 | ], 1487 | [ 1488 | "StepButton", 1489 | "default", 1490 | "@mui/material/StepButton/StepButton.js", 1491 | ], 1492 | [ 1493 | "stepButtonClasses", 1494 | "default", 1495 | "@mui/material/StepButton/stepButtonClasses.js", 1496 | ], 1497 | [ 1498 | "getStepButtonUtilityClass", 1499 | "getStepButtonUtilityClass", 1500 | "@mui/material/StepButton/stepButtonClasses.js", 1501 | ], 1502 | [ 1503 | "StepConnector", 1504 | "default", 1505 | "@mui/material/StepConnector/StepConnector.js", 1506 | ], 1507 | [ 1508 | "stepConnectorClasses", 1509 | "default", 1510 | "@mui/material/StepConnector/stepConnectorClasses.js", 1511 | ], 1512 | [ 1513 | "getStepConnectorUtilityClass", 1514 | "getStepConnectorUtilityClass", 1515 | "@mui/material/StepConnector/stepConnectorClasses.js", 1516 | ], 1517 | [ 1518 | "StepContent", 1519 | "default", 1520 | "@mui/material/StepContent/StepContent.js", 1521 | ], 1522 | [ 1523 | "stepContentClasses", 1524 | "default", 1525 | "@mui/material/StepContent/stepContentClasses.js", 1526 | ], 1527 | [ 1528 | "getStepContentUtilityClass", 1529 | "getStepContentUtilityClass", 1530 | "@mui/material/StepContent/stepContentClasses.js", 1531 | ], 1532 | [ 1533 | "StepIcon", 1534 | "default", 1535 | "@mui/material/StepIcon/StepIcon.js", 1536 | ], 1537 | [ 1538 | "stepIconClasses", 1539 | "default", 1540 | "@mui/material/StepIcon/stepIconClasses.js", 1541 | ], 1542 | [ 1543 | "getStepIconUtilityClass", 1544 | "getStepIconUtilityClass", 1545 | "@mui/material/StepIcon/stepIconClasses.js", 1546 | ], 1547 | [ 1548 | "StepLabel", 1549 | "default", 1550 | "@mui/material/StepLabel/StepLabel.js", 1551 | ], 1552 | [ 1553 | "stepLabelClasses", 1554 | "default", 1555 | "@mui/material/StepLabel/stepLabelClasses.js", 1556 | ], 1557 | [ 1558 | "getStepLabelUtilityClass", 1559 | "getStepLabelUtilityClass", 1560 | "@mui/material/StepLabel/stepLabelClasses.js", 1561 | ], 1562 | [ 1563 | "Stepper", 1564 | "default", 1565 | "@mui/material/Stepper/Stepper.js", 1566 | ], 1567 | [ 1568 | "stepperClasses", 1569 | "default", 1570 | "@mui/material/Stepper/stepperClasses.js", 1571 | ], 1572 | [ 1573 | "getStepperUtilityClass", 1574 | "getStepperUtilityClass", 1575 | "@mui/material/Stepper/stepperClasses.js", 1576 | ], 1577 | [ 1578 | "StepperContext", 1579 | "default", 1580 | "@mui/material/Stepper/StepperContext.js", 1581 | ], 1582 | [ 1583 | "useStepperContext", 1584 | "useStepperContext", 1585 | "@mui/material/Stepper/StepperContext.js", 1586 | ], 1587 | [ 1588 | "adaptV4Theme", 1589 | "default", 1590 | "@mui/material/styles/adaptV4Theme.js", 1591 | ], 1592 | [ 1593 | "unstable_createMuiStrictModeTheme", 1594 | "default", 1595 | "@mui/material/styles/createMuiStrictModeTheme.js", 1596 | ], 1597 | [ 1598 | "createStyles", 1599 | "default", 1600 | "@mui/material/styles/createStyles.js", 1601 | ], 1602 | [ 1603 | "createMuiTheme", 1604 | "createMuiTheme", 1605 | "@mui/material/styles/createTheme.js", 1606 | ], 1607 | [ 1608 | "createTheme", 1609 | "default", 1610 | "@mui/material/styles/createTheme.js", 1611 | ], 1612 | [ 1613 | "easing", 1614 | "easing", 1615 | "@mui/material/styles/createTransitions.js", 1616 | ], 1617 | [ 1618 | "duration", 1619 | "duration", 1620 | "@mui/material/styles/createTransitions.js", 1621 | ], 1622 | [ 1623 | "private_createTypography", 1624 | "default", 1625 | "@mui/material/styles/createTypography.js", 1626 | ], 1627 | [ 1628 | "unstable_getUnit", 1629 | "getUnit", 1630 | "@mui/material/styles/cssUtils.js", 1631 | ], 1632 | [ 1633 | "unstable_toUnitless", 1634 | "toUnitless", 1635 | "@mui/material/styles/cssUtils.js", 1636 | ], 1637 | [ 1638 | "useColorScheme", 1639 | "useColorScheme", 1640 | "@mui/material/styles/CssVarsProvider.js", 1641 | ], 1642 | [ 1643 | "getInitColorSchemeScript", 1644 | "getInitColorSchemeScript", 1645 | "@mui/material/styles/CssVarsProvider.js", 1646 | ], 1647 | [ 1648 | "shouldSkipGeneratingVar", 1649 | "shouldSkipGeneratingVar", 1650 | "@mui/material/styles/CssVarsProvider.js", 1651 | ], 1652 | [ 1653 | "Experimental_CssVarsProvider", 1654 | "CssVarsProvider", 1655 | "@mui/material/styles/CssVarsProvider.js", 1656 | ], 1657 | [ 1658 | "private_excludeVariablesFromRoot", 1659 | "default", 1660 | "@mui/material/styles/excludeVariablesFromRoot.js", 1661 | ], 1662 | [ 1663 | "experimental_extendTheme", 1664 | "default", 1665 | "@mui/material/styles/experimental_extendTheme.js", 1666 | ], 1667 | [ 1668 | "getOverlayAlpha", 1669 | "default", 1670 | "@mui/material/styles/getOverlayAlpha.js", 1671 | ], 1672 | [ 1673 | "experimental_sx", 1674 | "experimental_sx", 1675 | "@mui/material/styles/index.js", 1676 | ], 1677 | [ 1678 | "makeStyles", 1679 | "default", 1680 | "@mui/material/styles/makeStyles.js", 1681 | ], 1682 | [ 1683 | "responsiveFontSizes", 1684 | "default", 1685 | "@mui/material/styles/responsiveFontSizes.js", 1686 | ], 1687 | [ 1688 | "styled", 1689 | "default", 1690 | "@mui/material/styles/styled.js", 1691 | ], 1692 | [ 1693 | "experimentalStyled", 1694 | "default", 1695 | "@mui/material/styles/styled.js", 1696 | ], 1697 | [ 1698 | "useTheme", 1699 | "default", 1700 | "@mui/material/styles/useTheme.js", 1701 | ], 1702 | [ 1703 | "useThemeProps", 1704 | "default", 1705 | "@mui/material/styles/useThemeProps.js", 1706 | ], 1707 | [ 1708 | "withStyles", 1709 | "default", 1710 | "@mui/material/styles/withStyles.js", 1711 | ], 1712 | [ 1713 | "withTheme", 1714 | "default", 1715 | "@mui/material/styles/withTheme.js", 1716 | ], 1717 | [ 1718 | "SvgIcon", 1719 | "default", 1720 | "@mui/material/SvgIcon/SvgIcon.js", 1721 | ], 1722 | [ 1723 | "svgIconClasses", 1724 | "default", 1725 | "@mui/material/SvgIcon/svgIconClasses.js", 1726 | ], 1727 | [ 1728 | "getSvgIconUtilityClass", 1729 | "getSvgIconUtilityClass", 1730 | "@mui/material/SvgIcon/svgIconClasses.js", 1731 | ], 1732 | [ 1733 | "SwipeableDrawer", 1734 | "default", 1735 | "@mui/material/SwipeableDrawer/SwipeableDrawer.js", 1736 | ], 1737 | [ 1738 | "Switch", 1739 | "default", 1740 | "@mui/material/Switch/Switch.js", 1741 | ], 1742 | [ 1743 | "switchClasses", 1744 | "default", 1745 | "@mui/material/Switch/switchClasses.js", 1746 | ], 1747 | [ 1748 | "getSwitchUtilityClass", 1749 | "getSwitchUtilityClass", 1750 | "@mui/material/Switch/switchClasses.js", 1751 | ], 1752 | [ 1753 | "Tab", 1754 | "default", 1755 | "@mui/material/Tab/Tab.js", 1756 | ], 1757 | [ 1758 | "tabClasses", 1759 | "default", 1760 | "@mui/material/Tab/tabClasses.js", 1761 | ], 1762 | [ 1763 | "getTabUtilityClass", 1764 | "getTabUtilityClass", 1765 | "@mui/material/Tab/tabClasses.js", 1766 | ], 1767 | [ 1768 | "Table", 1769 | "default", 1770 | "@mui/material/Table/Table.js", 1771 | ], 1772 | [ 1773 | "tableClasses", 1774 | "default", 1775 | "@mui/material/Table/tableClasses.js", 1776 | ], 1777 | [ 1778 | "getTableUtilityClass", 1779 | "getTableUtilityClass", 1780 | "@mui/material/Table/tableClasses.js", 1781 | ], 1782 | [ 1783 | "TableBody", 1784 | "default", 1785 | "@mui/material/TableBody/TableBody.js", 1786 | ], 1787 | [ 1788 | "tableBodyClasses", 1789 | "default", 1790 | "@mui/material/TableBody/tableBodyClasses.js", 1791 | ], 1792 | [ 1793 | "getTableBodyUtilityClass", 1794 | "getTableBodyUtilityClass", 1795 | "@mui/material/TableBody/tableBodyClasses.js", 1796 | ], 1797 | [ 1798 | "TableCell", 1799 | "default", 1800 | "@mui/material/TableCell/TableCell.js", 1801 | ], 1802 | [ 1803 | "tableCellClasses", 1804 | "default", 1805 | "@mui/material/TableCell/tableCellClasses.js", 1806 | ], 1807 | [ 1808 | "getTableCellUtilityClass", 1809 | "getTableCellUtilityClass", 1810 | "@mui/material/TableCell/tableCellClasses.js", 1811 | ], 1812 | [ 1813 | "TableContainer", 1814 | "default", 1815 | "@mui/material/TableContainer/TableContainer.js", 1816 | ], 1817 | [ 1818 | "tableContainerClasses", 1819 | "default", 1820 | "@mui/material/TableContainer/tableContainerClasses.js", 1821 | ], 1822 | [ 1823 | "getTableContainerUtilityClass", 1824 | "getTableContainerUtilityClass", 1825 | "@mui/material/TableContainer/tableContainerClasses.js", 1826 | ], 1827 | [ 1828 | "TableFooter", 1829 | "default", 1830 | "@mui/material/TableFooter/TableFooter.js", 1831 | ], 1832 | [ 1833 | "tableFooterClasses", 1834 | "default", 1835 | "@mui/material/TableFooter/tableFooterClasses.js", 1836 | ], 1837 | [ 1838 | "getTableFooterUtilityClass", 1839 | "getTableFooterUtilityClass", 1840 | "@mui/material/TableFooter/tableFooterClasses.js", 1841 | ], 1842 | [ 1843 | "TableHead", 1844 | "default", 1845 | "@mui/material/TableHead/TableHead.js", 1846 | ], 1847 | [ 1848 | "tableHeadClasses", 1849 | "default", 1850 | "@mui/material/TableHead/tableHeadClasses.js", 1851 | ], 1852 | [ 1853 | "getTableHeadUtilityClass", 1854 | "getTableHeadUtilityClass", 1855 | "@mui/material/TableHead/tableHeadClasses.js", 1856 | ], 1857 | [ 1858 | "TablePagination", 1859 | "default", 1860 | "@mui/material/TablePagination/TablePagination.js", 1861 | ], 1862 | [ 1863 | "tablePaginationClasses", 1864 | "default", 1865 | "@mui/material/TablePagination/tablePaginationClasses.js", 1866 | ], 1867 | [ 1868 | "getTablePaginationUtilityClass", 1869 | "getTablePaginationUtilityClass", 1870 | "@mui/material/TablePagination/tablePaginationClasses.js", 1871 | ], 1872 | [ 1873 | "TableRow", 1874 | "default", 1875 | "@mui/material/TableRow/TableRow.js", 1876 | ], 1877 | [ 1878 | "tableRowClasses", 1879 | "default", 1880 | "@mui/material/TableRow/tableRowClasses.js", 1881 | ], 1882 | [ 1883 | "getTableRowUtilityClass", 1884 | "getTableRowUtilityClass", 1885 | "@mui/material/TableRow/tableRowClasses.js", 1886 | ], 1887 | [ 1888 | "TableSortLabel", 1889 | "default", 1890 | "@mui/material/TableSortLabel/TableSortLabel.js", 1891 | ], 1892 | [ 1893 | "tableSortLabelClasses", 1894 | "default", 1895 | "@mui/material/TableSortLabel/tableSortLabelClasses.js", 1896 | ], 1897 | [ 1898 | "getTableSortLabelUtilityClass", 1899 | "getTableSortLabelUtilityClass", 1900 | "@mui/material/TableSortLabel/tableSortLabelClasses.js", 1901 | ], 1902 | [ 1903 | "Tabs", 1904 | "default", 1905 | "@mui/material/Tabs/Tabs.js", 1906 | ], 1907 | [ 1908 | "tabsClasses", 1909 | "default", 1910 | "@mui/material/Tabs/tabsClasses.js", 1911 | ], 1912 | [ 1913 | "getTabsUtilityClass", 1914 | "getTabsUtilityClass", 1915 | "@mui/material/Tabs/tabsClasses.js", 1916 | ], 1917 | [ 1918 | "TabScrollButton", 1919 | "default", 1920 | "@mui/material/TabScrollButton/TabScrollButton.js", 1921 | ], 1922 | [ 1923 | "tabScrollButtonClasses", 1924 | "default", 1925 | "@mui/material/TabScrollButton/tabScrollButtonClasses.js", 1926 | ], 1927 | [ 1928 | "getTabScrollButtonUtilityClass", 1929 | "getTabScrollButtonUtilityClass", 1930 | "@mui/material/TabScrollButton/tabScrollButtonClasses.js", 1931 | ], 1932 | [ 1933 | "TextField", 1934 | "default", 1935 | "@mui/material/TextField/TextField.js", 1936 | ], 1937 | [ 1938 | "textFieldClasses", 1939 | "default", 1940 | "@mui/material/TextField/textFieldClasses.js", 1941 | ], 1942 | [ 1943 | "getTextFieldUtilityClass", 1944 | "getTextFieldUtilityClass", 1945 | "@mui/material/TextField/textFieldClasses.js", 1946 | ], 1947 | [ 1948 | "ToggleButton", 1949 | "default", 1950 | "@mui/material/ToggleButton/ToggleButton.js", 1951 | ], 1952 | [ 1953 | "toggleButtonClasses", 1954 | "default", 1955 | "@mui/material/ToggleButton/toggleButtonClasses.js", 1956 | ], 1957 | [ 1958 | "getToggleButtonUtilityClass", 1959 | "getToggleButtonUtilityClass", 1960 | "@mui/material/ToggleButton/toggleButtonClasses.js", 1961 | ], 1962 | [ 1963 | "ToggleButtonGroup", 1964 | "default", 1965 | "@mui/material/ToggleButtonGroup/ToggleButtonGroup.js", 1966 | ], 1967 | [ 1968 | "toggleButtonGroupClasses", 1969 | "default", 1970 | "@mui/material/ToggleButtonGroup/toggleButtonGroupClasses.js", 1971 | ], 1972 | [ 1973 | "getToggleButtonGroupUtilityClass", 1974 | "getToggleButtonGroupUtilityClass", 1975 | "@mui/material/ToggleButtonGroup/toggleButtonGroupClasses.js", 1976 | ], 1977 | [ 1978 | "Toolbar", 1979 | "default", 1980 | "@mui/material/Toolbar/Toolbar.js", 1981 | ], 1982 | [ 1983 | "toolbarClasses", 1984 | "default", 1985 | "@mui/material/Toolbar/toolbarClasses.js", 1986 | ], 1987 | [ 1988 | "getToolbarUtilityClass", 1989 | "getToolbarUtilityClass", 1990 | "@mui/material/Toolbar/toolbarClasses.js", 1991 | ], 1992 | [ 1993 | "Tooltip", 1994 | "default", 1995 | "@mui/material/Tooltip/Tooltip.js", 1996 | ], 1997 | [ 1998 | "tooltipClasses", 1999 | "default", 2000 | "@mui/material/Tooltip/tooltipClasses.js", 2001 | ], 2002 | [ 2003 | "getTooltipUtilityClass", 2004 | "getTooltipUtilityClass", 2005 | "@mui/material/Tooltip/tooltipClasses.js", 2006 | ], 2007 | [ 2008 | "Typography", 2009 | "default", 2010 | "@mui/material/Typography/Typography.js", 2011 | ], 2012 | [ 2013 | "typographyClasses", 2014 | "default", 2015 | "@mui/material/Typography/typographyClasses.js", 2016 | ], 2017 | [ 2018 | "getTypographyUtilityClass", 2019 | "getTypographyUtilityClass", 2020 | "@mui/material/Typography/typographyClasses.js", 2021 | ], 2022 | [ 2023 | "Unstable_Grid2", 2024 | "default", 2025 | "@mui/material/Unstable_Grid2/Grid2.js", 2026 | ], 2027 | [ 2028 | "grid2Classes", 2029 | "default", 2030 | "@mui/material/Unstable_Grid2/grid2Classes.js", 2031 | ], 2032 | [ 2033 | "getGrid2UtilityClass", 2034 | "getGrid2UtilityClass", 2035 | "@mui/material/Unstable_Grid2/grid2Classes.js", 2036 | ], 2037 | [ 2038 | "useMediaQuery", 2039 | "default", 2040 | "@mui/material/useMediaQuery/useMediaQuery.js", 2041 | ], 2042 | [ 2043 | "usePagination", 2044 | "default", 2045 | "@mui/material/usePagination/usePagination.js", 2046 | ], 2047 | [ 2048 | "useScrollTrigger", 2049 | "default", 2050 | "@mui/material/useScrollTrigger/useScrollTrigger.js", 2051 | ], 2052 | [ 2053 | "capitalize", 2054 | "default", 2055 | "@mui/material/utils/capitalize.js", 2056 | ], 2057 | [ 2058 | "createChainedFunction", 2059 | "default", 2060 | "@mui/material/utils/createChainedFunction.js", 2061 | ], 2062 | [ 2063 | "createSvgIcon", 2064 | "default", 2065 | "@mui/material/utils/createSvgIcon.js", 2066 | ], 2067 | [ 2068 | "debounce", 2069 | "default", 2070 | "@mui/material/utils/debounce.js", 2071 | ], 2072 | [ 2073 | "deprecatedPropType", 2074 | "default", 2075 | "@mui/material/utils/deprecatedPropType.js", 2076 | ], 2077 | [ 2078 | "unstable_ClassNameGenerator", 2079 | "unstable_ClassNameGenerator", 2080 | "@mui/material/utils/index.js", 2081 | ], 2082 | [ 2083 | "isMuiElement", 2084 | "default", 2085 | "@mui/material/utils/isMuiElement.js", 2086 | ], 2087 | [ 2088 | "ownerDocument", 2089 | "default", 2090 | "@mui/material/utils/ownerDocument.js", 2091 | ], 2092 | [ 2093 | "ownerWindow", 2094 | "default", 2095 | "@mui/material/utils/ownerWindow.js", 2096 | ], 2097 | [ 2098 | "requirePropFactory", 2099 | "default", 2100 | "@mui/material/utils/requirePropFactory.js", 2101 | ], 2102 | [ 2103 | "setRef", 2104 | "default", 2105 | "@mui/material/utils/setRef.js", 2106 | ], 2107 | [ 2108 | "unsupportedProp", 2109 | "default", 2110 | "@mui/material/utils/unsupportedProp.js", 2111 | ], 2112 | [ 2113 | "useControlled", 2114 | "default", 2115 | "@mui/material/utils/useControlled.js", 2116 | ], 2117 | [ 2118 | "unstable_useEnhancedEffect", 2119 | "default", 2120 | "@mui/material/utils/useEnhancedEffect.js", 2121 | ], 2122 | [ 2123 | "useEventCallback", 2124 | "default", 2125 | "@mui/material/utils/useEventCallback.js", 2126 | ], 2127 | [ 2128 | "useForkRef", 2129 | "default", 2130 | "@mui/material/utils/useForkRef.js", 2131 | ], 2132 | [ 2133 | "unstable_useId", 2134 | "default", 2135 | "@mui/material/utils/useId.js", 2136 | ], 2137 | [ 2138 | "useIsFocusVisible", 2139 | "default", 2140 | "@mui/material/utils/useIsFocusVisible.js", 2141 | ], 2142 | [ 2143 | "Zoom", 2144 | "default", 2145 | "@mui/material/Zoom/Zoom.js", 2146 | ], 2147 | [ 2148 | "hexToRgb", 2149 | "hexToRgb", 2150 | "@mui/system", 2151 | ], 2152 | [ 2153 | "rgbToHex", 2154 | "rgbToHex", 2155 | "@mui/system", 2156 | ], 2157 | [ 2158 | "hslToRgb", 2159 | "hslToRgb", 2160 | "@mui/system", 2161 | ], 2162 | [ 2163 | "decomposeColor", 2164 | "decomposeColor", 2165 | "@mui/system", 2166 | ], 2167 | [ 2168 | "recomposeColor", 2169 | "recomposeColor", 2170 | "@mui/system", 2171 | ], 2172 | [ 2173 | "getContrastRatio", 2174 | "getContrastRatio", 2175 | "@mui/system", 2176 | ], 2177 | [ 2178 | "getLuminance", 2179 | "getLuminance", 2180 | "@mui/system", 2181 | ], 2182 | [ 2183 | "emphasize", 2184 | "emphasize", 2185 | "@mui/system", 2186 | ], 2187 | [ 2188 | "alpha", 2189 | "alpha", 2190 | "@mui/system", 2191 | ], 2192 | [ 2193 | "darken", 2194 | "darken", 2195 | "@mui/system", 2196 | ], 2197 | [ 2198 | "lighten", 2199 | "lighten", 2200 | "@mui/system", 2201 | ], 2202 | [ 2203 | "css", 2204 | "css", 2205 | "@mui/system", 2206 | ], 2207 | [ 2208 | "keyframes", 2209 | "keyframes", 2210 | "@mui/system", 2211 | ], 2212 | [ 2213 | "ThemeProvider", 2214 | "ThemeProvider", 2215 | "@mui/system", 2216 | ], 2217 | [ 2218 | "StyledEngineProvider", 2219 | "StyledEngineProvider", 2220 | "@mui/system", 2221 | ], 2222 | [ 2223 | "generateUtilityClass", 2224 | "unstable_generateUtilityClass", 2225 | "@mui/utils", 2226 | ], 2227 | [ 2228 | "generateUtilityClasses", 2229 | "unstable_generateUtilityClasses", 2230 | "@mui/utils", 2231 | ], 2232 | ] 2233 | `); 2234 | }); 2235 | -------------------------------------------------------------------------------- /test/@mui/material/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { runPlugin } from "../../utils.js"; 3 | 4 | test("transformation", () => { 5 | expect( 6 | runPlugin( 7 | [ 8 | 'import Button, { ButtonProps } from "@mui/material/Button";', 9 | 'import { colors, ThemeProvider, useAutocomplete } from "@mui/material";', 10 | ].join("\n"), 11 | ["@mui/material", "@mui/material/Button"] 12 | ) 13 | ).toMatchInlineSnapshot(` 14 | import Button from "@mui/material/Button/Button.js"; 15 | import { ButtonProps } from "@mui/material/Button"; 16 | import * as colors from "@mui/material/colors/index.js"; 17 | import { ThemeProvider } from "@mui/system"; 18 | import useAutocomplete from "@mui/base/useAutocomplete"; 19 | `); 20 | }); 21 | -------------------------------------------------------------------------------- /test/@mui/system/exports.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { testExports } from "../../utils.js"; 3 | 4 | test("exports", () => { 5 | expect(testExports("@mui/system")).toMatchInlineSnapshot(` 6 | [ 7 | [ 8 | "css", 9 | "css", 10 | "@mui/styled-engine", 11 | ], 12 | [ 13 | "keyframes", 14 | "keyframes", 15 | "@mui/styled-engine", 16 | ], 17 | [ 18 | "GlobalStyles", 19 | "GlobalStyles", 20 | "@mui/styled-engine", 21 | ], 22 | [ 23 | "StyledEngineProvider", 24 | "StyledEngineProvider", 25 | "@mui/styled-engine", 26 | ], 27 | [ 28 | "borders", 29 | "default", 30 | "@mui/system/esm/borders.js", 31 | ], 32 | [ 33 | "borderTransform", 34 | "borderTransform", 35 | "@mui/system/esm/borders.js", 36 | ], 37 | [ 38 | "border", 39 | "border", 40 | "@mui/system/esm/borders.js", 41 | ], 42 | [ 43 | "borderTop", 44 | "borderTop", 45 | "@mui/system/esm/borders.js", 46 | ], 47 | [ 48 | "borderRight", 49 | "borderRight", 50 | "@mui/system/esm/borders.js", 51 | ], 52 | [ 53 | "borderBottom", 54 | "borderBottom", 55 | "@mui/system/esm/borders.js", 56 | ], 57 | [ 58 | "borderLeft", 59 | "borderLeft", 60 | "@mui/system/esm/borders.js", 61 | ], 62 | [ 63 | "borderColor", 64 | "borderColor", 65 | "@mui/system/esm/borders.js", 66 | ], 67 | [ 68 | "borderTopColor", 69 | "borderTopColor", 70 | "@mui/system/esm/borders.js", 71 | ], 72 | [ 73 | "borderRightColor", 74 | "borderRightColor", 75 | "@mui/system/esm/borders.js", 76 | ], 77 | [ 78 | "borderBottomColor", 79 | "borderBottomColor", 80 | "@mui/system/esm/borders.js", 81 | ], 82 | [ 83 | "borderLeftColor", 84 | "borderLeftColor", 85 | "@mui/system/esm/borders.js", 86 | ], 87 | [ 88 | "borderRadius", 89 | "borderRadius", 90 | "@mui/system/esm/borders.js", 91 | ], 92 | [ 93 | "Box", 94 | "default", 95 | "@mui/system/esm/Box/Box.js", 96 | ], 97 | [ 98 | "breakpoints", 99 | "default", 100 | "@mui/system/esm/breakpoints.js", 101 | ], 102 | [ 103 | "handleBreakpoints", 104 | "handleBreakpoints", 105 | "@mui/system/esm/breakpoints.js", 106 | ], 107 | [ 108 | "mergeBreakpointsInOrder", 109 | "mergeBreakpointsInOrder", 110 | "@mui/system/esm/breakpoints.js", 111 | ], 112 | [ 113 | "unstable_resolveBreakpointValues", 114 | "resolveBreakpointValues", 115 | "@mui/system/esm/breakpoints.js", 116 | ], 117 | [ 118 | "hexToRgb", 119 | "hexToRgb", 120 | "@mui/system/esm/colorManipulator.js", 121 | ], 122 | [ 123 | "decomposeColor", 124 | "decomposeColor", 125 | "@mui/system/esm/colorManipulator.js", 126 | ], 127 | [ 128 | "colorChannel", 129 | "colorChannel", 130 | "@mui/system/esm/colorManipulator.js", 131 | ], 132 | [ 133 | "private_safeColorChannel", 134 | "private_safeColorChannel", 135 | "@mui/system/esm/colorManipulator.js", 136 | ], 137 | [ 138 | "recomposeColor", 139 | "recomposeColor", 140 | "@mui/system/esm/colorManipulator.js", 141 | ], 142 | [ 143 | "rgbToHex", 144 | "rgbToHex", 145 | "@mui/system/esm/colorManipulator.js", 146 | ], 147 | [ 148 | "hslToRgb", 149 | "hslToRgb", 150 | "@mui/system/esm/colorManipulator.js", 151 | ], 152 | [ 153 | "getLuminance", 154 | "getLuminance", 155 | "@mui/system/esm/colorManipulator.js", 156 | ], 157 | [ 158 | "getContrastRatio", 159 | "getContrastRatio", 160 | "@mui/system/esm/colorManipulator.js", 161 | ], 162 | [ 163 | "alpha", 164 | "alpha", 165 | "@mui/system/esm/colorManipulator.js", 166 | ], 167 | [ 168 | "private_safeAlpha", 169 | "private_safeAlpha", 170 | "@mui/system/esm/colorManipulator.js", 171 | ], 172 | [ 173 | "darken", 174 | "darken", 175 | "@mui/system/esm/colorManipulator.js", 176 | ], 177 | [ 178 | "private_safeDarken", 179 | "private_safeDarken", 180 | "@mui/system/esm/colorManipulator.js", 181 | ], 182 | [ 183 | "lighten", 184 | "lighten", 185 | "@mui/system/esm/colorManipulator.js", 186 | ], 187 | [ 188 | "private_safeLighten", 189 | "private_safeLighten", 190 | "@mui/system/esm/colorManipulator.js", 191 | ], 192 | [ 193 | "emphasize", 194 | "emphasize", 195 | "@mui/system/esm/colorManipulator.js", 196 | ], 197 | [ 198 | "private_safeEmphasize", 199 | "private_safeEmphasize", 200 | "@mui/system/esm/colorManipulator.js", 201 | ], 202 | [ 203 | "compose", 204 | "default", 205 | "@mui/system/esm/compose.js", 206 | ], 207 | [ 208 | "Container", 209 | "default", 210 | "@mui/system/esm/Container/Container.js", 211 | ], 212 | [ 213 | "containerClasses", 214 | "default", 215 | "@mui/system/esm/Container/containerClasses.js", 216 | ], 217 | [ 218 | "getContainerUtilityClass", 219 | "getContainerUtilityClass", 220 | "@mui/system/esm/Container/containerClasses.js", 221 | ], 222 | [ 223 | "createContainer", 224 | "default", 225 | "@mui/system/esm/Container/createContainer.js", 226 | ], 227 | [ 228 | "createBox", 229 | "default", 230 | "@mui/system/esm/createBox.js", 231 | ], 232 | [ 233 | "createStyled", 234 | "default", 235 | "@mui/system/esm/createStyled.js", 236 | ], 237 | [ 238 | "shouldForwardProp", 239 | "shouldForwardProp", 240 | "@mui/system/esm/createStyled.js", 241 | ], 242 | [ 243 | "systemDefaultTheme", 244 | "systemDefaultTheme", 245 | "@mui/system/esm/createStyled.js", 246 | ], 247 | [ 248 | "createBreakpoints", 249 | "default", 250 | "@mui/system/esm/createTheme/createBreakpoints.js", 251 | ], 252 | [ 253 | "createSpacing", 254 | "default", 255 | "@mui/system/esm/createTheme/createSpacing.js", 256 | ], 257 | [ 258 | "createTheme", 259 | "default", 260 | "@mui/system/esm/createTheme/createTheme.js", 261 | ], 262 | [ 263 | "shape", 264 | "default", 265 | "@mui/system/esm/createTheme/shape.js", 266 | ], 267 | [ 268 | "grid", 269 | "default", 270 | "@mui/system/esm/cssGrid.js", 271 | ], 272 | [ 273 | "gap", 274 | "gap", 275 | "@mui/system/esm/cssGrid.js", 276 | ], 277 | [ 278 | "columnGap", 279 | "columnGap", 280 | "@mui/system/esm/cssGrid.js", 281 | ], 282 | [ 283 | "rowGap", 284 | "rowGap", 285 | "@mui/system/esm/cssGrid.js", 286 | ], 287 | [ 288 | "gridColumn", 289 | "gridColumn", 290 | "@mui/system/esm/cssGrid.js", 291 | ], 292 | [ 293 | "gridRow", 294 | "gridRow", 295 | "@mui/system/esm/cssGrid.js", 296 | ], 297 | [ 298 | "gridAutoFlow", 299 | "gridAutoFlow", 300 | "@mui/system/esm/cssGrid.js", 301 | ], 302 | [ 303 | "gridAutoColumns", 304 | "gridAutoColumns", 305 | "@mui/system/esm/cssGrid.js", 306 | ], 307 | [ 308 | "gridAutoRows", 309 | "gridAutoRows", 310 | "@mui/system/esm/cssGrid.js", 311 | ], 312 | [ 313 | "gridTemplateColumns", 314 | "gridTemplateColumns", 315 | "@mui/system/esm/cssGrid.js", 316 | ], 317 | [ 318 | "gridTemplateRows", 319 | "gridTemplateRows", 320 | "@mui/system/esm/cssGrid.js", 321 | ], 322 | [ 323 | "gridTemplateAreas", 324 | "gridTemplateAreas", 325 | "@mui/system/esm/cssGrid.js", 326 | ], 327 | [ 328 | "gridArea", 329 | "gridArea", 330 | "@mui/system/esm/cssGrid.js", 331 | ], 332 | [ 333 | "unstable_createCssVarsProvider", 334 | "default", 335 | "@mui/system/esm/cssVars/createCssVarsProvider.js", 336 | ], 337 | [ 338 | "unstable_createGetCssVar", 339 | "default", 340 | "@mui/system/esm/cssVars/createGetCssVar.js", 341 | ], 342 | [ 343 | "display", 344 | "default", 345 | "@mui/system/esm/display.js", 346 | ], 347 | [ 348 | "flexbox", 349 | "default", 350 | "@mui/system/esm/flexbox.js", 351 | ], 352 | [ 353 | "flexBasis", 354 | "flexBasis", 355 | "@mui/system/esm/flexbox.js", 356 | ], 357 | [ 358 | "flexDirection", 359 | "flexDirection", 360 | "@mui/system/esm/flexbox.js", 361 | ], 362 | [ 363 | "flexWrap", 364 | "flexWrap", 365 | "@mui/system/esm/flexbox.js", 366 | ], 367 | [ 368 | "justifyContent", 369 | "justifyContent", 370 | "@mui/system/esm/flexbox.js", 371 | ], 372 | [ 373 | "alignItems", 374 | "alignItems", 375 | "@mui/system/esm/flexbox.js", 376 | ], 377 | [ 378 | "alignContent", 379 | "alignContent", 380 | "@mui/system/esm/flexbox.js", 381 | ], 382 | [ 383 | "order", 384 | "order", 385 | "@mui/system/esm/flexbox.js", 386 | ], 387 | [ 388 | "flex", 389 | "flex", 390 | "@mui/system/esm/flexbox.js", 391 | ], 392 | [ 393 | "flexGrow", 394 | "flexGrow", 395 | "@mui/system/esm/flexbox.js", 396 | ], 397 | [ 398 | "flexShrink", 399 | "flexShrink", 400 | "@mui/system/esm/flexbox.js", 401 | ], 402 | [ 403 | "alignSelf", 404 | "alignSelf", 405 | "@mui/system/esm/flexbox.js", 406 | ], 407 | [ 408 | "justifyItems", 409 | "justifyItems", 410 | "@mui/system/esm/flexbox.js", 411 | ], 412 | [ 413 | "justifySelf", 414 | "justifySelf", 415 | "@mui/system/esm/flexbox.js", 416 | ], 417 | [ 418 | "unstable_getThemeValue", 419 | "default", 420 | "@mui/system/esm/getThemeValue.js", 421 | ], 422 | [ 423 | "experimental_sx", 424 | "experimental_sx", 425 | "@mui/system/esm/index.js", 426 | ], 427 | [ 428 | "palette", 429 | "default", 430 | "@mui/system/esm/palette.js", 431 | ], 432 | [ 433 | "paletteTransform", 434 | "paletteTransform", 435 | "@mui/system/esm/palette.js", 436 | ], 437 | [ 438 | "color", 439 | "color", 440 | "@mui/system/esm/palette.js", 441 | ], 442 | [ 443 | "bgcolor", 444 | "bgcolor", 445 | "@mui/system/esm/palette.js", 446 | ], 447 | [ 448 | "backgroundColor", 449 | "backgroundColor", 450 | "@mui/system/esm/palette.js", 451 | ], 452 | [ 453 | "positions", 454 | "default", 455 | "@mui/system/esm/positions.js", 456 | ], 457 | [ 458 | "position", 459 | "position", 460 | "@mui/system/esm/positions.js", 461 | ], 462 | [ 463 | "zIndex", 464 | "zIndex", 465 | "@mui/system/esm/positions.js", 466 | ], 467 | [ 468 | "top", 469 | "top", 470 | "@mui/system/esm/positions.js", 471 | ], 472 | [ 473 | "right", 474 | "right", 475 | "@mui/system/esm/positions.js", 476 | ], 477 | [ 478 | "bottom", 479 | "bottom", 480 | "@mui/system/esm/positions.js", 481 | ], 482 | [ 483 | "left", 484 | "left", 485 | "@mui/system/esm/positions.js", 486 | ], 487 | [ 488 | "responsivePropType", 489 | "default", 490 | "@mui/system/esm/responsivePropType.js", 491 | ], 492 | [ 493 | "shadows", 494 | "default", 495 | "@mui/system/esm/shadows.js", 496 | ], 497 | [ 498 | "sizing", 499 | "default", 500 | "@mui/system/esm/sizing.js", 501 | ], 502 | [ 503 | "sizingTransform", 504 | "sizingTransform", 505 | "@mui/system/esm/sizing.js", 506 | ], 507 | [ 508 | "width", 509 | "width", 510 | "@mui/system/esm/sizing.js", 511 | ], 512 | [ 513 | "maxWidth", 514 | "maxWidth", 515 | "@mui/system/esm/sizing.js", 516 | ], 517 | [ 518 | "minWidth", 519 | "minWidth", 520 | "@mui/system/esm/sizing.js", 521 | ], 522 | [ 523 | "height", 524 | "height", 525 | "@mui/system/esm/sizing.js", 526 | ], 527 | [ 528 | "maxHeight", 529 | "maxHeight", 530 | "@mui/system/esm/sizing.js", 531 | ], 532 | [ 533 | "minHeight", 534 | "minHeight", 535 | "@mui/system/esm/sizing.js", 536 | ], 537 | [ 538 | "sizeWidth", 539 | "sizeWidth", 540 | "@mui/system/esm/sizing.js", 541 | ], 542 | [ 543 | "sizeHeight", 544 | "sizeHeight", 545 | "@mui/system/esm/sizing.js", 546 | ], 547 | [ 548 | "boxSizing", 549 | "boxSizing", 550 | "@mui/system/esm/sizing.js", 551 | ], 552 | [ 553 | "spacing", 554 | "default", 555 | "@mui/system/esm/spacing.js", 556 | ], 557 | [ 558 | "marginKeys", 559 | "marginKeys", 560 | "@mui/system/esm/spacing.js", 561 | ], 562 | [ 563 | "paddingKeys", 564 | "paddingKeys", 565 | "@mui/system/esm/spacing.js", 566 | ], 567 | [ 568 | "createUnaryUnit", 569 | "createUnaryUnit", 570 | "@mui/system/esm/spacing.js", 571 | ], 572 | [ 573 | "createUnarySpacing", 574 | "createUnarySpacing", 575 | "@mui/system/esm/spacing.js", 576 | ], 577 | [ 578 | "getValue", 579 | "getValue", 580 | "@mui/system/esm/spacing.js", 581 | ], 582 | [ 583 | "getStyleFromPropValue", 584 | "getStyleFromPropValue", 585 | "@mui/system/esm/spacing.js", 586 | ], 587 | [ 588 | "margin", 589 | "margin", 590 | "@mui/system/esm/spacing.js", 591 | ], 592 | [ 593 | "padding", 594 | "padding", 595 | "@mui/system/esm/spacing.js", 596 | ], 597 | [ 598 | "createStack", 599 | "default", 600 | "@mui/system/esm/Stack/createStack.js", 601 | ], 602 | [ 603 | "Stack", 604 | "default", 605 | "@mui/system/esm/Stack/Stack.js", 606 | ], 607 | [ 608 | "stackClasses", 609 | "default", 610 | "@mui/system/esm/Stack/stackClasses.js", 611 | ], 612 | [ 613 | "getStackUtilityClass", 614 | "getStackUtilityClass", 615 | "@mui/system/esm/Stack/stackClasses.js", 616 | ], 617 | [ 618 | "getPath", 619 | "getPath", 620 | "@mui/system/esm/style.js", 621 | ], 622 | [ 623 | "getStyleValue", 624 | "getStyleValue", 625 | "@mui/system/esm/style.js", 626 | ], 627 | [ 628 | "style", 629 | "default", 630 | "@mui/system/esm/style.js", 631 | ], 632 | [ 633 | "styled", 634 | "default", 635 | "@mui/system/esm/styled.js", 636 | ], 637 | [ 638 | "unstable_defaultSxConfig", 639 | "default", 640 | "@mui/system/esm/styleFunctionSx/defaultSxConfig.js", 641 | ], 642 | [ 643 | "unstable_extendSxProp", 644 | "default", 645 | "@mui/system/esm/styleFunctionSx/extendSxProp.js", 646 | ], 647 | [ 648 | "unstable_styleFunctionSx", 649 | "default", 650 | "@mui/system/esm/styleFunctionSx/styleFunctionSx.js", 651 | ], 652 | [ 653 | "unstable_createStyleFunctionSx", 654 | "unstable_createStyleFunctionSx", 655 | "@mui/system/esm/styleFunctionSx/styleFunctionSx.js", 656 | ], 657 | [ 658 | "ThemeProvider", 659 | "default", 660 | "@mui/system/esm/ThemeProvider/ThemeProvider.js", 661 | ], 662 | [ 663 | "typography", 664 | "default", 665 | "@mui/system/esm/typography.js", 666 | ], 667 | [ 668 | "fontFamily", 669 | "fontFamily", 670 | "@mui/system/esm/typography.js", 671 | ], 672 | [ 673 | "fontSize", 674 | "fontSize", 675 | "@mui/system/esm/typography.js", 676 | ], 677 | [ 678 | "fontStyle", 679 | "fontStyle", 680 | "@mui/system/esm/typography.js", 681 | ], 682 | [ 683 | "fontWeight", 684 | "fontWeight", 685 | "@mui/system/esm/typography.js", 686 | ], 687 | [ 688 | "letterSpacing", 689 | "letterSpacing", 690 | "@mui/system/esm/typography.js", 691 | ], 692 | [ 693 | "textTransform", 694 | "textTransform", 695 | "@mui/system/esm/typography.js", 696 | ], 697 | [ 698 | "lineHeight", 699 | "lineHeight", 700 | "@mui/system/esm/typography.js", 701 | ], 702 | [ 703 | "textAlign", 704 | "textAlign", 705 | "@mui/system/esm/typography.js", 706 | ], 707 | [ 708 | "typographyVariant", 709 | "typographyVariant", 710 | "@mui/system/esm/typography.js", 711 | ], 712 | [ 713 | "createGrid", 714 | "default", 715 | "@mui/system/esm/Unstable_Grid/createGrid.js", 716 | ], 717 | [ 718 | "Unstable_Grid", 719 | "default", 720 | "@mui/system/esm/Unstable_Grid/Grid.js", 721 | ], 722 | [ 723 | "gridClasses", 724 | "default", 725 | "@mui/system/esm/Unstable_Grid/gridClasses.js", 726 | ], 727 | [ 728 | "getGridUtilityClass", 729 | "getGridUtilityClass", 730 | "@mui/system/esm/Unstable_Grid/gridClasses.js", 731 | ], 732 | [ 733 | "useTheme", 734 | "default", 735 | "@mui/system/esm/useTheme.js", 736 | ], 737 | [ 738 | "getThemeProps", 739 | "default", 740 | "@mui/system/esm/useThemeProps/getThemeProps.js", 741 | ], 742 | [ 743 | "useThemeProps", 744 | "default", 745 | "@mui/system/esm/useThemeProps/useThemeProps.js", 746 | ], 747 | [ 748 | "useThemeWithoutDefault", 749 | "default", 750 | "@mui/system/esm/useThemeWithoutDefault.js", 751 | ], 752 | ] 753 | `); 754 | }); 755 | -------------------------------------------------------------------------------- /test/@mui/system/plugin.spec.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from "vitest"; 2 | import { runPlugin } from "../../utils.js"; 3 | 4 | test("transformation", () => { 5 | expect( 6 | runPlugin( 7 | 'import { ThemeProvider, ThemeProviderProps } from "@mui/system";', 8 | ["@mui/system"] 9 | ) 10 | ).toMatchInlineSnapshot(` 11 | import ThemeProvider from "@mui/system/esm/ThemeProvider/ThemeProvider.js"; 12 | import { ThemeProviderProps } from "@mui/system"; 13 | `); 14 | }); 15 | -------------------------------------------------------------------------------- /test/setup.js: -------------------------------------------------------------------------------- 1 | import path from "node:path"; 2 | import { fileURLToPath } from "node:url"; 3 | import { expect } from "vitest"; 4 | 5 | const CWD = path.join(fileURLToPath(import.meta.url), "..", ".."); 6 | 7 | /** 8 | * @param {string} input 9 | * @returns {string} 10 | */ 11 | function normalizeSeparators(input) { 12 | return input.replace(/\\/g, "/"); 13 | } 14 | 15 | expect.addSnapshotSerializer({ 16 | test(value) { 17 | return typeof value === "string" && value.includes(CWD); 18 | }, 19 | serialize(value, config, indentation, depth, refs, printer) { 20 | let result = String(value).replace(CWD, ""); 21 | while (result.includes(CWD)) { 22 | result = result.replace(CWD, ""); 23 | } 24 | result = normalizeSeparators(result); 25 | return printer(result, config, indentation, depth, refs); 26 | }, 27 | }); 28 | -------------------------------------------------------------------------------- /test/utils.js: -------------------------------------------------------------------------------- 1 | import babel, { parse, types } from "@babel/core"; 2 | import { expect } from "vitest"; 3 | import Parser from "../lib/internal/Parser.js"; 4 | import plugin from "../lib/plugin.js"; 5 | 6 | /** @type {Set} */ 7 | const transformed = new Set(); 8 | 9 | expect.addSnapshotSerializer({ 10 | test(value) { 11 | return transformed.has(value); 12 | }, 13 | serialize(value) { 14 | return value.trim(); 15 | }, 16 | }); 17 | 18 | /** 19 | * @param {string} input 20 | * @param {unknown[]} modules 21 | * @returns {string} 22 | */ 23 | export function runPlugin(input, modules) { 24 | const result = babel.transformSync(input, { 25 | plugins: [[plugin, { modules }]], 26 | }); 27 | if (!result?.code) return ""; 28 | transformed.add(result.code); 29 | return result.code; 30 | } 31 | 32 | const parser = new Parser(parse, types); 33 | 34 | /** 35 | * @param {string} entryId 36 | * @returns {unknown[]} 37 | */ 38 | export function testExports(entryId) { 39 | /** @type {[id: string, internalID: string, source: string][]} */ 40 | const result = []; 41 | 42 | for (const [id, { source, internalID }] of parser.getDependenciesMap( 43 | entryId 44 | )) { 45 | result.push([id, internalID, source]); 46 | } 47 | 48 | return result.sort(([, , a], [, , b]) => a.localeCompare(b)); 49 | } 50 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@umidbekk/configs/tsconfig.json", 3 | "include": ["lib", "test", "vitest.config.mjs"], 4 | "compilerOptions": { 5 | "moduleResolution": "Node16" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /vitest.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitest/config"; 2 | 3 | export default defineConfig({ 4 | test: { 5 | setupFiles: ["./test/setup.js"], 6 | snapshotFormat: { escapeString: false }, 7 | coverage: { reporter: ["html", "lcov", "text"] }, 8 | }, 9 | }); 10 | --------------------------------------------------------------------------------