34 | {getSetting('logo') &&
35 |
36 |
37 |
38 | }
39 | {onlyLogo ||
40 |
{getSetting('appName')}
}
41 |
42 | )
43 | }
44 |
45 | export default LayoutLogo
46 |
--------------------------------------------------------------------------------
/internal/app/admin/models/admin_user.go:
--------------------------------------------------------------------------------
1 | package models
2 |
3 | import (
4 | "amis-base/internal/app/admin/types"
5 | base "amis-base/internal/models"
6 | "amis-base/internal/pkg/helper"
7 | "github.com/duke-git/lancet/v2/slice"
8 | )
9 |
10 | type AdminUser struct {
11 | base.BaseModel
12 |
13 | Username string `gorm:"unique;type:varchar(255);not null" json:"username"`
14 | Password string `gorm:"type:varchar(255);not null;" json:"-"`
15 | Name string `gorm:"type:varchar(255);not null" json:"name"`
16 | Avatar string `gorm:"type:varchar(255);not null" json:"avatar"`
17 | Enabled int `gorm:"type:tinyint(1);default:1;not null" json:"enabled"`
18 | Roles []AdminRole `gorm:"many2many:admin_user_role;" json:"roles"`
19 | }
20 |
21 | // IsSuperAdmin 判断是否是超级管理员
22 | func (u *AdminUser) IsSuperAdmin() bool {
23 | return slice.Some(u.Roles, func(index int, item AdminRole) bool {
24 | return item.Sign == types.SuperAdminSign
25 | })
26 | }
27 |
28 | // Permissions 获取用户权限
29 | func (u *AdminUser) Permissions() []AdminPermission {
30 | result := make([]AdminPermission, 0)
31 | for _, role := range u.Roles {
32 | for _, permission := range role.Permissions {
33 | result = append(result, permission)
34 | }
35 | }
36 |
37 | return result
38 | }
39 |
40 | // PermissionApiRules 获取用户权限的 api 规则
41 | func (u *AdminUser) PermissionApiRules() []string {
42 | result := make([]string, 0)
43 | permissions := u.Permissions()
44 | for _, permission := range permissions {
45 | result = append(result, helper.JsonDecode[[]string](permission.Api)...)
46 | }
47 |
48 | return result
49 | }
50 |
--------------------------------------------------------------------------------
/web/dist/assets/Plain-CXH7djtw.js:
--------------------------------------------------------------------------------
1 | import{s as v,a3 as l,ai as C,f as d,K as M,z as o,P as c,Q as a,D as P}from"./index-BnATMMdj.js";var _=function(i){v(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t.prototype.handleClick=function(e){var n=this.props,r=n.dispatchEvent,s=n.data;r("click",l(s,{nativeEvent:e}))},t.prototype.handleMouseEnter=function(e){var n=this.props,r=n.dispatchEvent,s=n.data;r(e,l(s,{nativeEvent:e}))},t.prototype.handleMouseLeave=function(e){var n=this.props,r=n.dispatchEvent,s=n.data;r(e,l(s,{nativeEvent:e}))},t.prototype.render=function(){var e=this.props,n=e.className,r=e.style,s=e.wrapperComponent,u=e.text,y=e.data,h=e.tpl,m=e.inline,f=e.placeholder,E=e.classnames,p=C(this.props),g=s||(m?"span":"div");return d.createElement(g,{className:E("PlainField",n),style:r,onClick:this.handleClick,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave},h||u?M(h||u,y):typeof p>"u"||p===""||p===null?d.createElement("span",{className:"text-muted"},f):String(p))},t.defaultProps={wrapperComponent:"",inline:!0,placeholder:"-"},o([c,a("design:type",Function),a("design:paramtypes",[Object]),a("design:returntype",void 0)],t.prototype,"handleClick",null),o([c,a("design:type",Function),a("design:paramtypes",[Object]),a("design:returntype",void 0)],t.prototype,"handleMouseEnter",null),o([c,a("design:type",Function),a("design:paramtypes",[Object]),a("design:returntype",void 0)],t.prototype,"handleMouseLeave",null),t}(d.Component),b=function(i){v(t,i);function t(){return i!==null&&i.apply(this,arguments)||this}return t=o([P({type:"plain",alias:["text"],name:"plain"})],t),t}(_);export{_ as Plain,b as PlainRenderer};
2 |
--------------------------------------------------------------------------------
/config/config.example.yaml:
--------------------------------------------------------------------------------
1 | app:
2 | # 应用名称
3 | name: "amisBase"
4 | # logo
5 | logo: "/logo.png"
6 | # 端口
7 | port: 8080
8 | # 开发模式
9 | dev: true
10 |
11 | # 数据库配置
12 | database:
13 | driver: "mysql"
14 | dsn: "root:root@tcp(127.0.0.1:3306)/amis_base?charset=utf8mb4&parseTime=True&loc=Local"
15 | # 是否自动迁移
16 | migrate: true
17 |
18 | # 缓存配置
19 | cache:
20 | driver: "memory"
21 | prefix: "amisbase:"
22 | # 配置
23 | options:
24 | # 内存
25 | memory:
26 | # 缓存过期时间
27 | gc_interval: 10
28 | # redis
29 | redis:
30 | host: "127.0.0.1"
31 | port: 6379
32 | username: ""
33 | password: ""
34 | database: 0
35 | reset: false
36 | pool_size: 10
37 |
38 | # 面板配置
39 | admin:
40 | # api 前缀
41 | api_prefix: "/admin-api"
42 | # 认证配置
43 | auth:
44 | # 是否启用
45 | enabled: true
46 | # 单点登录
47 | single_sign_on: false
48 | # token 过期时间 (秒) 为 0 时不生成永不过期
49 | token_expire: 86400
50 | # 白名单: 请求方式 + 注册时的路由(支持正则)
51 | # [请求方式] : [接口路径]
52 | exclude:
53 | # 示例:
54 | # /system/users (任意请求方式)
55 | # get:/system/permmission
56 | # post:/system/menus
57 | # 使用正则匹配:
58 | # ^post:/system/menus
59 | - "get:/login"
60 | - "post:/login"
61 | - "get:/settings"
62 | # 鉴权
63 | permission:
64 | # 是否启用
65 | enabled: true
66 | # 白名单
67 | exclude:
68 | - "get:/user"
69 | - "get:/menus"
70 | - "get:/login"
71 | - "post:/login"
72 | - "get:/logout"
73 | - "get:/settings"
74 | - "get:/page_schema"
75 | - "get:/permissions"
76 |
--------------------------------------------------------------------------------
/internal/pkg/db/db.go:
--------------------------------------------------------------------------------
1 | package db
2 |
3 | import (
4 | "github.com/spf13/viper"
5 | "gorm.io/driver/mysql"
6 | "gorm.io/gorm"
7 | "gorm.io/gorm/logger"
8 | "log"
9 | "os"
10 | "sync"
11 | "time"
12 | )
13 |
14 | var (
15 | db *gorm.DB
16 | once sync.Once
17 | )
18 |
19 | func Bootstrap() {
20 | Connect()
21 |
22 | if viper.GetBool("database.migrate") {
23 | Migration()
24 | }
25 | }
26 |
27 | func Connect() {
28 | once.Do(func() {
29 | var err error
30 |
31 | driver := viper.GetString("database.driver")
32 |
33 | switch driver {
34 | case "mysql":
35 | db, err = gorm.Open(mysql.Open(viper.GetString("database.dsn")), &gorm.Config{
36 | DisableForeignKeyConstraintWhenMigrating: true,
37 | Logger: getLogger(),
38 | })
39 | default:
40 | log.Fatal("Unsupported database driver: " + driver)
41 | }
42 |
43 | if err != nil {
44 | log.Fatal("Failed to connect to database: " + err.Error())
45 | }
46 | })
47 | }
48 |
49 | func Query() *gorm.DB {
50 | if db == nil {
51 | log.Fatal("Database connection not initialized")
52 | }
53 |
54 | return db
55 | }
56 |
57 | func getLogger() logger.Interface {
58 | logLevel := logger.Silent
59 |
60 | // 开发时打印所有 SQL
61 | if viper.GetBool("app.dev") {
62 | logLevel = logger.Info
63 | }
64 |
65 | return logger.New(
66 | log.New(os.Stdout, "\r\n", log.Flags()),
67 | logger.Config{
68 | SlowThreshold: 5 * time.Second,
69 | Colorful: true,
70 | IgnoreRecordNotFoundError: true,
71 | ParameterizedQueries: false,
72 | LogLevel: logLevel,
73 | },
74 | )
75 | }
76 |
--------------------------------------------------------------------------------
/web/dist/assets/InputMonthRange-BGY4lN2M.js:
--------------------------------------------------------------------------------
1 | import{s as D,t as R,f as h,ag as M,c1 as _,y as I,aV as v,c2 as g,z as y,aZ as P,Q as m,a1 as b}from"./index-BnATMMdj.js";import E from"./InputDateRange-BZtgtncR.js";var N=function(e){D(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.render=function(){var a=this.props,F=a.className;a.style;var l=a.classPrefix,u=a.minDate,d=a.maxDate,p=a.minDuration,c=a.maxDuration,o=a.data,r=a.format,f=a.mobileUI,i=a.valueFormat,x=a.inputFormat,C=a.displayFormat,n=a.env,s=R(a,["className","style","classPrefix","minDate","maxDate","minDuration","maxDuration","data","format","mobileUI","valueFormat","inputFormat","displayFormat","env"]);return h.createElement("div",{className:M("".concat(l,"DateRangeControl"),F)},h.createElement(_,I({viewMode:"months",mobileUI:f,valueFormat:i||r,displayFormat:C||x,classPrefix:l,popOverContainer:f?n==null?void 0:n.getModalContainer:s.popOverContainer||n.getModalContainer,popOverContainerSelector:s.popOverContainerSelector,onRef:this.getRef,data:o},s,{minDate:u?v(u,o,i||r):void 0,maxDate:d?v(d,o,i||r):void 0,minDuration:p?g(p):void 0,maxDuration:c?g(c):void 0,onChange:this.handleChange,onFocus:this.dispatchEvent,onBlur:this.dispatchEvent})))},y([P(),m("design:type",Function),m("design:paramtypes",[]),m("design:returntype",void 0)],t.prototype,"render",null),t}(E),Y=function(e){D(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.defaultProps={format:"X",inputFormat:"YYYY-MM",joinValues:!0,delimiter:",",ranges:"",shortcuts:"thismonth,prevmonth",animation:!0},t=y([b({type:"input-month-range"})],t),t}(N);export{Y as MonthRangeControlRenderer,N as default};
2 |
--------------------------------------------------------------------------------
/web/dist/assets/InputYearRange-B5h5BtYP.js:
--------------------------------------------------------------------------------
1 | import{s as D,t as R,f as v,ag as _,c1 as Y,y as I,aV as g,c2 as y,z as h,aZ as P,Q as m,a1 as b}from"./index-BnATMMdj.js";import E from"./InputDateRange-BZtgtncR.js";var N=function(t){D(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.render=function(){var a=this.props,F=a.className;a.style;var l=a.classPrefix,u=a.minDate,d=a.maxDate,p=a.minDuration,c=a.maxDuration,r=a.data,o=a.format,f=a.mobileUI,i=a.valueFormat,x=a.inputFormat,C=a.displayFormat,n=a.env,s=R(a,["className","style","classPrefix","minDate","maxDate","minDuration","maxDuration","data","format","mobileUI","valueFormat","inputFormat","displayFormat","env"]);return v.createElement("div",{className:_("".concat(l,"DateRangeControl"),F)},v.createElement(Y,I({viewMode:"years",mobileUI:f,valueFormat:i||o,displayFormat:C||x,classPrefix:l,popOverContainer:f?n==null?void 0:n.getModalContainer:s.popOverContainer||n.getModalContainer,popOverContainerSelector:s.popOverContainerSelector,onRef:this.getRef,data:r},s,{minDate:u?g(u,r,i||o):void 0,maxDate:d?g(d,r,i||o):void 0,minDuration:p?y(p):void 0,maxDuration:c?y(c):void 0,onChange:this.handleChange,onFocus:this.dispatchEvent,onBlur:this.dispatchEvent})))},h([P(),m("design:type",Function),m("design:paramtypes",[]),m("design:returntype",void 0)],e.prototype,"render",null),e}(E),M=function(t){D(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.defaultProps={format:"X",inputFormat:"YYYY",joinValues:!0,delimiter:",",ranges:"thisyear,prevyear",shortcuts:"thisyear,prevyear",animation:!0},e=h([b({type:"input-year-range"})],e),e}(N);export{M as YearRangeControlRenderer,N as default};
2 |
--------------------------------------------------------------------------------
/web/dist/assets/flow9-Cac8vKd7.js:
--------------------------------------------------------------------------------
1 | var e={comments:{blockComment:["/*","*/"],lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:"(",close:")",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}]},o={defaultToken:"",tokenPostfix:".flow",keywords:["import","require","export","forbid","native","if","else","cast","unsafe","switch","default"],types:["io","mutable","bool","int","double","string","flow","void","ref","true","false","with"],operators:["=",">","<","<=",">=","==","!","!=",":=","::=","&&","||","+","-","*","/","@","&","%",":","->","\\","$","??","^"],symbols:/[@$=>](?!@symbols)/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}};export{e as conf,o as language};
2 |
--------------------------------------------------------------------------------
/web/dist/assets/sb-BYAiYHFx.js:
--------------------------------------------------------------------------------
1 | var e={comments:{lineComment:"'"},brackets:[["(",")"],["[","]"],["If","EndIf"],["While","EndWhile"],["For","EndFor"],["Sub","EndSub"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]}]},o={defaultToken:"",tokenPostfix:".sb",ignoreCase:!0,brackets:[{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"keyword.tag-if",open:"If",close:"EndIf"},{token:"keyword.tag-while",open:"While",close:"EndWhile"},{token:"keyword.tag-for",open:"For",close:"EndFor"},{token:"keyword.tag-sub",open:"Sub",close:"EndSub"}],keywords:["Else","ElseIf","EndFor","EndIf","EndSub","EndWhile","For","Goto","If","Step","Sub","Then","To","While"],tagwords:["If","Sub","While","For"],operators:[">","<","<>","<=",">=","And","Or","+","-","*","/","="],identifier:/[a-zA-Z_][\w]*/,symbols:/[=><:+\-*\/%\.,]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/(@identifier)(?=[.])/,"type"],[/@identifier/,{cases:{"@keywords":{token:"keyword.$0"},"@operators":"operator","@default":"variable.name"}}],[/([.])(@identifier)/,{cases:{$2:["delimiter","type.member"],"@default":""}}],[/\d*\.\d+/,"number.float"],[/\d+/,"number"],[/[()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],whitespace:[[/[ \t\r\n]+/,""],[/(\').*$/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"C?/,"string","@pop"]]}};export{e as conf,o as language};
2 |
--------------------------------------------------------------------------------
/web/dist/assets/InputQuarterRange-U7yCLGPa.js:
--------------------------------------------------------------------------------
1 | import{s as h,t as R,f as v,ag as _,c1 as Q,y as q,aV as g,c2 as D,z as y,aZ as I,Q as u,a1 as P}from"./index-BnATMMdj.js";import b from"./InputDateRange-BZtgtncR.js";var E=function(e){h(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.render=function(){var a=this.props,F=a.className;a.style;var m=a.classPrefix,l=a.minDate,d=a.maxDate,p=a.minDuration,c=a.maxDuration,n=a.data,o=a.format,i=a.valueFormat,x=a.inputFormat,C=a.displayFormat,r=a.env,f=a.mobileUI,s=R(a,["className","style","classPrefix","minDate","maxDate","minDuration","maxDuration","data","format","valueFormat","inputFormat","displayFormat","env","mobileUI"]);return v.createElement("div",{className:_("".concat(m,"DateRangeControl"),F)},v.createElement(Q,q({viewMode:"quarters",mobileUI:f,valueFormat:i||o,displayFormat:C||x,classPrefix:m,popOverContainer:f?r==null?void 0:r.getModalContainer:s.popOverContainer||r.getModalContainer,popOverContainerSelector:s.popOverContainerSelector,onRef:this.getRef,data:n},s,{minDate:l?g(l,n,i||o):void 0,maxDate:d?g(d,n,i||o):void 0,minDuration:p?D(p):void 0,maxDuration:c?D(c):void 0,onChange:this.handleChange,onFocus:this.dispatchEvent,onBlur:this.dispatchEvent})))},y([I(),u("design:type",Function),u("design:paramtypes",[]),u("design:returntype",void 0)],t.prototype,"render",null),t}(b),U=function(e){h(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.defaultProps={format:"X",inputFormat:"YYYY-[Q]Q",joinValues:!0,delimiter:",",ranges:"thisquarter,prevquarter",shortcuts:"thisquarter,prevquarter",animation:!0},t=y([P({type:"input-quarter-range"})],t),t}(E);export{U as QuarterRangeControlRenderer,E as default};
2 |
--------------------------------------------------------------------------------
/web/dist/assets/Icon-BAwkSKpW.js:
--------------------------------------------------------------------------------
1 | import{s as y,K as g,f as p,L as C,y as i,ad as m,ae as E,z as d,P as h,Q as n,D as _,$ as M}from"./index-BnATMMdj.js";var N=function(s){y(e,s);function e(){return s!==null&&s.apply(this,arguments)||this}return e.prototype.handleClick=function(t){var a=this.props,o=a.dispatchEvent,r=a.data;o(t,r)},e.prototype.handleMouseEnter=function(t){var a=this.props,o=a.dispatchEvent,r=a.data;o(t,r)},e.prototype.handleMouseLeave=function(t){var a=this.props,o=a.dispatchEvent,r=a.data;o(t,r)},e.prototype.render=function(){var t=this.props,a=t.classnames,o=t.className,r=t.data,c=t.id,u=t.themeCss,v=t.env,f=t.wrapperCustomStyle,l=this.props.icon;return typeof l=="string"&&(l=g(this.props.icon,r)),p.createElement(p.Fragment,null,p.createElement(C,i({},this.props,{icon:l,onClick:this.handleClick,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,className:a(o,m(i(i({},this.props),{name:"className",id:c,themeCss:u})),m(i(i({},this.props),{name:"wrapperCustomStyle",id:c,themeCss:f})))})),p.createElement(E,i({},this.props,{config:{themeCss:u,classNames:[{key:"className"}],id:c},env:v})))},e.defaultProps={icon:"",vendor:"fa"},d([h,n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",void 0)],e.prototype,"handleClick",null),d([h,n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",void 0)],e.prototype,"handleMouseEnter",null),d([h,n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",void 0)],e.prototype,"handleMouseLeave",null),e}(p.Component),I=function(s){y(e,s);function e(){return s!==null&&s.apply(this,arguments)||this}return e=d([_({type:"icon"}),M],e),e}(N);export{N as Icon,I as IconRenderer};
2 |
--------------------------------------------------------------------------------
/web/dist/assets/bat-DPkNLes8.js:
--------------------------------------------------------------------------------
1 | var e={comments:{lineComment:"REM"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*(::\\s*|REM\\s+)#region"),end:new RegExp("^\\s*(::\\s*|REM\\s+)#endregion")}}},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".bat",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:/call|defined|echo|errorlevel|exist|for|goto|if|pause|set|shift|start|title|not|pushd|popd/,symbols:/[=>i.map(i=>d[i]);
2 | import{s as h,ai as l,v as u,w as f,V as m,E as v,G as _,f as p,ds as w,z as y,D as C,o as k,X as E}from"./index-BnATMMdj.js";function g(){return k(()=>import("./Markdown-tyIr7GBT.js"),__vite__mapDeps([0,1,2])).then(function(o){return o.default})}var M=function(o){h(n,o);function n(e){var t=o.call(this,e)||this,a=t.props,r=a.name,i=a.data,s=a.src;if(s)t.state={content:""},t.updateContent();else{var c=l(t.props)||(r&&u(r)?f(r,i,"| raw"):null);t.state={content:c}}return t}return n.prototype.componentDidUpdate=function(e){var t=this.props;t.src?m(e.src,t.src,e.data,t.data)&&this.updateContent():this.updateContent()},n.prototype.updateContent=function(){return v(this,void 0,void 0,function(){var e,t,a,r,i,s,c;return _(this,function(d){switch(d.label){case 0:return e=this.props,t=e.name,a=e.data,r=e.src,i=e.env,r&&E(r,a)?[4,i.fetcher(r,a)]:[3,2];case 1:return s=d.sent(),typeof s=="string"?this.setState({content:s}):typeof s=="object"&&s.data?this.setState({content:s.data}):console.error("markdown response error",s),[3,3];case 2:c=l(this.props)||(t&&u(t)?f(t,a,"| raw"):null),c!==this.state.content&&this.setState({content:c}),d.label=3;case 3:return[2]}})})},n.prototype.render=function(){var e=this.props,t=e.className,a=e.style,r=e.classnames,i=e.options;return p.createElement("div",{className:r("Markdown",t),style:a},p.createElement(w,{getComponent:g,content:this.state.content||"",options:i}))},n}(p.Component),V=function(o){h(n,o);function n(){return o!==null&&o.apply(this,arguments)||this}return n=y([C({type:"markdown"})],n),n}(M);export{M as Markdown,V as MarkdownRenderer};
3 |
--------------------------------------------------------------------------------
/web/dist/assets/Card2-CdJviqzH.js:
--------------------------------------------------------------------------------
1 | import{s as k,f as d,b4 as u,t as y,b2 as b,z as m,P as C,Q as c,D as f}from"./index-BnATMMdj.js";var v=function(n){k(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t.prototype.handleClick=function(e){var a=this.props,s=a.checkOnItemClick,r=a.selectable;s&&r&&this.handleCheck()},t.prototype.handleCheck=function(){var e,a;(a=(e=this.props).onCheck)===null||a===void 0||a.call(e)},t.prototype.renderCheckbox=function(){var e=this.props,a=e.selectable,s=e.classnames,r=e.multiple,l=e.disabled,o=e.selected,i=e.hideCheckToggler,p=e.checkOnItemClick,h=e.checkboxClassname;return!a||p&&i?null:d.createElement(u,{className:s("Card2-checkbox",h),type:r?"checkbox":"radio",disabled:l,checked:o,onChange:this.handleCheck})},t.prototype.renderBody=function(){var e=this.props,a=e.body,s=e.render,r=e.classnames,l=e.bodyClassName,o=y(e,["body","render","classnames","bodyClassName"]);return d.createElement("div",{className:r("Card2-body",l),onClick:this.handleClick},a?s("body",a,o):null)},t.prototype.render=function(){var e=this.props,a=e.className,s=e.wrapperComponent,r=e.classnames,l=e.style,o=e.item,i=e.selected,p=e.checkOnItemClick,h=s||"div";return d.createElement(h,{className:r("Card2",a,{checkOnItem:p,"is-checked":i}),style:b(l,o)},this.renderBody(),this.renderCheckbox())},t.propsList=["body","className"],t.defaultProps={className:""},m([C,c("design:type",Function),c("design:paramtypes",[Object]),c("design:returntype",void 0)],t.prototype,"handleClick",null),m([C,c("design:type",Function),c("design:paramtypes",[]),c("design:returntype",void 0)],t.prototype,"handleCheck",null),t}(d.Component),x=function(n){k(t,n);function t(){return n!==null&&n.apply(this,arguments)||this}return t=m([f({type:"card2"})],t),t}(v);export{x as Card2Renderer,v as default};
2 |
--------------------------------------------------------------------------------
/web/dist/assets/Divider-Dv3VlEvb.js:
--------------------------------------------------------------------------------
1 | import{s as y,v as P,w as R,ad as N,y as i,f as o,ae as S,z as k,D as E}from"./index-BnATMMdj.js";var W=function(r){y(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.render=function(){var e=this.props,D=e.render,f=e.classnames,g=e.className,u=e.style,n=u===void 0?{}:u,p=e.lineStyle,l=e.direction,s=e.color,C=e.rotate,a=e.title,x=e.titleClassName,d=e.titlePosition,c=e.id,m=e.themeCss,b=e.env,w=e.data,v={};s&&(~(s==null?void 0:s.indexOf("linear-gradient"))?v.borderImage=s+" 10":v.borderColor=s);var h=(n==null?void 0:n.transform)||"";C&&(h+=" rotate(".concat(C,"deg)")),P(a)&&(a=R(a,w));var _=f("Divider",p?"Divider--".concat(p):"",l==="vertical"?"Divider--vertical":"Divider--horizontal",a&&l!=="vertical"?"Divider--with-text":"",a&&l!=="vertical"&&d?"Divider--with-text-".concat(d):"",a&&l!=="vertical"?N(i(i({},this.props),{name:"titleWrapperControlClassName",id:c,themeCss:m})):"",g);return o.createElement("div",{className:_,style:i(i(i({},n),v),{transform:h})},a&&l!=="vertical"?o.createElement("span",{className:f("Divider-text Divider-text-".concat(d," ").concat(x),N(i(i({},this.props),{name:"titleControlClassName",id:c,themeCss:m})))},D("title",a)):null,o.createElement(S,i({},this.props,{config:{themeCss:m,classNames:[{key:"titleWrapperControlClassName",weights:{default:{suf:"::before",important:!0}}},{key:"titleWrapperControlClassName",weights:{default:{suf:"::after",important:!0}}},{key:"titleControlClassName",weights:{default:{important:!0}}}],id:c},env:b})))},t.defaultProps={className:"",lineStyle:"solid",titleClassName:"",titlePosition:"center"},t}(o.Component),V=function(r){y(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t=k([E({type:"divider"})],t),t}(W);export{V as DividerRenderer,W as default};
2 |
--------------------------------------------------------------------------------
/web/dist/assets/Grid2D-cbA2QjFi.js:
--------------------------------------------------------------------------------
1 | import{s as w,a5 as R,f,y as m,z as G,D as x}from"./index-BnATMMdj.js";var _={left:"start",right:"end",center:"center",auto:"stretch"},C={top:"start",bottom:"end",middle:"center",auto:"stretch"},b=function(o){w(e,o);function e(t){return o.call(this,t)||this}return e.prototype.renderChild=function(t,a){var i=this.props,n=i.render,s=i.disabled;return n(t,a,{disabled:s})},e.prototype.renderGrid=function(t,a,i){var n=this.props,s=n.itemRender,l=n.data;if(!R(t,l))return null;var d={gridColumnStart:t.x,gridColumnEnd:t.x+t.w,gridRowStart:t.y,gridRowEnd:t.y+t.h,justifySelf:t.align?_[t.align]:"stretch",alignSelf:t.valign?C[t.valign]:"stretch"};return f.createElement("div",{key:a,style:d,className:t.gridClassName},s?s(t,a,i,this.props):this.renderChild("grid2d/".concat(a),t))},e.prototype.renderGrids=function(){var t=this,a=this.props.grids;return a.map(function(i,n){return t.renderGrid(i,n,a.length)})},e.prototype.render=function(){var t=this.props,a=t.grids,i=t.cols,n=t.gap,s=t.gapRow,l=t.width,d=t.rowHeight,y=t.style,v=t.id,h=new Array(i);h.fill("1fr");var p=0;a.forEach(function(r,S){var c=r.y+r.h-1;c>p&&(p=c)});var u=new Array(p);u.fill(d),a.forEach(function(r){r.width&&(h[r.x-1]=Number.isInteger(r.width)?r.width+"px":r.width),r.height&&(u[r.y-1]=Number.isInteger(r.height)?r.height+"px":r.height)});var g=m(m({},y),{display:"grid",columnGap:n,rowGap:typeof s>"u"?n:s,width:l,gridTemplateColumns:h.join(" "),gridTemplateRows:u.join(" ")});return f.createElement("div",{style:g,"data-id":v},this.renderGrids())},e.propsList=["grids"],e.defaultProps={cols:12,width:"auto",gap:0,rowHeight:"3.125rem"},e}(f.Component),D=function(o){w(e,o);function e(){return o!==null&&o.apply(this,arguments)||this}return e=G([x({type:"grid-2d"})],e),e}(b);export{D as Grid2DRenderer,b as default};
2 |
--------------------------------------------------------------------------------
/web/dist/scripts/loading.js:
--------------------------------------------------------------------------------
1 | window.$owl = window.$owl || {}
2 |
3 | window.$owl.appLoader = () => {
4 | const value = localStorage.getItem(window.$adminApiPrefix.replace(/^\//, '') + '-settings')
5 | const settings = JSON.parse(value == 'undefined' ? '{}' : value)
6 | const color = settings?.theme?.themeColor || '#1C1C1C'
7 | const bgColor = settings?.theme?.darkTheme ? '#1f1f1f' : '#FFFFFF'
8 |
9 | const loader = `
10 |