@blocklet/pages-kit-inner-components 0.6.7 → 0.6.8

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.
Files changed (33) hide show
  1. package/lib/cjs/add-component.js +1 -1
  2. package/lib/cjs/chunks/components--WuwSB_H.js +57 -0
  3. package/lib/cjs/chunks/{draft-data-D44_IEV2.js → draft-data-CVjF01PQ.js} +1 -1
  4. package/lib/cjs/chunks/{home-BYk01EUy.js → home-BarvCpAK.js} +2 -2
  5. package/lib/cjs/chunks/index-DH8UBqWG.js +475 -0
  6. package/lib/cjs/chunks/{publish-button-C8XPA4g_.js → publish-button-CNo2gT6Q.js} +1 -1
  7. package/lib/cjs/chunks/site-state-C4Zpym9P.js +1 -0
  8. package/lib/cjs/chunks/state-DCxHc_MB.js +1 -0
  9. package/lib/cjs/components.js +1 -1
  10. package/lib/cjs/home.js +1 -1
  11. package/lib/cjs/project-html.js +6 -9
  12. package/lib/cjs/resources.js +1 -1
  13. package/lib/cjs/setting.js +2 -2
  14. package/lib/cjs/site-state.js +1 -1
  15. package/lib/es/add-component.js +2 -2
  16. package/lib/es/chunks/components-B8AH-ivu.js +596 -0
  17. package/lib/es/chunks/{draft-data-CafrGKeh.js → draft-data-BiayOfQz.js} +1 -1
  18. package/lib/es/chunks/{home-DW8SdyfO.js → home-DBc-g4K0.js} +3 -3
  19. package/lib/es/chunks/{index-D5gXPe_7.js → index-DaF8ujCZ.js} +675 -763
  20. package/lib/es/chunks/{publish-button-XSZrDaTQ.js → publish-button-DiKDLFU8.js} +3 -3
  21. package/lib/es/chunks/site-state-sUwlP4XQ.js +1586 -0
  22. package/lib/es/chunks/{state-0gvZF3k2.js → state-C3hsEhCe.js} +117 -121
  23. package/lib/es/components.js +7 -7
  24. package/lib/es/home.js +3 -3
  25. package/lib/es/project-html.js +132 -121
  26. package/lib/es/resources.js +28 -29
  27. package/lib/es/setting.js +148 -145
  28. package/lib/es/site-state.js +16 -15
  29. package/package.json +3 -3
  30. package/lib/cjs/chunks/index-BRgYwvuv.js +0 -475
  31. package/lib/cjs/chunks/site-state-BlQzwACl.js +0 -57
  32. package/lib/cjs/chunks/state-B6BF5wJ-.js +0 -1
  33. package/lib/es/chunks/site-state-BdLTu3Od.js +0 -2123
