Skip to content

Commit 963d016

Browse files
committed
v1.1.0
1 parent ab3be89 commit 963d016

4 files changed

Lines changed: 54 additions & 12 deletions

File tree

package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111
"private": false,
1212
"type": "module",
1313
"main": "./dist/index.umd.cjs",
14-
"module": "./dist/index.js",
14+
"module": "./dist/index.mjs",
1515
"exports": {
1616
"./stylesheet.css": "./dist/stylesheet.css",
1717
".": {
18-
"import": "./dist/index.js",
18+
"import": "./dist/index.mjs",
1919
"require": "./dist/index.umd.cjs",
20-
"types": "./dist/index.d.ts"
20+
"types": "./dist/index.d.ts",
21+
"default": "./dist/index.mjs",
22+
"node": "./dist/index.umd.cjs"
2123
}
2224
},
2325
"typings": "./dist/index.d.ts",

src/RemixDevTools/RemixDevTools.tsx

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,48 @@ import { isDev } from "./utils/isDev";
99
import { useGetSocket } from "./hooks/useGetSocket";
1010
import { Radio } from "lucide-react";
1111
import { useResize } from "./hooks/useResize";
12+
import { useLocation } from "@remix-run/react";
1213

1314
interface Props {
15+
position:
16+
| "bottom-right"
17+
| "bottom-left"
18+
| "top-right"
19+
| "top-left"
20+
| "middle-right"
21+
| "middle-left";
1422
defaultOpen: boolean;
1523
}
1624

17-
const RemixDevTools = ({ defaultOpen }: Props) => {
25+
const RemixDevTools = ({ defaultOpen, position }: Props) => {
1826
const [isOpen, setIsOpen] = useState(defaultOpen);
1927
const { activeTab, setActiveTab, setShouldConnectWithForge, height } =
2028
useRDTContext();
2129
const { enableResize, disableResize, isResizing } = useResize();
2230
useTimelineHandler();
2331
const { isConnected, isConnecting } = useGetSocket();
2432
const Component = tabs.find((tab) => tab.id === activeTab)?.component;
33+
const leftSideOriented =
34+
position === "top-left" ||
35+
position === "bottom-left" ||
36+
position === "middle-left";
2537

2638
return (
2739
<div className="remix-dev-tools">
2840
<div
2941
style={{ zIndex: 9999 }}
3042
onClick={() => setIsOpen(!isOpen)}
31-
className={
32-
"rdt-fixed rdt-bottom-0 rdt-right-0 rdt-m-1.5 rdt-h-14 rdt-w-14 rdt-cursor-pointer rdt-rounded-full "
33-
}
43+
className={clsx(
44+
"rdt-fixed rdt-m-1.5 rdt-h-14 rdt-w-14 rdt-cursor-pointer rdt-rounded-full ",
45+
position === "bottom-right" && "rdt-bottom-0 rdt-right-0",
46+
position === "bottom-left" && "rdt-bottom-0 rdt-left-0",
47+
position === "top-right" && "rdt-right-0 rdt-top-0",
48+
position === "top-left" && "rdt-left-0 rdt-top-0",
49+
position === "middle-right" &&
50+
"rdt-right-0 rdt-top-1/2 -rdt-translate-y-1/2",
51+
position === "middle-left" &&
52+
"rdt-left-0 rdt-top-1/2 -rdt-translate-y-1/2"
53+
)}
3454
>
3555
<Logo
3656
className={clsx(
@@ -93,11 +113,21 @@ const RemixDevTools = ({ defaultOpen }: Props) => {
93113
)}
94114
</div>
95115
<div className="rdt-flex rdt-h-full rdt-w-full rdt-overflow-y-hidden">
96-
<div className="rdt-z-20 rdt-h-full rdt-w-full rdt-bg-[#212121] rdt-p-2 rdt-pl-8 ">
116+
<div
117+
className={clsx(
118+
"rdt-z-20 rdt-h-full rdt-w-full rdt-bg-[#212121] rdt-p-2",
119+
leftSideOriented ? "rdt-pl-16" : "rdt-pl-8"
120+
)}
121+
>
97122
{Component}
98123
</div>
99124
<div className="rdt-w-1 rdt-bg-gray-500/20"></div>
100-
<div className="rdt-z-10 rdt-h-full rdt-w-2/3 rdt-p-2 rdt-pr-16">
125+
<div
126+
className={clsx(
127+
"rdt-z-10 rdt-h-full rdt-w-2/3 rdt-p-2",
128+
leftSideOriented ? "rdt-pl-16" : "rdt-pr-16"
129+
)}
130+
>
101131
{tabs.find((t) => t.id === "timeline")?.component}
102132
</div>
103133
</div>
@@ -124,18 +154,27 @@ interface RemixDevToolsProps {
124154
port?: number;
125155
// Whether the dev tools should be open by default
126156
defaultOpen?: boolean;
157+
// Whether the dev tools require a url flag to be shown
158+
requireUrlFlag?: boolean;
159+
// Set the position of the trigger button
160+
position?: Props["position"];
127161
}
128162

129163
const RDTWithContext = ({
130164
port = 3003,
131165
defaultOpen = false,
166+
requireUrlFlag,
167+
position = "bottom-right",
132168
}: RemixDevToolsProps) => {
133169
const hydrated = useHydrated();
134170
const isDevelopment = isDev();
171+
const url = useLocation().search;
172+
135173
if (!hydrated || !isDevelopment) return null;
174+
if (requireUrlFlag && !url.includes("rdt=true")) return null;
136175
return (
137176
<RDTContextProvider port={port}>
138-
<RemixDevTools defaultOpen={defaultOpen} />
177+
<RemixDevTools position={position} defaultOpen={defaultOpen} />
139178
</RDTContextProvider>
140179
);
141180
};

src/remix-app-for-testing/app/root.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export default function App() {
4949
<ScrollRestoration />
5050
<Scripts />
5151
<LiveReload />
52-
{RemixDevTools && <RemixDevTools defaultOpen />}
52+
{RemixDevTools && <RemixDevTools defaultOpen />}
5353
</body>
5454
</html>
5555
);

vite.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@ export default defineConfig({
4141
lib: {
4242
entry: resolve(__dirname, "src/index.ts"),
4343
name: "Remix Dev Tools",
44-
fileName: "index",
44+
fileName: (format) => `index.${format === "es" ? "mjs" : "umd.cjs"}`,
4545
},
46+
emptyOutDir: false,
4647
copyPublicDir: true,
4748
rollupOptions: {
4849
external: ["react", "react-dom", "@remix-run/react"],

0 commit comments

Comments
 (0)