@blocklet/pages-kit-inner-components 0.4.82 → 0.4.84

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