@blocklet/pages-kit-inner-components 0.1.8 → 0.4.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/_chunks/components-paCr_hhD.js +48 -0
- package/lib/cjs/_chunks/{draft-data-CgY7-dem.js → draft-data-BwJ1xNZb.js} +1 -1
- package/lib/cjs/_chunks/{home-D7i9eFDB.js → home-DQaT0unu.js} +3 -3
- package/lib/cjs/_chunks/publish-button-BNJS7rMq.js +1 -0
- package/lib/cjs/_chunks/site-state-HLTcjGnI.js +1 -0
- package/lib/cjs/_chunks/state-CVPLn5Cq.js +1 -0
- package/lib/cjs/components.js +1 -1
- package/lib/cjs/home.js +1 -1
- package/lib/cjs/locales.js +1 -1
- package/lib/cjs/project-html.js +3 -2
- package/lib/cjs/resources.js +1 -1
- package/lib/cjs/setting.js +1 -1
- package/lib/cjs/site-state.js +1 -1
- package/lib/cjs/theme.js +1 -1
- package/lib/cjs/uploader.js +1 -1
- package/lib/es/_chunks/components-CqR6z_0s.js +454 -0
- package/lib/es/_chunks/{draft-data-CyvourYt.js → draft-data-B6NRV_eF.js} +1 -1
- package/lib/es/_chunks/{home-cM7dMWyx.js → home-C7rHVbsK.js} +12 -12
- package/lib/es/_chunks/{publish-button-D1FdjYsc.js → publish-button-C44FGAGB.js} +7 -7
- package/lib/es/_chunks/{site-state-DH2gSYZG.js → site-state-Bvk8uNN5.js} +183 -181
- package/lib/es/_chunks/{state-C0vjPuun.js → state-CVCmClC_.js} +4 -4
- package/lib/es/components.js +1 -1
- package/lib/es/home.js +6 -6
- package/lib/es/project-html.js +55 -53
- package/lib/es/resources.js +2 -2
- package/lib/es/setting.js +4 -4
- package/lib/es/site-state.js +15 -13
- package/lib/es/theme.js +2 -2
- package/lib/es/uploader.js +1 -1
- package/package.json +17 -17
- package/lib/cjs/_chunks/components-Bu9hOpQX.js +0 -48
- package/lib/cjs/_chunks/publish-button-CrxBSa6-.js +0 -1
- package/lib/cjs/_chunks/site-state-Bnmllv1a.js +0 -1
- package/lib/cjs/_chunks/state-BQClQU2N.js +0 -1
- package/lib/es/_chunks/components-BVBbxiyS.js +0 -453
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";const q=require("@blocklet/pages-kit/builtin/utils"),b=require("@blocklet/pages-kit/types"),O=require("@blocklet/pages-kit/utils/property"),S=require("@blocklet/quickjs"),F=require("@blocklet/sdk/lib/config"),B=require("lru-cache"),R=require("node-fetch"),h=require("ufo"),J=require("@blocklet/logger"),K=require("vite-plugin-node-polyfills/shims/buffer"),Q=require("@blocklet/pages-kit/utils/builtin"),M=require("@blocklet/pages-kit/utils/typescript/builtin-module-transformer"),A=require("@blocklet/sdk/lib/component"),G=require("autoprefixer"),V=require("esbuild"),W=require("postcss"),H=require("tailwindcss"),z=require("typescript"),C=e=>e&&e.__esModule?e:{default:e};function X(e){if(e&&e.__esModule)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const I=C(F),Y=C(R),Z=C(J),ee=C(K),te=C(G),oe=X(V),ne=C(W),re=C(H),m=C(z),g=Z.default("pages-kit"),se=async(e,{componentId:t})=>{const o=`@tailwind components;
|
|
2
|
+
@tailwind utilities;
|
|
3
|
+
`,n=`.CustomComponent_${t}`;return(await ne.default([re.default({content:[{raw:e,extension:"tsx"}]}),te.default({overrideBrowserslist:["> 1%","last 2 versions"],stats:{}}),i=>{i.walkRules(r=>{r.selectors=r.selectors.map(c=>c.replace(/\.(.+)/g,`${n}.$1,${n} .$1`))})}]).process(o)).css},ce=async(e,{componentId:t})=>{const o=await se(e,{componentId:t});return`export const __PagesKit_CSS__ = ${JSON.stringify(o)};
|
|
4
|
+
|
|
5
|
+
${e}
|
|
6
|
+
`},N=S.memoize(async(e,t)=>{let o=m.default.transpileModule(e,{compilerOptions:{jsx:m.default.JsxEmit.React,target:m.default.ScriptTarget.ES2016,module:m.default.ModuleKind.ESNext},transformers:{before:[M.createBuiltinModuleTransformer(m.default)]}}).outputText;if(t.tailwind&&(o=await ce(o,{componentId:t.componentId})),t.module===b.PreloadComponentScriptModule.ESM)return o;const n=m.default.transpileModule(o,{compilerOptions:{jsx:m.default.JsxEmit.React,target:m.default.ScriptTarget.ES2016,module:m.default.ModuleKind.CommonJS,moduleResolution:m.default.ModuleResolutionKind.Node16}}).outputText;return t.module===b.PreloadComponentScriptModule.CJS?n:ie(t.moduleName,n)},{keyGenerator:(e,t)=>JSON.stringify(["transpileModule",e,t])}),ae=async(e,t)=>{var r,c;const n=(c=(r=(await oe.build({entryPoints:["index.tsx"],external:Object.keys(Q.BuiltinModules),format:"esm",target:"esnext",bundle:!0,write:!1,plugins:[{name:"vfs",setup(d){d.onResolve({filter:/.*/},s=>s.path==="index.tsx"?{path:"index.tsx",namespace:"vfs"}:s.path==="./component"?{path:"component.tsx",namespace:"vfs"}:M.isRelativeModule(s.path)?{path:s.path,namespace:"vfs"}:null),d.onLoad({filter:/.*/,namespace:"vfs"},async s=>{if(s.path==="index.tsx")return{contents:`export { ${t} } from './component'`,loader:"tsx"};if(s.path==="component.tsx")return{contents:e,loader:"tsx"};if(M.isRelativeModule(s.path)){const l=s.path.split("/").pop(),f=h.joinURL("chunks",l),{data:x}=await A.call({name:"pages-kit",method:"GET",path:f});return{contents:x,loader:"js"}}return null})}}]})).outputFiles)==null?void 0:r[0])==null?void 0:c.contents;if(!n)throw new Error("Failed to build server code");const a=ee.default.from(n).toString();return m.default.transpileModule(a,{compilerOptions:{module:m.default.ModuleKind.ESNext,target:m.default.ScriptTarget.ES2020}}).outputText},k=S.memoize(async(e,t)=>{const o=await ae(e,t);return new RegExp(`export\\s+\\{\\s+${t}\\s+\\}`,"m").test(o)?o:void 0},{keyGenerator:(e,t)=>JSON.stringify(["extractExportValueSchema",e,t])}),ie=(e,t)=>{const o=/\bawait\b/.test(t);return`// GENERATED FILE. DO NOT EDIT.
|
|
7
|
+
var ${e} = ${o?"async":""} function () {
|
|
8
|
+
|
|
9
|
+
const exports = {};
|
|
10
|
+
let moduleExports = null;
|
|
11
|
+
|
|
12
|
+
// add commonjs module compatibility layer
|
|
13
|
+
const module = { exports: moduleExports };
|
|
14
|
+
|
|
15
|
+
// execute component code
|
|
16
|
+
${t}
|
|
17
|
+
|
|
18
|
+
// handle possible module.exports
|
|
19
|
+
if (module.exports && module.exports !== moduleExports) {
|
|
20
|
+
// if module.exports is used, use it first
|
|
21
|
+
return typeof module.exports === 'object' ? module.exports : { default: module.exports };
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// ensure a default export
|
|
25
|
+
if (!('default' in exports) && Object.keys(exports).length === 0) {
|
|
26
|
+
// module has no exports, return null to indicate invalid
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return exports;
|
|
31
|
+
};
|
|
32
|
+
`},_=new B.LRUCache({max:100}),U=60*60,j=60;function $(e){g.info("clear preload components cache",{cacheKey:e}),_.delete(e)}function pe(e){for(const t of _.keys())t.includes(e)&&(g.info("clear preload components cache",{cacheKey:t}),$(t))}function v({mode:e,instanceId:t,componentId:o,locale:n}){return["getPreloadComponents",e,t,o,n].join("-")}async function le({mode:e,req:t,state:o,locale:n,instances:a,module:i}){const{supportedLocales:r,config:{defaultLocale:c}}=o;if(!c)return null;const d=(await Promise.all(a.map(async p=>{try{const u=v({mode:e,instanceId:p.id,componentId:p.componentId,locale:n});if(e!=="draft"&&p.useCache&&_.has(u))return g.info(`get preload component from cache: ${u}`),_.get(u);const y=w({state:o,componentId:p.componentId});if(!y)return null;const E=await L({req:t,state:o,componentId:y.id,locale:n,defaultLocale:c,properties:p.properties});if(!E)return null;const T={instanceId:p.id,preload:E};if(e!=="draft"&&p.useCache){let P=U;p.cacheDuration&&(P=p.cacheDuration),g.info(`set preload component to cache(${P}s): ${u}`),_.set(u,T,{ttl:P*1e3})}return T}catch(u){return g.error("get preload component error",{instanceId:p.id,componentId:p.componentId},{error:u}),null}}))).filter(p=>!!p),s=Object.values(d.reduce((p,u)=>({...p,...u.preload.components}),{}));async function l(){const p=await Promise.all(s.map(async u=>{const y=O.componentUMDName({componentId:u.component.id}),E=i===b.PreloadComponentScriptModule.ESM?{module:i,script:await N(u.script,{componentId:u.component.id,module:i,tailwind:e!=="draft"})}:{module:i,script:await N(u.script,{componentId:u.component.id,module:i,moduleName:y,tailwind:e!=="draft"}),moduleName:y};return[u.component.id,{component:u.component,script:E}]}));return Object.fromEntries(p)}const f=await l();return{config:{defaultLocale:c,supportedLocales:r},components:f,instances:d.map(p=>({id:p.instanceId,componentId:p.preload.component.id,locales:{[p.preload.locale]:{props:p.preload.props}}}))}}async function L({req:e,state:t,componentId:o,locale:n,defaultLocale:a,properties:i}){const{supportedLocales:r}=t,c=w({state:t,componentId:o});if(!c)return null;const d=r.some(l=>l.locale===n)?n:a;if(!d)return null;const s=await D({req:e,state:t,componentId:o,locale:d,defaultLocale:a,properties:i});return s?{component:c,...s}:null}const ue=20;async function D({req:e,depth:t=0,state:o,componentId:n,locale:a,defaultLocale:i,properties:r}){if(t>ue)throw new RangeError("max component depth exceeded");const c=de({state:o,componentId:n,properties:r,locale:a});if(!c)return null;const{props:d}=c,s={locale:a||i,components:{[c.component.id]:{component:c.component,script:c.script}},props:{...d}};try{const l=await fe({...c,req:e});l!=null&&l.props&&Object.assign(s.props,l.props)}catch(l){g.error("preload data at server side error",{componentId:n,name:c.component.name},{error:l})}return await Promise.all(Object.entries(d).map(async([l,f])=>{if((f==null?void 0:f.type)===O.RenderNestedComponent){const x=await D({req:e,depth:t+1,state:o,componentId:f.componentId,locale:a,defaultLocale:i,properties:f.properties});x&&(Object.assign(s.components,x.components),Object.assign(s.props,{[l]:{type:O.RenderNestedComponent,componentId:f.componentId,props:x.props}}))}})),s}function de({state:e,componentId:t,locale:o,properties:n}){const a=w({state:e,componentId:t});if(!a)return null;const i=O.mergeComponent({componentId:t,getComponent:r=>w({state:e,componentId:r}),locale:o,defaultLocale:e.config.defaultLocale,properties:n});return i?{component:a,script:i.script,props:{locale:o,...i.properties}}:null}function w({state:e,componentId:t}){var o,n,a;return((o=e.components[t])==null?void 0:o.data)??((a=(n=e.resources.components)==null?void 0:n[t])==null?void 0:a.component)}function me({state:e,name:t}){var n,a;const o=t.toLowerCase();return((n=Object.values(e.components).find(i=>{var r;return((r=i.data.name)==null?void 0:r.toLowerCase())===o}))==null?void 0:n.data)??((a=e.resources.components&&Object.values(e.resources.components).find(i=>{var r;return((r=i.component.name)==null?void 0:r.toLowerCase())===o}))==null?void 0:a.component)}async function fe({component:e,script:t,props:o,req:n}){const a=await k(t,"getServerSideProps");if(!a)return null;const i=new Promise((r,c)=>{setTimeout(()=>c(new Error("getServerSideProps timeout in promise race")),j*1e3)});return Promise.race([i,S.Sandbox.callFunction({code:`${a}
|
|
33
|
+
|
|
34
|
+
export async function getServerSidePropsWrapper({ location, fetch, props}) {
|
|
35
|
+
globalThis.location = location
|
|
36
|
+
globalThis.fetch = fetch
|
|
37
|
+
|
|
38
|
+
return getServerSideProps(props);
|
|
39
|
+
}
|
|
40
|
+
`,filename:`${e.name||e.id}.js`,moduleLoader:r=>{if(r==="@blocklet/pages-kit/builtin/utils")return`const { joinURL, withQuery, getQuery, getComponentMountPoint } = globalThis
|
|
41
|
+
export { joinURL, withQuery, getQuery, getComponentMountPoint }
|
|
42
|
+
`;if(r==="@blocklet/pages-kit/builtin/dayjs")return S.BuiltinModules.dayjs},global:{console:{log:(...r)=>{g.info(...r)},warn:(...r)=>{g.warn(...r)},error:(...r)=>{g.error(...r)}},getComponentMountPoint:q.getComponentMountPoint,joinURL:h.joinURL,withQuery:h.withQuery,getQuery:h.getQuery},functionName:"getServerSidePropsWrapper",args:[{location:{href:h.joinURL(h.withHttps(n.hostname),n.originalUrl)},fetch:(r,{...c}={})=>{const d=typeof r=="string"&&r.startsWith("/")?h.joinURL(I.default.env.appUrl,r):r;if(typeof d=="string"&&h.parseURL(d).host===h.parseURL(I.default.env.appUrl).host){const s=n.get("cookie");if(s){const l=new R.Headers(c.headers);l.set("cookie",s),c.headers=l}}return Y.default(d,{...c,timeout:j*1e3}).then(s=>({ok:s.ok,status:s.status,statusText:s.statusText,headers:Object.fromEntries(s.headers.entries()),json:()=>s.json()}))},props:o}]})])}const ge=S.memoize(async(e,t,o)=>{const n=await k(e,t);return n?await S.Sandbox.callFunction({code:`
|
|
43
|
+
${n}
|
|
44
|
+
|
|
45
|
+
export function get${t}SchemaWrapper() {
|
|
46
|
+
return ${t};
|
|
47
|
+
}
|
|
48
|
+
`,filename:`${o}.js`,functionName:`get${t}SchemaWrapper`}):null},{keyGenerator:(e,t,o)=>JSON.stringify(["getExportSchemaValueFromCode",e,t,o])});exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=U;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=j;exports.clearPreloadComponentsCache=$;exports.clearPreloadComponentsCacheByMode=pe;exports.getComponentFromState=w;exports.getComponentFromStateByName=me;exports.getExportSchemaValueFromCode=ge;exports.getPreloadComponent=L;exports.getPreloadComponents=le;exports.getPreloadComponentsCacheKey=v;exports.logger=g;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),t=require("./state-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),t=require("./state-CVPLn5Cq.js");function n({children:e}){const r=t.useProjectId();return s.jsx(t.StoreProvider,{url:t.getWssURL(r??""),name:"root",waitingSynced:!0,children:s.jsx(o,{children:e})})}function o({children:e}){const{state:r}=t.useStore();return e({state:r})}exports.default=n;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Ve=Object.create;var pe=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Je=Object.getPrototypeOf,Ke=Object.prototype.hasOwnProperty;var Xe=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of De(t))!Ke.call(e,r)&&r!==o&&pe(e,r,{get:()=>t[r],enumerable:!(i=Ge(t,r))||i.enumerable});return e};var xe=(e,t,o)=>(o=e!=null?Ve(Je(e)):{},Xe(t||!e||!e.__esModule?pe(o,"default",{value:e,enumerable:!0}):o,e));const n=require("react/jsx-runtime"),w=require("./state-
|
|
1
|
+
"use strict";var Ve=Object.create;var pe=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Je=Object.getPrototypeOf,Ke=Object.prototype.hasOwnProperty;var Xe=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of De(t))!Ke.call(e,r)&&r!==o&&pe(e,r,{get:()=>t[r],enumerable:!(i=Ge(t,r))||i.enumerable});return e};var xe=(e,t,o)=>(o=e!=null?Ve(Je(e)):{},Xe(t||!e||!e.__esModule?pe(o,"default",{value:e,enumerable:!0}):o,e));const n=require("react/jsx-runtime"),w=require("./state-CVPLn5Cq.js"),ke=require("@blocklet/pages-kit/builtin/locale"),Ye=require("@arcblock/ux/lib/Result"),Qe=require("@blocklet/pages-kit/builtin/page/header"),Ze=require("@blocklet/ui-react/lib/Header"),_=require("@emotion/css"),Q=require("@emotion/react"),et=require("@emotion/styled"),p=require("@blocklet/pages-kit/builtin/mui/material"),$e=require("ahooks"),tt=require("isomorphic-dompurify"),A=require("lodash"),nt=require("lodash/isEmpty"),g=require("@blocklet/pages-kit/builtin/react"),ot=require("react-helmet"),B=require("@blocklet/pages-kit/builtin/react-router-dom"),U=require("react-use"),P=require("ufo");require("@mui/icons-material");const K=require("@blocklet/ai-runtime/components"),rt=require("@mui/utils"),it=require("lodash/pick"),st=require("react-error-boundary"),ee=require("@blocklet/pages-kit/builtin/iconify/react"),at=require("@blocklet/pages-kit/builtin/async/react-markdown"),ct=require("remark-gfm"),lt=require("@blocklet/pages-kit/builtin/mui/lab"),$=require("@arcblock/ux/lib/Theme"),dt=require("@arcblock/react-hooks/lib/useBrowser"),ut=require("@arcblock/ux/lib/Colors"),re=require("@blocklet/pages-kit/components"),mt=require("@mui/material/useMediaQuery"),Se=require("@iconify-icon/react"),pt=require("@arcblock/ux/lib/Screenshot"),xt=require("lodash/omit"),ft=require("@arcblock/ux/lib/Button"),ht=require("is-uri"),X=require("pathe"),gt=require("@blocklet/embed/message"),bt=require("lodash/isEqual"),yt=require("@blocklet/embed/react"),jt=require("react-twitter-embed"),wt=require("@blocklet/ui-react/lib/Footer"),_t=require("webfontloader"),vt=require("@blocklet/pages-kit/builtin/session"),S=e=>e&&e.__esModule?e:{default:e},Ce=S(Ye),kt=S(Ze),Be=S(et),$t=S(tt),St=S(nt),Ie=S(g),ie=S(it),Ct=S(at),Bt=S(ct),It=S(dt),fe=S(ut),Ne=S(mt),Nt=S(pt),q=S(xt),Pt=S(ft),te=S(ht),Rt=S(bt),Tt=S(wt),qt=S(_t);function Et(e,t,o,i){e.locales||(e.locales={}),e.locales[o]=e.locales[o]||{},e.locales[o].title=i.title??e.locales[o].title,e.locales[o].image=i.image??e.locales[o].image,e.locales[o].description=i.description??e.locales[o].description,Object.entries(i.sectionsData).forEach(([r,s])=>{var c,l,d,m;const a=Object.values(e.sections).find(u=>u.id===r||u.name===r);if(a&&a.isTemplateSection)if(a.locales=a.locales||{},a.locales[o]=a.locales[o]||{},a.component==="custom-component"){const u=(c=a.config)==null?void 0:c.componentId;if(!u)return;const f=((l=t.components[u])==null?void 0:l.data)||((m=(d=t.resources.components)==null?void 0:d[u])==null?void 0:m.component);if(!f)return;a.locales[o].properties=a.locales[o].properties||{},Object.entries(s||{}).forEach(([x,y])=>{var h,v;const j=((h=f==null?void 0:f.properties)==null?void 0:h[x])||Object.values((f==null?void 0:f.properties)||{}).find(b=>{var k;return((k=b.data)==null?void 0:k.key)===x});j&&(a.locales[o].properties[(v=j.data)==null?void 0:v.id]={value:y})})}else a.locales[o]={...a.locales[o],...s||{}}})}const zt=g.forwardRef(({onClick:e,...t},o)=>{const[i,r]=g.useState(!1),s=g.useCallback(async a=>{try{r(!0),await(e==null?void 0:e(a))}finally{r(!1)}},[e]);return n.jsx(lt.LoadingButton,{ref:o,...t,loading:t.loading||i,onClick:s})});function Wt({tip:e,tipSucceed:t,title:o,titleSucceed:i,icon:r,iconSucceed:s,autoReset:a,placement:c="top",...l}){const[d,m]=g.useState(!1),[u,f]=g.useState(),x=g.useRef(),y=()=>{f(void 0),a&&(x.current=window.setTimeout(()=>{m(!1)},3e3))},j=()=>{clearTimeout(x.current)},h=d?s:r,v=u?n.jsx(p.Box,{color:"error",children:u.message}):d&&t||e,b=d?i:o;return n.jsx(p.Tooltip,{title:v,disableInteractive:!0,placement:c,onClose:y,onOpen:j,children:n.jsx("span",{children:n.jsx(zt,{startIcon:h&&(typeof h=="string"?n.jsx(ee.Icon,{icon:h}):h),loadingPosition:h?"start":void 0,...l,onClick:async k=>{if(l.onClick)try{await l.onClick(k),m(!0)}catch(N){f(N)}},children:b})})})}const Lt=Ie.default.lazy(()=>import("@blocklet/pages-kit/builtin/async/react-syntax-highlighter").then(e=>({default:e.Prism}))),At=p.styled(e=>n.jsx(Ct.default,{...e,remarkPlugins:[Bt.default],components:{pre:Ot,code:({node:t,inline:o,className:i,children:r,...s})=>{if(!r)return null;const a=/language-(\w+)/.exec(i||"");return o?n.jsx(p.Box,{component:"code",className:i,...s,children:r}):n.jsx(p.Box,{component:Lt,language:a==null?void 0:a[1],...s,sx:{borderRadius:1},children:String(r).replace(/\n$/,"")})},table:({className:t,children:o})=>n.jsx(p.Box,{sx:{overflow:"auto",my:1},children:n.jsx("table",{className:t,children:o})})}}))`
|
|
2
2
|
width: 100%;
|
|
3
3
|
overflow: hidden;
|
|
4
4
|
word-break: break-word;
|
|
@@ -530,11 +530,11 @@
|
|
|
530
530
|
font-family: ${JSON.stringify(t)}, ${_e};
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
|
-
`})}const{SessionProvider:uo,SessionContext:Qn,SessionConsumer:mo,withSession:po}=vt.createAuthServiceSessionContext();function ce(){return g.useContext(Qn)}function Zn(...e){var o;const{session:t}=ce();return e.includes((o=t.user)==null?void 0:o.role)}function eo(...e){var i;const{session:t}=ce(),o=Zn(...e);return((i=window.blocklet)==null?void 0:i.tenantMode)==="multiple"?!!t.user:o}function to(e){return e!=null}function no(){const[e]=B.useSearchParams(),{session:t}=ce(),o=eo("owner","admin","pagesEditor","member"),i=g.useMemo(()=>{const s=e.get("mode");return An.includes(s)?s:"production"},[e]),r=i==="production"?i:t.user?o?i:"production":null;return r?n.jsx(Oe,{mode:r}):null}function Oe({mode:e}){if(e!=="draft"){const t=window.__PAGE_STATE__;return t?n.jsx(Y,{mode:e,state:t}):n.jsx(ro,{mode:e,children:({state:o})=>n.jsx(Y,{mode:e,state:o})})}return n.jsx(oo,{children:({state:t})=>n.jsx(Y,{mode:e,state:t})})}const oo=g.lazy(()=>Promise.resolve().then(()=>require("./draft-data-
|
|
533
|
+
`})}const{SessionProvider:uo,SessionContext:Qn,SessionConsumer:mo,withSession:po}=vt.createAuthServiceSessionContext();function ce(){return g.useContext(Qn)}function Zn(...e){var o;const{session:t}=ce();return e.includes((o=t.user)==null?void 0:o.role)}function eo(...e){var i;const{session:t}=ce(),o=Zn(...e);return((i=window.blocklet)==null?void 0:i.tenantMode)==="multiple"?!!t.user:o}function to(e){return e!=null}function no(){const[e]=B.useSearchParams(),{session:t}=ce(),o=eo("owner","admin","pagesEditor","member"),i=g.useMemo(()=>{const s=e.get("mode");return An.includes(s)?s:"production"},[e]),r=i==="production"?i:t.user?o?i:"production":null;return r?n.jsx(Oe,{mode:r}):null}function Oe({mode:e}){if(e!=="draft"){const t=window.__PAGE_STATE__;return t?n.jsx(Y,{mode:e,state:t}):n.jsx(ro,{mode:e,children:({state:o})=>n.jsx(Y,{mode:e,state:o})})}return n.jsx(oo,{children:({state:t})=>n.jsx(Y,{mode:e,state:t})})}const oo=g.lazy(()=>Promise.resolve().then(()=>require("./draft-data-BwJ1xNZb.js")));function ro({mode:e,children:t}){const o=document.querySelector('meta[property="pages:version"]'),i=o==null?void 0:o.content,r=w.useProjectId(),s=g.useMemo(()=>{if(i==="{{pagesPublishedAt}}"){const l=localStorage.getItem(w.getProjectPageVersionKey(r??""));return Number(l)?Number(l):new Date().getTime()}return Number(i)},[i]),{loading:a,value:c}=U.useAsync(()=>Le({mode:e,version:s}),[e,s]);return a?n.jsx(Ae,{}):c?t({state:c}):null}function Y({mode:e,state:t}){var y,j,h,v;const{t:o,locale:i}=ke.useLocaleContext(),{pageIds:r,pages:s,supportedLocales:a,config:{defaultLocale:c},resources:l}=t,d=w.getAllComponents(t),m=g.useMemo(()=>a!=null&&a.some(b=>b.locale===i)?i:void 0,[i,a]),u=Object.values(s).find(b=>(b==null?void 0:b.slug)==="/")?void 0:Object.values(s)[0],f=g.useMemo(()=>r.map(b=>{const k=s[b];return k&&{id:k.id,path:P.joinURL("/",m||"",k.slug,e!=="production"?`?mode=${e}`:"")}}).filter(to),[r,s,m,e]),x=([...b])=>(e!=="production"&&b.unshift(n.jsx(g.Suspense,{fallback:n.jsx("div",{}),children:n.jsx(so,{mode:"production",state:t})})),b);return n.jsxs(en,{value:{pages:f},children:[n.jsxs(B.Routes,{children:[u&&n.jsx(B.Route,{index:!0,element:n.jsx(B.Navigate,{to:P.joinURL("/",m||"",u.slug)})}),r.map(b=>{const k=s[b];return k?n.jsx(B.Route,{path:P.joinURL(":projectIdOrSlug?",k.slug),element:n.jsx(Z,{mode:e,components:d,page:k,locale:m,defaultLocale:c,headerAddons:x})},k.id):null}),l.pages&&Object.values(l.pages).map(({blockletId:b,page:k})=>n.jsx(B.Route,{path:P.joinURL("/",`@${b}`,k.slug),element:n.jsx(Z,{mode:e,components:d,page:k,locale:m,defaultLocale:c,headerAddons:x})},k.id)),n.jsx(B.Route,{path:"*",element:n.jsx(p.Box,{width:"100vw",height:"100vh",display:"flex",justifyContent:"center",alignItems:"center",children:n.jsx(Ce.default,{style:{background:"inherit"},status:404,extra:n.jsx(Me,{href:"/",children:o("common.back")})})})})]}),e!=="production"&&n.jsx(Jn,{sx:{bgcolor:"info.light"},children:e}),n.jsx(Yn,{titleFontFamily:(j=(y=t.config)==null?void 0:y.fontFamily)==null?void 0:j.title,descriptionFontFamily:(v=(h=t.config)==null?void 0:h.fontFamily)==null?void 0:v.description})]})}function io({mode:e,state:t,path:o,pageData:i}){const{t:r,locale:s}=ke.useLocaleContext(),{pages:a,supportedLocales:c,config:{defaultLocale:l},resources:d}=t,m=Object.values(a).find(h=>(h==null?void 0:h.slug)===o),u=Object.values(d.pages||{}).find(h=>h.page.slug===o),f=g.useMemo(()=>c!=null&&c.some(h=>h.locale===s)?s:void 0,[s,c]),x=$e.useReactive({page:null});g.useEffect(()=>{const h=m||(u==null?void 0:u.page)||null;h?x.page=A.cloneDeep(h):x.page=null},[m,u]);const y=g.useRef();if(g.useEffect(()=>{A.isEqual(i,y.current)||i&&x.page&&(Et(x.page,t,f,i),y.current=A.cloneDeep(i))},[{}]),!m&&!(u!=null&&u.page))return n.jsx(p.Box,{width:"100vw",height:"100vh",display:"flex",justifyContent:"center",alignItems:"center",children:n.jsx(Ce.default,{style:{background:"inherit"},status:404,extra:n.jsx(Me,{href:"/",children:r("common.back")})})});const j=w.getAllComponents(t);return x.page?n.jsx(Z,{mode:e,components:j,page:x.page,locale:f,defaultLocale:l}):null}function Z({mode:e,components:t,page:o,locale:i,defaultLocale:r,headerAddons:s}){var h,v,b,k,N,W,J,le,de;const a=((h=o.locales)==null?void 0:h[i])??((v=o.locales)==null?void 0:v[r])??{},c=a.title||((b=window.blocklet)==null?void 0:b.appName),l=a.description||((k=window.blocklet)==null?void 0:k.appDescription),d=w.autoResizeImage(w.getImageAbsoluteUrl(a.image),540),{logo:m,brand:u,description:f,...x}=Qe.useHeaderState(),y=g.useMemo(()=>E=>{var L;let C=(s==null?void 0:s(E))??E;return C=((L=x.addons)==null?void 0:L.call(x,C))??C,C},[x.addons,s]),j=(N=a.header)!=null&&N.translucent?He:Ue;return n.jsxs(n.Fragment,{children:[!!a.backgroundColor&&n.jsx(Q.Global,{styles:Q.css`
|
|
534
534
|
body {
|
|
535
535
|
background-color: ${a.backgroundColor} !important;
|
|
536
536
|
}
|
|
537
|
-
`}),n.jsx(j,{hideNavMenu:!!((W=a.header)!=null&&W.hideNavMenus),translucentTextColor:(J=a.header)==null?void 0:J.translucentTextColor,...m?{logo:m}:{},...u?{brand:u}:{},...f?{description:f}:{},className:_.cx(((le=a.header)==null?void 0:le.sticky)&&"sticky","page-header"),maxWidth:!1,addons:y}),n.jsx(B.ScrollRestoration,{}),n.jsxs(ot.Helmet,{children:[n.jsx("title",{children:c}),n.jsx("meta",{name:"og:title",content:c}),n.jsx("meta",{name:"og:description",content:l}),n.jsx("meta",{name:"og:image",content:d}),n.jsx("meta",{name:"twitter:image:src",content:d}),n.jsx("meta",{name:"twitter:image",content:d}),n.jsx("meta",{property:"twitter:description",content:l}),n.jsx("meta",{property:"twitter:title",content:c}),n.jsx("meta",{name:"description",content:l})]}),n.jsx(p.Stack,{flexGrow:1,children:o.sectionIds.map(E=>{var ue,me;const C=o.sections[E];if(!C||C.visibility==="hidden")return null;const L=(ue=C.locales)==null?void 0:ue[i],Fe=((me=C.locales)==null?void 0:me[r])??{};return n.jsx(Vn,{id:E,type:C.component,mode:e,section:C,config:{...St.default(L)?Fe:L,locale:i,dev:e==="draft"?{mode:e,components:t,defaultLocale:r}:{mode:e}}},E)})}),!((de=a.footer)!=null&&de.hidden)&&n.jsx(Dn,{})]})}const so=g.lazy(()=>Promise.resolve().then(()=>require("./publish-button-
|
|
537
|
+
`}),n.jsx(j,{hideNavMenu:!!((W=a.header)!=null&&W.hideNavMenus),translucentTextColor:(J=a.header)==null?void 0:J.translucentTextColor,...m?{logo:m}:{},...u?{brand:u}:{},...f?{description:f}:{},className:_.cx(((le=a.header)==null?void 0:le.sticky)&&"sticky","page-header"),maxWidth:!1,addons:y}),n.jsx(B.ScrollRestoration,{}),n.jsxs(ot.Helmet,{children:[n.jsx("title",{children:c}),n.jsx("meta",{name:"og:title",content:c}),n.jsx("meta",{name:"og:description",content:l}),n.jsx("meta",{name:"og:image",content:d}),n.jsx("meta",{name:"twitter:image:src",content:d}),n.jsx("meta",{name:"twitter:image",content:d}),n.jsx("meta",{property:"twitter:description",content:l}),n.jsx("meta",{property:"twitter:title",content:c}),n.jsx("meta",{name:"description",content:l})]}),n.jsx(p.Stack,{flexGrow:1,children:o.sectionIds.map(E=>{var ue,me;const C=o.sections[E];if(!C||C.visibility==="hidden")return null;const L=(ue=C.locales)==null?void 0:ue[i],Fe=((me=C.locales)==null?void 0:me[r])??{};return n.jsx(Vn,{id:E,type:C.component,mode:e,section:C,config:{...St.default(L)?Fe:L,locale:i,dev:e==="draft"?{mode:e,components:t,defaultLocale:r}:{mode:e}}},E)})}),!((de=a.footer)!=null&&de.hidden)&&n.jsx(Dn,{})]})}const so=g.lazy(()=>Promise.resolve().then(()=>require("./publish-button-BNJS7rMq.js"))),Ue=Be.default(kt.default)`
|
|
538
538
|
&.sticky {
|
|
539
539
|
position: sticky;
|
|
540
540
|
top: 0;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),v=require("./state-CVPLn5Cq.js"),q=require("@blocklet/pages-kit/builtin/locale"),O=require("@arcblock/ux/lib/Toast"),S=require("@mui/icons-material"),E=require("@blocklet/pages-kit/builtin/mui/lab"),s=require("@blocklet/pages-kit/builtin/mui/material"),W=require("@blocklet/pages-kit/builtin/immer"),z=require("lodash/difference"),c=require("@blocklet/pages-kit/builtin/react"),_=require("react-use"),C=require("./home-DQaT0unu.js"),M=t=>t&&t.__esModule?t:{default:t},A=M(O),D=M(z);function N(t){const[d,b]=c.useState(!1);return e.jsx(E.LoadingButton,{...t,loading:t.loading||d,onClick:i=>{var h;const m=(h=t.onClick)==null?void 0:h.call(t,i);m instanceof Promise&&(b(!0),m.finally(()=>{b(!1)}))}})}const R=s.createSvgIcon(e.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M7.75732 16.2426L16.2426 7.75736",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M16.2426 16.2426L7.75732 7.75735",stroke:"#4B5563",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),"Close");function F(){const[t,d]=c.useState(),b=c.useMemo(()=>t?e.jsx(s.Dialog,{...t}):null,[t]),i=c.useCallback(()=>{d(void 0)},[]),m=c.useCallback(({title:h,content:g,cancelText:T="Cancel",okText:p="Ok",onOk:f,onClose:k,okIcon:L,okColor:n="primary",cancelColor:y="primary",DialogContentProps:u,form:x,...I})=>{d({...I,open:!0,children:e.jsxs("form",{onSubmit:P=>P.preventDefault(),children:[h&&e.jsxs(s.DialogTitle,{className:"between",zIndex:"appBar",bgcolor:"background.paper",sx:{borderBottom:"1px solid #E5E7EB"},children:[e.jsx(s.Box,{children:h}),e.jsx(s.IconButton,{size:"small",onClick:async()=>{i(),k==null||k()},children:e.jsx(R,{})})]}),g&&e.jsx(s.DialogContent,{...u,sx:{mt:-3,...u==null?void 0:u.sx},children:e.jsx(s.Box,{pt:3,children:g})}),e.jsxs(s.DialogActions,{children:[e.jsx(s.Button,{variant:"outlined",color:y||"primary",onClick:k??i,children:T}),e.jsx(N,{variant:"contained",color:n||"primary",startIcon:L,loadingPosition:L?"start":"center",onClick:async()=>{await(f==null?void 0:f()),i()},type:"submit",children:p})]})]}),onClose:k??i})},[i]);return{dialog:b,showDialog:m,closeDialog:i}}const H=c.forwardRef(({mode:t,state:d},b)=>{const{t:i}=q.useLocaleContext(),[m,h]=c.useState(!1),{dialog:g,showDialog:T}=F(),p=v.useProjectId(),f=c.useCallback(L=>{let n=[];T({title:i("maker.publishToProduction"),content:e.jsxs(s.Box,{sx:{minWidth:300},children:[e.jsx(s.Alert,{color:"warning",icon:e.jsx(S.Warning,{}),children:i("maker.publishToProductionTip")}),e.jsx(s.Box,{maxHeight:"50vh",overflow:"auto",mt:2,children:e.jsx(J,{state:d,toMode:t,onChange:y=>n=y,defaultPageIds:L})})]}),okText:i("maker.publish"),cancelText:i("common.cancel"),onOk:async()=>{var y,u;if((n==null?void 0:n.length)===0){const x=i("maker.publishSelectPagesMessage");throw A.default.error(x),new Error(x)}for(const x of n??d.pageIds){const I=d.pages[x];if(I){const P=(u=(y=v.checkPage(i,I,d))==null?void 0:y[0])==null?void 0:u.message;if(P)throw A.default.error(P),new Error(P)}}localStorage.setItem(v.getProjectPageVersionKey(p??""),String(new Date().getTime())),h(!0);try{await C.publishPages({mode:t,pages:n}),A.default.success(i("maker.publishSuccessMessage"))}catch(x){throw A.default.error(x.message),x}finally{h(!1)}}})},[t,d,i,p,T]);c.useImperativeHandle(b,()=>({openPublishDialog:f}));const k=c.useCallback(()=>{f()},[f]);return e.jsxs(e.Fragment,{children:[e.jsx(E.LoadingButton,{color:"primary",variant:"contained",size:"small",sx:{mr:2},onClick:k,loading:m,disabled:m,children:i("maker.publishToProduction")}),g]})});function J({state:t,toMode:d,onChange:b,defaultPageIds:i}){const{t:m,locale:h}=q.useLocaleContext(),[g,T]=c.useState(!1),[p,f]=c.useState(()=>i?Object.fromEntries(i.map(r=>[r,!0])):{}),{loading:k,error:L,value:n}=_.useAsync(()=>C.getPages({mode:d}),[d]);if(L)throw L;const y=c.useMemo(()=>JSON.parse(JSON.stringify(t.pageIds)).sort((a,j)=>{const o=t.pages[a],l=t.pages[j];return o!=null&&o.publishedAt&&new Date(o.publishedAt).getTime()<new Date(o.updatedAt).getTime()?-1:l!=null&&l.publishedAt&&new Date(l.publishedAt).getTime()<new Date(l.updatedAt).getTime()?1:new Date((o==null?void 0:o.updatedAt)??"").getTime()-new Date((l==null?void 0:l.updatedAt)??"").getTime()}),[t]),u=c.useMemo(()=>n?D.default(n.pageIds,t.pageIds):[],[t,n]),x=c.useMemo(()=>[...t.pageIds].concat(u),[t,u]),I=c.useCallback(r=>{f(a=>{const j=W.produce(a,o=>{g?(Object.assign(o,Object.fromEntries(x.map(l=>[l,!0]))),delete o[r]):o[r]?(delete o[r],u.includes(r)&&t.pageIds.filter(l=>{var w,B;return((w=t.pages[l])==null?void 0:w.slug)===((B=n==null?void 0:n.pages[r])==null?void 0:B.slug)}).forEach(l=>{delete o[l]})):(o[r]=!0,t.pageIds.includes(r)&&u.filter(l=>{var w,B;return((w=n==null?void 0:n.pages[l])==null?void 0:w.slug)===((B=t.pages[r])==null?void 0:B.slug)}).forEach(l=>{o[l]=!0}))});return T(D.default(x,Object.keys(j)).length===0),j})},[g,x,u,t,n]),P=c.useCallback(()=>{T(r=>(r&&f({}),!r))},[p]);return c.useEffect(()=>{b(g?null:Object.keys(p))},[g,p,b]),k?e.jsx(C.Loading,{sx:{my:4}}):e.jsxs(s.List,{disablePadding:!0,sx:{maxWidth:500},children:[e.jsx(s.ListItem,{sx:{position:"sticky",top:0,bgcolor:"background.paper",zIndex:1},disablePadding:!0,children:e.jsxs(s.ListItemButton,{onClick:P,dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:g,tabIndex:-1})}),e.jsx(s.ListItemText,{primary:m("common.all")})]})}),y.map(r=>{var l,w;const a=t.pages[r];if(!a)return null;const j=v.checkPage(m,a,t),o=!a.publishedAt||a.updatedAt&&new Date(a.updatedAt).getTime()>new Date(a.publishedAt).getTime();return e.jsx(s.ListItem,{disablePadding:!0,secondaryAction:e.jsxs(e.Fragment,{children:[o&&e.jsx(s.Tooltip,{title:m("maker.pages.needPublish"),children:e.jsx(S.Sync,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),!a.isPublic&&e.jsx(s.Tooltip,{title:m("maker.pages.notPublic"),children:e.jsx(S.VisibilityOff,{fontSize:"small",sx:{color:"warning.main",fontSize:16,mr:.35}})}),j&&e.jsx(v.PageErrorTip,{errors:j,children:e.jsx(S.Warning,{sx:{color:"error.dark",mr:.35}})})]}),children:e.jsxs(s.ListItemButton,{onClick:()=>I(r),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:g||!!p[r],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:a.slug,secondary:(w=(l=a.locales)==null?void 0:l[h])==null?void 0:w.title,primaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"},secondaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"}})]})},r)}),u.map(r=>{var j,o;const a=n==null?void 0:n.pages[r];return a?e.jsx(s.ListItem,{disablePadding:!0,secondaryAction:e.jsx(s.Chip,{color:"warning",label:"deleted",size:"small"}),children:e.jsxs(s.ListItemButton,{onClick:()=>I(r),dense:!0,children:[e.jsx(s.ListItemIcon,{children:e.jsx(s.Checkbox,{edge:"start",checked:g||!!p[r],tabIndex:-1})}),e.jsx(s.ListItemText,{primary:a.slug,secondary:(o=(j=a.locales)==null?void 0:j[h])==null?void 0:o.title,primaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"},secondaryTypographyProps:{noWrap:!0,textOverflow:"ellipsis"}})]})},r):null})]})}exports.default=H;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const Ne=require("vite-plugin-node-polyfills/shims/process"),Fe=require("vite-plugin-node-polyfills/shims/global"),O=require("./components-paCr_hhD.js"),qe=require("@blocklet/quickjs"),de=require("@blocklet/sdk/lib/component"),Me=require("@blocklet/sdk/lib/config"),xe=require("@reactivedata/reactive"),H=require("@syncedstore/core"),y=require("fs"),oe=require("glob"),Be=require("lib0/decoding"),Ve=require("lib0/encoding"),_=require("lodash"),ve=require("lru-cache"),$e=require("nanoid"),Ge=require("p-limit"),f=require("path"),Je=require("stream/promises"),Ye=require("tar"),B=require("ufo"),ze=require("wait-on"),x=require("y-protocols/awareness"),se=require("y-protocols/sync"),He=require("yaml"),Ke=require("yjs"),We=require("lodash/isNil"),T=require("sequelize");require("sqlite3");const F=t=>t&&t.__esModule?t:{default:t};function ee(t){if(t&&t.__esModule)return t;const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(s,e,n.get?n:{enumerable:!0,get:()=>t[e]})}}return s.default=t,Object.freeze(s)}const X=F(Ne),we=F(Fe),S=F(Me),ne=ee(Be),j=ee(Ve),Xe=F(Ge),Qe=F(f),Ze=F(ze),$=ee(He),M=ee(Ke),et=F(We);S.default.env.mode;const tt="image-bin";S.default.env.INIT_TEMPLATE_PATH;const st=X.default.env.DATABASE_URL||Qe.default.join(S.default.env.dataDir,"db/pages-kit.db"),Ee=S.default,nt=()=>S.default.env.tenantMode==="multiple",at=()=>{var t;return(et.default(Ee.env.preferences.multiTenantAllProjectAccessPassports)?[]:(t=Ee.env.preferences.multiTenantAllProjectAccessPassports)==null?void 0:t.split(","))||[]},rt=T.DataTypes.sqlite.DATE.parse;T.DataTypes.sqlite.DATE.parse=(t,s)=>typeof t=="number"?new Date(t):rt(t,s);const z=new T.Sequelize({dialect:"sqlite",storage:st,benchmark:X.default.env.ENABLE_SEQUELIZE_BENCHMARK==="true",retry:{match:[/SQLITE_BUSY/],name:"query",max:10},logging:X.default.env.ENABLE_SEQUELIZE_LOGGING==="true"?console.log:!1});z.query("pragma journal_mode = WAL;");z.query("pragma synchronous = normal;");z.query("pragma journal_size_limit = 67108864;");class te extends T.Model{}te.init({id:{type:T.DataTypes.UUID,allowNull:!1,primaryKey:!0,defaultValue:T.DataTypes.UUIDV4},projectId:{type:T.DataTypes.UUID,allowNull:!1},componentId:{type:T.DataTypes.STRING,allowNull:!1}},{sequelize:z,tableName:"ProjectComponents",timestamps:!1});class C extends T.Model{static async getProjectByIdOrSlug(s){return C.findOne({where:{[T.Op.or]:[{id:s},{slug:s}]}})}}C.init({id:{type:T.DataTypes.UUID,defaultValue:T.DataTypes.UUIDV4,primaryKey:!0},name:{type:T.DataTypes.STRING,allowNull:!1},description:T.DataTypes.TEXT,createdAt:T.DataTypes.DATE,updatedAt:T.DataTypes.DATE,createdBy:{type:T.DataTypes.STRING,allowNull:!1},updatedBy:{type:T.DataTypes.STRING,allowNull:!1},slug:T.DataTypes.STRING,icon:T.DataTypes.STRING,pinnedAt:T.DataTypes.DATE,useAllResources:T.DataTypes.BOOLEAN,relatedBlocklets:{type:T.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){return this.getDataValue("relatedBlocklets")||{}},set(t){this.setDataValue("relatedBlocklets",JSON.stringify(t||{}))}}},{sequelize:z,paranoid:!0});C.hasMany(te,{foreignKey:"projectId",as:"components"});const ot="z8iZiDFg3vkkrPwsiba1TLXy3H9XHzFERsP8o",ie="page",ce="trigger-reload-project-resource",fe=ot,it="z2qa7rr3eUyVnWp2PCxEVARuUfLFh6cE5V2xV",{uploadToMediaKit:ct}=require("@blocklet/uploader-server"),le=$e.customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789",16),ge=/^\w+(\w|-|\.)+\w+\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm)$/,G=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/i,be=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/gi,lt=1e4,pt=3e4,K=0,ae=1,ut=0,dt=1,pe=S.default,V=f.join(X.default.env.BLOCKLET_DATA_DIR,"site-state"),ft=["production","draft"],gt=["production"];function Ie(t){return(t==null?void 0:t.replace(/\//g,"|"))||""}function mt(){var e;const t=pe.env.languages.map(n=>({locale:n.code,name:n.name})),s=(e=t[0])==null?void 0:e.locale;return{pageIds:[],pages:{},components:{},supportedLocales:t,config:{defaultLocale:s},resources:{}}}const U=class U extends M.Doc{constructor(s){super(),this.options=s,this.states={},this.conns=new Map,this.awarenessChangeHandler=({added:e,updated:n,removed:a},o)=>{const l=e.concat(n,a);if(o!==null){const c=this.conns.get(o);c&&(e.forEach(g=>{c.add(g)}),a.forEach(g=>{c.delete(g)}))}const i=j.createEncoder();j.writeVarUint(i,ae),j.writeVarUint8Array(i,x.encodeAwarenessUpdate(this.awareness,l));const r=j.toUint8Array(i);this.conns.forEach((c,g)=>this.send(g,r))},this.updateHandler=e=>{const n=j.createEncoder();j.writeVarUint(n,K),se.writeUpdate(n,e);const a=j.toUint8Array(n);this.conns.forEach((o,l)=>this.send(l,a))},this.ensureDataStructure=()=>{var l;const{supportedLocales:e,pages:n,pageIds:a,config:o}=this.syncedStore;{const i=new Set(Object.keys(n));let r=0;for(;r<a.length;){const c=a[r];i.has(c)?(i.delete(c),r++):a.splice(r,1)}}e.splice(0,e.length),e.push(...pe.env.languages.map(i=>({locale:i.code,name:i.name}))),o.defaultLocale=(l=e[0])==null?void 0:l.locale;{let i=0;const r=new Set;for(;i<e.length;){const{locale:c}=e[i];r.has(c)?e.splice(i,1):(i++,r.add(c))}}},this.send=(e,n)=>{e.readyState!==ut&&e.readyState!==dt&&this.closeConn(e);try{e.send(n,a=>{a&&this.closeConn(e)})}catch{this.closeConn(e)}},this.closeConn=e=>{if(e.removeAllListeners(),this.conns.has(e)){const n=this.conns.get(e);this.conns.delete(e),n&&x.removeAwarenessStates(this.awareness,Array.from(n),null)}e.close()},this.autoSave=_.debounce(()=>{y.mkdirSync(f.dirname(this.draftYjsFilePath),{recursive:!0}),y.writeFileSync(this.draftYjsFilePath,M.encodeStateAsUpdate(this))},lt),this.save=({flush:e=!1}={})=>{this.autoSave(),e&&this.autoSave.flush()},this.publish=async({mode:e,pages:n})=>{const a=await this.getState("draft"),o=await this.getState("production");await ue(a,o,{pages:n,pageMergeMode:"replace",deletePages:!0,publishMode:e}),o.config.publishedAt=new Date().getTime();for(const l of n||Object.keys(this.syncedStore.pages))this.syncedStore.pages[l]&&(this.syncedStore.pages[l].publishedAt=new Date().toISOString());await this.setState(e,o)},this.mergeState=async(e,n)=>{var i,r,c;const a=JSON.parse(JSON.stringify(n));(i=e.config).fontFamily??(i.fontFamily={});const o=(r=a.config)==null?void 0:r.fontFamily,l=(c=e.config)==null?void 0:c.fontFamily;e.config.fontFamily.title=(o==null?void 0:o.title)||(l==null?void 0:l.title),e.config.fontFamily.description=(o==null?void 0:o.description)||(l==null?void 0:l.description),await new Promise((g,p)=>{this.transact(async()=>{try{const h=await ue(e,n);g(h)}catch(h){p(h)}})})},this.addConnection=e=>{if(this.conns.has(e))return;e.binaryType="arraybuffer",this.conns.set(e,new Set),e.on("message",o=>this.messageListener(e,new Uint8Array(o)));let n=!0;const a=setInterval(()=>{if(!n)this.conns.has(e)&&this.closeConn(e),clearInterval(a);else if(this.conns.has(e)){n=!1;try{e.ping()}catch{this.closeConn(e),clearInterval(a)}}},pt);e.on("close",()=>{this.closeConn(e),clearInterval(a)}),e.on("pong",()=>{n=!0});{const o=j.createEncoder();j.writeVarUint(o,K),se.writeSyncStep1(o,this),this.send(e,j.toUint8Array(o));const l=this.awareness.getStates();if(l.size>0){const i=j.createEncoder();j.writeVarUint(i,ae),j.writeVarUint8Array(i,x.encodeAwarenessUpdate(this.awareness,Array.from(l.keys()))),this.send(e,j.toUint8Array(i))}}},this.messageListener=(e,n)=>{try{const a=j.createEncoder(),o=ne.createDecoder(n),l=ne.readVarUint(o);switch(l){case K:j.writeVarUint(a,K),se.readSyncMessage(o,a,this,null),j.length(a)>1&&(this.ensureDataStructure(),this.send(e,j.toUint8Array(a)));break;case ae:{x.applyAwarenessUpdate(this.awareness,ne.readVarUint8Array(o),e);break}default:O.logger.warn(`Unsupported messageType ${l}`)}}catch(a){O.logger.error(a)}this.save()},y.existsSync(this.draftYjsFilePath)&&M.applyUpdate(this,y.readFileSync(this.draftYjsFilePath)),this.syncedStore=xe.reactive(H.syncedStore({pages:{},pageIds:[],components:{},supportedLocales:[],config:{},resources:{}},this)),this.initObserver(),this.on("update",this.updateHandler),this.awareness=new x.Awareness(this),this.awareness.on("update",this.awarenessChangeHandler),this.ensureDataStructure()}static safeDeleteProjectStateDir(s){if(!s)throw new Error("Should provide project context");try{const e=f.join(V,s),n=f.join(V,`@del-${s}`);y.renameSync(e,n)}catch(e){O.logger.error("Failed to safe delete project state dir:",e)}}static get projectIds(){return oe.globSync("*/",{cwd:V,ignore:["@del-*","@tmp-*",".*","staging","production","@backup-*"]})}static get allShared(){return this.projectIds.map(s=>U.shared(s))}static shared(s){if(!s)throw new Error("Should provide project context");let e=this.sharedInstances.get(s);return e||(e=new U({path:f.join(V,s)}),this.sharedInstances.set(s,e),e)}destroy(){this.conns.forEach((s,e)=>this.closeConn(e)),this.awareness.destroy(),super.destroy()}initObserver(){const s=n=>{n.observeDeep(a=>{a.some(o=>o.changes.keys.has("updatedAt")||o.changes.keys.has("publishedAt"))||n.set("updatedAt",new Date().toISOString())})};this.syncedStore.pages&&Object.keys(this.syncedStore.pages).forEach(n=>{const a=H.getYjsValue(this.syncedStore.pages[n]);a&&a instanceof M.Map&&s(a)});const e=H.getYjsValue(this.syncedStore.pages);e&&e instanceof M.Map&&e.observe(n=>{n.changes.keys.forEach((a,o)=>{if(a.action==="add"){const l=H.getYjsValue(this.syncedStore.pages[o]);l&&l instanceof M.Map&&s(l)}})})}get draftYjsFilePath(){return f.join(this.options.path,"draft.yjs")}async getState(s){var e,n,a,o;if(s==="draft")return JSON.parse(JSON.stringify(this.syncedStore));if(!this.states[s]&&(this.states[s]=await me(this.getPublishDir(s),{includeResources:!0})??mt(),!((n=(e=this.states[s])==null?void 0:e.config)!=null&&n.defaultLocale))){(a=this.states[s]).config??(a.config={});const l=pe.env.languages.map(i=>({locale:i.code,name:i.name}));this.states[s].config.defaultLocale=(o=l[0])==null?void 0:o.locale}return{...this.states[s],resources:await Ue().then(async l=>{var g,p,h,v;const{pages:i,components:r}=_.pick(l,"pages","components");let c=r;if((p=(g=this.states[s])==null?void 0:g.resources)!=null&&p.components)c={...(v=(h=this.states[s])==null?void 0:h.resources)==null?void 0:v.components};else{const I=f.basename(this.options.path),D=await C.findByPk(I);if(D!=null&&D.useAllResources)c=r;else{const N=(await te.findAll({where:{projectId:I}})).map(m=>m.componentId);c=Object.fromEntries(Object.entries(r||{}).filter(([m])=>N.includes(m)))}}return{pages:i,components:c}}).catch(()=>({}))}}async setState(s,e){const n=await Pe(e,{exportAssets:!1,includeResources:!0}),a=this.getPublishDir(s);y.mkdirSync(f.dirname(a),{recursive:!0}),y.rmSync(a,{force:!0,recursive:!0}),y.renameSync(n,a),this.states[s]=e}getPublishDir(s){return f.join(this.options.path,s)}static async pageUrlMap(s){const{projectIds:e}=this,n={};for(const a of e){const o=await C.findByPk(a);if(!o)continue;const l=await U.shared(a).getState(s),i=_.union(S.default.env.languages.map(r=>r.code),l.supportedLocales.map(r=>r.locale));for(const r of l.pageIds){const c=l.pages[r];if(!c||s==="production"&&!c.isPublic)continue;const g=c.slug,p=o.slug||a,h={projectId:a,projectSlug:p,pageSlug:g,pageId:r,defaultLocale:i==null?void 0:i[0],locales:i,publishedAt:l.config.publishedAt,isPublic:c.isPublic,isTemplate:c.isTemplate};p&&(n[B.joinURL("/",p,g)]={...h,shouldRedirect:!0,mainPage:!0}),n[B.joinURL("/",a,g)]={...h,shouldRedirect:!0,mainPage:!0};for(const v of i){const I={...h,locale:v};n[B.joinURL("/",v,a,g)]=I,p&&(n[B.joinURL("/",v,p,g)]=I)}}}return n}};U.INSTANCE_TTL=30*60*1e3,U.sharedInstances=new ve.LRUCache({max:100,ttl:U.INSTANCE_TTL,dispose:s=>{s.destroy()}});let Y=U;function Oe(){return y.mkdtempSync(f.join(S.default.env.dataDir,"tmp-"))}function Q(t,s,e=[]){return Array.isArray(t)?t.flatMap((n,a)=>Q(n,s,[...e,a])):typeof t=="object"?t===null?[]:Object.entries(t).flatMap(([n,a])=>Q(a,s,[...e,n])):s(t)?[e]:[]}function L(t){return t.filter(s=>s!=null)}async function yt(t,s,e){if(!t||!y.existsSync(t)||!y.lstatSync(t).isFile())return null;let n=e[t];return n||(n=(async()=>(await ct({filePath:t,fileName:s})).data.filename)(),e[t]=n),n}const ht=async(t,s)=>{const e=f.basename(t),n=await de.call({name:fe,path:B.joinURL("/uploads",e),responseType:"stream",method:"GET"});if(n.status>=200&&n.status<400){const a=y.createWriteStream(s);await Je.pipeline(n.data,a)}else throw new Error(`download asset failed ${n.status}`)},St=async(t,s)=>{await Promise.all(t.map(async e=>{try{await ht(e,f.join(s,f.basename(e)))}catch(n){O.logger.error(`Failed to export assets: ${e}, ${n}`)}}))};function De(t){return ge.test(t)?[t]:G.test(t)?(be.lastIndex=0,Array.from(t.matchAll(be)).map(e=>e[1]).filter(e=>!!e)):[]}async function re(t,s,e){const{getFilename:n,exportAssets:a}=e,o=f.join(s,n(t));if(y.mkdirSync(f.dirname(o),{recursive:!0}),y.writeFileSync(o,$.stringify(t)),a){const i=Q(t,r=>typeof r=="string"&&(ge.test(r)||G.test(r))).map(r=>{const c=_.get(t,r);return De(c)}).flat().filter(Boolean);await St(i,f.dirname(o))}}const Ae=new ve.LRUCache({max:1e3,ttl:30*24*60*60*1e3});async function Te(t,s,e){var i;const n=Q(t,r=>typeof r=="string"&&(ge.test(r)||G.test(r))),a=Xe.default(2),o=n.map(r=>a(async()=>{try{const c=_.get(t,r),g=De(c);for(const p of g){const h=f.basename(p),v=e.getFilePath(p,r),I=v?`${v}:${h}`:h,D=Ae.get(I);if(D){G.test(c)||_.set(t,r,D);return}const R=await yt(v,h,s);R&&(G.test(c)||_.set(t,r,R),Ae.set(I,R))}}catch(c){O.logger.error(`Failed to process upload for path ${r.join(".")}:`,c.message||c.reason)}})),l=await Promise.allSettled(o);(i=e.onFinish)==null||i.call(e,l)}async function Pe(t,{exportAssets:s,pageIds:e="all",componentIds:n="all",rawConfig:a,includeResources:o=!1}={}){var N,q,m,b,E,A;const l=e==="all"?t.pageIds:e,i=wt({state:t,pageIds:l,componentIds:n==="all"?Object.keys(t.components):n}),r=(d,u)=>{var w;return{id:d.id,name:d.name,isTemplateSection:d.isTemplateSection??!1,component:d.component,config:d.config,visibility:d.visibility,properties:((w=d.locales)==null?void 0:w[u])??{}}},c=(d,u)=>{var w;return{id:d.id,createdAt:d.createdAt,updatedAt:d.updatedAt,publishedAt:d.publishedAt,isPublic:d.isPublic??!0,isTemplate:d.isTemplate??!1,meta:((w=d.locales)==null?void 0:w[u])??{},sections:L(d.sectionIds.map(P=>{const k=d.sections[P];return k&&r(k,u)}))}},g=L(t.supportedLocales.map(d=>d.locale).flatMap(d=>l.map(u=>{const w=t.pages[u];return w&&{locale:d,slug:w.slug,page:c(w,d)}}))),p=Oe(),h=f.join(p,"pages");y.mkdirSync(h,{recursive:!0});const v=f.join(p,"components");y.mkdirSync(v,{recursive:!0});for(const{locale:d,slug:u,page:w}of g)await re(w,h,{getFilename:()=>`${Ie(u)||"index"}.${d}.yml`,exportAssets:s});for(const d of i){const u=(N=t.components[d])==null?void 0:N.data;u&&await re(u,v,{getFilename:w=>`${w.name||"unnamed"}.${w.id}.yml`,exportAssets:s})}const I=f.join(p,".blocklet/pages/pages.config.yml");y.mkdirSync(f.dirname(I),{recursive:!0});const D={pages:L(l.map(d=>{const u=t.pages[d];return u&&{id:d,slug:u.slug}})),components:L(i.map(d=>{var w;const u=(w=t.components[d])==null?void 0:w.data;return u&&{id:d,name:u.name}})),...o?{resources:{components:L(Object.keys(((q=t.resources)==null?void 0:q.components)||{}).map(d=>{var u,w,P,k;return{id:d,name:(k=(P=(w=(u=t.resources)==null?void 0:u.components)==null?void 0:w[d])==null?void 0:P.component)==null?void 0:k.name}}))}}:{},supportedLocales:t.supportedLocales,config:t.config};y.writeFileSync(I,$.stringify(D));const R=f.join(p,"config.source.json");if(a&&y.writeFileSync(R,JSON.stringify(a)),o){const d=f.join(p,"resources"),u=f.join(d,"components");y.mkdirSync(u,{recursive:!0});for(const w of Object.keys(((m=t==null?void 0:t.resources)==null?void 0:m.components)??{})){const P=(A=(E=(b=t.resources)==null?void 0:b.components)==null?void 0:E[w])==null?void 0:A.component;P&&await re(P,u,{getFilename:k=>`${k.name||"unnamed"}.${k.id}.yml`,exportAssets:s})}}return p}async function me(t,{importAssets:s,includeResources:e}={}){var o,l,i;if(!y.existsSync(t))return null;let n,a=!1;try{y.lstatSync(t).isDirectory()?n=t:/\.(tgz|gz|tar)$/.test(t)&&(a=!0,n=Oe(),await Ye.x({file:t,C:n}));const r=oe.globSync("**/.blocklet/pages/pages.config.yml",{cwd:n,absolute:!0}).at(0),c=r&&f.join(f.dirname(r),"../../pages"),g=r&&f.join(f.dirname(r),"../../components"),p=r&&f.join(f.dirname(r),"../../chunks");if(!r)return null;const h=$.parse(y.readFileSync(r).toString()),v=(m,b,E)=>{let A=f.join(m,`${b}${E?`.${E}`:""}.yml`);return(!y.existsSync(A)||!y.lstatSync(A).isFile())&&(A=f.join(m,b,`index${E?`.${E}`:""}.yml`),!y.existsSync(A)||!y.lstatSync(A))?null:$.parse(y.readFileSync(A).toString())},I=(m,b)=>{try{const E=oe.globSync(`*.${b}.yml`,{cwd:m,absolute:!0})[0];return E?$.parse(y.readFileSync(E).toString()):null}catch(E){O.logger.error("parse component error",E)}return null},D=L(h.pages.map(({slug:m})=>{var d;const b=L(h.supportedLocales.map(({locale:u})=>{const w=c?v(c,Ie(m),u):void 0;if(w)return{locale:u,page:w};const P=c?v(c,m,u):void 0;return P&&{locale:u,page:P}})),E=(d=b[0])==null?void 0:d.page;if(!E)return null;const A=E.sections.map(u=>{const w=u.id||le();return{id:w,component:u.component,config:u.config,name:u.name,isTemplateSection:u.isTemplateSection??!1,visibility:u.visibility,locales:Object.fromEntries(L(b.map(({locale:P,page:k})=>{const Se=k.sections.find(Ce=>Ce.id===w);return Se&&[P,Se.properties]})))}});return{id:E.id||le(),createdAt:E.createdAt,updatedAt:E.updatedAt,publishedAt:E.publishedAt,isPublic:E.isPublic??!0,isTemplate:E.isTemplate??!1,slug:m,sections:Object.fromEntries(A.map(u=>[u.id,u])),sectionIds:A.map(u=>u.id),locales:Object.fromEntries(b.map(({locale:u,page:w})=>[u,w.meta]))}})),R=g?L(((o=h.components)==null?void 0:o.map(({id:m})=>I(g,m)))??[]):[];if(s){const m=(...b)=>{O.logger.info(`[${a?f.basename(t):f.basename(f.join(t,"../../../../"))}] importAssets:`,...b)};try{m("wait image-bin api ready"),await Ze.default({resources:[`${de.getComponentWebEndpoint(tt)}/api/sdk/uploads`],validateStatus:A=>A>=200&&A<=500}),m("image-bin api is ready");const b={},E={};m("start to upload assets"),await Promise.allSettled([Te(R,b,{getFilePath:A=>g&&f.join(g,A),onFinish:A=>{m(`upload ${A.length} component assets`)}}),Te(D,E,{getFilePath:(A,d)=>{const u=_.get(D,d.slice(0,1));return c&&f.join(c,f.dirname(u.slug),A)},onFinish:A=>{m(`upload ${A.length} page assets`)}})]),m("upload assets done"),we.default.gc&&we.default.gc()}catch(b){m("Error during asset import:",b)}}const N={};if(e){const m=r&&f.join(f.dirname(r),"../../resources/components"),b=L(((i=(l=h.resources)==null?void 0:l.components)==null?void 0:i.map(({id:E})=>I(m,E)))??[]);b.length>0&&(N.components=Object.fromEntries(b.map((E,A)=>[E.id,{index:A,component:E}])))}const q={};if(p&&y.existsSync(p)){const m=y.readdirSync(p);for(const b of m)q[b]=y.readFileSync(f.join(p,b),"utf-8")}return{supportedLocales:h.supportedLocales,pageIds:D.map(m=>m.id),components:Object.fromEntries(R.map((m,b)=>[m.id,{index:b,data:m}])),pages:Object.fromEntries(D.map(m=>[m.id,m])),config:h.config||{},resources:N,chunks:q}}finally{a&&n&&y.rmSync(n,{force:!0,recursive:!0})}}async function ue(t,s,{pages:e,pageMergeMode:n="byUpdateTime",deletePages:a=!1,publishMode:o=void 0}={}){try{o&&O.clearPreloadComponentsCacheByMode(o)}catch(g){O.logger.error("clear preload page cache error",{error:g})}const{pageIds:l,pages:i,supportedLocales:r}=t;for(const g of e??l){const p=i[g];if(!p){const h=s.pageIds.indexOf(g);h!==-1&&a&&(s.pageIds.splice(h,1),delete s.pages[g]);continue}if(s.pageIds.includes(p.id)){if(n==="replace")s.pages[p.id]=p;else if(n==="byUpdateTime"){const h=s.pages[p.id];(!h||p.updatedAt&&p.updatedAt>h.updatedAt)&&(s.pages[p.id]=p)}}else s.pageIds.push(p.id),s.pages[p.id]=p}if(a&&!e)for(const g of s.pageIds)t.pageIds.includes(g)||delete s.pages[g],s.pageIds=[...s.pageIds].filter(p=>t.pageIds.includes(p));if(s.supportedLocales.splice(0,s.supportedLocales.length),s.supportedLocales.push(..._.cloneDeep(r)),a)for(const g of Object.keys(s.components))delete s.components[g];let c=JSON.parse(JSON.stringify(t.components));c=Object.fromEntries(await Promise.all(Object.entries(c).map(async([g,p])=>{const h=await _e(p==null?void 0:p.data);return[g,{...p,data:h}]}))),Object.assign(s.components,c),Object.assign(s.config,JSON.parse(JSON.stringify(t.config))),s.resources.components=JSON.parse(JSON.stringify(t.resources.components||{}))}const _e=qe.memoize(async t=>{var s;if(!_.isEmpty(t==null?void 0:t.properties))return t;if(((s=t==null?void 0:t.renderer)==null?void 0:s.type)==="react-component"){const{script:e}=(t==null?void 0:t.renderer)||{};if(e)try{const n=await O.getExportSchemaValueFromCode(e,"PROPERTIES_SCHEMA",t.id);n&&n.length>0&&t&&(t.properties={},n.forEach((a,o)=>{t!=null&&t.properties&&(t.properties[a.id]={index:o,data:a})}))}catch(n){O.logger.error("checkPropertiesFromCode error",{componentId:t.id,name:t.name},{error:n})}}return t},{keyGenerator:t=>JSON.stringify(["checkPropertiesFromCode",t])});function wt({state:t,pageIds:s=[],componentIds:e=[]}){var l;const n=(i,r=new Set)=>(Array.isArray(i)&&i.forEach(c=>n(c,r)),i&&typeof i=="object"&&(typeof i.componentId=="string"&&r.add(i.componentId),Object.values(i).forEach(c=>n(c,r))),r),a=new Set(e);for(const i of s){const r=t.pages[i];n(r,a)}const o=[...a];for(;o.length;){const i=o.shift();a.has(i)||a.add(i);const r=(l=t.components[i])==null?void 0:l.data;if(r)for(const c of n(r))a.has(c)||o.push(c)}return[...a]}let Z,J,ye,he;function ke(){return Z=(async()=>{const t=de.getResources({types:[{did:fe,type:ie},{did:it,type:ie}]});J=(await Promise.all(t.map(async e=>{const n=e.path?await me(e.path,{importAssets:!1}):void 0;return n?{blockletId:e.did,state:n,blockletTitle:e.title}:void 0}))).filter(e=>!!e),ye=J.reduce((e,n)=>Object.assign(e,Object.fromEntries(Object.values(n.state.pages).map(a=>a?[a==null?void 0:a.id,{page:a,blockletId:n.blockletId}]:[]))),{});const s=J.reduce((e,n)=>Object.assign(e,Object.fromEntries(Object.values(n.state.components).map(a=>[a.data.id,{blockletId:n.blockletId,component:a.data}]))),{});he=Object.fromEntries(await Promise.all(Object.entries(s).map(async([e,n])=>{const a=await _e(n.component);return[e,{...n,component:a}]})))})(),Z}function Le(t){const s=_.debounce(async()=>{await ke().catch(e=>{O.logger.error("load resource states error",{error:e})}),await(t==null?void 0:t({states:J,pages:ye,components:he}))},3e3,{leading:!1,trailing:!0});return s(),S.default.events.on(S.default.Events.componentAdded,s),S.default.events.on(S.default.Events.componentRemoved,s),S.default.events.on(S.default.Events.componentStarted,s),S.default.events.on(S.default.Events.componentStopped,s),S.default.events.on(S.default.Events.componentUpdated,s),S.default.events.on(ce,s),()=>{S.default.events.off(S.default.Events.componentAdded,s),S.default.events.off(S.default.Events.componentRemoved,s),S.default.events.off(S.default.Events.componentStarted,s),S.default.events.off(S.default.Events.componentStopped,s),S.default.events.off(S.default.Events.componentUpdated,s),S.default.events.off(ce,s)}}const Re=Symbol.for("GLOBAL_RESOURCE_STATES_LISTENER_KEY"),W=globalThis;var je;(je=W[Re])==null||je.call(W);W[Re]=Le(async({pages:t,components:s})=>{const{projectIds:e}=Y;await Promise.all(e.map(async n=>{const a=Y.shared(n);a.syncedStore.resources.pages=t;const o=await C.findByPk(n);if(o!=null&&o.useAllResources)a.syncedStore.resources.components=s;else{const i=(await te.findAll({where:{projectId:n}})).map(c=>c.componentId),r=Object.fromEntries(Object.entries(s||{}).filter(([c])=>i.includes(c)));a.syncedStore.resources.components=r}O.logger.info(`update [${n}] resource states:`,{pages:Object.keys(a.syncedStore.resources.pages||{}).length,components:Object.keys(a.syncedStore.resources.components||{}).length})}))});async function Et(){O.logger.info("trigger reload all project resource"),S.default.events.emit(ce)}async function Ue(){return Z??(Z=ke()),await Z,{states:J,pages:ye,components:he}}exports.COMPONENT_DID=fe;exports.PUBLISH_MODES=gt;exports.Project=C;exports.RESOURCE_TYPE=ie;exports.SITE_STATE_PATH=V;exports.STATE_MODES=ft;exports.SiteState=Y;exports.fromPackage=me;exports.getMultiTenantAllProjectAccessPassports=at;exports.getResourceStates=Ue;exports.initPackResourceStates=Le;exports.isMultiTenant=nt;exports.mergeState=ue;exports.nextId=le;exports.toPackage=Pe;exports.triggerReloadAllProjectResource=Et;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const P=require("react/jsx-runtime"),y=require("@blocklet/pages-kit/builtin/mui/material"),Q=require("gradient-parser"),X=require("tinycolor2"),j=require("ufo"),Y=require("@blocklet/js-sdk"),W=require("@syncedstore/core"),Z=require("@syncedstore/react"),H=require("ahooks"),v=require("@blocklet/pages-kit/builtin/immer"),ee=require("js-cookie"),te=require("lodash/debounce"),ne=require("nanoid"),a=require("@blocklet/pages-kit/builtin/react"),F=require("@blocklet/pages-kit/builtin/react-router-dom"),oe=require("y-indexeddb"),se=require("y-websocket"),re=require("yjs"),C=e=>e&&e.__esModule?e:{default:e},ce=C(Q),ie=C(X),ae=C(W),ue=C(ee),B=C(te);function N(){const{pathname:e}=window.location,n=e.match(/\/admin\/(maker|previewer)\/([^/]+)/),l=n==null?void 0:n[2],u=window.__PROJECT_ID__;if(!l&&!u)throw new Error("Unable to get projectId from pathname");return l||u}function de(e){return`${e}:pages:version`}function le({error:e}){return P.jsx(y.Box,{children:P.jsx(y.Alert,{severity:"error",children:e.message})})}var T;const _=((T=window.blocklet)==null?void 0:T.prefix)||"/",L=Y.createAxios({timeout:200*1e3}),fe=window.location.protocol==="https:"?"wss":"ws",me=e=>j.joinURL(`${fe}://${window.location.hostname}`,_,`api/${e}/ws/pages`),pe="z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9";var $;($=blocklet==null?void 0:blocklet.componentMountPoints.find(e=>e.did===pe))!=null&&$.mountPoint||j.joinURL(_,"/image-bin");function ge(e){return e&&!/^(https?:\/\/|\/)/.test(e)?window.location.origin+j.joinURL(_,"uploads",e):e}const Se=window.innerWidth<=750;function we(e,n,l){if(!e||/\.gif/.test(e))return e;const u=(Se?n/1.5:n)*(l==="quality"?1.5:1);return he(e,{imageFilter:"resize",w:u,f:"webp"})}function he(e,n){return!e||!n?e:j.withQuery(e,n)}function V(e){if(e!=null&&e.trim())try{return ce.default.parse(e),!0}catch{return!1}return!1}function Pe(e){return typeof e!="string"?!1:!!(V(e)||ie.default(e).isValid())}async function je(e){return L.get(`/api/projects/${e}`).then(n=>n.data)}async function ke(e){return L.post(`/api/projects/${e.id}/update`,e).then(n=>n.data)}const Ie=500,b=ne.customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789",16),z=a.createContext(null);function xe({url:e,name:n,children:l,waitingSynced:u}){const[f,d]=a.useState(!1),S=A(),k=`${S}:MakerLocalState`,t=`${S}:${n}`,[s,o]=H.useLocalStorageState(k,{defaultValue:{},listenStorageChange:!0}),r=a.useRef(s);r.current=s;const i=a.useMemo(()=>ae.default({pages:{},pageIds:[],components:{},supportedLocales:[],config:{},resources:{}}),[]),c=a.useMemo(()=>W.getYjsDoc(i),[i]);a.useMemo(()=>new oe.IndexeddbPersistence(t,c),[t,c]);const w=a.useMemo(()=>new se.WebsocketProvider(e,t,c,{params:{token:ue.default.get("login_token")}}),[e,t,c]),I=a.useMemo(()=>new re.UndoManager([c.getArray("pageIds"),c.getMap("pages"),c.getArray("supportedLocales"),c.getMap("config")],{doc:c}),[c]),[x,E]=a.useState(null),[q,O]=a.useState(!1),[R,M]=a.useState(void 0),U=a.useCallback(async()=>{if(S){O(!0);try{const m=await je(S);E(m)}catch(m){console.error("Failed to fetch project:",m)}finally{O(!1)}}},[S]),D=a.useCallback(async(m,p)=>{var h;if(M(void 0),!!S){p!=null&&p.optimisticUpdate&&x&&E(g=>({...g,...m}));try{const g=await ke({...m});E(g)}catch(g){console.error("Failed to update project:",g),p!=null&&p.optimisticUpdate&&E(x),M((h=g==null?void 0:g.response)==null?void 0:h.data)}}},[S,x]);a.useEffect(()=>{S&&U()},[S,U]);const J=a.useMemo(()=>({doc:c,state:i,localState:s,setLocalState:m=>o(typeof m=="function"?p=>m(p??{}):m),undoManager:I,projectState:{project:x,isLoadingProject:q,error:R},updateProject:D}),[c,i,JSON.stringify(s),o,I,x,q,D,R]);return a.useEffect(()=>{I.on("stack-item-added",({stackItem:m})=>{const{currentPageId:p,currentLocale:h,pages:g}=r.current;m.meta.set("localState",{currentPageId:p,currentLocale:h,pages:g})}),I.on("stack-item-popped",({stackItem:m})=>{const p=m.meta.get("localState");p&&o(h=>({...h,...p}))})},[I,o]),a.useEffect(()=>{w.awareness.setLocalState(s)},[w,s]),a.useEffect(()=>{w.once("synced",()=>d(!0));const m=()=>{o(g=>({...g,networkStatus:void 0}))},p=()=>{o(g=>({...g,networkStatus:"offline"}))},h=B.default(({status:g})=>{g==="connected"?m():g==="disconnected"&&p()},Ie);return w.on("status",h),window.addEventListener("online",m),window.addEventListener("offline",p),()=>{w.off("status",h),window.removeEventListener("online",m),window.removeEventListener("offline",p)}},[w,o]),u&&!f?null:P.jsx(z.Provider,{value:J,children:l})}const G=()=>{const e=a.useContext(z);if(!e)throw new Error("Context is null");const n=Z.useSyncedStore(e.state),{setLocalState:l,localState:u}=e,f=F.useNavigate(),d=A(),S=a.useMemo(()=>({setCurrentSectionId:(t,s)=>{var o,r;t===u.currentPageId&&s===((r=(o=u.pages)==null?void 0:o[t])==null?void 0:r.currentSectionId)||(f(j.joinURL("/admin/maker",d??"","pages",t)),l(i=>v.produce(i,c=>{var w;c.currentPageId=t,c.currentComponentId=void 0,c.componentDebugProps={},s!==void 0&&(c.pages??(c.pages={}),(w=c.pages)[t]??(w[t]={}),c.pages[t].currentSectionId=s??void 0),s?window.sessionStorage.setItem("iframe_show_id",`"${s}"`):window.sessionStorage.removeItem("iframe_show_id")})))},setCurrentComponentId:t=>{t!==u.currentComponentId&&(f(j.joinURL("/admin/maker",d??"","components",t)),l(s=>v.produce(s,o=>{o.currentComponentId=t,o.componentDebugProps={}})))},setComponentDebugProps:(()=>{const t={},s=B.default(()=>{l(o=>v.produce(o,r=>{r.componentDebugProps={...r==null?void 0:r.componentDebugProps,...t},Object.keys(t).forEach(i=>delete t[i])}))},5);return o=>{Object.assign(t,o),s()}})()}),[l,f,d]),k=a.useMemo(()=>({addPage:(t,s)=>{const o=(t==null?void 0:t.id)??b(),r={...t,id:o,createdAt:(t==null?void 0:t.createdAt)??new Date().toISOString(),updatedAt:(t==null?void 0:t.updatedAt)??new Date().toISOString(),publishedAt:new Date(0).toISOString(),slug:(t==null?void 0:t.slug)??`/${o}`,sections:(t==null?void 0:t.sections)??{},sectionIds:(t==null?void 0:t.sectionIds)??[],isPublic:(t==null?void 0:t.isPublic)??!0,isTemplate:(t==null?void 0:t.isTemplate)??!1};return e.doc.transact(()=>{n.pages[r.id]=r,n.pageIds.splice(s??n.pageIds.length,0,r.id)}),r},deletePage:t=>{const s=n.pageIds.indexOf(t);s!==-1&&e.doc.transact(()=>{n.pageIds.splice(s,1),delete n.pages[t]})},movePage:(t,s)=>{const{pageIds:o}=n,r=o.indexOf(t);r>=0&&o.splice(s,0,...o.splice(r,1))},addSection:(t,s,o)=>{const r=n.pages[t];if(!r)throw new Error(`Page ${t} is not exists`);const i={...s,id:s.id??b(),isTemplateSection:s.isTemplateSection??!1};return e.doc.transact(()=>{r.sections[i.id]=i,r.sectionIds.splice(o??r.sectionIds.length,0,i.id)}),i},deleteSection:(t,s)=>{const o=n.pages[t];if(!o)throw new Error(`Page ${t} is not exists`);const r=o.sectionIds.indexOf(s);r!==-1&&e.doc.transact(()=>{o.sectionIds.splice(r,1),delete o.sections[s]})},toggleSectionVisibility:(t,s,o)=>{const r=n.pages[t];if(!r)throw new Error(`Page ${t} is not exists`);const i=r.sections[s];i&&(i.visibility=o)},moveSection:(t,s,o)=>{const r=n.pages[t];if(!r)throw new Error(`Page ${t} is not exists`);const{sectionIds:i}=r,c=i.indexOf(s);c>=0&&i.splice(o,0,...i.splice(c,1))}}),[n,e.doc]);return{...e,state:n,actions:k,localActions:S,get currentPage(){const{localState:{currentPageId:t}}=e;return t?n.pages[t]:void 0},get currentSection(){var r,i,c;const{localState:{currentPageId:t,...s}}=e;if(!t)return;const o=(i=(r=s.pages)==null?void 0:r[t])==null?void 0:i.currentSectionId;if(o)return(c=n.pages[t])==null?void 0:c.sections[o]}}},A=()=>{const{projectId:e}=F.useParams();return e??N()};function ye(e){var u,f;const{resources:n}=e;if(!n.components)return{};const l={};return(f=(u=window==null?void 0:window.blocklet)==null?void 0:u.componentMountPoints)==null||f.forEach(d=>{l[d.did]=d}),Object.fromEntries(Object.entries(n.components).map(([d,{blockletId:S,component:k}])=>{var t;return[d,{data:k,blockletId:S,blockletTitle:((t=l[S])==null?void 0:t.title)||S}]}))}function Ce(e){const{components:n}=e;return n||{}}function K(e){return{...ye(e),...Ce(e)}}const Ee=()=>K(G().state),ve=[/\.\./,/<[^>]*>/,/%[0-9a-f]{2}/i,/[<>'"%;{}()\\]/,/\x00/,/\n|\r|\t|\v|\f/,/[^a-zA-Z0-9-_@/]/];function be(e,n,l){const u=[];{let f;n.slug?n.slug.startsWith("/")?n.slug!=="/"&&n.slug.endsWith("/")?f=e("maker.properties.pathCheckEndWithoutSlash"):/\/{2,}/.test(n.slug)?f=e("maker.properties.pathCheckConsecutiveSlash"):/\s/.test(n.slug)?f=e("maker.properties.pathCheckWhitespace"):ve.some(d=>d.test(n.slug))?f=e("maker.properties.pathCheckInvalid"):Object.values(l.pages).some(d=>(d==null?void 0:d.id)!==n.id&&(d==null?void 0:d.slug)===n.slug)&&(f=e("maker.properties.pathCheckAlreadyExist")):f=e("maker.properties.pathCheckStartWithSlash"):f=e("maker.properties.pathCheckRequired"),f&&u.push({path:["path"],message:f})}return u.length>0?u:null}function _e({errors:e,...n}){return e!=null&&e.length?P.jsx(y.Tooltip,{...n,title:P.jsx(y.Box,{children:e.map((l,u)=>P.jsx(y.Box,{children:l.message},u))})}):null}exports.ErrorView=le;exports.PageErrorTip=_e;exports.StoreProvider=xe;exports.api=L;exports.autoResizeImage=we;exports.checkPage=be;exports.getAllComponents=K;exports.getImageAbsoluteUrl=ge;exports.getProjectIdFromPathnameOrWindow=N;exports.getProjectPageVersionKey=de;exports.getWssURL=me;exports.isColorString=Pe;exports.isGradient=V;exports.nextId=b;exports.useAllComponents=Ee;exports.useProjectId=A;exports.useStore=G;
|
package/lib/cjs/components.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("@blocklet/pages-kit/builtin/utils");require("@blocklet/pages-kit/types");require("@blocklet/pages-kit/utils/property");require("@blocklet/quickjs");require("@blocklet/sdk/lib/config");require("lru-cache");require("node-fetch");require("ufo");const e=require("./_chunks/components-paCr_hhD.js");exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=e.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=e.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS;exports.clearPreloadComponentsCache=e.clearPreloadComponentsCache;exports.clearPreloadComponentsCacheByMode=e.clearPreloadComponentsCacheByMode;exports.getComponentFromState=e.getComponentFromState;exports.getComponentFromStateByName=e.getComponentFromStateByName;exports.getExportSchemaValueFromCode=e.getExportSchemaValueFromCode;exports.getPreloadComponent=e.getPreloadComponent;exports.getPreloadComponents=e.getPreloadComponents;exports.getPreloadComponentsCacheKey=e.getPreloadComponentsCacheKey;
|
package/lib/cjs/home.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("./_chunks/state-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("react/jsx-runtime");require("./_chunks/state-CVPLn5Cq.js");const e=require("./_chunks/home-DQaT0unu.js");require("@blocklet/pages-kit/builtin/locale");require("@arcblock/ux/lib/Result");require("@blocklet/pages-kit/builtin/page/header");require("@blocklet/ui-react/lib/Header");require("@emotion/css");require("@emotion/react");require("@emotion/styled");require("@blocklet/pages-kit/builtin/mui/material");require("ahooks");require("isomorphic-dompurify");require("lodash");require("lodash/isEmpty");require("@blocklet/pages-kit/builtin/react");require("react-helmet");require("@blocklet/pages-kit/builtin/react-router-dom");require("react-use");require("ufo");exports.HomeView=e.HomeView;exports.PageRoutes=e.PageRoutes;exports.PageView=e.PageView;exports.PageViewByPath=e.PageViewByPath;exports.TranslucentHeader=e.TranslucentHeader;exports.default=e.Home;
|
package/lib/cjs/locales.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("flat"),t=e.flatten({deleteProjectAlertPrefix:"This will permanently delete the project named",resetProjectAlertPrefix:"This will reset the project named",deleteProjectAlertSuffix:"project",resetProjectAlertSuffix:"project",confirmTip:"Please enter the project name",confirmDelete:"Please enter {name} to confirm deletion",confirmReset:"Please enter {name} to confirm reset",uploadNewIcon:"Upload new icon",requiredKey:"Key cannot be empty, please set a unique key, so that it can be referenced and configured in the component",duplicateKey:"Key already exists, please set a unique key",projects:{project:"Project",myProjects:"My Projects",projectToGetStart:"Create Project",unnamed:"Unnamed Project",noDescription:"No description",lastUpdated:"Last updated",edit:"Edit",delete:"Delete",pin:"Pin",unpin:"Unpin",name:"Name",slug:"Slug",projectSlug:"Please enter your project slug",projectName:"Please enter your project name",newProjectDescriptionPlaceholder:"Please describe your project",description:"Description",chooseTemplate:"Choose Template",chooseTemplateTip:"Choose a template to start, or select Blank Template to create your own",blankTemplate:"Blank Template",welcomeTemplate:"Welcome Template",limitReached:"Expand Project Count",limitReachedTip:"You have reached the limit of <b>{limit}</b> projects. Please delete the unused projects and try again.<br/>You can also launch your own Pages Kit to create more projects.",limitReachedConfirm:"Launch My Pages Kit"},alert:{delete:"Delete"},common:{goToHome:"Go to Home",delete:"Delete",cancel:"Cancel",add:"Add",addMultiple:"Add ({count})",create:"Create",language:"Language",pageNotFound:"Page Not Found",confirmDialogTitle:"Confirm",all:"All",back:"Back Home",retry:"Retry",defaultLanguage:"default",close:"Close",saveSuccess:"Save Success",resourceBlocklet:"Resource Blocklet",select:"Select ",ok:"OK"},section:{card:{type:"Card Type",title:"Cards",addCard:"Add Card",align:"Card align",textAlign:"Text align"},list:{columns:"Columns",gap:"Gap",align:"Align"}},maker:{pageTitle:"Pages Editor",save:"Save",publish:"Publish",publishToProduction:"Publish",publishToProductionTip:"Anyone can see production version",publishConfirmContent:"Publish to",publishSelectPagesMessage:"Please select the pages to publish",publishSuccessMessage:"Published",importSuccessMessage:"Imported successfully",preview:"Preview",livePreview:"Live Preview",production:"Production",draft:"Draft",configBackground:"Config background",configColor:"Config color",import:"Import",importDialog:{upload:{title:"Import from file",description:"Import from local file",tip:"Please select the file to import"},resource:{description:"Import from resource"}},export:"Export",pages:{addPage:"Create Page",createResource:"Create Resource",addResource:"Add Resource from Store",pages:"Pages",deleteTitle:"Delete {name} page?",deleteSectionTitle:"Delete {name} section?",empty:"No pages",needPublish:"This page has unpublished changes",notPublic:"This page is not public"},components:{components:"Components",addComponent:"Add Section",basicGroup:"Basic",customGroup:"Custom",resourceGroup:"Resource",deleteTitle:"Delete {name} component?",noComponents:"No Components",needAddResource:"Please select resource components in project settings",searchComponent:"Please enter component name to search"},outline:{outline:"Outline"},properties:{noProperties:"No properties",noParameters:"No configurable parameters, please add properties first",properties:"Properties",setDefaultLocale:"Set default",copyDefault:"Copy over default",copyFull:"Full copy",migrateFromOld:"Full copy from old version",path:"Path",title:"Title",description:"Description",icon:"Icon",iconSize:"Icon size",image:"Image",imageOptimization:"Image Optimization",imageOptimizationFast:"Best for speed",imageOptimizationQuality:"Best for visual quality",imageMode:"Image Mode",hoverStyle:"Hover Style",videoPoster:"Video Poster",imageSize:"Image size",hasImage:"Has Image",fullSizeImage:"Full Size Image",src:"Source",dark:"Dark",reverse:"Reverse",background:"Background",badge:"Badge",buttons:"Buttons",button:"Button",border:"Border",shadow:"Shadow",color:"Color",variant:"Variant",isPageLink:"Is page link?",link:"Link",style:"Style",card:"Card",list:"List",center:"Center",sort:"Order by",asc:"Ascending",desc:"Descending",createdAt:"Create Time",updatedAt:"Update Time",pathCheckRequired:"Path is required",pathCheckStartWithSlash:"Path must start with /",pathCheckEndWithoutSlash:"Path cannot end with /",pathCheckConsecutiveSlash:"Path cannot contain consecutive /",pathCheckWhitespace:"Path cannot contain whitespace",pathCheckInvalid:"Invalid path format",pathCheckAlreadyExist:"Path is already exist",embedUrl:"Embed url",chooseEmbed:"Choose embed",translateFrom:"Translate from",backgroundColor:"Color",backgroundImage:"Image/Video",customColor:"Custom color",customImage:"Custom image/video",boxed:"Nested box mode",bigMode:"Big title mode",padding:"Padding",maxWidth:"Max Width",stickyHeader:"Sticky Header",translucent:"Translucent Mode",hideNavMenus:"Hide Navigation Menus",hideFooter:"Hide Footer",size:"Size",autoWidth:"Auto Width",iframeHeight:"Content Height",translucentTextColor:"Translucent Text Color",copyFromOtherLanguage:"Copy from other language",useCache:"Use Cache",cacheDuration:"Cache Duration (seconds)",customComponent:"Custom Component",parameters:"Parameters",buttonTitle:"Button {index} Title",cardTitle:"Card {index} Title",cardDescription:"Card {index} Description",cardButtonTitle:"Card {index} Button {actionIndex} Title",copyLanguageDescription:"All properties will be copied from the selected language to the current language, which will override the existing content in the current language.",isPublic:"Public Access",isTemplate:"Use as template page",isTemplateSection:"Template dynamic card",templateSectionNameRequired:"Name is required for template section to set values when using dynamic templates",templateSectionNameHelper:"Section name is used to identify the section in the template, please use a meaningful and unique name, so that the section can be set content later",propertyNotFound:"Failed to modify parameter, reason: component does not exist `{key}` property"}},error:{embedUrl:"Embed url error",notFoundEmbed:"Not Found Embed",noBackground:"No background",notConfig:"Not config",slugAlreadyExists:"Slug already exists",slugRequired:"Slug cannot be empty"},fabric:{fontFamily:"Font Family",basicComponent:{titleFontFamily:"Title Font Family",titleFontFamilyHelper:"* Globally modify the paragraph heading font",descFontFamily:"Description Font Family",descFontFamilyHelper:"* Globally modify the paragraph description font"}},ai:{list:{noTemplatesInStudio:"You haven't create any prompt template in AI Studio yet.",createNow:"Create Now",noTemplates:"No template has been provided yet"},output:{errorMessage:"Something wrong with me, please try it later.",words:"Words",characters:"Characters",copied:"Copied!"},generate:"Generate",text:{title:"Text Assistant",description:"Use AI to help with write text",theme:"Content",themeHelper:"Organize the input to make it more suitable for the web page",language:"Language",languageHelper:"Output text language",size:"Size",sizeHelper:"Output text size",original:"Original",improve:"Improve"},status:{install:"Check whether the ai-kit is installed",available:"Check whether the openai key is set properly"}},translate:{translate:"Translate",title:"Translation page",into:"Translate into",ing:"Translating",ingTip:"Translating content to {targetLanguage}. please wait a moment..",confirm:"Confirm",confirmTitle:"Confirm translation information",confirmContent:"Are you sure to translate to {target} and add {target} content after translation?",overlay:"Are you sure to continue the translation and override the {target} content after translation?",success:"Translation success",fail:"Translation failed, please try again",localInput:"Local input",abort:"Cancel translation",sameLanguage:"Source language and target language cannot be the same",noTargetLanguage:"Please select target language",field:"Field",unsavedChanges:"You have unsaved changes. Do you want to save before closing?"},aiRuntime:{aiSettings:"AI Settings",unnamed:"Unnamed",project:"Project",assistant:"Assistant",widget:"Widget",all:"All",form:"Form",result:"Result",submitButton:"Submit Button",submitIcon:"Submit Icon",submitBackground:"Submit Background",placeholder:"Placeholder",loadingIndicator:"Loading Indicator"},basicInfo:"Basic Info",name:"Name",description:"Description",tags:"Tags",previewImage:"Preview Image",properties:"Properties",property:"Property",addObject:"New {object}",key:"Key",label:"Label",type:"Type",defaultValue:"Default Value",renderer:"Renderer",parameters:"Parameters",i18nEditorTitle:"I18N Editor",close:"Close",component:"Component",delete:"Delete",duplicate:"Duplicate",move:{up:"Move up",down:"Move down"},show:"Show",hide:"Hide",showParameter:"Show Parameter Config",hideParameter:"Hide Parameter Config",dragSort:"Drag sort",saved:"Saved",supportMarkdownSyntaxPlaceholder:"support markdown syntax",settings:{tabs:{basic:"Basic",appearance:"Appearance",resources:"Resources"},basic:{title:"Basic Information",avatar:"Project Avatar",name:"Project Name",namePlaceholder:"Please enter project name",description:"Project Description",descriptionPlaceholder:"Please describe your project",slug:"Project Slug",slugPlaceholder:"Please enter project slug",slugHelper:"Project slug can only contain letters, numbers, hyphens and underscores",changeAvatar:"Change Avatar"},resources:{all:"Enable all resource components",resourceBlocklet:"Selected resource components",addResource:"Select resource components",needInstallResourceByAdmin:"Please install resource components by admin",noSelectedResources:"No selected any resource components"}},edit:{modified:"Modified",new:"New",deleted:"Deleted",undo:"Undo",redo:"Redo"}}),a=e.flatten({deleteProjectAlertPrefix:"这将永久删除名称为",resetProjectAlertPrefix:"这将重置名称为",deleteProjectAlertSuffix:"的项目",resetProjectAlertSuffix:"的项目",confirmTip:"请输入项目名称",confirmDelete:"请输入 {name} 以确认删除",confirmReset:"请输入 {name} 以确认重置",uploadNewIcon:"上传新图标",requiredKey:"键不能为空,请设置一个唯一的键,以便在组件中引用和配置参数",duplicateKey:"键已存在,请设置一个唯一的键",projects:{project:"项目",myProjects:"我的项目",projectToGetStart:"创建项目",unnamed:"未命名项目",noDescription:"暂无描述",lastUpdated:"最后更新",edit:"编辑",delete:"删除",pin:"置顶",unpin:"取消置顶",name:"名称",slug:"路径",projectSlug:"请输入项目路径",projectName:"请输入项目名称",newProjectDescriptionPlaceholder:"请输入项目描述",description:"描述",chooseTemplate:"选择模板",chooseTemplateTip:"选择模板快速开始,或开创您的独特项目 - 点击创建您的专属之旅!",blankTemplate:"空白模板",welcomeTemplate:"欢迎模板",limitReached:"扩展项目数量",limitReachedTip:"你已经达到了项目数量上限 <b>{limit}</b>,请删除未使用的项目并重试。<br/>你也可以部署自己的 Pages Kit 来创建更多项目。",limitReachedConfirm:"部署我的 Pages Kit"},alert:{delete:"删除"},common:{goToHome:"返回首页",delete:"删除",cancel:"取消",add:"添加",addMultiple:"添加 ({count})",create:"创建",language:"语言",pageNotFound:"页面未找到",confirmDialogTitle:"确认",all:"全部",back:"返回首页",retry:"重试",defaultLanguage:"默认语言",close:"关闭",saveSuccess:"保存成功",resourceBlocklet:"资源 Blocklet",select:"选择",ok:"确定"},section:{card:{type:"卡片类型",title:"卡片",addCard:"新增卡片",align:"卡片对齐方式",textAlign:"文本对齐方式"},list:{columns:"列数",gap:"间距",align:"对齐方式"}},maker:{pageTitle:"页面编辑器",save:"保存",publish:"发布",publishToProduction:"发布",publishToProductionTip:"任何人都可以看到正式版",publishConfirmContent:"发布到",publishSelectPagesMessage:"请选择要发布的页面",publishSuccessMessage:"发布成功",importSuccessMessage:"导入成功",preview:"预览",livePreview:"实时预览",production:"正式版",draft:"草稿",configBackground:"设置背景",configColor:"设置颜色",import:"导入",importDialog:{upload:{title:"从文件导入",description:"从本地文件导入",tip:"请选择要导入的文件"},resource:{description:"从资源导入"}},export:"导出",pages:{addPage:"创建页面",createResource:"创建资源",addResource:"从商店添加资源",pages:"页面",deleteTitle:"删除 {name} 页面?",deleteSectionTitle:"删除 {name} 卡片?",empty:"暂无页面",needPublish:"此页面有可发布的新修改",notPublic:"此页面未公开"},components:{components:"组件",addComponent:"添加卡片",basicGroup:"基础组件",customGroup:"自定义组件",resourceGroup:"资源组件",deleteTitle:"删除 {name} 组件?",noComponents:"暂无组件",needAddResource:"请在项目设置中选择资源组件",searchComponent:"请输入组件名称进行搜索"},outline:{outline:"概览"},properties:{noProperties:"暂无属性",noParameters:"暂无可配置参数,请先添加属性",properties:"属性",setDefaultLocale:"设为默认语言",copyDefault:"设为默认值",copyFull:"复制全部",migrateFromOld:"从老版本复制默认值",path:"路径",title:"标题",description:"描述",icon:"图标",iconSize:"图标大小",image:"图片",imageOptimization:"图片优化",imageOptimizationFast:"速度优先",imageOptimizationQuality:"质量优先",imageMode:"图片模式",hoverStyle:"鼠标悬停样式",videoPoster:"视频封面",imageSize:"图片大小",hasImage:"包含图片",fullSizeImage:"大图模式",src:"源地址",dark:"暗黑",reverse:"反转",background:"背景",badge:"标签",buttons:"按钮",button:"按钮",border:"边框",shadow:"阴影",color:"颜色",variant:"样式",isPageLink:"是否内部链接?",link:"链接",style:"样式",card:"卡片",list:"列表",center:"居中",sort:"排序",asc:"升序",desc:"降序",createdAt:"创建时间",updatedAt:"更新时间",pathCheckRequired:"请输入路径",pathCheckStartWithSlash:"路径开头必须是 /",pathCheckEndWithoutSlash:"路径结尾不能是 /",pathCheckConsecutiveSlash:"路径中不能包含连续的 /",pathCheckWhitespace:"路径中不能包含空白字符",pathCheckInvalid:"非法的路径",pathCheckAlreadyExist:"路径已存在",embedUrl:"部件地址",chooseEmbed:"选择部件",translateFrom:"翻译来自",backgroundColor:"颜色",backgroundImage:"图片/视频",customColor:"自定义颜色",customImage:"自定义图片/视频",boxed:"嵌套盒子模式",bigMode:"大标题模式",padding:"内边距",maxWidth:"最大宽度",stickyHeader:"固定导航栏",translucent:"沉浸式",hideNavMenus:"隐藏导航菜单",hideFooter:"隐藏页脚",size:"大小",autoWidth:"宽度自适应",iframeHeight:"定义内容高度",translucentTextColor:"沉浸式文本颜色",copyFromOtherLanguage:"从其他语言复制",useCache:"使用缓存",cacheDuration:"缓存时间 (秒)",customComponent:"自定义组件",parameters:"参数",buttonTitle:"第 {index} 个按钮的标题",cardTitle:"第 {index} 个卡片标题",cardDescription:"第 {index} 个卡片描述",cardButtonTitle:"第 {index} 个卡片中第 {actionIndex} 个按钮标题",copyLanguageDescription:"将从选择的语言复制所有属性到当前语言,这将覆盖当前语言的已有内容。",isPublic:"是否公开",isTemplate:"作为模版页面使用",isTemplateSection:"模板动态卡片",templateSectionNameRequired:"模板区块需要设置名称,以便在使用动态模板时为区块设置对应的值",templateSectionNameHelper:"区块名称用于标识模板中的区块,请使用有意义且唯一的名称,以便后续为区块设置内容",propertyNotFound:"修改参数失败,原因:组件不存在 `{key}` 属性"}},error:{embedUrl:"Embed 地址有误",notFoundEmbed:"未找到组件",noBackground:"无背景",notConfig:"未设置",slugAlreadyExists:"路径已存在",slugRequired:"路径不能为空"},fabric:{fontFamily:"全局字体",basicComponent:{titleFontFamily:"段落标题字体",titleFontFamilyHelper:"* 全局修改段落标题字体",descFontFamily:"段落描述字体",descFontFamilyHelper:"* 全局修改段落描述字体"}},ai:{list:{noTemplatesInStudio:"目前您还没有在 AI Studio 里创建任何模版",createNow:"现在创建",noTemplates:"还没有任何模版"},output:{errorMessage:"出错了,请稍后再试",words:"字",characters:"字符",copied:"已复制!"},generate:"生成",text:{title:"文案助手",description:"使用 AI 帮助编写文案",theme:"内容",themeHelper:"整理内容,使描述更加合适网页",language:"语言",languageHelper:"输出文本语言",size:"大小",sizeHelper:"输出内容大小",original:"原文",improve:"改良"},status:{install:"请先检查 ai-kit 是否安装",available:"请先检查 openai key 是否正常设置"}},translate:{title:"翻译页面",translate:"翻译",into:"翻译成",ing:"翻译中",ingTip:"将内容翻译为 {targetLanguage}。请稍等...",confirm:"翻译",confirmTitle:"确认翻译信息",confirmContent:"你确认翻译成 {target},并且翻译后新增 {target} 内容吗?",overlay:"确认继续翻译,并且翻译后覆盖 {target} 内容吗?",success:"翻译成功",fail:"翻译失败,请重试",localInput:"本地输入",abort:"取消翻译成功",sameLanguage:"源语言和目标语言不能相同",noTargetLanguage:"请选择目标语言",field:"字段",unsavedChanges:"你有未保存的更改。是否在关闭前保存?"},aiRuntime:{aiSettings:"AI 设置",unnamed:"未命名",project:"项目",assistant:"助手",widget:"部件",all:"全部",form:"仅表单",result:"仅输出",submitButton:"提交按钮",submitIcon:"提交按钮图标",submitBackground:"提交按钮背景色",placeholder:"占位提示",loadingIndicator:"加载提示"},basicInfo:"基础信息",name:"名称",description:"描述",tags:"标签",previewImage:"预览图片",properties:"属性",property:"属性",addObject:"添加{object}",key:"键",label:"标签",type:"类型",defaultValue:"默认值",renderer:"渲染方式",parameters:"参数",i18nEditorTitle:"国际化编辑",close:"关闭",component:"组件",delete:"删除",duplicate:"复制",move:{up:"上移",down:"下移"},show:"显示",hide:"隐藏",showParameter:"显示参数配置",hideParameter:"隐藏参数配置",dragSort:"拖拽排序",saved:"保存成功",supportMarkdownSyntaxPlaceholder:"支持输入 markdown",settings:{tabs:{basic:"基础设置",appearance:"外观设置",resources:"资源组件"},basic:{title:"基础信息",avatar:"项目头像",name:"项目名称",namePlaceholder:"请输入项目名称",description:"项目描述",descriptionPlaceholder:"请输入项目描述",slug:"项目路径",slugPlaceholder:"请输入项目路径",slugHelper:"项目路径只能包含字母、数字、中划线和下划线",changeAvatar:"更换头像"},resources:{all:"启用所有资源组件",resourceBlocklet:"已选择的资源组件",addResource:"选择资源组件",needInstallResourceByAdmin:"请联系管理员安装资源组件",noSelectedResources:"未选择任何资源组件"}},edit:{modified:"已修改",new:"新增",deleted:"已删除",undo:"撤销",redo:"重做"}}),o={en:t,zh:a};exports.translations=o;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("flat"),t=e.flatten({deleteProjectAlertPrefix:"This will permanently delete the project named",resetProjectAlertPrefix:"This will reset the project named",deleteProjectAlertSuffix:"project",resetProjectAlertSuffix:"project",confirmTip:"Please enter the project name",confirmDelete:"Please enter {name} to confirm deletion",confirmReset:"Please enter {name} to confirm reset",uploadNewIcon:"Upload new icon",requiredKey:"Key cannot be empty, please set a unique key, so that it can be referenced and configured in the component",duplicateKey:"Key already exists, please set a unique key",projects:{project:"Project",myProjects:"My Projects",projectToGetStart:"Create Project",unnamed:"Unnamed Project",noDescription:"No description",lastUpdated:"Last updated",edit:"Edit",delete:"Delete",pin:"Pin",unpin:"Unpin",name:"Name",slug:"Slug",projectSlug:"Please enter your project slug",projectName:"Please enter your project name",newProjectDescriptionPlaceholder:"Please describe your project",description:"Description",chooseTemplate:"Choose Template",chooseTemplateTip:"Choose a template to start, or select Blank Template to create your own",blankTemplate:"Blank Template",welcomeTemplate:"Welcome Template",limitReached:"Expand Project Count",limitReachedTip:"You have reached the limit of <b>{limit}</b> projects. Please delete the unused projects and try again.<br/>You can also launch your own Pages Kit to create more projects.",limitReachedConfirm:"Launch My Pages Kit"},alert:{delete:"Delete"},common:{goToHome:"Go to Home",delete:"Delete",cancel:"Cancel",add:"Add",addMultiple:"Add ({count})",create:"Create",language:"Language",pageNotFound:"Page Not Found",confirmDialogTitle:"Confirm",all:"All",back:"Back Home",retry:"Retry",defaultLanguage:"default",close:"Close",saveSuccess:"Save Success",resourceBlocklet:"Resource Blocklet",select:"Select ",ok:"OK"},section:{card:{type:"Card Type",title:"Cards",addCard:"Add Card",align:"Card align",textAlign:"Text align"},list:{columns:"Columns",gap:"Gap",align:"Align"}},maker:{pageTitle:"Pages Editor",save:"Save",publish:"Publish",publishToProduction:"Publish",publishToProductionTip:"Anyone can see production version",publishConfirmContent:"Publish to",publishSelectPagesMessage:"Please select the pages to publish",publishSuccessMessage:"Published",importSuccessMessage:"Imported successfully",preview:"Preview",livePreview:"Live Preview",production:"Production",draft:"Draft",configBackground:"Config background",configColor:"Config color",import:"Import",importDialog:{upload:{title:"Import from file",description:"Import from local file",tip:"Please select the file to import"},resource:{description:"Import from resource"}},export:"Export",pages:{addPage:"Create Page",createResource:"Create Resource",addResource:"Add Resource from Store",pages:"Pages",deleteTitle:"Delete {name} page?",deleteSectionTitle:"Delete {name} section?",empty:"No pages",needPublish:"This page has unpublished changes",notPublic:"This page is not public"},components:{components:"Components",addComponent:"Add Section",basicGroup:"Basic",customGroup:"Custom",resourceGroup:"Resource",deleteTitle:"Delete {name} component?",noComponents:"No Components",needAddResource:"Please select resource components in project settings",searchComponent:"Please enter component name to search"},outline:{outline:"Outline"},properties:{noProperties:"No properties",noParameters:"No configurable parameters, please add properties first",properties:"Properties",setDefaultLocale:"Set default",copyDefault:"Copy over default",copyFull:"Full copy",migrateFromOld:"Full copy from old version",path:"Path",title:"Title",description:"Description",icon:"Icon",iconSize:"Icon size",image:"Image",imageOptimization:"Image Optimization",imageOptimizationFast:"Best for speed",imageOptimizationQuality:"Best for visual quality",imageMode:"Image Mode",hoverStyle:"Hover Style",videoPoster:"Video Poster",imageSize:"Image size",hasImage:"Has Image",fullSizeImage:"Full Size Image",src:"Source",dark:"Dark",reverse:"Reverse",background:"Background",badge:"Badge",buttons:"Buttons",button:"Button",border:"Border",shadow:"Shadow",color:"Color",variant:"Variant",isPageLink:"Is page link?",link:"Link",style:"Style",card:"Card",list:"List",center:"Center",sort:"Order by",asc:"Ascending",desc:"Descending",createdAt:"Create Time",updatedAt:"Update Time",pathCheckRequired:"Path is required",pathCheckStartWithSlash:"Path must start with /",pathCheckEndWithoutSlash:"Path cannot end with /",pathCheckConsecutiveSlash:"Path cannot contain consecutive /",pathCheckWhitespace:"Path cannot contain whitespace",pathCheckInvalid:"Invalid path format",pathCheckAlreadyExist:"Path is already exist",embedUrl:"Embed url",chooseEmbed:"Choose embed",translateFrom:"Translate from",backgroundColor:"Color",backgroundImage:"Image/Video",customColor:"Custom color",customImage:"Custom image/video",boxed:"Nested box mode",bigMode:"Big title mode",padding:"Padding",maxWidth:"Max Width",stickyHeader:"Sticky Header",translucent:"Translucent Mode",hideNavMenus:"Hide Navigation Menus",hideFooter:"Hide Footer",size:"Size",autoWidth:"Auto Width",iframeHeight:"Content Height",translucentTextColor:"Translucent Text Color",copyFromOtherLanguage:"Copy from other language",useCache:"Use Cache",cacheDuration:"Cache Duration (seconds)",customComponent:"Custom Component",parameters:"Parameters",buttonTitle:"Button {index} Title",cardTitle:"Card {index} Title",cardDescription:"Card {index} Description",cardButtonTitle:"Card {index} Button {actionIndex} Title",copyLanguageDescription:"All properties will be copied from the selected language to the current language, which will override the existing content in the current language.",isPublic:"Public Access",isTemplate:"Use as template page",isTemplateSection:"Template dynamic card",templateSectionNameRequired:"Name is required for template section to set values when using dynamic templates",templateSectionNameHelper:"Section name is used to identify the section in the template, please use a meaningful and unique name, so that the section can be set content later",propertyNotFound:"Failed to modify parameter, reason: component does not exist `{key}` property"}},error:{embedUrl:"Embed url error",notFoundEmbed:"Not Found Embed",noBackground:"No background",notConfig:"Not config",slugAlreadyExists:"Slug already exists",slugRequired:"Slug cannot be empty"},fabric:{fontFamily:"Font Family",basicComponent:{titleFontFamily:"Title Font Family",titleFontFamilyHelper:"* Globally modify the paragraph heading font",descFontFamily:"Description Font Family",descFontFamilyHelper:"* Globally modify the paragraph description font"}},ai:{list:{noTemplatesInStudio:"You haven't create any prompt template in AI Studio yet.",createNow:"Create Now",noTemplates:"No template has been provided yet"},output:{errorMessage:"Something wrong with me, please try it later.",words:"Words",characters:"Characters",copied:"Copied!"},generate:"Generate",text:{title:"Text Assistant",description:"Use AI to help with write text",theme:"Content",themeHelper:"Organize the input to make it more suitable for the web page",language:"Language",languageHelper:"Output text language",size:"Size",sizeHelper:"Output text size",original:"Original",improve:"Improve"},status:{install:"Check whether the ai-kit is installed",available:"Check whether the openai key is set properly"}},translate:{translate:"Translate",title:"Translation page",into:"Translate into",ing:"Translating",ingTip:"Translating content to {targetLanguage}. please wait a moment..",confirm:"Confirm",confirmTitle:"Confirm translation information",confirmContent:"Are you sure to translate to {target} and add {target} content after translation?",overlay:"Are you sure to continue the translation and override the {target} content after translation?",success:"Translation success",fail:"Translation failed, please try again",localInput:"Local input",abort:"Cancel translation",sameLanguage:"Source language and target language cannot be the same",noTargetLanguage:"Please select target language",field:"Field",unsavedChanges:"You have unsaved changes. Do you want to save before closing?"},aiRuntime:{aiSettings:"AI Settings",unnamed:"Unnamed",project:"Project",assistant:"Assistant",widget:"Widget",all:"All",form:"Form",result:"Result",submitButton:"Submit Button",submitIcon:"Submit Icon",submitBackground:"Submit Background",placeholder:"Placeholder",loadingIndicator:"Loading Indicator"},basicInfo:"Basic Info",name:"Name",description:"Description",tags:"Tags",previewImage:"Preview Image",properties:"Properties",property:"Property",addObject:"New {object}",key:"Key",label:"Label",type:"Type",defaultValue:"Default Value",renderer:"Renderer",parameters:"Parameters",i18nEditorTitle:"I18N Editor",close:"Close",component:"Component",delete:"Delete",duplicate:"Duplicate",move:{up:"Move up",down:"Move down"},show:"Show",hide:"Hide",showParameter:"Show Parameter Config",hideParameter:"Hide Parameter Config",dragSort:"Drag sort",saved:"Saved",supportMarkdownSyntaxPlaceholder:"support markdown syntax",settings:{tabs:{basic:"Basic",appearance:"Appearance",resources:"Resources"},basic:{title:"Basic Information",avatar:"Project Avatar",name:"Project Name",namePlaceholder:"Please enter project name",description:"Project Description",descriptionPlaceholder:"Please describe your project",slug:"Project Slug",slugPlaceholder:"Please enter project slug",slugHelper:"Project slug can only contain letters, numbers, hyphens and underscores",changeAvatar:"Change Avatar"},resources:{all:"Enable all resource components",resourceBlocklet:"Selected resource components",addResource:"Select resource components",needInstallResourceByAdmin:"Please install resource components by admin",noSelectedResources:"No selected any resource components"}},edit:{modified:"Modified",new:"New",deleted:"Deleted",undo:"Undo",redo:"Redo"}}),a=e.flatten({deleteProjectAlertPrefix:"这将永久删除名称为",resetProjectAlertPrefix:"这将重置名称为",deleteProjectAlertSuffix:"的项目",resetProjectAlertSuffix:"的项目",confirmTip:"请输入项目名称",confirmDelete:"请输入 {name} 以确认删除",confirmReset:"请输入 {name} 以确认重置",uploadNewIcon:"上传新图标",requiredKey:"键不能为空,请设置一个唯一的键,以便在组件中引用和配置参数",duplicateKey:"键已存在,请设置一个唯一的键",projects:{project:"项目",myProjects:"我的项目",projectToGetStart:"创建项目",unnamed:"未命名项目",noDescription:"暂无描述",lastUpdated:"最后更新",edit:"编辑",delete:"删除",pin:"置顶",unpin:"取消置顶",name:"名称",slug:"路径",projectSlug:"请输入项目路径",projectName:"请输入项目名称",newProjectDescriptionPlaceholder:"请输入项目描述",description:"描述",chooseTemplate:"选择模板",chooseTemplateTip:"选择模板快速开始,或开创您的独特项目 - 点击创建您的专属之旅!",blankTemplate:"空白模板",welcomeTemplate:"欢迎模板",limitReached:"扩展项目数量",limitReachedTip:"你已经达到了项目数量上限 <b>{limit}</b>,请删除未使用的项目并重试。<br/>你也可以部署自己的 Pages Kit 来创建更多项目。",limitReachedConfirm:"部署我的 Pages Kit"},alert:{delete:"删除"},common:{goToHome:"返回首页",delete:"删除",cancel:"取消",add:"添加",addMultiple:"添加 ({count})",create:"创建",language:"语言",pageNotFound:"页面未找到",confirmDialogTitle:"确认",all:"全部",back:"返回首页",retry:"重试",defaultLanguage:"默认语言",close:"关闭",saveSuccess:"保存成功",resourceBlocklet:"资源 Blocklet",select:"选择",ok:"确定"},section:{card:{type:"卡片类型",title:"卡片",addCard:"新增卡片",align:"卡片对齐方式",textAlign:"文本对齐方式"},list:{columns:"列数",gap:"间距",align:"对齐方式"}},maker:{pageTitle:"页面编辑器",save:"保存",publish:"发布",publishToProduction:"发布",publishToProductionTip:"任何人都可以看到正式版",publishConfirmContent:"发布到",publishSelectPagesMessage:"请选择要发布的页面",publishSuccessMessage:"发布成功",importSuccessMessage:"导入成功",preview:"预览",livePreview:"实时预览",production:"正式版",draft:"草稿",configBackground:"设置背景",configColor:"设置颜色",import:"导入",importDialog:{upload:{title:"从文件导入",description:"从本地文件导入",tip:"请选择要导入的文件"},resource:{description:"从资源导入"}},export:"导出",pages:{addPage:"创建页面",createResource:"创建资源",addResource:"从商店添加资源",pages:"页面",deleteTitle:"删除 {name} 页面?",deleteSectionTitle:"删除 {name} 卡片?",empty:"暂无页面",needPublish:"此页面有可发布的新修改",notPublic:"此页面未公开"},components:{components:"组件",addComponent:"添加卡片",basicGroup:"基础组件",customGroup:"自定义组件",resourceGroup:"资源组件",deleteTitle:"删除 {name} 组件?",noComponents:"暂无组件",needAddResource:"请在项目设置中选择资源组件",searchComponent:"请输入组件名称进行搜索"},outline:{outline:"概览"},properties:{noProperties:"暂无属性",noParameters:"暂无可配置参数,请先添加属性",properties:"属性",setDefaultLocale:"设为默认语言",copyDefault:"设为默认值",copyFull:"复制全部",migrateFromOld:"从老版本复制默认值",path:"路径",title:"标题",description:"描述",icon:"图标",iconSize:"图标大小",image:"图片",imageOptimization:"图片优化",imageOptimizationFast:"速度优先",imageOptimizationQuality:"质量优先",imageMode:"图片模式",hoverStyle:"鼠标悬停样式",videoPoster:"视频封面",imageSize:"图片大小",hasImage:"包含图片",fullSizeImage:"大图模式",src:"源地址",dark:"暗黑",reverse:"反转",background:"背景",badge:"标签",buttons:"按钮",button:"按钮",border:"边框",shadow:"阴影",color:"颜色",variant:"样式",isPageLink:"是否内部链接?",link:"链接",style:"样式",card:"卡片",list:"列表",center:"居中",sort:"排序",asc:"升序",desc:"降序",createdAt:"创建时间",updatedAt:"更新时间",pathCheckRequired:"请输入路径",pathCheckStartWithSlash:"路径开头必须是 /",pathCheckEndWithoutSlash:"路径结尾不能是 /",pathCheckConsecutiveSlash:"路径中不能包含连续的 /",pathCheckWhitespace:"路径中不能包含空白字符",pathCheckInvalid:"非法的路径",pathCheckAlreadyExist:"路径已存在",embedUrl:"部件地址",chooseEmbed:"选择部件",translateFrom:"翻译来自",backgroundColor:"颜色",backgroundImage:"图片/视频",customColor:"自定义颜色",customImage:"自定义图片/视频",boxed:"嵌套盒子模式",bigMode:"大标题模式",padding:"内边距",maxWidth:"最大宽度",stickyHeader:"固定导航栏",translucent:"沉浸式",hideNavMenus:"隐藏导航菜单",hideFooter:"隐藏页脚",size:"大小",autoWidth:"宽度自适应",iframeHeight:"定义内容高度",translucentTextColor:"沉浸式文本颜色",copyFromOtherLanguage:"从其他语言复制",useCache:"使用缓存",cacheDuration:"缓存时间 (秒)",customComponent:"自定义组件",parameters:"参数",buttonTitle:"第 {index} 个按钮的标题",cardTitle:"第 {index} 个卡片标题",cardDescription:"第 {index} 个卡片描述",cardButtonTitle:"第 {index} 个卡片中第 {actionIndex} 个按钮标题",copyLanguageDescription:"将从选择的语言复制所有属性到当前语言,这将覆盖当前语言的已有内容。",isPublic:"是否公开",isTemplate:"作为模版页面使用",isTemplateSection:"模板动态卡片",templateSectionNameRequired:"模板区块需要设置名称,以便在使用动态模板时为区块设置对应的值",templateSectionNameHelper:"区块名称用于标识模板中的区块,请使用有意义且唯一的名称,以便后续为区块设置内容",propertyNotFound:"修改参数失败,原因:组件不存在 `{key}` 属性"}},error:{embedUrl:"Embed 地址有误",notFoundEmbed:"未找到组件",noBackground:"无背景",notConfig:"未设置",slugAlreadyExists:"路径已存在",slugRequired:"路径不能为空"},fabric:{fontFamily:"全局字体",basicComponent:{titleFontFamily:"段落标题字体",titleFontFamilyHelper:"* 全局修改段落标题字体",descFontFamily:"段落描述字体",descFontFamilyHelper:"* 全局修改段落描述字体"}},ai:{list:{noTemplatesInStudio:"目前您还没有在 AI Studio 里创建任何模版",createNow:"现在创建",noTemplates:"还没有任何模版"},output:{errorMessage:"出错了,请稍后再试",words:"字",characters:"字符",copied:"已复制!"},generate:"生成",text:{title:"文案助手",description:"使用 AI 帮助编写文案",theme:"内容",themeHelper:"整理内容,使描述更加合适网页",language:"语言",languageHelper:"输出文本语言",size:"大小",sizeHelper:"输出内容大小",original:"原文",improve:"改良"},status:{install:"请先检查 ai-kit 是否安装",available:"请先检查 openai key 是否正常设置"}},translate:{title:"翻译页面",translate:"翻译",into:"翻译成",ing:"翻译中",ingTip:"将内容翻译为 {targetLanguage}。请稍等...",confirm:"翻译",confirmTitle:"确认翻译信息",confirmContent:"你确认翻译成 {target},并且翻译后新增 {target} 内容吗?",overlay:"确认继续翻译,并且翻译后覆盖 {target} 内容吗?",success:"翻译成功",fail:"翻译失败,请重试",localInput:"本地输入",abort:"取消翻译成功",sameLanguage:"源语言和目标语言不能相同",noTargetLanguage:"请选择目标语言",field:"字段",unsavedChanges:"你有未保存的更改。是否在关闭前保存?"},aiRuntime:{aiSettings:"AI 设置",unnamed:"未命名",project:"项目",assistant:"助手",widget:"部件",all:"全部",form:"仅表单",result:"仅输出",submitButton:"提交按钮",submitIcon:"提交按钮图标",submitBackground:"提交按钮背景色",placeholder:"占位提示",loadingIndicator:"加载提示"},basicInfo:"基础信息",name:"名称",description:"描述",tags:"标签",previewImage:"预览图片",properties:"属性",property:"属性",addObject:"添加{object}",key:"键",label:"标签",type:"类型",defaultValue:"默认值",renderer:"渲染方式",parameters:"参数",i18nEditorTitle:"国际化编辑",close:"关闭",component:"组件",delete:"删除",duplicate:"复制",move:{up:"上移",down:"下移"},show:"显示",hide:"隐藏",showParameter:"显示参数配置",hideParameter:"隐藏参数配置",dragSort:"拖拽排序",saved:"保存成功",supportMarkdownSyntaxPlaceholder:"支持输入 markdown",settings:{tabs:{basic:"基础设置",appearance:"外观设置",resources:"资源组件"},basic:{title:"基础信息",avatar:"项目头像",name:"项目名称",namePlaceholder:"请输入项目名称",description:"项目描述",descriptionPlaceholder:"请输入项目描述",slug:"项目路径",slugPlaceholder:"请输入项目路径",slugHelper:"项目路径只能包含字母、数字、中划线和下划线",changeAvatar:"更换头像"},resources:{all:"启用所有资源组件",resourceBlocklet:"已选择的资源组件",addResource:"选择资源组件",needInstallResourceByAdmin:"请联系管理员安装资源组件",noSelectedResources:"未选择任何资源组件"}},edit:{modified:"已修改",new:"新增",deleted:"已删除",undo:"撤销",redo:"重做"}}),o={en:t,zh:a};exports.translations=o;
|
package/lib/cjs/project-html.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
"use strict";const
|
|
1
|
+
"use strict";const J=require("vite-plugin-node-polyfills/shims/process"),C=require("./_chunks/components-paCr_hhD.js"),S=require("@blocklet/crawler/middlewares"),G=require("@blocklet/pages-kit/types"),z=require("@blocklet/pages-kit/utils/preload"),K=require("@blocklet/sdk/lib/component"),x=require("@blocklet/sdk/lib/config"),Q=require("cheerio"),V=require("express"),A=require("fs"),X=require("mustache"),I=require("path"),q=require("ufo"),T=e=>e&&e.__esModule?e:{default:e};function Y(e){if(e&&e.__esModule)return e;const d=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(d,t,i.get?i:{enumerable:!0,get:()=>e[t]})}}return d.default=e,Object.freeze(d)}const D=T(J),a=T(x),U=Y(Q),Z=T(X),F=["/assets/"],R=()=>[!0,"true"].includes(a.default.env.preferences.allowCrawler);function H(){R()?S.initCronCrawlBlocklet({time:"30 30 */12 * * *",options:{}}):S.cancelCronCrawlBlocklet()}H();a.default.events.on(a.default.Events.envUpdate,H);function ee({app:e,viteDevServer:d,state:t}){let i;if(d){const n=A.readFileSync(I.resolve(D.default.cwd(),"./index.html"),"utf-8");e.use(async(y,j,b)=>{const P=y.originalUrl;i=await d.transformIndexHtml(P,n),b()})}else i=A.readFileSync(I.resolve(D.default.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const k=V.Router();k.use(S.initSEOMiddleware({autoReturnHtml:!1,allowCrawler:R})),k.get("/:path(*)?",async(n,y,j)=>{var M,O,$;if(F.some(c=>n.path.startsWith(c))){j();return}const b=performance.now(),P=()=>Math.round(performance.now()-b),N="production";let r,f,_=i;if(n.path.startsWith("/pages")){const c=n.params.lang,h=n.cookies.nf_lang,g=new Set([...a.default.env.languages.map(u=>u.code)]);let p=(c&&g.has(c)?c:void 0)||(g.has(h)?h:void 0)||[...g][0];if((!p||!((M=t.supportedLocales)!=null&&M.find(u=>u.locale===p)))&&(p=(($=(O=t.supportedLocales)==null?void 0:O[0])==null?void 0:$.locale)||""),p){const u=[];Object.values(t.pages).forEach(s=>{const v=Object.values((s==null?void 0:s.sections)??{}).filter(l=>{var w;return l.component==="custom-component"&&((w=l.config)==null?void 0:w.componentId)}).map(l=>{var w,L;return{id:l.id,componentId:l.config.componentId,useCache:l.config.useCache,cacheDuration:l.config.cacheDuration,properties:(L=(w=l.locales)==null?void 0:w[p])==null?void 0:L.properties}});u.push(...v)});const B=new Promise((s,v)=>{setTimeout(()=>{v(new Error("getPreloadComponents timeout in promise race, skip it"))},90*1e3)});try{await Promise.race([B,C.getPreloadComponents({mode:N,req:n,state:t,locale:p,instances:u,module:G.PreloadComponentScriptModule.UMD_FN}).then(s=>{s&&(f=z.injectPreloadComponents(s))})])}catch(s){C.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements"),C.logger.warn(s)}}}try{const c=(r==null?void 0:r.title)||a.default.env.appName,h=(r==null?void 0:r.description)||a.default.env.appDescription,g=q.withQuery(q.joinURL(a.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:c,description:h});_=Z.default.render(i,{ogTitle:c,ogDescription:h,ogImage:te(r==null?void 0:r.image)||g,pagesPublishedAt:(t==null?void 0:t.config.publishedAt)||new Date().getTime()})}catch{}const o=t==null?void 0:t.config.fontFamily,W=n.query.mode==="draft"||n.url.includes("preview"),m=U.load(_);m("head").find("#injected-head-elements").replaceWith(`
|
|
2
2
|
|
|
3
3
|
${o!=null&&o.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${o.title}&display=swap">`:""}
|
|
4
4
|
${o!=null&&o.description&&(o==null?void 0:o.description)!==(o==null?void 0:o.title)?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${o.description}&display=swap">`:""}
|
|
5
5
|
<script>
|
|
6
|
+
|
|
6
7
|
window.__PAGE_STATE__ = ${JSON.stringify(t)}
|
|
7
8
|
|
|
8
9
|
document.querySelectorAll('link[rel="preload"][as="style"]').forEach(function (link) {
|
|
@@ -19,4 +20,4 @@
|
|
|
19
20
|
darkMode: "class",
|
|
20
21
|
};
|
|
21
22
|
<\/script>`:""}
|
|
22
|
-
`);const E=
|
|
23
|
+
`);const E=x.getBlockletJs();if(E&&m('script[src="__blocklet__.js"]').replaceWith(`<script>${E}<\/script>`),f!=null&&f.html&&m("head").find("#injected-html-elements").replaceWith(f.html),n.cachedHtml){const c=U.load(n.cachedHtml);m("body").html(c("body").html()||"")}_=m.html(),y.send(_),C.logger.info(`[html] render: ${n.path}, ${P()}ms`)}),e.use(k)}function te(e){return K.getComponentMountPoint("image-bin"),e}module.exports=ee;
|
package/lib/cjs/resources.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const c=require("./_chunks/site-state-
|
|
1
|
+
"use strict";const c=require("./_chunks/site-state-HLTcjGnI.js"),b=require("./_chunks/components-paCr_hhD.js"),U=require("async_hooks"),F=require("express"),J=require("fs"),X=require("joi"),O=require("lodash"),N=require("path"),W=require("@blocklet/sdk/lib/middlewares/auth"),G=require("@blocklet/sdk/lib/component"),E=t=>t&&t.__esModule?t:{default:t},p=E(J),I=E(X),k=E(N),v=E(W);new U.AsyncLocalStorage;const K=async(t,e,o)=>{var n,s,r,a;try{const{projectId:u}=t.params;if(!u)return o();const f=await c.Project.findByPk(u);if(!f)return e==null?void 0:e.status(404).json({error:"Project not found"});const P=(n=t.user)==null?void 0:n.did,h=((s=t.user)==null?void 0:s.role)||"UNKNOWN_ROLE";if(!P)return e==null?void 0:e.status(401).json({error:"Authentication required"});if(c.isMultiTenant()){const w=f.createdBy===P,i=(a=(r=c.getMultiTenantAllProjectAccessPassports())==null?void 0:r.includes)==null?void 0:a.call(r,h);if(!w&&!i)return e==null?void 0:e.status(403).json({error:"No permission to access this project in multi-tenant mode"})}else if(!["owner","admin","pagesEditor"].includes(h))return e==null?void 0:e.status(403).json({error:"No permission to access this project in single-tenant mode"});t.project=f,t.projectId=u,o()}catch(u){b.logger.error("Project middleware error:",u),e==null||e.status(500).json({error:"Internal server error"})}};function T(t,e){return new Promise((o,n)=>{const s=p.default.createReadStream(t),r=p.default.createWriteStream(e);s.on("error",n),r.on("error",n),r.on("finish",o),s.pipe(r)})}async function B(t,e){await p.default.promises.mkdir(e,{recursive:!0});const o=await p.default.promises.readdir(t,{withFileTypes:!0});for(const n of o){const s=k.default.join(t,n.name),r=k.default.join(e,n.name);n.isDirectory()?await B(s,r):await T(s,r)}}async function Y(t,e){(await p.default.promises.stat(t)).isDirectory()?await B(t,e):await T(t,e)}const D=(t,e,o)=>c.isMultiTenant()?v.default()(t,e,o):v.default({roles:["owner","admin","pagesEditor"]})(t,e,o),$=(t,e)=>{const o=G.getResourceExportDir({projectId:t,releaseId:e});return N.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},S=F.Router(),q="@page",L="@component",y=":",_="ALL",M="@project",C=({pageId:t,projectId:e})=>[q,e,t].join(y),z=t=>{const[e,o,n]=t.split(y);if(e===q)return{pageId:n,projectId:o}},A=({componentId:t,projectId:e})=>[L,e,t].join(y),H=t=>{const[e,o,n]=t.split(y);if(e===L)return{componentId:n,projectId:o}},Q=t=>[M,t].join(y),V=t=>{const[e,o]=t.split(y);if(e===M)return o},Z=t=>{try{return JSON.parse(t)}catch{}return{}};async function x(t){const e=await c.SiteState.shared(t).getState("production"),o=await c.Project.findByPk(t),n=e.pageIds.map(r=>{const a=e.pages[r];if(a)return{id:C({pageId:r,projectId:t}),name:a.slug}}).filter(Boolean),s=O.sortBy(Object.values(e.components),r=>r.index).map(({data:r})=>({id:A({componentId:r.id,projectId:t}),name:r.name||r.id}));return{id:Q(t),name:(o==null?void 0:o.name)||"Unnamed Project",children:[{id:C({pageId:_,projectId:t}),name:"Pages",children:n},{id:A({componentId:_,projectId:t}),name:"Components",children:s}]}}S.get("/resources",D,async(t,e)=>{const{projectId:o}=Z(t.query.resourcesParams);if(o){t.params={...t.params,projectId:o},await K(t,e,()=>{});const r=await x(o);e.json({resources:[r]});return}const n=await c.Project.findAll({where:{}}),s=await Promise.all(n.map(r=>x(r.id)));e.json({resources:s})});const tt=I.default.object({projectId:I.default.string().required().min(1),releaseId:I.default.string().allow(""),resources:I.default.array().items(I.default.string()).required(),locale:I.default.string().allow("")});S.post("/resources",D,async(t,e)=>{const{resources:o,projectId:n,releaseId:s}=await tt.validateAsync(t.body),r="production",a=[],u=[];for(const i of o){if(V(i))continue;const{pageId:m,projectId:j}=z(i)||{};if(m)m===_||m&&j&&a.push({pageId:m,projectId:j});else{const{componentId:l,projectId:d}=H(i)||{};l===_||l&&d&&u.push({componentId:l,projectId:d})}}const f=O.groupBy(a,"projectId"),P=O.groupBy(u,"projectId"),h=new Set([...Object.keys(f),...Object.keys(P)]),w=$(n,s);p.default.rmSync(w,{recursive:!0,force:!0}),p.default.mkdirSync(w,{recursive:!0});for(const i of h){const m=await c.SiteState.shared(i).getState(r),j=f[i],l=P[i],d=j==null?void 0:j.map(g=>g.pageId),R=l==null?void 0:l.map(g=>g.componentId);if(d!=null&&d.length||R!=null&&R.length){const g=await c.toPackage(m,{exportAssets:!0,pageIds:d,componentIds:R});await Y(g,w),p.default.rmSync(g,{recursive:!0,force:!0})}b.logger.info(`Exported resources for project ${i}`,{pageIds:d,componentIds:R})}e.json({})});S.get("/all-resources",D,async(t,e)=>{const{states:o}=await c.getResourceStates(),n=o==null?void 0:o.map(s=>{const r={blockletId:s.blockletId,blockletTitle:s.blockletTitle,components:{}};if(s.state.components&&(r.components=s.state.components),Object.keys(r.components).length!==0)return r}).filter(Boolean);e.json(n)});module.exports=S;
|
package/lib/cjs/setting.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Be=Object.create;var xe=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var De=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var ze=(t,s,i,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let c of Te(s))!Re.call(t,c)&&c!==i&&xe(t,c,{get:()=>s[c],enumerable:!(n=we(s,c))||n.enumerable});return t};var Oe=(t,s,i)=>(i=t!=null?Be(De(t)):{},ze(s||!t||!t.__esModule?xe(i,"default",{value:t,enumerable:!0}):i,t));Object.
|
|
1
|
+
"use strict";var Be=Object.create;var xe=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var De=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var ze=(t,s,i,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let c of Te(s))!Re.call(t,c)&&c!==i&&xe(t,c,{get:()=>s[c],enumerable:!(n=we(s,c))||n.enumerable});return t};var Oe=(t,s,i)=>(i=t!=null?Be(De(t)):{},ze(s||!t||!t.__esModule?xe(i,"default",{value:t,enumerable:!0}):i,t));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),B=require("./_chunks/state-CVPLn5Cq.js"),r=require("@blocklet/pages-kit/builtin/mui/material"),P=require("@blocklet/pages-kit/builtin/react"),Fe=require("@arcblock/ux/lib/Empty"),F=require("@blocklet/pages-kit/builtin/locale"),Ae=require("@arcblock/ux/lib/Theme"),_e=require("@emotion/css"),ee=require("ahooks"),qe=require("gradient-parser");require("lodash/without");const Ue=require("tinycolor2"),w=require("@mui/material/colors"),D=require("./uploader.js"),Ne=require("@iconify-icon/react"),be=require("react-use"),R=require("lodash"),Ve=require("@arcblock/ux/lib/Toast"),ye=require("@blocklet/code-editor"),X=require("@blocklet/pages-kit/components"),re=require("@mui/base"),z=require("@mui/icons-material"),K=require("@syncedstore/core"),Ke=require("lodash/has"),Me=require("lodash/keyBy"),We=require("lodash/pick"),O=require("material-ui-popup-state/hooks"),Ee=require("react-error-boundary"),He=require("lodash/sortBy"),te=require("react-dnd"),U=t=>t&&t.__esModule?t:{default:t},se=U(Fe),je=U(qe),Le=U(Ue),he=U(Ve),Ye=U(Ke),Je=U(Me),$e=U(We),Ge=U(He);w.red[300],w.pink[300],w.purple[300],w.indigo[300],w.blue[300],w.cyan[300],w.teal[300],w.green[300],w.lime[300],w.yellow[300],w.amber[300],w.orange[300],w.brown[300],w.grey[300],w.blueGrey[300];const Qe=P.forwardRef(function({showMarkdown:s,markdown:i,onMarkdownChange:n,showUploader:c,value:y,meta:a,onChange:p,...k},o){const[b,h]=P.useState("");P.useEffect(()=>{h(y||"")},[y,h]);const m=async()=>{if(b!==y){const l=B.getImageAbsoluteUrl(b);if(!l){p(b,void 0);return}const u=await D.getImageSize(l).catch(()=>D.getVideoSize(l)).catch(()=>{});p(b,{...u,filename:b})}};be.useDebounce(()=>{b!==y&&p(b)},300,[b]),P.useImperativeHandle(o,()=>({submit:m}));const g={};return c&&(g.InputProps={sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mx:.5},children:e.jsx(D.UploaderButton,{onChange:async({response:l})=>{var f;const u=(f=l==null?void 0:l.data)==null?void 0:f.filename,v=B.getImageAbsoluteUrl(u)||"";let S={};v&&(S=await D.getImageSize(v).catch(()=>D.getVideoSize(v)).catch(()=>{})),p(u,{...S,filename:u})}})})}),e.jsx(r.TextField,{size:"small",fullWidth:!0,...k,label:e.jsxs(r.Stack,{direction:"row",spacing:1,alignItems:"center",children:[k.label,s&&e.jsxs(e.Fragment,{children:[" (",e.jsx(r.FormControlLabel,{checked:i,label:e.jsx(r.Box,{component:Ne.Icon,icon:"tabler:markdown",sx:{verticalAlign:"middle"}}),labelPlacement:"start",control:e.jsx(r.Switch,{size:"small"}),sx:{ml:.25,pr:1},onChange:(l,u)=>n==null?void 0:n(u)}),")"]})]}),InputLabelProps:{shrink:!0,...k.InputLabelProps},value:b,onChange:l=>h(l.target.value),...g,onKeyDown:l=>{l.keyCode!==229&&l.key==="Enter"&&m()}})}),Xe=P.lazy(()=>import("react-best-gradient-color-picker"));function Ze(t){try{const i=je.default.parse(t).map(c=>{const y=c.colorStops.map(a=>{if(a.type!=="rgba"){const p=Le.default(a.value).toRgb();return{...a,value:[p.r,p.g,p.b,p.a],type:"rgba"}}return a});return{...c,colorStops:y}});return je.default.stringify(i)}catch{return B.isColorString(t)?t:""}}function et({color:t,sx:s={},...i}){B.isColorString(t);const n={};return B.isGradient(t)?n.backgroundImage=t:n.backgroundColor=t,e.jsx(r.Box,{sx:{...s,width:"100%",paddingBottom:"100%",cursor:"pointer",transition:"opacity 0.2s",border:"1px solid #ccc",borderRadius:.5,"&:hover":{opacity:.75},...n},...i})}const tt=P.forwardRef(function({onSave:s},i){const n=ee.useReactive({value:""}),{t:c}=F.useLocaleContext(),y={};n.value?B.isGradient(n.value)?y.backgroundImage=n.value:y.backgroundColor=n.value:y.border="1px solid #ccc";const[a,{setFalse:p,setTrue:k}]=ee.useBoolean(!1),o=P.useCallback(()=>{p()},[p]),b=()=>{s({value:n.value},o)};return P.useImperativeHandle(i,()=>({open({value:h}={value:""}){n.value=h,k()},close(){o()}})),e.jsxs(r.Dialog,{open:a,onClose:o,hideBackdrop:!0,children:[e.jsx(r.DialogTitle,{children:c("maker.configBackground")}),e.jsx(r.DialogContent,{sx:{width:600},children:e.jsxs(r.Box,{width:"100%",display:"flex",children:[e.jsx(r.Box,{flex:1,mr:1,sx:y,children:!n.value&&e.jsx(se.default,{children:c("error.notConfig")})}),e.jsx(P.Suspense,{children:e.jsx(Xe,{width:200,height:200,value:Ze(n.value),onChange:h=>{n.value=h},hidePresets:!0,hideAdvancedSliders:!0,hideColorGuide:!0,hideInputType:!0})})]})}),e.jsxs(r.DialogActions,{children:[e.jsx(r.Button,{variant:"outlined",size:"small",onClick:o,children:c("common.cancel")}),e.jsx(r.Button,{variant:"contained",size:"small",onClick:b,children:c("maker.save")})]})]})});Ae.styled(r.Box)`
|
|
2
2
|
.color-item {
|
|
3
3
|
position: relative;
|
|
4
4
|
}
|
package/lib/cjs/site-state.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("./_chunks/components-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("vite-plugin-node-polyfills/shims/process");require("vite-plugin-node-polyfills/shims/global");require("./_chunks/components-paCr_hhD.js");const e=require("./_chunks/site-state-HLTcjGnI.js");require("@blocklet/quickjs");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("fs");require("glob");require("lib0/decoding");require("lib0/encoding");require("lodash");require("lru-cache");require("nanoid");require("p-limit");require("path");require("stream/promises");require("tar");require("ufo");require("wait-on");require("y-protocols/awareness");require("y-protocols/sync");require("yaml");require("yjs");exports.PUBLISH_MODES=e.PUBLISH_MODES;exports.SITE_STATE_PATH=e.SITE_STATE_PATH;exports.STATE_MODES=e.STATE_MODES;exports.default=e.SiteState;exports.fromPackage=e.fromPackage;exports.getResourceStates=e.getResourceStates;exports.initPackResourceStates=e.initPackResourceStates;exports.mergeState=e.mergeState;exports.nextId=e.nextId;exports.toPackage=e.toPackage;exports.triggerReloadAllProjectResource=e.triggerReloadAllProjectResource;
|
package/lib/cjs/theme.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),c=require("@arcblock/ux/lib/Colors"),f=require("@arcblock/ux/lib/Theme"),F=require("@iconify-icon/react"),m=require("@iconify-icons/tabler/chevron-down"),v=require("@blocklet/pages-kit/builtin/mui/lab"),e=require("@blocklet/pages-kit/builtin/mui/material"),w=require("defu"),g=t=>t&&t.__esModule?t:{default:t},o=g(c),x=g(m);function r(t){const i=o.default.common.white,h=e.getContrastRatio(t,i)>=2?i:"rgba(0, 0, 0, 0.87)";return{main:t,light:e.lighten(t,.2),dark:e.darken(t,.3),contrastText:h}}function n(t={}){return f.createTheme(w.defu(t,{palette:{_did:r(o.default.did.primary),black:r(o.default.grey[900])},breakpoints:{values:{xs:0,sm:600,md:900,lg:1200,xl:1536,section:1440}}}))}const u=`
|
|
2
2
|
:root {
|
|
3
3
|
/* Light */
|
|
4
4
|
/* colors */
|
package/lib/cjs/uploader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),d=require("@blocklet/uploader/react"),s=require("@mui/icons-material/Upload"),c=require("@mui/material"),p=o=>o&&o.__esModule?o:{default:o},g=p(s),u=d.useUploaderContext;function m({onChange:o}){const r=u(),n=()=>{var t;const e=(t=r==null?void 0:r.current)==null?void 0:t.getUploader();e==null||e.open(),o&&e.onceUploadSuccess((...i)=>{o(...i)})};return a.jsx(c.IconButton,{size:"small",onClick:n,children:a.jsx(g.default,{})},"uploader-trigger")}function l({children:o}){return a.jsx(d.UploaderProvider,{popup:!0,coreProps:{restrictions:{allowedFileTypes:["image/png","image/jpeg","image/gif","image/webp","image/svg+xml","video/mp4","video/webm","audio/mpeg"],maxNumberOfFiles:1}},children:o},"uploader")}function f(o){return new Promise((r,n)=>{const e=document.createElement("video");e.src=o,e.onloadedmetadata=()=>{const{videoWidth:t,videoHeight:i}=e;r({naturalWidth:t,naturalHeight:i})},e.onerror=t=>n(t)})}function v(o){return new Promise((r,n)=>{const e=new Image;e.src=o,e.onload=()=>{const{naturalWidth:t,naturalHeight:i}=e;r({naturalWidth:t,naturalHeight:i})},e.onerror=t=>n(t)})}exports.UploaderButton=m;exports.UploaderProvider=l;exports.default=l;exports.getImageSize=v;exports.getVideoSize=f;exports.useUploader=u;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),d=require("@blocklet/uploader/react"),s=require("@mui/icons-material/Upload"),c=require("@blocklet/pages-kit/builtin/mui/material"),p=o=>o&&o.__esModule?o:{default:o},g=p(s),u=d.useUploaderContext;function m({onChange:o}){const r=u(),n=()=>{var t;const e=(t=r==null?void 0:r.current)==null?void 0:t.getUploader();e==null||e.open(),o&&e.onceUploadSuccess((...i)=>{o(...i)})};return a.jsx(c.IconButton,{size:"small",onClick:n,children:a.jsx(g.default,{})},"uploader-trigger")}function l({children:o}){return a.jsx(d.UploaderProvider,{popup:!0,coreProps:{restrictions:{allowedFileTypes:["image/png","image/jpeg","image/gif","image/webp","image/svg+xml","video/mp4","video/webm","audio/mpeg"],maxNumberOfFiles:1}},children:o},"uploader")}function f(o){return new Promise((r,n)=>{const e=document.createElement("video");e.src=o,e.onloadedmetadata=()=>{const{videoWidth:t,videoHeight:i}=e;r({naturalWidth:t,naturalHeight:i})},e.onerror=t=>n(t)})}function v(o){return new Promise((r,n)=>{const e=new Image;e.src=o,e.onload=()=>{const{naturalWidth:t,naturalHeight:i}=e;r({naturalWidth:t,naturalHeight:i})},e.onerror=t=>n(t)})}exports.UploaderButton=m;exports.UploaderProvider=l;exports.default=l;exports.getImageSize=v;exports.getVideoSize=f;exports.useUploader=u;
|