module Emanote.View.LiveServerFiles (
  isLiveServerFile,
  tailwindFullCssPath,
  tailwindCssFile,
) where

import Data.Text qualified as T
import Emanote.Model.StaticFile (StaticFile)
import Emanote.Model.Type qualified as M
import Relude

-- TODO: Check this compile-time using TH?

baseDir :: FilePath
baseDir :: FilePath
baseDir = FilePath
"_emanote-live-server"

tailwindFullCssPath :: FilePath
tailwindFullCssPath :: FilePath
tailwindFullCssPath = FilePath
baseDir forall a. Semigroup a => a -> a -> a
<> FilePath
"/tailwind/2.2.2/tailwind.min.css"

isLiveServerFile :: FilePath -> Bool
isLiveServerFile :: FilePath -> Bool
isLiveServerFile (forall a. ToText a => a -> Text
toText -> Text
fp) =
  forall a. ToText a => a -> Text
toText FilePath
baseDir Text -> Text -> Bool
`T.isPrefixOf` Text
fp

tailwindCssFile :: M.Model -> StaticFile
tailwindCssFile :: Model -> StaticFile
tailwindCssFile Model
model =
  forall a. a -> Maybe a -> a
fromMaybe (forall a t. (HasCallStack, IsText t) => t -> a
error Text
"model not ready?") forall a b. (a -> b) -> a -> b
$ forall (f :: Type -> Type).
FilePath -> ModelT f -> Maybe StaticFile
M.modelLookupStaticFile FilePath
tailwindFullCssPath Model
model