From c13a47f2c4c8d364c333d0f50686ba22891e6808 Mon Sep 17 00:00:00 2001
From: paku <paku@skyizwhite.dev>
Date: Mon, 22 Apr 2024 20:17:50 +0900
Subject: [PATCH] Improve

---
 src/config/asset.lisp                |  6 +++++-
 src/middlewares/assets-server.lisp   |  4 ++--
 src/view/components/layout/main.lisp |  3 ++-
 src/view/renderer.lisp               | 12 +++++++++---
 4 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/config/asset.lisp b/src/config/asset.lisp
index 153159b..3a14077 100644
--- a/src/config/asset.lisp
+++ b/src/config/asset.lisp
@@ -1,6 +1,7 @@
 (defpackage #:hp/config/asset
   (:use #:cl)
-  (:export #:*asset-roots*))
+  (:export #:*asset-roots*
+           #:*hx-ext*))
 (in-package #:hp/config/asset)
 
 (defparameter *asset-roots*
@@ -10,3 +11,6 @@
     :vendor "/vendor/"
     :htmx-ext "/vendor/htmx-ext/"
     :alpine-ext "/vendor/alpine-ext/"))
+
+(defparameter *hx-ext*
+  "head-support,alpine-morph")
diff --git a/src/middlewares/assets-server.lisp b/src/middlewares/assets-server.lisp
index 16ee893..fe90fe2 100644
--- a/src/middlewares/assets-server.lisp
+++ b/src/middlewares/assets-server.lisp
@@ -5,7 +5,7 @@
   (:export #:*assets-server*))
 (in-package #:hp/middlewares/assets-server)
 
-(defun exist-public-file-p (path)
+(defun exist-asset-file-p (path)
   (let ((pathname (probe-file (concatenate 'string "assets" path))))
     (and pathname (pathname-name pathname))))
 
@@ -14,5 +14,5 @@
     (funcall *lack-middleware-static*
              app
              :path (lambda (path)
-                     (and (exist-public-file-p path) path))
+                     (and (exist-asset-file-p path) path))
              :root (asdf:system-relative-pathname :hp "assets/"))))
diff --git a/src/view/components/layout/main.lisp b/src/view/components/layout/main.lisp
index f99db4a..b318d2f 100644
--- a/src/view/components/layout/main.lisp
+++ b/src/view/components/layout/main.lisp
@@ -1,13 +1,14 @@
 (defpackage #:hp/view/components/layout/main
   (:use #:cl)
   (:local-nicknames (#:pi #:piccolo))
+  (:local-nicknames (#:cfg #:hp/config/asset))
   (:export #:layout))
 (in-package #:hp/view/components/layout/main)
 
 (pi:define-element layout ()
   (pi:h
     (body
-      :hx-ext "head-support,alpine-morph"
+      :hx-ext cfg:*hx-ext*
       :x-data t
       :|:data-dark| "$store.darkMode.on"
       ; header
diff --git a/src/view/renderer.lisp b/src/view/renderer.lisp
index 7c441f5..ff562c3 100644
--- a/src/view/renderer.lisp
+++ b/src/view/renderer.lisp
@@ -2,18 +2,24 @@
   (:use #:cl)
   (:local-nicknames (#:jg #:jingle))
   (:local-nicknames (#:pi #:piccolo))
+  (:local-nicknames (#:cfg #:hp/config/env))
   (:local-nicknames (#:cmp #:hp/view/components/**/*))
   (:export #:render
            #:partial-render))
 (in-package #:hp/view/renderer)
 
+(defun renderer ()
+  (if (cfg:dev-mode-p)
+      #'pi:element-string
+      #'pi:elem-str))
+
 (defun render (page &key status metadata)
   (jg:with-html-response
     (if status (jg:set-response-status status))
-    (pi:elem-str (cmp:document :metadata metadata
-                   (cmp:layout page)))))
+    (funcall (renderer) (cmp:document :metadata metadata
+                          (cmp:layout page)))))
 
 (defun partial-render (component &key status)
   (jg:with-html-response
     (if status (jg:set-response-status status))
-    (pi:elem-str (cmp:partial-document component))))
+    (funcall (renderer) (cmp:partial-document component))))