123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743 |
- package docsrc
- import (
- "fmt"
- "net/http"
- "os"
- "strings"
- "github.com/go-chi/chi/middleware"
- "github.com/qor5/admin/presets"
- "github.com/qor5/docs/docsrc/examples/e00_basics"
- "github.com/qor5/docs/docsrc/examples/e10_vuetify_autocomplete"
- "github.com/qor5/docs/docsrc/examples/e11_vuetify_basic_inputs"
- "github.com/qor5/docs/docsrc/examples/e13_vuetify_list"
- "github.com/qor5/docs/docsrc/examples/e14_vuetify_menu"
- "github.com/qor5/docs/docsrc/examples/e15_vuetify_navigation_drawer"
- "github.com/qor5/docs/docsrc/examples/e17_hello_lazy_portals_and_reload"
- "github.com/qor5/docs/docsrc/examples/e21_presents"
- "github.com/qor5/docs/docsrc/examples/e22_vuetify_variant_sub_form"
- "github.com/qor5/docs/docsrc/examples/e23_vuetify_components_kitchen"
- "github.com/qor5/docs/docsrc/examples/e24_vuetify_components_linkage_select"
- "github.com/qor5/docs/docsrc/examples/example_basics"
- "github.com/qor5/docs/docsrc/utils"
- "github.com/qor5/ui/tiptap"
- v "github.com/qor5/ui/vuetify"
- "github.com/qor5/ui/vuetifyx"
- "github.com/qor5/web"
- "github.com/theplant/docgo"
- . "github.com/theplant/htmlgo"
- )
- type section struct {
- title string
- slug string
- items []*pageItem
- }
- type pageItem struct {
- section string
- slug string
- title string
- doc HTMLComponent
- }
- func menuLinks(prefix string, secs []*section) (comp HTMLComponent) {
- var nav = Nav().Class("side-tree-nav")
- for _, sec := range secs {
- secdiv := Div(
- Div(
- Div().Class("marker"),
- Div().Class("text").Text(sec.title),
- ).Class("tree-item-title tree-branch-title js-item-title js-branch-title is_active"),
- ).Class("tree-item tree-branch js-item js-branch _opened")
- for _, p := range sec.items {
- secdiv.AppendChildren(
- Div(
- A(
- Span("").Class("marker"),
- Span(p.title).Class("text"),
- ).Class("tree-item-title tree-leaf-title js-item-title js-leaf-title").
- Href(fmt.Sprintf("%s/%s/%s", prefix, sec.slug, p.slug)),
- ).Class("tree-item tree-leaf js-item js-leaf"),
- )
- }
- nav.AppendChildren(secdiv)
- }
- comp = Aside(
- Div(nav).Class("js-side-tree-nav"),
- ).Class("g-3")
- return
- }
- func header() HTMLComponent {
- return Header(
- Div(
- Div(
- A().Href("/").Class("global-header-logo").Text("QOR5"),
- Nav(
- Div(
- A().Href("https://github.com/qor5").Text("Github").Class("nav-item"),
- ).Class("nav-links"),
- ).Class("global-nav"),
- ).Class("g-layout"),
- ).Class("global-header-panel"),
- ).Class("global-header")
- }
- func footer() HTMLComponent {
- return Footer(
- Div(
- Div(
- Div(
- Div(
- Div().Class("terms-copyright").Text("Licensed under the MIT license"),
- ).Class("global-footer-row"),
- ).Class("global-footer-container"),
- ).Class("g-layout"),
- ).Class("global-footer-terms"),
- ).Role("contentinfo").Class("global-footer")
- }
- func addGA(ctx *web.EventContext) {
- if strings.Index(ctx.R.Host, "localhost") >= 0 {
- return
- }
- ctx.Injector.HeadHTML(`
- <!-- Global site tag (gtag.js) - Google Analytics -->
- <script async src="https://www.googletagmanager.com/gtag/js?id=UA-149605708-1"></script>
- <script>
- window.dataLayer = window.dataLayer || [];
- function gtag(){dataLayer.push(arguments);}
- gtag('js', new Date());
- gtag('config', 'UA-149605708-1');
- </script>
- `)
- }
- func layout(in web.PageFunc, secs []*section, prefix string, cp *pageItem) (out web.PageFunc) {
- return func(ctx *web.EventContext) (pr web.PageResponse, err error) {
- addGA(ctx)
- pr.PageTitle = cp.title + " - " + "QOR5"
- ctx.Injector.HeadHTML(`
- <link rel="stylesheet" href="/assets/main.css">
- `)
- ctx.Injector.Title(cp.title)
- ctx.Injector.HeadHTML(`
- <script src='/assets/vue.js'></script>
- <script src='/assets/codehighlight.js'></script>
- `)
- ctx.Injector.TailHTML(coreJSTags)
- var innerPr web.PageResponse
- innerPr, err = in(ctx)
- if err != nil {
- panic(err)
- }
- demo := innerPr.Body
- ctx.Injector.HeadHTML(`
- <style>
- [v-cloak] {
- display: none;
- }
- </style>
- `)
- pr.Body = Components(
- Div(
- header(),
- Div(
- Div(
- menuLinks(prefix, secs),
- Article(demo.(HTMLComponent)).Class("page-content g-9").Role("main"),
- ).Class("g-grid"),
- ).Class("g-layout global-content"),
- ).Class("global-layout"),
- footer(),
- )
- return
- }
- }
- // @snippet_begin(DemoLayoutSample)
- func demoLayout(in web.PageFunc) (out web.PageFunc) {
- return func(ctx *web.EventContext) (pr web.PageResponse, err error) {
- addGA(ctx)
- ctx.Injector.HeadHTML(`
- <script src='/assets/vue.js'></script>
- `)
- ctx.Injector.TailHTML(coreJSTags)
- ctx.Injector.HeadHTML(`
- <style>
- [v-cloak] {
- display: none;
- }
- </style>
- `)
- var innerPr web.PageResponse
- innerPr, err = in(ctx)
- if err != nil {
- panic(err)
- }
- pr.Body = innerPr.Body
- return
- }
- }
- // @snippet_end
- // @snippet_begin(TipTapLayoutSample)
- func tiptapLayout(in web.PageFunc) (out web.PageFunc) {
- return func(ctx *web.EventContext) (pr web.PageResponse, err error) {
- addGA(ctx)
- ctx.Injector.HeadHTML(`
- <link rel="stylesheet" href="/assets/tiptap.css">
- <script src='/assets/vue.js'></script>
- `)
- ctx.Injector.TailHTML(`
- <script src='/assets/tiptap.js'></script>
- <script src='/assets/main.js'></script>
- `)
- ctx.Injector.HeadHTML(`
- <style>
- [v-cloak] {
- display: none;
- }
- </style>
- `)
- var innerPr web.PageResponse
- innerPr, err = in(ctx)
- if err != nil {
- panic(err)
- }
- pr.Body = innerPr.Body
- return
- }
- }
- // @snippet_end
- // @snippet_begin(DemoBootstrapLayoutSample)
- func demoBootstrapLayout(in web.PageFunc) (out web.PageFunc) {
- return func(ctx *web.EventContext) (pr web.PageResponse, err error) {
- addGA(ctx)
- ctx.Injector.HeadHTML(`
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
- <script src='/assets/vue.js'></script>
- `)
- ctx.Injector.TailHTML(`
- <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
- <script src='/assets/main.js'></script>
- `)
- ctx.Injector.HeadHTML(`
- <style>
- [v-cloak] {
- display: none;
- }
- </style>
- `)
- var innerPr web.PageResponse
- innerPr, err = in(ctx)
- if err != nil {
- panic(err)
- }
- pr.Body = innerPr.Body
- return
- }
- }
- // @snippet_end
- var coreJSTags = func() string {
- if len(os.Getenv("DEV_CORE_JS")) > 0 {
- return `
- <script src='http://localhost:3100/js/chunk-vendors.js'></script>
- <script src='http://localhost:3100/js/app.js'></script>
- `
- }
- return `<script src='/assets/main.js'></script>`
- }()
- var vuetifyJSTags = func() string {
- if len(os.Getenv("DEV_VUETIFY_JS")) > 0 {
- return `
- <script src='http://localhost:3080/js/chunk-vendors.js'></script>
- <script src='http://localhost:3080/js/app.js'></script>
- `
- }
- return `<script src='/assets/vuetify.js'></script>`
- }()
- // @snippet_begin(DemoVuetifyLayoutSample)
- func demoVuetifyLayout(in web.PageFunc) (out web.PageFunc) {
- return func(ctx *web.EventContext) (pr web.PageResponse, err error) {
- addGA(ctx)
- ctx.Injector.HeadHTML(`
- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Mono" async>
- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" async>
- <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" async>
- <link rel="stylesheet" href="/assets/vuetify.css">
- <script src='/assets/vue.js'></script>
- `)
- ctx.Injector.TailHTML(fmt.Sprintf("%s %s", vuetifyJSTags, coreJSTags))
- ctx.Injector.HeadHTML(`
- <style>
- [v-cloak] {
- display: none;
- }
- </style>
- `)
- var innerPr web.PageResponse
- innerPr, err = in(ctx)
- if err != nil {
- panic(err)
- }
- pr.Body = v.VApp(
- v.VMain(
- innerPr.Body,
- ),
- )
- return
- }
- }
- // @snippet_end
- func rf(comp HTMLComponent, p *pageItem) web.PageFunc {
- return func(ctx *web.EventContext) (r web.PageResponse, err error) {
- r.Body = Components(
- utils.Anchor(H1(""), p.title),
- comp,
- )
- return
- }
- }
- func Mux(prefix string) http.Handler {
- // @snippet_begin(HelloWorldMuxSample1)
- mux := http.NewServeMux()
- // @snippet_end
- // @snippet_begin(ComponentsPackSample)
- mux.Handle("/assets/main.js",
- web.PacksHandler("text/javascript",
- web.JSComponentsPack(),
- ),
- )
- mux.Handle("/assets/vue.js",
- web.PacksHandler("text/javascript",
- web.JSVueComponentsPack(),
- ),
- )
- // @snippet_end
- // @snippet_begin(TipTapComponentsPackSample)
- mux.Handle("/assets/tiptap.js",
- web.PacksHandler("text/javascript",
- tiptap.JSComponentsPack(),
- ),
- )
- mux.Handle("/assets/tiptap.css",
- web.PacksHandler("text/css",
- tiptap.CSSComponentsPack(),
- ),
- )
- // @snippet_end
- // @snippet_begin(VuetifyComponentsPackSample)
- mux.Handle("/assets/vuetify.js",
- web.PacksHandler("text/javascript",
- v.Vuetify(""),
- v.JSComponentsPack(),
- vuetifyx.JSComponentsPack(),
- ),
- )
- mux.Handle("/assets/vuetify.css",
- web.PacksHandler("text/css",
- v.CSSComponentsPack(),
- ),
- )
- // @snippet_end
- mux.HandleFunc("/favicon.ico", func(w http.ResponseWriter, r *http.Request) {
- w.Write(favicon)
- return
- })
- samplesMux := SamplesHandler(prefix)
- mux.Handle("/samples/",
- middleware.Logger(
- middleware.RequestID(
- samplesMux,
- ),
- ),
- )
- mux.Handle("/", docgo.New().
- MainPageTitle("QOR5 Document").
- Assets("/assets/", Assets).
- DocTree(DocTree...).
- Build(),
- )
- return mux
- }
- func SamplesHandler(prefix string) http.Handler {
- mux := http.NewServeMux()
- emptyUb := web.New().LayoutFunc(web.NoopLayoutFunc)
- mux.Handle(e00_basics.TypeSafeBuilderSamplePath, e00_basics.TypeSafeBuilderSamplePFPB.Builder(emptyUb))
- // @snippet_begin(HelloWorldMuxSample2)
- mux.Handle(e00_basics.HelloWorldPath, e00_basics.HelloWorldPB)
- // @snippet_end
- // @snippet_begin(HelloWorldReloadMuxSample1)
- mux.Handle(
- e00_basics.HelloWorldReloadPath,
- e00_basics.HelloWorldReloadPB.Wrap(demoLayout),
- )
- // @snippet_end
- mux.Handle(
- e00_basics.Page1Path,
- e00_basics.Page1PB.Wrap(demoLayout),
- )
- mux.Handle(
- e00_basics.Page2Path,
- e00_basics.Page2PB.Wrap(demoLayout),
- )
- mux.Handle(
- e00_basics.ReloadWithFlashPath,
- e00_basics.ReloadWithFlashPB.Wrap(demoLayout),
- )
- mux.Handle(
- e00_basics.PartialUpdatePagePath,
- e00_basics.PartialUpdatePagePB.Wrap(demoLayout),
- )
- mux.Handle(
- e00_basics.PartialReloadPagePath,
- e00_basics.PartialReloadPagePB.Wrap(demoLayout),
- )
- mux.Handle(
- e00_basics.MultiStatePagePath,
- e00_basics.MultiStatePagePB.Wrap(demoLayout),
- )
- mux.Handle(
- e00_basics.FormHandlingPagePath,
- e00_basics.FormHandlingPagePB.Wrap(demoLayout),
- )
- mux.Handle(
- e00_basics.CompositeComponentSample1PagePath,
- e00_basics.CompositeComponentSample1PagePB.Wrap(demoBootstrapLayout),
- )
- mux.Handle(
- e00_basics.HelloWorldTipTapPath,
- e00_basics.HelloWorldTipTapPB.Wrap(tiptapLayout),
- )
- mux.Handle(
- e13_vuetify_list.HelloVuetifyListPath,
- e13_vuetify_list.HelloVuetifyListPB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e14_vuetify_menu.HelloVuetifyMenuPath,
- e14_vuetify_menu.HelloVuetifyMenuPB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e00_basics.EventExamplePagePath,
- e00_basics.ExamplePagePB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e00_basics.EventHandlingPagePath,
- e00_basics.EventHandlingPagePB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e00_basics.WebScopeUseLocalsPagePath,
- e00_basics.UseLocalsPB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e00_basics.WebScopeUsePlaidFormPagePath,
- e00_basics.UsePlaidFormPB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e00_basics.ShortCutSamplePath,
- e00_basics.ShortCutSamplePB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e11_vuetify_basic_inputs.VuetifyBasicInputsPath,
- e11_vuetify_basic_inputs.VuetifyBasicInputsPB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e10_vuetify_autocomplete.VuetifyAutoCompletePath,
- e10_vuetify_autocomplete.VuetifyAutocompletePB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e10_vuetify_autocomplete.VuetifyAutoCompletePresetPath+"/",
- e10_vuetify_autocomplete.ExamplePreset,
- )
- mux.Handle(
- e22_vuetify_variant_sub_form.VuetifyVariantSubFormPath,
- e22_vuetify_variant_sub_form.VuetifyVariantSubFormPB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e23_vuetify_components_kitchen.VuetifyComponentsKitchenPath,
- e23_vuetify_components_kitchen.VuetifyComponentsKitchenPB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e15_vuetify_navigation_drawer.VuetifyNavigationDrawerPath,
- e15_vuetify_navigation_drawer.VuetifyNavigationDrawerPB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e17_hello_lazy_portals_and_reload.LazyPortalsAndReloadPath,
- e17_hello_lazy_portals_and_reload.LazyPortalsAndReloadPB.Wrap(demoVuetifyLayout),
- )
- mux.Handle(
- e24_vuetify_components_linkage_select.VuetifyComponentsLinkageSelectPath,
- e24_vuetify_components_linkage_select.VuetifyComponentsLinkageSelectPB.Wrap(demoVuetifyLayout),
- )
- // @snippet_begin(MountPresetHelloWorldSample)
- c00 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsHelloWorld(c00)
- mux.Handle(
- e21_presents.PresetsHelloWorldPath+"/",
- c00,
- )
- // @snippet_end
- c01 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsListingCustomizationFields(c01)
- mux.Handle(
- e21_presents.PresetsListingCustomizationFieldsPath+"/",
- c01,
- )
- c02 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsListingCustomizationFilters(c02)
- mux.Handle(
- e21_presents.PresetsListingCustomizationFiltersPath+"/",
- c02,
- )
- c03 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsListingCustomizationTabs(c03)
- mux.Handle(
- e21_presents.PresetsListingCustomizationTabsPath+"/",
- c03,
- )
- c04 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsListingCustomizationBulkActions(c04)
- mux.Handle(
- e21_presents.PresetsListingCustomizationBulkActionsPath+"/",
- c04,
- )
- c05 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsEditingCustomizationDescription(c05)
- mux.Handle(
- e21_presents.PresetsEditingCustomizationDescriptionPath+"/",
- c05,
- )
- c06 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsEditingCustomizationFileType(c06)
- mux.Handle(
- e21_presents.PresetsEditingCustomizationFileTypePath+"/",
- c06,
- )
- c07 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsEditingCustomizationValidation(c07)
- mux.Handle(
- e21_presents.PresetsEditingCustomizationValidationPath+"/",
- c07,
- )
- c08 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsDetailPageTopNotes(c08)
- mux.Handle(
- e21_presents.PresetsDetailPageTopNotesPath+"/",
- c08,
- )
- c09 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsDetailPageDetails(c09)
- mux.Handle(
- e21_presents.PresetsDetailPageDetailsPath+"/",
- c09,
- )
- c10 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsDetailPageCards(c10)
- mux.Handle(
- e21_presents.PresetsDetailPageCardsPath+"/",
- c10,
- )
- c11 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsPermissions(c11)
- mux.Handle(
- e21_presents.PresetsPermissionsPath+"/",
- c11,
- )
- c12 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsModelBuilderExtensions(c12)
- mux.Handle(
- e21_presents.PresetsModelBuilderExtensionsPath+"/",
- c12,
- )
- c13 := presets.New().AssetFunc(addGA)
- example_basics.PresetsBasicFilter(c13)
- mux.Handle(
- example_basics.PresetsBasicFilterPath+"/",
- c13,
- )
- c14 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsNotificationCenterSample(c14)
- mux.Handle(
- e21_presents.NotificationCenterSamplePath+"/",
- c14,
- )
- c15 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsLinkageSelectFilterItem(c15)
- mux.Handle(
- e21_presents.PresetsLinkageSelectFilterItemPath+"/",
- c15,
- )
- c16 := presets.New().AssetFunc(addGA)
- example_basics.ListingSample(c16)
- mux.Handle(
- example_basics.ListingSamplePath+"/",
- c16,
- )
- c17 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsBrandTitle(c17)
- mux.Handle(
- e21_presents.PresetsBrandTitlePath+"/",
- c17,
- )
- c18 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsBrandFunc(c18)
- mux.Handle(
- e21_presents.PresetsBrandFuncPath+"/",
- c18,
- )
- c19 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsProfile(c19)
- mux.Handle(
- e21_presents.PresetsProfilePath+"/",
- c19,
- )
- c20 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsOrderMenu(c20)
- mux.Handle(
- e21_presents.PresetsMenuOrderPath+"/",
- c20,
- )
- c21 := presets.New().AssetFunc(addGA)
- e21_presents.PresetsGroupMenu(c21)
- mux.Handle(
- e21_presents.PresetsMenuGroupPath+"/",
- c21,
- )
- c22 := presets.New().AssetFunc(addGA)
- example_basics.PresetsConfirmDialog(c22)
- mux.Handle(
- example_basics.PresetsConfirmDialogPath+"/",
- c22,
- )
- c23 := presets.New().AssetFunc(addGA)
- example_basics.WorkerExampleMock(c23)
- mux.Handle(
- example_basics.WorkerExamplePath+"/",
- c23,
- )
- c24 := presets.New().AssetFunc(addGA)
- example_basics.ActionWorkerExampleMock(c24)
- mux.Handle(
- example_basics.ActionWorkerExamplePath+"/",
- c24,
- )
- c25 := presets.New().AssetFunc(addGA)
- example_basics.LocalizationExampleMock(c25)
- mux.Handle(
- example_basics.LocalizationExamplePath+"/",
- c25,
- )
- return mux
- }
|