From 92dce509af06bb9a5bfee1b0967f97a1423e0831 Mon Sep 17 00:00:00 2001 From: 0x1eef <0x1eef@protonmail.com> Date: Thu, 25 Apr 2024 03:40:55 -0300 Subject: [PATCH] Combine multiple entry points into one --- .projectile | 3 ++- client/Rules | 3 +-- client/nanoc/rules/projects.rules | 15 ----------- client/nanoc/rules/react.rules | 20 ++++++++++++++ client/nanoc/rules/tasks.rules | 45 ------------------------------- client/src/html/react.html.erb | 2 +- client/src/js/main/main.tsx | 39 +++++++++++++++++++++++++++ client/src/js/main/projects.tsx | 12 --------- client/src/js/main/task/edit.tsx | 12 --------- client/src/js/main/task/new.tsx | 12 --------- client/src/js/main/tasks.tsx | 12 --------- 11 files changed, 63 insertions(+), 112 deletions(-) delete mode 100644 client/nanoc/rules/projects.rules create mode 100644 client/nanoc/rules/react.rules delete mode 100644 client/nanoc/rules/tasks.rules create mode 100644 client/src/js/main/main.tsx delete mode 100644 client/src/js/main/projects.tsx delete mode 100644 client/src/js/main/task/edit.tsx delete mode 100644 client/src/js/main/task/new.tsx delete mode 100644 client/src/js/main/tasks.tsx diff --git a/.projectile b/.projectile index b491223..011b68b 100644 --- a/.projectile +++ b/.projectile @@ -1,4 +1,5 @@ -stage/ -node_modules/ -.gems/ --/twenty-client/tmp/ +-/client/tmp/ +-/client/build/ diff --git a/client/Rules b/client/Rules index afa311a..4f4bc9c 100644 --- a/client/Rules +++ b/client/Rules @@ -23,8 +23,7 @@ def require_rules(rules, locals = {}, target = binding) end require_rules "nanoc/rules/assets" -require_rules "nanoc/rules/projects" -require_rules "nanoc/rules/tasks" +require_rules "nanoc/rules/react" compile("/**/*") { write(nil) } layout "/**/*", :erb diff --git a/client/nanoc/rules/projects.rules b/client/nanoc/rules/projects.rules deleted file mode 100644 index adf51ce..0000000 --- a/client/nanoc/rules/projects.rules +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env ruby - -## -# GET / -compile '/html/react.html.erb', rep: "projects/index" do - filter(:erb, locals: {src: "/js/main/projects.js"}) - write('/projects/index.html') -end - -## -# GET /js/main/projects.js -compile("/js/main/projects.tsx") do - filter(:webpack, depend_on: %w[/js/components/ /js/hooks/ /js/types/]) - write("/js/main/projects.js") -end diff --git a/client/nanoc/rules/react.rules b/client/nanoc/rules/react.rules new file mode 100644 index 0000000..0d0ca6e --- /dev/null +++ b/client/nanoc/rules/react.rules @@ -0,0 +1,20 @@ +#!/usr/bin/env ruby + +components = { + 'react-newtask' => 'tasks/new', + 'react-edittask' => 'tasks/edit', + 'react-tasks' => 'tasks', + 'react-projects' => 'projects' +} + +components.each do |name, path| + compile '/html/react.html.erb', rep: name do + filter(:erb, locals: {name:, path: "/#{path}", src: "/js/main.js"}) + write("/#{path}/index.html") + end +end + +compile "/js/main/main.tsx" do + filter(:webpack, depend_on: %w[/js/components/ /js/hooks/ /js/types/]) + write("/js/main.js") +end diff --git a/client/nanoc/rules/tasks.rules b/client/nanoc/rules/tasks.rules deleted file mode 100644 index a4029a0..0000000 --- a/client/nanoc/rules/tasks.rules +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env ruby - -## -# GET /tasks/new/ -compile '/html/react.html.erb', rep: "tasks/new" do - filter(:erb, locals: {src: "/js/main/task/new.js"}) - write("/tasks/new/index.html") -end - -## -# GET /js/main/task/new.js -compile("/js/main/task/new.tsx") do - filter(:webpack, depend_on: %w[/js/lib/ /js/components/ /js/hooks/ /js/types/]) - write("/js/main/task/new.js") -end - -## -# GET / -# GET /tasks/ -compile("/html/react.html.erb", rep: "tasks/index") do - filter(:erb, locals: {src: "/js/main/tasks.js"}) - write("/tasks/index.html") - write("/index.html") -end - -## -# GET /js/main/tasks.js -compile("/js/main/tasks.tsx") do - filter(:webpack, depend_on: %w[/js/lib/ /js/components /js/hooks/ /js/types/]) - write("/js/main/tasks.js") -end - -## -# GET /tasks/edit#id=X -compile("/html/react.html.erb") do - filter(:erb, locals: {src: '/js/main/task/edit.js'}) - write("/tasks/edit/index.html") -end - -## -# GET /js/main/task/edit.js -compile("/js/main/task/edit.tsx") do - filter(:webpack, depend_on: %w[/js/lib/ /js/components /js/hooks/ /js/types/]) - write("/js/main/task/edit.js") -end diff --git a/client/src/html/react.html.erb b/client/src/html/react.html.erb index 93d07ac..c763b30 100644 --- a/client/src/html/react.html.erb +++ b/client/src/html/react.html.erb @@ -7,7 +7,7 @@ -
+
diff --git a/client/src/js/main/main.tsx b/client/src/js/main/main.tsx new file mode 100644 index 0000000..1f50f45 --- /dev/null +++ b/client/src/js/main/main.tsx @@ -0,0 +1,39 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import { App } from "~/components/App"; +import { Tasks } from "~/components/Tasks"; +import { Projects } from "~/components/Projects"; +import { Task } from "~/components/Task"; + +(function () { + const components = { + "react-newtask": ( + + + + ), + "react-edittask": ( + + + + ), + "react-tasks": ( + + + + ), + "react-projects": ( + + + + ) + }; + Object + .entries(components) + .forEach(([name, jsx]) => { + const root = document.querySelector(`.${name}`); + if (root) { + ReactDOM.createRoot(root).render(jsx); + } + }); +})(); diff --git a/client/src/js/main/projects.tsx b/client/src/js/main/projects.tsx deleted file mode 100644 index f0fe9e8..0000000 --- a/client/src/js/main/projects.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import ReactDOM from "react-dom/client"; -import { App } from "~/components/App"; -import { Projects } from "~/components/Projects"; - -(function () { - const root = document.querySelector(".react-root")!; - ReactDOM.createRoot(root).render( - - - , - ); -})(); diff --git a/client/src/js/main/task/edit.tsx b/client/src/js/main/task/edit.tsx deleted file mode 100644 index 1194213..0000000 --- a/client/src/js/main/task/edit.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import ReactDOM from "react-dom/client"; -import { App } from "~/components/App"; -import { Task } from "~/components/Task"; - -(function () { - const root = document.querySelector(".react-root")!; - ReactDOM.createRoot(root).render( - - - , - ); -})(); diff --git a/client/src/js/main/task/new.tsx b/client/src/js/main/task/new.tsx deleted file mode 100644 index 1194213..0000000 --- a/client/src/js/main/task/new.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import ReactDOM from "react-dom/client"; -import { App } from "~/components/App"; -import { Task } from "~/components/Task"; - -(function () { - const root = document.querySelector(".react-root")!; - ReactDOM.createRoot(root).render( - - - , - ); -})(); diff --git a/client/src/js/main/tasks.tsx b/client/src/js/main/tasks.tsx deleted file mode 100644 index 0e70807..0000000 --- a/client/src/js/main/tasks.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import ReactDOM from "react-dom/client"; -import { App } from "~/components/App"; -import { Tasks } from "~/components/Tasks"; - -(function () { - const root = document.querySelector(".react-root")!; - ReactDOM.createRoot(root).render( - - - , - ); -})();