mirror of
https://github.com/dillonkearns/elm-pages-v3-beta.git
synced 2024-12-23 20:03:31 +03:00
627 lines
21 KiB
Plaintext
627 lines
21 KiB
Plaintext
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
|
|
exports[`generate UI file 1`] = `
|
|
"port module Pages exposing (PathKey, allPages, allImages, internals, images, isValidRoute, pages, builtAt)
|
|
|
|
import Color exposing (Color)
|
|
import Pages.Internal
|
|
import Head
|
|
import Html exposing (Html)
|
|
import Json.Decode
|
|
import Json.Encode
|
|
import Pages.Platform
|
|
import Pages.Manifest exposing (DisplayMode, Orientation)
|
|
import Pages.Manifest.Category as Category exposing (Category)
|
|
import Url.Parser as Url exposing ((</>), s)
|
|
import Pages.ImagePath as ImagePath exposing (ImagePath)
|
|
import Pages.PagePath as PagePath exposing (PagePath)
|
|
import Pages.Directory as Directory exposing (Directory)
|
|
import Time
|
|
|
|
|
|
builtAt : Time.Posix
|
|
builtAt =
|
|
Time.millisToPosix 1589734402000
|
|
|
|
|
|
type PathKey
|
|
= PathKey
|
|
|
|
|
|
buildImage : List String -> ImagePath.Dimensions -> ImagePath PathKey
|
|
buildImage path dimensions =
|
|
ImagePath.build PathKey (\\"images\\" :: path) dimensions
|
|
|
|
|
|
buildPage : List String -> PagePath PathKey
|
|
buildPage path =
|
|
PagePath.build PathKey path
|
|
|
|
|
|
directoryWithIndex : List String -> Directory PathKey Directory.WithIndex
|
|
directoryWithIndex path =
|
|
Directory.withIndex PathKey allPages path
|
|
|
|
|
|
directoryWithoutIndex : List String -> Directory PathKey Directory.WithoutIndex
|
|
directoryWithoutIndex path =
|
|
Directory.withoutIndex PathKey allPages path
|
|
|
|
|
|
port toJsPort : Json.Encode.Value -> Cmd msg
|
|
|
|
port fromJsPort : (Json.Decode.Value -> msg) -> Sub msg
|
|
|
|
|
|
internals : Pages.Internal.Internal PathKey
|
|
internals =
|
|
{ applicationType = Pages.Internal.Browser
|
|
, toJsPort = toJsPort
|
|
, fromJsPort = fromJsPort identity
|
|
, content = content
|
|
, pathKey = PathKey
|
|
}
|
|
|
|
|
|
|
|
|
|
allPages : List (PagePath PathKey)
|
|
allPages =
|
|
[
|
|
]
|
|
|
|
pages =
|
|
{ directory = directoryWithoutIndex []
|
|
}
|
|
|
|
images =
|
|
{ staticHttpError = (buildImage [ \\"static-http-error.png\\" ] { width = 919, height = 105 })
|
|
, directory = directoryWithoutIndex []
|
|
}
|
|
|
|
|
|
allImages : List (ImagePath PathKey)
|
|
allImages =
|
|
[(buildImage [ \\"static-http-error.png\\" ] { width = 919, height = 105 })
|
|
]
|
|
|
|
|
|
isValidRoute : String -> Result String ()
|
|
isValidRoute route =
|
|
let
|
|
validRoutes =
|
|
List.map PagePath.toString allPages
|
|
in
|
|
if
|
|
(route |> String.startsWith \\"http://\\")
|
|
|| (route |> String.startsWith \\"https://\\")
|
|
|| (route |> String.startsWith \\"#\\")
|
|
|| (validRoutes |> List.member route)
|
|
then
|
|
Ok ()
|
|
|
|
else
|
|
(\\"Valid routes:\\\\n\\"
|
|
++ String.join \\"\\\\n\\\\n\\" validRoutes
|
|
)
|
|
|> Err
|
|
|
|
|
|
content : List ( List String, { extension: String, frontMatter : String, body : Maybe String } )
|
|
content =
|
|
[
|
|
]
|
|
"
|
|
`;
|
|
|
|
exports[`generate template module connector 1`] = `
|
|
"module TemplateDemultiplexer exposing (..)
|
|
|
|
import Browser
|
|
import Shared
|
|
import TemplateType as M exposing (Metadata)
|
|
import Head
|
|
import Html exposing (Html)
|
|
import Pages
|
|
import Pages.PagePath exposing (PagePath)
|
|
import Pages.Platform
|
|
import Pages.StaticHttp as StaticHttp
|
|
import Site
|
|
import Template.BlogIndex
|
|
import Template.BlogPost
|
|
import Template.Documentation
|
|
import Template.Page
|
|
import Template.Showcase
|
|
|
|
|
|
type alias Model =
|
|
{ global : Shared.Model
|
|
, page : TemplateModel
|
|
, current :
|
|
Maybe
|
|
{ path :
|
|
{ path : PagePath Pages.PathKey
|
|
, query : Maybe String
|
|
, fragment : Maybe String
|
|
}
|
|
, metadata : Metadata
|
|
}
|
|
}
|
|
|
|
|
|
type TemplateModel
|
|
= ModelBlogIndex Template.BlogIndex.Model
|
|
| ModelBlogPost Template.BlogPost.Model
|
|
| ModelDocumentation Template.Documentation.Model
|
|
| ModelPage Template.Page.Model
|
|
| ModelShowcase Template.Showcase.Model
|
|
|
|
| NotFound
|
|
|
|
|
|
|
|
type Msg
|
|
= MsgGlobal Shared.Msg
|
|
| OnPageChange
|
|
{ path : PagePath Pages.PathKey
|
|
, query : Maybe String
|
|
, fragment : Maybe String
|
|
, metadata : Metadata
|
|
}
|
|
| MsgBlogIndex Template.BlogIndex.Msg
|
|
| MsgBlogPost Template.BlogPost.Msg
|
|
| MsgDocumentation Template.Documentation.Msg
|
|
| MsgPage Template.Page.Msg
|
|
| MsgShowcase Template.Showcase.Msg
|
|
|
|
|
|
|
|
view :
|
|
List ( PagePath Pages.PathKey, Metadata )
|
|
->
|
|
{ path : PagePath Pages.PathKey
|
|
, frontmatter : Metadata
|
|
}
|
|
->
|
|
StaticHttp.Request
|
|
{ view : Model -> Shared.RenderedBody -> { title : String, body : Html Msg }
|
|
, head : List (Head.Tag Pages.PathKey)
|
|
}
|
|
view siteMetadata page =
|
|
case page.frontmatter of
|
|
M.BlogIndex metadata ->
|
|
StaticHttp.map2
|
|
(\\\\data globalData ->
|
|
{ view =
|
|
\\\\model rendered ->
|
|
case model.page of
|
|
ModelBlogIndex subModel ->
|
|
Template.BlogIndex.template.view
|
|
siteMetadata
|
|
data
|
|
subModel
|
|
metadata
|
|
rendered
|
|
|> (\\\\{ title, body } ->
|
|
Shared.view
|
|
globalData
|
|
page
|
|
model.global
|
|
MsgGlobal
|
|
({ title = title, body = body }
|
|
|> Shared.map MsgBlogIndex
|
|
)
|
|
)
|
|
|
|
_ ->
|
|
{ title = \\"\\", body = Html.text \\"\\" }
|
|
, head = Template.BlogIndex.template.head data page.path metadata
|
|
}
|
|
)
|
|
(Template.BlogIndex.template.staticData siteMetadata)
|
|
(Shared.staticData siteMetadata)
|
|
|
|
|
|
M.BlogPost metadata ->
|
|
StaticHttp.map2
|
|
(\\\\data globalData ->
|
|
{ view =
|
|
\\\\model rendered ->
|
|
case model.page of
|
|
ModelBlogPost subModel ->
|
|
Template.BlogPost.template.view
|
|
siteMetadata
|
|
data
|
|
subModel
|
|
metadata
|
|
rendered
|
|
|> (\\\\{ title, body } ->
|
|
Shared.view
|
|
globalData
|
|
page
|
|
model.global
|
|
MsgGlobal
|
|
({ title = title, body = body }
|
|
|> Shared.map MsgBlogPost
|
|
)
|
|
)
|
|
|
|
_ ->
|
|
{ title = \\"\\", body = Html.text \\"\\" }
|
|
, head = Template.BlogPost.template.head data page.path metadata
|
|
}
|
|
)
|
|
(Template.BlogPost.template.staticData siteMetadata)
|
|
(Shared.staticData siteMetadata)
|
|
|
|
|
|
M.Documentation metadata ->
|
|
StaticHttp.map2
|
|
(\\\\data globalData ->
|
|
{ view =
|
|
\\\\model rendered ->
|
|
case model.page of
|
|
ModelDocumentation subModel ->
|
|
Template.Documentation.template.view
|
|
siteMetadata
|
|
data
|
|
subModel
|
|
metadata
|
|
rendered
|
|
|> (\\\\{ title, body } ->
|
|
Shared.view
|
|
globalData
|
|
page
|
|
model.global
|
|
MsgGlobal
|
|
({ title = title, body = body }
|
|
|> Shared.map MsgDocumentation
|
|
)
|
|
)
|
|
|
|
_ ->
|
|
{ title = \\"\\", body = Html.text \\"\\" }
|
|
, head = Template.Documentation.template.head data page.path metadata
|
|
}
|
|
)
|
|
(Template.Documentation.template.staticData siteMetadata)
|
|
(Shared.staticData siteMetadata)
|
|
|
|
|
|
M.Page metadata ->
|
|
StaticHttp.map2
|
|
(\\\\data globalData ->
|
|
{ view =
|
|
\\\\model rendered ->
|
|
case model.page of
|
|
ModelPage subModel ->
|
|
Template.Page.template.view
|
|
siteMetadata
|
|
data
|
|
subModel
|
|
metadata
|
|
rendered
|
|
|> (\\\\{ title, body } ->
|
|
Shared.view
|
|
globalData
|
|
page
|
|
model.global
|
|
MsgGlobal
|
|
({ title = title, body = body }
|
|
|> Shared.map MsgPage
|
|
)
|
|
)
|
|
|
|
_ ->
|
|
{ title = \\"\\", body = Html.text \\"\\" }
|
|
, head = Template.Page.template.head data page.path metadata
|
|
}
|
|
)
|
|
(Template.Page.template.staticData siteMetadata)
|
|
(Shared.staticData siteMetadata)
|
|
|
|
|
|
M.Showcase metadata ->
|
|
StaticHttp.map2
|
|
(\\\\data globalData ->
|
|
{ view =
|
|
\\\\model rendered ->
|
|
case model.page of
|
|
ModelShowcase subModel ->
|
|
Template.Showcase.template.view
|
|
siteMetadata
|
|
data
|
|
subModel
|
|
metadata
|
|
rendered
|
|
|> (\\\\{ title, body } ->
|
|
Shared.view
|
|
globalData
|
|
page
|
|
model.global
|
|
MsgGlobal
|
|
({ title = title, body = body }
|
|
|> Shared.map MsgShowcase
|
|
)
|
|
)
|
|
|
|
_ ->
|
|
{ title = \\"\\", body = Html.text \\"\\" }
|
|
, head = Template.Showcase.template.head data page.path metadata
|
|
}
|
|
)
|
|
(Template.Showcase.template.staticData siteMetadata)
|
|
(Shared.staticData siteMetadata)
|
|
|
|
|
|
|
|
init :
|
|
Maybe Shared.Model
|
|
->
|
|
Maybe
|
|
{ path :
|
|
{ path : PagePath Pages.PathKey
|
|
, query : Maybe String
|
|
, fragment : Maybe String
|
|
}
|
|
, metadata : Metadata
|
|
}
|
|
-> ( Model, Cmd Msg )
|
|
init currentGlobalModel maybePagePath =
|
|
let
|
|
( sharedModel, globalCmd ) =
|
|
currentGlobalModel |> Maybe.map (\\\\m -> ( m, Cmd.none )) |> Maybe.withDefault (Shared.init maybePagePath)
|
|
|
|
page =
|
|
case maybePagePath |> Maybe.map .metadata of
|
|
Nothing ->
|
|
NotFound
|
|
|
|
Just meta ->
|
|
case meta of
|
|
M.BlogIndex metadata ->
|
|
Template.BlogIndex.template.init metadata
|
|
|> Tuple.first
|
|
|> ModelBlogIndex
|
|
|
|
|
|
M.BlogPost metadata ->
|
|
Template.BlogPost.template.init metadata
|
|
|> Tuple.first
|
|
|> ModelBlogPost
|
|
|
|
|
|
M.Documentation metadata ->
|
|
Template.Documentation.template.init metadata
|
|
|> Tuple.first
|
|
|> ModelDocumentation
|
|
|
|
|
|
M.Page metadata ->
|
|
Template.Page.template.init metadata
|
|
|> Tuple.first
|
|
|> ModelPage
|
|
|
|
|
|
M.Showcase metadata ->
|
|
Template.Showcase.template.init metadata
|
|
|> Tuple.first
|
|
|> ModelShowcase
|
|
|
|
|
|
|
|
( templateModel, templateCmd ) =
|
|
load sharedModel page
|
|
in
|
|
( { global = sharedModel
|
|
, page = templateModel
|
|
, current = maybePagePath
|
|
}
|
|
, Cmd.batch
|
|
[ templateCmd
|
|
, globalCmd |> Cmd.map MsgGlobal
|
|
]
|
|
)
|
|
|
|
|
|
|
|
update : Msg -> Model -> ( Model, Cmd Msg )
|
|
update msg model =
|
|
case msg of
|
|
MsgGlobal msg_ ->
|
|
let
|
|
( sharedModel, globalCmd ) =
|
|
Shared.update msg_ model.global
|
|
|
|
( templateModel, templateCmd ) =
|
|
load sharedModel model.page
|
|
in
|
|
( { model
|
|
| global = sharedModel
|
|
, page = templateModel
|
|
}
|
|
, Cmd.batch
|
|
[ templateCmd
|
|
, globalCmd |> Cmd.map MsgGlobal
|
|
]
|
|
)
|
|
|
|
OnPageChange record ->
|
|
init (Just model.global) <|
|
|
Just
|
|
{ path =
|
|
{ path = record.path
|
|
, query = record.query
|
|
, fragment = record.fragment
|
|
}
|
|
, metadata = record.metadata
|
|
}
|
|
|
|
|
|
MsgBlogIndex msg_ ->
|
|
let
|
|
( updatedPageModel, pageCmd ) =
|
|
case ( model.page, model.current |> Maybe.map .metadata ) of
|
|
( ModelBlogIndex pageModel, Just (M.BlogIndex metadata) ) ->
|
|
Template.BlogIndex.template.update
|
|
metadata
|
|
msg_
|
|
pageModel
|
|
|> Tuple.mapBoth ModelBlogIndex (Cmd.map MsgBlogIndex)
|
|
|
|
_ ->
|
|
( model.page, Cmd.none )
|
|
in
|
|
( { model | page = updatedPageModel, global = save updatedPageModel model.global }, pageCmd )
|
|
|
|
|
|
MsgBlogPost msg_ ->
|
|
let
|
|
( updatedPageModel, pageCmd ) =
|
|
case ( model.page, model.current |> Maybe.map .metadata ) of
|
|
( ModelBlogPost pageModel, Just (M.BlogPost metadata) ) ->
|
|
Template.BlogPost.template.update
|
|
metadata
|
|
msg_
|
|
pageModel
|
|
|> Tuple.mapBoth ModelBlogPost (Cmd.map MsgBlogPost)
|
|
|
|
_ ->
|
|
( model.page, Cmd.none )
|
|
in
|
|
( { model | page = updatedPageModel, global = save updatedPageModel model.global }, pageCmd )
|
|
|
|
|
|
MsgDocumentation msg_ ->
|
|
let
|
|
( updatedPageModel, pageCmd ) =
|
|
case ( model.page, model.current |> Maybe.map .metadata ) of
|
|
( ModelDocumentation pageModel, Just (M.Documentation metadata) ) ->
|
|
Template.Documentation.template.update
|
|
metadata
|
|
msg_
|
|
pageModel
|
|
|> Tuple.mapBoth ModelDocumentation (Cmd.map MsgDocumentation)
|
|
|
|
_ ->
|
|
( model.page, Cmd.none )
|
|
in
|
|
( { model | page = updatedPageModel, global = save updatedPageModel model.global }, pageCmd )
|
|
|
|
|
|
MsgPage msg_ ->
|
|
let
|
|
( updatedPageModel, pageCmd ) =
|
|
case ( model.page, model.current |> Maybe.map .metadata ) of
|
|
( ModelPage pageModel, Just (M.Page metadata) ) ->
|
|
Template.Page.template.update
|
|
metadata
|
|
msg_
|
|
pageModel
|
|
|> Tuple.mapBoth ModelPage (Cmd.map MsgPage)
|
|
|
|
_ ->
|
|
( model.page, Cmd.none )
|
|
in
|
|
( { model | page = updatedPageModel, global = save updatedPageModel model.global }, pageCmd )
|
|
|
|
|
|
MsgShowcase msg_ ->
|
|
let
|
|
( updatedPageModel, pageCmd ) =
|
|
case ( model.page, model.current |> Maybe.map .metadata ) of
|
|
( ModelShowcase pageModel, Just (M.Showcase metadata) ) ->
|
|
Template.Showcase.template.update
|
|
metadata
|
|
msg_
|
|
pageModel
|
|
|> Tuple.mapBoth ModelShowcase (Cmd.map MsgShowcase)
|
|
|
|
_ ->
|
|
( model.page, Cmd.none )
|
|
in
|
|
( { model | page = updatedPageModel, global = save updatedPageModel model.global }, pageCmd )
|
|
|
|
|
|
|
|
|
|
load : Shared.Model -> TemplateModel -> ( TemplateModel, Cmd Msg )
|
|
load sharedModel model =
|
|
case model of
|
|
ModelBlogIndex m ->
|
|
Template.BlogIndex.template.load sharedModel m
|
|
|> Tuple.mapFirst (ModelBlogIndex)
|
|
|> Tuple.mapSecond (Cmd.map MsgBlogIndex)
|
|
|
|
ModelBlogPost m ->
|
|
Template.BlogPost.template.load sharedModel m
|
|
|> Tuple.mapFirst (ModelBlogPost)
|
|
|> Tuple.mapSecond (Cmd.map MsgBlogPost)
|
|
|
|
ModelDocumentation m ->
|
|
Template.Documentation.template.load sharedModel m
|
|
|> Tuple.mapFirst (ModelDocumentation)
|
|
|> Tuple.mapSecond (Cmd.map MsgDocumentation)
|
|
|
|
ModelPage m ->
|
|
Template.Page.template.load sharedModel m
|
|
|> Tuple.mapFirst (ModelPage)
|
|
|> Tuple.mapSecond (Cmd.map MsgPage)
|
|
|
|
ModelShowcase m ->
|
|
Template.Showcase.template.load sharedModel m
|
|
|> Tuple.mapFirst (ModelShowcase)
|
|
|> Tuple.mapSecond (Cmd.map MsgShowcase)
|
|
|
|
|
|
NotFound ->
|
|
( model, Cmd.none )
|
|
|
|
|
|
|
|
save : TemplateModel -> Shared.Model -> Shared.Model
|
|
save model sharedModel=
|
|
case model of
|
|
ModelBlogIndex m ->
|
|
Template.BlogIndex.template.save m sharedModel
|
|
|
|
ModelBlogPost m ->
|
|
Template.BlogPost.template.save m sharedModel
|
|
|
|
ModelDocumentation m ->
|
|
Template.Documentation.template.save m sharedModel
|
|
|
|
ModelPage m ->
|
|
Template.Page.template.save m sharedModel
|
|
|
|
ModelShowcase m ->
|
|
Template.Showcase.template.save m sharedModel
|
|
|
|
|
|
NotFound ->
|
|
sharedModel
|
|
|
|
|
|
|
|
mainTemplate { documents, manifest, canonicalSiteUrl, subscriptions } =
|
|
Pages.Platform.init
|
|
{ init = init Nothing
|
|
, view = view
|
|
, update = update
|
|
, subscriptions = subscriptions
|
|
, documents = documents
|
|
, onPageChange = Just OnPageChange
|
|
, manifest = manifest -- Site.manifest
|
|
, canonicalSiteUrl = canonicalSiteUrl -- Site.canonicalUrl
|
|
, internals = Pages.internals
|
|
}
|
|
|
|
|
|
mapDocument : Browser.Document Never -> Browser.Document mapped
|
|
mapDocument document =
|
|
{ title = document.title
|
|
, body = document.body |> List.map (Html.map never)
|
|
}
|
|
"
|
|
`;
|