@notionhq/custom-blocks-host 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -58,10 +58,10 @@ manifest comes from:
58
58
  - `"persisted"` requires `getPersistedManifest({ signal })`. The callback supplies a saved block
59
59
  definition or a dev-shell worker registry manifest.
60
60
  - `"local"` fetches `/manifest` from `sandboxOrigin`. The URL must pass
61
- [`isLocalCustomBlockUrl()`](#local-block-urls) and differ from the embedding page's origin.
62
- Requests omit credentials, reject redirects, bypass caches, and time out after five seconds. This
63
- source has no callback or persisted fallback. Local refers to the block server, not the host's
64
- environment.
61
+ [`isLocalCustomBlockUrl({ url, hostOrigin })`](#local-block-urls), including its origin-isolation
62
+ check. Requests omit credentials, reject redirects, bypass caches, and time out after five
63
+ seconds. This source has no callback or persisted fallback. Local refers to the block server, not
64
+ the host's environment.
65
65
 
66
66
  Hosts and SDKs use one [manifest schema](../protocol/README.md#manifests), including optional block
67
67
  metadata. The host validates and normalizes the manifest, then calls
@@ -189,10 +189,13 @@ end its subscription while the connection stays active.
189
189
 
190
190
  ## Local block URLs
191
191
 
192
- `isLocalCustomBlockUrl(url: URL)` accepts HTTP(S) URLs on `localhost`, any `.localhost` subdomain,
193
- or `127.0.0.1`, without a username or password. Both the shared host and the dev shell use this
194
- policy. The helper does not enforce origin isolation. Local manifest fetching separately rejects the
195
- embedding page's own origin.
192
+ `isLocalCustomBlockUrl({ url, hostOrigin }: { url: URL; hostOrigin: string })` accepts HTTP(S) URLs
193
+ on `localhost`, any `.localhost` subdomain, or `127.0.0.1`, without a username or password. It
194
+ rejects URLs on the embedding page's origin and requires a nonempty `hostOrigin`. Pass the embedding
195
+ page's serialized origin, such as `window.location.origin`.
196
+
197
+ Both local manifest fetching and the dev shell use this policy. Existing callers must add the
198
+ required `hostOrigin` argument when adopting this version.
196
199
 
197
200
  ## `getAutoBoundPropertyIdsByKey()`
198
201
 
package/dist/browser.js CHANGED
@@ -1 +1 @@
1
- var zr=6;function Hr(e){let{manifestProperties:o,propertySchemasById:n}=e,s=[];for(let[c,l]of Object.entries(o)){let f=Lr({propertyKey:c,manifestProperty:l,propertySchemasById:n});f!==void 0&&s.push([c,f])}return Object.fromEntries(s)}function Lr(e){let{propertyKey:o,manifestProperty:n,propertySchemasById:s}=e,c=at(n.name),l=Object.entries(s).filter(([f,y])=>y.type===n.type&&(f===o||at(y.name)===c));return l.length===1?l[0][0]:void 0}function at(e){return e.trim().toLowerCase()}var Re,Vr={lang:void 0,message:void 0,abortEarly:void 0,abortPipeEarly:void 0};function Fe(e){return!e&&!Re?Vr:{lang:e?.lang??Re?.lang,message:e?.message,abortEarly:e?.abortEarly??Re?.abortEarly,abortPipeEarly:e?.abortPipeEarly??Re?.abortPipeEarly}}var Gr;function $r(e){return Gr?.get(e)}var Qr;function Xr(e){return Qr?.get(e)}var Wr;function Jr(e,o){return Wr?.get(e)?.get(o)}function ge(e){let o=typeof e;return o==="string"?`"${e}"`:o==="number"||o==="bigint"||o==="boolean"?`${e}`:o==="object"||o==="function"?(e&&Object.getPrototypeOf(e)?.constructor?.name)??"null":o}function B(e,o,n,s,c){let l=c&&"input"in c?c.input:n.value,f=c?.expected??e.expects??null,y=c?.received??ge(l),m={kind:e.kind,type:e.type,input:l,expected:f,received:y,message:`Invalid ${o}: ${f?`Expected ${f} but r`:"R"}eceived ${y}`,requirement:e.requirement,path:c?.path,issues:c?.issues,lang:s.lang,abortEarly:s.abortEarly,abortPipeEarly:s.abortPipeEarly},x=e.kind==="schema",_=c?.message??e.message??Jr(e.reference,m.lang)??(x?Xr(m.lang):null)??s.message??$r(m.lang);_!==void 0&&(m.message=typeof _=="function"?_(m):_),x&&(n.typed=!1),n.issues?n.issues.push(m):n.issues=[m]}var ut=new WeakMap;function z(e){let o=ut.get(e);return o||(o={version:1,vendor:"valibot",validate(n){return e["~run"]({value:n},Fe())}},ut.set(e,o)),o}function Kr(e,o){return Object.prototype.hasOwnProperty.call(e,o)&&o!=="__proto__"&&o!=="prototype"&&o!=="constructor"}function Ue(e,o){let n=[...new Set(e)];return n.length>1?`(${n.join(` ${o} `)})`:n[0]??"never"}var Yr=class extends Error{constructor(e){super(e[0].message),this.name="ValiError",this.issues=e}};function re(e){return{kind:"transformation",type:"brand",reference:re,async:!1,name:e,"~run"(o){return o}}}function be(e){return{kind:"validation",type:"finite",reference:be,async:!1,expects:null,requirement:Number.isFinite,message:e,"~run"(o,n){return o.typed&&!this.requirement(o.value)&&B(this,"finite",o,n),o}}}function Me(e,o){return{kind:"validation",type:"max_length",reference:Me,async:!1,expects:`<=${e}`,requirement:e,message:o,"~run"(n,s){return n.typed&&n.value.length>this.requirement&&B(this,"length",n,s,{received:`${n.value.length}`}),n}}}function ke(e,o){return{kind:"validation",type:"min_length",reference:ke,async:!1,expects:`>=${e}`,requirement:e,message:o,"~run"(n,s){return n.typed&&n.value.length<this.requirement&&B(this,"length",n,s,{received:`${n.value.length}`}),n}}}function Se(e,o){return{kind:"validation",type:"min_value",reference:Se,async:!1,expects:`>=${e instanceof Date?e.toJSON():ge(e)}`,requirement:e,message:o,"~run"(n,s){return n.typed&&!(n.value>=this.requirement)&&B(this,"value",n,s,{received:n.value instanceof Date?n.value.toJSON():ge(n.value)}),n}}}function ze(e,o){return{kind:"validation",type:"regex",reference:ze,async:!1,expects:`${e}`,requirement:e,message:o,"~run"(n,s){return n.typed&&!this.requirement.test(n.value)&&B(this,"format",n,s),n}}}function He(e){return{kind:"transformation",type:"transform",reference:He,async:!1,operation:e,"~run"(o){return o.value=this.operation(o.value),o}}}var lt={abortEarly:!0};function pt(e,o,n){return typeof e.fallback=="function"?e.fallback(o,n):e.fallback}function De(e,o,n){return typeof e.default=="function"?e.default(o,n):e.default}function ft(e,o){return!e["~run"]({value:o},lt).issues}function E(e,o){return{kind:"schema",type:"array",reference:E,expects:"Array",async:!1,item:e,message:o,get"~standard"(){return z(this)},"~run"(n,s){let c=n.value;if(Array.isArray(c)){n.typed=!0,n.value=[];for(let l=0;l<c.length;l++){let f=c[l],y=this.item["~run"]({value:f},s);if(y.issues){let m={type:"array",origin:"value",input:c,key:l,value:f};for(let x of y.issues)x.path?x.path.unshift(m):x.path=[m],n.issues?.push(x);if(n.issues||(n.issues=y.issues),s.abortEarly){n.typed=!1;break}}y.typed||(n.typed=!1),n.value.push(y.value)}}else B(this,"type",n,s);return n}}}function h(e){return{kind:"schema",type:"boolean",reference:h,expects:"boolean",async:!1,message:e,get"~standard"(){return z(this)},"~run"(o,n){return typeof o.value=="boolean"?o.typed=!0:B(this,"type",o,n),o}}}function i(e,o){return{kind:"schema",type:"literal",reference:i,expects:ge(e),async:!1,literal:e,message:o,get"~standard"(){return z(this)},"~run"(n,s){return n.value===this.literal?n.typed=!0:B(this,"type",n,s),n}}}function Le(e){return{kind:"schema",type:"nan",reference:Le,expects:"NaN",async:!1,message:e,get"~standard"(){return z(this)},"~run"(o,n){return Number.isNaN(o.value)?o.typed=!0:B(this,"type",o,n),o}}}function J(e,o){return{kind:"schema",type:"nullable",reference:J,expects:`(${e.expects} | null)`,async:!1,wrapped:e,default:o,get"~standard"(){return z(this)},"~run"(n,s){return n.value===null&&(this.default!==void 0&&(n.value=De(this,n,s)),n.value===null)?(n.typed=!0,n):this.wrapped["~run"](n,s)}}}function P(e){return{kind:"schema",type:"number",reference:P,expects:"number",async:!1,message:e,get"~standard"(){return z(this)},"~run"(o,n){return typeof o.value=="number"&&!isNaN(o.value)?o.typed=!0:B(this,"type",o,n),o}}}function r(e,o){return{kind:"schema",type:"object",reference:r,expects:"Object",async:!1,entries:e,message:o,get"~standard"(){return z(this)},"~run"(n,s){let c=n.value;if(c&&typeof c=="object"){n.typed=!0,n.value={};for(let l in this.entries){let f=this.entries[l];if(l in c||(f.type==="exact_optional"||f.type==="optional"||f.type==="nullish")&&f.default!==void 0){let y=l in c?c[l]:De(f),m=f["~run"]({value:y},s);if(m.issues){let x={type:"object",origin:"value",input:c,key:l,value:y};for(let _ of m.issues)_.path?_.path.unshift(x):_.path=[x],n.issues?.push(_);if(n.issues||(n.issues=m.issues),s.abortEarly){n.typed=!1;break}}m.typed||(n.typed=!1),n.value[l]=m.value}else if(f.fallback!==void 0)n.value[l]=pt(f);else if(f.type!=="exact_optional"&&f.type!=="optional"&&f.type!=="nullish"&&(B(this,"key",n,s,{input:void 0,expected:`"${l}"`,path:[{type:"object",origin:"key",input:c,key:l,value:c[l]}]}),s.abortEarly))break}}else B(this,"type",n,s);return n}}}function u(e,o){return{kind:"schema",type:"optional",reference:u,expects:`(${e.expects} | undefined)`,async:!1,wrapped:e,default:o,get"~standard"(){return z(this)},"~run"(n,s){return n.value===void 0&&(this.default!==void 0&&(n.value=De(this,n,s)),n.value===void 0)?(n.typed=!0,n):this.wrapped["~run"](n,s)}}}function R(e,o){return{kind:"schema",type:"picklist",reference:R,expects:Ue(e.map(ge),"|"),async:!1,options:e,message:o,get"~standard"(){return z(this)},"~run"(n,s){return this.options.includes(n.value)?n.typed=!0:B(this,"type",n,s),n}}}function F(e,o,n){return{kind:"schema",type:"record",reference:F,expects:"Object",async:!1,key:e,value:o,message:n,get"~standard"(){return z(this)},"~run"(s,c){let l=s.value;if(l&&typeof l=="object"){s.typed=!0,s.value={};for(let f in l)if(Kr(l,f)){let y=l[f],m=this.key["~run"]({value:f},c);if(m.issues){let _={type:"object",origin:"key",input:l,key:f,value:y};for(let M of m.issues)M.path=[_],s.issues?.push(M);if(s.issues||(s.issues=m.issues),c.abortEarly){s.typed=!1;break}}let x=this.value["~run"]({value:y},c);if(x.issues){let _={type:"object",origin:"value",input:l,key:f,value:y};for(let M of x.issues)M.path?M.path.unshift(_):M.path=[_],s.issues?.push(M);if(s.issues||(s.issues=x.issues),c.abortEarly){s.typed=!1;break}}(!m.typed||!x.typed)&&(s.typed=!1),m.typed&&(s.value[m.value]=x.value)}}else B(this,"type",s,c);return s}}}function p(e,o){return{kind:"schema",type:"strict_object",reference:p,expects:"Object",async:!1,entries:e,message:o,get"~standard"(){return z(this)},"~run"(n,s){let c=n.value;if(c&&typeof c=="object"){n.typed=!0,n.value={};for(let l in this.entries){let f=this.entries[l];if(l in c||(f.type==="exact_optional"||f.type==="optional"||f.type==="nullish")&&f.default!==void 0){let y=l in c?c[l]:De(f),m=f["~run"]({value:y},s);if(m.issues){let x={type:"object",origin:"value",input:c,key:l,value:y};for(let _ of m.issues)_.path?_.path.unshift(x):_.path=[x],n.issues?.push(_);if(n.issues||(n.issues=m.issues),s.abortEarly){n.typed=!1;break}}m.typed||(n.typed=!1),n.value[l]=m.value}else if(f.fallback!==void 0)n.value[l]=pt(f);else if(f.type!=="exact_optional"&&f.type!=="optional"&&f.type!=="nullish"&&(B(this,"key",n,s,{input:void 0,expected:`"${l}"`,path:[{type:"object",origin:"key",input:c,key:l,value:c[l]}]}),s.abortEarly))break}if(!n.issues||!s.abortEarly){for(let l in c)if(!(l in this.entries)){B(this,"key",n,s,{input:l,expected:"never",path:[{type:"object",origin:"key",input:c,key:l,value:c[l]}]});break}}}else B(this,"type",n,s);return n}}}function t(e){return{kind:"schema",type:"string",reference:t,expects:"string",async:!1,message:e,get"~standard"(){return z(this)},"~run"(o,n){return typeof o.value=="string"?o.typed=!0:B(this,"type",o,n),o}}}function ct(e){let o;if(e)for(let n of e)if(o)for(let s of n.issues)o.push(s);else o=n.issues;return o}function I(e,o){return{kind:"schema",type:"union",reference:I,expects:Ue(e.map(n=>n.expects),"|"),async:!1,options:e,message:o,get"~standard"(){return z(this)},"~run"(n,s){let c,l,f;for(let y of this.options){let m=y["~run"]({value:n.value},s);if(m.typed)if(m.issues)l?l.push(m):l=[m];else{c=m;break}else f?f.push(m):f=[m]}if(c)return c;if(l){if(l.length===1)return l[0];B(this,"type",n,s,{issues:ct(l)}),n.typed=!0}else{if(f?.length===1)return f[0];B(this,"type",n,s,{issues:ct(f)})}return n}}}function Ie(){return{kind:"schema",type:"unknown",reference:Ie,expects:"unknown",async:!1,get"~standard"(){return z(this)},"~run"(e){return e.typed=!0,e}}}function g(e,o,n){return{kind:"schema",type:"variant",reference:g,expects:"Object",async:!1,key:e,options:o,message:n,get"~standard"(){return z(this)},"~run"(s,c){let l=s.value;if(l&&typeof l=="object"){let f,y=0,m=this.key,x=[],_=(M,S)=>{for(let H of M.options){if(H.type==="variant")_(H,new Set(S).add(H.key));else{let L=!0,Q=0;for(let j of S){let V=H.entries[j];if(j in l?V["~run"]({typed:!1,value:l[j]},lt).issues:V.type!=="exact_optional"&&V.type!=="optional"&&V.type!=="nullish"){L=!1,m!==j&&(y<Q||y===Q&&j in l&&!(m in l))&&(y=Q,m=j,x=[]),m===j&&x.push(H.entries[j].expects);break}Q++}if(L){let j=H["~run"]({value:l},c);(!f||!f.typed&&j.typed)&&(f=j)}}if(f&&!f.issues)break}};if(_(this,new Set([this.key])),f)return f;B(this,"type",s,c,{input:l[m],expected:Ue(x,"|"),path:[{type:"object",origin:"value",input:l,key:m,value:l[m]}]})}else B(this,"type",s,c);return s}}}function te(e,o,n){let s=e["~run"]({value:o},Fe(n));if(s.issues)throw new Yr(s.issues);return s.value}function U(...e){return{...e[0],pipe:e,get"~standard"(){return z(this)},"~run"(o,n){for(let s of e)if(s.kind!=="metadata"){if(o.issues&&(s.kind==="schema"||s.kind==="transformation")){o.typed=!1;break}(!o.issues||!n.abortEarly&&!n.abortPipeEarly)&&(o=s["~run"](o,n))}return o}}}function _e(e,o,n){let s=e["~run"]({value:o},Fe(n));return{typed:s.typed,success:!s.issues,output:s.value,issues:s.issues}}var ne=U(t(),re("NotionBlockId")),Y=U(t(),re("NotionDataSourceId")),D=U(t(),re("NotionPageId")),mt=U(t(),re("NotionAgentId")),yt=U(t(),re("NotionSpaceId"));var vt=R(["default","gray","brown","orange","yellow","green","blue","purple","pink","red","gray_background","brown_background","orange_background","yellow_background","green_background","blue_background","purple_background","pink_background","red_background","default_background"]),Ve=r({id:t(),name:t(),color:u(vt),description:u(t())}),Zr=r({id:t(),name:t(),color:u(vt),option_ids:E(t())}),en=r({synced_property_id:t(),synced_property_name:t()}),O=r({name:t(),description:u(t())}),tn=["title","rich_text","number","checkbox","url","email","phone_number","select","multi_select","status","date","people","files","unique_id","relation","place","formula","rollup","button","verification","last_visited_time","location","created_time","last_edited_time","created_by","last_edited_by"],dt=R(tn),ht=["title","rich_text","number","checkbox","url","email","phone_number","date","created_time","last_edited_time","people","created_by"],Ge=g("type",[r({...O.entries,type:i("title")}),r({...O.entries,type:i("rich_text")}),r({...O.entries,type:i("number")}),r({...O.entries,type:i("checkbox")}),r({...O.entries,type:i("url")}),r({...O.entries,type:i("email")}),r({...O.entries,type:i("phone_number")}),r({...O.entries,type:i("select"),options:E(Ve)}),r({...O.entries,type:i("multi_select"),options:E(Ve)}),r({...O.entries,type:i("status"),options:E(Ve),groups:E(Zr)}),r({...O.entries,type:i("date")}),r({...O.entries,type:i("people")}),r({...O.entries,type:i("files")}),r({...O.entries,type:i("unique_id")}),r({...O.entries,type:i("relation"),data_source_id:u(t()),dual_property:u(en)}),r({...O.entries,type:i("place")}),r({...O.entries,type:i("formula")}),r({...O.entries,type:i("rollup")}),r({...O.entries,type:i("button")}),r({...O.entries,type:i("verification")}),r({...O.entries,type:i("last_visited_time")}),r({...O.entries,type:i("location")}),r({...O.entries,type:i("created_time")}),r({...O.entries,type:i("last_edited_time")}),r({...O.entries,type:i("created_by")}),r({...O.entries,type:i("last_edited_by")})]);var gt={created_time:{type:"created_time",name:"Created time"},last_edited_time:{type:"last_edited_time",name:"Last edited time"},created_by:{type:"created_by",name:"Created by"},last_edited_by:{type:"last_edited_by",name:"Last edited by"}};var bt=r({id:Y,table:t(),spaceId:u(yt)}),kt=r({id:u(Y),propertiesById:F(t(),Ge)}),So=r({key:t(),collectionPointer:u(bt),collectionSchema:u(kt),propertyIdsByKey:F(t(),u(t())),propertySchemasById:F(t(),Ge)}),rn=r({collectionPointer:u(bt),collectionSchema:u(kt),propertyIdsByKey:u(F(t(),u(t())))}),le=F(t(),rn);var fe=R(["standard","high"]),St="standard";var It=r({type:i("contrastModeChanged"),contrastMode:fe});var we=r({id:t(),table:t()});var oe=g("type",[r({type:i("page_id"),page_id:D}),r({type:i("data_source_id"),data_source_id:Y}),r({type:i("workspace"),workspace:i(!0)}),r({type:i("block_id"),block_id:ne}),r({type:i("agent_id"),agent_id:mt}),r({type:i("unavailable")})]);var me=g("type",[r({type:i("unavailable")}),r({type:i("page"),id:D,parent:oe})]),nn=r({type:i("emoji"),emoji:t()}),on=r({type:i("custom_emoji"),custom_emoji:r({id:t(),name:u(t()),url:u(t())})}),Ct=r({type:i("external"),external:r({url:t()})}),Pt=r({type:i("file"),file:r({url:t(),expiry_time:u(t())})}),Qe=g("type",[nn,on,Ct,Pt]),Xe=g("type",[Ct,Pt]),$=J(t()),_t=F(t(),Ie()),$e=I([r({id:t(),name:u(t()),color:u(t()),description:u($)}),r({name:t(),id:u(t()),color:u(t()),description:u($)})]),sn=r({start:t(),end:u($),time_zone:u($)}),an=I([r({object:u(i("user")),id:t()}),r({object:i("group"),id:t(),name:u($)})]),un=r({id:t()}),cn=I([r({type:i("external"),name:t(),external:r({url:t()})}),r({type:i("file"),name:t(),file:r({url:t(),expiry_time:u(t())})})]),ln=r({lat:P(),lon:P(),name:u($),address:u($),aws_place_id:u($),google_place_id:u($)}),A={id:t()},xt=J(r({...we.entries,table:R(["notion_user","bot","organization_bot"]),spaceId:u(t())})),We=g("type",[r({...A,type:i("title"),title:E(_t)}),r({...A,type:i("rich_text"),rich_text:E(_t)}),r({...A,type:i("number"),number:J(P())}),r({...A,type:i("url"),url:$}),r({...A,type:i("email"),email:$}),r({...A,type:i("phone_number"),phone_number:$}),r({...A,type:i("checkbox"),checkbox:h()}),r({...A,type:i("select"),select:J($e)}),r({...A,type:i("status"),status:J($e)}),r({...A,type:i("multi_select"),multi_select:E($e)}),r({...A,type:i("date"),date:J(sn)}),r({...A,type:i("people"),people:E(an)}),r({...A,type:i("relation"),has_more:u(h()),relation:E(un)}),r({...A,type:i("files"),files:E(cn)}),r({...A,type:i("place"),place:J(ln)}),r({...A,type:i("created_time"),created_time:$}),r({...A,type:i("last_edited_time"),last_edited_time:$}),r({...A,type:i("created_by"),created_by:xt}),r({...A,type:i("last_edited_by"),last_edited_by:xt}),r({...A,type:i("last_visited_time"),last_visited_time:$})]),xe=F(t(),We),ye=r({object:i("page"),id:D,parent:oe,properties:xe,created_time:u(t()),last_edited_time:u(t()),icon:u(Qe),cover:u(Xe),url:u(t()),public_url:u(t()),is_archived:h(),in_trash:h()});var pn=t(),fn=r({code:pn,message:t(),isRetryable:h()}),Et=g("status",[r({type:i("createPageResult"),requestId:t(),status:i("success"),page:ye}),r({type:i("createPageResult"),requestId:t(),status:i("error"),error:fn})]);var Je=U(t(),re("NotionUserId")),ie=r({object:i("user"),id:Je,name:u(t()),avatar_url:J(t()),type:i("person"),person:r({email:t()})}),Ot=r({object:i("list"),results:E(ie),next_cursor:J(t()),has_more:h(),type:i("user"),user:F(t(),Ie())});var jt=r({type:i("currentUserChanged"),currentUser:ie});var Bt=r({type:i("dataSourcesChanged"),dataSources:r({bindings:le})});var mn=t(),yn=r({code:mn,message:t(),isRetryable:h()}),Rt=r({type:i("getPage"),requestId:t(),pageId:D}),Mt=g("status",[r({type:i("getPageResult"),requestId:t(),status:i("success"),page:ye}),r({type:i("getPageResult"),requestId:t(),status:i("error"),error:yn})]);var vn=t(),dn=r({code:vn,message:t(),isRetryable:h()}),Dt=r({type:i("getUser"),requestId:t(),userId:Je}),wt=g("status",[r({type:i("getUserResult"),requestId:t(),status:i("success"),user:ie}),r({type:i("getUserResult"),requestId:t(),status:i("error"),error:dn})]);var hn=g("type",[r({type:i("emoji"),emoji:t()}),r({type:i("external"),url:t()})]),gn=r({name:t(),description:u(t()),type:dt}),bn=r({name:t(),description:u(t()),icon:u(hn),properties:u(F(t(),gn),{})}),pe=r({version:i(1),name:u(t()),description:u(t()),slashCommand:u(t()),icon:u(r({type:i("emoji"),emoji:t()})),dataSources:u(F(t(),bn),{})});var ve=R(["light","dark"]);var kn=t(),Sn=r({code:kn,message:t(),isRetryable:h()});var Ae=g("status",[r({type:i("init"),initializationId:t(),status:i("success"),theme:ve,contrastMode:fe,blockId:ne,parent:oe,page:me,manifest:pe,dataSources:r({bindings:le}),currentUser:ie}),r({type:i("init"),initializationId:t(),status:i("error"),error:Sn})]);var At=r({type:i("invalidSandboxMessage"),reason:t()});var In=t(),_n=r({code:In,message:t(),isRetryable:h()}),qt=r({type:i("listUsers"),requestId:t(),startCursor:u(t()),pageSize:u(P())}),Tt=g("status",[r({type:i("listUsersResult"),requestId:t(),status:i("success"),list:Ot}),r({type:i("listUsersResult"),requestId:t(),status:i("error"),error:_n})]);var xn=R(["side_peek","center_peek"]),Cn=t(),Pn=r({code:Cn,message:t(),isRetryable:h()}),Nt=r({type:i("openPage"),requestId:t(),pageId:D,mode:xn}),Ft=g("status",[r({type:i("openPageResult"),requestId:t(),status:i("success"),pageId:D}),r({type:i("openPageResult"),requestId:t(),status:i("error"),error:Pn})]);var Ut=r({type:i("pageChanged"),page:me});var zt=r({type:i("parentChanged"),parent:oe});var Ht=r({unit:R(["year","month","week","day"]),value:P(),time:t(),defaultTimeZone:u(t())}),En=r({unit:R(["hour","minute"]),value:P()}),Lt=r({unit:i("none")}),On=I([Ht,En]),Vt=u(I([Ht,Lt])),Gt=u(I([On,Lt])),jn=r({type:i("date"),start_date:t(),reminder:Vt}),Bn=r({type:i("daterange"),start_date:t(),end_date:t(),reminder:Vt}),Rn=r({type:i("datetime"),start_date:t(),start_time:t(),time_zone:u(t()),reminder:Gt}),Mn=r({type:i("datetimerange"),start_date:t(),start_time:t(),end_date:t(),end_time:t(),time_zone:u(t()),reminder:Gt}),$t=g("type",[jn,Bn,Rn,Mn]);var Qt=I([t(),P(),h(),$t,E(t()),E(we)]);var Xt=r({id:D,is_archived:h(),in_trash:h(),propertiesById:F(t(),u(Qt))}),Wt=r({id:D,is_archived:h(),in_trash:h(),properties:F(t(),u(We))});var Dn=t(),wn=r({code:Dn,message:t(),isRetryable:h()}),Jt=g("status",[r({type:i("queryDataSourceResult"),subscriptionId:t(),status:i("success"),items:E(I([Wt,Xt])),hasMore:h()}),r({type:i("queryDataSourceResult"),subscriptionId:t(),status:i("error"),error:wn})]);var Kt=r({type:i("themeChanged"),theme:ve});var An=t(),qn=r({code:An,message:t(),isRetryable:h()}),Yt=g("status",[r({type:i("updatePageResult"),requestId:t(),status:i("success"),page:ye}),r({type:i("updatePageResult"),requestId:t(),status:i("error"),error:qn})]);var Zt=g("type",[Ae,Kt,It,zt,Ut,jt,Bt,Jt,Et,Mt,wt,Tt,Ft,Yt,At]);function er(){return{code:"no_connect",message:"Sandbox did not send a connect message.",isRetryable:!0}}function tr(){return{code:"invalid_connect_payload",message:"Sandbox sent an invalid connect message.",isRetryable:!1}}function Ke(e){let{currentBridgeProtocolVersion:o}=e;return{code:"invalid_protocol_version",message:`Sandbox reported an invalid bridge protocol version: ${o}`,isRetryable:!1}}function Ye(e){let{currentBridgeProtocolVersion:o,minBridgeProtocolVersion:n}=e;return{code:"unsupported_protocol_version",message:`Sandbox bridge protocol version ${o} is not supported. Minimum supported version is ${n}.`,isRetryable:!1}}function Ze(){return{code:"context_unavailable",message:"Host page context is unavailable.",isRetryable:!0}}function rr(){return{code:"initial_state_timeout",message:"Host did not prepare initial state before the timeout.",isRetryable:!0}}function nr(){return{code:"missing_data_source_binding",message:"A required data source is not mapped.",isRetryable:!1}}function or(){return{code:"missing_property_binding",message:"A required data source property is not mapped.",isRetryable:!1}}function ir(){return{code:"invalid_property_binding",message:"A mapped data source property is missing or incompatible.",isRetryable:!1}}function sr(){return{code:"no_init_result",message:"Sandbox did not acknowledge initialization.",isRetryable:!0}}function ar(){return{code:"invalid_init_result_payload",message:"Sandbox sent an invalid initialization result.",isRetryable:!1}}function Ce(){return{code:"unknown_error",message:"Unexpected error while initializing custom block.",isRetryable:!1}}function se(e){throw new Error(`[custom-blocks-host] Unexpected value encountered: ${JSON.stringify(e)}`)}function et(e){return Number.isFinite(e)&&Number.isInteger(e)&&e>=1}var Tn=5e3,Nn=5e3,Fn=5e3;function ur(e){let{prepareInit:o,sendInitMessage:n,warn:s,flushPendingHostStateChanges:c,minBridgeProtocolVersion:l,noConnectTimeoutMs:f=Tn,initialStateTimeoutMs:y=Nn,noInitResultTimeoutMs:m=Fn,stopHostWithFailure:x,onInitResult:_,onConnectionFailure:M}=e,S="waitingForConnect",H,L,Q,j,V=!1,ae=!1;function W(){H!==void 0&&(window.clearTimeout(H),H=void 0)}function w(){L!==void 0&&(window.clearTimeout(L),L=void 0)}function q(){Q!==void 0&&(window.clearTimeout(Q),Q=void 0)}function T(b){let{initializationId:v,error:G,phase:ee,source:Te}=b;switch(S){case"waitingForConnect":case"preparingInit":break;case"waitingForInitResult":case"initialized":case"error":case"stopped":return;default:return se(S)}S="error",j=v,W(),w(),n({type:"init",initializationId:v,status:"error",error:G}),M?.({...G,phase:ee,source:Te})}async function K(b){if(S==="waitingForConnect"){S="preparingInit",j=b.initializationId,W(),L=window.setTimeout(()=>{if(S!=="preparingInit")return;let v=rr();s({...v,initializationId:b.initializationId}),T({initializationId:b.initializationId,error:v,phase:"init",source:"host"})},y);try{let v=await o(b);if(S!=="preparingInit")return;if(w(),v.status==="error"){T({initializationId:b.initializationId,error:v.error,phase:"init",source:"host"});return}S="waitingForInitResult";let G={type:"init",initializationId:b.initializationId,status:"success",theme:v.initialState.theme,contrastMode:v.initialState.contrastMode??St,blockId:v.initialState.blockId,parent:v.initialState.parent,page:v.initialState.page,currentUser:v.initialState.currentUser,manifest:v.initialState.manifest,dataSources:v.initialState.dataSources};n(G),Q=window.setTimeout(()=>{if(S!=="waitingForInitResult")return;S="error";let ee=sr();M?.({...ee,phase:"initResult",source:"host"}),s({...ee,initializationId:b.initializationId})},m)}catch(v){if(S!=="preparingInit")return;s({message:"Failed to prepare custom block initialization",error:v}),T({initializationId:b.initializationId,error:Ce(),phase:"init",source:"host"})}}}function Z(b){if(S!=="stopped"&&S==="waitingForConnect"){if(!et(b.bridgeProtocolVersion)){let v=Ke({currentBridgeProtocolVersion:b.bridgeProtocolVersion});T({initializationId:b.initializationId,error:v,phase:"connect",source:"host"});return}if(b.bridgeProtocolVersion<l){let v=Ye({currentBridgeProtocolVersion:b.bridgeProtocolVersion,minBridgeProtocolVersion:l});T({initializationId:b.initializationId,error:v,phase:"connect",source:"host"});return}if(b.status==="error"){T({initializationId:b.initializationId,error:b.error,phase:"connect",source:"sandbox"});return}ae=!0,K(b)}}function C(b){if(S==="stopped"||S!=="waitingForConnect")return"handled";let{initializationId:v,bridgeProtocolVersion:G}=b;if(v===void 0)return"nack";let ee=b.error;return G!==void 0&&(et(G)?G<l&&(ee=Ye({currentBridgeProtocolVersion:G,minBridgeProtocolVersion:l})):ee=Ke({currentBridgeProtocolVersion:G})),T({initializationId:v,error:ee,phase:"connect",source:"host"}),"handled"}function ue(b){let{initializationId:v,error:G}=b;S!=="waitingForInitResult"||v===void 0||v!==j||(W(),q(),S="error",s(G),M?.({...G,phase:"initResult",source:"host"}))}function Be(){if(S!=="stopped"){if(V){x({phase:"runtime",source:"host",code:"iframe_reloaded",message:"The iframe reloaded. Create a new host and iframe to reconnect.",isRetryable:!0});return}V=!0,W(),S==="waitingForConnect"&&(H=window.setTimeout(()=>{if(S!=="waitingForConnect")return;S="error";let b=er();s(b),M?.({...b,phase:"connect",source:"host"})},f))}}function de(b){if(S!=="waitingForInitResult"||b.initializationId!==j){s({message:"Ignored stale or unexpected initResult",payload:b});return}q(),S=b.status==="success"?"initialized":"error",b.status==="success"?c():M?.({...b.error,phase:"initResult",source:"sandbox"}),_?.(b)}function ce(){S="stopped",W(),w(),q()}return{get status(){return S},get hasConnectedSandbox(){return ae},handleConnect:Z,handleInitResult:de,handleInvalidConnect:C,handleInvalidInitResult:ue,onIframeLoad:Be,stop:ce}}function tt(e){return(e.protocol==="http:"||e.protocol==="https:")&&(e.hostname==="localhost"||e.hostname==="127.0.0.1"||e.hostname.endsWith(".localhost"))&&e.username===""&&e.password===""}async function cr(e){let o=new AbortController,n=()=>o.abort();e.signal.addEventListener("abort",n,{once:!0});let s=new Promise((l,f)=>{o.signal.addEventListener("abort",()=>f(o.signal.reason),{once:!0})});e.signal.aborted&&o.abort();let c=e.manifestSource==="local"?window.setTimeout(()=>{o.abort(new Error("Manifest loading timed out after 5000 ms."))},5e3):void 0;try{let l=await Promise.race([e.manifestSource==="local"?Un(e.sandboxOrigin,o.signal):e.getPersistedManifest({signal:o.signal}),s]);if(o.signal.aborted)throw new Error("Manifest loading was cancelled.");return{status:"success",manifest:te(pe,l)}}catch(l){return e.signal.aborted||e.onError(l),{status:"error",error:{code:"manifest_unavailable",message:"The custom block manifest is unavailable.",isRetryable:!0}}}finally{window.clearTimeout(c),e.signal.removeEventListener("abort",n)}}async function Un(e,o){let n=new URL(e);if(!tt(n)||n.origin===window.location.origin)throw new Error("Preview requires a separate loopback origin.");let s=await fetch(new URL("/manifest",n),{credentials:"omit",redirect:"error",cache:"no-store",signal:o});if(!s.ok)throw new Error(`Manifest request failed: HTTP ${s.status}.`);return s.json()}function lr(e,o){return o>=5||!(e.type==="init"&&e.status==="success"||e.type==="dataSourcesChanged")?e:{...e,dataSources:{bindings:Object.fromEntries(Object.entries(e.dataSources.bindings).map(([s,c])=>[s,{...c,collectionSchema:{...c.collectionSchema,propertiesById:{...c.collectionSchema?.propertiesById,...gt}}}]))}}}var pr=r({theme:ve,contrastMode:u(fe),blockId:ne,parent:oe,page:me,manifest:pe,dataSources:r({bindings:le}),currentUser:ie});function fr(e){switch(e.type){case"connect":case"init":case"initResult":return!0;default:return!1}}var mr=r({code:t(),message:t(),isRetryable:h()});var yr={type:i("connect"),initializationId:t(),bridgeProtocolVersion:P(),sdkVersion:t()},vr=g("status",[r({status:i("success"),manifest:u(pe),...yr}),r({status:i("error"),error:mr,...yr})]);var zn=g("type",[r({type:i("start")}),r({type:i("end")}),r({type:i("before"),blockId:ne}),r({type:i("after"),blockId:ne})]),Hn=g("type",[r({type:i("page_id"),page_id:D}),r({type:i("data_source_id"),data_source_id:Y})]),dr=r({type:i("createPage"),requestId:t(),parent:Hn,properties:xe,position:u(zn)});var Ln=t(),Vn=r({code:Ln,message:t(),isRetryable:h()}),hr=g("status",[r({type:i("initResult"),initializationId:t(),status:i("success"),initialHeight:u(U(P(),be(),Se(0)))}),r({type:i("initResult"),initializationId:t(),status:i("error"),error:Vn})]);var gr=r({type:i("invalidHostMessage"),reason:t()});var br=R(["ascending","descending"]);var kr=U(D,ze(/^(?:[0-9a-f]{32}|[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12})$/i),He(e=>e.replaceAll("-","").toLowerCase().replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/,"$1-$2-$3-$4-$5"))),rt=I([p({contains:kr}),p({does_not_contain:kr})]),je=I([p({is_empty:i(!0)}),p({is_not_empty:i(!0)})]),Oe=I([t(),E(t())]),Sr=p({object:R(["user","group"]),id:U(t(),ke(1))}),Gn=I([p({contains:Sr}),p({does_not_contain:Sr}),je]),Ir=p({object:i("user"),id:U(t(),ke(1),Me(2e3))}),$n=I([p({contains:Ir}),p({does_not_contain:Ir}),p({is_empty:i(!0)}),p({is_not_empty:i(!0)})]),Pe=I([p({equals:t()}),p({does_not_equal:t()}),p({contains:t()}),p({does_not_contain:t()}),p({starts_with:t()}),p({ends_with:t()}),je]),Qn=I([p({equals:P()}),p({does_not_equal:P()}),p({greater_than:P()}),p({less_than:P()}),p({greater_than_or_equal_to:P()}),p({less_than_or_equal_to:P()}),je]),Xn=I([p({equals:h()}),p({does_not_equal:h()})]),Pr=I([p({equals:Oe}),p({does_not_equal:Oe}),je]),_r=R(["To-do","In progress","Complete","Current","Future"]),xr=I([_r,U(E(_r),ke(1),Me(5))]),Wn=I([p({group_equals:xr}),p({group_does_not_equal:xr})]),Jn=I([Pr,Wn]),Kn=I([p({contains:Oe}),p({contains_all:Oe}),p({does_not_contain:Oe}),je]),X=R(["start_date","end_date"]),Yn=R(["today","tomorrow","yesterday","one_week_ago","one_week_from_now","one_month_ago","one_month_from_now"]),Ee=I([Yn,t()]),Zn=I([p({target:u(X),equals:Ee}),p({target:u(X),before:Ee}),p({target:u(X),after:Ee}),p({target:u(X),on_or_before:Ee}),p({target:u(X),on_or_after:Ee}),p({target:u(X),this_week:p({})}),p({target:u(X),past_week:p({})}),p({target:u(X),past_month:p({})}),p({target:u(X),past_year:p({})}),p({target:u(X),next_week:p({})}),p({target:u(X),next_month:p({})}),p({target:u(X),next_year:p({})}),p({target:u(X),is_empty:i(!0)}),p({target:u(X),is_not_empty:i(!0)})]),Cr=I([p({propertyId:t(),relation:rt}),p({propertyId:t(),created_by:$n}),p({propertyId:t(),title:Pe}),p({propertyId:t(),rich_text:Pe}),p({propertyId:t(),url:Pe}),p({propertyId:t(),email:Pe}),p({propertyId:t(),phone_number:Pe}),p({propertyId:t(),number:Qn}),p({propertyId:t(),checkbox:Xn}),p({propertyId:t(),select:Pr}),p({propertyId:t(),multi_select:Kn}),p({propertyId:t(),status:Jn}),p({propertyId:t(),date:Zn}),p({propertyId:t(),people:Gn})]),eo=I([Cr,p({and:E(Cr)})]),nt=10,to=p({propertyId:t(),direction:br}),Er=r({type:i("queryDataSource"),subscriptionId:t(),dataSourceId:Y,limit:P(),filter:u(eo),sorts:u(E(to))});var Or=r({type:i("resize"),height:U(P(),be(),Se(0))});var jr=r({type:i("unsubscribeDataSourceQuery"),subscriptionId:t()});var Br=r({type:i("updatePage"),requestId:t(),pageId:D,properties:u(xe),icon:u(Qe),cover:u(Xe),archived:u(h())});var Rr=g("type",[vr,hr,Er,jr,dr,Rt,Dt,qt,Nt,Br,Or,gr]);function Mr(e){if(typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string")return e.type}function Dr(e){let o=Mr(e);return o==="invalidHostMessage"||o==="invalidSandboxMessage"?{incomingType:o}:{incomingType:o,nack:{type:"invalidSandboxMessage",reason:ro(o)}}}function ro(e){return e!==void 0?`Unsupported sandbox message of type "${e}"`:"Unsupported sandbox message (no `type` field or non-object payload)"}var wr=r({initializationId:t()}),no=r({bridgeProtocolVersion:I([P(),Le()])});function Ar(e){let{iframe:o,sandboxOrigin:n,getInitStatus:s,emit:c,sendNack:l,onInvalidConnect:f,onInvalidInitResult:y,onConnect:m,onInitResult:x,onQueryDataSource:_,onUnsubscribeDataSourceQuery:M,onCreatePage:S,onGetPage:H,onOpenPage:L,onGetUser:Q,onListUsers:j,onUpdatePage:V,onResize:ae}=e;function W(w,q){c("warn",{message:"Ignored unsupported sandbox message",payload:w,issues:q});let T=Dr(w);if(T.incomingType==="connect"){let K=_e(wr,w),Z=_e(no,w);if(f({initializationId:K.success?K.output.initializationId:void 0,error:tr(),bridgeProtocolVersion:Z.success?Z.output.bridgeProtocolVersion:void 0})==="handled")return}if(T.incomingType==="initResult"){let K=_e(wr,w);y({initializationId:K.success?K.output.initializationId:void 0,error:ar()})}T.nack!==void 0&&s()!=="stopped"&&l(T.nack)}return function(q){let T=q.source===o.contentWindow,K=q.origin===n;if(!T||!K)return;let Z=_e(Rr,q.data);if(!Z.success){W(q.data,Z.issues);return}let C=Z.output;if(!fr(C)&&s()!=="initialized"){c("warn",{message:`Ignored ${C.type} before initialization completed`,payload:C});return}switch(c("in",C),C.type){case"connect":m(C);return;case"initResult":x(C);return;case"queryDataSource":_(C);return;case"unsubscribeDataSourceQuery":M(C);return;case"createPage":S(C);return;case"openPage":L(C);return;case"getPage":H(C);return;case"getUser":Q(C);return;case"listUsers":j(C);return;case"updatePage":V(C);return;case"resize":ae(C);return;case"invalidHostMessage":return;default:se(C)}}}var qe=class{constructor(o){this.onUnsubscribe=o}onUnsubscribe;bySubscriptionId=new Map;subscribe(o){this.unsubscribe(o.subscriptionId);let n={_tag:"QuerySubscriptionToken"};return this.bySubscriptionId.set(o.subscriptionId,{message:o,token:n,isRefreshing:!0,shouldRefreshAgain:!1}),n}isCurrent(o,n){return this.bySubscriptionId.get(o)?.token===n}unsubscribe(o){this.bySubscriptionId.delete(o)&&this.onUnsubscribe(o)}refresh(o){let n=[],s=!1;for(let c of this.bySubscriptionId.values())if(c.message.dataSourceId===o){if(s=!0,c.isRefreshing){c.shouldRefreshAgain=!0;continue}c.isRefreshing=!0,n.push({message:c.message,token:c.token})}return s?n:void 0}finish(o,n){let s=this.bySubscriptionId.get(o);if(s?.token===n&&(s.isRefreshing=!1,!!s.shouldRefreshAgain))return s.shouldRefreshAgain=!1,s.isRefreshing=!0,{message:s.message,token:s.token}}unsubscribeAll(){for(let o of this.bySubscriptionId.keys())this.unsubscribe(o)}};function qr(e,o){if(e===void 0)return;let n="and"in e?e.and:[e];for(let s of n){let c=oo(s,o);if(c!==void 0)return c}}function oo(e,o){if(!Object.hasOwn(o.propertiesById,e.propertyId))return{code:"invalid_data_source_query_filter",message:`Data source query filter property ID "${e.propertyId}" is not defined in the bound data source schema.`,isRetryable:!1};let n=o.propertiesById[e.propertyId],s=Object.keys(e).find(y=>y!=="propertyId");if(s!==n.type)return{code:"invalid_data_source_query_filter",message:`Data source query filter branch "${s}" does not match property type "${n.type}".`,isRetryable:!1};if("status"in e&&n.type==="status"){let y=e.status;if("group_equals"in y||"group_does_not_equal"in y){let m="group_equals"in y?y.group_equals:y.group_does_not_equal,_=(Array.isArray(m)?m:[m]).find(M=>!n.groups.some(S=>S.name===M));return _===void 0?void 0:{code:"invalid_data_source_query_filter",message:`Unknown status group "${_}".`,isRetryable:!1}}}if("relation"in e&&!ft(rt,e.relation))return{code:"invalid_data_source_query_filter",message:"Relation filters require a page ID.",isRetryable:!1};let c=io(e);if(c===void 0||n.type!==c.propertyType)return;let l=new Set(n.options.map(y=>y.name)),f=so(c.operator).find(y=>!l.has(y));if(f!==void 0)return{code:"invalid_data_source_query_filter",message:`Data source query filter option "${f}" is not defined for property "${e.propertyId}".`,isRetryable:!1}}function io(e){if("select"in e)return{propertyType:"select",operator:e.select};if("multi_select"in e)return{propertyType:"multi_select",operator:e.multi_select};if("status"in e){let o=e.status;return"group_equals"in o||"group_does_not_equal"in o?void 0:{propertyType:"status",operator:o}}}function so(e){let o;if("equals"in e)o=e.equals;else if("does_not_equal"in e)o=e.does_not_equal;else if("contains"in e)o=e.contains;else if("contains_all"in e)o=e.contains_all;else if("does_not_contain"in e)o=e.does_not_contain;else return"is_empty"in e||"is_not_empty"in e?[]:se(e);return Array.isArray(o)?o:[o]}var ao=new Set(ht);function Tr(e,o){if(e===void 0)return;if(e.length>nt)return{code:"invalid_data_source_query_sort",message:`Data source query sorts may contain at most ${nt} entries.`,isRetryable:!1};let n=new Set;for(let s of e){if(n.has(s.propertyId))return{code:"invalid_data_source_query_sort",message:`Data source query sorts cannot contain duplicate property ID "${s.propertyId}".`,isRetryable:!1};if(n.add(s.propertyId),!Object.hasOwn(o.propertiesById,s.propertyId))return{code:"invalid_data_source_query_sort",message:`Data source query sort property ID "${s.propertyId}" is not defined in the bound data source schema.`,isRetryable:!1};let c=o.propertiesById[s.propertyId];if(!ao.has(c.type))return{code:"invalid_data_source_query_sort",message:`Data source query sorts do not yet support property type "${c.type}".`,isRetryable:!1}}}var Fr=5;function co(e){let{iframe:o,prepareInitialState:n,handlers:s,onInitialized:c,onConnectionFailure:l,onLog:f,onQueryUnsubscribed:y,sandboxOrigin:m,minBridgeProtocolVersion:x,noConnectTimeoutMs:_,initialStateTimeoutMs:M,noInitResultTimeoutMs:S}=e,H=Math.max(x??3,3),L={},Q=!1,j=new AbortController,V,ae,W=6,w=new qe(a=>{y?.(a)});function q(a,k){f?.(a,k)}function T(a){let k=v.status;switch(k){case"waitingForConnect":case"preparingInit":case"waitingForInitResult":case"initialized":case"error":break;case"stopped":return;default:return se(k)}let N=lr(a,W);q("out",N),o.contentWindow?.postMessage(N,m)}function K(a){T(te(Ae,a))}function Z(a){T(a)}function C(a){let k=v.status;switch(k){case"initialized":T(te(Zt,a));return;case"waitingForConnect":case"preparingInit":case"waitingForInitResult":case"error":case"stopped":return;default:se(k)}}async function ue(a,k){if(k===void 0)return;let N=await k(a);C({type:`${a.type}Result`,requestId:a.requestId,...N})}function Be(a){let k=a.response.status==="error"?{type:"queryDataSourceResult",subscriptionId:a.subscriptionId,status:"error",error:a.response.error}:{type:"queryDataSourceResult",subscriptionId:a.subscriptionId,status:"success",items:a.response.items,hasMore:a.response.hasMore};C(k)}async function de(a,k=w.subscribe(a)){try{let N=lo(ae,a.dataSourceId),he=po(a,N);if(he!==void 0){w.isCurrent(a.subscriptionId,k)&&(w.unsubscribe(a.subscriptionId),Be({subscriptionId:a.subscriptionId,response:{status:"error",error:he}}));return}let Ne=await s.queryDataSource(a);if(!w.isCurrent(a.subscriptionId,k))return;Ne.status==="error"&&!Ne.error.isRetryable&&w.unsubscribe(a.subscriptionId),Be({subscriptionId:a.subscriptionId,response:Ne})}finally{let N=w.finish(a.subscriptionId,k);N!==void 0&&de(N.message,N.token)}}function ce(a){v.status==="stopped"||v.status==="error"||(Object.assign(L,a),b())}function b(){if(v.status!=="initialized")return;let a=L;L={},a.theme!==void 0&&C({type:"themeChanged",theme:a.theme}),a.contrastMode!==void 0&&C({type:"contrastModeChanged",contrastMode:a.contrastMode}),a.parent!==void 0&&C({type:"parentChanged",parent:a.parent}),a.page!==void 0&&C({type:"pageChanged",page:a.page}),a.dataSources!==void 0&&C({type:"dataSourcesChanged",dataSources:a.dataSources}),a.currentUser!==void 0&&C({type:"currentUserChanged",currentUser:a.currentUser})}let v=ur({async prepareInit(a){W=a.bridgeProtocolVersion;let k=await ee;return v.status!=="preparingInit"?k:G(k)},sendInitMessage:K,warn:a=>q("warn",a),flushPendingHostStateChanges:b,minBridgeProtocolVersion:H,noConnectTimeoutMs:_,initialStateTimeoutMs:M,noInitResultTimeoutMs:S,stopHostWithFailure:st,onInitResult(a){a.status==="success"&&V!==void 0&&c?.({manifest:V,initialHeight:a.initialHeight})},onConnectionFailure:a=>{j.abort(),l?.(a)}});function G(a){if(a.status==="error")return a;let k=te(pr,{...a.initialState,...L});if(V=k.manifest,L={},W<Fr&&k.page.type==="unavailable")return{status:"error",error:Ze()};let N=Ur(k.manifest,k.dataSources);return N!==void 0?{status:"error",error:N}:(ae=k.dataSources,Q=!0,{status:"success",initialState:k})}let ee=Te().catch(a=>(j.signal.aborted||q("warn",{message:"Failed to prepare custom block initialization",error:a}),{status:"error",error:Ce()}));async function Te(){let a=await cr({...e,sandboxOrigin:m,signal:j.signal,onError:N=>{q("warn",{message:"Failed to load custom block manifest",error:N})}});if(a.status==="error")return a;if(j.signal.aborted)return{status:"error",error:Ce()};let k=await n({manifest:a.manifest,signal:j.signal});return k.status==="error"?k:{status:"success",initialState:{...k.initialState,manifest:a.manifest}}}let ot=Ar({iframe:o,sandboxOrigin:m,getInitStatus:()=>v.status,emit:q,sendNack:Z,onInvalidConnect:v.handleInvalidConnect,onInvalidInitResult:v.handleInvalidInitResult,onConnect:v.handleConnect,onInitResult:v.handleInitResult,onQueryDataSource:de,onUnsubscribeDataSourceQuery:a=>w.unsubscribe(a.subscriptionId),onCreatePage:a=>ue(a,s.createPage),onGetPage:a=>ue(a,s.getPage),onOpenPage:a=>ue(a,s.openPage),onGetUser:a=>ue(a,s.getUser),onListUsers:a=>ue(a,s.listUsers),onUpdatePage:a=>ue(a,s.updatePage),onResize:a=>s.resize?.(a)});window.addEventListener("message",ot),o.addEventListener("load",v.onIframeLoad);function it(){j.abort(),window.removeEventListener("message",ot),o.removeEventListener("load",v.onIframeLoad),v.stop(),w.unsubscribeAll()}function st(a){it(),q("warn",a),l?.(a)}return{stop:it,setTheme(a){ce({theme:a})},setContrastMode(a){ce({contrastMode:a})},setParent(a){ce({parent:a})},setPage(a){if(a.type==="unavailable"&&W<Fr&&(v.status==="preparingInit"&&Q||v.status==="waitingForInitResult"||v.status==="initialized")){st({...Ze(),phase:"runtime",source:"host"});return}ce({page:a})},setCurrentUser(a){ce({currentUser:a})},setDataSources(a){let k={bindings:te(le,a.bindings)};if(v.hasConnectedSandbox&&V!==void 0&&Ur(V,k)!==void 0){q("warn",{message:"Ignored invalid data source bindings update",payload:k});return}ae=k,ce({dataSources:k})},refreshQuery({dataSourceId:a}){if(v.status!=="initialized")return;let k=te(Y,a),N=w.refresh(k);if(N===void 0){q("warn",`No active query exists for data source "${a}"`);return}for(let he of N)de(he.message,he.token)}}}function lo(e,o){return Object.values(e?.bindings??{}).find(n=>n.collectionPointer?.id===o)?.collectionSchema}function Ur(e,o){for(let[n,s]of Object.entries(e.dataSources)){let c=o.bindings[n];if(c?.collectionPointer===void 0||c.collectionSchema===void 0)return nr();for(let[l,f]of Object.entries(s.properties??{})){let y=c.propertyIdsByKey?.[l];if(y===void 0)return or();if(c.collectionSchema.propertiesById[y]?.type!==f.type)return ir()}}}function po(e,o){return o===void 0?e.filter===void 0&&(e.sorts?.length??0)===0?void 0:{code:"data_source_schema_unavailable",message:"You cannot query this data source with filters or sorts because its schema is unavailable.",isRetryable:!1}:qr(e.filter,o)??Tr(e.sorts,o)}function fo(e){return te(D,e)}export{zr as LEGACY_PROPERTY_SHAPE_PROTOCOL_VERSION,co as createCustomBlockHost,Hr as getAutoBoundPropertyIdsByKey,tt as isLocalCustomBlockUrl,fo as toNotionPageId};
1
+ var zr=6;function Hr(e){let{manifestProperties:n,propertySchemasById:o}=e,s=[];for(let[c,l]of Object.entries(n)){let f=Lr({propertyKey:c,manifestProperty:l,propertySchemasById:o});f!==void 0&&s.push([c,f])}return Object.fromEntries(s)}function Lr(e){let{propertyKey:n,manifestProperty:o,propertySchemasById:s}=e,c=at(o.name),l=Object.entries(s).filter(([f,y])=>y.type===o.type&&(f===n||at(y.name)===c));return l.length===1?l[0][0]:void 0}function at(e){return e.trim().toLowerCase()}var Re,Vr={lang:void 0,message:void 0,abortEarly:void 0,abortPipeEarly:void 0};function Fe(e){return!e&&!Re?Vr:{lang:e?.lang??Re?.lang,message:e?.message,abortEarly:e?.abortEarly??Re?.abortEarly,abortPipeEarly:e?.abortPipeEarly??Re?.abortPipeEarly}}var Gr;function $r(e){return Gr?.get(e)}var Qr;function Xr(e){return Qr?.get(e)}var Wr;function Jr(e,n){return Wr?.get(e)?.get(n)}function ge(e){let n=typeof e;return n==="string"?`"${e}"`:n==="number"||n==="bigint"||n==="boolean"?`${e}`:n==="object"||n==="function"?(e&&Object.getPrototypeOf(e)?.constructor?.name)??"null":n}function B(e,n,o,s,c){let l=c&&"input"in c?c.input:o.value,f=c?.expected??e.expects??null,y=c?.received??ge(l),m={kind:e.kind,type:e.type,input:l,expected:f,received:y,message:`Invalid ${n}: ${f?`Expected ${f} but r`:"R"}eceived ${y}`,requirement:e.requirement,path:c?.path,issues:c?.issues,lang:s.lang,abortEarly:s.abortEarly,abortPipeEarly:s.abortPipeEarly},x=e.kind==="schema",_=c?.message??e.message??Jr(e.reference,m.lang)??(x?Xr(m.lang):null)??s.message??$r(m.lang);_!==void 0&&(m.message=typeof _=="function"?_(m):_),x&&(o.typed=!1),o.issues?o.issues.push(m):o.issues=[m]}var ut=new WeakMap;function z(e){let n=ut.get(e);return n||(n={version:1,vendor:"valibot",validate(o){return e["~run"]({value:o},Fe())}},ut.set(e,n)),n}function Kr(e,n){return Object.prototype.hasOwnProperty.call(e,n)&&n!=="__proto__"&&n!=="prototype"&&n!=="constructor"}function Ue(e,n){let o=[...new Set(e)];return o.length>1?`(${o.join(` ${n} `)})`:o[0]??"never"}var Yr=class extends Error{constructor(e){super(e[0].message),this.name="ValiError",this.issues=e}};function re(e){return{kind:"transformation",type:"brand",reference:re,async:!1,name:e,"~run"(n){return n}}}function be(e){return{kind:"validation",type:"finite",reference:be,async:!1,expects:null,requirement:Number.isFinite,message:e,"~run"(n,o){return n.typed&&!this.requirement(n.value)&&B(this,"finite",n,o),n}}}function Me(e,n){return{kind:"validation",type:"max_length",reference:Me,async:!1,expects:`<=${e}`,requirement:e,message:n,"~run"(o,s){return o.typed&&o.value.length>this.requirement&&B(this,"length",o,s,{received:`${o.value.length}`}),o}}}function ke(e,n){return{kind:"validation",type:"min_length",reference:ke,async:!1,expects:`>=${e}`,requirement:e,message:n,"~run"(o,s){return o.typed&&o.value.length<this.requirement&&B(this,"length",o,s,{received:`${o.value.length}`}),o}}}function Se(e,n){return{kind:"validation",type:"min_value",reference:Se,async:!1,expects:`>=${e instanceof Date?e.toJSON():ge(e)}`,requirement:e,message:n,"~run"(o,s){return o.typed&&!(o.value>=this.requirement)&&B(this,"value",o,s,{received:o.value instanceof Date?o.value.toJSON():ge(o.value)}),o}}}function ze(e,n){return{kind:"validation",type:"regex",reference:ze,async:!1,expects:`${e}`,requirement:e,message:n,"~run"(o,s){return o.typed&&!this.requirement.test(o.value)&&B(this,"format",o,s),o}}}function He(e){return{kind:"transformation",type:"transform",reference:He,async:!1,operation:e,"~run"(n){return n.value=this.operation(n.value),n}}}var lt={abortEarly:!0};function pt(e,n,o){return typeof e.fallback=="function"?e.fallback(n,o):e.fallback}function De(e,n,o){return typeof e.default=="function"?e.default(n,o):e.default}function ft(e,n){return!e["~run"]({value:n},lt).issues}function E(e,n){return{kind:"schema",type:"array",reference:E,expects:"Array",async:!1,item:e,message:n,get"~standard"(){return z(this)},"~run"(o,s){let c=o.value;if(Array.isArray(c)){o.typed=!0,o.value=[];for(let l=0;l<c.length;l++){let f=c[l],y=this.item["~run"]({value:f},s);if(y.issues){let m={type:"array",origin:"value",input:c,key:l,value:f};for(let x of y.issues)x.path?x.path.unshift(m):x.path=[m],o.issues?.push(x);if(o.issues||(o.issues=y.issues),s.abortEarly){o.typed=!1;break}}y.typed||(o.typed=!1),o.value.push(y.value)}}else B(this,"type",o,s);return o}}}function h(e){return{kind:"schema",type:"boolean",reference:h,expects:"boolean",async:!1,message:e,get"~standard"(){return z(this)},"~run"(n,o){return typeof n.value=="boolean"?n.typed=!0:B(this,"type",n,o),n}}}function i(e,n){return{kind:"schema",type:"literal",reference:i,expects:ge(e),async:!1,literal:e,message:n,get"~standard"(){return z(this)},"~run"(o,s){return o.value===this.literal?o.typed=!0:B(this,"type",o,s),o}}}function Le(e){return{kind:"schema",type:"nan",reference:Le,expects:"NaN",async:!1,message:e,get"~standard"(){return z(this)},"~run"(n,o){return Number.isNaN(n.value)?n.typed=!0:B(this,"type",n,o),n}}}function J(e,n){return{kind:"schema",type:"nullable",reference:J,expects:`(${e.expects} | null)`,async:!1,wrapped:e,default:n,get"~standard"(){return z(this)},"~run"(o,s){return o.value===null&&(this.default!==void 0&&(o.value=De(this,o,s)),o.value===null)?(o.typed=!0,o):this.wrapped["~run"](o,s)}}}function P(e){return{kind:"schema",type:"number",reference:P,expects:"number",async:!1,message:e,get"~standard"(){return z(this)},"~run"(n,o){return typeof n.value=="number"&&!isNaN(n.value)?n.typed=!0:B(this,"type",n,o),n}}}function r(e,n){return{kind:"schema",type:"object",reference:r,expects:"Object",async:!1,entries:e,message:n,get"~standard"(){return z(this)},"~run"(o,s){let c=o.value;if(c&&typeof c=="object"){o.typed=!0,o.value={};for(let l in this.entries){let f=this.entries[l];if(l in c||(f.type==="exact_optional"||f.type==="optional"||f.type==="nullish")&&f.default!==void 0){let y=l in c?c[l]:De(f),m=f["~run"]({value:y},s);if(m.issues){let x={type:"object",origin:"value",input:c,key:l,value:y};for(let _ of m.issues)_.path?_.path.unshift(x):_.path=[x],o.issues?.push(_);if(o.issues||(o.issues=m.issues),s.abortEarly){o.typed=!1;break}}m.typed||(o.typed=!1),o.value[l]=m.value}else if(f.fallback!==void 0)o.value[l]=pt(f);else if(f.type!=="exact_optional"&&f.type!=="optional"&&f.type!=="nullish"&&(B(this,"key",o,s,{input:void 0,expected:`"${l}"`,path:[{type:"object",origin:"key",input:c,key:l,value:c[l]}]}),s.abortEarly))break}}else B(this,"type",o,s);return o}}}function u(e,n){return{kind:"schema",type:"optional",reference:u,expects:`(${e.expects} | undefined)`,async:!1,wrapped:e,default:n,get"~standard"(){return z(this)},"~run"(o,s){return o.value===void 0&&(this.default!==void 0&&(o.value=De(this,o,s)),o.value===void 0)?(o.typed=!0,o):this.wrapped["~run"](o,s)}}}function R(e,n){return{kind:"schema",type:"picklist",reference:R,expects:Ue(e.map(ge),"|"),async:!1,options:e,message:n,get"~standard"(){return z(this)},"~run"(o,s){return this.options.includes(o.value)?o.typed=!0:B(this,"type",o,s),o}}}function F(e,n,o){return{kind:"schema",type:"record",reference:F,expects:"Object",async:!1,key:e,value:n,message:o,get"~standard"(){return z(this)},"~run"(s,c){let l=s.value;if(l&&typeof l=="object"){s.typed=!0,s.value={};for(let f in l)if(Kr(l,f)){let y=l[f],m=this.key["~run"]({value:f},c);if(m.issues){let _={type:"object",origin:"key",input:l,key:f,value:y};for(let M of m.issues)M.path=[_],s.issues?.push(M);if(s.issues||(s.issues=m.issues),c.abortEarly){s.typed=!1;break}}let x=this.value["~run"]({value:y},c);if(x.issues){let _={type:"object",origin:"value",input:l,key:f,value:y};for(let M of x.issues)M.path?M.path.unshift(_):M.path=[_],s.issues?.push(M);if(s.issues||(s.issues=x.issues),c.abortEarly){s.typed=!1;break}}(!m.typed||!x.typed)&&(s.typed=!1),m.typed&&(s.value[m.value]=x.value)}}else B(this,"type",s,c);return s}}}function p(e,n){return{kind:"schema",type:"strict_object",reference:p,expects:"Object",async:!1,entries:e,message:n,get"~standard"(){return z(this)},"~run"(o,s){let c=o.value;if(c&&typeof c=="object"){o.typed=!0,o.value={};for(let l in this.entries){let f=this.entries[l];if(l in c||(f.type==="exact_optional"||f.type==="optional"||f.type==="nullish")&&f.default!==void 0){let y=l in c?c[l]:De(f),m=f["~run"]({value:y},s);if(m.issues){let x={type:"object",origin:"value",input:c,key:l,value:y};for(let _ of m.issues)_.path?_.path.unshift(x):_.path=[x],o.issues?.push(_);if(o.issues||(o.issues=m.issues),s.abortEarly){o.typed=!1;break}}m.typed||(o.typed=!1),o.value[l]=m.value}else if(f.fallback!==void 0)o.value[l]=pt(f);else if(f.type!=="exact_optional"&&f.type!=="optional"&&f.type!=="nullish"&&(B(this,"key",o,s,{input:void 0,expected:`"${l}"`,path:[{type:"object",origin:"key",input:c,key:l,value:c[l]}]}),s.abortEarly))break}if(!o.issues||!s.abortEarly){for(let l in c)if(!(l in this.entries)){B(this,"key",o,s,{input:l,expected:"never",path:[{type:"object",origin:"key",input:c,key:l,value:c[l]}]});break}}}else B(this,"type",o,s);return o}}}function t(e){return{kind:"schema",type:"string",reference:t,expects:"string",async:!1,message:e,get"~standard"(){return z(this)},"~run"(n,o){return typeof n.value=="string"?n.typed=!0:B(this,"type",n,o),n}}}function ct(e){let n;if(e)for(let o of e)if(n)for(let s of o.issues)n.push(s);else n=o.issues;return n}function I(e,n){return{kind:"schema",type:"union",reference:I,expects:Ue(e.map(o=>o.expects),"|"),async:!1,options:e,message:n,get"~standard"(){return z(this)},"~run"(o,s){let c,l,f;for(let y of this.options){let m=y["~run"]({value:o.value},s);if(m.typed)if(m.issues)l?l.push(m):l=[m];else{c=m;break}else f?f.push(m):f=[m]}if(c)return c;if(l){if(l.length===1)return l[0];B(this,"type",o,s,{issues:ct(l)}),o.typed=!0}else{if(f?.length===1)return f[0];B(this,"type",o,s,{issues:ct(f)})}return o}}}function Ie(){return{kind:"schema",type:"unknown",reference:Ie,expects:"unknown",async:!1,get"~standard"(){return z(this)},"~run"(e){return e.typed=!0,e}}}function g(e,n,o){return{kind:"schema",type:"variant",reference:g,expects:"Object",async:!1,key:e,options:n,message:o,get"~standard"(){return z(this)},"~run"(s,c){let l=s.value;if(l&&typeof l=="object"){let f,y=0,m=this.key,x=[],_=(M,S)=>{for(let H of M.options){if(H.type==="variant")_(H,new Set(S).add(H.key));else{let L=!0,Q=0;for(let j of S){let V=H.entries[j];if(j in l?V["~run"]({typed:!1,value:l[j]},lt).issues:V.type!=="exact_optional"&&V.type!=="optional"&&V.type!=="nullish"){L=!1,m!==j&&(y<Q||y===Q&&j in l&&!(m in l))&&(y=Q,m=j,x=[]),m===j&&x.push(H.entries[j].expects);break}Q++}if(L){let j=H["~run"]({value:l},c);(!f||!f.typed&&j.typed)&&(f=j)}}if(f&&!f.issues)break}};if(_(this,new Set([this.key])),f)return f;B(this,"type",s,c,{input:l[m],expected:Ue(x,"|"),path:[{type:"object",origin:"value",input:l,key:m,value:l[m]}]})}else B(this,"type",s,c);return s}}}function te(e,n,o){let s=e["~run"]({value:n},Fe(o));if(s.issues)throw new Yr(s.issues);return s.value}function U(...e){return{...e[0],pipe:e,get"~standard"(){return z(this)},"~run"(n,o){for(let s of e)if(s.kind!=="metadata"){if(n.issues&&(s.kind==="schema"||s.kind==="transformation")){n.typed=!1;break}(!n.issues||!o.abortEarly&&!o.abortPipeEarly)&&(n=s["~run"](n,o))}return n}}}function _e(e,n,o){let s=e["~run"]({value:n},Fe(o));return{typed:s.typed,success:!s.issues,output:s.value,issues:s.issues}}var ne=U(t(),re("NotionBlockId")),Y=U(t(),re("NotionDataSourceId")),D=U(t(),re("NotionPageId")),mt=U(t(),re("NotionAgentId")),yt=U(t(),re("NotionSpaceId"));var vt=R(["default","gray","brown","orange","yellow","green","blue","purple","pink","red","gray_background","brown_background","orange_background","yellow_background","green_background","blue_background","purple_background","pink_background","red_background","default_background"]),Ve=r({id:t(),name:t(),color:u(vt),description:u(t())}),Zr=r({id:t(),name:t(),color:u(vt),option_ids:E(t())}),en=r({synced_property_id:t(),synced_property_name:t()}),O=r({name:t(),description:u(t())}),tn=["title","rich_text","number","checkbox","url","email","phone_number","select","multi_select","status","date","people","files","unique_id","relation","place","formula","rollup","button","verification","last_visited_time","location","created_time","last_edited_time","created_by","last_edited_by"],dt=R(tn),ht=["title","rich_text","number","checkbox","url","email","phone_number","date","created_time","last_edited_time","people","created_by"],Ge=g("type",[r({...O.entries,type:i("title")}),r({...O.entries,type:i("rich_text")}),r({...O.entries,type:i("number")}),r({...O.entries,type:i("checkbox")}),r({...O.entries,type:i("url")}),r({...O.entries,type:i("email")}),r({...O.entries,type:i("phone_number")}),r({...O.entries,type:i("select"),options:E(Ve)}),r({...O.entries,type:i("multi_select"),options:E(Ve)}),r({...O.entries,type:i("status"),options:E(Ve),groups:E(Zr)}),r({...O.entries,type:i("date")}),r({...O.entries,type:i("people")}),r({...O.entries,type:i("files")}),r({...O.entries,type:i("unique_id")}),r({...O.entries,type:i("relation"),data_source_id:u(t()),dual_property:u(en)}),r({...O.entries,type:i("place")}),r({...O.entries,type:i("formula")}),r({...O.entries,type:i("rollup")}),r({...O.entries,type:i("button")}),r({...O.entries,type:i("verification")}),r({...O.entries,type:i("last_visited_time")}),r({...O.entries,type:i("location")}),r({...O.entries,type:i("created_time")}),r({...O.entries,type:i("last_edited_time")}),r({...O.entries,type:i("created_by")}),r({...O.entries,type:i("last_edited_by")})]);var gt={created_time:{type:"created_time",name:"Created time"},last_edited_time:{type:"last_edited_time",name:"Last edited time"},created_by:{type:"created_by",name:"Created by"},last_edited_by:{type:"last_edited_by",name:"Last edited by"}};var bt=r({id:Y,table:t(),spaceId:u(yt)}),kt=r({id:u(Y),propertiesById:F(t(),Ge)}),So=r({key:t(),collectionPointer:u(bt),collectionSchema:u(kt),propertyIdsByKey:F(t(),u(t())),propertySchemasById:F(t(),Ge)}),rn=r({collectionPointer:u(bt),collectionSchema:u(kt),propertyIdsByKey:u(F(t(),u(t())))}),le=F(t(),rn);var fe=R(["standard","high"]),St="standard";var It=r({type:i("contrastModeChanged"),contrastMode:fe});var we=r({id:t(),table:t()});var oe=g("type",[r({type:i("page_id"),page_id:D}),r({type:i("data_source_id"),data_source_id:Y}),r({type:i("workspace"),workspace:i(!0)}),r({type:i("block_id"),block_id:ne}),r({type:i("agent_id"),agent_id:mt}),r({type:i("unavailable")})]);var me=g("type",[r({type:i("unavailable")}),r({type:i("page"),id:D,parent:oe})]),nn=r({type:i("emoji"),emoji:t()}),on=r({type:i("custom_emoji"),custom_emoji:r({id:t(),name:u(t()),url:u(t())})}),Ct=r({type:i("external"),external:r({url:t()})}),Pt=r({type:i("file"),file:r({url:t(),expiry_time:u(t())})}),Qe=g("type",[nn,on,Ct,Pt]),Xe=g("type",[Ct,Pt]),$=J(t()),_t=F(t(),Ie()),$e=I([r({id:t(),name:u(t()),color:u(t()),description:u($)}),r({name:t(),id:u(t()),color:u(t()),description:u($)})]),sn=r({start:t(),end:u($),time_zone:u($)}),an=I([r({object:u(i("user")),id:t()}),r({object:i("group"),id:t(),name:u($)})]),un=r({id:t()}),cn=I([r({type:i("external"),name:t(),external:r({url:t()})}),r({type:i("file"),name:t(),file:r({url:t(),expiry_time:u(t())})})]),ln=r({lat:P(),lon:P(),name:u($),address:u($),aws_place_id:u($),google_place_id:u($)}),A={id:t()},xt=J(r({...we.entries,table:R(["notion_user","bot","organization_bot"]),spaceId:u(t())})),We=g("type",[r({...A,type:i("title"),title:E(_t)}),r({...A,type:i("rich_text"),rich_text:E(_t)}),r({...A,type:i("number"),number:J(P())}),r({...A,type:i("url"),url:$}),r({...A,type:i("email"),email:$}),r({...A,type:i("phone_number"),phone_number:$}),r({...A,type:i("checkbox"),checkbox:h()}),r({...A,type:i("select"),select:J($e)}),r({...A,type:i("status"),status:J($e)}),r({...A,type:i("multi_select"),multi_select:E($e)}),r({...A,type:i("date"),date:J(sn)}),r({...A,type:i("people"),people:E(an)}),r({...A,type:i("relation"),has_more:u(h()),relation:E(un)}),r({...A,type:i("files"),files:E(cn)}),r({...A,type:i("place"),place:J(ln)}),r({...A,type:i("created_time"),created_time:$}),r({...A,type:i("last_edited_time"),last_edited_time:$}),r({...A,type:i("created_by"),created_by:xt}),r({...A,type:i("last_edited_by"),last_edited_by:xt}),r({...A,type:i("last_visited_time"),last_visited_time:$})]),xe=F(t(),We),ye=r({object:i("page"),id:D,parent:oe,properties:xe,created_time:u(t()),last_edited_time:u(t()),icon:u(Qe),cover:u(Xe),url:u(t()),public_url:u(t()),is_archived:h(),in_trash:h()});var pn=t(),fn=r({code:pn,message:t(),isRetryable:h()}),Et=g("status",[r({type:i("createPageResult"),requestId:t(),status:i("success"),page:ye}),r({type:i("createPageResult"),requestId:t(),status:i("error"),error:fn})]);var Je=U(t(),re("NotionUserId")),ie=r({object:i("user"),id:Je,name:u(t()),avatar_url:J(t()),type:i("person"),person:r({email:t()})}),Ot=r({object:i("list"),results:E(ie),next_cursor:J(t()),has_more:h(),type:i("user"),user:F(t(),Ie())});var jt=r({type:i("currentUserChanged"),currentUser:ie});var Bt=r({type:i("dataSourcesChanged"),dataSources:r({bindings:le})});var mn=t(),yn=r({code:mn,message:t(),isRetryable:h()}),Rt=r({type:i("getPage"),requestId:t(),pageId:D}),Mt=g("status",[r({type:i("getPageResult"),requestId:t(),status:i("success"),page:ye}),r({type:i("getPageResult"),requestId:t(),status:i("error"),error:yn})]);var vn=t(),dn=r({code:vn,message:t(),isRetryable:h()}),Dt=r({type:i("getUser"),requestId:t(),userId:Je}),wt=g("status",[r({type:i("getUserResult"),requestId:t(),status:i("success"),user:ie}),r({type:i("getUserResult"),requestId:t(),status:i("error"),error:dn})]);var hn=g("type",[r({type:i("emoji"),emoji:t()}),r({type:i("external"),url:t()})]),gn=r({name:t(),description:u(t()),type:dt}),bn=r({name:t(),description:u(t()),icon:u(hn),properties:u(F(t(),gn),{})}),pe=r({version:i(1),name:u(t()),description:u(t()),slashCommand:u(t()),icon:u(r({type:i("emoji"),emoji:t()})),dataSources:u(F(t(),bn),{})});var ve=R(["light","dark"]);var kn=t(),Sn=r({code:kn,message:t(),isRetryable:h()});var Ae=g("status",[r({type:i("init"),initializationId:t(),status:i("success"),theme:ve,contrastMode:fe,blockId:ne,parent:oe,page:me,manifest:pe,dataSources:r({bindings:le}),currentUser:ie}),r({type:i("init"),initializationId:t(),status:i("error"),error:Sn})]);var At=r({type:i("invalidSandboxMessage"),reason:t()});var In=t(),_n=r({code:In,message:t(),isRetryable:h()}),qt=r({type:i("listUsers"),requestId:t(),startCursor:u(t()),pageSize:u(P())}),Tt=g("status",[r({type:i("listUsersResult"),requestId:t(),status:i("success"),list:Ot}),r({type:i("listUsersResult"),requestId:t(),status:i("error"),error:_n})]);var xn=R(["side_peek","center_peek"]),Cn=t(),Pn=r({code:Cn,message:t(),isRetryable:h()}),Nt=r({type:i("openPage"),requestId:t(),pageId:D,mode:xn}),Ft=g("status",[r({type:i("openPageResult"),requestId:t(),status:i("success"),pageId:D}),r({type:i("openPageResult"),requestId:t(),status:i("error"),error:Pn})]);var Ut=r({type:i("pageChanged"),page:me});var zt=r({type:i("parentChanged"),parent:oe});var Ht=r({unit:R(["year","month","week","day"]),value:P(),time:t(),defaultTimeZone:u(t())}),En=r({unit:R(["hour","minute"]),value:P()}),Lt=r({unit:i("none")}),On=I([Ht,En]),Vt=u(I([Ht,Lt])),Gt=u(I([On,Lt])),jn=r({type:i("date"),start_date:t(),reminder:Vt}),Bn=r({type:i("daterange"),start_date:t(),end_date:t(),reminder:Vt}),Rn=r({type:i("datetime"),start_date:t(),start_time:t(),time_zone:u(t()),reminder:Gt}),Mn=r({type:i("datetimerange"),start_date:t(),start_time:t(),end_date:t(),end_time:t(),time_zone:u(t()),reminder:Gt}),$t=g("type",[jn,Bn,Rn,Mn]);var Qt=I([t(),P(),h(),$t,E(t()),E(we)]);var Xt=r({id:D,is_archived:h(),in_trash:h(),propertiesById:F(t(),u(Qt))}),Wt=r({id:D,is_archived:h(),in_trash:h(),properties:F(t(),u(We))});var Dn=t(),wn=r({code:Dn,message:t(),isRetryable:h()}),Jt=g("status",[r({type:i("queryDataSourceResult"),subscriptionId:t(),status:i("success"),items:E(I([Wt,Xt])),hasMore:h()}),r({type:i("queryDataSourceResult"),subscriptionId:t(),status:i("error"),error:wn})]);var Kt=r({type:i("themeChanged"),theme:ve});var An=t(),qn=r({code:An,message:t(),isRetryable:h()}),Yt=g("status",[r({type:i("updatePageResult"),requestId:t(),status:i("success"),page:ye}),r({type:i("updatePageResult"),requestId:t(),status:i("error"),error:qn})]);var Zt=g("type",[Ae,Kt,It,zt,Ut,jt,Bt,Jt,Et,Mt,wt,Tt,Ft,Yt,At]);function er(){return{code:"no_connect",message:"Sandbox did not send a connect message.",isRetryable:!0}}function tr(){return{code:"invalid_connect_payload",message:"Sandbox sent an invalid connect message.",isRetryable:!1}}function Ke(e){let{currentBridgeProtocolVersion:n}=e;return{code:"invalid_protocol_version",message:`Sandbox reported an invalid bridge protocol version: ${n}`,isRetryable:!1}}function Ye(e){let{currentBridgeProtocolVersion:n,minBridgeProtocolVersion:o}=e;return{code:"unsupported_protocol_version",message:`Sandbox bridge protocol version ${n} is not supported. Minimum supported version is ${o}.`,isRetryable:!1}}function Ze(){return{code:"context_unavailable",message:"Host page context is unavailable.",isRetryable:!0}}function rr(){return{code:"initial_state_timeout",message:"Host did not prepare initial state before the timeout.",isRetryable:!0}}function nr(){return{code:"missing_data_source_binding",message:"A required data source is not mapped.",isRetryable:!1}}function or(){return{code:"missing_property_binding",message:"A required data source property is not mapped.",isRetryable:!1}}function ir(){return{code:"invalid_property_binding",message:"A mapped data source property is missing or incompatible.",isRetryable:!1}}function sr(){return{code:"no_init_result",message:"Sandbox did not acknowledge initialization.",isRetryable:!0}}function ar(){return{code:"invalid_init_result_payload",message:"Sandbox sent an invalid initialization result.",isRetryable:!1}}function Ce(){return{code:"unknown_error",message:"Unexpected error while initializing custom block.",isRetryable:!1}}function se(e){throw new Error(`[custom-blocks-host] Unexpected value encountered: ${JSON.stringify(e)}`)}function et(e){return Number.isFinite(e)&&Number.isInteger(e)&&e>=1}var Tn=5e3,Nn=5e3,Fn=5e3;function ur(e){let{prepareInit:n,sendInitMessage:o,warn:s,flushPendingHostStateChanges:c,minBridgeProtocolVersion:l,noConnectTimeoutMs:f=Tn,initialStateTimeoutMs:y=Nn,noInitResultTimeoutMs:m=Fn,stopHostWithFailure:x,onInitResult:_,onConnectionFailure:M}=e,S="waitingForConnect",H,L,Q,j,V=!1,ae=!1;function W(){H!==void 0&&(window.clearTimeout(H),H=void 0)}function w(){L!==void 0&&(window.clearTimeout(L),L=void 0)}function q(){Q!==void 0&&(window.clearTimeout(Q),Q=void 0)}function T(b){let{initializationId:v,error:G,phase:ee,source:Te}=b;switch(S){case"waitingForConnect":case"preparingInit":break;case"waitingForInitResult":case"initialized":case"error":case"stopped":return;default:return se(S)}S="error",j=v,W(),w(),o({type:"init",initializationId:v,status:"error",error:G}),M?.({...G,phase:ee,source:Te})}async function K(b){if(S==="waitingForConnect"){S="preparingInit",j=b.initializationId,W(),L=window.setTimeout(()=>{if(S!=="preparingInit")return;let v=rr();s({...v,initializationId:b.initializationId}),T({initializationId:b.initializationId,error:v,phase:"init",source:"host"})},y);try{let v=await n(b);if(S!=="preparingInit")return;if(w(),v.status==="error"){T({initializationId:b.initializationId,error:v.error,phase:"init",source:"host"});return}S="waitingForInitResult";let G={type:"init",initializationId:b.initializationId,status:"success",theme:v.initialState.theme,contrastMode:v.initialState.contrastMode??St,blockId:v.initialState.blockId,parent:v.initialState.parent,page:v.initialState.page,currentUser:v.initialState.currentUser,manifest:v.initialState.manifest,dataSources:v.initialState.dataSources};o(G),Q=window.setTimeout(()=>{if(S!=="waitingForInitResult")return;S="error";let ee=sr();M?.({...ee,phase:"initResult",source:"host"}),s({...ee,initializationId:b.initializationId})},m)}catch(v){if(S!=="preparingInit")return;s({message:"Failed to prepare custom block initialization",error:v}),T({initializationId:b.initializationId,error:Ce(),phase:"init",source:"host"})}}}function Z(b){if(S!=="stopped"&&S==="waitingForConnect"){if(!et(b.bridgeProtocolVersion)){let v=Ke({currentBridgeProtocolVersion:b.bridgeProtocolVersion});T({initializationId:b.initializationId,error:v,phase:"connect",source:"host"});return}if(b.bridgeProtocolVersion<l){let v=Ye({currentBridgeProtocolVersion:b.bridgeProtocolVersion,minBridgeProtocolVersion:l});T({initializationId:b.initializationId,error:v,phase:"connect",source:"host"});return}if(b.status==="error"){T({initializationId:b.initializationId,error:b.error,phase:"connect",source:"sandbox"});return}ae=!0,K(b)}}function C(b){if(S==="stopped"||S!=="waitingForConnect")return"handled";let{initializationId:v,bridgeProtocolVersion:G}=b;if(v===void 0)return"nack";let ee=b.error;return G!==void 0&&(et(G)?G<l&&(ee=Ye({currentBridgeProtocolVersion:G,minBridgeProtocolVersion:l})):ee=Ke({currentBridgeProtocolVersion:G})),T({initializationId:v,error:ee,phase:"connect",source:"host"}),"handled"}function ue(b){let{initializationId:v,error:G}=b;S!=="waitingForInitResult"||v===void 0||v!==j||(W(),q(),S="error",s(G),M?.({...G,phase:"initResult",source:"host"}))}function Be(){if(S!=="stopped"){if(V){x({phase:"runtime",source:"host",code:"iframe_reloaded",message:"The iframe reloaded. Create a new host and iframe to reconnect.",isRetryable:!0});return}V=!0,W(),S==="waitingForConnect"&&(H=window.setTimeout(()=>{if(S!=="waitingForConnect")return;S="error";let b=er();s(b),M?.({...b,phase:"connect",source:"host"})},f))}}function de(b){if(S!=="waitingForInitResult"||b.initializationId!==j){s({message:"Ignored stale or unexpected initResult",payload:b});return}q(),S=b.status==="success"?"initialized":"error",b.status==="success"?c():M?.({...b.error,phase:"initResult",source:"sandbox"}),_?.(b)}function ce(){S="stopped",W(),w(),q()}return{get status(){return S},get hasConnectedSandbox(){return ae},handleConnect:Z,handleInitResult:de,handleInvalidConnect:C,handleInvalidInitResult:ue,onIframeLoad:Be,stop:ce}}function tt({url:e,hostOrigin:n}){return typeof n=="string"&&n!==""&&e.origin!==n&&(e.protocol==="http:"||e.protocol==="https:")&&(e.hostname==="localhost"||e.hostname==="127.0.0.1"||e.hostname.endsWith(".localhost"))&&e.username===""&&e.password===""}async function cr(e){let n=new AbortController,o=()=>n.abort();e.signal.addEventListener("abort",o,{once:!0});let s=new Promise((l,f)=>{n.signal.addEventListener("abort",()=>f(n.signal.reason),{once:!0})});e.signal.aborted&&n.abort();let c=e.manifestSource==="local"?window.setTimeout(()=>{n.abort(new Error("Manifest loading timed out after 5000 ms."))},5e3):void 0;try{let l=await Promise.race([e.manifestSource==="local"?Un(e.sandboxOrigin,n.signal):e.getPersistedManifest({signal:n.signal}),s]);if(n.signal.aborted)throw new Error("Manifest loading was cancelled.");return{status:"success",manifest:te(pe,l)}}catch(l){return e.signal.aborted||e.onError(l),{status:"error",error:{code:"manifest_unavailable",message:"The custom block manifest is unavailable.",isRetryable:!0}}}finally{window.clearTimeout(c),e.signal.removeEventListener("abort",o)}}async function Un(e,n){let o=new URL(e);if(!tt({url:o,hostOrigin:window.location.origin}))throw new Error("Preview requires a separate loopback origin.");let s=await fetch(new URL("/manifest",o),{credentials:"omit",redirect:"error",cache:"no-store",signal:n});if(!s.ok)throw new Error(`Manifest request failed: HTTP ${s.status}.`);return s.json()}function lr(e,n){return n>=5||!(e.type==="init"&&e.status==="success"||e.type==="dataSourcesChanged")?e:{...e,dataSources:{bindings:Object.fromEntries(Object.entries(e.dataSources.bindings).map(([s,c])=>[s,{...c,collectionSchema:{...c.collectionSchema,propertiesById:{...c.collectionSchema?.propertiesById,...gt}}}]))}}}var pr=r({theme:ve,contrastMode:u(fe),blockId:ne,parent:oe,page:me,manifest:pe,dataSources:r({bindings:le}),currentUser:ie});function fr(e){switch(e.type){case"connect":case"init":case"initResult":return!0;default:return!1}}var mr=r({code:t(),message:t(),isRetryable:h()});var yr={type:i("connect"),initializationId:t(),bridgeProtocolVersion:P(),sdkVersion:t()},vr=g("status",[r({status:i("success"),manifest:u(pe),...yr}),r({status:i("error"),error:mr,...yr})]);var zn=g("type",[r({type:i("start")}),r({type:i("end")}),r({type:i("before"),blockId:ne}),r({type:i("after"),blockId:ne})]),Hn=g("type",[r({type:i("page_id"),page_id:D}),r({type:i("data_source_id"),data_source_id:Y})]),dr=r({type:i("createPage"),requestId:t(),parent:Hn,properties:xe,position:u(zn)});var Ln=t(),Vn=r({code:Ln,message:t(),isRetryable:h()}),hr=g("status",[r({type:i("initResult"),initializationId:t(),status:i("success"),initialHeight:u(U(P(),be(),Se(0)))}),r({type:i("initResult"),initializationId:t(),status:i("error"),error:Vn})]);var gr=r({type:i("invalidHostMessage"),reason:t()});var br=R(["ascending","descending"]);var kr=U(D,ze(/^(?:[0-9a-f]{32}|[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12})$/i),He(e=>e.replaceAll("-","").toLowerCase().replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/,"$1-$2-$3-$4-$5"))),rt=I([p({contains:kr}),p({does_not_contain:kr})]),je=I([p({is_empty:i(!0)}),p({is_not_empty:i(!0)})]),Oe=I([t(),E(t())]),Sr=p({object:R(["user","group"]),id:U(t(),ke(1))}),Gn=I([p({contains:Sr}),p({does_not_contain:Sr}),je]),Ir=p({object:i("user"),id:U(t(),ke(1),Me(2e3))}),$n=I([p({contains:Ir}),p({does_not_contain:Ir}),p({is_empty:i(!0)}),p({is_not_empty:i(!0)})]),Pe=I([p({equals:t()}),p({does_not_equal:t()}),p({contains:t()}),p({does_not_contain:t()}),p({starts_with:t()}),p({ends_with:t()}),je]),Qn=I([p({equals:P()}),p({does_not_equal:P()}),p({greater_than:P()}),p({less_than:P()}),p({greater_than_or_equal_to:P()}),p({less_than_or_equal_to:P()}),je]),Xn=I([p({equals:h()}),p({does_not_equal:h()})]),Pr=I([p({equals:Oe}),p({does_not_equal:Oe}),je]),_r=R(["To-do","In progress","Complete","Current","Future"]),xr=I([_r,U(E(_r),ke(1),Me(5))]),Wn=I([p({group_equals:xr}),p({group_does_not_equal:xr})]),Jn=I([Pr,Wn]),Kn=I([p({contains:Oe}),p({contains_all:Oe}),p({does_not_contain:Oe}),je]),X=R(["start_date","end_date"]),Yn=R(["today","tomorrow","yesterday","one_week_ago","one_week_from_now","one_month_ago","one_month_from_now"]),Ee=I([Yn,t()]),Zn=I([p({target:u(X),equals:Ee}),p({target:u(X),before:Ee}),p({target:u(X),after:Ee}),p({target:u(X),on_or_before:Ee}),p({target:u(X),on_or_after:Ee}),p({target:u(X),this_week:p({})}),p({target:u(X),past_week:p({})}),p({target:u(X),past_month:p({})}),p({target:u(X),past_year:p({})}),p({target:u(X),next_week:p({})}),p({target:u(X),next_month:p({})}),p({target:u(X),next_year:p({})}),p({target:u(X),is_empty:i(!0)}),p({target:u(X),is_not_empty:i(!0)})]),Cr=I([p({propertyId:t(),relation:rt}),p({propertyId:t(),created_by:$n}),p({propertyId:t(),title:Pe}),p({propertyId:t(),rich_text:Pe}),p({propertyId:t(),url:Pe}),p({propertyId:t(),email:Pe}),p({propertyId:t(),phone_number:Pe}),p({propertyId:t(),number:Qn}),p({propertyId:t(),checkbox:Xn}),p({propertyId:t(),select:Pr}),p({propertyId:t(),multi_select:Kn}),p({propertyId:t(),status:Jn}),p({propertyId:t(),date:Zn}),p({propertyId:t(),people:Gn})]),eo=I([Cr,p({and:E(Cr)})]),nt=10,to=p({propertyId:t(),direction:br}),Er=r({type:i("queryDataSource"),subscriptionId:t(),dataSourceId:Y,limit:P(),filter:u(eo),sorts:u(E(to))});var Or=r({type:i("resize"),height:U(P(),be(),Se(0))});var jr=r({type:i("unsubscribeDataSourceQuery"),subscriptionId:t()});var Br=r({type:i("updatePage"),requestId:t(),pageId:D,properties:u(xe),icon:u(Qe),cover:u(Xe),archived:u(h())});var Rr=g("type",[vr,hr,Er,jr,dr,Rt,Dt,qt,Nt,Br,Or,gr]);function Mr(e){if(typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string")return e.type}function Dr(e){let n=Mr(e);return n==="invalidHostMessage"||n==="invalidSandboxMessage"?{incomingType:n}:{incomingType:n,nack:{type:"invalidSandboxMessage",reason:ro(n)}}}function ro(e){return e!==void 0?`Unsupported sandbox message of type "${e}"`:"Unsupported sandbox message (no `type` field or non-object payload)"}var wr=r({initializationId:t()}),no=r({bridgeProtocolVersion:I([P(),Le()])});function Ar(e){let{iframe:n,sandboxOrigin:o,getInitStatus:s,emit:c,sendNack:l,onInvalidConnect:f,onInvalidInitResult:y,onConnect:m,onInitResult:x,onQueryDataSource:_,onUnsubscribeDataSourceQuery:M,onCreatePage:S,onGetPage:H,onOpenPage:L,onGetUser:Q,onListUsers:j,onUpdatePage:V,onResize:ae}=e;function W(w,q){c("warn",{message:"Ignored unsupported sandbox message",payload:w,issues:q});let T=Dr(w);if(T.incomingType==="connect"){let K=_e(wr,w),Z=_e(no,w);if(f({initializationId:K.success?K.output.initializationId:void 0,error:tr(),bridgeProtocolVersion:Z.success?Z.output.bridgeProtocolVersion:void 0})==="handled")return}if(T.incomingType==="initResult"){let K=_e(wr,w);y({initializationId:K.success?K.output.initializationId:void 0,error:ar()})}T.nack!==void 0&&s()!=="stopped"&&l(T.nack)}return function(q){let T=q.source===n.contentWindow,K=q.origin===o;if(!T||!K)return;let Z=_e(Rr,q.data);if(!Z.success){W(q.data,Z.issues);return}let C=Z.output;if(!fr(C)&&s()!=="initialized"){c("warn",{message:`Ignored ${C.type} before initialization completed`,payload:C});return}switch(c("in",C),C.type){case"connect":m(C);return;case"initResult":x(C);return;case"queryDataSource":_(C);return;case"unsubscribeDataSourceQuery":M(C);return;case"createPage":S(C);return;case"openPage":L(C);return;case"getPage":H(C);return;case"getUser":Q(C);return;case"listUsers":j(C);return;case"updatePage":V(C);return;case"resize":ae(C);return;case"invalidHostMessage":return;default:se(C)}}}var qe=class{constructor(n){this.onUnsubscribe=n}onUnsubscribe;bySubscriptionId=new Map;subscribe(n){this.unsubscribe(n.subscriptionId);let o={_tag:"QuerySubscriptionToken"};return this.bySubscriptionId.set(n.subscriptionId,{message:n,token:o,isRefreshing:!0,shouldRefreshAgain:!1}),o}isCurrent(n,o){return this.bySubscriptionId.get(n)?.token===o}unsubscribe(n){this.bySubscriptionId.delete(n)&&this.onUnsubscribe(n)}refresh(n){let o=[],s=!1;for(let c of this.bySubscriptionId.values())if(c.message.dataSourceId===n){if(s=!0,c.isRefreshing){c.shouldRefreshAgain=!0;continue}c.isRefreshing=!0,o.push({message:c.message,token:c.token})}return s?o:void 0}finish(n,o){let s=this.bySubscriptionId.get(n);if(s?.token===o&&(s.isRefreshing=!1,!!s.shouldRefreshAgain))return s.shouldRefreshAgain=!1,s.isRefreshing=!0,{message:s.message,token:s.token}}unsubscribeAll(){for(let n of this.bySubscriptionId.keys())this.unsubscribe(n)}};function qr(e,n){if(e===void 0)return;let o="and"in e?e.and:[e];for(let s of o){let c=oo(s,n);if(c!==void 0)return c}}function oo(e,n){if(!Object.hasOwn(n.propertiesById,e.propertyId))return{code:"invalid_data_source_query_filter",message:`Data source query filter property ID "${e.propertyId}" is not defined in the bound data source schema.`,isRetryable:!1};let o=n.propertiesById[e.propertyId],s=Object.keys(e).find(y=>y!=="propertyId");if(s!==o.type)return{code:"invalid_data_source_query_filter",message:`Data source query filter branch "${s}" does not match property type "${o.type}".`,isRetryable:!1};if("status"in e&&o.type==="status"){let y=e.status;if("group_equals"in y||"group_does_not_equal"in y){let m="group_equals"in y?y.group_equals:y.group_does_not_equal,_=(Array.isArray(m)?m:[m]).find(M=>!o.groups.some(S=>S.name===M));return _===void 0?void 0:{code:"invalid_data_source_query_filter",message:`Unknown status group "${_}".`,isRetryable:!1}}}if("relation"in e&&!ft(rt,e.relation))return{code:"invalid_data_source_query_filter",message:"Relation filters require a page ID.",isRetryable:!1};let c=io(e);if(c===void 0||o.type!==c.propertyType)return;let l=new Set(o.options.map(y=>y.name)),f=so(c.operator).find(y=>!l.has(y));if(f!==void 0)return{code:"invalid_data_source_query_filter",message:`Data source query filter option "${f}" is not defined for property "${e.propertyId}".`,isRetryable:!1}}function io(e){if("select"in e)return{propertyType:"select",operator:e.select};if("multi_select"in e)return{propertyType:"multi_select",operator:e.multi_select};if("status"in e){let n=e.status;return"group_equals"in n||"group_does_not_equal"in n?void 0:{propertyType:"status",operator:n}}}function so(e){let n;if("equals"in e)n=e.equals;else if("does_not_equal"in e)n=e.does_not_equal;else if("contains"in e)n=e.contains;else if("contains_all"in e)n=e.contains_all;else if("does_not_contain"in e)n=e.does_not_contain;else return"is_empty"in e||"is_not_empty"in e?[]:se(e);return Array.isArray(n)?n:[n]}var ao=new Set(ht);function Tr(e,n){if(e===void 0)return;if(e.length>nt)return{code:"invalid_data_source_query_sort",message:`Data source query sorts may contain at most ${nt} entries.`,isRetryable:!1};let o=new Set;for(let s of e){if(o.has(s.propertyId))return{code:"invalid_data_source_query_sort",message:`Data source query sorts cannot contain duplicate property ID "${s.propertyId}".`,isRetryable:!1};if(o.add(s.propertyId),!Object.hasOwn(n.propertiesById,s.propertyId))return{code:"invalid_data_source_query_sort",message:`Data source query sort property ID "${s.propertyId}" is not defined in the bound data source schema.`,isRetryable:!1};let c=n.propertiesById[s.propertyId];if(!ao.has(c.type))return{code:"invalid_data_source_query_sort",message:`Data source query sorts do not yet support property type "${c.type}".`,isRetryable:!1}}}var Fr=5;function co(e){let{iframe:n,prepareInitialState:o,handlers:s,onInitialized:c,onConnectionFailure:l,onLog:f,onQueryUnsubscribed:y,sandboxOrigin:m,minBridgeProtocolVersion:x,noConnectTimeoutMs:_,initialStateTimeoutMs:M,noInitResultTimeoutMs:S}=e,H=Math.max(x??3,3),L={},Q=!1,j=new AbortController,V,ae,W=6,w=new qe(a=>{y?.(a)});function q(a,k){f?.(a,k)}function T(a){let k=v.status;switch(k){case"waitingForConnect":case"preparingInit":case"waitingForInitResult":case"initialized":case"error":break;case"stopped":return;default:return se(k)}let N=lr(a,W);q("out",N),n.contentWindow?.postMessage(N,m)}function K(a){T(te(Ae,a))}function Z(a){T(a)}function C(a){let k=v.status;switch(k){case"initialized":T(te(Zt,a));return;case"waitingForConnect":case"preparingInit":case"waitingForInitResult":case"error":case"stopped":return;default:se(k)}}async function ue(a,k){if(k===void 0)return;let N=await k(a);C({type:`${a.type}Result`,requestId:a.requestId,...N})}function Be(a){let k=a.response.status==="error"?{type:"queryDataSourceResult",subscriptionId:a.subscriptionId,status:"error",error:a.response.error}:{type:"queryDataSourceResult",subscriptionId:a.subscriptionId,status:"success",items:a.response.items,hasMore:a.response.hasMore};C(k)}async function de(a,k=w.subscribe(a)){try{let N=lo(ae,a.dataSourceId),he=po(a,N);if(he!==void 0){w.isCurrent(a.subscriptionId,k)&&(w.unsubscribe(a.subscriptionId),Be({subscriptionId:a.subscriptionId,response:{status:"error",error:he}}));return}let Ne=await s.queryDataSource(a);if(!w.isCurrent(a.subscriptionId,k))return;Ne.status==="error"&&!Ne.error.isRetryable&&w.unsubscribe(a.subscriptionId),Be({subscriptionId:a.subscriptionId,response:Ne})}finally{let N=w.finish(a.subscriptionId,k);N!==void 0&&de(N.message,N.token)}}function ce(a){v.status==="stopped"||v.status==="error"||(Object.assign(L,a),b())}function b(){if(v.status!=="initialized")return;let a=L;L={},a.theme!==void 0&&C({type:"themeChanged",theme:a.theme}),a.contrastMode!==void 0&&C({type:"contrastModeChanged",contrastMode:a.contrastMode}),a.parent!==void 0&&C({type:"parentChanged",parent:a.parent}),a.page!==void 0&&C({type:"pageChanged",page:a.page}),a.dataSources!==void 0&&C({type:"dataSourcesChanged",dataSources:a.dataSources}),a.currentUser!==void 0&&C({type:"currentUserChanged",currentUser:a.currentUser})}let v=ur({async prepareInit(a){W=a.bridgeProtocolVersion;let k=await ee;return v.status!=="preparingInit"?k:G(k)},sendInitMessage:K,warn:a=>q("warn",a),flushPendingHostStateChanges:b,minBridgeProtocolVersion:H,noConnectTimeoutMs:_,initialStateTimeoutMs:M,noInitResultTimeoutMs:S,stopHostWithFailure:st,onInitResult(a){a.status==="success"&&V!==void 0&&c?.({manifest:V,initialHeight:a.initialHeight})},onConnectionFailure:a=>{j.abort(),l?.(a)}});function G(a){if(a.status==="error")return a;let k=te(pr,{...a.initialState,...L});if(V=k.manifest,L={},W<Fr&&k.page.type==="unavailable")return{status:"error",error:Ze()};let N=Ur(k.manifest,k.dataSources);return N!==void 0?{status:"error",error:N}:(ae=k.dataSources,Q=!0,{status:"success",initialState:k})}let ee=Te().catch(a=>(j.signal.aborted||q("warn",{message:"Failed to prepare custom block initialization",error:a}),{status:"error",error:Ce()}));async function Te(){let a=await cr({...e,sandboxOrigin:m,signal:j.signal,onError:N=>{q("warn",{message:"Failed to load custom block manifest",error:N})}});if(a.status==="error")return a;if(j.signal.aborted)return{status:"error",error:Ce()};let k=await o({manifest:a.manifest,signal:j.signal});return k.status==="error"?k:{status:"success",initialState:{...k.initialState,manifest:a.manifest}}}let ot=Ar({iframe:n,sandboxOrigin:m,getInitStatus:()=>v.status,emit:q,sendNack:Z,onInvalidConnect:v.handleInvalidConnect,onInvalidInitResult:v.handleInvalidInitResult,onConnect:v.handleConnect,onInitResult:v.handleInitResult,onQueryDataSource:de,onUnsubscribeDataSourceQuery:a=>w.unsubscribe(a.subscriptionId),onCreatePage:a=>ue(a,s.createPage),onGetPage:a=>ue(a,s.getPage),onOpenPage:a=>ue(a,s.openPage),onGetUser:a=>ue(a,s.getUser),onListUsers:a=>ue(a,s.listUsers),onUpdatePage:a=>ue(a,s.updatePage),onResize:a=>s.resize?.(a)});window.addEventListener("message",ot),n.addEventListener("load",v.onIframeLoad);function it(){j.abort(),window.removeEventListener("message",ot),n.removeEventListener("load",v.onIframeLoad),v.stop(),w.unsubscribeAll()}function st(a){it(),q("warn",a),l?.(a)}return{stop:it,setTheme(a){ce({theme:a})},setContrastMode(a){ce({contrastMode:a})},setParent(a){ce({parent:a})},setPage(a){if(a.type==="unavailable"&&W<Fr&&(v.status==="preparingInit"&&Q||v.status==="waitingForInitResult"||v.status==="initialized")){st({...Ze(),phase:"runtime",source:"host"});return}ce({page:a})},setCurrentUser(a){ce({currentUser:a})},setDataSources(a){let k={bindings:te(le,a.bindings)};if(v.hasConnectedSandbox&&V!==void 0&&Ur(V,k)!==void 0){q("warn",{message:"Ignored invalid data source bindings update",payload:k});return}ae=k,ce({dataSources:k})},refreshQuery({dataSourceId:a}){if(v.status!=="initialized")return;let k=te(Y,a),N=w.refresh(k);if(N===void 0){q("warn",`No active query exists for data source "${a}"`);return}for(let he of N)de(he.message,he.token)}}}function lo(e,n){return Object.values(e?.bindings??{}).find(o=>o.collectionPointer?.id===n)?.collectionSchema}function Ur(e,n){for(let[o,s]of Object.entries(e.dataSources)){let c=n.bindings[o];if(c?.collectionPointer===void 0||c.collectionSchema===void 0)return nr();for(let[l,f]of Object.entries(s.properties??{})){let y=c.propertyIdsByKey?.[l];if(y===void 0)return or();if(c.collectionSchema.propertiesById[y]?.type!==f.type)return ir()}}}function po(e,n){return n===void 0?e.filter===void 0&&(e.sorts?.length??0)===0?void 0:{code:"data_source_schema_unavailable",message:"You cannot query this data source with filters or sorts because its schema is unavailable.",isRetryable:!1}:qr(e.filter,n)??Tr(e.sorts,n)}function fo(e){return te(D,e)}export{zr as LEGACY_PROPERTY_SHAPE_PROTOCOL_VERSION,co as createCustomBlockHost,Hr as getAutoBoundPropertyIdsByKey,tt as isLocalCustomBlockUrl,fo as toNotionPageId};
@@ -49,7 +49,7 @@ export async function loadCustomBlockManifest(args) {
49
49
  }
50
50
  async function fetchLocalCustomBlockManifest(origin, signal) {
51
51
  const url = new URL(origin);
52
- if (!isLocalCustomBlockUrl(url) || url.origin === window.location.origin) {
52
+ if (!isLocalCustomBlockUrl({ url, hostOrigin: window.location.origin })) {
53
53
  throw new Error("Preview requires a separate loopback origin.");
54
54
  }
55
55
  const response = await fetch(new URL("/manifest", url), {
@@ -2,7 +2,10 @@
2
2
  * Checks whether a URL can serve a local custom block over HTTP or HTTPS.
3
3
  * Accepts localhost, any .localhost subdomain, and 127.0.0.1 without credentials.
4
4
  * Local refers to the block server, not the environment where the host runs.
5
- * Callers must separately enforce isolation from the embedding page's origin.
5
+ * Requires the embedding page's origin and rejects URLs that share that origin.
6
6
  */
7
- export declare function isLocalCustomBlockUrl(url: URL): boolean;
7
+ export declare function isLocalCustomBlockUrl({ url, hostOrigin, }: {
8
+ url: URL;
9
+ hostOrigin: string;
10
+ }): boolean;
8
11
  //# sourceMappingURL=localBlockUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localBlockUrl.d.ts","sourceRoot":"","sources":["../src/localBlockUrl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CASvD"}
1
+ {"version":3,"file":"localBlockUrl.d.ts","sourceRoot":"","sources":["../src/localBlockUrl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EACrC,GAAG,EACH,UAAU,GACV,EAAE;IACF,GAAG,EAAE,GAAG,CAAA;IACR,UAAU,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAYV"}
@@ -2,10 +2,13 @@
2
2
  * Checks whether a URL can serve a local custom block over HTTP or HTTPS.
3
3
  * Accepts localhost, any .localhost subdomain, and 127.0.0.1 without credentials.
4
4
  * Local refers to the block server, not the environment where the host runs.
5
- * Callers must separately enforce isolation from the embedding page's origin.
5
+ * Requires the embedding page's origin and rejects URLs that share that origin.
6
6
  */
7
- export function isLocalCustomBlockUrl(url) {
8
- return ((url.protocol === "http:" || url.protocol === "https:") &&
7
+ export function isLocalCustomBlockUrl({ url, hostOrigin, }) {
8
+ return (typeof hostOrigin === "string" &&
9
+ hostOrigin !== "" &&
10
+ url.origin !== hostOrigin &&
11
+ (url.protocol === "http:" || url.protocol === "https:") &&
9
12
  (url.hostname === "localhost" ||
10
13
  url.hostname === "127.0.0.1" ||
11
14
  url.hostname.endsWith(".localhost")) &&
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notionhq/custom-blocks-host",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Reusable host runtime for Notion custom blocks.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -73,7 +73,7 @@ async function fetchLocalCustomBlockManifest(
73
73
  signal: AbortSignal,
74
74
  ): Promise<unknown> {
75
75
  const url = new URL(origin)
76
- if (!isLocalCustomBlockUrl(url) || url.origin === window.location.origin) {
76
+ if (!isLocalCustomBlockUrl({ url, hostOrigin: window.location.origin })) {
77
77
  throw new Error("Preview requires a separate loopback origin.")
78
78
  }
79
79
  const response = await fetch(new URL("/manifest", url), {
@@ -2,10 +2,19 @@
2
2
  * Checks whether a URL can serve a local custom block over HTTP or HTTPS.
3
3
  * Accepts localhost, any .localhost subdomain, and 127.0.0.1 without credentials.
4
4
  * Local refers to the block server, not the environment where the host runs.
5
- * Callers must separately enforce isolation from the embedding page's origin.
5
+ * Requires the embedding page's origin and rejects URLs that share that origin.
6
6
  */
7
- export function isLocalCustomBlockUrl(url: URL): boolean {
7
+ export function isLocalCustomBlockUrl({
8
+ url,
9
+ hostOrigin,
10
+ }: {
11
+ url: URL
12
+ hostOrigin: string
13
+ }): boolean {
8
14
  return (
15
+ typeof hostOrigin === "string" &&
16
+ hostOrigin !== "" &&
17
+ url.origin !== hostOrigin &&
9
18
  (url.protocol === "http:" || url.protocol === "https:") &&
10
19
  (url.hostname === "localhost" ||
11
20
  url.hostname === "127.0.0.1" ||