mirror of
https://github.com/ryan-haskell/elm-spa.git
synced 2024-09-11 12:35:44 +03:00
start to reorganize the repo to support docs
This commit is contained in:
parent
66607e8a38
commit
1fc64ccfb7
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,4 +1,5 @@
|
||||
.DS_Store
|
||||
dist
|
||||
elm-stuff/0.19.1
|
||||
example/elm-stuff/0.19.1
|
||||
node_modules
|
@ -2,8 +2,8 @@
|
||||
> for building single page apps
|
||||
|
||||
|
||||
## local development
|
||||
## run the example!
|
||||
|
||||
```
|
||||
npm install && npm run dev
|
||||
npm run example
|
||||
```
|
||||
|
41
elm.json
41
elm.json
@ -1,29 +1,20 @@
|
||||
{
|
||||
"type": "application",
|
||||
"source-directories": [
|
||||
"src",
|
||||
"example",
|
||||
"elm-stuff/.elm-spa"
|
||||
"type": "package",
|
||||
"name": "ryannhg/elm-app",
|
||||
"summary": "a way to build single page apps with Elm",
|
||||
"license": "BSD-3-Clause",
|
||||
"version": "1.0.0",
|
||||
"exposed-modules": [
|
||||
"App",
|
||||
"App.Page",
|
||||
"App.Types"
|
||||
],
|
||||
"elm-version": "0.19.1",
|
||||
"elm-version": "0.19.0 <= v < 0.20.0",
|
||||
"dependencies": {
|
||||
"direct": {
|
||||
"elm/browser": "1.0.2",
|
||||
"elm/core": "1.0.2",
|
||||
"elm/html": "1.0.0",
|
||||
"elm/json": "1.1.3",
|
||||
"elm/url": "1.0.0",
|
||||
"elm-explorations/markdown": "1.0.0",
|
||||
"mdgriffith/elm-ui": "1.1.5",
|
||||
"ryannhg/elm-spa": "1.0.0"
|
||||
},
|
||||
"indirect": {
|
||||
"elm/time": "1.0.0",
|
||||
"elm/virtual-dom": "1.0.2"
|
||||
}
|
||||
"elm/browser": "1.0.0 <= v < 2.0.0",
|
||||
"elm/core": "1.0.0 <= v < 2.0.0",
|
||||
"elm/html": "1.0.0 <= v < 2.0.0",
|
||||
"elm/url": "1.0.0 <= v < 2.0.0"
|
||||
},
|
||||
"test-dependencies": {
|
||||
"direct": {},
|
||||
"indirect": {}
|
||||
}
|
||||
}
|
||||
"test-dependencies": {}
|
||||
}
|
@ -1,5 +1,10 @@
|
||||
# src
|
||||
# elm-spa/example
|
||||
> what a project might look like!
|
||||
|
||||
```elm
|
||||
|
||||
## running things
|
||||
|
||||
```
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
@ -6,11 +6,11 @@ module Generated.Docs.Pages exposing
|
||||
|
||||
import App.Page
|
||||
import Generated.Docs.Params as Params
|
||||
import Generated.Docs.Route as Route exposing (Route(..))
|
||||
import Generated.Docs.Route as Route exposing (Route)
|
||||
import Layouts.Docs as Layout
|
||||
import Pages.Docs.Dynamic
|
||||
import Pages.Docs.Static
|
||||
import Utils.Page as Page exposing (Page)
|
||||
import Utils.Spa as Spa exposing (Page)
|
||||
|
||||
|
||||
type Model
|
||||
@ -25,7 +25,7 @@ type Msg
|
||||
|
||||
page : Page Route Model Msg layoutModel layoutMsg appMsg
|
||||
page =
|
||||
Page.layout
|
||||
Spa.layout
|
||||
{ view = Layout.view
|
||||
, recipe =
|
||||
{ init = init
|
||||
@ -40,7 +40,7 @@ page =
|
||||
|
||||
|
||||
type alias Recipe flags model msg appMsg =
|
||||
Page.Recipe flags model msg Model Msg appMsg
|
||||
Spa.Recipe flags model msg Model Msg appMsg
|
||||
|
||||
|
||||
type alias Recipes msg =
|
||||
@ -52,13 +52,13 @@ type alias Recipes msg =
|
||||
recipes : Recipes msg
|
||||
recipes =
|
||||
{ dynamic =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Docs.Dynamic.page
|
||||
, toModel = DynamicModel
|
||||
, toMsg = DynamicMsg
|
||||
}
|
||||
, static =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Docs.Static.page
|
||||
, toModel = StaticModel
|
||||
, toMsg = StaticMsg
|
||||
@ -70,7 +70,7 @@ recipes =
|
||||
-- INIT
|
||||
|
||||
|
||||
init : Route -> Page.Init Model Msg
|
||||
init : Route -> Spa.Init Model Msg
|
||||
init route =
|
||||
case route of
|
||||
Route.Dynamic _ flags ->
|
||||
@ -84,7 +84,7 @@ init route =
|
||||
-- UPDATE
|
||||
|
||||
|
||||
update : Msg -> Model -> Page.Update Model Msg
|
||||
update : Msg -> Model -> Spa.Update Model Msg
|
||||
update bigMsg bigModel =
|
||||
case ( bigMsg, bigModel ) of
|
||||
( DynamicMsg msg, DynamicModel model ) ->
|
||||
@ -101,7 +101,7 @@ update bigMsg bigModel =
|
||||
-- BUNDLE
|
||||
|
||||
|
||||
bundle : Model -> Page.Bundle Msg msg
|
||||
bundle : Model -> Spa.Bundle Msg msg
|
||||
bundle bigModel =
|
||||
case bigModel of
|
||||
DynamicModel model ->
|
@ -6,10 +6,10 @@ module Generated.Guide.Dynamic.Dynamic.Pages exposing
|
||||
|
||||
import App.Page
|
||||
import Generated.Guide.Dynamic.Dynamic.Params as Params
|
||||
import Generated.Guide.Dynamic.Dynamic.Route as Route exposing (Route(..))
|
||||
import Generated.Guide.Dynamic.Dynamic.Route as Route exposing (Route)
|
||||
import Layouts.Guide.Dynamic.Dynamic as Layout
|
||||
import Pages.Guide.Dynamic.Dynamic.Top
|
||||
import Utils.Page as Page exposing (Page)
|
||||
import Utils.Spa as Spa exposing (Page)
|
||||
|
||||
|
||||
type Model
|
||||
@ -22,7 +22,7 @@ type Msg
|
||||
|
||||
page : Page Route Model Msg layoutModel layoutMsg appMsg
|
||||
page =
|
||||
Page.layout
|
||||
Spa.layout
|
||||
{ view = Layout.view
|
||||
, recipe =
|
||||
{ init = init
|
||||
@ -37,7 +37,7 @@ page =
|
||||
|
||||
|
||||
type alias Recipe flags model msg appMsg =
|
||||
Page.Recipe flags model msg Model Msg appMsg
|
||||
Spa.Recipe flags model msg Model Msg appMsg
|
||||
|
||||
|
||||
type alias Recipes msg =
|
||||
@ -48,7 +48,7 @@ type alias Recipes msg =
|
||||
recipes : Recipes msg
|
||||
recipes =
|
||||
{ top =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Guide.Dynamic.Dynamic.Top.page
|
||||
, toModel = TopModel
|
||||
, toMsg = TopMsg
|
||||
@ -60,7 +60,7 @@ recipes =
|
||||
-- INIT
|
||||
|
||||
|
||||
init : Route -> Page.Init Model Msg
|
||||
init : Route -> Spa.Init Model Msg
|
||||
init route =
|
||||
case route of
|
||||
Route.Top flags ->
|
||||
@ -71,7 +71,7 @@ init route =
|
||||
-- UPDATE
|
||||
|
||||
|
||||
update : Msg -> Model -> Page.Update Model Msg
|
||||
update : Msg -> Model -> Spa.Update Model Msg
|
||||
update bigMsg bigModel =
|
||||
case ( bigMsg, bigModel ) of
|
||||
( TopMsg msg, TopModel model ) ->
|
||||
@ -82,7 +82,7 @@ update bigMsg bigModel =
|
||||
-- BUNDLE
|
||||
|
||||
|
||||
bundle : Model -> Page.Bundle Msg msg
|
||||
bundle : Model -> Spa.Bundle Msg msg
|
||||
bundle bigModel =
|
||||
case bigModel of
|
||||
TopModel model ->
|
@ -6,10 +6,10 @@ module Generated.Guide.Dynamic.Faq.Pages exposing
|
||||
|
||||
import App.Page
|
||||
import Generated.Guide.Dynamic.Faq.Params as Params
|
||||
import Generated.Guide.Dynamic.Faq.Route as Route exposing (Route(..))
|
||||
import Generated.Guide.Dynamic.Faq.Route as Route exposing (Route)
|
||||
import Layouts.Guide.Dynamic.Faq as Layout
|
||||
import Pages.Guide.Dynamic.Faq.Top
|
||||
import Utils.Page as Page exposing (Page)
|
||||
import Utils.Spa as Spa exposing (Page)
|
||||
|
||||
|
||||
type Model
|
||||
@ -22,7 +22,7 @@ type Msg
|
||||
|
||||
page : Page Route Model Msg layoutModel layoutMsg appMsg
|
||||
page =
|
||||
Page.layout
|
||||
Spa.layout
|
||||
{ view = Layout.view
|
||||
, recipe =
|
||||
{ init = init
|
||||
@ -37,7 +37,7 @@ page =
|
||||
|
||||
|
||||
type alias Recipe flags model msg appMsg =
|
||||
Page.Recipe flags model msg Model Msg appMsg
|
||||
Spa.Recipe flags model msg Model Msg appMsg
|
||||
|
||||
|
||||
type alias Recipes msg =
|
||||
@ -48,7 +48,7 @@ type alias Recipes msg =
|
||||
recipes : Recipes msg
|
||||
recipes =
|
||||
{ top =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Guide.Dynamic.Faq.Top.page
|
||||
, toModel = TopModel
|
||||
, toMsg = TopMsg
|
||||
@ -60,7 +60,7 @@ recipes =
|
||||
-- INIT
|
||||
|
||||
|
||||
init : Route -> Page.Init Model Msg
|
||||
init : Route -> Spa.Init Model Msg
|
||||
init route =
|
||||
case route of
|
||||
Route.Top flags ->
|
||||
@ -71,7 +71,7 @@ init route =
|
||||
-- UPDATE
|
||||
|
||||
|
||||
update : Msg -> Model -> Page.Update Model Msg
|
||||
update : Msg -> Model -> Spa.Update Model Msg
|
||||
update bigMsg bigModel =
|
||||
case ( bigMsg, bigModel ) of
|
||||
( TopMsg msg, TopModel model ) ->
|
||||
@ -82,7 +82,7 @@ update bigMsg bigModel =
|
||||
-- BUNDLE
|
||||
|
||||
|
||||
bundle : Model -> Page.Bundle Msg msg
|
||||
bundle : Model -> Spa.Bundle Msg msg
|
||||
bundle bigModel =
|
||||
case bigModel of
|
||||
TopModel model ->
|
@ -15,7 +15,7 @@ import Layouts.Guide.Dynamic as Layout
|
||||
import Pages.Guide.Dynamic.Dynamic
|
||||
import Pages.Guide.Dynamic.Intro
|
||||
import Pages.Guide.Dynamic.Other
|
||||
import Utils.Page as Page exposing (Page)
|
||||
import Utils.Spa as Spa exposing (Page)
|
||||
|
||||
|
||||
type Model
|
||||
@ -36,7 +36,7 @@ type Msg
|
||||
|
||||
page : Page Route Model Msg layoutModel layoutMsg appMsg
|
||||
page =
|
||||
Page.layout
|
||||
Spa.layout
|
||||
{ view = Layout.view
|
||||
, recipe =
|
||||
{ init = init
|
||||
@ -51,7 +51,7 @@ page =
|
||||
|
||||
|
||||
type alias Recipe flags model msg appMsg =
|
||||
Page.Recipe flags model msg Model Msg appMsg
|
||||
Spa.Recipe flags model msg Model Msg appMsg
|
||||
|
||||
|
||||
type alias Recipes msg =
|
||||
@ -66,31 +66,31 @@ type alias Recipes msg =
|
||||
recipes : Recipes msg
|
||||
recipes =
|
||||
{ intro =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Guide.Dynamic.Intro.page
|
||||
, toModel = IntroModel
|
||||
, toMsg = IntroMsg
|
||||
}
|
||||
, other =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Guide.Dynamic.Other.page
|
||||
, toModel = OtherModel
|
||||
, toMsg = OtherMsg
|
||||
}
|
||||
, dynamic =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Guide.Dynamic.Dynamic.page
|
||||
, toModel = DynamicModel
|
||||
, toMsg = DynamicMsg
|
||||
}
|
||||
, faq_folder =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Generated.Guide.Dynamic.Faq.Pages.page
|
||||
, toModel = Faq_FolderModel
|
||||
, toMsg = Faq_FolderMsg
|
||||
}
|
||||
, dynamic_folder =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Generated.Guide.Dynamic.Dynamic.Pages.page
|
||||
, toModel = Dynamic_FolderModel
|
||||
, toMsg = Dynamic_FolderMsg
|
||||
@ -102,7 +102,7 @@ recipes =
|
||||
-- INIT
|
||||
|
||||
|
||||
init : Route -> Page.Init Model Msg
|
||||
init : Route -> Spa.Init Model Msg
|
||||
init route =
|
||||
case route of
|
||||
Route.Intro flags ->
|
||||
@ -125,7 +125,7 @@ init route =
|
||||
-- UPDATE
|
||||
|
||||
|
||||
update : Msg -> Model -> Page.Update Model Msg
|
||||
update : Msg -> Model -> Spa.Update Model Msg
|
||||
update bigMsg bigModel =
|
||||
case ( bigMsg, bigModel ) of
|
||||
( IntroMsg msg, IntroModel model ) ->
|
||||
@ -151,7 +151,7 @@ update bigMsg bigModel =
|
||||
-- BUNDLE
|
||||
|
||||
|
||||
bundle : Model -> Page.Bundle Msg msg
|
||||
bundle : Model -> Spa.Bundle Msg msg
|
||||
bundle bigModel =
|
||||
case bigModel of
|
||||
IntroModel model ->
|
@ -13,7 +13,7 @@ import Layouts.Guide as Layout
|
||||
import Pages.Guide.Elm
|
||||
import Pages.Guide.ElmSpa
|
||||
import Pages.Guide.Programming
|
||||
import Utils.Page as Page exposing (Page)
|
||||
import Utils.Spa as Spa exposing (Page)
|
||||
|
||||
|
||||
type Model
|
||||
@ -32,7 +32,7 @@ type Msg
|
||||
|
||||
page : Page Route Model Msg layoutModel layoutMsg appMsg
|
||||
page =
|
||||
Page.layout
|
||||
Spa.layout
|
||||
{ view = Layout.view
|
||||
, recipe =
|
||||
{ init = init
|
||||
@ -47,7 +47,7 @@ page =
|
||||
|
||||
|
||||
type alias Recipe flags model msg appMsg =
|
||||
Page.Recipe flags model msg Model Msg appMsg
|
||||
Spa.Recipe flags model msg Model Msg appMsg
|
||||
|
||||
|
||||
type alias Recipes msg =
|
||||
@ -61,25 +61,25 @@ type alias Recipes msg =
|
||||
recipes : Recipes msg
|
||||
recipes =
|
||||
{ elm =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Guide.Elm.page
|
||||
, toModel = ElmModel
|
||||
, toMsg = ElmMsg
|
||||
}
|
||||
, elmApp =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Guide.ElmSpa.page
|
||||
, toModel = ElmSpaModel
|
||||
, toMsg = ElmSpaMsg
|
||||
}
|
||||
, programming =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Guide.Programming.page
|
||||
, toModel = ProgrammingModel
|
||||
, toMsg = ProgrammingMsg
|
||||
}
|
||||
, dynamic_folder =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Generated.Guide.Dynamic.Pages.page
|
||||
, toModel = Dynamic_Folder_Model
|
||||
, toMsg = Dynamic_Folder_Msg
|
||||
@ -91,7 +91,7 @@ recipes =
|
||||
-- INIT
|
||||
|
||||
|
||||
init : Route -> Page.Init Model Msg
|
||||
init : Route -> Spa.Init Model Msg
|
||||
init route =
|
||||
case route of
|
||||
Route.Elm flags ->
|
||||
@ -111,7 +111,7 @@ init route =
|
||||
-- UPDATE
|
||||
|
||||
|
||||
update : Msg -> Model -> Page.Update Model Msg
|
||||
update : Msg -> Model -> Spa.Update Model Msg
|
||||
update bigMsg bigModel =
|
||||
case ( bigMsg, bigModel ) of
|
||||
( ElmMsg msg, ElmModel model ) ->
|
||||
@ -134,7 +134,7 @@ update bigMsg bigModel =
|
||||
-- BUNDLE
|
||||
|
||||
|
||||
bundle : Model -> Page.Bundle Msg msg
|
||||
bundle : Model -> Spa.Bundle Msg msg
|
||||
bundle bigModel =
|
||||
case bigModel of
|
||||
ElmModel model ->
|
@ -10,14 +10,14 @@ import Generated.Docs.Route
|
||||
import Generated.Guide.Pages
|
||||
import Generated.Guide.Route
|
||||
import Generated.Params as Params
|
||||
import Generated.Route as Route exposing (Route(..))
|
||||
import Generated.Route as Route exposing (Route)
|
||||
import Layout as Layout
|
||||
import Pages.Docs
|
||||
import Pages.Guide
|
||||
import Pages.NotFound
|
||||
import Pages.SignIn
|
||||
import Pages.Top
|
||||
import Utils.Page as Page exposing (Page)
|
||||
import Utils.Spa as Spa
|
||||
|
||||
|
||||
type Model
|
||||
@ -40,9 +40,9 @@ type Msg
|
||||
| Docs_Folder_Msg Generated.Docs.Pages.Msg
|
||||
|
||||
|
||||
page : Page Route Model Msg layoutModel layoutMsg appMsg
|
||||
page : Spa.Page Route Model Msg layoutModel layoutMsg appMsg
|
||||
page =
|
||||
Page.layout
|
||||
Spa.layout
|
||||
{ view = Layout.view
|
||||
, recipe =
|
||||
{ init = init
|
||||
@ -57,7 +57,7 @@ page =
|
||||
|
||||
|
||||
type alias Recipe flags model msg appMsg =
|
||||
Page.Recipe flags model msg Model Msg appMsg
|
||||
Spa.Recipe flags model msg Model Msg appMsg
|
||||
|
||||
|
||||
type alias Recipes msg =
|
||||
@ -74,43 +74,43 @@ type alias Recipes msg =
|
||||
recipes : Recipes msg
|
||||
recipes =
|
||||
{ top =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Top.page
|
||||
, toModel = TopModel
|
||||
, toMsg = TopMsg
|
||||
}
|
||||
, docs =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Docs.page
|
||||
, toModel = DocsModel
|
||||
, toMsg = DocsMsg
|
||||
}
|
||||
, notFound =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.NotFound.page
|
||||
, toModel = NotFoundModel
|
||||
, toMsg = NotFoundMsg
|
||||
}
|
||||
, signIn =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.SignIn.page
|
||||
, toModel = SignInModel
|
||||
, toMsg = SignInMsg
|
||||
}
|
||||
, guide =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Pages.Guide.page
|
||||
, toModel = GuideModel
|
||||
, toMsg = GuideMsg
|
||||
}
|
||||
, guide_folder =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Generated.Guide.Pages.page
|
||||
, toModel = Guide_Folder_Model
|
||||
, toMsg = Guide_Folder_Msg
|
||||
}
|
||||
, docs_folder =
|
||||
Page.recipe
|
||||
Spa.recipe
|
||||
{ page = Generated.Docs.Pages.page
|
||||
, toModel = Docs_Folder_Model
|
||||
, toMsg = Docs_Folder_Msg
|
||||
@ -122,7 +122,7 @@ recipes =
|
||||
-- INIT
|
||||
|
||||
|
||||
init : Route -> Page.Init Model Msg
|
||||
init : Route -> Spa.Init Model Msg
|
||||
init route_ =
|
||||
case route_ of
|
||||
Route.Top flags ->
|
||||
@ -151,7 +151,7 @@ init route_ =
|
||||
-- UPDATE
|
||||
|
||||
|
||||
update : Msg -> Model -> Page.Update Model Msg
|
||||
update : Msg -> Model -> Spa.Update Model Msg
|
||||
update bigMsg bigModel =
|
||||
case ( bigMsg, bigModel ) of
|
||||
( TopMsg msg, TopModel model ) ->
|
||||
@ -183,7 +183,7 @@ update bigMsg bigModel =
|
||||
-- BUNDLE
|
||||
|
||||
|
||||
bundle : Model -> Page.Bundle Msg msg
|
||||
bundle : Model -> Spa.Bundle Msg msg
|
||||
bundle bigModel =
|
||||
case bigModel of
|
||||
TopModel model ->
|
29
example/elm.json
Normal file
29
example/elm.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"type": "application",
|
||||
"source-directories": [
|
||||
"src",
|
||||
"../src",
|
||||
"elm-stuff/.elm-spa"
|
||||
],
|
||||
"elm-version": "0.19.1",
|
||||
"dependencies": {
|
||||
"direct": {
|
||||
"elm/browser": "1.0.2",
|
||||
"elm/core": "1.0.2",
|
||||
"elm/html": "1.0.0",
|
||||
"elm/json": "1.1.3",
|
||||
"elm/url": "1.0.0",
|
||||
"elm-explorations/markdown": "1.0.0",
|
||||
"mdgriffith/elm-ui": "1.1.5",
|
||||
"ryannhg/elm-spa": "1.0.0"
|
||||
},
|
||||
"indirect": {
|
||||
"elm/time": "1.0.0",
|
||||
"elm/virtual-dom": "1.0.2"
|
||||
}
|
||||
},
|
||||
"test-dependencies": {
|
||||
"direct": {},
|
||||
"indirect": {}
|
||||
}
|
||||
}
|
24
package-lock.json → example/package-lock.json
generated
24
package-lock.json → example/package-lock.json
generated
@ -210,9 +210,9 @@
|
||||
"resolved": "https://registry.npmjs.org/crocks/-/crocks-0.12.1.tgz",
|
||||
"integrity": "sha512-2qCRJwBmPlRQXzd50k9gt9PaItultOP8lj/cKSH2Eai9aeBuNqAnDuyolAm9TGn6Pw/4BgbxtPJLU1S+tQ4WMQ=="
|
||||
},
|
||||
"cross-Appwn": {
|
||||
"cross-spawn": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cross-Appwn/-/cross-Appwn-5.0.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.0.1.tgz",
|
||||
"integrity": "sha1-o7uzAtsil8vqPATt82lB9GE6o5k=",
|
||||
"requires": {
|
||||
"lru-cache": "^4.0.1",
|
||||
@ -306,7 +306,7 @@
|
||||
"chokidar": "3.0.2",
|
||||
"commander": "2.17.1",
|
||||
"crocks": "0.12.1",
|
||||
"cross-Appwn": "5.0.1",
|
||||
"cross-spawn": "5.0.1",
|
||||
"elm-hot": "1.1.1",
|
||||
"finalhandler": "1.1.2",
|
||||
"http-proxy": "1.17.0",
|
||||
@ -388,7 +388,7 @@
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
|
||||
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
|
||||
"requires": {
|
||||
"cross-Appwn": "^6.0.0",
|
||||
"cross-spawn": "^6.0.0",
|
||||
"get-stream": "^4.0.0",
|
||||
"is-stream": "^1.1.0",
|
||||
"npm-run-path": "^2.0.0",
|
||||
@ -397,9 +397,9 @@
|
||||
"strip-eof": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"cross-Appwn": {
|
||||
"cross-spawn": {
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmjs.org/cross-Appwn/-/cross-Appwn-6.0.5.tgz",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
||||
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
||||
"requires": {
|
||||
"nice-try": "^1.0.4",
|
||||
@ -505,9 +505,9 @@
|
||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.1.tgz",
|
||||
"integrity": "sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==",
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
|
||||
"integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
|
||||
"optional": true
|
||||
},
|
||||
"get-caller-file": {
|
||||
@ -887,9 +887,9 @@
|
||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.0.tgz",
|
||||
"integrity": "sha512-uhnEDzAbrcJ8R3g2fANnSuXZMBtkpSjxTTgn2LeSiQlfmq72enQJWdQllXW24MBLYnA1SBD2vfvx2o0Zw3Ielw=="
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz",
|
||||
"integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA=="
|
||||
},
|
||||
"pseudomap": {
|
||||
"version": "1.0.2",
|
23
example/package.json
Normal file
23
example/package.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "your-elm-spa",
|
||||
"version": "1.0.0",
|
||||
"description": "an example for elm-spa!",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
"start": "npm run dev",
|
||||
"dev": "npm run elm:spa:build && npm run elm:spa:watch & npm run elm:live",
|
||||
"build": "npm run elm:spa:build && npm run elm:compile",
|
||||
"elm:compile": "elm make src/Main.elm --output=dist/elm.compiled.js --optimize",
|
||||
"elm:live": "elm-live src/Main.elm --start-page=index.html --open --pushstate --port=1234 -- --output=dist/elm.compiled.js --debug",
|
||||
"elm:spa:build": "echo '🌳 elm-spa build .'",
|
||||
"elm:spa:watch": "SHELL=/bin/bash chokidar src -c 'npm run elm:spa:build'"
|
||||
},
|
||||
"dependencies": {
|
||||
"chokidar-cli": "2.1.0",
|
||||
"elm": "0.19.1-3",
|
||||
"elm-live": "4.0.1",
|
||||
"elm-spa": "1.1.0"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"keywords": []
|
||||
}
|
@ -5,7 +5,6 @@ import Element
|
||||
import Generated.Pages as Pages
|
||||
import Generated.Routes as Routes
|
||||
import Global
|
||||
import Pages.NotFound
|
||||
|
||||
|
||||
main : App.Program Global.Flags Global.Model Global.Msg Pages.Model Pages.Msg
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -5,7 +5,7 @@ import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Docs.Params as Params
|
||||
import Global
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Docs.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Guide.Dynamic.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Guide.Dynamic.Dynamic.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Guide.Dynamic.Faq.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Guide.Dynamic.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Guide.Dynamic.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Guide.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Guide.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Guide.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -4,7 +4,7 @@ import App.Page
|
||||
import Components.Hero
|
||||
import Element exposing (..)
|
||||
import Generated.Params as Params
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -12,7 +12,7 @@ import Global
|
||||
import Html exposing (Html)
|
||||
import Html.Attributes as Attr
|
||||
import Html.Events as Events
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -8,7 +8,7 @@ import Element exposing (..)
|
||||
import Generated.Params as Params
|
||||
import Html.Attributes as Attr
|
||||
import Ports
|
||||
import Utils.Page exposing (Page)
|
||||
import Utils.Spa exposing (Page)
|
||||
|
||||
|
||||
type alias Model =
|
@ -1,4 +1,4 @@
|
||||
module Utils.Page exposing
|
||||
module Utils.Spa exposing
|
||||
( Bundle
|
||||
, Init
|
||||
, Page
|
19
package.json
19
package.json
@ -1,23 +1,14 @@
|
||||
{
|
||||
"name": "elm-spa-elm-ui",
|
||||
"name": "elm-spa",
|
||||
"version": "1.0.0",
|
||||
"description": "elm-live running in the browser!",
|
||||
"description": "",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
"start": "npm run dev",
|
||||
"dev": "npm run elm:spa:build && npm run elm:spa:watch & npm run elm:live",
|
||||
"build": "npm run elm:spa:build && npm run elm:compile",
|
||||
"elm:compile": "elm make example/Main.elm --output=dist/elm.compiled.js --optimize",
|
||||
"elm:live": "elm-live example/Main.elm --start-page=index.html --pushstate --port=8080 -- --output=dist/elm.compiled.js --debug",
|
||||
"elm:spa:build": "echo '🌳 elm-spa build .'",
|
||||
"elm:spa:watch": "SHELL=/bin/bash chokidar './example' -c 'npm run elm:spa:build'"
|
||||
},
|
||||
"dependencies": {
|
||||
"chokidar-cli": "2.1.0",
|
||||
"elm": "0.19.1-3",
|
||||
"elm-live": "4.0.1",
|
||||
"elm-spa": "1.1.0"
|
||||
"example": "npm run dev",
|
||||
"dev": "(cd example && npm install && npm run dev)"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {},
|
||||
"keywords": []
|
||||
}
|
||||
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"infiniteLoopProtection": true,
|
||||
"hardReloadOnChange": false,
|
||||
"view": "browser",
|
||||
"container": {
|
||||
"port": 8080
|
||||
}
|
||||
}
|
@ -1,29 +1,118 @@
|
||||
module App.Types exposing
|
||||
( Bundle
|
||||
, Init
|
||||
, Page
|
||||
, Recipe
|
||||
, Update
|
||||
( Page, Recipe
|
||||
, Init, Update, Bundle
|
||||
)
|
||||
|
||||
{-|
|
||||
|
||||
|
||||
## Types so spooky, they got their own module! 👻
|
||||
|
||||
This module is all about exposing the types that `ryannhg/elm-app` uses
|
||||
under the hood.
|
||||
|
||||
Because so much of your app is defined outside of this package, we see
|
||||
a **lot of generic types**.
|
||||
|
||||
|
||||
### Don't be spooked!
|
||||
|
||||
In practice, we usually handle this with a `Utils/Page.elm` file that
|
||||
creates less generic `type alias` for use in your app!
|
||||
|
||||
module Utils.Spa exposing
|
||||
( Bundle
|
||||
, Init
|
||||
, Page
|
||||
, Recipe
|
||||
, Update
|
||||
, layout
|
||||
, recipe
|
||||
)
|
||||
|
||||
import App.Page
|
||||
import App.Types
|
||||
import Element exposing (Element)
|
||||
import Global
|
||||
|
||||
type alias Page flags model msg layoutModel layoutMsg appMsg =
|
||||
App.Types.Page flags model msg (Element msg) layoutModel layoutMsg (Element layoutMsg) Global.Model Global.Msg appMsg (Element appMsg)
|
||||
|
||||
type alias Recipe flags model msg layoutModel layoutMsg appMsg =
|
||||
App.Types.Recipe flags model msg layoutModel layoutMsg (Element layoutMsg) Global.Model Global.Msg appMsg (Element appMsg)
|
||||
|
||||
type alias Init model msg =
|
||||
App.Types.Init model msg Global.Model Global.Msg
|
||||
|
||||
type alias Update model msg =
|
||||
App.Types.Update model msg Global.Model Global.Msg
|
||||
|
||||
type alias Bundle msg appMsg =
|
||||
App.Types.Bundle msg (Element msg) Global.Model Global.Msg appMsg (Element appMsg)
|
||||
|
||||
layout config =
|
||||
App.Page.layout
|
||||
{ map = Element.map
|
||||
, view = config.view
|
||||
, recipe = config.recipe
|
||||
}
|
||||
|
||||
recipe config =
|
||||
App.Page.recipe
|
||||
{ map = Element.map
|
||||
, page = config.page
|
||||
, toModel = config.toModel
|
||||
, toMsg = config.toMsg
|
||||
}
|
||||
|
||||
@docs Page, Recipe
|
||||
|
||||
@docs Init, Update, Bundle
|
||||
|
||||
-}
|
||||
|
||||
import Internals.Page as Page
|
||||
|
||||
|
||||
{-| This type alias should be used in all `src/Pages` files.
|
||||
|
||||
module Pages.Example exposing
|
||||
( page
|
||||
, -- ...
|
||||
)
|
||||
|
||||
import Utils.Spa as Spa
|
||||
|
||||
page : Spa.Page Params.Example Model Msg model msg appMsg
|
||||
page =
|
||||
App.Page.static
|
||||
|
||||
-- ...
|
||||
|
||||
-}
|
||||
type alias Page pageRoute pageModel pageMsg uiPageMsg layoutModel layoutMsg uiLayoutMsg globalModel globalMsg msg uiMsg =
|
||||
Page.Page pageRoute pageModel pageMsg uiPageMsg layoutModel layoutMsg uiLayoutMsg globalModel globalMsg msg uiMsg
|
||||
|
||||
|
||||
{-| Recipe
|
||||
-}
|
||||
type alias Recipe pageRoute pageModel pageMsg layoutModel layoutMsg uiLayoutMsg globalModel globalMsg msg uiMsg =
|
||||
Page.Recipe pageRoute pageModel pageMsg layoutModel layoutMsg uiLayoutMsg globalModel globalMsg msg uiMsg
|
||||
|
||||
|
||||
{-| Init
|
||||
-}
|
||||
type alias Init layoutModel layoutMsg globalModel globalMsg =
|
||||
Page.Init layoutModel layoutMsg globalModel globalMsg
|
||||
|
||||
|
||||
{-| Update
|
||||
-}
|
||||
type alias Update layoutModel layoutMsg globalModel globalMsg =
|
||||
Page.Update layoutModel layoutMsg globalModel globalMsg
|
||||
|
||||
|
||||
{-| Bundle
|
||||
-}
|
||||
type alias Bundle layoutMsg uiLayoutMsg globalModel globalMsg msg uiMsg =
|
||||
Page.Bundle layoutMsg uiLayoutMsg globalModel globalMsg msg uiMsg
|
||||
|
Loading…
Reference in New Issue
Block a user