@blocklet/pages-kit-inner-components 0.4.32 → 0.4.34
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/site-state-DdXLmutN.js +57 -0
- package/lib/cjs/components.js +1 -1
- package/lib/cjs/locales.js +1 -1
- package/lib/cjs/project-html.js +1 -1
- package/lib/cjs/resources.js +1 -1
- package/lib/cjs/setting.js +4 -4
- package/lib/cjs/site-state.js +1 -1
- package/lib/cjs/theme.js +2 -2
- package/lib/es/_chunks/site-state-BF64quiV.js +1507 -0
- package/lib/es/components.js +1 -1
- package/lib/es/locales.js +12 -0
- package/lib/es/project-html.js +1 -1
- package/lib/es/resources.js +1 -1
- package/lib/es/setting.js +1594 -937
- package/lib/es/site-state.js +1 -1
- package/lib/es/theme.js +14 -14
- package/package.json +4 -4
- package/lib/cjs/_chunks/site-state-DNRKik3e.js +0 -57
- package/lib/es/_chunks/site-state-B0nM69Rk.js +0 -1485
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";var nt=Object.defineProperty;var ot=(t,n,e)=>n in t?nt(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e;var A=(t,n,e)=>ot(t,typeof n!="symbol"?n+"":n,e);const rt=require("vite-plugin-node-polyfills/shims/process"),at=require("vite-plugin-node-polyfills/shims/global"),it=require("@blocklet/pages-kit/builtin/utils"),se=require("@blocklet/pages-kit/types"),oe=require("@blocklet/pages-kit/utils/property"),B=require("@blocklet/quickjs"),ct=require("@blocklet/sdk/lib/config"),Oe=require("lru-cache"),Fe=require("node-fetch"),D=require("ufo"),ce=require("crypto"),lt=require("@blocklet/logger"),pt=require("vite-plugin-node-polyfills/shims/buffer"),ut=require("@blocklet/pages-kit/utils/builtin"),ge=require("@blocklet/pages-kit/utils/typescript/builtin-module-transformer"),le=require("@blocklet/sdk/lib/component"),dt=require("autoprefixer"),ft=require("esbuild"),E=require("fs"),mt=require("postcss"),gt=require("tailwindcss"),ht=require("typescript"),yt=require("@reactivedata/reactive"),ee=require("@syncedstore/core"),he=require("glob"),St=require("lib0/decoding"),wt=require("lib0/encoding"),L=require("lodash"),Et=require("nanoid"),bt=require("p-limit"),g=require("path"),Tt=require("stream/promises"),Ot=require("tar"),jt=require("wait-on"),H=require("y-protocols/awareness"),ue=require("y-protocols/sync"),Ct=require("yaml"),It=require("yjs"),Pt=require("lodash/isNil"),C=require("sequelize");require("sqlite3");const x=t=>t&&t.__esModule?t:{default:t};function X(t){if(t&&t.__esModule)return t;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,s.get?s:{enumerable:!0,get:()=>t[e]})}}return n.default=t,Object.freeze(n)}const re=x(rt),xe=x(at),w=x(ct),At=x(Fe),_t=x(lt),vt=x(pt),Dt=x(dt),xt=X(ft),kt=x(mt),Rt=x(gt),k=x(ht),de=X(St),_=X(wt),Nt=x(bt),Lt=x(g),Ut=x(jt),K=X(Ct),V=X(It),Mt=x(Pt);w.default.env.mode;const Ft="image-bin";w.default.env.INIT_TEMPLATE_PATH;const qt=re.default.env.DATABASE_URL||Lt.default.join(w.default.env.dataDir,"db/pages-kit.db"),ke=w.default,$t=()=>w.default.env.tenantMode==="multiple",Bt=()=>{var t;return(Mt.default(ke.env.preferences.multiTenantAllProjectAccessPassports)?[]:(t=ke.env.preferences.multiTenantAllProjectAccessPassports)==null?void 0:t.split(","))||[]},I=_t.default("pages-kit"),Vt=C.DataTypes.sqlite.DATE.parse;C.DataTypes.sqlite.DATE.parse=(t,n)=>typeof t=="number"?new Date(t):Vt(t,n);const Z=new C.Sequelize({dialect:"sqlite",storage:qt,benchmark:re.default.env.ENABLE_SEQUELIZE_BENCHMARK==="true",retry:{match:[/SQLITE_BUSY/],name:"query",max:10},logging:re.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 pe extends C.Model{}pe.init({id:{type:C.DataTypes.UUID,allowNull:!1,primaryKey:!0,defaultValue:C.DataTypes.UUIDV4},projectId:{type:C.DataTypes.UUID,allowNull:!1},componentId:{type:C.DataTypes.STRING,allowNull:!1}},{sequelize:Z,tableName:"ProjectComponents",timestamps:!1});class $ extends C.Model{static async getProjectByIdOrSlug(n){return $.findOne({where:{[C.Op.or]:[{id:n},{slug:n}]}})}}$.init({id:{type:C.DataTypes.UUID,defaultValue:C.DataTypes.UUIDV4,primaryKey:!0},name:{type:C.DataTypes.STRING,allowNull:!1},description:C.DataTypes.TEXT,createdAt:C.DataTypes.DATE,updatedAt:C.DataTypes.DATE,createdBy:{type:C.DataTypes.STRING,allowNull:!1},updatedBy:{type:C.DataTypes.STRING,allowNull:!1},slug:C.DataTypes.STRING,icon:C.DataTypes.STRING,pinnedAt:C.DataTypes.DATE,useAllResources:C.DataTypes.BOOLEAN,relatedBlocklets:{type:C.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){return this.getDataValue("relatedBlocklets")||{}},set(t){this.setDataValue("relatedBlocklets",JSON.stringify(t||{}))}}},{sequelize:Z,paranoid:!0});$.hasMany(pe,{foreignKey:"projectId",as:"components"});const Gt=async(t,{componentId:n})=>{const e=`@tailwind components;
|
|
2
|
+
@tailwind utilities;
|
|
3
|
+
`,s=`.CustomComponent_${n}`;return(await kt.default([Rt.default({content:[{raw:t,extension:"tsx"}]}),Dt.default({overrideBrowserslist:["> 1%","last 2 versions"],stats:{}}),r=>{r.walkRules(l=>{l.selectors=l.selectors.map(a=>a.replace(/\.(.+)/g,`${s}.$1,${s} .$1`))})}]).process(e)).css},Ht=async(t,{componentId:n})=>{const e=await Gt(t,{componentId:n});return`export const __PagesKit_CSS__ = ${JSON.stringify(e)};
|
|
4
|
+
|
|
5
|
+
${t}
|
|
6
|
+
`},Re=B.memoize(async(t,n)=>{let e=k.default.transpileModule(t,{compilerOptions:{jsx:k.default.JsxEmit.React,target:k.default.ScriptTarget.ES2016,module:k.default.ModuleKind.ESNext},transformers:{before:[ge.createBuiltinModuleTransformer(k.default)]}}).outputText;if(n.tailwind&&(e=await Ht(e,{componentId:n.componentId})),n.module===se.PreloadComponentScriptModule.ESM)return e;const s=k.default.transpileModule(e,{compilerOptions:{jsx:k.default.JsxEmit.React,target:k.default.ScriptTarget.ES2016,module:k.default.ModuleKind.CommonJS,moduleResolution:k.default.ModuleResolutionKind.Node16}}).outputText;return n.module===se.PreloadComponentScriptModule.CJS?s:Kt(n.moduleName,s)},{keyGenerator:(t,n)=>{const e=ce.createHash("md5").update(t).digest("hex"),s={...n,componentId:n.componentId,module:n.module,...n.module!==se.PreloadComponentScriptModule.ESM?{moduleName:n.moduleName}:{},tailwind:n.tailwind};return JSON.stringify(["transpileModule",e,s])},lruOptions:{max:100,ttl:1e3*60*60}}),Jt=async(t,n)=>{var l,a;const s=(a=(l=(await xt.build({entryPoints:["index.tsx"],external:Object.keys(ut.BuiltinModules),format:"esm",target:"esnext",bundle:!0,write:!1,plugins:[{name:"vfs",setup(i){let c=null;i.onResolve({filter:/.*/},p=>p.path==="index.tsx"?{path:"index.tsx",namespace:"vfs"}:p.path==="./component"?{path:"component.tsx",namespace:"vfs"}:ge.isRelativeModule(p.path)?{path:p.path,namespace:"vfs"}:null),i.onLoad({filter:/.*/,namespace:"vfs"},async p=>{var u;if(p.path==="index.tsx")return{contents:`export { ${n} } from './component'`,loader:"tsx"};if(p.path==="component.tsx")return{contents:t,loader:"tsx"};if(ge.isRelativeModule(p.path)){c||(c=await ve({ensureLoaded:!1}));const f=p.path.split("/").pop();if((u=c==null?void 0:c.chunks)!=null&&u[f])return{contents:E.readFileSync(c.chunks[f],"utf-8"),loader:"js"};const h=D.joinURL("chunks",f),{data:y}=await le.call({name:"pages-kit",method:"GET",path:h});return{contents:y,loader:"js"}}return null})}}]})).outputFiles)==null?void 0:l[0])==null?void 0:a.contents;if(!s)throw new Error("Failed to build server code");const o=vt.default.from(s).toString();return k.default.transpileModule(o,{compilerOptions:{module:k.default.ModuleKind.ESNext,target:k.default.ScriptTarget.ES2020}}).outputText},qe=B.memoize(async(t,n)=>{const e=await Jt(t,n);return new RegExp(`export\\s+\\{\\s+${n}\\s+\\}`,"m").test(e)?e:void 0},{keyGenerator:(t,n)=>{const e=ce.createHash("md5").update(t).digest("hex");return JSON.stringify(["extractExportValueSchema",e,n])},lruOptions:{max:100,ttl:1e3*60*60}}),Kt=(t,n)=>{const e=/\bawait\b/.test(n);return`// GENERATED FILE. DO NOT EDIT.
|
|
7
|
+
var ${t} = ${e?"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
|
+
${n}
|
|
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
|
+
`},z=new Oe.LRUCache({max:100}),$e=60*60,ye=60;function Be(t){I.info("clear preload components cache",{cacheKey:t}),z.delete(t)}function Ve(t){for(const n of z.keys())n.includes(t)&&(I.info("clear preload components cache",{cacheKey:n}),Be(n))}function Ge({mode:t,instanceId:n,componentId:e,locale:s}){return["getPreloadComponents",t,n,e,s].join("-")}async function zt({mode:t,req:n,state:e,locale:s,instances:o,module:r}){const{supportedLocales:l,config:{defaultLocale:a}}=e;if(!a)return null;const i=(await Promise.all(o.map(async h=>{try{const y=Ge({mode:t,instanceId:h.id,componentId:h.componentId,locale:s});if(t!=="draft"&&h.useCache&&z.has(y))return I.info(`get preload component from cache: ${y}`),z.get(y);const P=W({state:e,componentId:h.componentId});if(!P)return null;const v=await He({req:n,state:e,componentId:P.id,locale:s,defaultLocale:a,properties:h.properties});if(!v)return null;const F={instanceId:h.id,preload:v};if(t!=="draft"&&h.useCache){let N=$e;h.cacheDuration&&(N=h.cacheDuration),I.info(`set preload component to cache(${N}s): ${y}`),z.set(y,F,{ttl:N*1e3})}return F}catch(y){return I.error("get preload component error",{instanceId:h.id,componentId:h.componentId},{error:y}),null}}))).filter(h=>!!h),c=Object.values(i.reduce((h,y)=>({...h,...y.preload.components}),{}));async function p(){const h=await Promise.all(c.map(async y=>{const P=oe.componentUMDName({componentId:y.component.id}),v=r===se.PreloadComponentScriptModule.ESM?{module:r,script:await Re(y.script,{componentId:y.component.id,module:r,tailwind:t!=="draft"})}:{module:r,script:await Re(y.script,{componentId:y.component.id,module:r,moduleName:P,tailwind:t!=="draft"}),moduleName:P};return[y.component.id,{component:y.component,script:v}]}));return Object.fromEntries(h)}const u=await p();return{config:{defaultLocale:a,supportedLocales:l},components:u,instances:i.map(h=>({id:h.instanceId,componentId:h.preload.component.id,locales:{[h.preload.locale]:{props:h.preload.props}}}))}}async function He({req:t,state:n,componentId:e,locale:s,defaultLocale:o,properties:r}){const{supportedLocales:l}=n,a=W({state:n,componentId:e});if(!a)return null;const i=l.some(p=>p.locale===s)?s:o;if(!i)return null;const c=await Je({req:t,state:n,componentId:e,locale:i,defaultLocale:o,properties:r});return c?{component:a,...c}:null}const Yt=20;async function Je({req:t,depth:n=0,state:e,componentId:s,locale:o,defaultLocale:r,properties:l}){if(n>Yt)throw new RangeError("max component depth exceeded");const a=Wt({state:e,componentId:s,properties:l,locale:o});if(!a)return null;const{props:i}=a,c={locale:o||r,components:{[a.component.id]:{component:a.component,script:a.script}},props:{...i}};try{const p=await Xt({...a,req:t});p!=null&&p.props&&Object.assign(c.props,p.props)}catch(p){I.error("preload data at server side error",{componentId:s,name:a.component.name},{error:p})}return await Promise.all(Object.entries(i).map(async([p,u])=>{if((u==null?void 0:u.type)===oe.RenderNestedComponent){const f=await Je({req:t,depth:n+1,state:e,componentId:u.componentId,locale:o,defaultLocale:r,properties:u.properties});f&&(Object.assign(c.components,f.components),Object.assign(c.props,{[p]:{type:oe.RenderNestedComponent,componentId:u.componentId,props:f.props}}))}})),c}function Wt({state:t,componentId:n,locale:e,properties:s}){const o=W({state:t,componentId:n});if(!o)return null;const r=oe.mergeComponent({componentId:n,getComponent:l=>W({state:t,componentId:l}),locale:e,defaultLocale:t.config.defaultLocale,properties:s});return r?{component:o,script:r.script,props:{locale:e,...r.properties}}:null}function W({state:t,componentId:n}){var e,s,o;return((e=t.components[n])==null?void 0:e.data)??((o=(s=t.resources.components)==null?void 0:s[n])==null?void 0:o.component)}function Qt({state:t,name:n}){var s,o;const e=n.toLowerCase();return((s=Object.values(t.components).find(r=>{var l;return((l=r.data.name)==null?void 0:l.toLowerCase())===e}))==null?void 0:s.data)??((o=t.resources.components&&Object.values(t.resources.components).find(r=>{var l;return((l=r.component.name)==null?void 0:l.toLowerCase())===e}))==null?void 0:o.component)}async function Xt({component:t,script:n,props:e,req:s}){const o=await qe(n,"getServerSideProps");if(!o)return null;const r=new Promise((a,i)=>{setTimeout(()=>{i(new Error("getServerSideProps timeout in promise race"))},ye*1e3)});return await Promise.race([r,B.Sandbox.callFunction({code:`${o}
|
|
33
|
+
|
|
34
|
+
export async function getServerSidePropsWrapper(props) {
|
|
35
|
+
const { location, fetch } = props;
|
|
36
|
+
// 使用局部变量而不是全局变量
|
|
37
|
+
const originalLocation = typeof window !== 'undefined' ? window.location : undefined;
|
|
38
|
+
const originalFetch = globalThis.fetch;
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
globalThis.location = location;
|
|
42
|
+
globalThis.fetch = fetch;
|
|
43
|
+
return await getServerSideProps(props);
|
|
44
|
+
} finally {
|
|
45
|
+
// 清理全局状态
|
|
46
|
+
if (originalLocation) globalThis.location = originalLocation;
|
|
47
|
+
if (originalFetch) globalThis.fetch = originalFetch;
|
|
48
|
+
}
|
|
49
|
+
}`,filename:`${t.name||t.id}.js`,moduleLoader:a=>{if(a==="@blocklet/pages-kit/builtin/utils")return`const { joinURL, withQuery, getQuery, getComponentMountPoint } = globalThis
|
|
50
|
+
export { joinURL, withQuery, getQuery, getComponentMountPoint }
|
|
51
|
+
`;if(a==="@blocklet/pages-kit/builtin/dayjs")return B.BuiltinModules.dayjs},global:{console:{log:(...a)=>{I.info(...a)},warn:(...a)=>{I.warn(...a)},error:(...a)=>{I.error(...a)}},getComponentMountPoint:it.getComponentMountPoint,joinURL:D.joinURL,withQuery:D.withQuery,getQuery:D.getQuery},functionName:"getServerSidePropsWrapper",args:[{location:{href:D.joinURL(D.withHttps(s.hostname),s.originalUrl)},fetch:(a,{...i}={})=>{const c=typeof a=="string"&&a.startsWith("/")?D.joinURL(w.default.env.appUrl,a):a;if(typeof c=="string"&&D.parseURL(c).host===D.parseURL(w.default.env.appUrl).host){const p=s.get("cookie");if(p){const u=new Fe.Headers(i.headers);u.set("cookie",p),i.headers=u}}return At.default(c,{...i,timeout:ye*1e3}).then(p=>({ok:p.ok,status:p.status,statusText:p.statusText,headers:Object.fromEntries(p.headers.entries()),json:()=>p.json()}))},props:e}]})])}const Ke=B.memoize(async(t,n,e)=>{const s=await qe(t,n);if(s)try{return await B.Sandbox.callFunction({code:`
|
|
52
|
+
${s}
|
|
53
|
+
|
|
54
|
+
export function get${n}SchemaWrapper() {
|
|
55
|
+
return ${n};
|
|
56
|
+
}
|
|
57
|
+
`,filename:`${e}.js`,functionName:`get${n}SchemaWrapper`})}catch(o){return I.error(`获取 ${n} 失败`,{componentId:e,error:o}),null}return null},{keyGenerator:(t,n,e)=>{const s=ce.createHash("md5").update(t).digest("hex");return JSON.stringify(["getExportSchemaValueFromCode",s,n,e])},lruOptions:{max:100,ttl:1e3*60*60}}),Zt="z8iZiDFg3vkkrPwsiba1TLXy3H9XHzFERsP8o",Se="page",we="trigger-reload-project-resource",je=Zt,es="z2qa7rr3eUyVnWp2PCxEVARuUfLFh6cE5V2xV",{uploadToMediaKit:ts}=require("@blocklet/uploader-server"),Ee=Et.customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789",16),Ce=/^\w+(\w|-|\.)+\w+\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm)$/,Y=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/i,Ne=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/gi,ss=1e4,ns=3e4,te=0,fe=1,os=0,rs=1,be=w.default,J=g.join(re.default.env.BLOCKLET_DATA_DIR,"site-state"),as=["production","draft"],is=["production"];function ze(t){return(t==null?void 0:t.replace(/\//g,"|"))||""}function cs(){var e;const t=be.env.languages.map(s=>({locale:s.code,name:s.name})),n=(e=t[0])==null?void 0:e.locale;return{pageIds:[],pages:{},components:{},supportedLocales:t,config:{defaultLocale:n},resources:{}}}const q=class q extends V.Doc{constructor(e){super();A(this,"states",{});A(this,"syncedStore");A(this,"conns",new Map);A(this,"awareness");A(this,"awarenessChangeHandler",({added:e,updated:s,removed:o},r)=>{const l=e.concat(s,o);if(r!==null){const c=this.conns.get(r);c&&(e.forEach(p=>{c.add(p)}),o.forEach(p=>{c.delete(p)}))}const a=_.createEncoder();_.writeVarUint(a,fe),_.writeVarUint8Array(a,H.encodeAwarenessUpdate(this.awareness,l));const i=_.toUint8Array(a);this.conns.forEach((c,p)=>this.send(p,i))});A(this,"updateHandler",e=>{const s=_.createEncoder();_.writeVarUint(s,te),ue.writeUpdate(s,e);const o=_.toUint8Array(s);this.conns.forEach((r,l)=>this.send(l,o))});A(this,"ensureDataStructure",()=>{var l;const{supportedLocales:e,pages:s,pageIds:o,config:r}=this.syncedStore;{const a=new Set(Object.keys(s));let i=0;for(;i<o.length;){const c=o[i];a.has(c)?(a.delete(c),i++):o.splice(i,1)}}e.splice(0,e.length),e.push(...be.env.languages.map(a=>({locale:a.code,name:a.name}))),r.defaultLocale=(l=e[0])==null?void 0:l.locale;{let a=0;const i=new Set;for(;a<e.length;){const{locale:c}=e[a];i.has(c)?e.splice(a,1):(a++,i.add(c))}}});A(this,"send",(e,s)=>{e.readyState!==os&&e.readyState!==rs&&this.closeConn(e);try{e.send(s,o=>{o&&this.closeConn(e)})}catch{this.closeConn(e)}});A(this,"closeConn",e=>{if(e.removeAllListeners(),this.conns.has(e)){const s=this.conns.get(e);this.conns.delete(e),s&&H.removeAwarenessStates(this.awareness,Array.from(s),null)}e.close()});A(this,"autoSave",L.debounce(()=>{E.mkdirSync(g.dirname(this.draftYjsFilePath),{recursive:!0}),E.writeFileSync(this.draftYjsFilePath,V.encodeStateAsUpdate(this))},ss));A(this,"save",({flush:e=!1}={})=>{this.autoSave(),e&&this.autoSave.flush()});A(this,"publish",async({mode:e,pages:s})=>{const o=await this.getState("draft"),r=await this.getState("production");await Te(o,r,{pages:s,pageMergeMode:"replace",deletePages:!0,publishMode:e}),r.config.publishedAt=new Date().getTime();for(const l of s||Object.keys(this.syncedStore.pages))this.syncedStore.pages[l]&&(this.syncedStore.pages[l].publishedAt=new Date().toISOString());await this.setState(e,r)});A(this,"mergeState",async(e,s)=>{var a,i,c;const o=JSON.parse(JSON.stringify(s));(a=e.config).fontFamily??(a.fontFamily={});const r=(i=o.config)==null?void 0:i.fontFamily,l=(c=e.config)==null?void 0:c.fontFamily;e.config.fontFamily.title=(r==null?void 0:r.title)||(l==null?void 0:l.title),e.config.fontFamily.description=(r==null?void 0:r.description)||(l==null?void 0:l.description),await new Promise((p,u)=>{this.transact(async()=>{try{const f=await Te(e,s);p(f)}catch(f){u(f)}})})});A(this,"addConnection",e=>{if(this.conns.has(e))return;e.binaryType="arraybuffer",this.conns.set(e,new Set),e.on("message",r=>this.messageListener(e,new Uint8Array(r)));let s=!0;const o=setInterval(()=>{if(!s)this.conns.has(e)&&this.closeConn(e),clearInterval(o);else if(this.conns.has(e)){s=!1;try{e.ping()}catch{this.closeConn(e),clearInterval(o)}}},ns);e.on("close",()=>{this.closeConn(e),clearInterval(o)}),e.on("pong",()=>{s=!0});{const r=_.createEncoder();_.writeVarUint(r,te),ue.writeSyncStep1(r,this),this.send(e,_.toUint8Array(r));const l=this.awareness.getStates();if(l.size>0){const a=_.createEncoder();_.writeVarUint(a,fe),_.writeVarUint8Array(a,H.encodeAwarenessUpdate(this.awareness,Array.from(l.keys()))),this.send(e,_.toUint8Array(a))}}});A(this,"messageListener",(e,s)=>{try{const o=_.createEncoder(),r=de.createDecoder(s),l=de.readVarUint(r);switch(l){case te:_.writeVarUint(o,te),ue.readSyncMessage(r,o,this,null),_.length(o)>1&&(this.ensureDataStructure(),this.send(e,_.toUint8Array(o)));break;case fe:{H.applyAwarenessUpdate(this.awareness,de.readVarUint8Array(r),e);break}default:I.warn(`Unsupported messageType ${l}`)}}catch(o){I.error(o)}this.save()});this.options=e,E.existsSync(this.draftYjsFilePath)&&V.applyUpdate(this,E.readFileSync(this.draftYjsFilePath)),this.syncedStore=yt.reactive(ee.syncedStore({pages:{},pageIds:[],components:{},supportedLocales:[],config:{},resources:{}},this)),this.initObserver(),this.on("update",this.updateHandler),this.awareness=new H.Awareness(this),this.awareness.on("update",this.awarenessChangeHandler),this.ensureDataStructure()}static safeDeleteProjectStateDir(e){if(!e)throw new Error("Should provide project context");try{const s=g.join(J,e),o=g.join(J,`@del-${e}`);E.renameSync(s,o)}catch(s){I.error("Failed to safe delete project state dir:",s)}}static get projectIds(){return he.globSync("*/",{cwd:J,ignore:["@del-*","@tmp-*",".*","staging","production","@backup-*"]})}static get allShared(){return this.projectIds.map(e=>q.shared(e))}static shared(e){if(!e)throw new Error("Should provide project context");let s=this.sharedInstances.get(e);return s||(s=new q({path:g.join(J,e)}),this.sharedInstances.set(e,s),s)}destroy(){this.conns.forEach((e,s)=>this.closeConn(s)),this.awareness.destroy(),super.destroy()}initObserver(){const e=o=>{o.observeDeep(r=>{r.some(l=>l.changes.keys.has("updatedAt")||l.changes.keys.has("publishedAt"))||o.set("updatedAt",new Date().toISOString())})};this.syncedStore.pages&&Object.keys(this.syncedStore.pages).forEach(o=>{const r=ee.getYjsValue(this.syncedStore.pages[o]);r&&r instanceof V.Map&&e(r)});const s=ee.getYjsValue(this.syncedStore.pages);s&&s instanceof V.Map&&s.observe(o=>{o.changes.keys.forEach((r,l)=>{if(r.action==="add"){const a=ee.getYjsValue(this.syncedStore.pages[l]);a&&a instanceof V.Map&&e(a)}})})}get draftYjsFilePath(){return g.join(this.options.path,"draft.yjs")}async getState(e){var s,o,r,l;if(e==="draft")return JSON.parse(JSON.stringify(this.syncedStore));if(!this.states[e]&&(this.states[e]=await Ie(this.getPublishDir(e),{includeResources:!0})??cs(),!((o=(s=this.states[e])==null?void 0:s.config)!=null&&o.defaultLocale))){(r=this.states[e]).config??(r.config={});const a=be.env.languages.map(i=>({locale:i.code,name:i.name}));this.states[e].config.defaultLocale=(l=a[0])==null?void 0:l.locale}return{...this.states[e],resources:await ve().then(async a=>{var u,f,h,y;const{pages:i,components:c}=L.pick(a,"pages","components");let p=c;if((f=(u=this.states[e])==null?void 0:u.resources)!=null&&f.components)p={...(y=(h=this.states[e])==null?void 0:h.resources)==null?void 0:y.components};else{const P=g.basename(this.options.path),v=await $.findByPk(P);if(v!=null&&v.useAllResources)p=c;else{const N=(await pe.findAll({where:{projectId:P}})).map(T=>T.componentId);p=Object.fromEntries(Object.entries(c||{}).filter(([T])=>N.includes(T)))}}return{pages:i,components:p}}).catch(()=>({}))}}async setState(e,s){const o=await Qe(s,{exportAssets:!1,includeResources:!0}),r=this.getPublishDir(e);E.mkdirSync(g.dirname(r),{recursive:!0}),E.rmSync(r,{force:!0,recursive:!0}),E.renameSync(o,r),this.states[e]=s}getPublishDir(e){return g.join(this.options.path,e)}static async pageUrlMap(e){const{projectIds:s}=this,o={};for(const r of s){const l=await $.findByPk(r);if(!l)continue;const a=await q.shared(r).getState(e),i=L.union(w.default.env.languages.map(c=>c.code),a.supportedLocales.map(c=>c.locale));for(const c of a.pageIds){const p=a.pages[c];if(!p||e==="production"&&!p.isPublic)continue;const u=p.slug,f=l.slug||r,h={projectId:r,projectSlug:f,pageSlug:u,pageId:c,defaultLocale:i==null?void 0:i[0],locales:i,publishedAt:a.config.publishedAt,isPublic:p.isPublic,isTemplate:p.isTemplate};f&&(o[D.joinURL("/",f,u)]={...h,shouldRedirect:!0,mainPage:!0}),o[D.joinURL("/",r,u)]={...h,shouldRedirect:!0,mainPage:!0};for(const y of i){const P={...h,locale:y};o[D.joinURL("/",y,r,u)]=P,f&&(o[D.joinURL("/",y,f,u)]=P)}}}return o}};A(q,"INSTANCE_TTL",30*60*1e3),A(q,"sharedInstances",new Oe.LRUCache({max:100,ttl:q.INSTANCE_TTL,dispose:e=>{e.destroy()}}));let Q=q;function Ye(){return E.mkdtempSync(g.join(w.default.env.dataDir,"tmp-"))}function ae(t,n,e=[]){return Array.isArray(t)?t.flatMap((s,o)=>ae(s,n,[...e,o])):typeof t=="object"?t===null?[]:Object.entries(t).flatMap(([s,o])=>ae(o,n,[...e,s])):n(t)?[e]:[]}function M(t){return t.filter(n=>n!=null)}async function ls(t,n,e){if(!t||!E.existsSync(t)||!E.lstatSync(t).isFile())return null;let s=e[t];return s||(s=(async()=>(await ts({filePath:t,fileName:n})).data.filename)(),e[t]=s),s}const ps=async(t,n)=>{const e=g.basename(t),s=await le.call({name:je,path:D.joinURL("/uploads",e),responseType:"stream",method:"GET"});if(s.status>=200&&s.status<400){const o=E.createWriteStream(n);await Tt.pipeline(s.data,o)}else throw new Error(`download asset failed ${s.status}`)},us=async(t,n)=>{await Promise.all(t.map(async e=>{try{await ps(e,g.join(n,g.basename(e)))}catch(s){I.error(`Failed to export assets: ${e}, ${s}`)}}))};function We(t){return Ce.test(t)?[t]:Y.test(t)?(Ne.lastIndex=0,Array.from(t.matchAll(Ne)).map(e=>e[1]).filter(e=>!!e)):[]}async function me(t,n,e){const{getFilename:s,exportAssets:o}=e,r=g.join(n,s(t));if(E.mkdirSync(g.dirname(r),{recursive:!0}),E.writeFileSync(r,K.stringify(t)),o){const a=ae(t,i=>typeof i=="string"&&(Ce.test(i)||Y.test(i))).map(i=>{const c=L.get(t,i);return We(c)}).flat().filter(Boolean);await us(a,g.dirname(r))}}const Le=new Oe.LRUCache({max:1e3,ttl:30*24*60*60*1e3});async function Ue(t,n,e){var a;const s=ae(t,i=>typeof i=="string"&&(Ce.test(i)||Y.test(i))),o=Nt.default(2),r=s.map(i=>o(async()=>{try{const c=L.get(t,i),p=We(c);for(const u of p){const f=g.basename(u),h=e.getFilePath(u,i),y=h?`${h}:${f}`:f,P=Le.get(y);if(P){Y.test(c)||L.set(t,i,P);return}const v=await ls(h,f,n);v&&(Y.test(c)||L.set(t,i,v),Le.set(y,v))}}catch(c){I.error(`Failed to process upload for path ${i.join(".")}:`,c.message||c.reason)}})),l=await Promise.allSettled(r);(a=e.onFinish)==null||a.call(e,l)}async function Qe(t,{exportAssets:n,pageIds:e="all",componentIds:s="all",rawConfig:o,includeResources:r=!1}={}){var F,N,S,T,O,j;const l=e==="all"?t.pageIds:e,a=ds({state:t,pageIds:l,componentIds:s==="all"?Object.keys(t.components):s}),i=(m,d)=>{var b;return{id:m.id,name:m.name,isTemplateSection:m.isTemplateSection??!1,templateDescription:m.templateDescription,component:m.component,config:m.config,visibility:m.visibility,properties:((b=m.locales)==null?void 0:b[d])??{}}},c=(m,d)=>{var b;return{id:m.id,createdAt:m.createdAt,updatedAt:m.updatedAt,publishedAt:m.publishedAt,isPublic:m.isPublic??!0,isTemplate:m.isTemplate??!1,meta:((b=m.locales)==null?void 0:b[d])??{},sections:M(m.sectionIds.map(R=>{const U=m.sections[R];return U&&i(U,d)}))}},p=M(t.supportedLocales.map(m=>m.locale).flatMap(m=>l.map(d=>{const b=t.pages[d];return b&&{locale:m,slug:b.slug,page:c(b,m)}}))),u=Ye(),f=g.join(u,"pages");E.mkdirSync(f,{recursive:!0});const h=g.join(u,"components");E.mkdirSync(h,{recursive:!0});for(const{locale:m,slug:d,page:b}of p)await me(b,f,{getFilename:()=>`${ze(d)||"index"}.${m}.yml`,exportAssets:n});for(const m of a){const d=(F=t.components[m])==null?void 0:F.data;d&&await me(d,h,{getFilename:b=>`${b.name||"unnamed"}.${b.id}.yml`,exportAssets:n})}const y=g.join(u,".blocklet/pages/pages.config.yml");E.mkdirSync(g.dirname(y),{recursive:!0});const P={pages:M(l.map(m=>{const d=t.pages[m];return d&&{id:m,slug:d.slug}})),components:M(a.map(m=>{var b;const d=(b=t.components[m])==null?void 0:b.data;return d&&{id:m,name:d.name}})),...r?{resources:{components:M(Object.keys(((N=t.resources)==null?void 0:N.components)||{}).map(m=>{var d,b,R,U;return{id:m,name:(U=(R=(b=(d=t.resources)==null?void 0:d.components)==null?void 0:b[m])==null?void 0:R.component)==null?void 0:U.name}}))}}:{},supportedLocales:t.supportedLocales,config:t.config};E.writeFileSync(y,K.stringify(P));const v=g.join(u,"config.source.json");if(o&&E.writeFileSync(v,JSON.stringify(o)),r){const m=g.join(u,"resources"),d=g.join(m,"components");E.mkdirSync(d,{recursive:!0});for(const b of Object.keys(((S=t==null?void 0:t.resources)==null?void 0:S.components)??{})){const R=(j=(O=(T=t.resources)==null?void 0:T.components)==null?void 0:O[b])==null?void 0:j.component;R&&await me(R,d,{getFilename:U=>`${U.name||"unnamed"}.${U.id}.yml`,exportAssets:n})}}return u}async function Ie(t,{importAssets:n,includeResources:e}={}){var r,l,a;if(!E.existsSync(t))return null;let s,o=!1;try{E.lstatSync(t).isDirectory()?s=t:/\.(tgz|gz|tar)$/.test(t)&&(o=!0,s=Ye(),await Ot.x({file:t,C:s}));const i=he.globSync("**/.blocklet/pages/pages.config.yml",{cwd:s,absolute:!0}).at(0),c=i&&g.join(g.dirname(i),"../../pages"),p=i&&g.join(g.dirname(i),"../../components"),u=i&&g.join(g.dirname(i),"../../chunks");if(!i)return null;const f=K.parse(E.readFileSync(i).toString()),h=(S,T,O)=>{let j=g.join(S,`${T}${O?`.${O}`:""}.yml`);return(!E.existsSync(j)||!E.lstatSync(j).isFile())&&(j=g.join(S,T,`index${O?`.${O}`:""}.yml`),!E.existsSync(j)||!E.lstatSync(j))?null:K.parse(E.readFileSync(j).toString())},y=(S,T)=>{try{const O=he.globSync(`*.${T}.yml`,{cwd:S,absolute:!0})[0];return O?K.parse(E.readFileSync(O).toString()):null}catch(O){I.error("parse component error",O)}return null},P=M(f.pages.map(({slug:S})=>{var m;const T=M(f.supportedLocales.map(({locale:d})=>{const b=c?h(c,ze(S),d):void 0;if(b)return{locale:d,page:b};const R=c?h(c,S,d):void 0;return R&&{locale:d,page:R}})),O=(m=T[0])==null?void 0:m.page;if(!O)return null;const j=O.sections.map(d=>{const b=d.id||Ee();return{id:b,component:d.component,config:d.config,name:d.name,isTemplateSection:d.isTemplateSection??!1,templateDescription:d.templateDescription,visibility:d.visibility,locales:Object.fromEntries(M(T.map(({locale:R,page:U})=>{const De=U.sections.find(st=>st.id===b);return De&&[R,De.properties]})))}});return{id:O.id||Ee(),createdAt:O.createdAt,updatedAt:O.updatedAt,publishedAt:O.publishedAt,isPublic:O.isPublic??!0,isTemplate:O.isTemplate??!1,slug:S,sections:Object.fromEntries(j.map(d=>[d.id,d])),sectionIds:j.map(d=>d.id),locales:Object.fromEntries(T.map(({locale:d,page:b})=>[d,b.meta]))}})),v=p?M(((r=f.components)==null?void 0:r.map(({id:S})=>y(p,S)))??[]):[];if(n){const S=(...T)=>{I.info(`[${o?g.basename(t):g.basename(g.join(t,"../../../../"))}] importAssets:`,...T)};try{S("wait image-bin api ready"),await Ut.default({resources:[`${le.getComponentWebEndpoint(Ft)}/api/sdk/uploads`],validateStatus:j=>j>=200&&j<=500}),S("image-bin api is ready");const T={},O={};S("start to upload assets"),await Promise.allSettled([Ue(v,T,{getFilePath:j=>p&&g.join(p,j),onFinish:j=>{S(`upload ${j.length} component assets`)}}),Ue(P,O,{getFilePath:(j,m)=>{const d=L.get(P,m.slice(0,1));return c&&g.join(c,g.dirname(d.slug),j)},onFinish:j=>{S(`upload ${j.length} page assets`)}})]),S("upload assets done"),xe.default.gc&&xe.default.gc()}catch(T){S("Error during asset import:",T)}}const F={};if(e){const S=i&&g.join(g.dirname(i),"../../resources/components"),T=M(((a=(l=f.resources)==null?void 0:l.components)==null?void 0:a.map(({id:O})=>y(S,O)))??[]);T.length>0&&(F.components=Object.fromEntries(T.map((O,j)=>[O.id,{index:j,component:O}])))}const N={};if(u&&E.existsSync(u)){const S=E.readdirSync(u);for(const T of S)N[T]=g.join(u,T)}return{supportedLocales:f.supportedLocales,pageIds:P.map(S=>S.id),components:Object.fromEntries(v.map((S,T)=>[S.id,{index:T,data:S}])),pages:Object.fromEntries(P.map(S=>[S.id,S])),config:f.config||{},resources:F,chunks:N}}finally{o&&s&&E.rmSync(s,{force:!0,recursive:!0})}}async function Te(t,n,{pages:e,pageMergeMode:s="byUpdateTime",deletePages:o=!1,publishMode:r=void 0}={}){try{r&&Ve(r)}catch(p){I.error("clear preload page cache error",{error:p})}const{pageIds:l,pages:a,supportedLocales:i}=t;for(const p of e??l){const u=a[p];if(!u){const f=n.pageIds.indexOf(p);f!==-1&&o&&(n.pageIds.splice(f,1),delete n.pages[p]);continue}if(n.pageIds.includes(u.id)){if(s==="replace")n.pages[u.id]=u;else if(s==="byUpdateTime"){const f=n.pages[u.id];(!f||u.updatedAt&&u.updatedAt>f.updatedAt)&&(n.pages[u.id]=u)}}else n.pageIds.push(u.id),n.pages[u.id]=u}if(o&&!e)for(const p of n.pageIds)t.pageIds.includes(p)||delete n.pages[p],n.pageIds=[...n.pageIds].filter(u=>t.pageIds.includes(u));if(n.supportedLocales.splice(0,n.supportedLocales.length),n.supportedLocales.push(...L.cloneDeep(i)),o)for(const p of Object.keys(n.components))delete n.components[p];let c=JSON.parse(JSON.stringify(t.components));c=Object.fromEntries(await Promise.all(Object.entries(c).map(async([p,u])=>{const f=await Xe(u==null?void 0:u.data);return[p,{...u,data:f}]}))),Object.assign(n.components,c),Object.assign(n.config,JSON.parse(JSON.stringify(t.config))),n.resources.components=JSON.parse(JSON.stringify(t.resources.components||{}))}const Xe=B.memoize(async t=>{var n;if(!L.isEmpty(t==null?void 0:t.properties))return t;if(((n=t==null?void 0:t.renderer)==null?void 0:n.type)==="react-component"){const{script:e}=(t==null?void 0:t.renderer)||{};if(e)try{const s=await Ke(e,"PROPERTIES_SCHEMA",t.id);s&&s.length>0&&t&&(t.properties={},s.forEach((o,r)=>{t!=null&&t.properties&&(t.properties[o.id]={index:r,data:o})}))}catch(s){I.error("checkPropertiesFromCode error",{componentId:t.id,name:t.name},{error:s})}}return t},{keyGenerator:t=>{var l;const n=(t==null?void 0:t.id)||"",e=(t==null?void 0:t.name)||"",s=((l=t==null?void 0:t.renderer)==null?void 0:l.type)||"",o=(t==null?void 0:t.properties)||{},r=ce.createHash("md5").update(JSON.stringify(o)).digest("hex");return JSON.stringify(["checkPropertiesFromCode",n,e,s,r])},lruOptions:{max:100,ttl:1e3*60*60}});function ds({state:t,pageIds:n=[],componentIds:e=[]}){var l;const s=(a,i=new Set)=>(Array.isArray(a)&&a.forEach(c=>s(c,i)),a&&typeof a=="object"&&(typeof a.componentId=="string"&&i.add(a.componentId),Object.values(a).forEach(c=>s(c,i))),i),o=new Set(e);for(const a of n){const i=t.pages[a];s(i,o)}const r=[...o];for(;r.length;){const a=r.shift();o.has(a)||o.add(a);const i=(l=t.components[a])==null?void 0:l.data;if(i)for(const c of s(i))o.has(c)||r.push(c)}return[...o]}let ie,G,Pe,Ae,_e;function Ze(){return ie=(async()=>{const t=le.getResources({types:[{did:je,type:Se},{did:es,type:Se}]});G=(await Promise.all(t.map(async e=>{const s=e.path?await Ie(e.path,{importAssets:!1}):void 0;return s?{blockletId:e.did,state:s,blockletTitle:e.title}:void 0}))).filter(e=>!!e),Pe=G.reduce((e,s)=>Object.assign(e,Object.fromEntries(Object.values(s.state.pages).map(o=>o?[o==null?void 0:o.id,{page:o,blockletId:s.blockletId}]:[]))),{});const n=G.reduce((e,s)=>Object.assign(e,Object.fromEntries(Object.values(s.state.components).map(o=>[o.data.id,{blockletId:s.blockletId,component:o.data}]))),{});Ae=Object.fromEntries(await Promise.all(Object.entries(n).map(async([e,s])=>{const o=await Xe(s.component);return[e,{...s,component:o}]}))),_e=G.reduce((e,s)=>Object.assign(e,s.state.chunks),{})})(),ie}function et(t){const n=L.debounce(async()=>{await Ze().catch(e=>{I.error("load resource states error",{error:e})}),await(t==null?void 0:t({states:G,pages:Pe,components:Ae,chunks:_e}))},3e3,{leading:!1,trailing:!0});return n(),w.default.events.on(w.default.Events.componentAdded,n),w.default.events.on(w.default.Events.componentRemoved,n),w.default.events.on(w.default.Events.componentStarted,n),w.default.events.on(w.default.Events.componentStopped,n),w.default.events.on(w.default.Events.componentUpdated,n),w.default.events.on(we,n),()=>{w.default.events.off(w.default.Events.componentAdded,n),w.default.events.off(w.default.Events.componentRemoved,n),w.default.events.off(w.default.Events.componentStarted,n),w.default.events.off(w.default.Events.componentStopped,n),w.default.events.off(w.default.Events.componentUpdated,n),w.default.events.off(we,n)}}const tt=Symbol.for("GLOBAL_RESOURCE_STATES_LISTENER_KEY"),ne=globalThis;var Me;(Me=ne[tt])==null||Me.call(ne);ne[tt]=et(async({pages:t,components:n})=>{const{projectIds:e}=Q;await Promise.all(e.map(async s=>{const o=Q.shared(s);o.syncedStore.resources.pages=t;const r=await $.findByPk(s);if(r!=null&&r.useAllResources)o.syncedStore.resources.components=n;else{const a=(await pe.findAll({where:{projectId:s}})).map(c=>c.componentId),i=Object.fromEntries(Object.entries(n||{}).filter(([c])=>a.includes(c)));o.syncedStore.resources.components=i}I.info(`update [${s}] resource states:`,{pages:Object.keys(o.syncedStore.resources.pages||{}).length,components:Object.keys(o.syncedStore.resources.components||{}).length})}))});async function fs(){I.info("trigger reload all project resource"),w.default.events.emit(we)}async function ve({ensureLoaded:t=!0}={}){return t&&(ie??(ie=Ze()),await ie),{states:G,pages:Pe,components:Ae,chunks:_e}}exports.COMPONENT_DID=je;exports.CUSTOM_COMPONENT_CACHE_DURATION_IN_SECONDS=$e;exports.GET_SERVER_SIDE_PROPS_TIMEOUT_IN_SECONDS=ye;exports.PUBLISH_MODES=is;exports.Project=$;exports.RESOURCE_TYPE=Se;exports.SITE_STATE_PATH=J;exports.STATE_MODES=as;exports.SiteState=Q;exports.clearPreloadComponentsCache=Be;exports.clearPreloadComponentsCacheByMode=Ve;exports.fromPackage=Ie;exports.getComponentFromState=W;exports.getComponentFromStateByName=Qt;exports.getExportSchemaValueFromCode=Ke;exports.getMultiTenantAllProjectAccessPassports=Bt;exports.getPreloadComponent=He;exports.getPreloadComponents=zt;exports.getPreloadComponentsCacheKey=Ge;exports.getResourceStates=ve;exports.initPackResourceStates=et;exports.isMultiTenant=$t;exports.logger=I;exports.mergeState=Te;exports.nextId=Ee;exports.toPackage=Qe;exports.triggerReloadAllProjectResource=fs;
|
package/lib/cjs/components.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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");require("crypto");const e=require("./_chunks/site-state-
|
|
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");require("crypto");const e=require("./_chunks/site-state-DdXLmutN.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/locales.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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:{addArrayItem:"Add Row",arrayEmpty:"No Row",subProperties:"Sub Properties",addSubProperty:"Add Sub Property",noSubProperties:"No Sub 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",templateDescription:"Card description, used to generate card content when using AIGNE to generate page content",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:{addArrayItem:"添加一行",arrayEmpty:"暂无行",subProperties:"子属性",addSubProperty:"添加子属性",noSubProperties:"暂无子属性",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:"模板动态卡片",templateDescription:"卡片描述,使用 AIGNE 生成页面内容时,会根据卡片描述生成卡片内容",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,4 +1,4 @@
|
|
|
1
|
-
"use strict";const J=require("vite-plugin-node-polyfills/shims/process"),k=require("./_chunks/site-state-
|
|
1
|
+
"use strict";const J=require("vite-plugin-node-polyfills/shims/process"),k=require("./_chunks/site-state-DdXLmutN.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"),R=require("@blocklet/sdk/lib/config"),Q=require("cheerio"),V=require("express"),I=require("fs"),X=require("mustache"),U=require("path"),j=require("ufo"),T=e=>e&&e.__esModule?e:{default:e};function Y(e){if(e&&e.__esModule)return e;const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const d=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(l,t,d.get?d:{enumerable:!0,get:()=>e[t]})}}return l.default=e,Object.freeze(l)}const q=T(J),a=T(R),D=Y(Q),Z=T(X),F=["/assets/"],x=()=>[!0,"true"].includes(a.default.env.preferences.allowCrawler);function B(){x()?S.initCronCrawlBlocklet({time:"30 30 */12 * * *",options:{}}):S.cancelCronCrawlBlocklet()}B();a.default.events.on(a.default.Events.envUpdate,B);function ee({app:e,viteDevServer:l,state:t}){let d;if(l){const r=I.readFileSync(U.resolve(q.default.cwd(),"./index.html"),"utf-8");e.use(async(b,$,y)=>{const v=b.originalUrl;d=await l.transformIndexHtml(v,r),y()})}else d=I.readFileSync(U.resolve(q.default.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const C=V.Router();C.use(S.initSEOMiddleware({autoReturnHtml:!1,allowCrawler:x})),C.get("/:path(*)?",async(r,b,$)=>{var L,M,O;if(F.some(c=>r.path.startsWith(c))){$();return}const y=performance.now(),v=()=>Math.round(performance.now()-y),H="production";let o,p,h=d;if(r.path.startsWith("/pages")){const c=r.params.lang,g=r.cookies.nf_lang,w=new Set([...a.default.env.languages.map(f=>f.code)]);let m=(c&&w.has(c)?c:void 0)||(w.has(g)?g:void 0)||[...w][0];if((!m||!((L=t.supportedLocales)!=null&&L.find(f=>f.locale===m)))&&(m=((O=(M=t.supportedLocales)==null?void 0:M[0])==null?void 0:O.locale)||""),m){const f=[];Object.values(t.pages).forEach(s=>{const P=Object.values((s==null?void 0:s.sections)??{}).filter(i=>{var _;return i.component==="custom-component"&&((_=i.config)==null?void 0:_.componentId)}).map(i=>{var _,A;return{id:i.id,componentId:i.config.componentId,useCache:i.config.useCache,cacheDuration:i.config.cacheDuration,properties:(A=(_=i.locales)==null?void 0:_[m])==null?void 0:A.properties}});f.push(...P)});const W=new Promise((s,P)=>{setTimeout(()=>{P(new Error("getPreloadComponents timeout in promise race, skip it"))},90*1e3)});try{await Promise.race([W,k.getPreloadComponents({mode:H,req:r,state:t,locale:m,instances:f,module:G.PreloadComponentScriptModule.UMD_FN}).then(s=>{s&&(p=z.injectPreloadComponents(s))})])}catch(s){k.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements"),k.logger.warn(s)}}}try{const c=(o==null?void 0:o.title)||a.default.env.appName,g=(o==null?void 0:o.description)||a.default.env.appDescription,w=j.withQuery(j.joinURL(a.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:c,description:g});h=Z.default.render(d,{ogTitle:c,ogDescription:g,ogImage:te(o==null?void 0:o.image)||w,pagesPublishedAt:(t==null?void 0:t.config.publishedAt)||new Date().getTime()})}catch{}const n=t==null?void 0:t.config.fontFamily,N=r.query.mode==="draft"||r.url.includes("preview"),u=D.load(h);u("head").find("#injected-head-elements").replaceWith(`
|
|
2
2
|
${o!=null&&o.backgroundColor?`<meta name="theme-color" content="${o.backgroundColor}" /><style>html,body,#app {background-color: ${o.backgroundColor} !important;}</style>`:""}
|
|
3
3
|
${n!=null&&n.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${n.title}&display=swap">`:""}
|
|
4
4
|
${n!=null&&n.description&&(n==null?void 0:n.description)!==(n==null?void 0:n.title)?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${n.description}&display=swap">`:""}
|
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-DdXLmutN.js"),M=require("async_hooks"),U=require("express"),F=require("fs"),J=require("joi"),O=require("lodash"),b=require("path"),X=require("@blocklet/sdk/lib/middlewares/auth"),W=require("@blocklet/sdk/lib/component"),E=t=>t&&t.__esModule?t:{default:t},p=E(F),I=E(J),k=E(b),v=E(X);new M.AsyncLocalStorage;const $=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){c.logger.error("Project middleware error:",u),e==null||e.status(500).json({error:"Internal server error"})}};function N(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 T(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 T(s,r):await N(s,r)}}async function G(t,e){(await p.default.promises.stat(t)).isDirectory()?await T(t,e):await N(t,e)}const D=(t,e,o)=>c.isMultiTenant()?v.default()(t,e,o):v.default({roles:["owner","admin","pagesEditor"]})(t,e,o),K=(t,e)=>{const o=W.getResourceExportDir({projectId:t,releaseId:e});return b.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},S=U.Router(),B="@page",q="@component",y=":",_="ALL",L="@project",C=({pageId:t,projectId:e})=>[B,e,t].join(y),Y=t=>{const[e,o,n]=t.split(y);if(e===B)return{pageId:n,projectId:o}},A=({componentId:t,projectId:e})=>[q,e,t].join(y),z=t=>{const[e,o,n]=t.split(y);if(e===q)return{componentId:n,projectId:o}},H=t=>[L,t].join(y),Q=t=>{const[e,o]=t.split(y);if(e===L)return o},V=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:H(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}=V(t.query.resourcesParams);if(o){t.params={...t.params,projectId:o},await $(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 Z=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 Z.validateAsync(t.body),r="production",a=[],u=[];for(const i of o){if(Q(i))continue;const{pageId:m,projectId:j}=Y(i)||{};if(m)m===_||m&&j&&a.push({pageId:m,projectId:j});else{const{componentId:l,projectId:d}=z(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=K(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 G(g,w),p.default.rmSync(g,{recursive:!0,force:!0})}c.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.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)`
|
|
1
|
+
"use strict";var Fe=Object.create;var ye=Object.defineProperty;var qe=Object.getOwnPropertyDescriptor;var Ve=Object.getOwnPropertyNames;var Ee=Object.getPrototypeOf,Ue=Object.prototype.hasOwnProperty;var We=(t,s,l,i)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of Ve(s))!Ue.call(t,a)&&a!==l&&ye(t,a,{get:()=>s[a],enumerable:!(i=qe(s,a))||i.enumerable});return t};var Ke=(t,s,l)=>(l=t!=null?Fe(Ee(t)):{},We(s||!t||!t.__esModule?ye(l,"default",{value:t,enumerable:!0}):l,t));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),O=require("./_chunks/state-CVPLn5Cq.js"),Me=require("@arcblock/ux/lib/Empty"),R=require("@blocklet/pages-kit/builtin/locale"),oe=require("@blocklet/code-editor"),Le=require("@mui/icons-material/AddRounded"),Je=require("@mui/icons-material/ArrowDownward"),He=require("@mui/icons-material/ArrowUpward"),Ye=require("@mui/icons-material/DeleteOutline"),r=require("@blocklet/pages-kit/builtin/mui/material"),$e=require("lodash/sortBy"),I=require("@blocklet/pages-kit/builtin/react"),ne=require("react-use"),Ge=require("@arcblock/ux/lib/Theme"),Qe=require("@emotion/css"),se=require("ahooks"),Xe=require("gradient-parser");require("lodash/without");const Ze=require("tinycolor2"),_=require("@mui/material/colors"),D=require("./uploader.js"),et=require("@iconify-icon/react"),tt=require("lodash/isEmpty"),rt=require("lodash/set"),st=require("yaml");require("lodash");const lt=require("@arcblock/ux/lib/Toast"),ee=require("@blocklet/pages-kit/components"),ce=require("@mui/base"),A=require("@mui/icons-material"),ge=require("@mui/material/styles"),K=require("@syncedstore/core"),it=require("lodash/assign"),ot=require("lodash/has"),nt=require("lodash/isNil"),ct=require("lodash/isObject"),at=require("lodash/keyBy"),ut=require("lodash/omit"),dt=require("lodash/pick"),pt=require("lodash/reduce"),N=require("material-ui-popup-state/hooks"),xt=require("react-error-boundary"),le=require("react-dnd"),T=t=>t&&t.__esModule?t:{default:t};function mt(t){if(t&&t.__esModule)return t;const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const l in t)if(l!=="default"){const i=Object.getOwnPropertyDescriptor(t,l);Object.defineProperty(s,l,i.get?i:{enumerable:!0,get:()=>t[l]})}}return s.default=t,Object.freeze(s)}const Q=T(Me),ft=T(Le),jt=T(Je),bt=T(He),ht=T(Ye),F=T($e),ve=T(Xe),yt=T(Ze),we=T(tt),Ie=T(rt),te=mt(st),ke=T(lt),gt=T(it),vt=T(ot),G=T(nt),kt=T(ct),St=T(at),Pt=T(ut),wt=T(dt),It=T(pt);function Ct({onClick:t,disabled:s,sx:l,...i}){return e.jsx(r.IconButton,{size:"small",color:"warning",variant:"outlined",disabled:s,onClick:t,...i,children:e.jsx(ht.default,{fontSize:"small"})})}function Bt({onClick:t,disabled:s,sx:l,...i}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...i,children:e.jsx(bt.default,{fontSize:"small"})})}function Tt({onClick:t,disabled:s,sx:l,...i}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...i,children:e.jsx(jt.default,{fontSize:"small"})})}function Ot({label:t,value:s,onChange:l,disabled:i=!1,itemLabel:a="",emptyHeight:b=40,property:d,renderItem:p,...k}){const{t:j,locale:v}=R.useLocaleContext(),h=ne.useUpdate(),o=I.useMemo(()=>Array.isArray(s)?s:[],[s]),x=I.useCallback(()=>{const f=[...o,""];l(f),h()},[o,l,h]),c=I.useCallback(()=>{if(!d||!d.subProperties)return x();const f={};F.default(Object.values(d.subProperties),"index").forEach(({data:B})=>{var V,E;if(!B.key)return;const z=((E=(V=B.locales)==null?void 0:V[v])==null?void 0:E.defaultValue)??"";f[B.key]=z});const C=[...o,f];l(C),h()},[o,l,h,d,v,x]),u=I.useCallback(f=>{try{const P=JSON.parse(f);Array.isArray(P)?l(P):console.error("JSON解析结果不是数组")}catch(P){console.error("JSON解析错误:",P)}},[l]),m=I.useCallback(f=>{const P=o.filter((C,B)=>B!==f);l(P),h()},[o,l,h]),S=I.useCallback(f=>{if(f<=0)return;const P=[...o],C=P[f];P[f]=P[f-1],P[f-1]=C,l(P),h()},[o,l,h]),n=I.useCallback(f=>{if(f>=o.length-1)return;const P=[...o],C=P[f];P[f]=P[f+1],P[f+1]=C,l(P),h()},[o,l,h]),y=I.useCallback((f,P)=>{const C=[...o];C[f]=P,l(C)},[o,l]),g=d&&d.subProperties&&Object.keys(d.subProperties).length>0,w=I.useMemo(()=>[{field:"index",headerName:"#",width:40,align:"center",renderCell:({index:f})=>e.jsx(r.Typography,{variant:"body1",sx:{bgcolor:"action.hover",borderRadius:"50%",width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",color:"text.secondary"},children:f+1})},{field:"content",headerName:"",renderCell:({row:f,index:P})=>p&&g?p({item:f,index:P,property:d,onChange:C=>y(P,C)}):e.jsx(r.TextField,{fullWidth:!0,size:"small",disabled:i,value:f,placeholder:a||`${j("item")} ${P+1}`,onChange:C=>y(P,C.target.value),...k})},{field:"actions",headerName:"",width:30,align:"center",renderCell:({index:f})=>e.jsxs(r.Stack,{direction:"column",spacing:.25,children:[e.jsx(Bt,{disabled:i||f===0,onClick:()=>S(f)}),e.jsx(Tt,{disabled:i||f===o.length-1,onClick:()=>n(f)}),e.jsx(Ct,{disabled:i,onClick:()=>m(f)})]})}],[p,g,d,y,a,j,i,k,m,S,n,o.length]);return g?e.jsxs(r.Stack,{width:"100%",gap:1,children:[t&&e.jsx(r.FormLabel,{children:t}),o.length>0?e.jsx(r.TableContainer,{component:r.Paper,variant:"outlined",sx:{borderRadius:1,mb:1},children:e.jsxs(r.Table,{size:"small",sx:{"& .MuiTableCell-root":{py:.25,px:1,whiteSpace:"nowrap"},"& .MuiTableCell-head":{backgroundColor:"action.hover",py:.25,px:1},borderCollapse:"collapse"},children:[e.jsx(r.TableHead,{sx:{display:"none"},children:e.jsx(r.TableRow,{children:w.map(f=>e.jsx(r.TableCell,{width:f.width,align:f.align||"left",sx:{fontWeight:"bold"},children:f.renderHeader?f.renderHeader():f.headerName},f.field))})}),e.jsx(r.TableBody,{children:o.map((f,P,C)=>e.jsx(r.TableRow,{sx:{borderBottom:P<C.length-1?"1px solid":"none",borderColor:"divider","&:hover":{backgroundColor:"action.hover"}},children:w.map(B=>e.jsx(r.TableCell,{width:B.width,align:B.align||"left",sx:{borderBottom:"none"},children:B.renderCell({row:f,index:P,onChange:z=>y(P,z)})},`${P}-${B.field}`))},P))})]})}):e.jsx(Q.default,{style:{fontSize:12,height:b},children:j("maker.properties.arrayEmpty")}),e.jsx(r.Button,{fullWidth:!0,size:"small",variant:"outlined",disabled:i,startIcon:e.jsx(ft.default,{}),onClick:c,children:j("maker.properties.addArrayItem")})]}):e.jsxs(r.Stack,{width:"100%",gap:1,children:[t&&e.jsx(r.FormLabel,{children:t}),e.jsx(r.Box,{sx:{border:1,borderColor:"divider",borderRadius:1,minHeight:150},children:e.jsx(oe.CodeEditor,{keyId:d.id,locale:v,language:"json",value:JSON.stringify(o,null,2),onChange:f=>u(f||"")},d.id)})]})}_.red[300],_.pink[300],_.purple[300],_.indigo[300],_.blue[300],_.cyan[300],_.teal[300],_.green[300],_.lime[300],_.yellow[300],_.amber[300],_.orange[300],_.brown[300],_.grey[300],_.blueGrey[300];const Rt=I.forwardRef(function({showMarkdown:s,markdown:l,onMarkdownChange:i,showUploader:a,value:b,meta:d,onChange:p,...k},j){const[v,h]=I.useState("");I.useEffect(()=>{h(b||"")},[b,h]);const o=async()=>{if(v!==b){const c=O.getImageAbsoluteUrl(v);if(!c){p(v,void 0);return}const u=await D.getImageSize(c).catch(()=>D.getVideoSize(c)).catch(()=>{});p(v,{...u,filename:v})}};ne.useDebounce(()=>{v!==b&&p(v)},300,[v]),I.useImperativeHandle(j,()=>({submit:o}));const x={};return a&&(x.InputProps={sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mx:.5},children:e.jsx(D.UploaderButton,{onChange:async({response:c})=>{var n;const u=(n=c==null?void 0:c.data)==null?void 0:n.filename,m=O.getImageAbsoluteUrl(u)||"";let S={};m&&(S=await D.getImageSize(m).catch(()=>D.getVideoSize(m)).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:l,label:e.jsx(r.Box,{component:et.Icon,icon:"tabler:markdown",sx:{verticalAlign:"middle"}}),labelPlacement:"start",control:e.jsx(r.Switch,{size:"small"}),sx:{ml:.25,pr:1},onChange:(c,u)=>i==null?void 0:i(u)}),")"]})]}),InputLabelProps:{shrink:!0,...k.InputLabelProps},value:v,onChange:c=>h(c.target.value),...x,onKeyDown:c=>{c.keyCode!==229&&c.key==="Enter"&&o()}})}),_t=I.lazy(()=>import("react-best-gradient-color-picker"));function Dt(t){try{const l=ve.default.parse(t).map(a=>{const b=a.colorStops.map(d=>{if(d.type!=="rgba"){const p=yt.default(d.value).toRgb();return{...d,value:[p.r,p.g,p.b,p.a],type:"rgba"}}return d});return{...a,colorStops:b}});return ve.default.stringify(l)}catch{return O.isColorString(t)?t:""}}function At({color:t,sx:s={},...l}){O.isColorString(t);const i={};return O.isGradient(t)?i.backgroundImage=t:i.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},...i},...l})}const zt=I.forwardRef(function({onSave:s},l){const i=se.useReactive({value:""}),{t:a}=R.useLocaleContext(),b={};i.value?O.isGradient(i.value)?b.backgroundImage=i.value:b.backgroundColor=i.value:b.border="1px solid #ccc";const[d,{setFalse:p,setTrue:k}]=se.useBoolean(!1),j=I.useCallback(()=>{p()},[p]),v=()=>{s({value:i.value},j)};return I.useImperativeHandle(l,()=>({open({value:h}={value:""}){i.value=h,k()},close(){j()}})),e.jsxs(r.Dialog,{open:d,onClose:j,hideBackdrop:!0,children:[e.jsx(r.DialogTitle,{children:a("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:b,children:!i.value&&e.jsx(Q.default,{children:a("error.notConfig")})}),e.jsx(I.Suspense,{children:e.jsx(_t,{width:200,height:200,value:Dt(i.value),onChange:h=>{i.value=h},hidePresets:!0,hideAdvancedSliders:!0,hideColorGuide:!0,hideInputType:!0})})]})}),e.jsxs(r.DialogActions,{children:[e.jsx(r.Button,{variant:"outlined",size:"small",onClick:j,children:a("common.cancel")}),e.jsx(r.Button,{variant:"contained",size:"small",onClick:v,children:a("maker.save")})]})]})});Ge.styled(r.Box)`
|
|
2
2
|
.color-item {
|
|
3
3
|
position: relative;
|
|
4
4
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
top: 0;
|
|
19
19
|
right: 0;
|
|
20
20
|
}
|
|
21
|
-
`;function rt({value:t,onChange:s,...i}){const n=P.useRef(null);return e.jsxs(e.Fragment,{children:[e.jsx(Qe,{...i,value:t,onChange:s,InputProps:{endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(et,{color:t??"",style:{width:"1.5rem",height:"1.5rem",padding:0},onClick:()=>{var c;(c=n.current)==null||c.open({value:t??""})}})})}}),e.jsx(tt,{ref:n,onSave:({value:c},y)=>{s(c),y()}})]})}const fe=["string","multiline","json","yaml","component","custom","url"];function st({disabled:t,list:s,renderItem:i,...n}){const c=P.useRef(null),y=P.useId(),a=ee.useUpdate(),p=Ge.default(Object.entries(s),g=>g[1].index).map(g=>g[0]),k=P.useRef(p),o=P.useCallback(g=>{k.current=g,a()},[a]),b=P.useCallback(({index:g},{index:l})=>{const u=[...k.current];u.splice(l,0,...u.splice(g,1)),o(u)},[o]);P.useEffect(()=>{o(p)},[p.join("-")]);const[{isOver:h},m]=te.useDrop({accept:y,collect:g=>({isOver:g.isOver()}),canDrop:()=>!t,drop:()=>{var u;const g=()=>{k.current.forEach((v,S)=>{const f=s[v];f&&(f.index=S)})},l=(u=K.getYjsValue(s))==null?void 0:u.doc;l?l.transact(()=>{g()}):g()}});return P.useEffect(()=>{h||o(p)},[h]),m(c),e.jsx(r.Box,{...n,ref:c,className:_e.cx(h&&"isDragging"),children:k.current.map((g,l)=>e.jsx(it,{type:y,disabled:t,id:g,index:l,itemIndex:u=>k.current.indexOf(u),move:b,children:u=>{const v=s[g];return v?i(v.data,l,u):null}},g))})}function it({disabled:t,id:s,index:i,type:n,children:c,itemIndex:y,move:a}){const p=P.useRef(),[{isDragging:k},o,b]=te.useDrag({type:n,item:()=>({id:s}),canDrag:()=>!t,collect:m=>({isDragging:m.isDragging()})}),[,h]=te.useDrop({accept:n,canDrop:()=>!t,hover(m,g){var j;if(!p.current)return;const l=y(m.id),u=i;if(l===u)return;const v=(j=p.current)==null?void 0:j.getBoundingClientRect(),S=(v.bottom-v.top)/2,d=g.getClientOffset().y-v.top;l<u&&d<S||l>u&&d>S||a({id:m.id,index:l},{id:s,index:i})}});return typeof c=="function"?c({isDragging:k,drag:o,drop:m=>(p.current=m,h(m)),preview:b}):(o(h(b(p))),e.jsx(r.Box,{ref:p,children:c}))}function nt({drop:t,preview:s,drag:i,disabled:n,isDragging:c,children:y,onDelete:a,onVisibilityChange:p,visible:k=!0,actions:o,alwaysShowActions:b=!1}){const{t:h}=F.useLocaleContext();return e.jsx(r.Box,{ref:t,sx:{":hover .hover-visible":{maxWidth:"100%"},opacity:k?1:.5},children:e.jsxs(r.Box,{sx:{position:"relative"},children:[e.jsx(r.Box,{ref:s,sx:{flex:1,borderRadius:.5,bgcolor:c?"action.hover":"background.paper",opacity:.9999},children:y}),!n&&e.jsx(r.Box,{className:b?"":"hover-visible",sx:{maxWidth:b?"100%":0,overflow:"hidden",position:"absolute",right:2,top:2,transition:"max-width 0.3s ease-in-out"},children:e.jsxs(r.Stack,{direction:"row",sx:{bgcolor:m=>r.alpha(m.palette.grey[200],.9),borderRadius:1,p:.5,[`.${r.buttonClasses.root}`]:{minWidth:24,width:24,height:24,p:0}},children:[o,p&&e.jsx(r.Tooltip,{title:h(k?"hideParameter":"showParameter"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:()=>p(!k),children:k?e.jsx(z.VisibilityOffRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}}):e.jsx(z.VisibilityRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),a&&e.jsx(r.Tooltip,{title:h("delete"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:a,children:e.jsx(z.DeleteOutlineRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),e.jsx(r.Tooltip,{title:h("dragSort"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{ref:i,children:e.jsx(z.DragIndicatorRounded,{sx:{color:"grey.500"}})})})]})})]})})}function ot({label:t,value:s,onChange:i}){const[n,c]=P.useState(!1);return e.jsxs(r.Stack,{gap:1,children:[e.jsx(r.TextField,{label:t,size:"small",value:s,onChange:y=>i==null?void 0:i(y.target.value),InputProps:{endAdornment:e.jsx(D.UploaderButton,{onChange:({response:y})=>{var p;const a=(p=y==null?void 0:y.data)==null?void 0:p.filename;a&&(i==null||i(a))}})}}),s&&e.jsx(r.Box,{component:"img",sx:{objectFit:"contain",borderRadius:1,cursor:"pointer"},src:B.getImageAbsoluteUrl(s),alt:t,maxWidth:100,maxHeight:100,width:"100%",onClick:()=>c(!0)}),e.jsx(r.Dialog,{open:n,onClose:()=>c(!1),children:e.jsx(r.Box,{component:"img",sx:{objectFit:"contain"},src:B.getImageAbsoluteUrl(s),alt:t})})]})}function Q(t,s,i){return!t||!i?!1:Object.values(t).some(({data:n})=>n.id!==s&&n.key===i)}function ge(t,s){var i;return!t||!s?!1:((i=t[s])==null?void 0:i.data.visible)??!0}function lt({componentId:t}){const{state:{components:s}}=B.useStore(),i=s[t],n=i==null?void 0:i.data;return n?e.jsx(r.Stack,{maxHeight:"100%",overflow:"auto",children:e.jsx(r.Box,{p:2,children:e.jsx(Ee.ErrorBoundary,{FallbackComponent:B.ErrorView,resetKeys:[t],children:e.jsx(ct,{value:n})})})}):null}function ct({value:t}){var k,o,b;const{t:s}=F.useLocaleContext(),{localState:{currentLocale:i,componentDebugProps:n},state:{config:{defaultLocale:c}},localActions:{setComponentDebugProps:y}}=B.useStore(),a=K.getYjsValue(t).doc,p=B.useAllComponents();return e.jsx(r.Stack,{height:"100%",children:e.jsxs(r.Stack,{gap:2,children:[e.jsx(ve,{config:t}),e.jsx(ke,{config:t,currentLocale:i,defaultLocale:c,allComponents:p,onUpdateConfig:h=>{a.transact(()=>{h(t)})}}),e.jsxs(r.Stack,{gap:2,direction:"row",justifyContent:"space-between",alignItems:"center",children:[e.jsx(r.Typography,{variant:"subtitle1",children:s("renderer")}),e.jsxs(r.TextField,{hiddenLabel:!0,size:"small",select:!0,SelectProps:{autoWidth:!0},value:((k=t.renderer)==null?void 0:k.type)||"react-component",onChange:h=>{a.transact(()=>{const m=h.target.value;t.renderer??(t.renderer={type:m}),t.renderer.type=m})},children:[e.jsx(r.MenuItem,{value:"react-component",children:"React Component"}),e.jsx(r.MenuItem,{value:"component",children:"Custom Component"})]})]}),((o=t.renderer)==null?void 0:o.type)==="component"?e.jsx(mt,{value:t}):((b=t.renderer)==null?void 0:b.type)==="react-component"?e.jsx(pt,{value:t}):null,e.jsx(Pe,{config:t,currentLocale:i,defaultLocale:c,allComponents:p,onChange:({key:h,value:m})=>{y({[h]:m.value})},props:{...n}})]})})}function ve({config:t}){const{t:s}=F.useLocaleContext();return e.jsx(D.UploaderProvider,{children:e.jsxs(r.Stack,{gap:2,children:[e.jsx(r.Typography,{variant:"subtitle1",children:s("basicInfo")}),e.jsx(r.TextField,{label:s("name"),size:"small",value:t.name||"",onChange:i=>t.name=i.target.value}),e.jsx(r.TextField,{label:s("description"),size:"small",multiline:!0,minRows:2,maxRows:10,inputProps:{maxLength:200},value:t.description||"",onChange:i=>t.description=i.target.value}),e.jsx(r.Autocomplete,{size:"small",options:[],multiple:!0,freeSolo:!0,value:t.tags??[],onChange:(i,n)=>t.tags=n,renderInput:i=>e.jsx(r.TextField,{label:s("tags"),...i})}),e.jsx(ot,{label:s("previewImage"),value:t.previewImage||"",onChange:i=>t.previewImage=i})]})})}function ke({config:t,currentLocale:s,defaultLocale:i,allComponents:n,onUpdateConfig:c,useI18nEditor:y=!0}){const{t:a}=F.useLocaleContext(),p=O.usePopupState({variant:"dialog"}),k=t.properties&&R.sortBy(Object.values(t.properties),"index");return e.jsx(D.UploaderProvider,{children:e.jsxs(r.Stack,{gap:2,children:[e.jsxs(r.Stack,{direction:"row",gap:1,alignItems:"center",justifyContent:"space-between",children:[e.jsx(r.Typography,{variant:"subtitle1",children:a("properties")}),e.jsx(r.Box,{flex:1}),e.jsx(r.Button,{onClick:()=>{c(o=>{var h;const b=B.nextId();o.properties??(o.properties={}),(h=o.properties)[b]??(h[b]={index:(k==null?void 0:k.length)||0,data:{id:b}})})},startIcon:e.jsx(z.AddRounded,{}),children:a("addObject",{object:a("property")})}),y&&e.jsx(r.Button,{sx:{minWidth:32,minHeight:32,p:0},...O.bindTrigger(p),children:e.jsx(z.TranslateRounded,{fontSize:"small"})})]}),t.properties&&Object.keys(t.properties).length>0?e.jsx(st,{component:r.Stack,gap:2,list:t.properties,renderItem:(o,b,h)=>{var g,l,u,v,S,f;const m=ge(t.properties,o.id);return e.jsx(r.Paper,{elevation:0,sx:{p:1.25,bgcolor:"background.paper",borderRadius:1,border:m?"1px solid":"1px dashed",borderColor:"divider"},children:e.jsx(r.Stack,{gap:2,children:e.jsx(nt,{preview:h.preview,drop:h.drop,drag:h.drag,isDragging:h.isDragging,onDelete:()=>{c(d=>{if(d.properties){const x=Object.entries(d.properties).sort(([,C],[,T])=>C.index-T.index);delete d.properties[o.id],x.filter(([C])=>C!==o.id).forEach(([,C],T)=>{C.index=T})}})},visible:m,onVisibilityChange:d=>{c(j=>{const x=j.properties[o.id].data;x.visible=d})},alwaysShowActions:!0,children:e.jsxs(r.Stack,{direction:"column",gap:2,children:[e.jsx(r.TextField,{label:a("key"),size:"small",required:!0,sx:{width:"calc(100% - 80px - 8px)",flex:1,"& .MuiOutlinedInput-root":{borderColor:o.key?Q(t.properties,o.id,o.key)?"warning.main":void 0:"error.main"},"& .MuiFormLabel-root":{color:o.key?Q(t.properties,o.id,o.key)?"warning.main":"text.secondary":"error.main"},"& .MuiFormLabel-root.Mui-focused":{color:o.key?Q(t.properties,o.id,o.key)?"warning.main":"primary.main":"error.main"}},value:o.key||"",onChange:d=>{c(j=>{const x=j.properties[o.id].data;x.key=d.target.value.trim()})},InputProps:{endAdornment:!o.key||o.key&&Q(t.properties,o.id,o.key)?e.jsx(r.InputAdornment,{position:"end",sx:{width:16,ml:0},children:e.jsx(r.Tooltip,{title:o.key?a("duplicateKey"):a("requiredKey"),children:e.jsx(z.InfoRounded,{sx:{color:o.key?"warning.main":"error.main",fontSize:16}})})}):null}}),e.jsxs(r.Stack,{direction:"row",gap:1,children:[e.jsx(r.TextField,{label:a("label"),size:"small",sx:{flex:1},value:(((l=(g=o.locales)==null?void 0:g[s])==null?void 0:l.name)??((v=(u=o.locales)==null?void 0:u[i])==null?void 0:v.name))||"",onChange:d=>{c(j=>{var I;const x=j.properties[o.id].data;x.locales??(x.locales={}),(I=x.locales)[s]??(I[s]={}),x.locales[s].name=d.target.value})}}),e.jsxs(r.TextField,{label:a("type"),size:"small",select:!0,sx:{flex:1},value:o.type==="string"&&o.multiline?"multiline":o.type||"string",onChange:d=>{c(j=>{const x=j.properties[o.id].data;if(x.locales)for(const C of Object.keys(x.locales))x.locales[C].defaultValue=void 0;const I=d.target.value;I==="multiline"?(x.type="string",x.multiline=!0):(typeof x.multiline<"u"&&delete x.multiline,x.type=I)})},children:[e.jsx(r.MenuItem,{value:"string",children:"Text"}),e.jsx(r.MenuItem,{value:"multiline",children:"Text (Multiline)"}),e.jsx(r.MenuItem,{value:"number",children:"Number"}),e.jsx(r.MenuItem,{value:"decimal",children:"Decimal"}),e.jsx(r.MenuItem,{value:"boolean",children:"Boolean"}),e.jsx(r.MenuItem,{value:"color",children:"Color"}),e.jsx(r.MenuItem,{value:"url",children:"URL (Upload)"}),e.jsx(r.MenuItem,{value:"json",children:"JSON"}),e.jsx(r.MenuItem,{value:"yaml",children:"YAML"}),e.jsx(r.MenuItem,{value:"component",children:"Component"}),e.jsx(r.MenuItem,{value:"custom",children:"Custom (Render by a Component)"})]})]}),e.jsxs(r.Stack,{direction:"row",gap:1,children:[e.jsx(V,{allComponents:n,defaultLocale:i,component:t,property:o,label:a("defaultValue"),size:"small",fullWidth:!0,value:(f=(S=o.locales)==null?void 0:S[s])==null?void 0:f.defaultValue,onChange:d=>{c(j=>{var I;const x=j.properties[o.id].data;x.locales??(x.locales={}),(I=x.locales)[s]??(I[s]={}),x.locales[s].defaultValue=d})}}),o.type==="custom"?e.jsx(r.Box,{children:e.jsx(ut,{property:o,allComponents:n})}):null]})]})})})},o.id)}}):e.jsx(se.default,{style:{fontSize:12},children:a("maker.properties.noProperties")}),y&&e.jsx(Se,{...O.bindDialog(p),component:t})]})})}function ut({property:t,allComponents:s}){const i=O.usePopupState({variant:"popper"});return e.jsxs(e.Fragment,{children:[e.jsx(r.Button,{sx:{minWidth:0},...O.bindTrigger(i),children:e.jsx(z.SettingsRounded,{fontSize:"small"})}),e.jsx(r.Popper,{...O.bindPopper(i),children:e.jsx(re.ClickAwayListener,{onClickAway:i.close,children:e.jsx(r.Paper,{children:e.jsx(r.Box,{width:500,p:2,children:e.jsx(Z,{value:t.componentId,onChange:(n,c)=>t.componentId=c,allComponents:s})})})})})]})}function at({value:t,valueImmutable:s,onChange:i,defaultLocale:n,allComponents:c}){var k;const y=O.usePopupState({variant:"popper"}),{locale:a}=F.useLocaleContext(),p=typeof(t==null?void 0:t.componentId)=="string"?(k=c[t.componentId])==null?void 0:k.data:void 0;return p?e.jsxs(e.Fragment,{children:[e.jsx(r.Button,{sx:{minWidth:0},disabled:!p,...O.bindTrigger(y),children:e.jsx(z.SettingsRounded,{fontSize:"small"})}),e.jsx(r.Popper,{...O.bindPopper(y),sx:{zIndex:1e3},children:e.jsx(re.ClickAwayListener,{onClickAway:y.close,children:e.jsx(r.Paper,{children:e.jsxs(r.Box,{width:500,p:2,children:[e.jsx(r.Typography,{variant:"subtitle1",children:"Parameters"}),e.jsx(r.Stack,{gap:1,children:(p==null?void 0:p.properties)&&R.sortBy(Object.values(p.properties),"index").map(({data:o})=>{var b,h,m,g,l,u,v,S;return e.jsx(r.Box,{children:e.jsx(V,{allComponents:c,defaultLocale:n,size:"small",fullWidth:!0,component:p,property:o,valueImmutable:R.isNil((h=(b=t.properties)==null?void 0:b[o.id])==null?void 0:h.value),value:((g=(m=t.properties)==null?void 0:m[o.id])==null?void 0:g.value)??((u=(l=o.locales)==null?void 0:l[a])==null?void 0:u.defaultValue)??((S=(v=o.locales)==null?void 0:v[n])==null?void 0:S.defaultValue),onChange:f=>{if(s){const d=JSON.parse(JSON.stringify(t));i==null||i({...d,properties:{...d.properties,[o.id]:{value:f}}})}else K.getYjsValue(p).doc.transact(()=>{t.properties??(t.properties={}),t.properties[o.id]={value:f}})}})},o.id)})})]})})})})]}):null}function Se({type:t="properties",component:s,...i}){var h,m,g;const{t:n}=F.useLocaleContext(),{state:{components:c,supportedLocales:y,config:{defaultLocale:a}}}=B.useStore(),p=B.useAllComponents(),k=K.getYjsValue(s).doc,o=t==="properties"?s.properties:t==="parameters"&&((h=s.renderer)==null?void 0:h.type)==="component"?(m=c[s.renderer.componentId])==null?void 0:m.data.properties:void 0,b=((g=s.renderer)==null?void 0:g.type)==="component"?s:void 0;return e.jsxs(r.Dialog,{...i,fullWidth:!0,maxWidth:"lg",children:[e.jsx(r.DialogTitle,{children:n("i18nEditorTitle")}),e.jsx(r.DialogContent,{children:o&&e.jsx(r.Stack,{children:e.jsxs(r.Table,{stickyHeader:!0,sx:{td:{verticalAlign:"top"}},children:[e.jsx(r.TableHead,{children:e.jsx(r.TableRow,{children:y.map(({locale:l,name:u})=>e.jsxs(r.TableCell,{children:[u,a===l&&e.jsx(z.StarRounded,{sx:{fontSize:12,color:"text.secondary"}})]},l))})}),e.jsx(r.TableBody,{children:R.sortBy(Object.values(o),"index").map(({data:l})=>e.jsx(r.TableRow,{children:y.map(({locale:u})=>{var v,S,f,d,j,x,I,C,T,A,_,M,W,E,G,H,L,Y,J,$,ie,ne,oe,le,ce,ue;return e.jsx(r.TableCell,{children:e.jsx(r.Stack,{gap:1,children:t==="properties"?e.jsxs(e.Fragment,{children:[e.jsx(r.TextField,{size:"small",label:"Key",value:l.key||"",onChange:N=>{k.transact(()=>{l.key=N.target.value.trim()})}}),e.jsx(r.TextField,{size:"small",label:n("label"),value:(((S=(v=l.locales)==null?void 0:v[u])==null?void 0:S.name)??((d=(f=l.locales)==null?void 0:f[a])==null?void 0:d.name))||"",onChange:N=>{k.transact(()=>{var q;l.locales??(l.locales={}),(q=l.locales)[u]??(q[u]={}),l.locales[u].name=N.target.value})}}),e.jsx(r.Box,{children:e.jsx(V,{allComponents:p,defaultLocale:a,component:s,property:l,size:"small",fullWidth:!0,label:"Default Value",valueImmutable:R.isNil((x=(j=l.locales)==null?void 0:j[u])==null?void 0:x.defaultValue),value:((C=(I=l.locales)==null?void 0:I[u])==null?void 0:C.defaultValue)??((A=(T=l.locales)==null?void 0:T[a])==null?void 0:A.defaultValue),onChange:N=>{k.transact(()=>{var q;l.locales??(l.locales={}),(q=l.locales)[u]??(q[u]={}),l.locales[u].defaultValue=N})}})})]}):t==="parameters"&&b?e.jsx(r.Box,{children:e.jsx(V,{allComponents:p,defaultLocale:a,component:s,property:l,size:"small",fullWidth:!0,valueImmutable:R.isNil((E=(W=(M=(_=b.renderer.properties)==null?void 0:_[l.id])==null?void 0:M.locales)==null?void 0:W[u])==null?void 0:E.value),value:((Y=(L=(H=(G=b.renderer.properties)==null?void 0:G[l.id])==null?void 0:H.locales)==null?void 0:L[u])==null?void 0:Y.value)??((ne=(ie=($=(J=b.renderer.properties)==null?void 0:J[l.id])==null?void 0:$.locales)==null?void 0:ie[a])==null?void 0:ne.value)??((le=(oe=l.locales)==null?void 0:oe[u])==null?void 0:le.defaultValue)??((ue=(ce=l.locales)==null?void 0:ce[a])==null?void 0:ue.defaultValue),onChange:N=>{k.transact(()=>{var q,ae,de,pe,me;(q=b.renderer).properties??(q.properties={}),(ae=b.renderer.properties)[de=l.id]??(ae[de]={}),(pe=b.renderer.properties[l.id]).locales??(pe.locales={}),(me=b.renderer.properties[l.id].locales)[u]??(me[u]={}),b.renderer.properties[l.id].locales[u].value=N})}})}):null},l.id)},u)})},l.id))})]})})}),e.jsx(r.DialogActions,{children:e.jsx(r.Button,{onClick:l=>{var u;return(u=i.onClose)==null?void 0:u.call(i,l,"escapeKeyDown")},children:n("close")})})]})}function V({component:t,property:s,value:i,onChange:n,valueImmutable:c,defaultLocale:y,allComponents:a,...p}){var g,l,u,v,S;const{locale:k}=F.useLocaleContext(),o=D.useUploader(),b=P.useRef(null),h=()=>{var d;const f=(d=o==null?void 0:o.current)==null?void 0:d.getUploader();f==null||f.open(),b.current&&f.onceUploadSuccess(({response:j})=>{var I,C;let x=((I=j==null?void 0:j.data)==null?void 0:I.filename)||"";x&&(x=`mediakit://${x}`,i&&!i.includes("mediakit://")&&(x+=" # please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address")),(C=b.current)==null||C.call(b,x)})},m=p.label||((l=(g=s.locales)==null?void 0:g[k])==null?void 0:l.name)||((v=(u=s.locales)==null?void 0:u[y])==null?void 0:v.name)||s.key||s.id;if(s.type==="number")return e.jsx(dt,{...p,label:m,NumberProps:{value:["number","string"].includes(typeof i)?i:null,onChange:(f,d)=>n==null?void 0:n(d)}});if(s.type==="decimal")return e.jsx(r.TextField,{...p,label:m,type:"text",value:i??"",onChange:f=>{const d=f.target.value;if(d===""||d==="-"){n==null||n(d);return}if(/^-?(?!.*\..*\.)[0-9]*(\.[0-9]{0,9})?$/.test(d)){let x=d;/^-?[1-9]+[0-9]*(\.[0-9]{1,9})?$/.test(x)&&(x=Number(x)),n==null||n(x)}}});if(s.type==="boolean")return e.jsx(r.FormControlLabel,{label:m,labelPlacement:"start",control:e.jsx(r.Switch,{checked:i===!0,onChange:(f,d)=>n==null?void 0:n(d)})});if(s.type==="color")return e.jsx(rt,{label:m,value:i,onChange:f=>{n==null||n(f)}});if(s.type==="json"||s.type==="yaml")return e.jsxs(r.Stack,{sx:{width:"100%",position:"relative",pt:1,pb:"6px",px:"1px",minHeight:50,".monaco-editor,.overflow-guard":{borderRadius:1}},children:[e.jsx(r.FormLabel,{sx:{position:"absolute",left:0,top:0,transform:"translate(0px, -7px) scale(0.75)"},children:m}),e.jsx(ye.CodeEditor,{keyId:s.id,locale:k,language:s.type==="yaml"?"yaml":"json",value:typeof i=="string"?i:"",onChange:f=>n==null?void 0:n(f),onUpload:f=>{b.current=f,h()}},s.id),e.jsx(r.Box,{component:"fieldset",sx:{pointerEvents:"none",position:"absolute",left:0,top:-5,width:"100%",height:"100%",border:1,borderColor:"rgba(0, 0, 0, 0.23)",borderRadius:1,px:1,py:0},children:e.jsx(r.Box,{component:"legend",sx:{fontSize:"0.75em"},children:e.jsx(r.Box,{component:"span",sx:{opacity:0},children:p.label})})})]});if(s.type==="custom"){const f=(S=a[s.componentId])==null?void 0:S.data;return f?e.jsx(r.Box,{width:"100%",children:e.jsx(X.CustomComponentRenderer,{componentId:f.id,props:{label:m,value:i,onChange:n},locale:k,dev:{mode:"draft",components:a,defaultLocale:y}})}):e.jsx(r.TextField,{...p,label:m,disabled:!0,placeholder:"Click right button select a component"})}if(s.type==="component")return e.jsxs(r.Stack,{width:"100%",direction:"row",gap:1,children:[e.jsx(r.Box,{flex:1,children:e.jsx(Z,{allComponents:a,label:m,value:i==null?void 0:i.componentId,onChange:(f,d)=>{c||!i?n==null||n({...i&&JSON.parse(JSON.stringify(i)),componentId:d}):typeof i=="object"&&(i.componentId=d)}})}),e.jsx(r.Box,{children:e.jsx(at,{value:i,valueImmutable:c,onChange:n,defaultLocale:y,allComponents:a})})]});if(!s.type||["string","url"].includes(s.type)){const f=s.type==="string"?s.multiline:void 0,d=s.type==="url"?i==null?void 0:i.url:i;return e.jsx(r.TextField,{...p,label:m,value:typeof d=="string"?d:"",multiline:f,minRows:f?2:void 0,maxRows:f?10:void 0,onChange:j=>n==null?void 0:n(s.type==="url"?{...i,url:j.target.value,mediaKitUrl:j.target.value}:j.target.value),InputProps:s.type==="url"?{sx:{pr:0},endAdornment:e.jsxs(r.InputAdornment,{position:"end",children:[e.jsx(D.UploaderButton,{onChange:async({response:j})=>{var T,A,_;const x=((T=j==null?void 0:j.data)==null?void 0:T.url)||((A=j==null?void 0:j.data)==null?void 0:A.fileUrl);let I;x&&(I=await D.getImageSize(x).catch(()=>D.getVideoSize(x)).catch(()=>{}));let C=((_=j==null?void 0:j.data)==null?void 0:_.filename)||"";C&&(C=`mediakit://${C}`),n==null||n({url:x,mediaKitUrl:C,width:I==null?void 0:I.naturalWidth,height:I==null?void 0:I.naturalHeight})}}),e.jsx(r.Tooltip,{title:"If you are using the 'mediaKitUrl' property, please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address.",children:e.jsx(z.InfoRounded,{sx:{cursor:"default"},fontSize:"small"})})]})}:void 0})}return console.error("Unsupported property type",s.type),null}function dt({NumberProps:t,...s}){const{getInputProps:i}=re.unstable_useNumberInput(t),n=i();return e.jsx(r.TextField,{...s,inputProps:n})}const Ie=`import React from '@blocklet/pages-kit/builtin/react'
|
|
21
|
+
`;function Nt({value:t,onChange:s,...l}){const i=I.useRef(null);return e.jsxs(e.Fragment,{children:[e.jsx(Rt,{...l,value:t,onChange:s,InputProps:{endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(At,{color:t??"",style:{width:"1.5rem",height:"1.5rem",padding:0},onClick:()=>{var a;(a=i.current)==null||a.open({value:t??""})}})})}}),e.jsx(zt,{ref:i,onSave:({value:a},b)=>{s(a),b()}})]})}function Ce(t,s){return s==="yaml"?te.stringify(t,{indent:2}):s==="json"?JSON.parse(JSON.stringify(t)):t}function Ft({label:t,value:s,onChange:l,property:i,component:a,defaultLocale:b,allComponents:d,PropertyValueField:p,onUpload:k}){const{locale:j}=R.useLocaleContext(),v=I.useRef(null);if(!we.default(i.subProperties)){const o=F.default(Object.values(i.subProperties||{}),"index").filter(x=>x.data.visible!==!1&&x.data.key);return e.jsxs(r.Stack,{width:"100%",children:[e.jsx(r.FormLabel,{sx:{px:.25,py:.5},children:t}),e.jsx(r.Box,{children:e.jsx(r.Box,{sx:{position:"relative"},children:o.map((x,c)=>{const{data:u}=x,m=u.key??u.id,S=c===o.length-1;let n=null;try{s&&typeof s=="object"?n=s[m]:typeof s=="string"&&(n=(i.type==="yaml"?te.parse(s||""):JSON.parse(s||"{}"))[m])}catch{}n==null&&(u.locales&&j&&u.locales[j]?n=u.locales[j].defaultValue:u.locales&&b&&u.locales[b]&&(n=u.locales[b].defaultValue));const y=w=>{try{let f={};if(typeof s=="string")try{f=i.type==="yaml"?te.parse(s||""):JSON.parse(s||"{}")}catch{}else typeof s=="object"&&s!==null&&(f={...s});Ie.default(f,m,w);const P=Ce(f,i.type);l==null||l(P)}catch(f){console.error("Error updating property:",f)}},g=8;return e.jsxs(r.Box,{sx:{mb:S?0:1,display:"flex",flexDirection:"row"},children:[e.jsxs(r.Box,{sx:{position:"relative",width:24,flexShrink:0},children:[e.jsx(r.Box,{sx:{position:"absolute",left:g,top:0,height:16,width:0,borderLeft:"1px dashed",borderColor:"divider"}}),e.jsx(r.Box,{sx:{position:"absolute",left:g,top:16,width:12,height:0,borderTop:"1px dashed",borderColor:"divider"}}),!S&&e.jsx(r.Box,{sx:{position:"absolute",left:g,top:16,bottom:-8,width:0,borderLeft:"1px dashed",borderColor:"divider"}})]}),e.jsx(r.Box,{sx:{flexGrow:1},children:e.jsx(p,{component:a,property:u,value:n,onChange:y,size:"small",fullWidth:!0,defaultLocale:b,allComponents:d})})]},u.id)})})})]})}return e.jsx(r.Stack,{width:"100%",gap:2,children:e.jsxs(r.Stack,{sx:{width:"100%",position:"relative",pt:1,pb:"6px",px:"1px",minHeight:50,".monaco-editor,.overflow-guard":{borderRadius:1}},children:[e.jsx(r.FormLabel,{sx:{position:"absolute",left:0,top:0,transform:"translate(0px, -7px) scale(0.75)"},children:t}),e.jsx(oe.CodeEditor,{keyId:i.id,locale:j,language:i.type==="yaml"?"yaml":"json",value:typeof s=="string"?s:"",onChange:o=>{l==null||l(o)},onUpload:o=>{v.current=o,k&&k(o)}},i.id),e.jsx(r.Box,{component:"fieldset",sx:{pointerEvents:"none",position:"absolute",left:0,top:-5,width:"100%",height:"100%",border:1,borderColor:"rgba(0, 0, 0, 0.23)",borderRadius:1,px:1,py:0},children:e.jsx(r.Box,{component:"legend",sx:{fontSize:"0.75em"},children:e.jsx(r.Box,{component:"span",sx:{opacity:0},children:t})})})]})})}const Se=["string","multiline","json","yaml","component","custom","url"];function Be({disabled:t,list:s,renderItem:l,...i}){const a=I.useRef(null),b=I.useId(),d=se.useUpdate(),p=F.default(Object.entries(s),x=>x[1].index).map(x=>x[0]),k=I.useRef(p),j=I.useCallback(x=>{k.current=x,d()},[d]),v=I.useCallback(({index:x},{index:c})=>{const u=[...k.current];u.splice(c,0,...u.splice(x,1)),j(u)},[j]);I.useEffect(()=>{j(p)},[p.join("-")]);const[{isOver:h},o]=le.useDrop({accept:b,collect:x=>({isOver:x.isOver()}),canDrop:()=>!t,drop:()=>{var u;const x=()=>{k.current.forEach((m,S)=>{const n=s[m];n&&(n.index=S)})},c=(u=K.getYjsValue(s))==null?void 0:u.doc;c?c.transact(()=>{x()}):x()}});return I.useEffect(()=>{h||j(p)},[h]),o(a),e.jsx(r.Box,{...i,ref:a,className:Qe.cx(h&&"isDragging"),children:k.current.map((x,c)=>e.jsx(qt,{type:b,disabled:t,id:x,index:c,itemIndex:u=>k.current.indexOf(u),move:v,children:u=>{const m=s[x];return m?l(m.data,c,u):null}},x))})}function qt({disabled:t,id:s,index:l,type:i,children:a,itemIndex:b,move:d}){const p=I.useRef(),[{isDragging:k},j,v]=le.useDrag({type:i,item:()=>({id:s}),canDrag:()=>!t,collect:o=>({isDragging:o.isDragging()})}),[,h]=le.useDrop({accept:i,canDrop:()=>!t,hover(o,x){var g;if(!p.current)return;const c=b(o.id),u=l;if(c===u)return;const m=(g=p.current)==null?void 0:g.getBoundingClientRect(),S=(m.bottom-m.top)/2,y=x.getClientOffset().y-m.top;c<u&&y<S||c>u&&y>S||d({id:o.id,index:c},{id:s,index:l})}});return typeof a=="function"?a({isDragging:k,drag:j,drop:o=>(p.current=o,h(o)),preview:v}):(j(h(v(p))),e.jsx(r.Box,{ref:p,children:a}))}function Vt({drop:t,preview:s,drag:l,disabled:i,isDragging:a,children:b,onDelete:d,onVisibilityChange:p,visible:k=!0,actions:j,alwaysShowActions:v=!1}){const{t:h}=R.useLocaleContext();return e.jsx(r.Box,{ref:t,sx:{":hover .hover-visible":{maxWidth:"100%"},opacity:k?1:.5},children:e.jsxs(r.Box,{sx:{position:"relative"},children:[e.jsx(r.Box,{ref:s,sx:{flex:1,borderRadius:.5,bgcolor:a?"action.hover":"background.paper",opacity:.9999},children:b}),!i&&e.jsx(r.Box,{className:v?"":"hover-visible",sx:{maxWidth:v?"100%":0,overflow:"hidden",position:"absolute",right:2,top:2,transition:"max-width 0.3s ease-in-out"},children:e.jsxs(r.Stack,{direction:"row",sx:{bgcolor:o=>r.alpha(o.palette.grey[200],.9),borderRadius:1,p:.5,[`.${r.buttonClasses.root}`]:{minWidth:24,width:24,height:24,p:0}},children:[j,p&&e.jsx(r.Tooltip,{title:h(k?"hideParameter":"showParameter"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:()=>p(!k),children:k?e.jsx(A.VisibilityOffRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}}):e.jsx(A.VisibilityRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),d&&e.jsx(r.Tooltip,{title:h("delete"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:d,children:e.jsx(A.DeleteOutlineRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),e.jsx(r.Tooltip,{title:h("dragSort"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{ref:l,children:e.jsx(A.DragIndicatorRounded,{sx:{color:"grey.500"}})})})]})})]})})}function Et({label:t,value:s,onChange:l}){const[i,a]=I.useState(!1);return e.jsxs(r.Stack,{gap:1,children:[e.jsx(r.TextField,{label:t,size:"small",value:s,onChange:b=>l==null?void 0:l(b.target.value),InputProps:{endAdornment:e.jsx(D.UploaderButton,{onChange:({response:b})=>{var p;const d=(p=b==null?void 0:b.data)==null?void 0:p.filename;d&&(l==null||l(d))}})}}),s&&e.jsx(r.Box,{component:"img",sx:{objectFit:"contain",borderRadius:1,cursor:"pointer"},src:O.getImageAbsoluteUrl(s),alt:t,maxWidth:100,maxHeight:100,width:"100%",onClick:()=>a(!0)}),e.jsx(r.Dialog,{open:i,onClose:()=>a(!1),children:e.jsx(r.Box,{component:"img",sx:{objectFit:"contain"},src:O.getImageAbsoluteUrl(s),alt:t})})]})}function ie(t,s=""){return It.default(t,(l,i,a)=>{const b=s?`${s}.${a}`:a;return kt.default(i)?gt.default(l,ie(i,b)):l[b]=i,l},{})}const Ut=[{value:"string",label:"Text"},{value:"multiline",label:"Text (Multiline)"},{value:"number",label:"Number"},{value:"decimal",label:"Decimal"},{value:"boolean",label:"Boolean"},{value:"color",label:"Color"},{value:"url",label:"URL (Upload)"},{value:"json",label:"JSON"},{value:"yaml",label:"YAML"},{value:"array",label:"Array"},{value:"component",label:"Component"},{value:"custom",label:"Custom (Render by a Component)"}];function Z(t,s,l){return!t||!l?!1:Object.values(t).some(({data:i})=>i.id!==s&&i.key===l)}function Te(t,s){var l;return!t||!s?!1:((l=t[s])==null?void 0:l.data.visible)??!0}function Wt({componentId:t}){const{state:{components:s}}=O.useStore(),l=s[t],i=l==null?void 0:l.data;return i?e.jsx(r.Stack,{maxHeight:"100%",overflow:"auto",children:e.jsx(r.Box,{p:2,children:e.jsx(xt.ErrorBoundary,{FallbackComponent:O.ErrorView,resetKeys:[t],children:e.jsx(Kt,{value:i})})})}):null}function Kt({value:t}){var k,j,v;const{t:s}=R.useLocaleContext(),{localState:{currentLocale:l,componentDebugProps:i},state:{config:{defaultLocale:a}},localActions:{setComponentDebugProps:b}}=O.useStore(),d=K.getYjsValue(t).doc,p=O.useAllComponents();return e.jsx(r.Stack,{height:"100%",children:e.jsxs(r.Stack,{gap:2,children:[e.jsx(Oe,{config:t}),e.jsx(_e,{config:t,currentLocale:l,defaultLocale:a,allComponents:p,onUpdateConfig:h=>{d.transact(()=>{h(t)})}}),e.jsxs(r.Stack,{gap:2,direction:"row",justifyContent:"space-between",alignItems:"center",children:[e.jsx(r.Typography,{variant:"subtitle1",children:s("renderer")}),e.jsxs(r.TextField,{hiddenLabel:!0,size:"small",select:!0,SelectProps:{autoWidth:!0},value:((k=t.renderer)==null?void 0:k.type)||"react-component",onChange:h=>{d.transact(()=>{const o=h.target.value;t.renderer??(t.renderer={type:o}),t.renderer.type=o})},children:[e.jsx(r.MenuItem,{value:"react-component",children:"React Component"}),e.jsx(r.MenuItem,{value:"component",children:"Custom Component"})]})]}),((j=t.renderer)==null?void 0:j.type)==="component"?e.jsx(Gt,{value:t}):((v=t.renderer)==null?void 0:v.type)==="react-component"?e.jsx($t,{value:t}):null,e.jsx(Ne,{config:t,currentLocale:l,defaultLocale:a,allComponents:p,onChange:({key:h,value:o})=>{b({[h]:o.value})},props:{...i}})]})})}function Oe({config:t}){const{t:s}=R.useLocaleContext();return e.jsx(D.UploaderProvider,{children:e.jsxs(r.Stack,{gap:2,children:[e.jsx(r.Typography,{variant:"subtitle1",children:s("basicInfo")}),e.jsx(r.TextField,{label:s("name"),size:"small",value:t.name||"",onChange:l=>t.name=l.target.value}),e.jsx(r.TextField,{label:s("description"),size:"small",multiline:!0,minRows:2,maxRows:10,inputProps:{maxLength:200},value:t.description||"",onChange:l=>t.description=l.target.value}),e.jsx(r.Autocomplete,{size:"small",options:[],multiple:!0,freeSolo:!0,value:t.tags??[],onChange:(l,i)=>t.tags=i,renderInput:l=>e.jsx(r.TextField,{label:s("tags"),...l})}),e.jsx(Et,{label:s("previewImage"),value:t.previewImage||"",onChange:l=>t.previewImage=l})]})})}function Re({data:t,params:s,visible:l,config:i,currentLocale:a,defaultLocale:b,allComponents:d,onUpdateConfig:p}){var v,h,o,x,c,u;const{t:k}=R.useLocaleContext(),j=I.useMemo(()=>t.type==="json"||t.type==="yaml"||t.type==="array"?Ht:q,[t.type]);return e.jsx(Vt,{preview:s.preview,drop:s.drop,drag:s.drag,isDragging:s.isDragging,onDelete:()=>{p(m=>{if(m.properties){const n=Object.entries(m.properties).sort(([,g],[,w])=>g.index-w.index);delete m.properties[t.id],n.filter(([g])=>g!==t.id).forEach(([,g],w)=>{g.index=w})}})},visible:l,onVisibilityChange:m=>{p(S=>{const n=S.properties[t.id].data;n.visible=m})},alwaysShowActions:!0,children:e.jsxs(r.Stack,{direction:"column",gap:2,children:[e.jsx(r.TextField,{label:k("key"),size:"small",required:!0,sx:{width:"calc(100% - 80px - 8px)",flex:1,"& .MuiOutlinedInput-root":{borderColor:t.key?Z(i.properties,t.id,t.key)?"warning.main":void 0:"error.main"},"& .MuiFormLabel-root":{color:t.key?Z(i.properties,t.id,t.key)?"warning.main":"text.secondary":"error.main"},"& .MuiFormLabel-root.Mui-focused":{color:t.key?Z(i.properties,t.id,t.key)?"warning.main":"primary.main":"error.main"}},value:t.key||"",onChange:m=>{p(S=>{const n=S.properties[t.id].data;n.key=m.target.value.trim()})},InputProps:{endAdornment:!t.key||t.key&&Z(i.properties,t.id,t.key)?e.jsx(r.InputAdornment,{position:"end",sx:{width:16,ml:0},children:e.jsx(r.Tooltip,{title:t.key?k("duplicateKey"):k("requiredKey"),children:e.jsx(A.InfoRounded,{sx:{color:t.key?"warning.main":"error.main",fontSize:16}})})}):null}}),e.jsxs(r.Stack,{direction:"row",gap:1,children:[e.jsx(r.TextField,{label:k("label"),size:"small",sx:{flex:1},value:(((h=(v=t.locales)==null?void 0:v[a])==null?void 0:h.name)??((x=(o=t.locales)==null?void 0:o[b])==null?void 0:x.name))||"",onChange:m=>{p(S=>{var y;const n=S.properties[t.id].data;n.locales??(n.locales={}),(y=n.locales)[a]??(y[a]={}),n.locales[a].name=m.target.value})}}),e.jsx(r.TextField,{label:k("type"),size:"small",select:!0,sx:{flex:1},value:t.type==="string"&&t.multiline?"multiline":t.type||"string",onChange:m=>{p(S=>{const n=S.properties[t.id].data;if(n.locales)for(const g of Object.keys(n.locales))n.locales[g].defaultValue=void 0;const y=m.target.value;y==="multiline"?(n.type="string",n.multiline=!0):(typeof n.multiline<"u"&&delete n.multiline,n.type=y)})},children:Ut.map(m=>e.jsx(r.MenuItem,{value:m.value,children:m.label},m.value))})]}),e.jsxs(r.Stack,{direction:"row",gap:1,children:[e.jsx(j,{allComponents:d,defaultLocale:b,component:i,property:t,label:k("defaultValue"),size:"small",fullWidth:!0,value:(u=(c=t.locales)==null?void 0:c[a])==null?void 0:u.defaultValue,onChange:(m,S)=>{p(n=>{var g;const y=n.properties[t.id].data;if(S!=null&&S.forceUpdateProperty){const w=ie(y),f=ie(m);Object.keys(f).forEach(P=>{w[P]||Ie.default(y,P,f[P])})}else y.locales??(y.locales={}),(g=y.locales)[a]??(g[a]={}),y.locales[a].defaultValue=m})}}),t.type==="custom"?e.jsx(r.Box,{children:e.jsx(Lt,{property:t,allComponents:d})}):null]})]})})}function Mt(t){const[s,l]=I.useState(0);return I.useEffect(()=>{if(t.current){let i=t.current.parentElement,a=0;for(;i;)i.classList.contains("property-container")&&a++,i=i.parentElement;l(a)}},[]),s}function _e({config:t,currentLocale:s,defaultLocale:l,allComponents:i,onUpdateConfig:a,useI18nEditor:b=!0}){const{t:d}=R.useLocaleContext(),p=N.usePopupState({variant:"dialog"}),k=t.properties&&F.default(Object.values(t.properties),"index");return e.jsx(D.UploaderProvider,{children:e.jsxs(r.Stack,{gap:2,children:[e.jsxs(r.Stack,{direction:"row",gap:1,alignItems:"center",justifyContent:"space-between",children:[e.jsx(r.Typography,{variant:"subtitle1",children:d("properties")}),e.jsx(r.Box,{flex:1}),b&&e.jsx(r.Button,{sx:{minWidth:32,minHeight:32,p:0},...N.bindTrigger(p),children:e.jsx(A.TranslateRounded,{fontSize:"small"})})]}),t.properties&&Object.keys(t.properties).length>0?e.jsx(Be,{component:r.Stack,gap:2,list:t.properties,renderItem:(j,v,h)=>{const o=Te(t.properties,j.id);return e.jsx(r.Paper,{elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:o?"1px solid":"1px dashed",borderColor:"divider"},children:e.jsx(r.Stack,{gap:2,children:e.jsx(Re,{data:j,params:h,visible:o,config:t,currentLocale:s,defaultLocale:l,allComponents:i,onUpdateConfig:a})})},j.id)}}):e.jsx(Q.default,{style:{fontSize:12},children:d("maker.properties.noProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",onClick:()=>{a(j=>{var h;const v=O.nextId();j.properties??(j.properties={}),(h=j.properties)[v]??(h[v]={index:(k==null?void 0:k.length)||0,data:{id:v}})})},startIcon:e.jsx(A.AddRounded,{}),children:d("addObject",{object:d("property")})}),b&&e.jsx(De,{...N.bindDialog(p),component:t})]})})}function Lt({property:t,allComponents:s}){const l=N.usePopupState({variant:"popper"});return e.jsxs(e.Fragment,{children:[e.jsx(r.Button,{sx:{minWidth:0},...N.bindTrigger(l),children:e.jsx(A.SettingsRounded,{fontSize:"small"})}),e.jsx(r.Popper,{...N.bindPopper(l),children:e.jsx(ce.ClickAwayListener,{onClickAway:l.close,children:e.jsx(r.Paper,{children:e.jsx(r.Box,{width:500,p:2,children:e.jsx(re,{value:t.componentId,onChange:(i,a)=>t.componentId=a,allComponents:s})})})})})]})}function Jt({value:t,valueImmutable:s,onChange:l,defaultLocale:i,allComponents:a}){var k;const b=N.usePopupState({variant:"popper"}),{locale:d}=R.useLocaleContext(),p=typeof(t==null?void 0:t.componentId)=="string"?(k=a[t.componentId])==null?void 0:k.data:void 0;return p?e.jsxs(e.Fragment,{children:[e.jsx(r.Button,{sx:{minWidth:0},disabled:!p,...N.bindTrigger(b),children:e.jsx(A.SettingsRounded,{fontSize:"small"})}),e.jsx(r.Popper,{...N.bindPopper(b),sx:{zIndex:1e3},children:e.jsx(ce.ClickAwayListener,{onClickAway:b.close,children:e.jsx(r.Paper,{children:e.jsxs(r.Box,{width:500,p:2,children:[e.jsx(r.Typography,{variant:"subtitle1",children:"Parameters"}),e.jsx(r.Stack,{gap:1,children:(p==null?void 0:p.properties)&&F.default(Object.values(p.properties),"index").map(({data:j})=>{var v,h,o,x,c,u,m,S;return e.jsx(r.Box,{children:e.jsx(q,{allComponents:a,defaultLocale:i,size:"small",fullWidth:!0,component:p,property:j,valueImmutable:G.default((h=(v=t.properties)==null?void 0:v[j.id])==null?void 0:h.value),value:((x=(o=t.properties)==null?void 0:o[j.id])==null?void 0:x.value)??((u=(c=j.locales)==null?void 0:c[d])==null?void 0:u.defaultValue)??((S=(m=j.locales)==null?void 0:m[i])==null?void 0:S.defaultValue),onChange:n=>{if(s){const y=JSON.parse(JSON.stringify(t));l==null||l({...y,properties:{...y.properties,[j.id]:{value:n}}})}else K.getYjsValue(p).doc.transact(()=>{t.properties??(t.properties={}),t.properties[j.id]={value:n}})}})},j.id)})})]})})})})]}):null}function De({type:t="properties",component:s,...l}){var h,o,x;const{t:i}=R.useLocaleContext(),{state:{components:a,supportedLocales:b,config:{defaultLocale:d}}}=O.useStore(),p=O.useAllComponents(),k=K.getYjsValue(s).doc,j=t==="properties"?s.properties:t==="parameters"&&((h=s.renderer)==null?void 0:h.type)==="component"?(o=a[s.renderer.componentId])==null?void 0:o.data.properties:void 0,v=((x=s.renderer)==null?void 0:x.type)==="component"?s:void 0;return e.jsxs(r.Dialog,{...l,fullWidth:!0,maxWidth:"lg",children:[e.jsx(r.DialogTitle,{children:i("i18nEditorTitle")}),e.jsx(r.DialogContent,{children:j&&e.jsx(r.Stack,{children:e.jsxs(r.Table,{stickyHeader:!0,sx:{td:{verticalAlign:"top"}},children:[e.jsx(r.TableHead,{children:e.jsx(r.TableRow,{children:b.map(({locale:c,name:u})=>e.jsxs(r.TableCell,{children:[u,d===c&&e.jsx(A.StarRounded,{sx:{fontSize:12,color:"text.secondary"}})]},c))})}),e.jsx(r.TableBody,{children:F.default(Object.values(j),"index").map(({data:c})=>e.jsx(r.TableRow,{children:b.map(({locale:u})=>{var m,S,n,y,g,w,f,P,C,B,z,V,E,M,X,L,J,H,Y,$,ae,ue,de,pe,xe,me;return e.jsx(r.TableCell,{children:e.jsx(r.Stack,{gap:1,children:t==="properties"?e.jsxs(e.Fragment,{children:[e.jsx(r.TextField,{size:"small",label:"Key",value:c.key||"",onChange:W=>{k.transact(()=>{c.key=W.target.value.trim()})}}),e.jsx(r.TextField,{size:"small",label:i("label"),value:(((S=(m=c.locales)==null?void 0:m[u])==null?void 0:S.name)??((y=(n=c.locales)==null?void 0:n[d])==null?void 0:y.name))||"",onChange:W=>{k.transact(()=>{var U;c.locales??(c.locales={}),(U=c.locales)[u]??(U[u]={}),c.locales[u].name=W.target.value})}}),e.jsx(r.Box,{children:e.jsx(q,{allComponents:p,defaultLocale:d,component:s,property:c,size:"small",fullWidth:!0,label:"Default Value",valueImmutable:G.default((w=(g=c.locales)==null?void 0:g[u])==null?void 0:w.defaultValue),value:((P=(f=c.locales)==null?void 0:f[u])==null?void 0:P.defaultValue)??((B=(C=c.locales)==null?void 0:C[d])==null?void 0:B.defaultValue),onChange:W=>{k.transact(()=>{var U;c.locales??(c.locales={}),(U=c.locales)[u]??(U[u]={}),c.locales[u].defaultValue=W})}})})]}):t==="parameters"&&v?e.jsx(r.Box,{children:e.jsx(q,{allComponents:p,defaultLocale:d,component:s,property:c,size:"small",fullWidth:!0,valueImmutable:G.default((M=(E=(V=(z=v.renderer.properties)==null?void 0:z[c.id])==null?void 0:V.locales)==null?void 0:E[u])==null?void 0:M.value),value:((H=(J=(L=(X=v.renderer.properties)==null?void 0:X[c.id])==null?void 0:L.locales)==null?void 0:J[u])==null?void 0:H.value)??((ue=(ae=($=(Y=v.renderer.properties)==null?void 0:Y[c.id])==null?void 0:$.locales)==null?void 0:ae[d])==null?void 0:ue.value)??((pe=(de=c.locales)==null?void 0:de[u])==null?void 0:pe.defaultValue)??((me=(xe=c.locales)==null?void 0:xe[d])==null?void 0:me.defaultValue),onChange:W=>{k.transact(()=>{var U,fe,je,be,he;(U=v.renderer).properties??(U.properties={}),(fe=v.renderer.properties)[je=c.id]??(fe[je]={}),(be=v.renderer.properties[c.id]).locales??(be.locales={}),(he=v.renderer.properties[c.id].locales)[u]??(he[u]={}),v.renderer.properties[c.id].locales[u].value=W})}})}):null},c.id)},u)})},c.id))})]})})}),e.jsx(r.DialogActions,{children:e.jsx(r.Button,{onClick:c=>{var u;return(u=l.onClose)==null?void 0:u.call(l,c,"escapeKeyDown")},children:i("close")})})]})}const Pe=(t,s)=>l=>{const i=[l.palette.primary.main,l.palette.secondary.main,l.palette.success.main,l.palette.warning.main,l.palette.info.main],a=t%i.length,b=i[a%i.length],d=ge.alpha(b,.5),p=ge.alpha(b,1);return{borderColor:`${d} !important`,borderLeft:"3px solid !important",borderLeftColor:d,color:p,...s}};function Ht({property:t,onChange:s,defaultLocale:l,allComponents:i}){const{t:a,locale:b}=R.useLocaleContext(),d=I.useRef(null),p=Mt(d),k=I.useCallback(()=>{if(!(t.type!=="json"&&t.type!=="yaml"&&t.type!=="array")&&t.subProperties)try{const j={};F.default(Object.values(t.subProperties),"index").filter(o=>o.data.visible!==!1&&o.data.key).forEach(({data:o})=>{var c,u,m,S;if(!o.key)return;let x=((u=(c=o.locales)==null?void 0:c[b])==null?void 0:u.defaultValue)??((S=(m=o.locales)==null?void 0:m[l])==null?void 0:S.defaultValue);if(o.type==="number")x=Number(x);else if(o.type==="boolean")x=x===!0||x==="true";else if((o.type==="json"||o.type==="yaml")&&typeof x=="string")try{o.type==="json"?x=JSON.parse(x):x=te.parse(x)}catch(n){console.error("Error parsing nested value",x,n),x={}}j[o.key]=x});const h=Ce(j,t.type);s==null||s(h)}catch(j){console.error("Error converting structure to text:",j)}},[t,b,l,s]);return t.type!=="json"&&t.type!=="yaml"&&t.type!=="array"?null:e.jsxs(r.Stack,{direction:"column",gap:1.5,sx:{width:"100%"},children:[e.jsx(r.Divider,{sx:{mt:-1},children:e.jsx(r.Typography,{variant:"caption",color:"text.secondary",children:a("maker.properties.subProperties")})}),t.subProperties&&Object.keys(t.subProperties).length>0?e.jsx(Be,{component:r.Stack,gap:2,list:t.subProperties,renderItem:(j,v,h)=>{const o=j.visible!==!1;return e.jsx(r.Paper,{ref:d,elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:o?"1px solid":"1px dashed","&":Pe(p)},children:e.jsx(r.Stack,{gap:2,children:e.jsx(Re,{data:j,params:h,visible:o,config:{properties:t.subProperties},currentLocale:b,defaultLocale:l,allComponents:i,onUpdateConfig:x=>{try{const c={properties:t.subProperties||{}};x(c);const u={...t,subProperties:c.properties};s==null||s(u,{forceUpdateProperty:!0}),k()}catch(c){console.error("Error updating property:",c)}}})})},j.id)}}):e.jsx(Q.default,{style:{fontSize:12,height:100},children:a("maker.properties.noSubProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",size:"small",startIcon:e.jsx(A.AddRounded,{}),onClick:()=>{try{const j=t.subProperties||{},v=O.nextId(),o={index:Object.values(j).length,data:{id:v,key:"",type:"string",visible:!0,locales:{[b]:{name:"",defaultValue:""}},subProperties:{}}},x={...t,subProperties:{...j,[v]:o}};s==null||s(x,{forceUpdateProperty:!0}),k()}catch(j){console.error("Error adding property:",j)}},sx:{"&":Pe(p,{})},children:a("maker.properties.addSubProperty")})]})}function q({component:t,property:s,value:l,onChange:i,valueImmutable:a,defaultLocale:b,allComponents:d,...p}){var x,c,u,m,S;const{locale:k}=R.useLocaleContext(),j=D.useUploader(),v=I.useRef(null),h=()=>{var y;const n=(y=j==null?void 0:j.current)==null?void 0:y.getUploader();n==null||n.open(),v.current&&n.onceUploadSuccess(({response:g})=>{var f,P;let w=((f=g==null?void 0:g.data)==null?void 0:f.filename)||"";w&&(w=`mediakit://${w}`,l&&!l.includes("mediakit://")&&(w+=" # please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address")),(P=v.current)==null||P.call(v,w)})},o=p.label||((c=(x=s.locales)==null?void 0:x[k])==null?void 0:c.name)||((m=(u=s.locales)==null?void 0:u[b])==null?void 0:m.name)||s.key||s.id;if(s.type==="number")return e.jsx(Yt,{...p,label:o,NumberProps:{value:["number","string"].includes(typeof l)?l:null,onChange:(n,y)=>i==null?void 0:i(y)}});if(s.type==="decimal")return e.jsx(r.TextField,{...p,label:o,type:"text",value:l??"",onChange:n=>{const y=n.target.value;if(y===""||y==="-"){i==null||i(y);return}if(/^-?(?!.*\..*\.)[0-9]*(\.[0-9]{0,9})?$/.test(y)){let w=y;/^-?[1-9]+[0-9]*(\.[0-9]{1,9})?$/.test(w)&&(w=Number(w)),i==null||i(w)}}});if(s.type==="boolean")return e.jsx(r.FormControlLabel,{label:o,labelPlacement:"start",control:e.jsx(r.Switch,{checked:l===!0,onChange:(n,y)=>i==null?void 0:i(y)})});if(s.type==="color")return e.jsx(Nt,{label:o,value:l,onChange:n=>{i==null||i(n)}});if(s.type==="json"||s.type==="yaml")return e.jsx(Ft,{label:o,value:l,onChange:n=>{i==null||i(n)},property:s,component:t,defaultLocale:b,allComponents:d,PropertyValueField:q,onUpload:n=>{v.current=n,h()}});if(s.type==="custom"){const n=(S=d[s.componentId])==null?void 0:S.data;return n?e.jsx(r.Box,{width:"100%",children:e.jsx(ee.CustomComponentRenderer,{componentId:n.id,props:{label:o,value:l,onChange:i},locale:k,dev:{mode:"draft",components:d,defaultLocale:b}})}):e.jsx(r.TextField,{...p,label:o,disabled:!0,placeholder:"Click right button select a component"})}if(s.type==="component")return e.jsxs(r.Stack,{width:"100%",direction:"row",gap:1,children:[e.jsx(r.Box,{flex:1,children:e.jsx(re,{allComponents:d,label:o,value:l==null?void 0:l.componentId,onChange:(n,y)=>{a||!l?i==null||i({...l&&JSON.parse(JSON.stringify(l)),componentId:y}):typeof l=="object"&&(l.componentId=y)}})}),e.jsx(r.Box,{children:e.jsx(Jt,{value:l,valueImmutable:a,onChange:i,defaultLocale:b,allComponents:d})})]});if(!s.type||["string","url"].includes(s.type)){const n=s.type==="string"?s.multiline:void 0,y=s.type==="url"?l==null?void 0:l.url:l;return e.jsx(r.TextField,{...p,label:o,value:typeof y=="string"?y:"",multiline:n,minRows:n?2:void 0,maxRows:n?10:void 0,onChange:g=>i==null?void 0:i(s.type==="url"?{...l,url:g.target.value,mediaKitUrl:g.target.value}:g.target.value),InputProps:s.type==="url"?{sx:{pr:0},endAdornment:e.jsxs(r.InputAdornment,{position:"end",children:[e.jsx(D.UploaderButton,{onChange:async({response:g})=>{var C,B,z;const w=((C=g==null?void 0:g.data)==null?void 0:C.url)||((B=g==null?void 0:g.data)==null?void 0:B.fileUrl);let f;w&&(f=await D.getImageSize(w).catch(()=>D.getVideoSize(w)).catch(()=>{}));let P=((z=g==null?void 0:g.data)==null?void 0:z.filename)||"";P&&(P=`mediakit://${P}`),i==null||i({url:w,mediaKitUrl:P,width:f==null?void 0:f.naturalWidth,height:f==null?void 0:f.naturalHeight})}}),e.jsx(r.Tooltip,{title:"If you are using the 'mediaKitUrl' property, please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address.",children:e.jsx(A.InfoRounded,{sx:{cursor:"default"},fontSize:"small"})})]})}:void 0})}return s.type==="array"?e.jsx(Ot,{label:o,value:Array.isArray(l)?l:[],onChange:n=>i==null?void 0:i(n),property:s,renderItem:({item:n,index:y,onChange:g})=>s.subProperties&&Object.keys(s.subProperties).length>0?e.jsx(r.Stack,{gap:1,width:"100%",children:F.default(Object.values(s.subProperties),"index").filter(w=>w.data.visible!==!1).map(({data:w})=>w.key?e.jsx(q,{component:t,property:w,value:n[w.key],onChange:f=>{const P={...n,[w.key]:f};g(P)},size:"small",fullWidth:!0,defaultLocale:b,allComponents:d},w.id):null)},y):e.jsx(r.TextField,{size:p.size,fullWidth:!0,value:n,onChange:w=>g(w.target.value)})}):(console.error("Unsupported property type",s.type),null)}function Yt({NumberProps:t,...s}){const{getInputProps:l}=ce.unstable_useNumberInput(t),i=l();return e.jsx(r.TextField,{...s,inputProps:i})}const Ae=`import React from '@blocklet/pages-kit/builtin/react'
|
|
22
22
|
import { Box } from '@blocklet/pages-kit/builtin/mui/material'
|
|
23
23
|
|
|
24
24
|
export default function () {
|
|
@@ -27,5 +27,5 @@ export default function () {
|
|
|
27
27
|
Hello World
|
|
28
28
|
</Box>
|
|
29
29
|
)
|
|
30
|
-
}`,
|
|
31
|
-
`;function
|
|
30
|
+
}`,ze=`console.log('hello')
|
|
31
|
+
`;function $t({value:t}){const{locale:s}=R.useLocaleContext(),l=ne.useUpdate(),i=K.getYjsValue(t).doc;return I.useEffect(()=>{var a;(a=t.renderer)!=null&&a.script||(i.transact(()=>{t.renderer.script=t.renderer.type==="react-component"?Ae:ze}),l())},[t]),e.jsx(r.Box,{sx:{border:1,borderColor:"divider",borderRadius:1,overflow:"hidden"},children:e.jsx(oe.CodeEditor,{keyId:t.id,locale:s,language:"typescript",value:t.renderer.script||"",onChange:a=>t.renderer.script=a,typeScriptNoValidation:!1},t.id)})}function Gt({value:t}){var v,h,o;const{t:s}=R.useLocaleContext(),l=K.getYjsValue(t).doc,{state:{components:i,config:{defaultLocale:a},resources:b},localState:{currentLocale:d}}=O.useStore(),p=O.useAllComponents(),k=((v=i[t.renderer.componentId])==null?void 0:v.data)??((o=(h=b.components)==null?void 0:h[t.renderer.componentId])==null?void 0:o.component),j=N.usePopupState({variant:"dialog"});return e.jsxs(r.Stack,{gap:1,children:[e.jsx(re,{allComponents:p,excludes:[t.id],value:t.renderer.componentId,onChange:(x,c)=>t.renderer.componentId=c}),k&&e.jsxs(e.Fragment,{children:[e.jsxs(r.Stack,{direction:"row",justifyContent:"space-between",alignItems:"center",children:[e.jsx(r.Typography,{variant:"subtitle2",children:s("parameters")}),e.jsx(r.Button,{sx:{minWidth:32,minHeight:32,p:0},...N.bindTrigger(j),children:e.jsx(A.TranslateRounded,{fontSize:"small"})})]}),k.properties&&F.default(Object.values(k.properties),"index").map(({data:x})=>{var c,u,m,S,n,y,g,w,f,P,C,B,z,V,E,M;return e.jsx(r.Box,{children:e.jsx(q,{allComponents:p,defaultLocale:a,component:k,property:x,fullWidth:!0,size:"small",valueImmutable:G.default((S=(m=(u=(c=t.renderer.properties)==null?void 0:c[x.id])==null?void 0:u.locales)==null?void 0:m[d])==null?void 0:S.value),value:((w=(g=(y=(n=t.renderer.properties)==null?void 0:n[x.id])==null?void 0:y.locales)==null?void 0:g[d])==null?void 0:w.value)??((B=(C=(P=(f=t.renderer.properties)==null?void 0:f[x.id])==null?void 0:P.locales)==null?void 0:C[a])==null?void 0:B.value)??((V=(z=x.locales)==null?void 0:z[d])==null?void 0:V.defaultValue)??((M=(E=x.locales)==null?void 0:E[a])==null?void 0:M.defaultValue),onChange:X=>{l.transact(()=>{var L,J,H,Y,$;(L=t.renderer).properties??(L.properties={}),(J=t.renderer.properties)[H=x.id]??(J[H]={}),(Y=t.renderer.properties[x.id]).locales??(Y.locales={}),($=t.renderer.properties[x.id].locales)[d]??($[d]={}),t.renderer.properties[x.id].locales[d].value=X})}})},x.id)}),e.jsx(De,{...N.bindDialog(j),component:t,type:"parameters"})]})]})}function re({label:t,options:s,excludes:l,value:i,onChange:a,allComponents:b,...d}){var v;const{t:p}=R.useLocaleContext(),k=s??F.default(Object.values(Pt.default(b,...l??[])),"index").map(h=>h.data),j=(typeof i=="string"?(v=b[i])==null?void 0:v.data:void 0)??null;return e.jsx(r.Autocomplete,{...d,size:"small",options:k,autoHighlight:!0,isOptionEqualToValue:(h,o)=>h.id===o.id,getOptionKey:h=>h.id,getOptionLabel:h=>h.name||h.id,renderInput:h=>e.jsx(r.TextField,{label:t||p("component"),...h}),value:j,onChange:(h,o)=>{var c,u,m,S,n,y;let x={};o&&(x={blockletId:(c=b[o==null?void 0:o.id])==null?void 0:c.blockletId,blockletTitle:(u=b[o==null?void 0:o.id])==null?void 0:u.blockletTitle,componentName:((S=(m=b[o==null?void 0:o.id])==null?void 0:m.data)==null?void 0:S.name)||((y=(n=b[o==null?void 0:o.id])==null?void 0:n.data)==null?void 0:y.id)}),a==null||a(h,o==null?void 0:o.id,x)}})}function Ne({config:t,allComponents:s,defaultLocale:l,propertiesValue:i,currentLocale:a,onChange:b,props:d}){const{t:p}=R.useLocaleContext(),[k,j]=I.useState(t==null?void 0:t.properties),[v,h]=I.useState(null);I.useEffect(()=>{(()=>{var S,n;((S=t==null?void 0:t.renderer)==null?void 0:S.type)==="react-component"&&we.default(t==null?void 0:t.properties)?ee.transpileAndLoadScript((n=t==null?void 0:t.renderer)==null?void 0:n.script).then(y=>{const g=ee.getPropertiesFromCode(y);j(g)}):j(t==null?void 0:t.properties)})()},[JSON.stringify(t)]);const o=I.useCallback(()=>!t||!k?{}:Object.values(k).reduce((m,{data:S})=>{var y,g,w,f,P;const n=S.key||S.id;return m[S.id]={key:n,value:(d==null?void 0:d[n])??((y=i==null?void 0:i[S.id])==null?void 0:y.value)??((w=(g=S.locales)==null?void 0:g[a])==null?void 0:w.defaultValue)??((P=(f=S.locales)==null?void 0:f[l])==null?void 0:P.defaultValue),id:S.id,type:S.type},m},{}),[JSON.stringify(k),t,i,a,l]),x=I.useMemo(()=>{if(!k)return{canUseProperties:[],visibleProperties:[],canUsePropertiesKeys:[]};const m=F.default(Object.values(k),"index"),S=m.filter(({data:g})=>g.key&&Te(k,g.id)),n=m.filter(({data:g})=>g.key),y=n.map(({data:g})=>g.key);return{canUseProperties:n,visibleProperties:S,canUsePropertiesKeys:y}},[JSON.stringify(k)]),c=o(),u=St.default(c,"key");return e.jsx(D.UploaderProvider,{children:e.jsxs(r.Stack,{gap:2,children:[e.jsx(r.Typography,{variant:"subtitle1",children:p("maker.properties.parameters")}),!t||x.canUsePropertiesKeys.length===0?e.jsx(Q.default,{style:{fontSize:12},children:p("maker.properties.noParameters")}):e.jsxs(e.Fragment,{children:[e.jsx(r.Stack,{gap:2,children:x.visibleProperties.map(({data:m})=>{var S,n;return e.jsx(r.Box,{children:e.jsx(q,{allComponents:s,defaultLocale:l,size:"small",fullWidth:!0,component:t,property:m,valueImmutable:G.default((S=i==null?void 0:i[m.id])==null?void 0:S.value),value:(d==null?void 0:d[m.key||m.id])??((n=c[m.id])==null?void 0:n.value),onChange:y=>{b({path:["properties",m.id],value:{value:y},shouldSync:!(!m.type||Se.includes(m.type)),excludeKeys:[],key:m.key||m.id})}})},m.id)})}),e.jsx(r.Stack,{gap:2,sx:{width:"100%"},children:e.jsx(ee.CustomComponentRenderer,{componentId:(t==null?void 0:t.id)||"",renderType:"setting",locale:a,properties:c,dev:{mode:"draft",components:s,defaultLocale:l},props:{...wt.default(d??{},x.canUsePropertiesKeys),onChange:m=>{const{canUsePropertiesKeys:S}=x;Object.keys(m).filter(y=>{var g;return m[y]!==((g=u==null?void 0:u[y])==null?void 0:g.value)}).filter(y=>!(y==="locale"&&!vt.default(u[y],"locale"))).reduce((y,g)=>y.then(()=>{const w=u[g],f=S.includes(g);if(w!=null&&w.id&&f)return b({path:["properties",w.id],value:{value:m[g]},shouldSync:!(!w.type||Se.includes(w.type)),excludeKeys:[],key:w.key||w.id}),Promise.resolve();const P=`propertyNotFound${g}`;if(v===P)return Promise.resolve();ke.default.close(v);const C=ke.default.warning(p("maker.properties.propertyNotFound",{key:g}),{key:P});return h(C),Promise.resolve()}),Promise.resolve())}}})})]})]})})}exports.BasicInfo=Oe;exports.CustomComponentAutocomplete=re;exports.CustomComponentSettings=Wt;exports.DefaultReactComponentScriptTemplate=Ae;exports.DefaultWebComponentScriptTemplate=ze;exports.ParametersConfig=Ne;exports.PropertiesConfig=_e;exports.PropertyValueField=q;
|
package/lib/cjs/site-state.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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");const e=require("./_chunks/site-state-
|
|
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");const e=require("./_chunks/site-state-DdXLmutN.js");require("@blocklet/quickjs");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("crypto");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;
|