diff --git a/.vscode/settings.json b/.vscode/settings.json
index 6278784..b7e02b5 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -4,7 +4,7 @@
"**/.pnp.*": true
},
"eslint.nodePath": ".yarn/sdks",
- "prettier.prettierPath": ".yarn/sdks/prettier/index.js",
+ "prettier.prettierPath": ".yarn/sdks/prettier/index.cjs",
"typescript.tsdk": ".yarn/sdks/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true
}
diff --git a/.yarn/sdks/prettier/bin-prettier.js b/.yarn/sdks/eslint/lib/types/index.d.ts
old mode 100755
new mode 100644
similarity index 75%
rename from .yarn/sdks/prettier/bin-prettier.js
rename to .yarn/sdks/eslint/lib/types/index.d.ts
index 5d06535..19293d0
--- a/.yarn/sdks/prettier/bin-prettier.js
+++ b/.yarn/sdks/eslint/lib/types/index.d.ts
@@ -5,7 +5,7 @@ const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
-const relPnpApiPath = "../../../.pnp.cjs";
+const relPnpApiPath = "../../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
@@ -16,7 +16,7 @@ const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
- // Setup the environment to be able to require prettier/bin-prettier.js
+ // Setup the environment to be able to require eslint
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
@@ -28,5 +28,5 @@ const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
-// Defer to the real prettier/bin-prettier.js your application uses
-module.exports = wrapWithUserWrapper(absRequire(`prettier/bin-prettier.js`));
+// Defer to the real eslint your application uses
+module.exports = wrapWithUserWrapper(absRequire(`eslint`));
diff --git a/.yarn/sdks/eslint/lib/types/rules/index.d.ts b/.yarn/sdks/eslint/lib/types/rules/index.d.ts
new file mode 100644
index 0000000..a4ae666
--- /dev/null
+++ b/.yarn/sdks/eslint/lib/types/rules/index.d.ts
@@ -0,0 +1,32 @@
+#!/usr/bin/env node
+
+const {existsSync} = require(`fs`);
+const {createRequire, register} = require(`module`);
+const {resolve} = require(`path`);
+const {pathToFileURL} = require(`url`);
+
+const relPnpApiPath = "../../../../../../.pnp.cjs";
+
+const absPnpApiPath = resolve(__dirname, relPnpApiPath);
+const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
+const absRequire = createRequire(absPnpApiPath);
+
+const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
+const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
+
+if (existsSync(absPnpApiPath)) {
+ if (!process.versions.pnp) {
+ // Setup the environment to be able to require eslint/rules
+ require(absPnpApiPath).setup();
+ if (isPnpLoaderEnabled && register) {
+ register(pathToFileURL(absPnpLoaderPath));
+ }
+ }
+}
+
+const wrapWithUserWrapper = existsSync(absUserWrapperPath)
+ ? exports => absRequire(absUserWrapperPath)(exports)
+ : exports => exports;
+
+// Defer to the real eslint/rules your application uses
+module.exports = wrapWithUserWrapper(absRequire(`eslint/rules`));
diff --git a/.yarn/sdks/eslint/lib/types/universal.d.ts b/.yarn/sdks/eslint/lib/types/universal.d.ts
new file mode 100644
index 0000000..662b3f4
--- /dev/null
+++ b/.yarn/sdks/eslint/lib/types/universal.d.ts
@@ -0,0 +1,32 @@
+#!/usr/bin/env node
+
+const {existsSync} = require(`fs`);
+const {createRequire, register} = require(`module`);
+const {resolve} = require(`path`);
+const {pathToFileURL} = require(`url`);
+
+const relPnpApiPath = "../../../../../.pnp.cjs";
+
+const absPnpApiPath = resolve(__dirname, relPnpApiPath);
+const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
+const absRequire = createRequire(absPnpApiPath);
+
+const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
+const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
+
+if (existsSync(absPnpApiPath)) {
+ if (!process.versions.pnp) {
+ // Setup the environment to be able to require eslint/universal
+ require(absPnpApiPath).setup();
+ if (isPnpLoaderEnabled && register) {
+ register(pathToFileURL(absPnpLoaderPath));
+ }
+ }
+}
+
+const wrapWithUserWrapper = existsSync(absUserWrapperPath)
+ ? exports => absRequire(absUserWrapperPath)(exports)
+ : exports => exports;
+
+// Defer to the real eslint/universal your application uses
+module.exports = wrapWithUserWrapper(absRequire(`eslint/universal`));
diff --git a/.yarn/sdks/eslint/lib/types/use-at-your-own-risk.d.ts b/.yarn/sdks/eslint/lib/types/use-at-your-own-risk.d.ts
new file mode 100644
index 0000000..2e2ccca
--- /dev/null
+++ b/.yarn/sdks/eslint/lib/types/use-at-your-own-risk.d.ts
@@ -0,0 +1,32 @@
+#!/usr/bin/env node
+
+const {existsSync} = require(`fs`);
+const {createRequire, register} = require(`module`);
+const {resolve} = require(`path`);
+const {pathToFileURL} = require(`url`);
+
+const relPnpApiPath = "../../../../../.pnp.cjs";
+
+const absPnpApiPath = resolve(__dirname, relPnpApiPath);
+const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
+const absRequire = createRequire(absPnpApiPath);
+
+const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
+const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
+
+if (existsSync(absPnpApiPath)) {
+ if (!process.versions.pnp) {
+ // Setup the environment to be able to require eslint/use-at-your-own-risk
+ require(absPnpApiPath).setup();
+ if (isPnpLoaderEnabled && register) {
+ register(pathToFileURL(absPnpLoaderPath));
+ }
+ }
+}
+
+const wrapWithUserWrapper = existsSync(absUserWrapperPath)
+ ? exports => absRequire(absUserWrapperPath)(exports)
+ : exports => exports;
+
+// Defer to the real eslint/use-at-your-own-risk your application uses
+module.exports = wrapWithUserWrapper(absRequire(`eslint/use-at-your-own-risk`));
diff --git a/.yarn/sdks/eslint/lib/universal.js b/.yarn/sdks/eslint/lib/universal.js
new file mode 100644
index 0000000..85a8ccb
--- /dev/null
+++ b/.yarn/sdks/eslint/lib/universal.js
@@ -0,0 +1,32 @@
+#!/usr/bin/env node
+
+const {existsSync} = require(`fs`);
+const {createRequire, register} = require(`module`);
+const {resolve} = require(`path`);
+const {pathToFileURL} = require(`url`);
+
+const relPnpApiPath = "../../../../.pnp.cjs";
+
+const absPnpApiPath = resolve(__dirname, relPnpApiPath);
+const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
+const absRequire = createRequire(absPnpApiPath);
+
+const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
+const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
+
+if (existsSync(absPnpApiPath)) {
+ if (!process.versions.pnp) {
+ // Setup the environment to be able to require eslint/universal
+ require(absPnpApiPath).setup();
+ if (isPnpLoaderEnabled && register) {
+ register(pathToFileURL(absPnpLoaderPath));
+ }
+ }
+}
+
+const wrapWithUserWrapper = existsSync(absUserWrapperPath)
+ ? exports => absRequire(absUserWrapperPath)(exports)
+ : exports => exports;
+
+// Defer to the real eslint/universal your application uses
+module.exports = wrapWithUserWrapper(absRequire(`eslint/universal`));
diff --git a/.yarn/sdks/eslint/lib/unsupported-api.js b/.yarn/sdks/eslint/lib/unsupported-api.js
new file mode 100644
index 0000000..c2b464c
--- /dev/null
+++ b/.yarn/sdks/eslint/lib/unsupported-api.js
@@ -0,0 +1,32 @@
+#!/usr/bin/env node
+
+const {existsSync} = require(`fs`);
+const {createRequire, register} = require(`module`);
+const {resolve} = require(`path`);
+const {pathToFileURL} = require(`url`);
+
+const relPnpApiPath = "../../../../.pnp.cjs";
+
+const absPnpApiPath = resolve(__dirname, relPnpApiPath);
+const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
+const absRequire = createRequire(absPnpApiPath);
+
+const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
+const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
+
+if (existsSync(absPnpApiPath)) {
+ if (!process.versions.pnp) {
+ // Setup the environment to be able to require eslint/use-at-your-own-risk
+ require(absPnpApiPath).setup();
+ if (isPnpLoaderEnabled && register) {
+ register(pathToFileURL(absPnpLoaderPath));
+ }
+ }
+}
+
+const wrapWithUserWrapper = existsSync(absUserWrapperPath)
+ ? exports => absRequire(absUserWrapperPath)(exports)
+ : exports => exports;
+
+// Defer to the real eslint/use-at-your-own-risk your application uses
+module.exports = wrapWithUserWrapper(absRequire(`eslint/use-at-your-own-risk`));
diff --git a/.yarn/sdks/eslint/package.json b/.yarn/sdks/eslint/package.json
index 0fe5540..ef73eb4 100644
--- a/.yarn/sdks/eslint/package.json
+++ b/.yarn/sdks/eslint/package.json
@@ -1,9 +1,27 @@
{
"name": "eslint",
- "version": "7.28.0-sdk",
+ "version": "9.14.0-sdk",
"main": "./lib/api.js",
"type": "commonjs",
"bin": {
"eslint": "./bin/eslint.js"
+ },
+ "exports": {
+ ".": {
+ "types": "./lib/types/index.d.ts",
+ "default": "./lib/api.js"
+ },
+ "./package.json": "./package.json",
+ "./use-at-your-own-risk": {
+ "types": "./lib/types/use-at-your-own-risk.d.ts",
+ "default": "./lib/unsupported-api.js"
+ },
+ "./rules": {
+ "types": "./lib/types/rules/index.d.ts"
+ },
+ "./universal": {
+ "types": "./lib/types/universal.d.ts",
+ "default": "./lib/universal.js"
+ }
}
}
diff --git a/.yarn/sdks/prettier/bin/prettier.cjs b/.yarn/sdks/prettier/bin/prettier.cjs
new file mode 100755
index 0000000..9a4098f
--- /dev/null
+++ b/.yarn/sdks/prettier/bin/prettier.cjs
@@ -0,0 +1,32 @@
+#!/usr/bin/env node
+
+const {existsSync} = require(`fs`);
+const {createRequire, register} = require(`module`);
+const {resolve} = require(`path`);
+const {pathToFileURL} = require(`url`);
+
+const relPnpApiPath = "../../../../.pnp.cjs";
+
+const absPnpApiPath = resolve(__dirname, relPnpApiPath);
+const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
+const absRequire = createRequire(absPnpApiPath);
+
+const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
+const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
+
+if (existsSync(absPnpApiPath)) {
+ if (!process.versions.pnp) {
+ // Setup the environment to be able to require prettier/bin/prettier.cjs
+ require(absPnpApiPath).setup();
+ if (isPnpLoaderEnabled && register) {
+ register(pathToFileURL(absPnpLoaderPath));
+ }
+ }
+}
+
+const wrapWithUserWrapper = existsSync(absUserWrapperPath)
+ ? exports => absRequire(absUserWrapperPath)(exports)
+ : exports => exports;
+
+// Defer to the real prettier/bin/prettier.cjs your application uses
+module.exports = wrapWithUserWrapper(absRequire(`prettier/bin/prettier.cjs`));
diff --git a/.yarn/sdks/prettier/index.js b/.yarn/sdks/prettier/index.cjs
similarity index 100%
rename from .yarn/sdks/prettier/index.js
rename to .yarn/sdks/prettier/index.cjs
diff --git a/.yarn/sdks/prettier/package.json b/.yarn/sdks/prettier/package.json
index d67af89..cf1b58d 100644
--- a/.yarn/sdks/prettier/package.json
+++ b/.yarn/sdks/prettier/package.json
@@ -1,7 +1,7 @@
{
"name": "prettier",
- "version": "2.3.1-sdk",
- "main": "./index.js",
+ "version": "3.3.3-sdk",
+ "main": "./index.cjs",
"type": "commonjs",
- "bin": "./bin-prettier.js"
+ "bin": "./bin/prettier.cjs"
}
diff --git a/.yarn/sdks/typescript/package.json b/.yarn/sdks/typescript/package.json
index f092afe..a9c9401 100644
--- a/.yarn/sdks/typescript/package.json
+++ b/.yarn/sdks/typescript/package.json
@@ -1,6 +1,6 @@
{
"name": "typescript",
- "version": "4.3.2-sdk",
+ "version": "5.6.3-sdk",
"main": "./lib/typescript.js",
"type": "commonjs",
"bin": {
diff --git a/src/Modal.tsx b/src/Modal.tsx
index cae0e74..5dc6851 100644
--- a/src/Modal.tsx
+++ b/src/Modal.tsx
@@ -137,10 +137,14 @@ function Modal(props: ModalProps): JSX.Element {
);
- if (inline) {
- return ui;
+ const actualTarget = inline
+ ? undefined
+ : (target ?? (typeof document !== 'undefined' ? document.body : undefined));
+
+ if (actualTarget) {
+ return <>{createPortal(ui, actualTarget)}>;
} else {
- return <>{createPortal(ui, target ?? document.body)}>;
+ return ui;
}
}
diff --git a/test/ssr.test.tsx b/test/ssr.test.tsx
new file mode 100644
index 0000000..11521fb
--- /dev/null
+++ b/test/ssr.test.tsx
@@ -0,0 +1,19 @@
+// @vitest-environment node
+
+import { describe, expect, it } from 'vitest';
+import Modal from '../src';
+import { renderToString } from 'react-dom/server';
+
+describe('