@@ -0,0 +1 @@
1
+ "use strict";const d=require("./components--WuwSB_H.js"),F=require("@syncedstore/core"),Je=require("yjs"),Ke=require("@blocklet/pages-kit/utils/data-source"),Q=require("@blocklet/pages-kit/utils/route"),He=require("lodash"),We=require("@blocklet/sdk/lib/config"),I=require("fs"),g=require("path"),Te=require("@blocklet/pages-kit/utils/common"),Qe=require("@blocklet/pages-kit/utils/page-model"),Xe=require("@blocklet/pages-kit/utils/property"),Ie=require("@blocklet/sdk/lib/component"),Ze=require("@reactivedata/reactive"),X=require("glob"),et=require("lib0/decoding"),tt=require("lib0/encoding"),st=require("lodash/cloneDeep"),at=require("lodash/debounce"),nt=require("lodash/get"),ot=require("lodash/isEmpty"),rt=require("lodash/set"),it=require("lodash/union"),be=require("lru-cache"),ct=require("p-limit"),C=require("sequelize"),lt=require("stream/promises"),pt=require("tar"),Y=require("ufo"),ut=require("wait-on"),z=require("y-protocols/awareness"),le=require("y-protocols/sync"),dt=require("yaml");require("sqlite3");require("@blocklet/pages-kit/types/state");const M=t=>t&&t.__esModule?t:{default:t};function ae(t){if(t&&t.__esModule)return t;const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const a=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,a.get?a:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const $=ae(Je),E=M(We),pe=ae(et),v=ae(tt),ft=M(st),Re=M(at),Ee=M(nt),we=M(ot),De=M(rt),gt=M(it),mt=M(ct),ht=M(ut),x=ae(dt),yt=C.DataTypes.sqlite.DATE.parse;C.DataTypes.sqlite.DATE.parse=(t,e)=>typeof t=="number"?new Date(t):yt(t,e);const U=new C.Sequelize({dialect:"sqlite",storage:d.databaseUrl,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});U.query("pragma journal_mode = WAL;");U.query("pragma synchronous = normal;");U.query("pragma journal_size_limit = 33554432;");U.query("pragma cache_size = -2000;");U.query("pragma mmap_size = 33554432;");process.on("SIGINT",async()=>{await U.close(),process.exit(0)});process.on("SIGTERM",async()=>{await U.close(),process.exit(0)});async function St(t,e){try{if(t.getDialect()!=="sqlite")return;const[s]=await t.query("SELECT 1");if(!s||s.length===0)return;await t.query("PRAGMA shrink_memory;")}catch(s){if(s.name==="SequelizeConnectionError"||s?.message&&/closed!/.test(s.message))return;console.error("Failed to cleanup SQLite memory",e,s)}}let fe=null;fe&&clearInterval(fe);fe=setInterval(async()=>{d.logger.info("Start cleanupSqliteMemory"),await St(U,d.databaseUrl),d.logger.info("End cleanupSqliteMemory")},60*1e3*10);class Ae extends C.Model{}Ae.init({id:{type:C.DataTypes.UUID,allowNull:!1,primaryKey:!0,defaultValue:C.DataTypes.UUIDV4},projectId:{type:C.DataTypes.UUID,allowNull:!1},componentId:{type:C.DataTypes.STRING,allowNull:!1}},{sequelize:U,tableName:"ProjectComponents",timestamps:!1});class L extends C.Model{static async getProjectByIdOrSlug(e){return L.findOne({where:{[C.Op.or]:[{id:e},{slug:e}]}})}}L.init({id:{type:C.DataTypes.UUID,defaultValue:C.DataTypes.UUIDV4,primaryKey:!0},name:{type:C.DataTypes.STRING,allowNull:!1},description:C.DataTypes.TEXT,createdAt:C.DataTypes.DATE,updatedAt:C.DataTypes.DATE,createdBy:{type:C.DataTypes.STRING,allowNull:!1},updatedBy:{type:C.DataTypes.STRING,allowNull:!1},slug:C.DataTypes.STRING,icon:C.DataTypes.STRING,pinnedAt:C.DataTypes.DATE,useAllResources:C.DataTypes.BOOLEAN,npmSecret:C.DataTypes.STRING,relatedBlocklets:{type:C.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){const t=this.getDataValue("relatedBlocklets");if(typeof t=="object")return t??{};try{return t?JSON.parse(t):{}}catch(e){return d.logger.error("Failed to parse relatedBlocklets",{error:e,rawValue:t}),{}}},set(t){try{this.setDataValue("relatedBlocklets",t?JSON.stringify(t):"{}")}catch(e){d.logger.error("Failed to set relatedBlocklets",{error:e,value:t}),this.setDataValue("relatedBlocklets","{}")}}},productionState:{type:C.DataTypes.JSON,allowNull:!1,defaultValue:{},get(){const t=this.getDataValue("productionState");if(typeof t=="object")return t??{};try{return t?JSON.parse(t):{}}catch(e){return d.logger.error("Failed to parse productionState",{error:e,rawValue:t}),{}}},set(t){try{this.setDataValue("productionState",t?JSON.stringify(t):"{}")}catch(e){d.logger.error("Failed to set productionState",{error:e,value:t}),this.setDataValue("productionState","{}")}}}},{sequelize:U,paranoid:!0});L.hasMany(Ae,{foreignKey:"projectId",as:"components"});const It="z8iZiDFg3vkkrPwsiba1TLXy3H9XHzFERsP8o",ge="page",me="trigger-reload-project-resource",Pe=It,bt="z2qa7BQdkEb3TwYyEYC1psK6uvmGnHSUHt5RM";function Z(t){t.observeDeep(e=>{e.some(s=>s.changes.keys.has("updatedAt")||s.changes.keys.has("publishedAt"))||t.set("updatedAt",new Date().toISOString())})}function Le(){return I.mkdtempSync(g.join(E.default.env.dataDir,"tmp-"))}function ee(t,e,s=[]){return Array.isArray(t)?t.flatMap((a,n)=>ee(a,e,[...s,n])):typeof t=="object"?t===null?[]:Object.entries(t).flatMap(([a,n])=>ee(n,e,[...s,a])):e(t)?[s]:[]}function R(t){return t.filter(e=>e!=null)}function Et(t){t.pages&&Object.keys(t.pages).forEach(s=>{const a=F.getYjsValue(t.pages[s]);a&&a instanceof $.Map&&Z(a)});const e=F.getYjsValue(t.pages);e&&e instanceof $.Map&&e.observe(s=>{s.changes.keys.forEach((a,n)=>{if(a.action==="add"){const o=F.getYjsValue(t.pages[n]);o&&o instanceof $.Map&&Z(o)}})})}function wt(t){t.routes&&Object.keys(t.routes).forEach(s=>{const a=F.getYjsValue(t.routes?.[s]);a&&a instanceof $.Map&&Z(a)});const e=F.getYjsValue(t.routes);e&&e instanceof $.Map&&e.observe(s=>{s.changes.keys.forEach((a,n)=>{if(a.action==="add"){const o=F.getYjsValue(t.routes?.[n]);o&&o instanceof $.Map&&Z(o)}})})}function At(t,e){for(const s of e||Object.keys(t.routes||{})){let a=s,n=[];if(s.includes("-")){const[o,...i]=s.split("-");a=o,n=i||[]}if(t.routes?.[a]!==void 0){t.routes[a].publishedAt=new Date().toISOString();const o=t.routes[a];if(!o||!o.params||o.params.length===0)continue;if(s.includes("-")&&n.length>0){const i=Q.getRouteMetaDataByOptionIds(n,o);i&&(i.publishedAt=new Date().toISOString())}if(!e){const i=Q.generateParamCombinations({basePath:o.path,params:o.params,routeId:o.id,paramsOptions:o.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});for(const c of i)c.routeMetaData??={},c.routeMetaData.publishedAt=new Date().toISOString()}}}}function ue({page:t,route:e,state:s,routeId:a,routePathInfo:n}){d.logger.info(`Executing datasource data assembly, routeId: ${a}, routePathInfo: ${JSON.stringify(n)}`);const o={...He.cloneDeep(t),id:a,slug:n?.path??e.path,createdAt:e.createdAt,updatedAt:n?.routeMetaData?.updatedAt??e.updatedAt,publishedAt:n?.routeMetaData?.publishedAt??e.publishedAt,isPublic:(n?.routeMetaData?.isPublic??e.isPublic)&&e.isPublic};for(const i of s.supportedLocales){if(e.dataSource){let c=e.id;n&&(c=n.paramOptionIds.join("-"));const p=e.dataSource.pathDataMappings?.[c]?.dataCache?.[i.locale]??e.dataSource.pathDataMappings?.[c]?.dataCache?.[s.config.defaultLocale||"en"];if(!p)continue;Ke.setPageDataSource(o,s,i.locale,p)}n&&n.routeMetaData&&(n.routeMetaData.publishedAt=new Date().toISOString())}return o}const Pt=30*60*1e3,B=new be.LRUCache({max:100,ttl:Pt});function Ot(t,e=[]){let s=0;const a=Array.from(B.keys()),n=[];for(const o of t){n.push(`page-html:prod:${o}:lang-path=none`);for(const i of e)n.push(`page-html:prod:/${i}${o}:lang-path=${i}`)}for(const o of a){const i=o.split(":lang-path=")[0]||"";for(const c of n){const m=(c.split(":lang-path=")[0]||"").replace(/\/:[^/]+/g,"");if(i.startsWith(m)){B.delete(o),s++,d.logger.info(`[Cache CLEAR] key: ${o}`);break}}}return d.logger.info(`[Cache CLEAR] cleared ${s} entries for patterns:`,n),s}function Ct({projectId:t,projectSlug:e,supportedLocales:s=[]}){let a=0;const n=Array.from(B.keys()),o=[];o.push(`page-html:prod:/${t}`),e&&e!==t&&o.push(`page-html:prod:/${e}`);for(const i of s)o.push(`page-html:prod:/${i}/${t}`),e&&e!==t&&(e!=="/"?o.push(`page-html:prod:/${i}/${e}`):o.push(`page-html:prod:/${i}`));for(const i of n)for(const c of o)if(i.startsWith(c)){B.delete(i),a++,d.logger.info(`[Cache CLEAR PROJECT] key: ${i}`);break}return d.logger.info(`[Cache CLEAR PROJECT] cleared ${a} entries for project ${t}${e?` (slug: ${e})`:""}`),a}function jt(){const t=B.size;return B.clear(),d.logger.info(`[Cache CLEAR ALL] cleared ${t} entries`),t}E.default.events.on(E.default.Events.envUpdate,jt);const{uploadToMediaKit:Tt}=require("@blocklet/uploader-server"),Oe=/^\w+(\w|-|\.)+\w+\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm)$/,J=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/i,ke=/mediakit:\/\/([a-f0-9]{32}\.(jpe?g|png|gif|svg|bmp|webp|mp4|m4v|webm))/gi,Dt=1e4,kt=3e4,H=0,de=1,vt=0,Rt=1,he=E.default,q=g.join(process.env.BLOCKLET_DATA_DIR,"site-state"),Lt=["production","draft"],_t=["production"];function te(t){return t?.replace(/\//g,"|")||""}function _e(){const t=he.env.languages?.map(s=>({locale:s.code,name:s.name}))||[],e=t[0]?.locale||"en";return{pageIds:[],pages:{},routeIds:[],routes:{},dataSourceIds:[],dataSources:{},components:{},supportedLocales:t,config:{defaultLocale:e},resources:{}}}class O extends $.Doc{constructor(e){super(),this.options=e,I.existsSync(this.draftYjsFilePath)&&$.applyUpdate(this,I.readFileSync(this.draftYjsFilePath)),this.syncedStore=Ze.reactive(F.syncedStore({pages:{},pageIds:[],components:{},supportedLocales:[],config:{},resources:{},routeIds:[],routes:{},dataSourceIds:[],dataSources:{}},this)),this.initObserver(),this.on("update",this.updateHandler),this.awareness=new z.Awareness(this),this.awareness.on("update",this.awarenessChangeHandler),this.ensureDataStructure()}static RELEASE_DELAY=5*60*1e3;static PERIODIC_CHECK_INTERVAL=2*60*60*1e3;static sharedInstances={};static pageUrlMapCache=new be.LRUCache({max:100,ttl:1e3*60*60*24});static periodicCheckTimer;static safeDeleteProjectStateDir(e){if(!e)throw new Error("Should provide project context");try{const s=g.join(q,e),a=g.join(q,`@del-${e}`);I.renameSync(s,a)}catch(s){d.logger.error("Failed to safe delete project state dir:",s)}}static async getProjectIds(){return(await L.findAll({attributes:["id"],raw:!0}))?.map(e=>e.id)}static get projectIds(){return X.globSync("*/",{cwd:q,ignore:["@del-*","@tmp-*",".*","staging","production","@backup-*","undefined"]})}static get allShared(){return this.projectIds.map(e=>O.shared(e))}static shared(e){if(!e)throw new Error("Should provide project context");let s=O.sharedInstances[e];return s||(s=new O({path:g.join(q,e)}),O.sharedInstances[e]=s,ze({projectId:e,pages:ne,components:oe}),s)}static async getProductionState(e){const s=await L.findByPk(e,{attributes:["productionState"]});if(we.default(s?.productionState)){const a=g.join(q,e,"production"),n=await Ce(a,{includeResources:!0})??_e();if(!n?.config?.defaultLocale){n.config??={};const o=he.env.languages?.map(i=>({locale:i.code,name:i.name}))||[];n.config.defaultLocale=o[0]?.locale}return n}return s?.productionState}destroy(){this.cancelRelease(),this.save({flush:!0}),this.conns.forEach((s,a)=>this.closeConn(a)),this.awareness.destroy();const e=g.basename(this.options.path);delete O.sharedInstances[e],super.destroy()}initObserver(){Et(this.syncedStore),wt(this.syncedStore)}get draftYjsFilePath(){return g.join(this.options.path,"draft.yjs")}static async getStateByProjectId(e,s){if(s==="draft"){const a=O.shared(e);return JSON.parse(JSON.stringify(a.syncedStore))}return O.getProductionState(e)}async getState(e){if(e==="draft")return JSON.parse(JSON.stringify(this.syncedStore));const s=g.basename(this.options.path);return O.getProductionState(s)}async setState(e,s){const a=await Ne(s,{exportAssets:!1,includeResources:!0}),n=this.getPublishDir(e);if(I.mkdirSync(g.dirname(n),{recursive:!0}),I.rmSync(n,{force:!0,recursive:!0}),I.renameSync(a,n),e==="production"){const o=g.basename(this.options.path);O.pageUrlMapCache.delete(o),await L.update({productionState:{...s}},{where:{id:o}})}}getPublishDir(e){return g.join(this.options.path,e)}syncedStore;conns=new Map;awareness;releaseTimer;awarenessChangeHandler=({added:e,updated:s,removed:a},n)=>{const o=e.concat(s,a);if(n!==null){const p=this.conns.get(n);p&&(e.forEach(m=>{p.add(m)}),a.forEach(m=>{p.delete(m)}))}const i=v.createEncoder();v.writeVarUint(i,de),v.writeVarUint8Array(i,z.encodeAwarenessUpdate(this.awareness,o));const c=v.toUint8Array(i);this.conns.forEach((p,m)=>this.send(m,c))};updateHandler=e=>{const s=v.createEncoder();v.writeVarUint(s,H),le.writeUpdate(s,e);const a=v.toUint8Array(s);this.conns.forEach((n,o)=>this.send(o,a))};ensureDataStructure=()=>{const{supportedLocales:e,pages:s,pageIds:a,config:n,routes:o,routeIds:i}=this.syncedStore;{const c=new Set(Object.keys(s));let p=0;for(;p<a.length;){const m=a[p];c.has(m)?(c.delete(m),p++):a.splice(p,1)}}{const c=new Set(Object.keys(o));let p=0;for(;p<i.length;){const m=i[p];c.has(m)?(c.delete(m),p++):i.splice(p,1)}}e.splice(0,e.length),e.push(...he.env.languages.map(c=>({locale:c.code,name:c.name}))),n.defaultLocale=e[0]?.locale;{let c=0;const p=new Set;for(;c<e.length;){const{locale:m}=e[c];p.has(m)?e.splice(c,1):(c++,p.add(m))}}};send=(e,s)=>{e.readyState!==vt&&e.readyState!==Rt&&this.closeConn(e);try{e.send(s,a=>{a&&this.closeConn(e)})}catch{this.closeConn(e)}};closeConn=e=>{if(e.removeAllListeners(),this.conns.has(e)){const s=this.conns.get(e);this.conns.delete(e),s&&z.removeAwarenessStates(this.awareness,Array.from(s),null)}e.close(),this.checkAndScheduleRelease()};checkAndScheduleRelease(){this.conns.size===0&&this.scheduleRelease()}scheduleRelease(){this.cancelRelease();const e=g.basename(this.options.path);this.releaseTimer=setTimeout(()=>{d.logger.info(`[SiteState] releasing instance due to no active connections: ${e}`),this.conns.size===0&&(this.releaseTimer=void 0,this.destroy())},O.RELEASE_DELAY),d.logger.info(`[SiteState] scheduled release for project ${e} in ${O.RELEASE_DELAY/1e3}s`)}cancelRelease(){if(this.releaseTimer){clearTimeout(this.releaseTimer),this.releaseTimer=void 0;const e=g.basename(this.options.path);d.logger.info(`[SiteState] cancelled scheduled release for project ${e}`)}}autoSave=Re.default(()=>{I.mkdirSync(g.dirname(this.draftYjsFilePath),{recursive:!0}),I.writeFileSync(this.draftYjsFilePath,$.encodeStateAsUpdate(this))},Dt);save=({flush:e=!1}={})=>{this.autoSave(),e&&this.autoSave.flush()};publish=async({mode:e,routes:s})=>{const a=await this.getState("draft"),n=await this.getState("production");await Se(a,n,{routes:s,mergeMode:"replace",deleteRoutes:!0,publishMode:e}),n.config.publishedAt=new Date().getTime(),At(this.syncedStore,s),await this.setState(e,n),await this.clearPageCacheForRoutes(s,n)};mergeState=async(e,s)=>{const a=JSON.parse(JSON.stringify(s));e.config.fontFamily??={};const n=a.config?.fontFamily,o=e.config?.fontFamily;e.config.fontFamily.title=n?.title||o?.title,e.config.fontFamily.description=n?.description||o?.description,await new Promise((i,c)=>{this.transact(async()=>{try{const p=await Se(e,s);i(p)}catch(p){c(p)}})})};clearPageCacheForRoutes=async(e,s)=>{const a=g.basename(this.options.path),o=(await L.findByPk(a))?.slug||a;if(d.logger.info(`[SiteState] clearing page cache for project ${a}, routes:`,e||[]),!e||e.length===0){Ct({projectId:a,projectSlug:o,supportedLocales:s.supportedLocales.map(m=>m.locale)});return}const i=s.supportedLocales.map(m=>m.locale),c=[],p=e.filter(m=>s.pages[m]);for(const m of p){const T=s.pages[m].slug;o&&o!==a&&(o==="/"?c.push(T):c.push(`/${o}${T}`)),c.push(`/${a}${T}`)}if(d.logger.info(`[SiteState] clearing page cache for project ${a}, pathPatterns:`,c),c.length>0){const m=Ot(c,i);d.logger.info(`[SiteState] cleared ${m} page cache entries for project ${a}, routes:`,e)}};addConnection=e=>{if(this.conns.has(e))return;this.cancelRelease(),e.binaryType="arraybuffer",this.conns.set(e,new Set),e.on("message",n=>this.messageListener(e,new Uint8Array(n)));let s=!0;const a=setInterval(()=>{if(!s)this.conns.has(e)&&this.closeConn(e),clearInterval(a);else if(this.conns.has(e)){s=!1;try{e.ping()}catch{this.closeConn(e),clearInterval(a)}}},kt);e.on("close",()=>{this.closeConn(e),clearInterval(a)}),e.on("pong",()=>{s=!0});{const n=v.createEncoder();v.writeVarUint(n,H),le.writeSyncStep1(n,this),this.send(e,v.toUint8Array(n));const o=this.awareness.getStates();if(o.size>0){const i=v.createEncoder();v.writeVarUint(i,de),v.writeVarUint8Array(i,z.encodeAwarenessUpdate(this.awareness,Array.from(o.keys()))),this.send(e,v.toUint8Array(i))}}};messageListener=(e,s)=>{try{const a=v.createEncoder(),n=pe.createDecoder(s),o=pe.readVarUint(n);switch(o){case H:v.writeVarUint(a,H),le.readSyncMessage(n,a,this,null),v.length(a)>1&&(this.ensureDataStructure(),this.send(e,v.toUint8Array(a)));break;case de:{z.applyAwarenessUpdate(this.awareness,pe.readVarUint8Array(n),e);break}default:d.logger.warn(`Unsupported messageType ${o}`)}}catch(a){d.logger.error(a)}this.save()};static async pageUrlMap(e,s){let a=[];s?a=[s]:a=await this.getProjectIds();let n={};if(e==="production"&&a?.length){const o=new Map(a?.map(i=>[i,!0])||[]);for(const i of a){const c=O.pageUrlMapCache.get(i);c&&(n={...n,...c},o.delete(i))}a=Array.from(o.keys())}if(a?.length){const o=await L.findAll({where:{id:{[C.Op.in]:a}}});await Promise.all(o?.map(async i=>{const c=i.id,p=i.slug||c,m={},k=e==="production"&&i?.productionState?i.productionState:await O.getStateByProjectId(i.id,e),T=gt.default(E.default.env.languages?.map(u=>u.code)||[],k.supportedLocales?.map(u=>u.locale)||[]),w=(u,l)=>{p&&(m[Y.joinURL("/",p,u)]={...l,shouldRedirect:!0,mainPage:!0}),m[Y.joinURL("/",c,u)]={...l,shouldRedirect:!0,mainPage:!0};for(const y of T){const j={...l,locale:y};m[Y.joinURL("/",y,c,u)]=j,p&&(m[Y.joinURL("/",y,p,u)]=j)}};if(e==="draft")for(const u of k.routeIds||[]){const l=k?.routes?.[u];if(!l)continue;if(l.params&&l.params.length>0){const h=Q.generateParamCombinations({basePath:l.path,params:l.params,routeId:l.id,paramsOptions:l.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]});for(const f of h){const S=f.path,A={projectId:c,projectSlug:p,pageSlug:S,pageId:l.displayTemplateId||"",routeId:u,defaultLocale:T?.[0],locales:T,publishedAt:k.config.publishedAt,isPublic:l.isPublic&&f?.routeMetaData?.isPublic};w(S,A)}}const y=l.path,j={projectId:c,projectSlug:p,pageSlug:y,pageId:l.displayTemplateId||"",routeId:u,defaultLocale:T?.[0],locales:T,publishedAt:k.config.publishedAt,isPublic:l.isPublic};w(y,j)}for(const u of k.pageIds){const l=k.pages[u];if(!l||e==="production"&&!l.isPublic)continue;const y=l.slug,j=i.slug||c,h={projectId:c,projectSlug:j,pageSlug:y,pageId:u,defaultLocale:T?.[0],locales:T,publishedAt:k.config.publishedAt,isPublic:l.isPublic,templateConfig:l.templateConfig};w(y,h)}e==="production"&&O.pageUrlMapCache.set(c,m),n={...n,...m}}))}return n}getDocumentSize(){return $.encodeStateAsUpdate(this).byteLength}static getInstancesSizeInfo(){const e=[];for(const[s,a]of Object.entries(O.sharedInstances)){const n=a.getDocumentSize();e.push({projectId:s,sizeInBytes:n,sizeInMB:`${(n/(1024*1024)).toFixed(2)} MB`,activeConnections:a.conns.size})}return e}static startPeriodicCheck(){this.periodicCheckTimer||(this.periodicCheckTimer=setInterval(()=>{this.performPeriodicCheck()},this.PERIODIC_CHECK_INTERVAL),d.logger.info(`[SiteState] periodic check started, interval: ${this.PERIODIC_CHECK_INTERVAL/(60*60*1e3)} hours`))}static stopPeriodicCheck(){this.periodicCheckTimer&&(clearInterval(this.periodicCheckTimer),this.periodicCheckTimer=void 0,d.logger.info("[SiteState] periodic check stopped"))}static performPeriodicCheck(){const e=Object.keys(O.sharedInstances).length,s=[],a=[];for(const[n,o]of Object.entries(O.sharedInstances))o.conns.size===0?s.push({projectId:n,instance:o}):a.push({projectId:n,connections:o.conns.size});if(d.logger.info(`[SiteState] periodic check summary: total instances: ${e}, with connections: ${a.length}, without connections: ${s.length}`),s.length>0){d.logger.info(`[SiteState] releasing ${s.length} instances without connections:`,s.map(o=>o.projectId));let n=0;for(const{projectId:o,instance:i}of s)try{d.logger.info(`[SiteState] releasing instance due to periodic check: ${o}`),i.destroy(),n++}catch(c){d.logger.error(`[SiteState] failed to release instance ${o} during periodic check:`,c)}d.logger.info(`[SiteState] periodic check completed: ${n}/${s.length} instances released successfully`)}else e>0?d.logger.debug("[SiteState] periodic check: all instances have active connections"):d.logger.debug("[SiteState] periodic check: no instances exist")}}async function $t(t,e,s){if(!t||!I.existsSync(t)||!I.lstatSync(t).isFile())return null;let a=s[t];return a||(a=(async()=>{try{return(await Tt({filePath:t,fileName:e}))?.data?.filename}catch(n){return d.logger.error(`Failed to upload asset ${t}:`,n),null}})(),s[t]=a),a}const $e=async(t,e)=>{const s=g.basename(t),a=await Ie.call({name:Pe,path:Y.joinURL("/uploads",s),responseType:"stream",method:"GET"});if(a.status>=200&&a.status<400){const n=I.createWriteStream(e);await lt.pipeline(a.data,n)}else throw new Error(`download asset failed ${a.status}`)},Ue=async(t,e)=>{await Promise.all(t.map(async s=>{try{await $e(s,g.join(e,g.basename(s)))}catch(a){d.logger.error(`Failed to export assets: ${s}, ${a}`)}}))};function Me(t){return Oe.test(t)?[t]:J.test(t)?(ke.lastIndex=0,Array.from(t.matchAll(ke)).map(s=>s[1]).filter(s=>!!s)):[]}async function W(t,e,s){const{getFilename:a,exportAssets:n}=s,o=g.join(e,a(t));if(I.mkdirSync(g.dirname(o),{recursive:!0}),I.writeFileSync(o,x.stringify(t)),n){const c=ee(t,p=>typeof p=="string"&&(Oe.test(p)||J.test(p))).map(p=>{const m=Ee.default(t,p);return Me(m)}).flat().filter(Boolean);await Ue(c,g.dirname(o))}}const ye=new be.LRUCache({max:100,ttl:1*60*1e3});async function ve(t,e,s){const a=ee(t,c=>typeof c=="string"&&(Oe.test(c)||J.test(c))),n=mt.default(2),o=a.map(c=>n(async()=>{try{const p=Ee.default(t,c),m=Me(p);for(const k of m){const T=g.basename(k),w=s.getFilePath(k,c),u=w?`${w}:${T}`:T,l=ye.get(u);if(l){J.test(p)||De.default(t,c,l);return}const y=await $t(w,T,e);y&&(J.test(p)||De.default(t,c,y),ye.set(u,y))}}catch(p){d.logger.error(`Failed to process upload for path ${c.join(".")}:`,p.message||p.reason)}})),i=await Promise.allSettled(o);s.onFinish?.(i)}async function Ne(t,{exportAssets:e,pageIds:s="all",componentIds:a="all",rawConfig:n,includeResources:o=!1,routeIds:i="all"}={}){const c=s==="all"?t.pageIds:s,p=Xe.getComponentDependencies({state:t,pageIds:c,componentIds:a==="all"?Object.keys(t.components):a}),m=i==="all"?t.routeIds:i,k=r=>({id:r.id,name:r.name,isTemplateSection:r.isTemplateSection??!1,templateDescription:r.templateDescription,llmConfig:r.llmConfig,component:r.component,config:r.config,visibility:r.visibility,sections:r?.sectionIds?R(r?.sectionIds?.map(b=>{const D=r.sections?.[b];return D&&k(D)})):void 0}),T=(r,b)=>({id:r.id,createdAt:r.createdAt,updatedAt:r.updatedAt,publishedAt:r.publishedAt,isPublic:r.isPublic??!0,templateConfig:r.templateConfig,meta:r.locales?.[b]??{},sections:R(r.sectionIds.map(D=>{const N=r.sections[D];return N&&k(N)})),dataSource:Object.fromEntries(Object.entries(r.dataSource||{}).map(([D,N])=>[D,N?.[b]??{}]))}),w=r=>({id:r.id,createdAt:r.createdAt,updatedAt:r.updatedAt,publishedAt:r.publishedAt,path:r.path,handler:r.handler,isPublic:r.isPublic??!0,params:r.params??[],enabledGenerate:r.enabledGenerate??!1,displayTemplateId:r.displayTemplateId,dataSource:r.dataSource}),u=R(m.map(r=>{const b=t.routes[r];return b&&w(b)})),l=R(t.supportedLocales.map(r=>r.locale).flatMap(r=>c.map(b=>{const D=t.pages[b];return D&&{locale:r,slug:D.slug,page:T(D,r)}}))),y=Le(),j=g.join(y,"pages");I.mkdirSync(j,{recursive:!0});const h=g.join(y,"components");I.mkdirSync(h,{recursive:!0});const f=g.join(y,"routes");I.mkdirSync(f,{recursive:!0});for(const{locale:r,slug:b,page:D}of l)await W(D,j,{getFilename:()=>`${te(b)||"index"}.${r}.yml`,exportAssets:e});for(const r of u)await W(r,f,{getFilename:()=>`${te(r.path)||"index"}.yml`,exportAssets:e});for(const r of p){const b=t.components[r]?.data;b&&await W(b,h,{getFilename:D=>`${D.name||"unnamed"}.${D.id}.yml`,exportAssets:e})}const S=g.join(y,".blocklet/pages/pages.config.yml");I.mkdirSync(g.dirname(S),{recursive:!0});const A={pages:R(c.map(r=>{const b=t.pages[r];return b&&{id:r,slug:b.slug}})),routes:R(m.map(r=>{const b=t.routes[r];return b&&{id:r,path:b.path}})),components:R(p.map(r=>{const b=t.components[r]?.data;return b&&{id:r,name:b.name}})),...o?{resources:{components:R(Object.keys(t.resources?.components||{}).filter(r=>p.includes(r)).map(r=>({id:r,name:t.resources?.components?.[r]?.component?.name})))}}:{},supportedLocales:t.supportedLocales,config:t.config};I.writeFileSync(S,x.stringify(A));const P=g.join(y,"config.source.json");if(n&&I.writeFileSync(P,JSON.stringify(n)),o){const r=g.join(y,"resources"),b=g.join(r,"components");I.mkdirSync(b,{recursive:!0});for(const V of Object.keys(t?.resources?.components??{}).filter(_=>p.includes(_))){const _=t.resources?.components?.[V]?.component;_&&await W(_,b,{getFilename:G=>`${G.name||"unnamed"}.${G.id}.yml`,exportAssets:e})}const D=g.join(y,"chunks");I.mkdirSync(D,{recursive:!0});const N=Ut();for(const V of Object.keys(t?.resources?.components??{}).filter(_=>p.includes(_))){const _=t.resources?.components?.[V]?.component;if(_&&_.renderer?.type==="react-component"){const G=_.renderer?.chunks??[];if(G?.length>0)for(const ie of G){const je=g.join(D,ie),ce=N?.[ie];try{ce&&I.existsSync(ce)&&!I.existsSync(je)&&I.copyFileSync(ce,je)}catch(Ye){d.logger.error(`copy chunk ${ie} error`,Ye.message)}}}}}return y}async function Ce(t,{importAssets:e,includeResources:s}={}){if(!I.existsSync(t))return null;let a,n=!1;try{I.lstatSync(t).isDirectory()?a=t:/\.(tgz|gz|tar)$/.test(t)&&(n=!0,a=Le(),await pt.x({file:t,C:a}));const o=X.globSync("**/.blocklet/pages/pages.config.yml",{cwd:a,absolute:!0}).at(0),i=o&&g.join(g.dirname(o),"../../pages"),c=o&&g.join(g.dirname(o),"../../components"),p=o&&g.join(g.dirname(o),"../../routes");if(!o)return null;const m=x.parse(I.readFileSync(o).toString()),k=(h,f,S)=>{let A=g.join(h,`${f}${S?`.${S}`:""}.yml`);return(!I.existsSync(A)||!I.lstatSync(A).isFile())&&(A=g.join(h,f,`index${S?`.${S}`:""}.yml`),!I.existsSync(A)||!I.lstatSync(A))?null:x.parse(I.readFileSync(A).toString())},T=(h,f)=>{try{const S=X.globSync(`*.${f}.yml`,{cwd:h,absolute:!0})[0];return S?x.parse(I.readFileSync(S).toString()):null}catch(S){d.logger.error("parse component error",S)}return null},w=(h,f)=>{let S=g.join(h,`${f}.yml`);return(!I.existsSync(S)||!I.lstatSync(S).isFile())&&(S=g.join(h,f,"index.yml"),!I.existsSync(S)||!I.lstatSync(S))?null:x.parse(I.readFileSync(S).toString())},u=R(m.pages.map(({slug:h})=>{const f=R(m.supportedLocales.map(({locale:P})=>{const r=i?k(i,te(h),P):void 0;if(r)return{locale:P,page:r};const b=i?k(i,h,P):void 0;return b&&{locale:P,page:b}})),S=f[0]?.page;if(!S)return null;const A=S.sections.map(Qe.unzipSection);return{id:S.id||Te.nextId(),createdAt:S.createdAt,updatedAt:S.updatedAt,publishedAt:S.publishedAt,isPublic:S.isPublic??!0,templateConfig:S.templateConfig,slug:h,sections:Object.fromEntries(A.map(P=>[P.id,P])),sectionIds:A.map(P=>P.id),locales:Object.fromEntries(f.map(({locale:P,page:r})=>[P,r.meta])),dataSource:S.dataSource?Object.fromEntries([...new Set(f.flatMap(({page:P})=>Object.keys(P.dataSource??{})))].map(P=>[P,Object.fromEntries(f.map(({locale:r,page:b})=>{const D=b.dataSource?.[P];return[r,D||{}]}))])):Object.fromEntries([...new Set(f.flatMap(({page:P})=>P.sections.map(r=>r.id)))].map(P=>[P,Object.fromEntries(f.map(({locale:r,page:b})=>{const D=b.dataSource?.[P];if(D)return[r,D];const N=b.sections.find(V=>V.id===P);return[r,N?.properties||{}]}))]))}})),l=R(m?.routes?.map(({path:h})=>{const f=p?w(p,te(h)):void 0;return{...f,id:f?.id||Te.nextId(),createdAt:f?.createdAt??new Date().toISOString(),updatedAt:f?.updatedAt??new Date().toISOString(),publishedAt:new Date(0).toISOString(),path:f?.path??`/${f?.id}`,params:f?.params,handler:f?.handler??"Pages Kit",isPublic:f?.isPublic??!0,enabledGenerate:f?.enabledGenerate??!1,displayTemplateId:f?.displayTemplateId??void 0,dataSource:f?.dataSource??{}}})??[]),y=c?R(m.components?.map(({id:h})=>T(c,h))??[]):[];if(e){const h=(...f)=>{d.logger.info(`[${n?g.basename(t):g.basename(g.join(t,"../../../../"))}] importAssets:`,...f)};try{h("wait image-bin api ready"),await ht.default({resources:[`${Ie.getComponentWebEndpoint(d.IMAGE_BIN_NAME)}/api/sdk/uploads`],validateStatus:A=>A>=200&&A<=500}),h("image-bin api is ready");const f={},S={};h("start to upload assets"),await Promise.allSettled([ve(y,f,{getFilePath:A=>c&&g.join(c,A),onFinish:A=>{h(`upload ${A.length} component assets`)}}),ve(u,S,{getFilePath:(A,P)=>{const r=Ee.default(u,P.slice(0,1));return i&&g.join(i,g.dirname(r.slug),A)},onFinish:A=>{h(`upload ${A.length} page assets`)}})]),h("upload assets done"),ye.clear(),global.gc&&global.gc()}catch(f){h("Error during asset import:",f)}}const j={};if(s){const h=o&&g.join(g.dirname(o),"../../resources/components"),f=R(m.resources?.components?.map(({id:S})=>T(h,S))??[]);f.length>0&&(j.components=Object.fromEntries(f.map((S,A)=>[S.id,{index:A,component:S}])))}return{supportedLocales:m.supportedLocales,pageIds:u.map(h=>h.id),components:Object.fromEntries(y.map((h,f)=>[h.id,{index:f,data:h}])),pages:Object.fromEntries(u.map(h=>[h.id,h])),config:m.config||{},resources:j,routeIds:l.map(h=>h.id),routes:Object.fromEntries(l.map(h=>[h.id,h])),dataSourceIds:[],dataSources:{}}}finally{n&&a&&I.rmSync(a,{force:!0,recursive:!0})}}async function Se(t,e,{routes:s,mergeMode:a="byUpdateTime",deleteRoutes:n=!1,publishMode:o=void 0}={}){try{o&&d.clearPreloadComponentsCacheByMode(o)}catch(w){d.logger.error("clear preload page cache error",{error:w})}const{pages:i,pageIds:c,routeIds:p,routes:m,supportedLocales:k}=t;if(o==="production"){let w=s??[],u=null;for(const l of p??[]){const y=m?.[l];if(y?.params&&y?.params.length>0&&y?.paramsOptions&&y?.paramsOptions.length>0){const j=Q.generateParamCombinations({basePath:y.path,params:y.params,routeId:y.id,paramsOptions:y.paramsOptions,currentIndex:0,currentParams:[],currentOptionIds:[],result:[]}),h=Object.fromEntries(j.map(f=>[`${l}-${f.paramOptionIds.join("-")}`,f]));u={...u||{},...h},s||(w=[...w,...j.map(f=>`${l}-${f.paramOptionIds.join("-")}`)])}else s||w.push(l)}d.logger.info("routeIds to be published: ",w);for(const l of w){let y=l;if(y.includes("-")){const[f]=y.split("-");y=f}const j=m?.[y];if(!j){const f=e.pageIds.indexOf(y);f!==-1&&n&&(e.pageIds.splice(f,1),delete e.pages[y]);for(const S of e.pageIds)S.includes(`${y}-`)&&(e.pageIds.splice(e.pageIds.indexOf(S),1),delete e.pages[S]);d.logger.info("delete main route page",y);continue}if(l.includes("-")&&!u?.[l]){const f=e.pageIds.indexOf(l);f!==-1&&n&&(e.pageIds.splice(f,1),delete e.pages[l]),d.logger.info("delete page",l);continue}if(!j.displayTemplateId){d.logger.info("no display template",l);continue}const h=i[j.displayTemplateId];if(!h){d.logger.info("no template page",l);continue}if(e.pageIds.includes(l)){if(d.logger.info("has need update page",l),a==="replace")e.pages[l]=ue({page:h,route:j,state:t,routeId:l,routePathInfo:u?.[l]}),d.logger.info("replace page",l);else if(a==="byUpdateTime"){const f=e.pages[j.id];(!f||j.updatedAt&&j.updatedAt>f.updatedAt)&&(e.pages[l]=ue({page:h,route:j,state:t,routeId:l,routePathInfo:u?.[l]}),d.logger.info("replace page by update time",l))}}else e.pageIds.push(l),e.pages[l]=ue({page:h,route:j,state:t,routeId:l,routePathInfo:u?.[l]}),d.logger.info("add page",l)}if(n&&!s)for(const l of e.pageIds)w?.includes(l)||(delete e.pages[l],d.logger.info("delete page",l)),e.pageIds=[...e.pageIds].filter(y=>w?.includes(y))}else{for(const w of c){const u=i[w];if(u)if(e.pageIds.includes(u.id)){if(a==="replace")e.pages[u.id]=u;else if(a==="byUpdateTime"){const l=e.pages[u.id];(!l||u.updatedAt&&u.updatedAt>l.updatedAt)&&(e.pages[u.id]=u)}}else e.pageIds.push(u.id),e.pages[u.id]=u}for(const w of p){const u=m[w];if(u)if(e.routeIds.includes(u.id)){if(a==="replace")e.routes[u.id]=u;else if(a==="byUpdateTime"){const l=e.routes[u.id];(!l||u.updatedAt&&u.updatedAt>l.updatedAt)&&(e.routes[u.id]=u)}}else e.routeIds.push(u.id),e.routes[u.id]=u}}if(e.supportedLocales.splice(0,e.supportedLocales.length),e.supportedLocales.push(...ft.default(k)),n)for(const w of Object.keys(e.components))delete e.components[w];let T=JSON.parse(JSON.stringify(t.components));T=Object.fromEntries(await Promise.all(Object.entries(T).map(async([w,u])=>{const l=await Fe(u?.data);return[w,{...u,data:l}]}))),Object.assign(e.components,T),Object.assign(e.config,JSON.parse(JSON.stringify(t.config))),we.default(t.resources.components)||(e.resources.components=JSON.parse(JSON.stringify(t.resources.components||{})))}const Fe=d.memoizeWithFs(async t=>{if(!we.default(t?.properties))return t;if(t?.renderer?.type==="react-component"){const{script:e,PROPERTIES_SCHEMA:s}=t?.renderer||{};if(s||e&&e.includes("PROPERTIES_SCHEMA"))try{const a=await d.getExportSchemaValueFromCode(e??"","PROPERTIES_SCHEMA",t.id,s);a&&a.length>0&&t&&(t.properties={},a.forEach((n,o)=>{t?.properties&&(t.properties[n.id]={index:o,data:n})}))}catch(a){d.logger.error("getPropertiesFromCode error",{componentId:t.id,name:t.name},{error:a})}}return t},{subdir:"getPropertiesFromCode"});let se,K,ne,oe;const qe=()=>Ie.getResources({types:[{did:Pe,type:ge},{did:bt,type:ge}]}),Ut=()=>{const t=qe(),e={};return t.forEach(s=>{const a=X.globSync("**/.blocklet/pages/pages.config.yml",{cwd:s.path,absolute:!0}).at(0),n=a&&g.join(g.dirname(a),"../../chunks");if(n&&I.existsSync(n)){const o=I.readdirSync(n);for(const i of o)e[i]=g.join(n,i)}}),e};function xe(){return se=(async()=>{const t=qe();K=(await Promise.all(t.map(async s=>{const a=s.path?await Ce(s.path,{importAssets:!1}):void 0;return a?{blockletId:s.did,state:a,blockletTitle:s.title}:void 0}))).filter(s=>!!s),ne=K.reduce((s,a)=>Object.assign(s,Object.fromEntries(Object.values(a.state.pages).map(n=>n?[n?.id,{page:n,blockletId:a.blockletId}]:[]))),{});const e=K.reduce((s,a)=>Object.assign(s,Object.fromEntries(Object.values(a.state.components).map(n=>[n.data.id,{blockletId:a.blockletId,component:n.data}]))),{});oe=Object.fromEntries(await Promise.all(Object.entries(e).map(async([s,a])=>{const n=await Fe(a.component);return[s,{...a,component:n}]})))})(),se}function Be(t){const e=Re.default(async()=>{await xe().catch(s=>{d.logger.error("load resource states error",{error:s})}),await t?.({states:K,pages:ne,components:oe})},3e3,{leading:!1,trailing:!0});return e(),E.default.events.on(E.default.Events.componentAdded,e),E.default.events.on(E.default.Events.componentRemoved,e),E.default.events.on(E.default.Events.componentStarted,e),E.default.events.on(E.default.Events.componentStopped,e),E.default.events.on(E.default.Events.componentUpdated,e),E.default.events.on(me,e),()=>{E.default.events.off(E.default.Events.componentAdded,e),E.default.events.off(E.default.Events.componentRemoved,e),E.default.events.off(E.default.Events.componentStarted,e),E.default.events.off(E.default.Events.componentStopped,e),E.default.events.off(E.default.Events.componentUpdated,e),E.default.events.off(me,e)}}const Ve=Symbol.for("GLOBAL_RESOURCE_STATES_LISTENER_KEY"),Ge=Symbol.for("GLOBAL_ENV_UPDATE_LISTENER_KEY"),re=globalThis;re[Ve]?.();re[Ve]=Be(async({pages:t,components:e})=>{const s=await O.getProjectIds();d.logger.info(`start update resource states projects(${s.length})`,s),await Promise.race([new Promise(a=>{setTimeout(()=>{a({})},30*1e3)}),Promise.all(s.map(async a=>{ze({projectId:a,pages:t,components:e})}))]).catch(a=>{d.logger.error("update resource states failed:",a)})});re[Ge]?.();re[Ge]=()=>{const t=()=>{O.pageUrlMapCache.clear(),d.logger.info("[Cache CLEAR ALL] clear all page url map cache by env update")};return E.default.events.on(E.default.Events.envUpdate,t),()=>{E.default.events.off(E.default.Events.envUpdate,t)}};O.startPeriodicCheck();process.on("beforeExit",()=>{O.stopPeriodicCheck()});process.on("SIGINT",()=>{O.stopPeriodicCheck(),process.exit(0)});process.on("SIGTERM",()=>{O.stopPeriodicCheck(),process.exit(0)});async function ze({projectId:t,pages:e,components:s}){const a=O.sharedInstances[t];if(!a){d.logger.info(`projectId: ${t} not found in sharedInstances`);return}if(a.syncedStore.resources.pages=e,(await L.findByPk(t))?.useAllResources)a.syncedStore.resources.components=s;else{const i=(await Ae.findAll({where:{projectId:t}})).map(p=>p.componentId),c=Object.fromEntries(Object.entries(s||{}).filter(([p])=>i.includes(p)));a.syncedStore.resources.components=c}d.logger.info(`update [${t}] resource states:`,{pages:Object.keys(a.syncedStore.resources.pages||{}).length,components:Object.keys(a.syncedStore.resources.components||{}).length})}async function Mt(){d.logger.info("trigger reload all project resource"),E.default.events.emit(me)}async function Nt({ensureLoaded:t=!0}={}){return t&&(se??=xe(),await se),{states:K,pages:ne,components:oe}}exports.COMPONENT_DID=Pe;exports.PUBLISH_MODES=_t;exports.Project=L;exports.RESOURCE_TYPE=ge;exports.SITE_STATE_PATH=q;exports.STATE_MODES=Lt;exports.SiteState=O;exports.downloadAsset=$e;exports.downloadAssets=Ue;exports.fromPackage=Ce;exports.getDefaultState=_e;exports.getResourceStates=Nt;exports.initPackResourceStates=Be;exports.mergeState=Se;exports.toPackage=Ne;exports.triggerReloadAllProjectResource=Mt;
@@ -0,0 +1 @@
1
+ "use strict";const Q=require("react/jsx-runtime"),j=require("ufo"),X=require("@blocklet/js-sdk"),Y=require("lodash/isEmpty"),Z=require("yaml"),H=require("@arcblock/ux/lib/Locale/context"),b=require("@blocklet/pages-kit/utils/common"),ee=require("@blocklet/pages-kit/utils/page-model");require("@mui/material");const T=require("@syncedstore/core"),te=require("@syncedstore/react"),oe=require("ahooks"),C=require("immer"),ne=require("lodash/cloneDeep"),re=require("lodash/debounce"),l=require("react"),U=require("react-router-dom"),se=require("y-indexeddb"),ce=require("y-websocket"),ae=require("yjs");require("@blocklet/pages-kit/types");const M=o=>o&&o.__esModule?o:{default:o};function ie(o){if(o&&o.__esModule)return o;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const u in o)if(u!=="default"){const p=Object.getOwnPropertyDescriptor(o,u);Object.defineProperty(n,u,p.get?p:{enumerable:!0,get:()=>o[u]})}}return n.default=o,Object.freeze(n)}const de=M(Y),ue=ie(Z),le=M(T),$=M(ne),J=M(re);function G(){const{pathname:o}=window.location,u=o.match(/\/admin\/(maker|previewer)\/([^/]+)/)?.[2],p=window.__PROJECT_ID__;if(!u&&!p)throw new Error("Unable to get projectId from pathname");return u||p}function pe(o){return`${o}:pages:version`}function fe(o,n){return n==="yaml"?de.default(o)?"":ue.stringify(o,{indent:2}):n==="json"?JSON.parse(JSON.stringify(o||{})):n==="array"?JSON.parse(JSON.stringify(o||[])):o}const L=window.blocklet?.prefix||"/",_=X.createAxios({timeout:200*1e3}),ge=window.location.protocol==="https:"?"wss":"ws",me=o=>j.joinURL(`${ge}://${window.location.hostname}`,L,`api/${o}/ws/pages`),Se="z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9";blocklet?.componentMountPoints.find(o=>o.did===Se)?.mountPoint||j.joinURL(L,"/image-bin");function Pe(o){return o&&!/^(https?:\/\/|\/)/.test(o)?window.location.origin+j.joinURL(L,"uploads",o):o}const Ie=window.innerWidth<=750;function we(o,n,u){if(!o||/\.gif/.test(o))return o;const p=(Ie?n/1.5:n)*(u==="quality"?1.5:1);return ye(o,{imageFilter:"resize",w:p,f:"webp"})}function ye(o,n){return!o||!n?o:j.withQuery(o,n)}async function he(o){return _.get(`/api/projects/${o}`).then(n=>n.data)}async function Ce(o){return _.post(`/api/projects/${o.id}/update`,o).then(n=>n.data)}const je=500,B=l.createContext(null);function ve({url:o,name:n,children:u,waitingSynced:p}){const[w,h]=l.useState(!1),{locale:g}=H.useLocaleContext(),I=E(),x=`${I}:MakerLocalState`,e=`${I}:${n}`,[t,s]=oe.useLocalStorageState(x,{defaultValue:{},listenStorageChange:!0}),r=l.useRef(t);r.current=t;const i=l.useMemo(()=>le.default({dataSourceIds:[],dataSources:{},pages:{},pageIds:[],routes:{},routeIds:[],components:{},supportedLocales:[],config:{},resources:{}}),[]),c=l.useMemo(()=>T.getYjsDoc(i),[i]);l.useMemo(()=>new se.IndexeddbPersistence(e,c),[e,c]);const a=l.useMemo(()=>new ce.WebsocketProvider(o,e,c,{params:{},resyncInterval:5*60*1e3}),[o,e,c]),d=l.useCallback(()=>{a&&(a.disconnect(),a.connect())},[a]),m=l.useMemo(()=>new ae.UndoManager([c.getArray("pageIds"),c.getMap("pages"),c.getArray("supportedLocales"),c.getMap("config"),c.getMap("dataSources"),c.getArray("dataSourceIds"),c.getArray("routeIds"),c.getMap("routes")],{doc:c}),[c]),[v,O]=l.useState(null),[k,R]=l.useState(!1),[N,A]=l.useState(void 0),D=l.useCallback(async()=>{if(I){R(!0);try{const f=await he(I);O(f)}catch(f){console.error("Failed to fetch project:",f)}finally{R(!1)}}},[I]),q=l.useCallback(async(f,S)=>{if(A(void 0),!!I){S?.optimisticUpdate&&v&&O(P=>({...P,...f}));try{const P=await Ce({...f});O(P)}catch(P){console.error("Failed to update project:",P),S?.optimisticUpdate&&O(v),A(P?.response?.data)}}},[I,v]);l.useEffect(()=>{I&&D()},[I,D]);const K=l.useMemo(()=>({doc:c,state:i,localState:{...t,currentLocale:g},setLocalState:f=>s(typeof f=="function"?S=>f(S??{}):f),undoManager:m,projectState:{project:v,isLoadingProject:k,error:N},updateProject:q,forceSync:d}),[c,i,JSON.stringify(t),s,m,v,k,q,N,g,d]);return l.useEffect(()=>{m.on("stack-item-added",({stackItem:f})=>{const{currentPageId:S,currentLocale:P,pages:y}=r.current;f.meta.set("localState",{currentPageId:S,currentLocale:P,pages:y})}),m.on("stack-item-popped",({stackItem:f})=>{const S=f.meta.get("localState");S&&s(P=>({...P,...S}))})},[m,s]),l.useEffect(()=>{a.awareness.setLocalState(t)},[a,t]),l.useEffect(()=>{a.once("synced",()=>h(!0));const f=()=>{s(y=>({...y,networkStatus:void 0}))},S=()=>{s(y=>({...y,networkStatus:"offline"}))},P=J.default(({status:y})=>{y==="connected"?f():y==="disconnected"&&S()},je);return a.on("status",P),window.addEventListener("online",f),window.addEventListener("offline",S),()=>{a.off("status",P),window.removeEventListener("online",f),window.removeEventListener("offline",S)}},[a,s]),p&&!w?null:Q.jsx(B.Provider,{value:K,children:u})}const F=()=>{const o=l.useContext(B);if(!o)throw new Error("Context is null");const n=te.useSyncedStore(o.state),{setLocalState:u,localState:p}=o,w=U.useNavigate(),h=E(),g=l.useMemo(()=>({get currentPage(){const{localState:{currentPageId:e}}=o;return e?n.pages[e]:void 0},get currentSection(){const{localState:{currentPageId:e,...t}}=o;if(!e)return;const s=t.pages?.[e]?.currentSectionId;if(s)return n.pages[e]?.sections[s]??this.currentPageModel?.getComponentById(s)?.model},get currentSectionProperties(){const{localState:{currentPageId:e,...t}}=o;if(!e)return;const s=t.pages?.[e]?.currentSectionId;if(!s)return;const r=n.pages[e]?.dataSource?.[s];if(!r)return;const{currentLocale:i}=this.currentLocaleMap;return i?r[i]:void 0},get currentSectionPropertiesWithFallback(){const{localState:{currentPageId:e,...t}}=o;if(!e)return;const s=t.pages?.[e]?.currentSectionId;if(!s)return;const r=n.pages[e]?.dataSource?.[s];if(!r)return;const{currentLocale:i,defaultLocale:c,fallbackLocale:a}=this.currentLocaleMap;if(i&&r[i])return r[i];if(c&&r[c])return r[c];if(a&&r[a])return r[a]},get currentLocaleMap(){const{localState:{currentLocale:e},state:{supportedLocales:t,config:{defaultLocale:s}}}=o;return{currentLocale:e,defaultLocale:s,fallbackLocale:t?.[0]?.locale??"en"}},get currentRoute(){const{localState:{currentRouteId:e}}=o;return e?n.routes?.[e]:void 0},get currentPageModel(){const e=this.currentPage??null;if(e)return ee.getPageTemplateModel(e,!1)}}),[JSON.stringify(p),n]),I=l.useMemo(()=>({setCurrentSectionId:(e,t)=>{e===p.currentPageId&&t===p.pages?.[e]?.currentSectionId||(w(j.joinURL("/admin/maker",h??"","pages",e)),u(s=>C.produce(s,r=>{r.currentPageId=e,r.currentComponentId=void 0,t!==void 0&&(r.pages??={},r.pages[e]??={},r.pages[e].currentSectionId=t??void 0),t?window.sessionStorage.setItem("iframe_show_id",`"${t}"`):window.sessionStorage.removeItem("iframe_show_id")})))},setCurrentComponentId:e=>{e!==p.currentComponentId&&(w(j.joinURL("/admin/maker",h??"","components",e)),u(t=>C.produce(t,s=>{s.currentComponentId=e})))},setCurrentRouteId:({routeId:e,dynamicParams:t})=>{u(s=>C.produce(s,r=>{r.currentRouteId=e,r.currentDynamicParams=t}))},setCustomComponentPreviewerProperties:(()=>{const e={};let t="";const s=J.default(()=>{u(r=>C.produce(r,i=>{i.customComponentPreviewerProperties??={},i.customComponentPreviewerProperties[t]={...i.customComponentPreviewerProperties[t],...$.default(e[t])},delete e[t]}))},5);return(r,i)=>{const c=e[r]??{};Object.assign(c,i),e[r]=c,t=r,s()}})(),setRouteGenerateProcess:e=>{u(t=>C.produce(t,s=>{e?s.routeGenerateProcess={...s.routeGenerateProcess,...e}:s.routeGenerateProcess={}}))},resetRouteGenerateProcess:()=>{u(e=>C.produce(e,t=>{t.routeGenerateProcess={progress:"complete"}}))}}),[u,w,h,g]),x=l.useMemo(()=>({addPage:(e,t)=>{const s=e?.id??b.nextId(),r={...e,id:s,createdAt:e?.createdAt??new Date().toISOString(),updatedAt:e?.updatedAt??new Date().toISOString(),publishedAt:new Date(0).toISOString(),slug:e?.slug??`/${s}`,sections:e?.sections??{},sectionIds:e?.sectionIds??[],isPublic:e?.isPublic??!0,templateConfig:e?.templateConfig??{isTemplate:e?.templateConfig?.isTemplate??!0,displayTemplateId:e?.templateConfig?.displayTemplateId??void 0,dataSourceIds:e?.templateConfig?.dataSourceIds??void 0,dataSourceParameters:e?.templateConfig?.dataSourceParameters??{},enabledGenerate:e?.templateConfig?.enabledGenerate??!1,agentId:e?.templateConfig?.agentId??void 0}};return o.doc.transact(()=>{n.pages[r.id]=r,n.pageIds.splice(t??n.pageIds.length,0,r.id)}),r},addRoute:(e,t)=>{const s=e?.id??b.nextId(),r={...e,id:s,createdAt:e?.createdAt??new Date().toISOString(),updatedAt:e?.updatedAt??new Date().toISOString(),publishedAt:new Date(0).toISOString(),path:e?.path??`/${s}`,handler:e?.handler??"Pages Kit",isPublic:e?.isPublic??!0,params:e?.params??[],enabledGenerate:e?.enabledGenerate??!1,displayTemplateId:e?.displayTemplateId??void 0,dataSource:e?.dataSource??{}};return o.doc.transact(()=>{n.routes??={},n.routeIds??=[],n.routes[r.id]=r,n.routeIds.splice(t??n.routeIds.length,0,r.id)}),r},deleteRoute:e=>{if(!e)return;const t=n.routeIds?.indexOf(e);t!==void 0&&t!==-1&&o.doc.transact(()=>{n.routeIds?.splice(t,1),delete n.routes?.[e]})},deletePage:e=>{const t=n.pageIds.indexOf(e);t!==-1&&o.doc.transact(()=>{n.pageIds.splice(t,1),delete n.pages[e]})},movePage:(e,t)=>{const{pageIds:s}=n,r=s.indexOf(e);r>=0&&s.splice(t,0,...s.splice(r,1))},addSection:(e,t,s,r)=>{const i=n.pages[e];if(!i)throw new Error(`Page ${e} is not exists`);const c={...t,id:t.id??b.nextId(),isTemplateSection:t.isTemplateSection??!0,llmConfig:t.llmConfig??{}},a=$.default(c.locales);return delete c.locales,o.doc.transact(()=>{if(r&&r.component==="layout-block"){const d=g.currentPageModel?.getComponentById(r.id);d&&(d.model.sections??={},d.model.sections[c.id]=c,d.model.sectionIds??=[],d.model.sectionIds.push(c.id))}else i.sections[c.id]=c,i.sectionIds.splice(s??i.sectionIds.length,0,c.id);a&&(i.dataSource??={},i.dataSource[c.id]=a)}),c},deleteSection:(e,t)=>{const s=n.pages[e];if(!s)throw new Error(`Page ${e} is not exists`);o.doc.transact(()=>{const r=[],i=g.currentPageModel?.getComponentById(t),c=i?.parent;if(i&&(r.push(i.model.id,...i.all().map(a=>a.model.id)),c?.model.component==="layout-block")){const a=c.model.sectionIds?.indexOf(t);a!==void 0&&a!==-1&&(c.model.sectionIds?.splice(a,1),delete c.model.sections?.[t]),c.model.config?.gridSettings&&Object.keys(c.model.config.gridSettings).forEach(d=>{try{delete c.model.config.gridSettings[d]?.[t]}catch{}}),c.model.config?.backgroundSectionId===t&&(c.model.config.backgroundSectionId=void 0)}r.forEach(a=>{const d=s.sectionIds.indexOf(a);d!==-1&&s.sectionIds.splice(d,1),s.sections[a]&&delete s.sections[a],s.dataSource?.[a]&&delete s.dataSource?.[a]})})},lockSection:(e,t)=>{if(!n.pages[e])throw new Error(`Page ${e} is not exists`);const r=g.currentPageModel?.getComponentById(t)?.model;r&&(r.locked=!r.locked)},toggleSectionVisibility:(e,t,s)=>{if(!n.pages[e])throw new Error(`Page ${e} is not exists`);const i=g.currentPageModel?.getComponentById(t)?.model;i&&(i.visibility=s)},moveSection:(e,t,s,r)=>{if(!n.pages[e])throw new Error(`Page ${e} is not exists`);if(r&&r!==t){const c=g.currentPageModel?.getComponentById(t),a=g.currentPageModel?.getComponentById(r),d=c?.parent,m=a?.parent;m&&d&&m?.model?.id===d?.model?.id?o.doc.transact(()=>{d.model.sectionIds.splice(c.getIndex(),1),d.model.sectionIds.splice(a.getIndex(),0,t)}):m&&d&&m?.model?.id!==d?.model?.id&&t!==r&&!c?.model?.sectionIds?.includes(r)&&o.doc.transact(()=>{m.model.sections[t]=JSON.parse(JSON.stringify(c.model)),m.model.sectionIds.splice(a.getIndex(),0,t),d.model.sectionIds.splice(c.getIndex(),1),delete d.model.sections[t]})}},copySection:(e,t)=>{if(!n.pages[e])throw new Error(`Page ${e} is not exists`);const r=g.currentPageModel?.getComponentById(t);if(!r?.model)throw new Error(`Section ${t} is not exists`);const i=JSON.parse(JSON.stringify(r.model)),c=Me(i),a=c.id,d=r?.parent;return d&&(d.model.sections[a]=c,d.model.sectionIds.push(a),I.setCurrentSectionId(e,a),g.currentPage?.dataSource?.[t]&&(g.currentPage.dataSource[a]=JSON.parse(JSON.stringify(g.currentPage.dataSource[t])))),c},addDataSource:e=>{const t=e.id??b.nextId(),s={...e??{},id:t,createdAt:new Date().toISOString()};return o.doc.transact(()=>{n.dataSourceIds??=[],n.dataSources??={},n.dataSourceIds.push(t),n.dataSources[t]=s}),n.dataSources[t]},deleteDataSource:e=>{const t=n.dataSourceIds.indexOf(e);t!==-1&&o.doc.transact(()=>{n.dataSourceIds.splice(t,1),delete n.dataSources[e]})}}),[n,o.doc,g]);return{...o,state:n,actions:x,localActions:I,...g}},E=()=>{const{projectId:o}=U.useParams();return o??G()??""},be=()=>window.__PROJECT_SLUG__??"";function W(o){const{resources:n}=o;if(!n.components)return{};const u={};return window?.blocklet?.componentMountPoints?.forEach(p=>{u[p.did]=p}),Object.fromEntries(Object.entries(n.components).map(([p,{blockletId:w,component:h}])=>[p,{data:h,blockletId:w,blockletTitle:u[w]?.title||w}]))}function V(o){const{components:n}=o;return n||{}}function z(o){return{...W(o),...V(o)}}const Oe=()=>z(F().state);function Me(o){const n=JSON.parse(JSON.stringify(o)),u=b.nextId();return{...n,id:u}}exports.StoreProvider=ve;exports.api=_;exports.autoResizeImage=we;exports.getAllComponents=z;exports.getCustomComponents=V;exports.getImageAbsoluteUrl=Pe;exports.getProjectIdFromPathnameOrWindow=G;exports.getProjectPageVersionKey=pe;exports.getResourceComponents=W;exports.getWssURL=me;exports.transformValue=fe;exports.useAllComponents=Oe;exports.useProjectId=E;exports.useProjectSlug=be;exports.useStore=F;
@@ -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/pages-kit/utils/builtin");require("@blocklet/sdk/lib/config");require("lru-cache");require("node-fetch");require("ufo");require("lodash/isEmpty");const e=require("./chunks/site-state-BlQzwACl.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;exports.skipCompileComponent=e.skipCompileComponent;
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/pages-kit/utils/builtin");require("@blocklet/sdk/lib/config");require("lru-cache");require("node-fetch");require("ufo");require("lodash/isEmpty");const e=require("./chunks/components--WuwSB_H.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;exports.skipTranspileComponent=e.skipTranspileComponent;
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-B6BF5wJ-.js");require("@arcblock/ux/lib/Locale/context");require("@arcblock/ux/lib/Result");require("@arcblock/ux/lib/Theme");require("@blocklet/pages-kit/builtin/page/header");require("@blocklet/pages-kit/contexts/color");require("@blocklet/pages-kit/utils/data-source");require("@blocklet/pages-kit/utils/route");require("@blocklet/ui-react/lib/Header");require("@emotion/css");require("@emotion/react");require("@mui/material");require("ahooks");require("isomorphic-dompurify");require("lodash/cloneDeep");require("lodash/isEmpty");require("lodash/isEqual");require("react");require("react-helmet");require("react-router-dom");require("react-use");require("ufo");require("./chunks/index-BRgYwvuv.js");const e=require("./chunks/home-BYk01EUy.js");require("./chunks/session-BRtsDvA-.js");exports.HomeView=e.HomeView;exports.PageRoutes=e.PageRoutes;exports.PageView=e.PageView;exports.PageViewByPath=e.PageViewByPath;exports.PageViewWithDataSource=e.PageViewWithDataSource;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-DCxHc_MB.js");require("@arcblock/ux/lib/Locale/context");require("@arcblock/ux/lib/Result");require("@arcblock/ux/lib/Theme");require("@blocklet/pages-kit/builtin/page/header");require("@blocklet/pages-kit/contexts/color");require("@blocklet/pages-kit/utils/data-source");require("@blocklet/pages-kit/utils/route");require("@blocklet/ui-react/lib/Header");require("@emotion/css");require("@emotion/react");require("@mui/material");require("ahooks");require("isomorphic-dompurify");require("lodash/cloneDeep");require("lodash/isEmpty");require("lodash/isEqual");require("react");require("react-helmet");require("react-router-dom");require("react-use");require("ufo");require("./chunks/index-DH8UBqWG.js");const e=require("./chunks/home-BarvCpAK.js");require("./chunks/session-BRtsDvA-.js");exports.HomeView=e.HomeView;exports.PageRoutes=e.PageRoutes;exports.PageView=e.PageView;exports.PageViewByPath=e.PageViewByPath;exports.PageViewWithDataSource=e.PageViewWithDataSource;exports.TranslucentHeader=e.TranslucentHeader;exports.default=e.Home;
@@ -1,13 +1,11 @@
1
- "use strict";var B=Object.create;var E=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var R=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of U(e))!O.call(t,o)&&o!==n&&E(t,o,{get:()=>e[o],enumerable:!(s=D(e,o))||s.enumerable});return t};var F=(t,e,n)=>(n=t!=null?B(N(t)):{},R(e||!t||!t.__esModule?E(n,"default",{value:t,enumerable:!0}):n,t));const J=require("@arcblock/did-auth-storage-nedb"),M=require("@blocklet/sdk/lib/config"),z=require("@blocklet/sdk/lib/service/auth"),G=require("@blocklet/sdk/lib/wallet"),Y=require("@blocklet/sdk/lib/wallet-authenticator"),Q=require("@blocklet/sdk/lib/wallet-handler"),T=require("path"),k=require("./chunks/site-state-BlQzwACl.js"),V=require("crypto"),X=require("@arcblock/crawler-middleware"),Z=require("@blocklet/pages-kit/types"),ee=require("@blocklet/pages-kit/utils/common"),P=require("@blocklet/pages-kit/utils/preload"),te=require("@blocklet/sdk/lib/component"),ne=require("express"),q=require("fs"),oe=require("lodash/get"),ce=require("mustache"),j=require("ufo"),i=t=>t&&t.__esModule?t:{default:t},se=i(J),a=i(M),ae=i(z),re=i(G),le=i(Y),ie=i(Q),ue=i(T),de=i(oe),pe=i(ce),me=(t={})=>{const e={data:new Map,timers:new Map,set:(n,s,o=t.ttl||36e5)=>{t.max&&e.data.size>=t.max&&e.delete(e.data.keys().next().value),e.timers.has(n)&&clearTimeout(e.timers.get(n)),e.timers.set(n,setTimeout(()=>e.delete(n),o)),e.data.set(n,s)},get:n=>e.data.get(n),has:n=>e.data.has(n),delete:n=>(e.timers.has(n)&&clearTimeout(e.timers.get(n)),e.timers.delete(n),e.data.delete(n)),clear:()=>{e.data.clear();for(const n of e.timers.values())clearTimeout(n);e.timers.clear()}};return e},x=me({max:1,ttl:1e3*30});re.default();const he=new le.default;new ie.default({authenticator:he,tokenStorage:new se.default({dbPath:ue.default.join(a.default.env.dataDir,"auth.db")})});const fe=new ae.default,ge=async()=>{try{const t=x.get("blockletInfo");if(t)return t;const{blocklet:e}=await fe.getBlocklet();return x.set("blockletInfo",e),e}catch{return null}},_e=async()=>await import("cheerio"),I={};function ye(t,e){const n=JSON.stringify([t,e]);return V.createHash("md5").update(n).digest("hex")}async function we(t,e){{const s=(await _e()).load(t);return e.forEach(o=>{s(o.selector.cheerio).replaceWith(o.value)}),s.html()}}async function Se(t,e){if(!e||e.length===0)return t;const n=ye(t,e);return I[n]??=we(t,e).finally(()=>{setTimeout(()=>{delete I[n]},2*1e3)}),I[n]}function be(t){return t.match(/<body[^>]*>(.*?)<\/body>/s)?.[1]||""}const ke=["/assets/"];function ve({app:t,viteDevServer:e,state:n}){let s;if(e){const c=q.readFileSync(T.resolve(process.cwd(),"./index.html"),"utf-8");t.use(async(f,S,v)=>{const C=f.originalUrl;s=await e.transformIndexHtml(C,c),v()})}else s=q.readFileSync(T.resolve(process.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const o=ne.Router();o.use((c,f,S)=>{if(c.headers["x-unique-record"]==="dial_http"){k.logger.info("[html] dial http request, return 200 status code"),f.status(200).send("ok");return}S()}),a.default.env.preferences.snapkitEnabled&&a.default.env.preferences.snapkitEndpoint&&a.default.env.SNAP_KIT_ACCESS_KEY&&o.use(X.createSnapshotMiddleware({endpoint:a.default.env.preferences.snapkitEndpoint,accessKey:a.default.env.SNAP_KIT_ACCESS_KEY,cacheMax:a.default.env.preferences.snapkitCacheSize||100})),o.get("/:path(*)?",async(c,f,S)=>{if(ke.some(r=>c.path?.startsWith(r))){S();return}const v=performance.now(),C=()=>Math.round(performance.now()-v),$="production";let g,b,_=s;if(c.path.startsWith("/pages")){const r=c.params.lang,y=c.cookies.nf_lang,w=new Set([...a.default.env.languages.map(h=>h.code)]);let m=(r&&w.has(r)?r:void 0)||(w.has(y)?y:void 0)||[...w][0];if((!m||!n.supportedLocales?.find(h=>h.locale===m))&&(m=n.supportedLocales?.[0]?.locale||""),m){const h=[];Object.values(n.pages).forEach(l=>{const K=Object.values(l?.sections??{}).filter(d=>d.component==="custom-component"&&d.config?.componentId).map(d=>({id:d.id,componentId:d.config.componentId,useCache:d.config.useCache,cacheDuration:d.config.cacheDuration,properties:l?.dataSource?.[d.id]?.[m]}));h.push(...K)});const H=new Promise(l=>{setTimeout(()=>{l({})},30*1e3)});try{await Promise.race([H,k.getPreloadComponents({mode:$,req:c,state:n,locale:m,instances:h,module:Z.PreloadComponentScriptModule.UMD_FN}).then(l=>{l&&(b=P.injectPreloadComponents(l))})])}catch(l){k.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements",l)}}}try{const r=g?.title||a.default.env.appName,y=g?.description||a.default.env.appDescription,w=j.withQuery(j.joinURL(a.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:r,description:y});_=pe.default.render(s,{ogTitle:r,ogDescription:y,ogImage:Ce(g?.image)||w,pagesPublishedAt:n?.config.publishedAt||new Date().getTime()})}catch{}const p=n?.config.fontFamily,W=c.query.mode==="draft"||c.url.includes("preview")||c.path?.startsWith("/admin");let u=g?.backgroundColor;if(u&&ee.isMuiColorKey(u)){const r=await ge();u=de.default(r,`settings.theme.light.palette.${u}`,u)}const A=M.getBlockletJs(),L=[{selector:{cheerio:"#injected-head-elements",pattern:/<script[^>]*id=["']injected-head-elements["'][^>]*><\/script>/gis},value:`
1
+ "use strict";var B=Object.create;var A=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,U=Object.prototype.hasOwnProperty;var N=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of L(e))!U.call(t,c)&&c!==n&&A(t,c,{get:()=>e[c],enumerable:!(o=K(e,c))||o.enumerable});return t};var R=(t,e,n)=>(n=t!=null?B(D(t)):{},N(e||!t||!t.__esModule?A(n,"default",{value:t,enumerable:!0}):n,t));const O=require("@arcblock/did-auth-storage-nedb"),x=require("@blocklet/sdk/lib/config"),F=require("@blocklet/sdk/lib/service/auth"),J=require("@blocklet/sdk/lib/wallet"),z=require("@blocklet/sdk/lib/wallet-authenticator"),G=require("@blocklet/sdk/lib/wallet-handler"),I=require("path"),b=require("./chunks/components--WuwSB_H.js"),Y=require("crypto"),Q=require("@arcblock/crawler-middleware"),V=require("@blocklet/pages-kit/types"),X=require("@blocklet/pages-kit/utils/common"),E=require("@blocklet/pages-kit/utils/preload"),Z=require("@blocklet/sdk/lib/component"),ee=require("express"),P=require("fs"),te=require("lodash/get"),ne=require("mustache"),T=require("ufo"),i=t=>t&&t.__esModule?t:{default:t},oe=i(O),a=i(x),ce=i(F),se=i(J),ae=i(z),re=i(G),le=i(I),ie=i(te),ue=i(ne),de=(t={})=>{const e={data:new Map,timers:new Map,set:(n,o,c=t.ttl||36e5)=>{t.max&&e.data.size>=t.max&&e.delete(e.data.keys().next().value),e.timers.has(n)&&clearTimeout(e.timers.get(n)),e.timers.set(n,setTimeout(()=>e.delete(n),c)),e.data.set(n,o)},get:n=>e.data.get(n),has:n=>e.data.has(n),delete:n=>(e.timers.has(n)&&clearTimeout(e.timers.get(n)),e.timers.delete(n),e.data.delete(n)),clear:()=>{e.data.clear();for(const n of e.timers.values())clearTimeout(n);e.timers.clear()}};return e},q=de({max:1,ttl:1e3*30});se.default();const pe=new ae.default;new re.default({authenticator:pe,tokenStorage:new oe.default({dbPath:le.default.join(a.default.env.dataDir,"auth.db")})});const fe=new ce.default,he=async()=>{try{const t=q.get("blockletInfo");if(t)return t;const{blocklet:e}=await fe.getBlocklet();return q.set("blockletInfo",e),e}catch{return null}},me=async()=>await import("cheerio"),C={};function ge(t,e){const n=JSON.stringify([t,e]);return Y.createHash("md5").update(n).digest("hex")}async function ye(t,e){{let n=await me();try{const o=n.load(t);return e.forEach(c=>{o(c.selector.cheerio).replaceWith(c.value)}),o.html()}catch{}finally{n=null}}return _e(t,e)}function _e(t,e){let n=t;return e.forEach(o=>{const c=typeof o.selector.pattern=="string"?new RegExp(o.selector.pattern,"gis"):o.selector.pattern;n=n.replace(c,o.value)}),n}async function we(t,e){if(!e||e.length===0)return t;const n=ge(t,e);return C[n]??=ye(t,e).finally(()=>{setTimeout(()=>{delete C[n]},10*1e3)}),C[n]}function Se(t){return t.match(/<body[^>]*>(.*?)<\/body>/s)?.[1]||""}const ve=["/assets/"];function be({app:t,viteDevServer:e,state:n}){let o;if(e){const s=P.readFileSync(I.resolve(process.cwd(),"./index.html"),"utf-8");t.use(async(g,S,k)=>{const p=g.originalUrl;o=await e.transformIndexHtml(p,s),k()})}else o=P.readFileSync(I.resolve(process.env.BLOCKLET_APP_DIR,"dist/index.html"),"utf-8");const c=ee.Router();c.use((s,g,S)=>{if(s.headers["x-unique-record"]==="dial_http"){b.logger.info("[html] dial http request, return 200 status code"),g.status(200).send("ok");return}S()}),a.default.env.preferences.snapkitEnabled&&a.default.env.preferences.snapkitEndpoint&&a.default.env.SNAP_KIT_ACCESS_KEY&&c.use(Q.createSnapshotMiddleware({endpoint:a.default.env.preferences.snapkitEndpoint,accessKey:a.default.env.SNAP_KIT_ACCESS_KEY,cacheMax:a.default.env.preferences.snapkitCacheSize||100})),c.get("/:path(*)?",async(s,g,S)=>{if(ve.some(r=>s.path?.startsWith(r))){S();return}const k="production";let p,v,y=o;if(s.path.startsWith("/pages")){const r=s.params.lang,_=s.cookies.nf_lang,w=new Set([...a.default.env.languages.map(m=>m.code)]);let h=(r&&w.has(r)?r:void 0)||(w.has(_)?_:void 0)||[...w][0];if((!h||!n.supportedLocales?.find(m=>m.locale===h))&&(h=n.supportedLocales?.[0]?.locale||""),h){const m=[];Object.values(n.pages).forEach(l=>{const H=Object.values(l?.sections??{}).filter(d=>d.component==="custom-component"&&d.config?.componentId).map(d=>({id:d.id,componentId:d.config.componentId,useCache:d.config.useCache,cacheDuration:d.config.cacheDuration,properties:l?.dataSource?.[d.id]?.[h]}));m.push(...H)});const W=new Promise(l=>{setTimeout(()=>{l({})},30*1e3)});try{await Promise.race([W,b.getPreloadComponents({mode:k,req:s,state:n,locale:h,instances:m,module:V.PreloadComponentScriptModule.UMD_FN}).then(l=>{l&&(v=E.injectPreloadComponents(l))})])}catch(l){b.logger.warn("getPreloadComponents timeout in promise race, skip inject html elements",l)}}}try{const r=p?.title||a.default.env.appName,_=p?.description||a.default.env.appDescription,w=T.withQuery(T.joinURL(a.default.env.appUrl,"/.well-known/service/blocklet/og.png"),{title:r,description:_});y=ue.default.render(o,{ogTitle:r,ogDescription:_,ogImage:ke(p?.image)||w,pagesPublishedAt:n?.config.publishedAt||new Date().getTime()})}catch{}const f=n?.config.fontFamily,M=s.query.mode==="draft"||s.url.includes("preview")||s.path?.startsWith("/admin");let u=p?.backgroundColor;if(u&&X.isMuiColorKey(u)){const r=await he();u=ie.default(r,`settings.theme.light.palette.${u}`,u)}const j=x.getBlockletJs(),$=[{selector:{cheerio:"#injected-head-elements",pattern:/<script[^>]*id=["']injected-head-elements["'][^>]*><\/script>/gis},value:`
2
2
  ${u?`<meta name="theme-color" content="${u}" /><style>html,body,#app {background-color: ${u};}</style>`:""}
3
- ${p?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${p.title}&display=swap">`:""}
4
- ${p?.description&&p?.description!==p?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${p.description}&display=swap">`:""}
3
+ ${f?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${f.title}&display=swap">`:""}
4
+ ${f?.description&&f?.description!==f?.title?`<link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=${f.description}&display=swap">`:""}
5
5
 
6
6
 
7
7
  <script>
8
-
9
- window.__PAGE_STATE__ = ${P.safeJSONStringify(n||null)};
10
-
8
+ window.__PAGE_STATE__ = ${E.safeJSONStringify(n||null)};
11
9
  <\/script>
12
10
 
13
11
 
@@ -18,13 +16,12 @@
18
16
  l.href = link.href;
19
17
  document.head.appendChild(l);
20
18
  });
21
-
22
19
  <\/script>
23
20
 
24
- ${W?`<script src="https://cdn.tailwindcss.com"><\/script>
21
+ ${M?`<script src="https://cdn.tailwindcss.com"><\/script>
25
22
  <script>
26
23
  window.tailwind.config = {
27
24
  darkMode: "class",
28
25
  };
29
26
  <\/script>`:""}
30
- `},A&&{selector:{cheerio:'script[src="__blocklet__.js"]',pattern:/<script[^>]*src=["']__blocklet__\.js["'][^>]*><\/script>/gis},value:`<script>${A}<\/script>`},b?.html&&{selector:{cheerio:"#injected-html-elements",pattern:/<script[^>]*id=["']injected-html-elements["'][^>]*><\/script>/gis},value:b.html},c.cachedHtml&&{selector:{cheerio:"body",pattern:/(<body[^>]*>).*?(<\/body>)/gis},value:`<body>${be(c.cachedHtml)}</body>`}].filter(Boolean);_=await Se(_,L),f.send(_),k.logger.info(`[html] render: ${c.path}, ${C()}ms`),_=null,g=null,b=null}),t.use(o)}function Ce(t){const e=te.getComponentMountPoint("image-bin");return e&&t&&!/^(https?:\/\/|\/)/.test(t)?a.default.env.appUrl+j.joinURL(e,"uploads",t):t}module.exports=ve;
27
+ `},j&&{selector:{cheerio:'script[src="__blocklet__.js"]',pattern:/<script[^>]*src=["']__blocklet__\.js["'][^>]*><\/script>/gis},value:`<script>${j}<\/script>`},v?.html&&{selector:{cheerio:"#injected-html-elements",pattern:/<script[^>]*id=["']injected-html-elements["'][^>]*><\/script>/gis},value:v.html},s.cachedHtml&&{selector:{cheerio:"body",pattern:/(<body[^>]*>).*?(<\/body>)/gis},value:`<body>${Se(s.cachedHtml)}</body>`}].filter(Boolean);y=await we(y,$),g.send(y),b.logger.info(`[html] render: ${s.path}`),y=null,p=null,v=null}),t.use(c)}function ke(t){const e=Z.getComponentMountPoint("image-bin");return e&&t&&!/^(https?:\/\/|\/)/.test(t)?a.default.env.appUrl+T.joinURL(e,"uploads",t):t}module.exports=be;
@@ -1 +1 @@
1
- "use strict";const c=require("./chunks/site-state-BlQzwACl.js"),L=require("async_hooks"),M=require("express"),F=require("fs"),J=require("joi"),X=require("lodash/groupBy"),W=require("lodash/sortBy"),x=require("path"),$=require("@blocklet/sdk/lib/middlewares/auth"),G=require("@blocklet/sdk/lib/component"),m=e=>e&&e.__esModule?e:{default:e},u=m(F),f=m(J),O=m(X),K=m(W),C=m(x),D=m($);new L.AsyncLocalStorage;const Y=async(e,t,o)=>{try{const{projectId:s}=e.params;if(!s)return o();const n=await c.Project.findByPk(s);if(!n)return t?.status(404).json({error:"Project not found"});const r=e.user?.did,a=e.user?.role||"UNKNOWN_ROLE";if(!r)return t?.status(401).json({error:"Authentication required"});if(c.isMultiTenant()){const g=n.createdBy===r,P=c.getMultiTenantAllProjectAccessPassports()?.includes?.(a);if(!g&&!P)return t?.status(403).json({error:"No permission to access this project in multi-tenant mode"})}else if(!["owner","admin","pagesEditor"].includes(a))return t?.status(403).json({error:"No permission to access this project in single-tenant mode"});e.project=n,e.projectId=s,o()}catch(s){c.logger.error("Project middleware error:",s),t?.status(400).json({error:"Internal server error"})}};function B(e,t){return new Promise((o,s)=>{const n=u.default.createReadStream(e),r=u.default.createWriteStream(t);n.on("error",s),r.on("error",s),r.on("finish",o),n.pipe(r)})}async function b(e,t){await u.default.promises.mkdir(t,{recursive:!0});const o=await u.default.promises.readdir(e,{withFileTypes:!0});for(const s of o){const n=C.default.join(e,s.name),r=C.default.join(t,s.name);s.isDirectory()?await b(n,r):await B(n,r)}}async function z(e,t){(await u.default.promises.stat(e)).isDirectory()?await b(e,t):await B(e,t)}const S=(e,t,o)=>c.isMultiTenant()?D.default()(e,t,o):D.default({roles:["owner","admin","pagesEditor"]})(e,t,o),H=(e,t)=>{const o=G.getResourceExportDir({projectId:e,releaseId:t});return x.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},w=M.Router(),N="@page",T="@component",j=":",_="ALL",U="@project",k=({pageId:e,projectId:t})=>[N,t,e].join(j),Q=e=>{const[t,o,s]=e.split(j);if(t===N)return{pageId:s,projectId:o}},v=({componentId:e,projectId:t})=>[T,t,e].join(j),V=e=>{const[t,o,s]=e.split(j);if(t===T)return{componentId:s,projectId:o}},Z=e=>[U,e].join(j),ee=e=>{const[t,o]=e.split(j);if(t===U)return o},te=e=>{try{return JSON.parse(e)}catch{}return{}};async function A(e){const t=await c.SiteState.getStateByProjectId(e,"production"),o=await c.Project.findByPk(e),s=t.pageIds.map(r=>{const a=t.pages[r];if(a)return{id:k({pageId:r,projectId:e}),name:a.slug}}).filter(Boolean),n=K.default(Object.values(t.components),r=>r.index).map(({data:r})=>({id:v({componentId:r.id,projectId:e}),name:r.name||r.id}));return{id:Z(e),name:o?.name||"Unnamed Project",children:[{id:k({pageId:_,projectId:e}),name:"Pages",children:s},{id:v({componentId:_,projectId:e}),name:"Components",children:n}]}}w.get("/resources",S,async(e,t)=>{const{projectId:o}=te(e.query.resourcesParams);if(o){e.params={...e.params,projectId:o},await Y(e,t,()=>{});const r=await A(o);t.json({resources:[r]});return}const s=await c.Project.findAll({where:{}}),n=await Promise.all(s.map(r=>A(r.id)));t.json({resources:n})});const oe=f.default.object({projectId:f.default.string().required().min(1),releaseId:f.default.string().allow(""),resources:f.default.array().items(f.default.string()).required(),locale:f.default.string().allow("")});w.post("/resources",S,async(e,t)=>{const{resources:o,projectId:s,releaseId:n}=await oe.validateAsync(e.body),r="production",a=[],g=[];for(const i of o){if(ee(i))continue;const{pageId:d,projectId:y}=Q(i)||{};if(d)d===_||d&&y&&a.push({pageId:d,projectId:y});else{const{componentId:I,projectId:p}=V(i)||{};I===_||I&&p&&g.push({componentId:I,projectId:p})}}const P=O.default(a,"projectId"),h=O.default(g,"projectId"),q=new Set([...Object.keys(P),...Object.keys(h)]),R=H(s,n);u.default.rmSync(R,{recursive:!0,force:!0}),u.default.mkdirSync(R,{recursive:!0});for(const i of q){const d=await c.SiteState.getStateByProjectId(i,r),y=P[i],I=h[i],p=y?.map(l=>l.pageId),E=I?.map(l=>l.componentId);if(p?.length||E?.length){const l=await c.toPackage(d,{exportAssets:!0,pageIds:p,componentIds:E});await z(l,R),u.default.rmSync(l,{recursive:!0,force:!0})}c.logger.info(`Exported resources for project ${i}`,{pageIds:p,componentIds:E})}t.json({})});w.get("/all-resources",S,async(e,t)=>{const{states:o}=await c.getResourceStates(),s=o?.map(n=>{const r={blockletId:n.blockletId,blockletTitle:n.blockletTitle,components:{}};if(n.state.components&&(r.components=n.state.components),Object.keys(r.components).length!==0)return r}).filter(Boolean);t.json(s)});module.exports=w;
1
+ "use strict";const g=require("./chunks/components--WuwSB_H.js"),c=require("./chunks/site-state-C4Zpym9P.js"),F=require("express"),L=require("fs"),J=require("joi"),X=require("lodash/groupBy"),W=require("lodash/sortBy"),B=require("path"),G=require("@blocklet/sdk/lib/middlewares/auth"),K=require("@blocklet/sdk/lib/component"),m=e=>e&&e.__esModule?e:{default:e},u=m(L),f=m(J),C=m(X),Y=m(W),D=m(B),k=m(G),$=async(e,t,o)=>{try{const{projectId:s}=e.params;if(!s)return o();const n=await c.Project.findByPk(s);if(!n)return t?.status(404).json({error:"Project not found"});const r=e.user?.did,a=e.user?.role||"UNKNOWN_ROLE";if(!r)return t?.status(401).json({error:"Authentication required"});if(g.isMultiTenant()){const P=n.createdBy===r,y=g.getMultiTenantAllProjectAccessPassports()?.includes?.(a);if(!P&&!y)return t?.status(403).json({error:"No permission to access this project in multi-tenant mode"})}else if(!["owner","admin","pagesEditor"].includes(a))return t?.status(403).json({error:"No permission to access this project in single-tenant mode"});e.project=n,e.projectId=s,o()}catch(s){g.logger.error("Project middleware error:",s),t?.status(400).json({error:"Internal server error"})}};function b(e,t){return new Promise((o,s)=>{const n=u.default.createReadStream(e),r=u.default.createWriteStream(t);n.on("error",s),r.on("error",s),r.on("finish",o),n.pipe(r)})}async function N(e,t){await u.default.promises.mkdir(t,{recursive:!0});const o=await u.default.promises.readdir(e,{withFileTypes:!0});for(const s of o){const n=D.default.join(e,s.name),r=D.default.join(t,s.name);s.isDirectory()?await N(n,r):await b(n,r)}}async function z(e,t){(await u.default.promises.stat(e)).isDirectory()?await N(e,t):await b(e,t)}const h=(e,t,o)=>g.isMultiTenant()?k.default()(e,t,o):k.default({roles:["owner","admin","pagesEditor"]})(e,t,o),H=(e,t)=>{const o=K.getResourceExportDir({projectId:e,releaseId:t});return B.join(o,c.COMPONENT_DID,c.RESOURCE_TYPE)},w=F.Router(),T="@page",U="@component",j=":",R="ALL",q="@project",v=({pageId:e,projectId:t})=>[T,t,e].join(j),Q=e=>{const[t,o,s]=e.split(j);if(t===T)return{pageId:s,projectId:o}},x=({componentId:e,projectId:t})=>[U,t,e].join(j),V=e=>{const[t,o,s]=e.split(j);if(t===U)return{componentId:s,projectId:o}},Z=e=>[q,e].join(j),ee=e=>{const[t,o]=e.split(j);if(t===q)return o},te=e=>{try{return JSON.parse(e)}catch{}return{}};async function A(e){const t=await c.SiteState.getStateByProjectId(e,"production"),o=await c.Project.findByPk(e),s=t.pageIds.map(r=>{const a=t.pages[r];if(a)return{id:v({pageId:r,projectId:e}),name:a.slug}}).filter(Boolean),n=Y.default(Object.values(t.components),r=>r.index).map(({data:r})=>({id:x({componentId:r.id,projectId:e}),name:r.name||r.id}));return{id:Z(e),name:o?.name||"Unnamed Project",children:[{id:v({pageId:R,projectId:e}),name:"Pages",children:s},{id:x({componentId:R,projectId:e}),name:"Components",children:n}]}}w.get("/resources",h,async(e,t)=>{const{projectId:o}=te(e.query.resourcesParams);if(o){e.params={...e.params,projectId:o},await $(e,t,()=>{});const r=await A(o);t.json({resources:[r]});return}const s=await c.Project.findAll({where:{}}),n=await Promise.all(s.map(r=>A(r.id)));t.json({resources:n})});const oe=f.default.object({projectId:f.default.string().required().min(1),releaseId:f.default.string().allow(""),resources:f.default.array().items(f.default.string()).required(),locale:f.default.string().allow("")});w.post("/resources",h,async(e,t)=>{const{resources:o,projectId:s,releaseId:n}=await oe.validateAsync(e.body),r="production",a=[],P=[];for(const i of o){if(ee(i))continue;const{pageId:d,projectId:_}=Q(i)||{};if(d)d===R||d&&_&&a.push({pageId:d,projectId:_});else{const{componentId:I,projectId:p}=V(i)||{};I===R||I&&p&&P.push({componentId:I,projectId:p})}}const y=C.default(a,"projectId"),O=C.default(P,"projectId"),M=new Set([...Object.keys(y),...Object.keys(O)]),E=H(s,n);u.default.rmSync(E,{recursive:!0,force:!0}),u.default.mkdirSync(E,{recursive:!0});for(const i of M){const d=await c.SiteState.getStateByProjectId(i,r),_=y[i],I=O[i],p=_?.map(l=>l.pageId),S=I?.map(l=>l.componentId);if(p?.length||S?.length){const l=await c.toPackage(d,{exportAssets:!0,pageIds:p,componentIds:S});await z(l,E),u.default.rmSync(l,{recursive:!0,force:!0})}g.logger.info(`Exported resources for project ${i}`,{pageIds:p,componentIds:S})}t.json({})});w.get("/all-resources",h,async(e,t)=>{const{states:o}=await c.getResourceStates(),s=o?.map(n=>{const r={blockletId:n.blockletId,blockletTitle:n.blockletTitle,components:{}};if(n.state.components&&(r.components=n.state.components),Object.keys(r.components).length!==0)return r}).filter(Boolean);t.json(s)});module.exports=w;
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),R=require("./chunks/state-B6BF5wJ-.js"),je=require("@arcblock/ux/lib/Empty"),O=require("@arcblock/ux/lib/Locale/context"),ee=require("@blocklet/code-editor"),ye=require("@mui/icons-material/AddRounded"),Ce=require("@mui/icons-material/ArrowDownward"),ve=require("@mui/icons-material/ArrowUpward"),ke=require("@mui/icons-material/DeleteOutline"),r=require("@mui/material"),Pe=require("lodash/sortBy"),v=require("react"),te=require("react-use"),se=require("@blocklet/pages-kit/builtin/color-picker"),V=require("@blocklet/pages-kit/builtin/uploader"),Se=require("@iconify-icon/react"),we=require("lodash/isEmpty"),Ie=require("lodash/set"),Te=require("yaml"),Be=require("lodash/cloneDeep"),Oe=require("@arcblock/ux/lib/Toast"),K=require("@blocklet/pages-kit/components"),Re=require("@blocklet/pages-kit/utils/property"),ie=require("@mui/base"),_=require("@mui/icons-material"),L=require("@syncedstore/core"),le=require("ahooks"),Ne=require("lodash/assign"),Ve=require("lodash/get"),_e=require("lodash/has"),ze=require("lodash/isEqual"),Ee=require("lodash/isNil"),Ae=require("lodash/isObject"),De=require("lodash/keyBy"),Fe=require("lodash/omit"),qe=require("lodash/pick"),Le=require("lodash/reduce"),A=require("material-ui-popup-state/hooks"),Ue=require("react-error-boundary"),Me=require("@emotion/css"),$=require("react-dnd"),ae=require("@blocklet/pages-kit/utils/common"),T=t=>t&&t.__esModule?t:{default:t};function We(t){if(t&&t.__esModule)return t;const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const l=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(s,i,l.get?l:{enumerable:!0,get:()=>t[i]})}}return s.default=t,Object.freeze(s)}const U=T(je),Ke=T(ye),Je=T(Ce),He=T(ve),Ye=T(ke),z=T(Pe),D=T(we),ce=T(Ie),G=We(Te),$e=T(Be),Q=T(Oe),Ge=T(Ne),Qe=T(Ve),Xe=T(_e),Ze=T(ze),J=T(Ee),et=T(Ae),tt=T(De),rt=T(Fe),st=T(qe),nt=T(Le);function ot({onClick:t,disabled:s,sx:i,...l}){return e.jsx(r.IconButton,{size:"small",color:"warning",variant:"outlined",disabled:s,onClick:t,...l,children:e.jsx(Ye.default,{fontSize:"small"})})}function it({onClick:t,disabled:s,sx:i,...l}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...l,children:e.jsx(He.default,{fontSize:"small"})})}function lt({onClick:t,disabled:s,sx:i,...l}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...l,children:e.jsx(Je.default,{fontSize:"small"})})}function at({label:t,value:s,onChange:i,disabled:l=!1,itemLabel:f="",emptyHeight:x=40,property:d,renderItem:b,...m}){const{t:u,locale:a}=O.useLocaleContext(),c=te.useUpdate(),o=v.useCallback(j=>{i(R.transformValue(j,d.type))},[i,d.type]),n=v.useMemo(()=>Array.isArray(s)?s:[],[s]),h=v.useCallback(()=>{const j=[...n,""];o(j),c()},[n,o,c]),g=v.useCallback(()=>{if(!d||!d.subProperties)return h();const j={};z.default(Object.values(d.subProperties),"index").forEach(({data:N})=>{if(!N.key)return;const E=N.locales?.[a]?.defaultValue??"";j[N.key]=E});const w=[...n,j];o(w),c()},[n,o,c,d,a,h]),p=v.useCallback(j=>{try{const C=JSON.parse(j);Array.isArray(C)?o(C):console.error("JSON解析结果不是数组")}catch(C){console.error("JSON解析错误:",C)}},[o]),y=v.useCallback(j=>{const C=n.filter((w,N)=>N!==j);o(C),c()},[n,o,c]),P=v.useCallback(j=>{if(j<=0)return;const C=[...n],w=C[j];C[j]=C[j-1],C[j-1]=w,o(C),c()},[n,o,c]),I=v.useCallback(j=>{if(j>=n.length-1)return;const C=[...n],w=C[j];C[j]=C[j+1],C[j+1]=w,o(C),c()},[n,o,c]),S=v.useCallback((j,C)=>{const w=[...n];w[j]=C,o(w)},[n,o]),k=d&&d.subProperties&&Object.keys(d.subProperties).length>0,B=v.useMemo(()=>[{field:"index",headerName:"#",width:40,align:"center",renderCell:({index:j})=>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:j+1})},{field:"content",headerName:"",renderCell:({row:j,index:C})=>b&&k?b({item:j,index:C,property:d,onChange:w=>S(C,w)}):e.jsx(r.TextField,{fullWidth:!0,size:"small",disabled:l,value:j,placeholder:f||`${u("item")} ${C+1}`,onChange:w=>S(C,w.target.value),...m})},{field:"actions",headerName:"",width:30,align:"center",renderCell:({index:j})=>e.jsxs(r.Stack,{direction:"column",spacing:.25,children:[e.jsx(it,{disabled:l||j===0,onClick:()=>P(j)}),e.jsx(lt,{disabled:l||j===n.length-1,onClick:()=>I(j)}),e.jsx(ot,{disabled:l,onClick:()=>y(j)})]})}],[b,k,d,S,f,u,l,m,y,P,I,n.length]);return k?e.jsxs(r.Stack,{sx:{width:"100%",gap:1},children:[t&&e.jsx(r.FormLabel,{children:t}),n.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:B.map(j=>e.jsx(r.TableCell,{width:j.width,align:j.align||"left",sx:{fontWeight:"bold"},children:j.renderHeader?j.renderHeader():j.headerName},j.field))})}),e.jsx(r.TableBody,{children:n.map((j,C,w)=>e.jsx(r.TableRow,{sx:{borderBottom:C<w.length-1?"1px solid":"none",borderColor:"divider","&:hover":{backgroundColor:"action.hover"}},children:B.map(N=>e.jsx(r.TableCell,{width:N.width,align:N.align||"left",sx:{borderBottom:"none"},children:N.renderCell({row:j,index:C,onChange:E=>S(C,E)})},`${C}-${N.field}`))},C))})]})}):e.jsx(U.default,{style:{fontSize:12,height:x},children:u("maker.properties.arrayEmpty")}),e.jsx(r.Button,{fullWidth:!0,size:"small",variant:"outlined",disabled:l,startIcon:e.jsx(Ke.default,{}),onClick:g,children:u("maker.properties.addArrayItem")})]}):e.jsxs(r.Stack,{sx:{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(ee.CodeEditor,{keyId:d.id,locale:a,language:"json",value:JSON.stringify(n,null,2),onChange:j=>p(j||""),fullScreenOptions:{enableEscExit:!0,targetContainer:()=>document.getElementById("parameters-config-dialog")||null}},d.id)})]})}function ct({ref:t,showMarkdown:s,markdown:i,onMarkdownChange:l,showUploader:f,value:x,meta:d,onChange:b,...m}){const[u,a]=v.useState("");v.useEffect(()=>{a(x||"")},[x,a]);const c=async()=>{if(u!==x){const n=R.getImageAbsoluteUrl(u);if(!n){b(u,void 0);return}const h=await V.getImageSize(n).catch(()=>V.getVideoSize(n)).catch(()=>{});b(u,{...h,filename:u})}};te.useDebounce(()=>{u!==x&&b(u)},300,[u]),v.useImperativeHandle(t,()=>({submit:c}));const o={};return f&&(o.InputProps={sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mx:.5},children:e.jsx(V.UploaderButton,{onChange:async({response:n})=>{const h=n?.data?.filename,g=R.getImageAbsoluteUrl(h)||"";let p={};g&&(p=await V.getImageSize(g).catch(()=>V.getVideoSize(g)).catch(()=>{})),b(h,{...p,filename:h})}})})}),e.jsx(r.TextField,{size:"small",fullWidth:!0,...m,label:e.jsxs(r.Stack,{direction:"row",spacing:1,sx:{alignItems:"center"},children:[m.label,s&&e.jsxs(e.Fragment,{children:[" (",e.jsx(r.FormControlLabel,{checked:i,label:e.jsx(r.Box,{component:Se.Icon,icon:"tabler:markdown",sx:{verticalAlign:"middle"}}),labelPlacement:"start",control:e.jsx(r.Switch,{size:"small"}),sx:{ml:.25,pr:1},onChange:(n,h)=>l?.(h)}),")"]})]}),value:u,onChange:n=>a(n.target.value),...o,onKeyDown:n=>{n.keyCode!==229&&n.key==="Enter"&&c()},slotProps:{inputLabel:{shrink:!0,...m.InputLabelProps}}})}function ut({value:t,onChange:s,...i}){const l=v.useRef(null);return e.jsxs(e.Fragment,{children:[e.jsx(ct,{...i,value:t,onChange:s,InputProps:{endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(se.ColorItem,{color:t??"",style:{width:"1.5rem",height:"1.5rem",padding:0},onClick:()=>{l.current?.open({value:t??""})}})})}}),e.jsx(se.ConfigColorDialog,{ref:l,onSave:({value:f},x)=>{s(f),x()}})]})}function dt({label:t,value:s,onChange:i,property:l,component:f,defaultLocale:x,allComponents:d,PropertyValueField:b,onUpload:m}){const{locale:u}=O.useLocaleContext(),a=v.useRef(null);if(!D.default(l.subProperties)){const o=z.default(Object.values(l.subProperties||{}),"index").filter(n=>n.data.visible!==!1&&n.data.key);return e.jsxs(r.Stack,{sx:{width:"100%"},children:[e.jsx(r.FormLabel,{sx:{px:.25,py:.5},children:t}),e.jsx(r.Box,{children:e.jsx(r.Box,{sx:{position:"relative"},children:o.map((n,h)=>{const{data:g}=n,p=g.key??g.id,y=h===o.length-1;let P=null;try{s&&typeof s=="object"?P=s[p]:typeof s=="string"&&(P=(l.type==="yaml"?G.parse(s||""):JSON.parse(s||"{}"))[p])}catch{}P==null&&(g.locales&&u&&g.locales[u]?P=g.locales[u].defaultValue:g.locales&&x&&g.locales[x]&&(P=g.locales[x].defaultValue));const I=k=>{try{let B={};if(typeof s=="string")try{B=l.type==="yaml"?G.parse(s||""):JSON.parse(s||"{}")}catch{}else typeof s=="object"&&s!==null&&(B={...s});ce.default(B,p,k);const j=R.transformValue(B,l.type);i?.(j)}catch(B){console.error("Error updating property:",B)}},S=8;return e.jsxs(r.Box,{sx:{mb:y?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:S,top:0,height:16,width:0,borderLeft:"1px dashed",borderColor:"divider"}}),e.jsx(r.Box,{sx:{position:"absolute",left:S,top:16,width:12,height:0,borderTop:"1px dashed",borderColor:"divider"}}),!y&&e.jsx(r.Box,{sx:{position:"absolute",left:S,top:16,bottom:-8,width:0,borderLeft:"1px dashed",borderColor:"divider"}})]}),e.jsx(r.Box,{sx:{flexGrow:1},children:e.jsx(b,{component:f,property:g,value:P,onChange:I,size:"small",fullWidth:!0,defaultLocale:x,allComponents:d})})]},g.id)})})})]})}return e.jsx(r.Stack,{sx:{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(ee.CodeEditor,{keyId:l.id,locale:u,language:l.type==="yaml"?"yaml":"json",value:typeof s=="string"?s:"",onChange:o=>{i?.(o)},onUpload:o=>{a.current=o,m&&m(o)},fullScreenOptions:{enableEscExit:!0,targetContainer:()=>document.getElementById("parameters-config-dialog")||null}},l.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 pt=["string","multiline","json","yaml","url","component","custom","array"];function ne(t){return t.type?!pt.includes(t.type):!1}function ue({disabled:t,list:s,renderItem:i,...l}){const f=v.useRef(null),x=v.useId(),d=le.useUpdate(),b=z.default(Object.entries(s),n=>n[1].index).map(n=>n[0]),m=v.useRef(b),u=v.useCallback(n=>{m.current=n,d()},[d]),a=v.useCallback(({index:n},{index:h})=>{const g=[...m.current];g.splice(h,0,...g.splice(n,1)),u(g)},[u]);v.useEffect(()=>{u(b)},[b.join("-")]);const[{isOver:c},o]=$.useDrop({accept:x,collect:n=>({isOver:n.isOver()}),canDrop:()=>!t,drop:()=>{const n=()=>{m.current.forEach((g,p)=>{const y=s[g];y&&(y.index=p)})},h=L.getYjsValue(s)?.doc;h?h.transact(()=>{n()}):n()}});return v.useEffect(()=>{c||u(b)},[c]),o(f),e.jsx(r.Box,{...l,ref:f,className:Me.cx(c&&"isDragging"),children:m.current.map((n,h)=>e.jsx(xt,{type:x,disabled:t,id:n,index:h,itemIndex:g=>m.current.indexOf(g),move:a,children:g=>{const p=s[n];return p?i(p.data,h,g):null}},n))})}function xt({disabled:t,id:s,index:i,type:l,children:f,itemIndex:x,move:d}){const b=v.useRef(void 0),[{isDragging:m},u,a]=$.useDrag({type:l,item:()=>({id:s}),canDrag:()=>!t,collect:o=>({isDragging:o.isDragging()})}),[,c]=$.useDrop({accept:l,canDrop:()=>!t,hover(o,n){if(!b.current)return;const h=x(o.id),g=i;if(h===g)return;const p=b.current?.getBoundingClientRect(),y=(p.bottom-p.top)/2,I=n.getClientOffset().y-p.top;h<g&&I<y||h>g&&I>y||d({id:o.id,index:h},{id:s,index:i})}});return typeof f=="function"?f({isDragging:m,drag:u,drop:o=>(b.current=o,c(o)),preview:a}):(u(c(a(b))),e.jsx(r.Box,{ref:b,children:f}))}function mt({drop:t,preview:s,drag:i,disabled:l,isDragging:f,children:x,onDelete:d,onVisibilityChange:b,visible:m=!0,actions:u,alwaysShowActions:a=!1}){const{t:c}=O.useLocaleContext();return e.jsx(r.Box,{ref:t,sx:{":hover .hover-visible":{maxWidth:"100%"},opacity:m?1:.5},children:e.jsxs(r.Box,{sx:{position:"relative"},children:[e.jsx(r.Box,{ref:s,sx:{flex:1,borderRadius:.5,bgcolor:f?"action.hover":"background.paper",opacity:.9999},children:x}),!l&&e.jsx(r.Box,{className:a?"":"hover-visible",sx:{maxWidth:a?"100%":0,overflow:"hidden",position:"absolute",right:2,top:2,transition:"max-width 0.3s ease-in-out"},children:e.jsxs(r.Stack,{direction:"row",sx:{bgcolor:o=>r.alpha(o.palette.grey[200],.9),borderRadius:1,p:.5,[`.${r.buttonClasses.root}`]:{minWidth:24,width:24,height:24,p:0}},children:[u,b&&e.jsx(r.Tooltip,{title:c(m?"hideParameter":"showParameter"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:()=>b(!m),children:m?e.jsx(_.VisibilityOffRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}}):e.jsx(_.VisibilityRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),d&&e.jsx(r.Tooltip,{title:c("delete"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:d,children:e.jsx(_.DeleteOutlineRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),e.jsx(r.Tooltip,{title:c("dragSort"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{ref:i,children:e.jsx(_.DragIndicatorRounded,{sx:{color:"grey.500"}})})})]})})]})})}function ft(t){const s=["string","json","array","url","multiline"],i=["style","fontSize","color","content","type"];return!!(s.includes(t.type||"")&&!i.includes(t.key||""))}function ht(t,s,i){return t.locales&&t.locales[s]&&t.locales[s].name?t.locales[s].name:i&&t.locales&&t.locales[i]&&t.locales[i].name?t.locales[i].name:t.key?t.key:t.id}const de=(t,s,i,l)=>{const f={};return z.default(Object.entries(t),([,d])=>d.index).forEach(([d,b])=>{const m=b.data;if(!m)return;const u=m.key||m.id,a=i?ht(m,i,l||""):u,c=s?.[m.id],o={key:u,isNeedGenerate:c?.isNeedGenerate??ft(m),describe:c?.describe??"",displayName:a};m.subProperties&&!D.default(m.subProperties)&&(o.subProperties=de(m.subProperties,c?.subProperties,i,l)),f[m.id]=o}),f};function bt({open:t,onClose:s,onConfirm:i,component:l,initialConfig:f,locale:x,defaultLocale:d,title:b,loading:m=!1}){const{t:u}=O.useLocaleContext(),[a,c]=v.useState(null);v.useEffect(()=>{if(t&&l){const p={properties:{}};if(l.properties){const y=f?.properties;p.properties=de(l.properties,y,x,d)}c(p)}},[t,l,f,x,d]);const o=()=>{s()},n=()=>{a&&(i(a),s())},h=(p,y,P)=>{if(!a||!p.length)return;const I=JSON.parse(JSON.stringify(a));let S=I.properties,k=null;for(let j=0;j<p.length-1;j++){const C=p[j];if(!C||!S[C])return;k=S;const w=S[C];w.subProperties||(w.subProperties={}),S=w.subProperties}const B=p[p.length-1];if(B){if("isNeedGenerate"in P){const j=P.isNeedGenerate,C={...y,...P};if(y.subProperties&&!D.default(y.subProperties)){const w=(N,E)=>{const q={};return Object.entries(N).forEach(([ge,M])=>{const Y={...M};E!==null&&(Y.isNeedGenerate=E),M.subProperties&&!D.default(M.subProperties)&&(Y.subProperties=w(M.subProperties,E!==null?E:null)),q[ge]=Y}),q};C.subProperties=w(y.subProperties,j===!1?!1:null)}if(p.length===1)I.properties[B]=C;else if(k&&p.length>=2){const w=p[p.length-2];w&&k[w]&&(k[w].subProperties||(k[w].subProperties={}),k[w].subProperties[B]=C)}}else if(p.length===1)I.properties[B]={...y,...P};else if(k&&p.length>=2){const j=p[p.length-2];j&&k[j]&&k[j].subProperties&&(k[j].subProperties[B]={...y,...P})}c(I)}},g=(p,y=[],P=!0)=>{if(!p||D.default(p))return e.jsx(U.default,{children:u("maker.properties.noProperties")});const I=z.default(Object.entries(p),([,S])=>S.displayName);return e.jsx(r.Stack,{spacing:1.5,children:I.map(([S,k],B)=>{const j=[...y,S],C=B===I.length-1,w=k.subProperties&&!D.default(k.subProperties),N=k.displayName||S,E=!P;return e.jsx(r.Box,{sx:{position:"relative"},children:e.jsxs(r.Stack,{direction:"row",children:[y.length>0&&e.jsxs(r.Box,{sx:{position:"relative",width:24,flexShrink:0},children:[e.jsx(r.Box,{sx:{position:"absolute",left:8,top:0,height:16,width:0,borderLeft:"1px dashed",borderColor:"divider"}}),e.jsx(r.Box,{sx:{position:"absolute",left:8,top:16,width:12,height:0,borderTop:"1px dashed",borderColor:"divider"}}),!C&&e.jsx(r.Box,{sx:{position:"absolute",left:8,top:16,bottom:-12,width:0,borderLeft:"1px dashed",borderColor:"divider"}})]}),e.jsxs(r.Stack,{spacing:1.5,sx:{flexGrow:1},children:[e.jsxs(r.Stack,{direction:{xs:"column",md:"row"},spacing:1.5,sx:{alignItems:{xs:"flex-start",md:"center"},width:"100%"},children:[e.jsx(r.FormControlLabel,{control:e.jsx(r.Checkbox,{checked:k.isNeedGenerate,disabled:E,onChange:q=>{h(j,k,{isNeedGenerate:q.target.checked})}}),label:N,sx:{minWidth:"180px",maxWidth:"280px",mr:2,"& .MuiFormControlLabel-label":{wordBreak:"break-word"}}}),e.jsx(r.TextField,{size:"small",fullWidth:!0,label:u("maker.properties.llmPropertyDescribe"),value:k.describe,onChange:q=>{h(j,k,{describe:q.target.value})},disabled:!k.isNeedGenerate})]}),w&&e.jsx(r.Box,{sx:{ml:3},children:g(k.subProperties,j,k.isNeedGenerate&&P)})]})]})},S)})})};return e.jsxs(r.Dialog,{open:t,onClose:o,maxWidth:"lg",fullWidth:!0,children:[e.jsx(r.DialogTitle,{children:b||u("maker.properties.llmConfigTitle")}),e.jsx(r.DialogContent,{children:e.jsx(r.Box,{sx:{my:3},children:m?e.jsx(r.Typography,{children:u("maker.properties.loading")}):l?a?e.jsxs(r.Stack,{spacing:3,children:[e.jsx(r.Typography,{variant:"subtitle2",children:u("maker.properties.llmConfigInstructions")}),g(a.properties)]}):e.jsx(r.Typography,{children:u("maker.properties.loading")}):e.jsx(r.Typography,{color:"error",children:u("maker.properties.componentNotFound")})})}),e.jsxs(r.DialogActions,{children:[e.jsx(r.Button,{onClick:o,children:u("common.cancel")}),e.jsx(r.Button,{variant:"contained",onClick:n,disabled:!a||m,children:u("common.confirm")})]})]})}function gt({label:t,value:s,onChange:i}){const[l,f]=v.useState(!1);return e.jsxs(r.Stack,{sx:{gap:1},children:[e.jsx(r.TextField,{label:t,size:"small",value:s,onChange:x=>i?.(x.target.value),slotProps:{input:{sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(V.UploaderButton,{onChange:({response:x})=>{const d=x?.data?.filename;d&&i?.(d)}})})}}}),s&&e.jsx(r.Box,{component:"img",src:R.getImageAbsoluteUrl(s),alt:t,onClick:()=>f(!0),sx:{maxWidth:100,maxHeight:100,width:"100%",objectFit:"contain",borderRadius:1,cursor:"pointer"}}),e.jsx(r.Dialog,{open:l,onClose:()=>f(!1),children:e.jsx(r.Box,{component:"img",sx:{objectFit:"contain"},src:R.getImageAbsoluteUrl(s),alt:t})})]})}function X(t,s=""){return nt.default(t,(i,l,f)=>{const x=s?`${s}.${f}`:f;return et.default(l)?Ge.default(i,X(l,x)):i[x]=l,i},{})}const jt=[{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 W(t,s,i){return!t||!i?!1:Object.values(t).some(({data:l})=>l.id!==s&&l.key===i)}function Z(t,s){return!t||!s?!1:t[s]?.data.visible??!0}function yt({componentId:t}){const{state:{components:s}}=R.useStore(),l=s[t]?.data;return l?e.jsx(r.Stack,{sx:{maxHeight:"100%",overflow:"auto"},children:e.jsx(r.Box,{sx:{p:2},children:e.jsx(Ue.ErrorBoundary,{FallbackComponent:R.ErrorView,resetKeys:[t],children:e.jsx(Ct,{value:l,componentId:t})})})}):null}function Ct({value:t,componentId:s}){const{t:i}=O.useLocaleContext(),{localState:{currentLocale:l,customComponentPreviewerProperties:f},state:{config:{defaultLocale:x}},localActions:{setCustomComponentPreviewerProperties:d}}=R.useStore(),b=L.getYjsValue(t).doc,m=R.useAllComponents(),u=v.useMemo(()=>f?.[s]??{},[s,f]),a=le.useReactive({componentId:s,propertiesValue:{...u}});return v.useEffect(()=>{a.componentId!==s&&(a.componentId=s,a.propertiesValue={...u})},[s,u,a]),v.useEffect(()=>{if(a.componentId!==s)return;const c=Object.fromEntries(Object.values(t.properties??{}).map(({data:o})=>[o.id,{value:a.propertiesValue[o.id]?.value??Re.parsePropertyValue(o,o.locales?.[l]?.defaultValue??o.locales?.[x]?.defaultValue,{locale:l,defaultLocale:x})}]));d(s,c)},[JSON.stringify(a.propertiesValue),s,a.componentId]),e.jsx(r.Stack,{sx:{height:"100%"},children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(pe,{config:t}),e.jsx(me,{config:t,currentLocale:l,defaultLocale:x,allComponents:m,onUpdateConfig:c=>{b.transact(()=>{c(t)})}}),e.jsxs(r.Stack,{direction:"row",sx:{gap:2,justifyContent:"space-between",alignItems:"center"},children:[e.jsx(r.Typography,{variant:"subtitle1",children:i("renderer")}),e.jsxs(r.TextField,{hiddenLabel:!0,size:"small",select:!0,value:t.renderer?.type||"react-component",onChange:c=>{b.transact(()=>{const o=c.target.value;t.renderer??={type:o},t.renderer.type=o})},slotProps:{select:{autoWidth:!0}},children:[e.jsx(r.MenuItem,{value:"react-component",children:"React Component"}),e.jsx(r.MenuItem,{value:"component",children:"Custom Component"})]})]}),t.renderer?.type==="component"&&e.jsx(Tt,{value:t}),t.renderer?.type==="react-component"&&e.jsx(It,{value:t}),e.jsx(re,{config:t,currentLocale:l,defaultLocale:x,allComponents:m,propertiesValue:a.propertiesValue,onChange:({value:c,id:o,path:n})=>{const h=[...n,"data"];if(!Qe.default(t,h)){Q.default.warning(i("cannotFindPropertyKey",{key:h.join(".")}));return}a.propertiesValue[o]={value:c.value}}})]})})}function pe({config:t}){const{t:s}=O.useLocaleContext();return e.jsx(V.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(r.Typography,{variant:"subtitle1",children:s("basicInfo")}),e.jsx(r.TextField,{label:s("name"),size:"small",value:t.name||"",onChange:i=>t.name=i.target.value}),e.jsx(r.TextField,{label:s("description"),size:"small",multiline:!0,minRows:2,maxRows:10,value:t.description||"",onChange:i=>t.description=i.target.value,slotProps:{input:{endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mt:-1.5},children:e.jsx(Bt,{config:t})})},htmlInput:{maxLength:200}}}),e.jsx(r.Autocomplete,{size:"small",options:[],multiple:!0,freeSolo:!0,value:t.tags??[],onChange:(i,l)=>t.tags=l,renderInput:i=>e.jsx(r.TextField,{label:s("tags"),...i})}),e.jsx(gt,{label:s("previewImage"),value:t.previewImage||"",onChange:i=>t.previewImage=i})]})})}function xe({data:t,params:s,visible:i,config:l,currentLocale:f,defaultLocale:x,allComponents:d,onUpdateConfig:b}){const{t:m}=O.useLocaleContext(),u=v.useMemo(()=>t.type==="json"||t.type==="yaml"||t.type==="array"?St:F,[t.type]);return e.jsx(mt,{preview:s.preview,drop:s.drop,drag:s.drag,isDragging:s.isDragging,onDelete:()=>{b(a=>{if(a.properties){const o=Object.entries(a.properties).sort(([,h],[,g])=>h.index-g.index);delete a.properties[t.id],o.filter(([h])=>h!==t.id).forEach(([,h],g)=>{h.index=g})}})},visible:i,onVisibilityChange:a=>{b(c=>{const o=c.properties[t.id].data;o.visible=a})},alwaysShowActions:!0,children:e.jsxs(r.Stack,{direction:"column",sx:{gap:2},children:[e.jsx(r.TextField,{label:m("key"),size:"small",required:!0,sx:{width:"calc(100% - 80px - 8px)",flex:1,"& .MuiOutlinedInput-root":{borderColor:t.key?W(l.properties,t.id,t.key)?"warning.main":void 0:"error.main"},"& .MuiFormLabel-root":{color:t.key?W(l.properties,t.id,t.key)?"warning.main":"text.secondary":"error.main"},"& .MuiFormLabel-root.Mui-focused":{color:t.key?W(l.properties,t.id,t.key)?"warning.main":"primary.main":"error.main"}},value:t.key||"",onChange:a=>{b(c=>{const o=c.properties[t.id].data;o.key=a.target.value.trim()})},slotProps:{input:{endAdornment:!t.key||t.key&&W(l.properties,t.id,t.key)?e.jsx(r.InputAdornment,{position:"end",sx:{width:16,ml:0},children:e.jsx(r.Tooltip,{title:t.key?m("duplicateKey"):m("requiredKey"),children:e.jsx(_.InfoRounded,{sx:{color:t.key?"warning.main":"error.main",fontSize:16}})})}):null}}}),e.jsxs(r.Stack,{direction:"row",sx:{gap:1},children:[e.jsx(r.TextField,{label:m("label"),size:"small",sx:{flex:1},value:(t.locales?.[f]?.name??t.locales?.[x]?.name)||"",onChange:a=>{b(c=>{const o=c.properties[t.id].data;o.locales??={},o.locales[f]??={},o.locales[f].name=a.target.value})}}),e.jsx(r.TextField,{label:m("type"),size:"small",select:!0,sx:{flex:1},value:t.type==="string"&&t.multiline?"multiline":t.type||"string",onChange:a=>{b(c=>{const o=c.properties[t.id].data;if(o.locales)for(const h of Object.keys(o.locales))o.locales[h].defaultValue=void 0;const n=a.target.value;n==="multiline"?(o.type="string",o.multiline=!0):(typeof o.multiline<"u"&&delete o.multiline,o.type=n)})},children:jt.map(a=>e.jsx(r.MenuItem,{value:a.value,children:a.label},a.value))})]}),e.jsxs(r.Stack,{direction:"row",sx:{gap:1},children:[e.jsx(u,{allComponents:d,defaultLocale:x,component:l,property:t,label:m("defaultValue"),size:"small",fullWidth:!0,value:t.locales?.[f]?.defaultValue,onChange:(a,c)=>{b(o=>{const n=o.properties[t.id].data;if(c?.forceUpdateProperty){const h=X(n),g=X(a);Object.keys(g).forEach(p=>{h[p]||ce.default(n,p,g[p])})}else n.locales??={},n.locales[f]??={},n.locales[f].defaultValue=a})}}),t.type==="custom"?e.jsx(r.Box,{children:e.jsx(kt,{property:t,allComponents:d})}):null]})]})})}function vt(t,s){const[i,l]=v.useState(0);return v.useEffect(()=>{const x=setTimeout(()=>{if(t.current){let d=t.current.parentElement,b=0;for(;d;)d.classList.contains("property-container")&&b++,d=d.parentElement;l(b)}},100);return()=>clearTimeout(x)},[t,s]),i}function me({config:t,currentLocale:s,defaultLocale:i,allComponents:l,onUpdateConfig:f,useI18nEditor:x=!0}){const{t:d}=O.useLocaleContext(),b=A.usePopupState({variant:"dialog"}),m=t.properties&&z.default(Object.values(t.properties),"index");return e.jsx(V.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsxs(r.Stack,{direction:"row",sx:{gap:1,alignItems:"center",justifyContent:"space-between"},children:[e.jsx(r.Typography,{variant:"subtitle1",children:d("properties")}),e.jsx(r.Box,{sx:{flex:1}}),x&&e.jsx(r.Button,{sx:{minWidth:32,minHeight:32,p:0},...A.bindTrigger(b),children:e.jsx(_.TranslateRounded,{fontSize:"small"})})]}),t.properties&&Object.keys(t.properties).length>0?e.jsx(ue,{component:r.Stack,gap:2,list:t.properties,renderItem:(u,a,c)=>{const o=Z(t.properties,u.id);return e.jsx(r.Paper,{elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:o?"1px solid":"1px dashed",borderColor:"divider"},children:e.jsx(r.Stack,{sx:{gap:2},children:e.jsx(xe,{data:u,params:c,visible:o,config:t,currentLocale:s,defaultLocale:i,allComponents:l,onUpdateConfig:f})})},u.id)}}):e.jsx(U.default,{style:{fontSize:12},children:d("maker.properties.noProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",onClick:()=>{f(u=>{const a=ae.nextId();u.properties??={},u.properties[a]??={index:m?.length||0,data:{id:a}}})},startIcon:e.jsx(_.AddRounded,{}),children:d("addObject",{object:d("property")})}),x&&e.jsx(fe,{...A.bindDialog(b),component:t})]})})}function kt({property:t,allComponents:s}){const i=A.usePopupState({variant:"popper"});return e.jsxs(e.Fragment,{children:[e.jsx(r.Button,{sx:{minWidth:0},...A.bindTrigger(i),children:e.jsx(_.SettingsRounded,{fontSize:"small"})}),e.jsx(r.Popper,{...A.bindPopper(i),children:e.jsx(ie.ClickAwayListener,{onClickAway:i.close,children:e.jsx(r.Paper,{children:e.jsx(r.Box,{sx:{width:500,p:2},children:e.jsx(H,{value:t.componentId,onChange:(l,f)=>t.componentId=f,allComponents:s})})})})})]})}function Pt({value:t,valueImmutable:s,onChange:i,defaultLocale:l,allComponents:f}){const[x,d]=v.useState(!1),{t:b,locale:m}=O.useLocaleContext(),u=typeof t?.componentId=="string"?f[t.componentId]?.data:void 0;return u?e.jsxs(r.Box,{sx:{width:"100%",position:"relative"},children:[e.jsx(r.IconButton,{sx:{minWidth:0},disabled:!u,size:"small",onClick:()=>d(!x),color:x?"primary":"default",children:e.jsx(_.SettingsRounded,{fontSize:"small"})}),x&&e.jsx(r.Collapse,{in:x,timeout:"auto",unmountOnExit:!0,sx:{width:"100%",zIndex:10},children:e.jsxs(r.Paper,{elevation:1,sx:{mt:1,p:2,borderRadius:1,border:"1px solid",borderColor:"divider",width:"100%"},children:[e.jsx(r.Box,{sx:{width:"100%",mb:2},children:e.jsx(re,{config:u,currentLocale:m,defaultLocale:l,allComponents:f,propertiesValue:t?.properties,onChange:({id:a,value:c})=>{const o=$e.default(c.value),n=JSON.parse(JSON.stringify(t));n?.componentId&&(s?i?.({...n,properties:{...n.properties,[a]:{value:o}}}):(n.properties=n.properties??{},n.properties[a]={value:o},i?.(n)))}})}),e.jsx(r.Button,{size:"small",onClick:()=>d(!1),sx:{mt:1},children:b("close")})]})})]}):null}function fe({type:t="properties",component:s,...i}){const{t:l}=O.useLocaleContext(),{state:{components:f,supportedLocales:x,config:{defaultLocale:d}}}=R.useStore(),b=R.useAllComponents(),m=L.getYjsValue(s).doc,u=t==="properties"?s.properties:t==="parameters"&&s.renderer?.type==="component"?f[s.renderer.componentId]?.data.properties:void 0,a=s.renderer?.type==="component"?s:void 0;return e.jsxs(r.Dialog,{...i,fullWidth:!0,maxWidth:"lg",children:[e.jsx(r.DialogTitle,{children:l("i18nEditorTitle")}),e.jsx(r.DialogContent,{children:u&&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:x.map(({locale:c,name:o})=>e.jsx(r.TableCell,{children:e.jsxs(r.Typography,{sx:{color:"text.primary"},children:[o,d===c&&e.jsx(_.StarRounded,{sx:{fontSize:12}})]})},c))})}),e.jsx(r.TableBody,{children:z.default(Object.values(u),"index").map(({data:c})=>e.jsx(r.TableRow,{children:x.map(({locale:o})=>e.jsx(r.TableCell,{children:e.jsx(r.Stack,{sx:{gap:1},children:t==="properties"?e.jsxs(e.Fragment,{children:[e.jsx(r.TextField,{size:"small",label:"Key",value:c.key||"",onChange:n=>{m.transact(()=>{c.key=n.target.value.trim()})}}),e.jsx(r.TextField,{size:"small",label:l("label"),value:(c.locales?.[o]?.name??c.locales?.[d]?.name)||"",onChange:n=>{m.transact(()=>{c.locales??={},c.locales[o]??={},c.locales[o].name=n.target.value})}}),e.jsx(r.Box,{children:e.jsx(F,{allComponents:b,defaultLocale:d,component:s,property:c,size:"small",fullWidth:!0,label:"Default Value",valueImmutable:J.default(c.locales?.[o]?.defaultValue),value:c.locales?.[o]?.defaultValue??c.locales?.[d]?.defaultValue,onChange:n=>{m.transact(()=>{c.locales??={},c.locales[o]??={},c.locales[o].defaultValue=n})}})})]}):t==="parameters"&&a?e.jsx(r.Box,{children:e.jsx(F,{allComponents:b,defaultLocale:d,component:s,property:c,size:"small",fullWidth:!0,valueImmutable:J.default(a.renderer.properties?.[c.id]?.locales?.[o]?.value),value:a.renderer.properties?.[c.id]?.locales?.[o]?.value??a.renderer.properties?.[c.id]?.locales?.[d]?.value??c.locales?.[o]?.defaultValue??c.locales?.[d]?.defaultValue,onChange:n=>{m.transact(()=>{a.renderer.properties??={},a.renderer.properties[c.id]??={},a.renderer.properties[c.id].locales??={},a.renderer.properties[c.id].locales[o]??={},a.renderer.properties[c.id].locales[o].value=n})}})}):null},c.id)},o))},c.id))})]})})}),e.jsx(r.DialogActions,{children:e.jsx(r.Button,{onClick:c=>i.onClose?.(c,"escapeKeyDown"),children:l("close")})})]})}const oe=(t,s)=>i=>{const l=[i.palette.info.main,i.palette.primary.main,i.palette.secondary.main,i.palette.success.main,i.palette.warning.main],f=Math.min(l.length-1,t),x=l[f],d=r.alpha(x,.5),b=r.alpha(x,1);return{borderColor:`${d} !important`,borderLeft:"3px solid !important",borderLeftColor:d,color:b,...s}};function St({property:t,onChange:s,defaultLocale:i,allComponents:l}){const{t:f,locale:x}=O.useLocaleContext(),d=v.useRef(null),b=vt(d,t),m=v.useCallback(()=>{if(!(t.type!=="json"&&t.type!=="yaml"&&t.type!=="array")&&t.subProperties)try{let u={};z.default(Object.values(t.subProperties),"index").filter(o=>o.data.visible!==!1&&o.data.key).forEach(({data:o})=>{if(!o.key)return;let n=o.locales?.[x]?.defaultValue??o.locales?.[i]?.defaultValue;if(o.type==="number")n=Number(n);else if(o.type==="boolean")n=n===!0||n==="true";else if((o.type==="json"||o.type==="yaml")&&typeof n=="string")try{o.type==="json"?n=JSON.parse(n):n=G.parse(n)}catch(h){console.error("Error parsing nested value",n,h),n={}}u[o.key]=n}),t.type==="array"&&!Array.isArray(u)&&(u=D.default(u)?[]:[u]);const c=R.transformValue(u,t.type);s?.(c)}catch(u){console.error("Error converting structure to text:",u)}},[t,x,i,s]);return t.type!=="json"&&t.type!=="yaml"&&t.type!=="array"?null:e.jsxs(r.Stack,{direction:"column",ref:d,sx:{gap:1.5,width:"100%"},children:[e.jsx(r.Divider,{sx:{mt:-1},children:e.jsx(r.Typography,{variant:"caption",sx:{color:"text.secondary"},children:f("maker.properties.subProperties")})}),t.subProperties&&Object.keys(t.subProperties).length>0?e.jsx(ue,{component:r.Stack,gap:2,list:t.subProperties,renderItem:(u,a,c)=>{const o=u.visible!==!1;return e.jsx(r.Paper,{elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:o?"1px solid":"1px dashed","&":oe(b)},children:e.jsx(r.Stack,{sx:{gap:2},children:e.jsx(xe,{data:u,params:c,visible:o,config:{properties:t.subProperties},currentLocale:x,defaultLocale:i,allComponents:l,onUpdateConfig:n=>{try{const h={properties:t.subProperties||{}};n(h);const g={...t,subProperties:h.properties};s?.(g,{forceUpdateProperty:!0}),m()}catch(h){console.error("Error updating property:",h)}}})})},u.id)}}):e.jsx(U.default,{style:{fontSize:12,height:100},children:f("maker.properties.noSubProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",size:"small",startIcon:e.jsx(_.AddRounded,{}),onClick:()=>{try{const u=t.subProperties||{},a=ae.nextId(),o={index:Object.values(u).length,data:{id:a,key:"",type:"string",visible:!0,locales:{[x]:{name:"",defaultValue:""}},subProperties:{}}},n={...t,subProperties:{...u,[a]:o}};s?.(n,{forceUpdateProperty:!0}),m()}catch(u){console.error("Error adding property:",u)}},sx:{"&":oe(b,{})},children:f("maker.properties.addSubProperty")})]})}function F({component:t,property:s,value:i,onChange:l,valueImmutable:f,defaultLocale:x,allComponents:d,...b}){const{locale:m}=O.useLocaleContext(),u=V.useUploader(),a=v.useRef(null),c=()=>{const n=u?.current?.getUploader();n?.open(),a.current&&n.onceUploadSuccess(({response:h})=>{let g=h?.data?.filename||"";g&&(g=`mediakit://${g}`,i&&!i.includes("mediakit://")&&(g+=" # please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address")),a.current?.(g)})},o=b.label??(s.locales?.[m]?.name||s.locales?.[x]?.name||s.key||s.id);if(s.type==="number")return e.jsx(wt,{...b,label:o,NumberProps:{value:["number","string"].includes(typeof i)?i:null,onChange:(n,h)=>l?.(h)}});if(s.type==="decimal")return e.jsx(r.TextField,{...b,label:o,type:"text",value:i??"",onChange:n=>{const h=n.target.value;if(h===""||h==="-"){l?.(h);return}if(/^-?(?!.*\..*\.)[0-9]*(\.[0-9]{0,9})?$/.test(h)){let p=h;/^-?[1-9]+[0-9]*(\.[0-9]{1,9})?$/.test(p)&&(p=Number(p)),l?.(p)}}});if(s.type==="boolean")return e.jsx(r.FormControlLabel,{label:o,labelPlacement:"start",control:e.jsx(r.Switch,{checked:i===!0,onChange:(n,h)=>l?.(h)})});if(s.type==="color")return e.jsx(ut,{label:o,value:i,onChange:n=>{l?.(n)}});if(s.type==="json"||s.type==="yaml")return e.jsx(dt,{label:o,value:i,onChange:n=>{l?.(n)},property:s,component:t,defaultLocale:x,allComponents:d,PropertyValueField:F,onUpload:n=>{a.current=n,c()}});if(s.type==="custom"){const n=d[s.componentId]?.data;return n?e.jsx(r.Box,{sx:{width:"100%"},children:e.jsx(K.CustomComponentRenderer,{componentId:n.id,props:{label:o,value:i,onChange:l},locale:m,dev:{mode:"draft",components:d,defaultLocale:x}})}):e.jsx(r.TextField,{...b,label:o,disabled:!0,placeholder:"Click right button select a component"})}if(s.type==="component")return e.jsxs(r.Stack,{direction:"column",sx:{width:"100%",gap:1},children:[e.jsx(H,{allComponents:d,label:o,value:i?.componentId,onChange:(n,h)=>{f||!i?l?.({...i&&JSON.parse(JSON.stringify(i)),componentId:h}):typeof i=="object"&&(i.componentId=h,l?.({...i&&JSON.parse(JSON.stringify(i)),componentId:h}))}}),i?.componentId&&e.jsx(Pt,{value:i,valueImmutable:f,onChange:l,defaultLocale:x,allComponents:d})]});if(!s.type||["string","url","multiline"].includes(s.type)){let n=s.type==="string"?s.multiline:void 0;s.type==="multiline"&&(n=!0);const h=s.type==="url"?i?.url:i;return e.jsx(r.TextField,{...b,label:o,value:typeof h=="string"?h:"",multiline:n,minRows:n?2:void 0,maxRows:n?10:void 0,onChange:g=>l?.(s.type==="url"?{...i,url:g.target.value,mediaKitUrl:g.target.value}:g.target.value),slotProps:{input:s.type==="url"?{sx:{pr:0},endAdornment:e.jsxs(r.InputAdornment,{position:"end",sx:{display:"flex",alignItems:"center",justifyContent:"center"},children:[e.jsx(V.UploaderButton,{onChange:async({response:g})=>{const p=g?.data?.url||g?.data?.fileUrl;let y;p&&(y=await V.getImageSize(p).catch(()=>V.getVideoSize(p)).catch(()=>{}));let P=g?.data?.filename||"";P&&(P=`mediakit://${P}`),l?.({url:p,mediaKitUrl:P,width:y?.naturalWidth,height:y?.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(_.InfoRounded,{sx:{cursor:"default",mr:1},fontSize:"small"})})]})}:void 0}})}return s.type==="array"?e.jsx(at,{label:o,value:Array.isArray(i)?i:[],onChange:n=>l?.(n),property:s,renderItem:({item:n,index:h,onChange:g})=>s.subProperties&&Object.keys(s.subProperties).length>0?e.jsx(r.Stack,{sx:{gap:1,width:"100%"},children:z.default(Object.values(s.subProperties),"index").filter(p=>p.data.visible!==!1).map(({data:p})=>p.key?e.jsx(F,{component:t,property:p,value:n[p.key],onChange:y=>{const P={...n,[p.key]:y};g(P)},size:"small",fullWidth:!0,defaultLocale:x,allComponents:d},p.id):null)},h):e.jsx(r.TextField,{size:b.size,fullWidth:!0,value:n,onChange:p=>g(p.target.value)})}):(console.error("Unsupported property type",s.type),null)}function wt({NumberProps:t,...s}){const{getInputProps:i}=ie.unstable_useNumberInput(t),l=i();return e.jsx(r.TextField,{...s,slotProps:{htmlInput:l}})}const he=`import React from '@blocklet/pages-kit/builtin/react'
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),r=require("@mui/material"),_=require("./chunks/state-DCxHc_MB.js"),ge=require("@arcblock/ux/lib/Empty"),O=require("@arcblock/ux/lib/Locale/context"),ee=require("@blocklet/code-editor"),ye=require("@mui/icons-material/AddRounded"),Ce=require("@mui/icons-material/ArrowDownward"),ve=require("@mui/icons-material/ArrowUpward"),ke=require("@mui/icons-material/DeleteOutline"),Pe=require("lodash/sortBy"),v=require("react"),te=require("react-use"),se=require("@blocklet/pages-kit/builtin/color-picker"),N=require("@blocklet/pages-kit/builtin/uploader"),Se=require("@iconify-icon/react"),we=require("lodash/isEmpty"),Ie=require("lodash/set"),Te=require("yaml"),Be=require("lodash/cloneDeep"),Oe=require("@arcblock/ux/lib/Toast"),K=require("@blocklet/pages-kit/components"),Re=require("@blocklet/pages-kit/utils/property"),ie=require("@mui/base"),V=require("@mui/icons-material"),L=require("@syncedstore/core"),le=require("ahooks"),Ne=require("lodash/assign"),Ve=require("lodash/get"),_e=require("lodash/has"),ze=require("lodash/isEqual"),Ee=require("lodash/isNil"),Ae=require("lodash/isObject"),De=require("lodash/keyBy"),Fe=require("lodash/omit"),qe=require("lodash/pick"),Le=require("lodash/reduce"),A=require("material-ui-popup-state/hooks"),Ue=require("react-error-boundary"),Me=require("@emotion/css"),$=require("react-dnd"),ae=require("@blocklet/pages-kit/utils/common"),T=t=>t&&t.__esModule?t:{default:t};function We(t){if(t&&t.__esModule)return t;const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const l=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(s,i,l.get?l:{enumerable:!0,get:()=>t[i]})}}return s.default=t,Object.freeze(s)}const U=T(ge),Ke=T(ye),Je=T(Ce),He=T(ve),Ye=T(ke),z=T(Pe),D=T(we),ce=T(Ie),G=We(Te),$e=T(Be),Q=T(Oe),Ge=T(Ne),Qe=T(Ve),Xe=T(_e),Ze=T(ze),J=T(Ee),et=T(Ae),tt=T(De),rt=T(Fe),st=T(qe),nt=T(Le);function ot({error:t}){return e.jsx(r.Box,{children:e.jsx(r.Alert,{severity:"error",children:t.message})})}function it({onClick:t,disabled:s,sx:i,...l}){return e.jsx(r.IconButton,{size:"small",color:"warning",variant:"outlined",disabled:s,onClick:t,...l,children:e.jsx(Ye.default,{fontSize:"small"})})}function lt({onClick:t,disabled:s,sx:i,...l}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...l,children:e.jsx(He.default,{fontSize:"small"})})}function at({onClick:t,disabled:s,sx:i,...l}){return e.jsx(r.IconButton,{size:"small",color:"primary",disabled:s,onClick:t,...l,children:e.jsx(Je.default,{fontSize:"small"})})}function ct({label:t,value:s,onChange:i,disabled:l=!1,itemLabel:f="",emptyHeight:x=40,property:d,renderItem:b,...m}){const{t:u,locale:a}=O.useLocaleContext(),c=te.useUpdate(),o=v.useCallback(g=>{i(_.transformValue(g,d.type))},[i,d.type]),n=v.useMemo(()=>Array.isArray(s)?s:[],[s]),h=v.useCallback(()=>{const g=[...n,""];o(g),c()},[n,o,c]),j=v.useCallback(()=>{if(!d||!d.subProperties)return h();const g={};z.default(Object.values(d.subProperties),"index").forEach(({data:R})=>{if(!R.key)return;const E=R.locales?.[a]?.defaultValue??"";g[R.key]=E});const w=[...n,g];o(w),c()},[n,o,c,d,a,h]),p=v.useCallback(g=>{try{const C=JSON.parse(g);Array.isArray(C)?o(C):console.error("JSON解析结果不是数组")}catch(C){console.error("JSON解析错误:",C)}},[o]),y=v.useCallback(g=>{const C=n.filter((w,R)=>R!==g);o(C),c()},[n,o,c]),P=v.useCallback(g=>{if(g<=0)return;const C=[...n],w=C[g];C[g]=C[g-1],C[g-1]=w,o(C),c()},[n,o,c]),I=v.useCallback(g=>{if(g>=n.length-1)return;const C=[...n],w=C[g];C[g]=C[g+1],C[g+1]=w,o(C),c()},[n,o,c]),S=v.useCallback((g,C)=>{const w=[...n];w[g]=C,o(w)},[n,o]),k=d&&d.subProperties&&Object.keys(d.subProperties).length>0,B=v.useMemo(()=>[{field:"index",headerName:"#",width:40,align:"center",renderCell:({index:g})=>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:g+1})},{field:"content",headerName:"",renderCell:({row:g,index:C})=>b&&k?b({item:g,index:C,property:d,onChange:w=>S(C,w)}):e.jsx(r.TextField,{fullWidth:!0,size:"small",disabled:l,value:g,placeholder:f||`${u("item")} ${C+1}`,onChange:w=>S(C,w.target.value),...m})},{field:"actions",headerName:"",width:30,align:"center",renderCell:({index:g})=>e.jsxs(r.Stack,{direction:"column",spacing:.25,children:[e.jsx(lt,{disabled:l||g===0,onClick:()=>P(g)}),e.jsx(at,{disabled:l||g===n.length-1,onClick:()=>I(g)}),e.jsx(it,{disabled:l,onClick:()=>y(g)})]})}],[b,k,d,S,f,u,l,m,y,P,I,n.length]);return k?e.jsxs(r.Stack,{sx:{width:"100%",gap:1},children:[t&&e.jsx(r.FormLabel,{children:t}),n.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:B.map(g=>e.jsx(r.TableCell,{width:g.width,align:g.align||"left",sx:{fontWeight:"bold"},children:g.renderHeader?g.renderHeader():g.headerName},g.field))})}),e.jsx(r.TableBody,{children:n.map((g,C,w)=>e.jsx(r.TableRow,{sx:{borderBottom:C<w.length-1?"1px solid":"none",borderColor:"divider","&:hover":{backgroundColor:"action.hover"}},children:B.map(R=>e.jsx(r.TableCell,{width:R.width,align:R.align||"left",sx:{borderBottom:"none"},children:R.renderCell({row:g,index:C,onChange:E=>S(C,E)})},`${C}-${R.field}`))},C))})]})}):e.jsx(U.default,{style:{fontSize:12,height:x},children:u("maker.properties.arrayEmpty")}),e.jsx(r.Button,{fullWidth:!0,size:"small",variant:"outlined",disabled:l,startIcon:e.jsx(Ke.default,{}),onClick:j,children:u("maker.properties.addArrayItem")})]}):e.jsxs(r.Stack,{sx:{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(ee.CodeEditor,{keyId:d.id,locale:a,language:"json",value:JSON.stringify(n,null,2),onChange:g=>p(g||""),fullScreenOptions:{enableEscExit:!0,targetContainer:()=>document.getElementById("parameters-config-dialog")||null}},d.id)})]})}function ut({ref:t,showMarkdown:s,markdown:i,onMarkdownChange:l,showUploader:f,value:x,meta:d,onChange:b,...m}){const[u,a]=v.useState("");v.useEffect(()=>{a(x||"")},[x,a]);const c=async()=>{if(u!==x){const n=_.getImageAbsoluteUrl(u);if(!n){b(u,void 0);return}const h=await N.getImageSize(n).catch(()=>N.getVideoSize(n)).catch(()=>{});b(u,{...h,filename:u})}};te.useDebounce(()=>{u!==x&&b(u)},300,[u]),v.useImperativeHandle(t,()=>({submit:c}));const o={};return f&&(o.InputProps={sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mx:.5},children:e.jsx(N.UploaderButton,{onChange:async({response:n})=>{const h=n?.data?.filename,j=_.getImageAbsoluteUrl(h)||"";let p={};j&&(p=await N.getImageSize(j).catch(()=>N.getVideoSize(j)).catch(()=>{})),b(h,{...p,filename:h})}})})}),e.jsx(r.TextField,{size:"small",fullWidth:!0,...m,label:e.jsxs(r.Stack,{direction:"row",spacing:1,sx:{alignItems:"center"},children:[m.label,s&&e.jsxs(e.Fragment,{children:[" (",e.jsx(r.FormControlLabel,{checked:i,label:e.jsx(r.Box,{component:Se.Icon,icon:"tabler:markdown",sx:{verticalAlign:"middle"}}),labelPlacement:"start",control:e.jsx(r.Switch,{size:"small"}),sx:{ml:.25,pr:1},onChange:(n,h)=>l?.(h)}),")"]})]}),value:u,onChange:n=>a(n.target.value),...o,onKeyDown:n=>{n.keyCode!==229&&n.key==="Enter"&&c()},slotProps:{inputLabel:{shrink:!0,...m.InputLabelProps}}})}function dt({value:t,onChange:s,...i}){const l=v.useRef(null);return e.jsxs(e.Fragment,{children:[e.jsx(ut,{...i,value:t,onChange:s,InputProps:{endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(se.ColorItem,{color:t??"",style:{width:"1.5rem",height:"1.5rem",padding:0},onClick:()=>{l.current?.open({value:t??""})}})})}}),e.jsx(se.ConfigColorDialog,{ref:l,onSave:({value:f},x)=>{s(f),x()}})]})}function pt({label:t,value:s,onChange:i,property:l,component:f,defaultLocale:x,allComponents:d,PropertyValueField:b,onUpload:m}){const{locale:u}=O.useLocaleContext(),a=v.useRef(null);if(!D.default(l.subProperties)){const o=z.default(Object.values(l.subProperties||{}),"index").filter(n=>n.data.visible!==!1&&n.data.key);return e.jsxs(r.Stack,{sx:{width:"100%"},children:[e.jsx(r.FormLabel,{sx:{px:.25,py:.5},children:t}),e.jsx(r.Box,{children:e.jsx(r.Box,{sx:{position:"relative"},children:o.map((n,h)=>{const{data:j}=n,p=j.key??j.id,y=h===o.length-1;let P=null;try{s&&typeof s=="object"?P=s[p]:typeof s=="string"&&(P=(l.type==="yaml"?G.parse(s||""):JSON.parse(s||"{}"))[p])}catch{}P==null&&(j.locales&&u&&j.locales[u]?P=j.locales[u].defaultValue:j.locales&&x&&j.locales[x]&&(P=j.locales[x].defaultValue));const I=k=>{try{let B={};if(typeof s=="string")try{B=l.type==="yaml"?G.parse(s||""):JSON.parse(s||"{}")}catch{}else typeof s=="object"&&s!==null&&(B={...s});ce.default(B,p,k);const g=_.transformValue(B,l.type);i?.(g)}catch(B){console.error("Error updating property:",B)}},S=8;return e.jsxs(r.Box,{sx:{mb:y?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:S,top:0,height:16,width:0,borderLeft:"1px dashed",borderColor:"divider"}}),e.jsx(r.Box,{sx:{position:"absolute",left:S,top:16,width:12,height:0,borderTop:"1px dashed",borderColor:"divider"}}),!y&&e.jsx(r.Box,{sx:{position:"absolute",left:S,top:16,bottom:-8,width:0,borderLeft:"1px dashed",borderColor:"divider"}})]}),e.jsx(r.Box,{sx:{flexGrow:1},children:e.jsx(b,{component:f,property:j,value:P,onChange:I,size:"small",fullWidth:!0,defaultLocale:x,allComponents:d})})]},j.id)})})})]})}return e.jsx(r.Stack,{sx:{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(ee.CodeEditor,{keyId:l.id,locale:u,language:l.type==="yaml"?"yaml":"json",value:typeof s=="string"?s:"",onChange:o=>{i?.(o)},onUpload:o=>{a.current=o,m&&m(o)},fullScreenOptions:{enableEscExit:!0,targetContainer:()=>document.getElementById("parameters-config-dialog")||null}},l.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 xt=["string","multiline","json","yaml","url","component","custom","array"];function ne(t){return t.type?!xt.includes(t.type):!1}function ue({disabled:t,list:s,renderItem:i,...l}){const f=v.useRef(null),x=v.useId(),d=le.useUpdate(),b=z.default(Object.entries(s),n=>n[1].index).map(n=>n[0]),m=v.useRef(b),u=v.useCallback(n=>{m.current=n,d()},[d]),a=v.useCallback(({index:n},{index:h})=>{const j=[...m.current];j.splice(h,0,...j.splice(n,1)),u(j)},[u]);v.useEffect(()=>{u(b)},[b.join("-")]);const[{isOver:c},o]=$.useDrop({accept:x,collect:n=>({isOver:n.isOver()}),canDrop:()=>!t,drop:()=>{const n=()=>{m.current.forEach((j,p)=>{const y=s[j];y&&(y.index=p)})},h=L.getYjsValue(s)?.doc;h?h.transact(()=>{n()}):n()}});return v.useEffect(()=>{c||u(b)},[c]),o(f),e.jsx(r.Box,{...l,ref:f,className:Me.cx(c&&"isDragging"),children:m.current.map((n,h)=>e.jsx(mt,{type:x,disabled:t,id:n,index:h,itemIndex:j=>m.current.indexOf(j),move:a,children:j=>{const p=s[n];return p?i(p.data,h,j):null}},n))})}function mt({disabled:t,id:s,index:i,type:l,children:f,itemIndex:x,move:d}){const b=v.useRef(void 0),[{isDragging:m},u,a]=$.useDrag({type:l,item:()=>({id:s}),canDrag:()=>!t,collect:o=>({isDragging:o.isDragging()})}),[,c]=$.useDrop({accept:l,canDrop:()=>!t,hover(o,n){if(!b.current)return;const h=x(o.id),j=i;if(h===j)return;const p=b.current?.getBoundingClientRect(),y=(p.bottom-p.top)/2,I=n.getClientOffset().y-p.top;h<j&&I<y||h>j&&I>y||d({id:o.id,index:h},{id:s,index:i})}});return typeof f=="function"?f({isDragging:m,drag:u,drop:o=>(b.current=o,c(o)),preview:a}):(u(c(a(b))),e.jsx(r.Box,{ref:b,children:f}))}function ft({drop:t,preview:s,drag:i,disabled:l,isDragging:f,children:x,onDelete:d,onVisibilityChange:b,visible:m=!0,actions:u,alwaysShowActions:a=!1}){const{t:c}=O.useLocaleContext();return e.jsx(r.Box,{ref:t,sx:{":hover .hover-visible":{maxWidth:"100%"},opacity:m?1:.5},children:e.jsxs(r.Box,{sx:{position:"relative"},children:[e.jsx(r.Box,{ref:s,sx:{flex:1,borderRadius:.5,bgcolor:f?"action.hover":"background.paper",opacity:.9999},children:x}),!l&&e.jsx(r.Box,{className:a?"":"hover-visible",sx:{maxWidth:a?"100%":0,overflow:"hidden",position:"absolute",right:2,top:2,transition:"max-width 0.3s ease-in-out"},children:e.jsxs(r.Stack,{direction:"row",sx:{bgcolor:o=>r.alpha(o.palette.grey[200],.9),borderRadius:1,p:.5,[`.${r.buttonClasses.root}`]:{minWidth:24,width:24,height:24,p:0}},children:[u,b&&e.jsx(r.Tooltip,{title:c(m?"hideParameter":"showParameter"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:()=>b(!m),children:m?e.jsx(V.VisibilityOffRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}}):e.jsx(V.VisibilityRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),d&&e.jsx(r.Tooltip,{title:c("delete"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{onClick:d,children:e.jsx(V.DeleteOutlineRounded,{sx:{fontSize:"1.25rem",color:"grey.500"}})})}),e.jsx(r.Tooltip,{title:c("dragSort"),disableInteractive:!0,placement:"top",children:e.jsx(r.Button,{ref:i,children:e.jsx(V.DragIndicatorRounded,{sx:{color:"grey.500"}})})})]})})]})})}function ht(t){const s=["string","json","array","url","multiline"],i=["style","fontSize","color","content","type"];return!!(s.includes(t.type||"")&&!i.includes(t.key||""))}function bt(t,s,i){return t.locales&&t.locales[s]&&t.locales[s].name?t.locales[s].name:i&&t.locales&&t.locales[i]&&t.locales[i].name?t.locales[i].name:t.key?t.key:t.id}const de=(t,s,i,l)=>{const f={};return z.default(Object.entries(t),([,d])=>d.index).forEach(([d,b])=>{const m=b.data;if(!m)return;const u=m.key||m.id,a=i?bt(m,i,l||""):u,c=s?.[m.id],o={key:u,isNeedGenerate:c?.isNeedGenerate??ht(m),describe:c?.describe??"",displayName:a};m.subProperties&&!D.default(m.subProperties)&&(o.subProperties=de(m.subProperties,c?.subProperties,i,l)),f[m.id]=o}),f};function jt({open:t,onClose:s,onConfirm:i,component:l,initialConfig:f,locale:x,defaultLocale:d,title:b,loading:m=!1}){const{t:u}=O.useLocaleContext(),[a,c]=v.useState(null);v.useEffect(()=>{if(t&&l){const p={properties:{}};if(l.properties){const y=f?.properties;p.properties=de(l.properties,y,x,d)}c(p)}},[t,l,f,x,d]);const o=()=>{s()},n=()=>{a&&(i(a),s())},h=(p,y,P)=>{if(!a||!p.length)return;const I=JSON.parse(JSON.stringify(a));let S=I.properties,k=null;for(let g=0;g<p.length-1;g++){const C=p[g];if(!C||!S[C])return;k=S;const w=S[C];w.subProperties||(w.subProperties={}),S=w.subProperties}const B=p[p.length-1];if(B){if("isNeedGenerate"in P){const g=P.isNeedGenerate,C={...y,...P};if(y.subProperties&&!D.default(y.subProperties)){const w=(R,E)=>{const q={};return Object.entries(R).forEach(([je,M])=>{const Y={...M};E!==null&&(Y.isNeedGenerate=E),M.subProperties&&!D.default(M.subProperties)&&(Y.subProperties=w(M.subProperties,E!==null?E:null)),q[je]=Y}),q};C.subProperties=w(y.subProperties,g===!1?!1:null)}if(p.length===1)I.properties[B]=C;else if(k&&p.length>=2){const w=p[p.length-2];w&&k[w]&&(k[w].subProperties||(k[w].subProperties={}),k[w].subProperties[B]=C)}}else if(p.length===1)I.properties[B]={...y,...P};else if(k&&p.length>=2){const g=p[p.length-2];g&&k[g]&&k[g].subProperties&&(k[g].subProperties[B]={...y,...P})}c(I)}},j=(p,y=[],P=!0)=>{if(!p||D.default(p))return e.jsx(U.default,{children:u("maker.properties.noProperties")});const I=z.default(Object.entries(p),([,S])=>S.displayName);return e.jsx(r.Stack,{spacing:1.5,children:I.map(([S,k],B)=>{const g=[...y,S],C=B===I.length-1,w=k.subProperties&&!D.default(k.subProperties),R=k.displayName||S,E=!P;return e.jsx(r.Box,{sx:{position:"relative"},children:e.jsxs(r.Stack,{direction:"row",children:[y.length>0&&e.jsxs(r.Box,{sx:{position:"relative",width:24,flexShrink:0},children:[e.jsx(r.Box,{sx:{position:"absolute",left:8,top:0,height:16,width:0,borderLeft:"1px dashed",borderColor:"divider"}}),e.jsx(r.Box,{sx:{position:"absolute",left:8,top:16,width:12,height:0,borderTop:"1px dashed",borderColor:"divider"}}),!C&&e.jsx(r.Box,{sx:{position:"absolute",left:8,top:16,bottom:-12,width:0,borderLeft:"1px dashed",borderColor:"divider"}})]}),e.jsxs(r.Stack,{spacing:1.5,sx:{flexGrow:1},children:[e.jsxs(r.Stack,{direction:{xs:"column",md:"row"},spacing:1.5,sx:{alignItems:{xs:"flex-start",md:"center"},width:"100%"},children:[e.jsx(r.FormControlLabel,{control:e.jsx(r.Checkbox,{checked:k.isNeedGenerate,disabled:E,onChange:q=>{h(g,k,{isNeedGenerate:q.target.checked})}}),label:R,sx:{minWidth:"180px",maxWidth:"280px",mr:2,"& .MuiFormControlLabel-label":{wordBreak:"break-word"}}}),e.jsx(r.TextField,{size:"small",fullWidth:!0,label:u("maker.properties.llmPropertyDescribe"),value:k.describe,onChange:q=>{h(g,k,{describe:q.target.value})},disabled:!k.isNeedGenerate})]}),w&&e.jsx(r.Box,{sx:{ml:3},children:j(k.subProperties,g,k.isNeedGenerate&&P)})]})]})},S)})})};return e.jsxs(r.Dialog,{open:t,onClose:o,maxWidth:"lg",fullWidth:!0,children:[e.jsx(r.DialogTitle,{children:b||u("maker.properties.llmConfigTitle")}),e.jsx(r.DialogContent,{children:e.jsx(r.Box,{sx:{my:3},children:m?e.jsx(r.Typography,{children:u("maker.properties.loading")}):l?a?e.jsxs(r.Stack,{spacing:3,children:[e.jsx(r.Typography,{variant:"subtitle2",children:u("maker.properties.llmConfigInstructions")}),j(a.properties)]}):e.jsx(r.Typography,{children:u("maker.properties.loading")}):e.jsx(r.Typography,{color:"error",children:u("maker.properties.componentNotFound")})})}),e.jsxs(r.DialogActions,{children:[e.jsx(r.Button,{onClick:o,children:u("common.cancel")}),e.jsx(r.Button,{variant:"contained",onClick:n,disabled:!a||m,children:u("common.confirm")})]})]})}function gt({label:t,value:s,onChange:i}){const[l,f]=v.useState(!1);return e.jsxs(r.Stack,{sx:{gap:1},children:[e.jsx(r.TextField,{label:t,size:"small",value:s,onChange:x=>i?.(x.target.value),slotProps:{input:{sx:{pr:0},endAdornment:e.jsx(r.InputAdornment,{position:"end",children:e.jsx(N.UploaderButton,{onChange:({response:x})=>{const d=x?.data?.filename;d&&i?.(d)}})})}}}),s&&e.jsx(r.Box,{component:"img",src:_.getImageAbsoluteUrl(s),alt:t,onClick:()=>f(!0),sx:{maxWidth:100,maxHeight:100,width:"100%",objectFit:"contain",borderRadius:1,cursor:"pointer"}}),e.jsx(r.Dialog,{open:l,onClose:()=>f(!1),children:e.jsx(r.Box,{component:"img",sx:{objectFit:"contain"},src:_.getImageAbsoluteUrl(s),alt:t})})]})}function X(t,s=""){return nt.default(t,(i,l,f)=>{const x=s?`${s}.${f}`:f;return et.default(l)?Ge.default(i,X(l,x)):i[x]=l,i},{})}const yt=[{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 W(t,s,i){return!t||!i?!1:Object.values(t).some(({data:l})=>l.id!==s&&l.key===i)}function Z(t,s){return!t||!s?!1:t[s]?.data.visible??!0}function Ct({componentId:t}){const{state:{components:s}}=_.useStore(),l=s[t]?.data;return l?e.jsx(r.Stack,{sx:{maxHeight:"100%",overflow:"auto"},children:e.jsx(r.Box,{sx:{p:2},children:e.jsx(Ue.ErrorBoundary,{FallbackComponent:ot,resetKeys:[t],children:e.jsx(vt,{value:l,componentId:t})})})}):null}function vt({value:t,componentId:s}){const{t:i}=O.useLocaleContext(),{localState:{currentLocale:l,customComponentPreviewerProperties:f},state:{config:{defaultLocale:x}},localActions:{setCustomComponentPreviewerProperties:d}}=_.useStore(),b=L.getYjsValue(t).doc,m=_.useAllComponents(),u=v.useMemo(()=>f?.[s]??{},[s,f]),a=le.useReactive({componentId:s,propertiesValue:{...u}});return v.useEffect(()=>{a.componentId!==s&&(a.componentId=s,a.propertiesValue={...u})},[s,u,a]),v.useEffect(()=>{if(a.componentId!==s)return;const c=Object.fromEntries(Object.values(t.properties??{}).map(({data:o})=>[o.id,{value:a.propertiesValue[o.id]?.value??Re.parsePropertyValue(o,o.locales?.[l]?.defaultValue??o.locales?.[x]?.defaultValue,{locale:l,defaultLocale:x})}]));d(s,c)},[JSON.stringify(a.propertiesValue),s,a.componentId]),e.jsx(r.Stack,{sx:{height:"100%"},children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(pe,{config:t}),e.jsx(me,{config:t,currentLocale:l,defaultLocale:x,allComponents:m,onUpdateConfig:c=>{b.transact(()=>{c(t)})}}),e.jsxs(r.Stack,{direction:"row",sx:{gap:2,justifyContent:"space-between",alignItems:"center"},children:[e.jsx(r.Typography,{variant:"subtitle1",children:i("renderer")}),e.jsxs(r.TextField,{hiddenLabel:!0,size:"small",select:!0,value:t.renderer?.type||"react-component",onChange:c=>{b.transact(()=>{const o=c.target.value;t.renderer??={type:o},t.renderer.type=o})},slotProps:{select:{autoWidth:!0}},children:[e.jsx(r.MenuItem,{value:"react-component",children:"React Component"}),e.jsx(r.MenuItem,{value:"component",children:"Custom Component"})]})]}),t.renderer?.type==="component"&&e.jsx(Bt,{value:t}),t.renderer?.type==="react-component"&&e.jsx(Tt,{value:t}),e.jsx(re,{config:t,currentLocale:l,defaultLocale:x,allComponents:m,propertiesValue:a.propertiesValue,onChange:({value:c,id:o,path:n})=>{const h=[...n,"data"];if(!Qe.default(t,h)){Q.default.warning(i("cannotFindPropertyKey",{key:h.join(".")}));return}a.propertiesValue[o]={value:c.value}}})]})})}function pe({config:t}){const{t:s}=O.useLocaleContext();return e.jsx(N.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(r.Typography,{variant:"subtitle1",children:s("basicInfo")}),e.jsx(r.TextField,{label:s("name"),size:"small",value:t.name||"",onChange:i=>t.name=i.target.value}),e.jsx(r.TextField,{label:s("description"),size:"small",multiline:!0,minRows:2,maxRows:10,value:t.description||"",onChange:i=>t.description=i.target.value,slotProps:{input:{endAdornment:e.jsx(r.InputAdornment,{position:"end",sx:{mt:-1.5},children:e.jsx(Ot,{config:t})})},htmlInput:{maxLength:200}}}),e.jsx(r.Autocomplete,{size:"small",options:[],multiple:!0,freeSolo:!0,value:t.tags??[],onChange:(i,l)=>t.tags=l,renderInput:i=>e.jsx(r.TextField,{label:s("tags"),...i})}),e.jsx(gt,{label:s("previewImage"),value:t.previewImage||"",onChange:i=>t.previewImage=i})]})})}function xe({data:t,params:s,visible:i,config:l,currentLocale:f,defaultLocale:x,allComponents:d,onUpdateConfig:b}){const{t:m}=O.useLocaleContext(),u=v.useMemo(()=>t.type==="json"||t.type==="yaml"||t.type==="array"?wt:F,[t.type]);return e.jsx(ft,{preview:s.preview,drop:s.drop,drag:s.drag,isDragging:s.isDragging,onDelete:()=>{b(a=>{if(a.properties){const o=Object.entries(a.properties).sort(([,h],[,j])=>h.index-j.index);delete a.properties[t.id],o.filter(([h])=>h!==t.id).forEach(([,h],j)=>{h.index=j})}})},visible:i,onVisibilityChange:a=>{b(c=>{const o=c.properties[t.id].data;o.visible=a})},alwaysShowActions:!0,children:e.jsxs(r.Stack,{direction:"column",sx:{gap:2},children:[e.jsx(r.TextField,{label:m("key"),size:"small",required:!0,sx:{width:"calc(100% - 80px - 8px)",flex:1,"& .MuiOutlinedInput-root":{borderColor:t.key?W(l.properties,t.id,t.key)?"warning.main":void 0:"error.main"},"& .MuiFormLabel-root":{color:t.key?W(l.properties,t.id,t.key)?"warning.main":"text.secondary":"error.main"},"& .MuiFormLabel-root.Mui-focused":{color:t.key?W(l.properties,t.id,t.key)?"warning.main":"primary.main":"error.main"}},value:t.key||"",onChange:a=>{b(c=>{const o=c.properties[t.id].data;o.key=a.target.value.trim()})},slotProps:{input:{endAdornment:!t.key||t.key&&W(l.properties,t.id,t.key)?e.jsx(r.InputAdornment,{position:"end",sx:{width:16,ml:0},children:e.jsx(r.Tooltip,{title:t.key?m("duplicateKey"):m("requiredKey"),children:e.jsx(V.InfoRounded,{sx:{color:t.key?"warning.main":"error.main",fontSize:16}})})}):null}}}),e.jsxs(r.Stack,{direction:"row",sx:{gap:1},children:[e.jsx(r.TextField,{label:m("label"),size:"small",sx:{flex:1},value:(t.locales?.[f]?.name??t.locales?.[x]?.name)||"",onChange:a=>{b(c=>{const o=c.properties[t.id].data;o.locales??={},o.locales[f]??={},o.locales[f].name=a.target.value})}}),e.jsx(r.TextField,{label:m("type"),size:"small",select:!0,sx:{flex:1},value:t.type==="string"&&t.multiline?"multiline":t.type||"string",onChange:a=>{b(c=>{const o=c.properties[t.id].data;if(o.locales)for(const h of Object.keys(o.locales))o.locales[h].defaultValue=void 0;const n=a.target.value;n==="multiline"?(o.type="string",o.multiline=!0):(typeof o.multiline<"u"&&delete o.multiline,o.type=n)})},children:yt.map(a=>e.jsx(r.MenuItem,{value:a.value,children:a.label},a.value))})]}),e.jsxs(r.Stack,{direction:"row",sx:{gap:1},children:[e.jsx(u,{allComponents:d,defaultLocale:x,component:l,property:t,label:m("defaultValue"),size:"small",fullWidth:!0,value:t.locales?.[f]?.defaultValue,onChange:(a,c)=>{b(o=>{const n=o.properties[t.id].data;if(c?.forceUpdateProperty){const h=X(n),j=X(a);Object.keys(j).forEach(p=>{h[p]||ce.default(n,p,j[p])})}else n.locales??={},n.locales[f]??={},n.locales[f].defaultValue=a})}}),t.type==="custom"?e.jsx(r.Box,{children:e.jsx(Pt,{property:t,allComponents:d})}):null]})]})})}function kt(t,s){const[i,l]=v.useState(0);return v.useEffect(()=>{const x=setTimeout(()=>{if(t.current){let d=t.current.parentElement,b=0;for(;d;)d.classList.contains("property-container")&&b++,d=d.parentElement;l(b)}},100);return()=>clearTimeout(x)},[t,s]),i}function me({config:t,currentLocale:s,defaultLocale:i,allComponents:l,onUpdateConfig:f,useI18nEditor:x=!0}){const{t:d}=O.useLocaleContext(),b=A.usePopupState({variant:"dialog"}),m=t.properties&&z.default(Object.values(t.properties),"index");return e.jsx(N.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsxs(r.Stack,{direction:"row",sx:{gap:1,alignItems:"center",justifyContent:"space-between"},children:[e.jsx(r.Typography,{variant:"subtitle1",children:d("properties")}),e.jsx(r.Box,{sx:{flex:1}}),x&&e.jsx(r.Button,{sx:{minWidth:32,minHeight:32,p:0},...A.bindTrigger(b),children:e.jsx(V.TranslateRounded,{fontSize:"small"})})]}),t.properties&&Object.keys(t.properties).length>0?e.jsx(ue,{component:r.Stack,gap:2,list:t.properties,renderItem:(u,a,c)=>{const o=Z(t.properties,u.id);return e.jsx(r.Paper,{elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:o?"1px solid":"1px dashed",borderColor:"divider"},children:e.jsx(r.Stack,{sx:{gap:2},children:e.jsx(xe,{data:u,params:c,visible:o,config:t,currentLocale:s,defaultLocale:i,allComponents:l,onUpdateConfig:f})})},u.id)}}):e.jsx(U.default,{style:{fontSize:12},children:d("maker.properties.noProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",onClick:()=>{f(u=>{const a=ae.nextId();u.properties??={},u.properties[a]??={index:m?.length||0,data:{id:a}}})},startIcon:e.jsx(V.AddRounded,{}),children:d("addObject",{object:d("property")})}),x&&e.jsx(fe,{...A.bindDialog(b),component:t})]})})}function Pt({property:t,allComponents:s}){const i=A.usePopupState({variant:"popper"});return e.jsxs(e.Fragment,{children:[e.jsx(r.Button,{sx:{minWidth:0},...A.bindTrigger(i),children:e.jsx(V.SettingsRounded,{fontSize:"small"})}),e.jsx(r.Popper,{...A.bindPopper(i),children:e.jsx(ie.ClickAwayListener,{onClickAway:i.close,children:e.jsx(r.Paper,{children:e.jsx(r.Box,{sx:{width:500,p:2},children:e.jsx(H,{value:t.componentId,onChange:(l,f)=>t.componentId=f,allComponents:s})})})})})]})}function St({value:t,valueImmutable:s,onChange:i,defaultLocale:l,allComponents:f}){const[x,d]=v.useState(!1),{t:b,locale:m}=O.useLocaleContext(),u=typeof t?.componentId=="string"?f[t.componentId]?.data:void 0;return u?e.jsxs(r.Box,{sx:{width:"100%",position:"relative"},children:[e.jsx(r.IconButton,{sx:{minWidth:0},disabled:!u,size:"small",onClick:()=>d(!x),color:x?"primary":"default",children:e.jsx(V.SettingsRounded,{fontSize:"small"})}),x&&e.jsx(r.Collapse,{in:x,timeout:"auto",unmountOnExit:!0,sx:{width:"100%",zIndex:10},children:e.jsxs(r.Paper,{elevation:1,sx:{mt:1,p:2,borderRadius:1,border:"1px solid",borderColor:"divider",width:"100%"},children:[e.jsx(r.Box,{sx:{width:"100%",mb:2},children:e.jsx(re,{config:u,currentLocale:m,defaultLocale:l,allComponents:f,propertiesValue:t?.properties,onChange:({id:a,value:c})=>{const o=$e.default(c.value),n=JSON.parse(JSON.stringify(t));n?.componentId&&(s?i?.({...n,properties:{...n.properties,[a]:{value:o}}}):(n.properties=n.properties??{},n.properties[a]={value:o},i?.(n)))}})}),e.jsx(r.Button,{size:"small",onClick:()=>d(!1),sx:{mt:1},children:b("close")})]})})]}):null}function fe({type:t="properties",component:s,...i}){const{t:l}=O.useLocaleContext(),{state:{components:f,supportedLocales:x,config:{defaultLocale:d}}}=_.useStore(),b=_.useAllComponents(),m=L.getYjsValue(s).doc,u=t==="properties"?s.properties:t==="parameters"&&s.renderer?.type==="component"?f[s.renderer.componentId]?.data.properties:void 0,a=s.renderer?.type==="component"?s:void 0;return e.jsxs(r.Dialog,{...i,fullWidth:!0,maxWidth:"lg",children:[e.jsx(r.DialogTitle,{children:l("i18nEditorTitle")}),e.jsx(r.DialogContent,{children:u&&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:x.map(({locale:c,name:o})=>e.jsx(r.TableCell,{children:e.jsxs(r.Typography,{sx:{color:"text.primary"},children:[o,d===c&&e.jsx(V.StarRounded,{sx:{fontSize:12}})]})},c))})}),e.jsx(r.TableBody,{children:z.default(Object.values(u),"index").map(({data:c})=>e.jsx(r.TableRow,{children:x.map(({locale:o})=>e.jsx(r.TableCell,{children:e.jsx(r.Stack,{sx:{gap:1},children:t==="properties"?e.jsxs(e.Fragment,{children:[e.jsx(r.TextField,{size:"small",label:"Key",value:c.key||"",onChange:n=>{m.transact(()=>{c.key=n.target.value.trim()})}}),e.jsx(r.TextField,{size:"small",label:l("label"),value:(c.locales?.[o]?.name??c.locales?.[d]?.name)||"",onChange:n=>{m.transact(()=>{c.locales??={},c.locales[o]??={},c.locales[o].name=n.target.value})}}),e.jsx(r.Box,{children:e.jsx(F,{allComponents:b,defaultLocale:d,component:s,property:c,size:"small",fullWidth:!0,label:"Default Value",valueImmutable:J.default(c.locales?.[o]?.defaultValue),value:c.locales?.[o]?.defaultValue??c.locales?.[d]?.defaultValue,onChange:n=>{m.transact(()=>{c.locales??={},c.locales[o]??={},c.locales[o].defaultValue=n})}})})]}):t==="parameters"&&a?e.jsx(r.Box,{children:e.jsx(F,{allComponents:b,defaultLocale:d,component:s,property:c,size:"small",fullWidth:!0,valueImmutable:J.default(a.renderer.properties?.[c.id]?.locales?.[o]?.value),value:a.renderer.properties?.[c.id]?.locales?.[o]?.value??a.renderer.properties?.[c.id]?.locales?.[d]?.value??c.locales?.[o]?.defaultValue??c.locales?.[d]?.defaultValue,onChange:n=>{m.transact(()=>{a.renderer.properties??={},a.renderer.properties[c.id]??={},a.renderer.properties[c.id].locales??={},a.renderer.properties[c.id].locales[o]??={},a.renderer.properties[c.id].locales[o].value=n})}})}):null},c.id)},o))},c.id))})]})})}),e.jsx(r.DialogActions,{children:e.jsx(r.Button,{onClick:c=>i.onClose?.(c,"escapeKeyDown"),children:l("close")})})]})}const oe=(t,s)=>i=>{const l=[i.palette.info.main,i.palette.primary.main,i.palette.secondary.main,i.palette.success.main,i.palette.warning.main],f=Math.min(l.length-1,t),x=l[f],d=r.alpha(x,.5),b=r.alpha(x,1);return{borderColor:`${d} !important`,borderLeft:"3px solid !important",borderLeftColor:d,color:b,...s}};function wt({property:t,onChange:s,defaultLocale:i,allComponents:l}){const{t:f,locale:x}=O.useLocaleContext(),d=v.useRef(null),b=kt(d,t),m=v.useCallback(()=>{if(!(t.type!=="json"&&t.type!=="yaml"&&t.type!=="array")&&t.subProperties)try{let u={};z.default(Object.values(t.subProperties),"index").filter(o=>o.data.visible!==!1&&o.data.key).forEach(({data:o})=>{if(!o.key)return;let n=o.locales?.[x]?.defaultValue??o.locales?.[i]?.defaultValue;if(o.type==="number")n=Number(n);else if(o.type==="boolean")n=n===!0||n==="true";else if((o.type==="json"||o.type==="yaml")&&typeof n=="string")try{o.type==="json"?n=JSON.parse(n):n=G.parse(n)}catch(h){console.error("Error parsing nested value",n,h),n={}}u[o.key]=n}),t.type==="array"&&!Array.isArray(u)&&(u=D.default(u)?[]:[u]);const c=_.transformValue(u,t.type);s?.(c)}catch(u){console.error("Error converting structure to text:",u)}},[t,x,i,s]);return t.type!=="json"&&t.type!=="yaml"&&t.type!=="array"?null:e.jsxs(r.Stack,{direction:"column",ref:d,sx:{gap:1.5,width:"100%"},children:[e.jsx(r.Divider,{sx:{mt:-1},children:e.jsx(r.Typography,{variant:"caption",sx:{color:"text.secondary"},children:f("maker.properties.subProperties")})}),t.subProperties&&Object.keys(t.subProperties).length>0?e.jsx(ue,{component:r.Stack,gap:2,list:t.subProperties,renderItem:(u,a,c)=>{const o=u.visible!==!1;return e.jsx(r.Paper,{elevation:0,className:"property-container",sx:{p:1.25,borderRadius:1,border:o?"1px solid":"1px dashed","&":oe(b)},children:e.jsx(r.Stack,{sx:{gap:2},children:e.jsx(xe,{data:u,params:c,visible:o,config:{properties:t.subProperties},currentLocale:x,defaultLocale:i,allComponents:l,onUpdateConfig:n=>{try{const h={properties:t.subProperties||{}};n(h);const j={...t,subProperties:h.properties};s?.(j,{forceUpdateProperty:!0}),m()}catch(h){console.error("Error updating property:",h)}}})})},u.id)}}):e.jsx(U.default,{style:{fontSize:12,height:100},children:f("maker.properties.noSubProperties")}),e.jsx(r.Button,{fullWidth:!0,variant:"outlined",className:"ignore-style-override",size:"small",startIcon:e.jsx(V.AddRounded,{}),onClick:()=>{try{const u=t.subProperties||{},a=ae.nextId(),o={index:Object.values(u).length,data:{id:a,key:"",type:"string",visible:!0,locales:{[x]:{name:"",defaultValue:""}},subProperties:{}}},n={...t,subProperties:{...u,[a]:o}};s?.(n,{forceUpdateProperty:!0}),m()}catch(u){console.error("Error adding property:",u)}},sx:{"&":oe(b,{})},children:f("maker.properties.addSubProperty")})]})}function F({component:t,property:s,value:i,onChange:l,valueImmutable:f,defaultLocale:x,allComponents:d,...b}){const{locale:m}=O.useLocaleContext(),u=N.useUploader(),a=v.useRef(null),c=()=>{const n=u?.current?.getUploader();n?.open(),a.current&&n.onceUploadSuccess(({response:h})=>{let j=h?.data?.filename||"";j&&(j=`mediakit://${j}`,i&&!i.includes("mediakit://")&&(j+=" # please use < import { getMediaKitAbsoluteUrl } from '@blocklet/pages-kit/builtin/utils' > to get the full address")),a.current?.(j)})},o=b.label??(s.locales?.[m]?.name||s.locales?.[x]?.name||s.key||s.id);if(s.type==="number")return e.jsx(It,{...b,label:o,NumberProps:{value:["number","string"].includes(typeof i)?i:null,onChange:(n,h)=>l?.(h)}});if(s.type==="decimal")return e.jsx(r.TextField,{...b,label:o,type:"text",value:i??"",onChange:n=>{const h=n.target.value;if(h===""||h==="-"){l?.(h);return}if(/^-?(?!.*\..*\.)[0-9]*(\.[0-9]{0,9})?$/.test(h)){let p=h;/^-?[1-9]+[0-9]*(\.[0-9]{1,9})?$/.test(p)&&(p=Number(p)),l?.(p)}}});if(s.type==="boolean")return e.jsx(r.FormControlLabel,{label:o,labelPlacement:"start",control:e.jsx(r.Switch,{checked:i===!0,onChange:(n,h)=>l?.(h)})});if(s.type==="color")return e.jsx(dt,{label:o,value:i,onChange:n=>{l?.(n)}});if(s.type==="json"||s.type==="yaml")return e.jsx(pt,{label:o,value:i,onChange:n=>{l?.(n)},property:s,component:t,defaultLocale:x,allComponents:d,PropertyValueField:F,onUpload:n=>{a.current=n,c()}});if(s.type==="custom"){const n=d[s.componentId]?.data;return n?e.jsx(r.Box,{sx:{width:"100%"},children:e.jsx(K.CustomComponentRenderer,{componentId:n.id,props:{label:o,value:i,onChange:l},locale:m,dev:{mode:"draft",components:d,defaultLocale:x}})}):e.jsx(r.TextField,{...b,label:o,disabled:!0,placeholder:"Click right button select a component"})}if(s.type==="component")return e.jsxs(r.Stack,{direction:"column",sx:{width:"100%",gap:1},children:[e.jsx(H,{allComponents:d,label:o,value:i?.componentId,onChange:(n,h)=>{f||!i?l?.({...i&&JSON.parse(JSON.stringify(i)),componentId:h}):typeof i=="object"&&(i.componentId=h,l?.({...i&&JSON.parse(JSON.stringify(i)),componentId:h}))}}),i?.componentId&&e.jsx(St,{value:i,valueImmutable:f,onChange:l,defaultLocale:x,allComponents:d})]});if(!s.type||["string","url","multiline"].includes(s.type)){let n=s.type==="string"?s.multiline:void 0;s.type==="multiline"&&(n=!0);const h=s.type==="url"?i?.url:i;return e.jsx(r.TextField,{...b,label:o,value:typeof h=="string"?h:"",multiline:n,minRows:n?2:void 0,maxRows:n?10:void 0,onChange:j=>l?.(s.type==="url"?{...i,url:j.target.value,mediaKitUrl:j.target.value}:j.target.value),slotProps:{input:s.type==="url"?{sx:{pr:0},endAdornment:e.jsxs(r.InputAdornment,{position:"end",sx:{display:"flex",alignItems:"center",justifyContent:"center"},children:[e.jsx(N.UploaderButton,{onChange:async({response:j})=>{const p=j?.data?.url||j?.data?.fileUrl;let y;p&&(y=await N.getImageSize(p).catch(()=>N.getVideoSize(p)).catch(()=>{}));let P=j?.data?.filename||"";P&&(P=`mediakit://${P}`),l?.({url:p,mediaKitUrl:P,width:y?.naturalWidth,height:y?.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(V.InfoRounded,{sx:{cursor:"default",mr:1},fontSize:"small"})})]})}:void 0}})}return s.type==="array"?e.jsx(ct,{label:o,value:Array.isArray(i)?i:[],onChange:n=>l?.(n),property:s,renderItem:({item:n,index:h,onChange:j})=>s.subProperties&&Object.keys(s.subProperties).length>0?e.jsx(r.Stack,{sx:{gap:1,width:"100%"},children:z.default(Object.values(s.subProperties),"index").filter(p=>p.data.visible!==!1).map(({data:p})=>p.key?e.jsx(F,{component:t,property:p,value:n[p.key],onChange:y=>{const P={...n,[p.key]:y};j(P)},size:"small",fullWidth:!0,defaultLocale:x,allComponents:d},p.id):null)},h):e.jsx(r.TextField,{size:b.size,fullWidth:!0,value:n,onChange:p=>j(p.target.value)})}):(console.error("Unsupported property type",s.type),null)}function It({NumberProps:t,...s}){const{getInputProps:i}=ie.unstable_useNumberInput(t),l=i();return e.jsx(r.TextField,{...s,slotProps:{htmlInput:l}})}const he=`import React from '@blocklet/pages-kit/builtin/react'
2
2
  import { Box } from '@blocklet/pages-kit/builtin/mui/material'
3
3
 
4
4
  export default function () {
@@ -8,4 +8,4 @@ export default function () {
8
8
  </Box>
9
9
  )
10
10
  }`,be=`console.log('hello')
11
- `;function It({value:t}){const{locale:s}=O.useLocaleContext(),i=te.useUpdate(),l=L.getYjsValue(t).doc;return v.useEffect(()=>{t.renderer?.script||(l.transact(()=>{t.renderer.script=t.renderer.type==="react-component"?he:be}),i())},[t]),e.jsx(r.Box,{sx:{border:1,borderColor:"divider",borderRadius:1,overflow:"hidden"},children:e.jsx(ee.CodeEditor,{keyId:t.id,locale:s,language:"typescript",value:t.renderer.script||"",onChange:f=>t.renderer.script=f,typeScriptNoValidation:!1,fullScreenOptions:{enableEscExit:!0}},t.id)})}function Tt({value:t}){const{t:s}=O.useLocaleContext(),i=L.getYjsValue(t).doc,{state:{components:l,config:{defaultLocale:f},resources:x},localState:{currentLocale:d}}=R.useStore(),b=R.useAllComponents(),m=l[t.renderer.componentId]?.data??x.components?.[t.renderer.componentId]?.component,u=A.usePopupState({variant:"dialog"});return e.jsx(V.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:1},children:[e.jsx(H,{allComponents:b,excludes:[t.id],value:t.renderer.componentId,onChange:(a,c)=>t.renderer.componentId=c}),m&&e.jsxs(e.Fragment,{children:[e.jsxs(r.Stack,{direction:"row",sx:{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},...A.bindTrigger(u),children:e.jsx(_.TranslateRounded,{fontSize:"small"})})]}),m.properties&&z.default(Object.values(m.properties),"index").map(({data:a})=>e.jsx(r.Box,{children:e.jsx(F,{allComponents:b,defaultLocale:f,component:m,property:a,fullWidth:!0,size:"small",valueImmutable:J.default(t.renderer.properties?.[a.id]?.locales?.[d]?.value),value:t.renderer.properties?.[a.id]?.locales?.[d]?.value??t.renderer.properties?.[a.id]?.locales?.[f]?.value??a.locales?.[d]?.defaultValue??a.locales?.[f]?.defaultValue,onChange:c=>{i.transact(()=>{t.renderer.properties??={},t.renderer.properties[a.id]??={},t.renderer.properties[a.id].locales??={},t.renderer.properties[a.id].locales[d]??={},t.renderer.properties[a.id].locales[d].value=c})}})},a.id)),e.jsx(fe,{...A.bindDialog(u),component:t,type:"parameters"})]})]})})}function H({label:t,options:s,excludes:i,value:l,onChange:f,allComponents:x,...d}){const{t:b}=O.useLocaleContext(),m=s??z.default(Object.values(rt.default(x,...i??[])),"index").map(a=>a.data),u=(typeof l=="string"?x[l]?.data:void 0)??null;return e.jsx(r.Autocomplete,{...d,size:"small",options:m,autoHighlight:!0,isOptionEqualToValue:(a,c)=>a.id===c.id,getOptionKey:a=>a.id,getOptionLabel:a=>a.name||a.id,renderInput:a=>e.jsx(r.TextField,{label:t||b("component"),...a}),value:u,onChange:(a,c)=>{let o={};c&&(o={blockletId:x[c?.id]?.blockletId,blockletTitle:x[c?.id]?.blockletTitle,componentName:x[c?.id]?.data?.name||x[c?.id]?.data?.id}),f?.(a,c?.id,o)}})}function re({config:t,allComponents:s,defaultLocale:i,propertiesValue:l,currentLocale:f,onChange:x,props:d}){const{t:b}=O.useLocaleContext(),[m,u]=v.useState(t?.properties),[a,c]=v.useState(null);v.useEffect(()=>{(()=>{t?.renderer?.type==="react-component"&&D.default(t?.properties)?K.transpileAndLoadScript(t?.renderer?.script).then(y=>{const P=K.getPropertiesFromCode(y);u(P)}):u(t?.properties)})()},[JSON.stringify(t)]);const o=v.useCallback(()=>!t||!m?{}:Object.values(m).reduce((p,{data:y})=>{const P=y.key||y.id;return p[y.id]={key:P,value:d?.[P]??l?.[y.id]?.value??y.locales?.[f]?.defaultValue??y.locales?.[i]?.defaultValue,id:y.id,type:y.type},p},{}),[JSON.stringify(m),t,l,f,i]),n=v.useMemo(()=>{if(!m)return{canUseProperties:[],visibleProperties:[],canUsePropertiesKeys:[]};const p=z.default(Object.values(m),"index"),y=p.filter(({data:S})=>S.key&&Z(m,S.id)),P=p.filter(({data:S})=>S.key&&S.type!=="component"),I=P.map(({data:S})=>S.key);return{canUseProperties:P,visibleProperties:y,canUsePropertiesKeys:I}},[JSON.stringify(m)]),h=o(),g=tt.default(h,"key");return e.jsx(V.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(r.Typography,{variant:"subtitle1",children:b("maker.properties.parameters")}),!t||n.canUsePropertiesKeys.length===0?e.jsx(U.default,{style:{fontSize:12},children:b("maker.properties.noParameters")}):e.jsxs(e.Fragment,{children:[e.jsx(r.Stack,{sx:{gap:2},children:n.visibleProperties.map(({data:p})=>e.jsx(r.Box,{children:e.jsx(F,{allComponents:s,defaultLocale:i,size:"small",fullWidth:!0,component:t,property:p,valueImmutable:J.default(l?.[p.id]?.value),value:d?.[p.key||p.id]??h[p.id]?.value,onChange:y=>{x({path:["properties",p.id],id:p.id,value:{value:y},shouldSync:ne(p),excludeKeys:[],key:p.key||p.id})}})},p.id))}),e.jsx(r.Stack,{sx:{gap:2,width:"100%"},children:e.jsx(K.CustomComponentRenderer,{componentId:t?.id||"",renderType:"setting",locale:f,properties:h,dev:{mode:"draft",components:s,defaultLocale:i},props:{...st.default(d??{},n.canUsePropertiesKeys),onChange:p=>{const{canUsePropertiesKeys:y}=n;Object.keys(p).filter(I=>!Ze.default(p[I],g?.[I]?.value)).filter(I=>!(I==="locale"&&!Xe.default(g[I],"locale")||g[I]?.type==="component"||(g[I]?.type==="yaml"||g[I]?.type==="json")&&Z(m,g[I]?.id))).reduce((I,S)=>I.then(()=>{const k=g[S],B=y.includes(S);if(k?.id&&B)return x({path:["properties",k.id],id:k.id,value:{value:p[S]},shouldSync:ne(k),excludeKeys:[],key:k.key||k.id}),Promise.resolve();const j=`propertyNotFound${S}`;if(a===j)return Promise.resolve();Q.default.close(a);const C=Q.default.warning(b("maker.properties.propertyNotFound",{key:S}),{key:j});return c(C),Promise.resolve()}),Promise.resolve())}}})})]})]})})}function Bt({config:t}){const{t:s,locale:i}=O.useLocaleContext(),[l,f]=v.useState(!1),x=d=>{t.llmConfig=d};return e.jsxs(e.Fragment,{children:[e.jsx(r.Tooltip,{title:s("maker.properties.configLLMDescription"),children:e.jsx(r.IconButton,{color:"primary",onClick:()=>f(!0),size:"small",children:e.jsx(_.PsychologyAlt,{})})}),l&&e.jsx(bt,{open:l,onClose:()=>f(!1),onConfirm:x,component:t,initialConfig:t.llmConfig,locale:i,defaultLocale:"en",title:s("maker.properties.llmConfigTitle")})]})}exports.BasicInfo=pe;exports.CustomComponentAutocomplete=H;exports.CustomComponentSettings=yt;exports.DefaultReactComponentScriptTemplate=he;exports.DefaultWebComponentScriptTemplate=be;exports.ParametersConfig=re;exports.PropertiesConfig=me;exports.PropertyValueField=F;
11
+ `;function Tt({value:t}){const{locale:s}=O.useLocaleContext(),i=te.useUpdate(),l=L.getYjsValue(t).doc;return v.useEffect(()=>{t.renderer?.script||(l.transact(()=>{t.renderer.script=t.renderer.type==="react-component"?he:be}),i())},[t]),e.jsx(r.Box,{sx:{border:1,borderColor:"divider",borderRadius:1,overflow:"hidden"},children:e.jsx(ee.CodeEditor,{keyId:t.id,locale:s,language:"typescript",value:t.renderer.script||"",onChange:f=>t.renderer.script=f,typeScriptNoValidation:!1,fullScreenOptions:{enableEscExit:!0}},t.id)})}function Bt({value:t}){const{t:s}=O.useLocaleContext(),i=L.getYjsValue(t).doc,{state:{components:l,config:{defaultLocale:f},resources:x},localState:{currentLocale:d}}=_.useStore(),b=_.useAllComponents(),m=l[t.renderer.componentId]?.data??x.components?.[t.renderer.componentId]?.component,u=A.usePopupState({variant:"dialog"});return e.jsx(N.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:1},children:[e.jsx(H,{allComponents:b,excludes:[t.id],value:t.renderer.componentId,onChange:(a,c)=>t.renderer.componentId=c}),m&&e.jsxs(e.Fragment,{children:[e.jsxs(r.Stack,{direction:"row",sx:{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},...A.bindTrigger(u),children:e.jsx(V.TranslateRounded,{fontSize:"small"})})]}),m.properties&&z.default(Object.values(m.properties),"index").map(({data:a})=>e.jsx(r.Box,{children:e.jsx(F,{allComponents:b,defaultLocale:f,component:m,property:a,fullWidth:!0,size:"small",valueImmutable:J.default(t.renderer.properties?.[a.id]?.locales?.[d]?.value),value:t.renderer.properties?.[a.id]?.locales?.[d]?.value??t.renderer.properties?.[a.id]?.locales?.[f]?.value??a.locales?.[d]?.defaultValue??a.locales?.[f]?.defaultValue,onChange:c=>{i.transact(()=>{t.renderer.properties??={},t.renderer.properties[a.id]??={},t.renderer.properties[a.id].locales??={},t.renderer.properties[a.id].locales[d]??={},t.renderer.properties[a.id].locales[d].value=c})}})},a.id)),e.jsx(fe,{...A.bindDialog(u),component:t,type:"parameters"})]})]})})}function H({label:t,options:s,excludes:i,value:l,onChange:f,allComponents:x,...d}){const{t:b}=O.useLocaleContext(),m=s??z.default(Object.values(rt.default(x,...i??[])),"index").map(a=>a.data),u=(typeof l=="string"?x[l]?.data:void 0)??null;return e.jsx(r.Autocomplete,{...d,size:"small",options:m,autoHighlight:!0,isOptionEqualToValue:(a,c)=>a.id===c.id,getOptionKey:a=>a.id,getOptionLabel:a=>a.name||a.id,renderInput:a=>e.jsx(r.TextField,{label:t||b("component"),...a}),value:u,onChange:(a,c)=>{let o={};c&&(o={blockletId:x[c?.id]?.blockletId,blockletTitle:x[c?.id]?.blockletTitle,componentName:x[c?.id]?.data?.name||x[c?.id]?.data?.id}),f?.(a,c?.id,o)}})}function re({config:t,allComponents:s,defaultLocale:i,propertiesValue:l,currentLocale:f,onChange:x,props:d}){const{t:b}=O.useLocaleContext(),[m,u]=v.useState(t?.properties),[a,c]=v.useState(null);v.useEffect(()=>{(()=>{t?.renderer?.type==="react-component"&&D.default(t?.properties)?K.transpileAndLoadScript(t?.renderer?.script).then(y=>{const P=K.getPropertiesFromCode(y);u(P)}):u(t?.properties)})()},[JSON.stringify(t)]);const o=v.useCallback(()=>!t||!m?{}:Object.values(m).reduce((p,{data:y})=>{const P=y.key||y.id;return p[y.id]={key:P,value:d?.[P]??l?.[y.id]?.value??y.locales?.[f]?.defaultValue??y.locales?.[i]?.defaultValue,id:y.id,type:y.type},p},{}),[JSON.stringify(m),t,l,f,i]),n=v.useMemo(()=>{if(!m)return{canUseProperties:[],visibleProperties:[],canUsePropertiesKeys:[]};const p=z.default(Object.values(m),"index"),y=p.filter(({data:S})=>S.key&&Z(m,S.id)),P=p.filter(({data:S})=>S.key&&S.type!=="component"),I=P.map(({data:S})=>S.key);return{canUseProperties:P,visibleProperties:y,canUsePropertiesKeys:I}},[JSON.stringify(m)]),h=o(),j=tt.default(h,"key");return e.jsx(N.UploaderProvider,{children:e.jsxs(r.Stack,{sx:{gap:2},children:[e.jsx(r.Typography,{variant:"subtitle1",children:b("maker.properties.parameters")}),!t||n.canUsePropertiesKeys.length===0?e.jsx(U.default,{style:{fontSize:12},children:b("maker.properties.noParameters")}):e.jsxs(e.Fragment,{children:[e.jsx(r.Stack,{sx:{gap:2},children:n.visibleProperties.map(({data:p})=>e.jsx(r.Box,{children:e.jsx(F,{allComponents:s,defaultLocale:i,size:"small",fullWidth:!0,component:t,property:p,valueImmutable:J.default(l?.[p.id]?.value),value:d?.[p.key||p.id]??h[p.id]?.value,onChange:y=>{x({path:["properties",p.id],id:p.id,value:{value:y},shouldSync:ne(p),excludeKeys:[],key:p.key||p.id})}})},p.id))}),e.jsx(r.Stack,{sx:{gap:2,width:"100%"},children:e.jsx(K.CustomComponentRenderer,{componentId:t?.id||"",renderType:"setting",locale:f,properties:h,dev:{mode:"draft",components:s,defaultLocale:i},props:{...st.default(d??{},n.canUsePropertiesKeys),onChange:p=>{const{canUsePropertiesKeys:y}=n;Object.keys(p).filter(I=>!Ze.default(p[I],j?.[I]?.value)).filter(I=>!(I==="locale"&&!Xe.default(j[I],"locale")||j[I]?.type==="component"||(j[I]?.type==="yaml"||j[I]?.type==="json")&&Z(m,j[I]?.id))).reduce((I,S)=>I.then(()=>{const k=j[S],B=y.includes(S);if(k?.id&&B)return x({path:["properties",k.id],id:k.id,value:{value:p[S]},shouldSync:ne(k),excludeKeys:[],key:k.key||k.id}),Promise.resolve();const g=`propertyNotFound${S}`;if(a===g)return Promise.resolve();Q.default.close(a);const C=Q.default.warning(b("maker.properties.propertyNotFound",{key:S}),{key:g});return c(C),Promise.resolve()}),Promise.resolve())}}})})]})]})})}function Ot({config:t}){const{t:s,locale:i}=O.useLocaleContext(),[l,f]=v.useState(!1),x=d=>{t.llmConfig=d};return e.jsxs(e.Fragment,{children:[e.jsx(r.Tooltip,{title:s("maker.properties.configLLMDescription"),children:e.jsx(r.IconButton,{color:"primary",onClick:()=>f(!0),size:"small",children:e.jsx(V.PsychologyAlt,{})})}),l&&e.jsx(jt,{open:l,onClose:()=>f(!1),onConfirm:x,component:t,initialConfig:t.llmConfig,locale:i,defaultLocale:"en",title:s("maker.properties.llmConfigTitle")})]})}exports.BasicInfo=pe;exports.CustomComponentAutocomplete=H;exports.CustomComponentSettings=Ct;exports.DefaultReactComponentScriptTemplate=he;exports.DefaultWebComponentScriptTemplate=be;exports.ParametersConfig=re;exports.PropertiesConfig=me;exports.PropertyValueField=F;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/site-state-BlQzwACl.js"),u=require("@blocklet/pages-kit/utils/common");require("@blocklet/pages-kit/utils/page-model");require("@blocklet/pages-kit/utils/property");require("@blocklet/pages-kit/utils/route");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("fs");require("glob");require("lib0/decoding");require("lib0/encoding");require("lodash/cloneDeep");require("lodash/debounce");require("lodash/get");require("lodash/isEmpty");require("lodash/set");require("lodash/union");require("lru-cache");require("p-limit");require("path");require("sequelize");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.defaultState=e.defaultState;exports.downloadAsset=e.downloadAsset;exports.downloadAssets=e.downloadAssets;exports.fromPackage=e.fromPackage;exports.getResourceStates=e.getResourceStates;exports.initPackResourceStates=e.initPackResourceStates;exports.mergeState=e.mergeState;exports.toPackage=e.toPackage;exports.triggerReloadAllProjectResource=e.triggerReloadAllProjectResource;Object.defineProperty(exports,"nextId",{enumerable:!0,get:()=>u.nextId});Object.keys(t).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>t[r]})});
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require("./chunks/components--WuwSB_H.js");const e=require("./chunks/site-state-C4Zpym9P.js"),u=require("@blocklet/pages-kit/utils/common");require("@blocklet/pages-kit/utils/page-model");require("@blocklet/pages-kit/utils/property");require("@blocklet/pages-kit/utils/route");require("@blocklet/sdk/lib/component");require("@blocklet/sdk/lib/config");require("@reactivedata/reactive");require("@syncedstore/core");require("fs");require("glob");require("lib0/decoding");require("lib0/encoding");require("lodash/cloneDeep");require("lodash/debounce");require("lodash/get");require("lodash/isEmpty");require("lodash/set");require("lodash/union");require("lru-cache");require("p-limit");require("path");require("sequelize");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.downloadAsset=e.downloadAsset;exports.downloadAssets=e.downloadAssets;exports.fromPackage=e.fromPackage;exports.getDefaultState=e.getDefaultState;exports.getResourceStates=e.getResourceStates;exports.initPackResourceStates=e.initPackResourceStates;exports.mergeState=e.mergeState;exports.toPackage=e.toPackage;exports.triggerReloadAllProjectResource=e.triggerReloadAllProjectResource;Object.defineProperty(exports,"nextId",{enumerable:!0,get:()=>u.nextId});Object.keys(t).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>t[r]})});
@@ -1,5 +1,5 @@
1
1
  import { jsx as t, jsxs as y } from "react/jsx-runtime";
2
- import { i as G, a as j, h as J, j as Z, k as ee, f as oe } from "./chunks/state-0gvZF3k2.js";
2
+ import { i as G, a as j, h as J, j as Z, k as ee, f as oe } from "./chunks/state-C3hsEhCe.js";
3
3
  import W from "@arcblock/ux/lib/Empty";
4
4
  import { useLocaleContext as F } from "@arcblock/ux/lib/Locale/context";
5
5
  import { Icon as P } from "@iconify-icon/react";
@@ -7,7 +7,7 @@ import te from "@mui/icons-material/Check";
7
7
  import { Box as n, styled as H, Dialog as re, DialogTitle as ie, TextField as ne, IconButton as ae, DialogContent as se, Tabs as le, Tab as pe, Grid as N, Card as de, CardMedia as ce, CardContent as me, Typography as V, DialogActions as ue, Button as $, Skeleton as fe } from "@mui/material";
8
8
  import { useReactive as Q } from "ahooks";
9
9
  import { createContext as L, useMemo as M, useEffect as A, useRef as S } from "react";
10
- import { b as be, T as he, I as ge, B as xe } from "./chunks/index-D5gXPe_7.js";
10
+ import { b as be, T as he, I as ge, B as xe } from "./chunks/index-DaF8ujCZ.js";
11
11
  import { styled as m } from "@arcblock/ux/lib/Theme";
12
12
  import "@blocklet/pages-kit/builtin/color-picker";
13
13
  import "@blocklet/pages-kit/utils/style";