@interactiveplatform/movika-manifest 1.0.2 → 1.0.3

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/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var uuid=require('uuid');var J=Object.defineProperty,$=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var V=(e,t,r)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,o=(e,t)=>{for(var r in t||(t={}))R.call(t,r)&&V(e,r,t[r]);if(M)for(var r of M(t))D.call(t,r)&&V(e,r,t[r]);return e},s=(e,t)=>$(e,j(t));var g=(e,t)=>{var r={};for(var n in e)R.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&M)for(var n of M(e))t.indexOf(n)<0&&D.call(e,n)&&(r[n]=e[n]);return r};var O=(n=>(n[n.NoVideo=0]="NoVideo",n[n.NoEOV=1]="NoEOV",n[n.NoBranches=2]="NoBranches",n))(O||{});var y="3.3",A=/[3-9]{1}\.[3-9]{1}/;var Y=(r=>(r.Choice="Choice",r.TextInput="TextInput",r))(Y||{}),K=(n=>(n.Button="Button",n.Area="Area",n.Text="Text",n))(K||{}),Z=(r=>(r.onClick="onClick",r.onSuspense="onSuspense",r))(Z||{}),q=(l=>(l.openURI="openURI",l.setNextBranch="setNextBranch",l.setWeightlessRandomBranch="setWeightlessRandomBranch",l.setRandomBranch="setRandomBranch",l.setMaxWeightBranch="setMaxWeightBranch",l.setMinWeightBranch="setMinWeightBranch",l.setDefaultBranch="setDefaultBranch",l.continuePlayback="continuePlayback",l.expect="expect",l))(q||{});var w="3.1";var _=(e,t)=>t==null?void 0:t.find(r=>r.type===e),Ve=(e,t)=>t?t.findIndex(r=>r.type===e):-1;var ee=["Button"],te=["Button"],re=1.5,ne=.1,ae=4.48,N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),Ae=(e,t,r,n)=>({id:uuid.v4(),type:e,label:t,layoutParams:se(e,n),props:ie(e,r),events:e!=="Text"?[C("onClick","continuePlayback")]:[]}),C=(e,t,r,n)=>{switch(t){case"setNextBranch":return {type:e,action:{type:t,args:{branchId:r,shouldOpenNow:!0}}};case"continuePlayback":return {type:e,action:{type:t,args:{shouldOpenNow:!0}}};case"openURI":return {type:e,action:{type:t,args:{isDetachContainer:!0,shouldOpenNow:!0,uri:n}}}}},oe={Text:0,Button:.3,Area:.35},se=(e,t)=>{let r=e==="Text",n=r?.12:.09,a=.4;if(t!=null&&t.width&&r){let i=t.height*ne*re,p=i*ae,c=Math.ceil(p/t.width);a=Math.min(1,p/t.width),n=i/t.height*c;}return {x:.5,y:oe[e]||0,width:a,height:n,angle:0,innerSizesDependOn:"video"}},ie=(e,t)=>{let r=e==="Text",n=r?"start":"center",a=r?"top":"center";return o({background:{type:"color",color:N.background,alpha:ee.includes(e)?1:0},shape:{border:{width:.005,color:N.border,alpha:te.includes(e)?1:0},type:"rectangle",roundCorners:r?0:.02}},t&&{text:{value:t,gravityHorizontal:n,gravityVertical:a,color:N.text,size:r?.1:.03,alpha:1}})},we=(e,t,r,n)=>{let a=e.containers.find(u=>u.id===t),i=a?a.controls.find(u=>u.id===r):void 0,p=(i==null?void 0:i.events)||[],c=_("onClick",i==null?void 0:i.events),d=c==null?void 0:c.action.args.branchId;n&&(c?p=p.map(u=>{if(u===c){let h=u.action.args,f=g(h,["uri"]);return s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},f),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0,isDetachContainer:n==="openURI"?!1:void 0})})})}return u}):p.push(C("onClick",n)));let l=n!=="setNextBranch"?e.branches.filter(u=>u.id!==d):e.branches;return s(o({},e),{branches:l,containers:e.containers.map(u=>u.id===t?s(o({},u),{controls:u.controls.map(h=>h.id===r?s(o({},h),{events:p}):h)}):u)})};var k=e=>{let t=[];for(let p of e.chapters){let c,d=[];for(let r of p.branches){let n=r,{isDefault:h}=n,m=g(n,["isDefault"]);h&&(c=m.id),d.push(m);}let l,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:h}=i,m=g(i,["fallbackStrategy"]);switch(h){case"await":l=[];break;case"default":l=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:c,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":l=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let f of m.controls)u.push(s(o({},m),{controls:[s(o({},f),{events:f.subtype==="Text"||f.events.length?f.events:[C("onClick","continuePlayback")]})],id:uuid.v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}t.push(s(o({},p),{containers:u,events:l,branches:d}));}return e.metadata.version=w,e.metadata.updated=new Date().toISOString(),s(o({},e),{chapters:t})};var L="3.2";var P=e=>{let n=e.metadata,{media:t}=n,r=g(n,["media"]);if(typeof t=="string")throw new Error("Manifest media should be parsed");return {chapters:e.chapters,metadata:s(o({},r),{version:L}),media:t}};var qe=(e="[Untitled]")=>({id:uuid.v4(),label:e,order:"simple",branches:[],containers:[],events:[]}),Qe=(e,t,r)=>{let n=1,a=()=>`${e} (${t}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},et=(e,t)=>{var r;return s(o({},e),{label:t,id:uuid.v4(),order:e.order==="start"?"simple":e.order,branches:[],containers:e.containers.map(n=>s(o({},n),{id:uuid.v4(),controls:n.controls.map(a=>s(o({},a),{id:uuid.v4(),events:a.type!=="Text"?[C("onClick","continuePlayback")]:[]})),events:[E("continuePlayback")]})),events:(r=e.events)==null?void 0:r.map(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch"?s(o({},n),{action:s(o({},n.action),{args:s(o({},n.action.args),{branchId:void 0})})}):n)})},tt=e=>{let t=[];if(e.videoId||t.push(0),e.order!=="end"){let r=!e.events||e.events.some(a=>a.type==="onSuspense"&&a.action.type==="setNextBranch"&&!a.action.args.branchId);r&&t.push(1);let n=e.containers.flatMap(a=>a.controls);!n.length&&r?t.push(2):n.some(a=>{var i;return a.type!=="Text"&&!((i=a==null?void 0:a.events)!=null&&i.length)})&&t.push(2);}return t},rt=e=>({id:uuid.v4(),chapterId:e}),E=(e,t)=>({type:"onSuspense",action:{type:e,args:{branchId:t,shouldOpenNow:!0}}}),G=e=>e.containers.filter(t=>t.controls.some(r=>r.type==="Area"||r.type==="Button")),ce=(e,t)=>{let r=new Set,n=0;e.containers.forEach(l=>{n=n+l.controls.length,l.controls.forEach(u=>r.add(`${u.layoutParams.x},${u.layoutParams.y}`));},0);let a=6,i=.02,p=.17,c=[],d=0;for(;c.length===0;){let l=d%a+1,u=Math.floor(d/a)*i,h=l%2===0?.5:.05+u,m=t.layoutParams.y+p*Math.round(l/2)+u;r.has([h,m].join())||c.push(h,m),d=d+1;}return c},nt=(e,t)=>{var c;let[r,n]=ce(e,t),a=(c=e.events)==null?void 0:c.find(d=>d.type==="onSuspense");if(!((a==null?void 0:a.action.type)==="setNextBranch"&&(a==null?void 0:a.action.args.branchId))&&t.type!=="Text"&&G(e).length===0){let d={type:"onSuspense",action:{args:{shouldOpenNow:!0,branchId:void 0},type:"setRandomBranch"}};a?a.action=d.action:e.events.push(d);}return s(o({},e),{containers:[...e.containers,{id:uuid.v4(),startTime:0,endTime:null,controls:[s(o({},t),{layoutParams:s(o({},t.layoutParams),{x:r,y:n})})],events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}],layout:{type:"Relative"},type:"Choice"}]})},at=(e,t,r)=>{if(!e.containers.find(c=>c.id===r))return e;let a=[],i=G(e),p=e.containers.filter(c=>{var d;return c.id===r&&(c.controls.forEach(l=>{var u;l.id===t&&((u=l.events)!=null&&u.length)&&a.push(...l.events.map(h=>h.action.args.branchId));}),(d=c.events)!=null&&d.length&&a.push(...c.events.map(l=>l.action.args.branchId))),c.id!==r});return s(o({},e),{containers:p,branches:e.branches.filter(c=>!a.includes(c.id)),events:de(e.events,i.length===1)})},de=(e,t=!1)=>t?e.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?e:[]:e,ot=(e,t,r,n)=>{var a;return r?s(o({},e),{containers:e.containers.map(i=>s(o({},i),{controls:i.controls.map(p=>p.id===r?s(o({},p),{events:[C("onClick","setNextBranch",t.id)]}):p)})),branches:[...e.branches,t]}):n?s(o({},e),{containers:e.containers.map(i=>i.id===n?s(o({},i),{events:[E("setNextBranch",t.id)]}):i),branches:[...e.branches,t]}):s(o({},e),{branches:[...e.branches,t],events:(a=e.events)==null?void 0:a.map(i=>i.type==="onSuspense"?s(o({},i),{action:s(o({},i.action),{args:{branchId:t.id,shouldOpenNow:!0}})}):i)})},T=(e,t)=>t.map(r=>r.action.args.branchId&&e.includes(r.action.args.branchId)?s(o({},r),{action:s(o({},r.action),{args:s(o({},r.action.args),{branchId:void 0})})}):r),U=(e,t)=>t.length?s(o({},e),{branches:e.branches.filter(r=>!t.includes(r.id)),containers:e.containers.map(r=>s(o({},r),{controls:r.controls.map(n=>s(o({},n),{events:T(t,n.events)})),events:T(t,r.events)})),events:T(t,e.events)}):e,st=(e,t)=>{var i;let r=e.events||[],n=(i=e.events)==null?void 0:i.find(p=>p.type==="onSuspense"),a=n==null?void 0:n.action.args.branchId;return t&&(n?r=r.map(p=>p.type==="onSuspense"?s(o({},p),{action:s(o({},p.action),{type:t,args:s(o({},p.action.args),{branchId:t==="setNextBranch"?p.action.args.branchId:void 0})})}):p):r=[...r,{type:"onSuspense",action:{type:t,args:{shouldOpenNow:!0}}}]),s(o({},e),{events:r,branches:t!=="setNextBranch"?e.branches.filter(p=>p.id!==a):e.branches})},it=e=>{if(!e.events)return;let t=e.events.find(r=>r.type==="onSuspense");return t==null?void 0:t.action.type},pt=(e,t,r)=>{let n=t.events||[],a=_("onSuspense",t.events),i=a==null?void 0:a.action.args.branchId;r&&(a?n=n.map(d=>d.type==="onSuspense"?s(o({},d),{action:s(o({},d.action),{type:r,args:s(o({},d.action.args),{branchId:r==="setNextBranch"?d.action.args.branchId:void 0})})}):d):n=[...n,{type:"onSuspense",action:{type:r,args:{shouldOpenNow:!0}}}]);let p=r!=="setNextBranch"?e.branches.filter(d=>d.id!==i):e.branches,c=s(o({},t),{events:n});return s(o({},e),{branches:p,containers:e.containers.map(d=>d.id===t.id?c:d)})},ct=(e,t)=>{let r=new Set(t);return e.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},dt=e=>{if(e.order==="end")return !0;if(e.order==="start")return !1;let t=e.containers.some(n=>_("onSuspense",n.events)),r=e.containers.flatMap(n=>n.controls);return !t&&r.length===0};var v=(e=[])=>({edit:{chapters:e},view:{}}),X=(e,[t,r])=>({id:e,x:t,y:r}),ht=Object.freeze({edit:{background:{color:"#0D0F12",grid:{enabled:!0,color:"#474747"}},defaultChapter:{flipTo:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},controls:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},hover:{enabled:!0,borderColor:"#7B68EE"}},chapters:[]},view:{background:{color:"#0D0F12",grid:{enabled:!1,color:"#474747"}},defaultChapter:{header:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},flipTo:{enabled:!1,backgroundColor:"#282A2E",textColor:"#FFFFFF"},controls:{enabled:!1,backgroundColor:"#282A2E",textColor:"#FFFFFF"},hover:{enabled:!0,borderColor:"#2688EB"},watchAgain:{enabled:!0,backgroundColor:"#2688EB",textColor:"#FFFFFF"},preview:{visible:!1,backgroundColor:"#19191A",textColor:"#5D5F61"},goBlind:!1}}});var z=e=>{let t=[],r=[];for(let a of e.chapters){let n=a,{x:i,y:p}=n,c=g(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,l=[],u=c.containers.map(h=>{var m;return s(o({},h),{events:(d?(m=h.events)==null?void 0:m.map(f=>f.type==="onSuspense"?(f.action.args.branchId&&l.push(f.action.args.branchId),E("expect")):f):h.events)||[],controls:h.controls.map(Ce=>{var B=Ce,{subtype:f}=B,F=g(B,["subtype"]);return s(o({},F),{type:f,events:F.events||[C("onClick","continuePlayback")]})})})});t.push(U(s(o({},c),{containers:u,events:a.events||[]}),l)),r.push({id:c.id,x:i,y:p});}return s(o({},e),{chapters:t,graph:v(r),metadata:s(o({},e.metadata),{version:y})})};var le=[{version:"3.0",migrate:k},{version:"3.1",migrate:P},{version:"3.2",migrate:z}],W=e=>le.reduce((t,r)=>t.metadata.version===r.version?r.migrate(t):t,e);var b=(e,t)=>{let r={};for(let n of e)r[t(n)]=n;return r},It=e=>b(e,t=>t.id),I=(e="",t="")=>{let r=e.split("."),n=t.split("."),a=Math.max(r.length,n.length),i=0;for(let p=0;p<a&&!i;p++)r[p]>n[p]?i=1:r[p]<n[p]?i=-1:i=0;return i};var ue=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ue||{}),Ot=e=>{let t;try{t=JSON.parse(e);}catch(p){throw new Error("ManifestParsingFailed")}t.metadata.version!==y&&(t=W(t));let{chapters:r,metadata:n,media:a,graph:i}=t;if(!A.test(n.version))throw new Error("ManifestUnsupportedVersion");return {chapters:b(r,p=>p.id),metadata:n,media:a,graph:{edit:s(o({},i.edit),{chapters:b(i.edit.chapters,p=>p.id)}),view:s(o({},i.view),{chapters:i.view.chapters?b(i.view.chapters,p=>p.id):void 0})}}};function At(e=!1,t="[Untitled]"){let r=new Date().toISOString(),n=uuid.v4(),a={chapters:[{branches:[],containers:[],id:n,label:t,order:"start",events:[]}],metadata:{id:uuid.v4(),build:0,version:y,initChapterId:n,created:r,updated:r},media:{videos:[]},graph:v([X(n,[0,0])])};return e?JSON.stringify(a):a}var he="3.0.0",fe="3.3.0",wt=e=>{let t=I(e,he);return t===-1?!1:t===0?!0:I(e,fe)!==1};var S={id:"generate_id"},Ut=e=>({id:uuid.v4(),name:"Template",chapterType:e.order,template:JSON.stringify(e.containers,(t,r)=>S[t]||r),type:"container",manifestVersion:y});var Ht=(e,t)=>{try{let r=JSON.parse(t.template,(n,a)=>{if(S[n])switch(a){case"generate_id":return uuid.v4();default:return a}return a});return s(o({},e),{branches:[],containers:r})}catch(r){return console.error("The following template is broken:",t.id),e}};exports.ChapterError=O;exports.ContainerTypes=Y;exports.ControlTypes=K;exports.DEFAULT_GRAPH_DESIGN=ht;exports.DEFAULT_MANIFEST_VERSION=y;exports.EventActionTypes=q;exports.EventTypes=Z;exports.MAX_MANIFEST_VERSION=fe;exports.MIN_MANIFEST_VERSION=he;exports.ManifestParsingError=ue;exports.TEST_VERSION_REGEX=A;exports.addBranchToChapter=ot;exports.addControlToChapter=nt;exports.applyContainerTemplate=Ht;exports.canBeEndNode=dt;exports.compareVersions=I;exports.containersTemplateCreator=Ut;exports.copyChapter=et;exports.createChapter=qe;exports.createChapterBranch=rt;exports.createContainerEvent=E;exports.createControl=Ae;exports.createControlEvent=C;exports.createDefaultGraphDesign=v;exports.createGraphChapter=X;exports.createManifest=At;exports.getChapterSuspenseActionType=it;exports.getCopiedChapterLabel=Qe;exports.getEventByType=_;exports.getEventIndexByType=Ve;exports.isSupportedManifest=wt;exports.migrateManifestToLatestVersion=W;exports.normalize=b;exports.parseManifest=Ot;exports.removeBranchesFromChapter=U;exports.removeControlFromChapter=at;exports.removeControlsFromContainers=ct;exports.replacers=S;exports.toDict=It;exports.updateChapterSuspenseAction=st;exports.updateContainerSuspenseAction=pt;exports.updateControlActionEventLegacy=we;exports.validateChapter=tt;
1
+ 'use strict';var uuid=require('uuid');var $=Object.defineProperty,J=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var V=(e,t,r)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,o=(e,t)=>{for(var r in t||(t={}))R.call(t,r)&&V(e,r,t[r]);if(M)for(var r of M(t))D.call(t,r)&&V(e,r,t[r]);return e},s=(e,t)=>J(e,j(t));var g=(e,t)=>{var r={};for(var n in e)R.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&M)for(var n of M(e))t.indexOf(n)<0&&D.call(e,n)&&(r[n]=e[n]);return r};var O=(n=>(n[n.NoVideo=0]="NoVideo",n[n.NoEOV=1]="NoEOV",n[n.NoBranches=2]="NoBranches",n))(O||{});var y="3.3",A=/[3-9]{1}\.[3-9]{1}/;var Y=(r=>(r.Choice="Choice",r.TextInput="TextInput",r))(Y||{}),K=(n=>(n.Button="Button",n.Area="Area",n.Text="Text",n))(K||{}),Z=(r=>(r.onClick="onClick",r.onSuspense="onSuspense",r))(Z||{}),q=(l=>(l.openURI="openURI",l.setNextBranch="setNextBranch",l.setWeightlessRandomBranch="setWeightlessRandomBranch",l.setRandomBranch="setRandomBranch",l.setMaxWeightBranch="setMaxWeightBranch",l.setMinWeightBranch="setMinWeightBranch",l.setDefaultBranch="setDefaultBranch",l.continuePlayback="continuePlayback",l.expect="expect",l))(q||{});var w="3.1";var _=(e,t)=>t==null?void 0:t.find(r=>r.type===e),Ve=(e,t)=>t?t.findIndex(r=>r.type===e):-1;var ee=["Button"],te=["Button"],re=1.5,ne=.1,ae=4.48,N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),Ae=(e,t,r,n)=>({id:uuid.v4(),type:e,label:t,layoutParams:se(e,n),props:ie(e,r),events:e!=="Text"?[C("onClick","continuePlayback")]:[]}),C=(e,t,r,n)=>{switch(t){case"setNextBranch":return {type:e,action:{type:t,args:{branchId:r,shouldOpenNow:!0}}};case"continuePlayback":return {type:e,action:{type:t,args:{shouldOpenNow:!0}}};case"openURI":return {type:e,action:{type:t,args:{isDetachContainer:!0,shouldOpenNow:!0,uri:n}}}}},oe={Text:0,Button:.3,Area:.35},se=(e,t)=>{let r=e==="Text",n=r?.12:.09,a=.4;if(t!=null&&t.width&&r){let i=t.height*ne*re,p=i*ae,c=Math.ceil(p/t.width);a=Math.min(1,p/t.width),n=i/t.height*c;}return {x:.5,y:oe[e]||0,width:a,height:n,angle:0,innerSizesDependOn:"video"}},ie=(e,t)=>{let r=e==="Text",n=r?"start":"center",a=r?"top":"center";return o({background:{type:"color",color:N.background,alpha:ee.includes(e)?1:0},shape:{border:{width:.005,color:N.border,alpha:te.includes(e)?1:0},type:"rectangle",roundCorners:r?0:.02}},t&&{text:{value:t,gravityHorizontal:n,gravityVertical:a,color:N.text,size:r?.1:.03,alpha:1}})},we=(e,t,r,n)=>{let a=e.containers.find(u=>u.id===t),i=a?a.controls.find(u=>u.id===r):void 0,p=(i==null?void 0:i.events)||[],c=_("onClick",i==null?void 0:i.events),d=c==null?void 0:c.action.args.branchId;n&&(c?p=p.map(u=>{if(u===c){let h=u.action.args,f=g(h,["uri"]);return s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},f),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0,isDetachContainer:n==="openURI"?!1:void 0})})})}return u}):p.push(C("onClick",n)));let l=n!=="setNextBranch"?e.branches.filter(u=>u.id!==d):e.branches;return s(o({},e),{branches:l,containers:e.containers.map(u=>u.id===t?s(o({},u),{controls:u.controls.map(h=>h.id===r?s(o({},h),{events:p}):h)}):u)})};var k=e=>{let t=[];for(let p of e.chapters){let c,d=[];for(let r of p.branches){let n=r,{isDefault:h}=n,m=g(n,["isDefault"]);h&&(c=m.id),d.push(m);}let l,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:h}=i,m=g(i,["fallbackStrategy"]);switch(h){case"await":l=[];break;case"default":l=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:c,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":l=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let f of m.controls)u.push(s(o({},m),{controls:[s(o({},f),{events:f.subtype==="Text"||f.events.length?f.events:[C("onClick","continuePlayback")]})],id:uuid.v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}t.push(s(o({},p),{containers:u,events:l,branches:d}));}return e.metadata.version=w,e.metadata.updated=new Date().toISOString(),s(o({},e),{chapters:t})};var L="3.2";var P=e=>{let n=e.metadata,{media:t}=n,r=g(n,["media"]);if(typeof t=="string")throw new Error("Manifest media should be parsed");return {chapters:e.chapters,metadata:s(o({},r),{version:L}),media:t}};var qe=(e="[Untitled]")=>({id:uuid.v4(),label:e,order:"simple",branches:[],containers:[],events:[]}),Qe=(e,t,r)=>{let n=1,a=()=>`${e} (${t}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},et=(e,t)=>{let r=e.size+1,n=()=>`${t} [${r}]`,a=n();for(;e.has(a);)r+=1,a=n();return a},tt=(e,t)=>{var r;return s(o({},e),{label:t,id:uuid.v4(),order:e.order==="start"?"simple":e.order,branches:[],containers:e.containers.map(n=>s(o({},n),{id:uuid.v4(),controls:n.controls.map(a=>s(o({},a),{id:uuid.v4(),events:a.type!=="Text"?[C("onClick","continuePlayback")]:[]})),events:[E("continuePlayback")]})),events:(r=e.events)==null?void 0:r.map(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch"?s(o({},n),{action:s(o({},n.action),{args:s(o({},n.action.args),{branchId:void 0})})}):n)})},rt=e=>{let t=[];if(e.videoId||t.push(0),e.order!=="end"){let r=!e.events||e.events.some(a=>a.type==="onSuspense"&&a.action.type==="setNextBranch"&&!a.action.args.branchId);r&&t.push(1);let n=e.containers.flatMap(a=>a.controls);!n.length&&r?t.push(2):n.some(a=>{var i;return a.type!=="Text"&&!((i=a==null?void 0:a.events)!=null&&i.length)})&&t.push(2);}return t},nt=e=>({id:uuid.v4(),chapterId:e}),E=(e,t)=>({type:"onSuspense",action:{type:e,args:{branchId:t,shouldOpenNow:!0}}}),G=e=>e.containers.filter(t=>t.controls.some(r=>r.type==="Area"||r.type==="Button")),ce=(e,t)=>{let r=new Set,n=0;e.containers.forEach(l=>{n=n+l.controls.length,l.controls.forEach(u=>r.add(`${u.layoutParams.x},${u.layoutParams.y}`));},0);let a=6,i=.02,p=.17,c=[],d=0;for(;c.length===0;){let l=d%a+1,u=Math.floor(d/a)*i,h=l%2===0?.5:.05+u,m=t.layoutParams.y+p*Math.round(l/2)+u;r.has([h,m].join())||c.push(h,m),d=d+1;}return c},at=(e,t)=>{var c;let[r,n]=ce(e,t),a=(c=e.events)==null?void 0:c.find(d=>d.type==="onSuspense");if(!((a==null?void 0:a.action.type)==="setNextBranch"&&(a==null?void 0:a.action.args.branchId))&&t.type!=="Text"&&G(e).length===0){let d={type:"onSuspense",action:{args:{shouldOpenNow:!0,branchId:void 0},type:"setRandomBranch"}};a?a.action=d.action:e.events.push(d);}return s(o({},e),{containers:[...e.containers,{id:uuid.v4(),startTime:0,endTime:null,controls:[s(o({},t),{layoutParams:s(o({},t.layoutParams),{x:r,y:n})})],events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}],layout:{type:"Relative"},type:"Choice"}]})},ot=(e,t,r)=>{if(!e.containers.find(c=>c.id===r))return e;let a=[],i=G(e),p=e.containers.filter(c=>{var d;return c.id===r&&(c.controls.forEach(l=>{var u;l.id===t&&((u=l.events)!=null&&u.length)&&a.push(...l.events.map(h=>h.action.args.branchId));}),(d=c.events)!=null&&d.length&&a.push(...c.events.map(l=>l.action.args.branchId))),c.id!==r});return s(o({},e),{containers:p,branches:e.branches.filter(c=>!a.includes(c.id)),events:de(e.events,i.length===1)})},de=(e,t=!1)=>t?e.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?e:[]:e,st=(e,t,r,n)=>{var a;return r?s(o({},e),{containers:e.containers.map(i=>s(o({},i),{controls:i.controls.map(p=>p.id===r?s(o({},p),{events:[C("onClick","setNextBranch",t.id)]}):p)})),branches:[...e.branches,t]}):n?s(o({},e),{containers:e.containers.map(i=>i.id===n?s(o({},i),{events:[E("setNextBranch",t.id)]}):i),branches:[...e.branches,t]}):s(o({},e),{branches:[...e.branches,t],events:(a=e.events)==null?void 0:a.map(i=>i.type==="onSuspense"?s(o({},i),{action:s(o({},i.action),{args:{branchId:t.id,shouldOpenNow:!0}})}):i)})},T=(e,t)=>t.map(r=>r.action.args.branchId&&e.includes(r.action.args.branchId)?s(o({},r),{action:s(o({},r.action),{args:s(o({},r.action.args),{branchId:void 0})})}):r),U=(e,t)=>t.length?s(o({},e),{branches:e.branches.filter(r=>!t.includes(r.id)),containers:e.containers.map(r=>s(o({},r),{controls:r.controls.map(n=>s(o({},n),{events:T(t,n.events)})),events:T(t,r.events)})),events:T(t,e.events)}):e,it=(e,t)=>{var i;let r=e.events||[],n=(i=e.events)==null?void 0:i.find(p=>p.type==="onSuspense"),a=n==null?void 0:n.action.args.branchId;return t&&(n?r=r.map(p=>p.type==="onSuspense"?s(o({},p),{action:s(o({},p.action),{type:t,args:s(o({},p.action.args),{branchId:t==="setNextBranch"?p.action.args.branchId:void 0})})}):p):r=[...r,{type:"onSuspense",action:{type:t,args:{shouldOpenNow:!0}}}]),s(o({},e),{events:r,branches:t!=="setNextBranch"?e.branches.filter(p=>p.id!==a):e.branches})},pt=e=>{if(!e.events)return;let t=e.events.find(r=>r.type==="onSuspense");return t==null?void 0:t.action.type},ct=(e,t,r)=>{let n=t.events||[],a=_("onSuspense",t.events),i=a==null?void 0:a.action.args.branchId;r&&(a?n=n.map(d=>d.type==="onSuspense"?s(o({},d),{action:s(o({},d.action),{type:r,args:s(o({},d.action.args),{branchId:r==="setNextBranch"?d.action.args.branchId:void 0})})}):d):n=[...n,{type:"onSuspense",action:{type:r,args:{shouldOpenNow:!0}}}]);let p=r!=="setNextBranch"?e.branches.filter(d=>d.id!==i):e.branches,c=s(o({},t),{events:n});return s(o({},e),{branches:p,containers:e.containers.map(d=>d.id===t.id?c:d)})},dt=(e,t)=>{let r=new Set(t);return e.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},lt=e=>{if(e.order==="end")return !0;if(e.order==="start")return !1;let t=e.containers.some(n=>_("onSuspense",n.events)),r=e.containers.flatMap(n=>n.controls);return !t&&r.length===0};var v=(e=[])=>({edit:{chapters:e},view:{}}),z=(e,[t,r])=>({id:e,x:t,y:r}),ft=Object.freeze({edit:{background:{color:"#0D0F12",grid:{enabled:!0,color:"#474747"}},defaultChapter:{flipTo:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},controls:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},hover:{enabled:!0,borderColor:"#7B68EE"}},chapters:[]},view:{background:{color:"#0D0F12",grid:{enabled:!1,color:"#474747"}},defaultChapter:{header:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},flipTo:{enabled:!1,backgroundColor:"#282A2E",textColor:"#FFFFFF"},controls:{enabled:!1,backgroundColor:"#282A2E",textColor:"#FFFFFF"},hover:{enabled:!0,borderColor:"#2688EB"},watchAgain:{enabled:!0,backgroundColor:"#2688EB",textColor:"#FFFFFF"},preview:{visible:!1,backgroundColor:"#19191A",textColor:"#5D5F61"},goBlind:!1}}});var W=e=>{let t=[],r=[];for(let a of e.chapters){let n=a,{x:i,y:p}=n,c=g(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,l=[],u=c.containers.map(h=>{var m;return s(o({},h),{events:(d?(m=h.events)==null?void 0:m.map(f=>f.type==="onSuspense"?(f.action.args.branchId&&l.push(f.action.args.branchId),E("expect")):f):h.events)||[],controls:h.controls.map(Ce=>{var B=Ce,{subtype:f}=B,F=g(B,["subtype"]);return s(o({},F),{type:f,events:F.events||[C("onClick","continuePlayback")]})})})});t.push(U(s(o({},c),{containers:u,events:a.events||[]}),l)),r.push({id:c.id,x:i,y:p});}return s(o({},e),{chapters:t,graph:v(r),metadata:s(o({},e.metadata),{version:y})})};var le=[{version:"3.0",migrate:k},{version:"3.1",migrate:P},{version:"3.2",migrate:W}],X=e=>le.reduce((t,r)=>t.metadata.version===r.version?r.migrate(t):t,e);var b=(e,t)=>{let r={};for(let n of e)r[t(n)]=n;return r},St=e=>b(e,t=>t.id),I=(e="",t="")=>{let r=e.split("."),n=t.split("."),a=Math.max(r.length,n.length),i=0;for(let p=0;p<a&&!i;p++)r[p]>n[p]?i=1:r[p]<n[p]?i=-1:i=0;return i};var ue=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ue||{}),At=e=>{let t;try{t=JSON.parse(e);}catch(p){throw new Error("ManifestParsingFailed")}t.metadata.version!==y&&(t=X(t));let{chapters:r,metadata:n,media:a,graph:i}=t;if(!A.test(n.version))throw new Error("ManifestUnsupportedVersion");return {chapters:b(r,p=>p.id),metadata:n,media:a,graph:{edit:s(o({},i.edit),{chapters:b(i.edit.chapters,p=>p.id)}),view:s(o({},i.view),{chapters:i.view.chapters?b(i.view.chapters,p=>p.id):void 0})}}};function wt(e=!1,t="[Untitled]"){let r=new Date().toISOString(),n=uuid.v4(),a={chapters:[{branches:[],containers:[],id:n,label:t,order:"start",events:[]}],metadata:{id:uuid.v4(),build:0,version:y,initChapterId:n,created:r,updated:r},media:{videos:[]},graph:v([z(n,[0,0])])};return e?JSON.stringify(a):a}var he="3.0.0",fe="3.3.0",kt=e=>{let t=I(e,he);return t===-1?!1:t===0?!0:I(e,fe)!==1};var S={id:"generate_id"},zt=e=>({id:uuid.v4(),name:"Template",chapterType:e.order,template:JSON.stringify(e.containers,(t,r)=>S[t]||r),type:"container",manifestVersion:y});var $t=(e,t)=>{try{let r=JSON.parse(t.template,(n,a)=>{if(S[n])switch(a){case"generate_id":return uuid.v4();default:return a}return a});return s(o({},e),{branches:[],containers:r})}catch(r){return console.error("The following template is broken:",t.id),e}};exports.ChapterError=O;exports.ContainerTypes=Y;exports.ControlTypes=K;exports.DEFAULT_GRAPH_DESIGN=ft;exports.DEFAULT_MANIFEST_VERSION=y;exports.EventActionTypes=q;exports.EventTypes=Z;exports.MAX_MANIFEST_VERSION=fe;exports.MIN_MANIFEST_VERSION=he;exports.ManifestParsingError=ue;exports.TEST_VERSION_REGEX=A;exports.addBranchToChapter=st;exports.addControlToChapter=at;exports.applyContainerTemplate=$t;exports.canBeEndNode=lt;exports.compareVersions=I;exports.containersTemplateCreator=zt;exports.copyChapter=tt;exports.createChapter=qe;exports.createChapterBranch=nt;exports.createContainerEvent=E;exports.createControl=Ae;exports.createControlEvent=C;exports.createDefaultGraphDesign=v;exports.createGraphChapter=z;exports.createManifest=wt;exports.getAvailableNameWithIndex=et;exports.getChapterSuspenseActionType=pt;exports.getCopiedChapterLabel=Qe;exports.getEventByType=_;exports.getEventIndexByType=Ve;exports.isSupportedManifest=kt;exports.migrateManifestToLatestVersion=X;exports.normalize=b;exports.parseManifest=At;exports.removeBranchesFromChapter=U;exports.removeControlFromChapter=ot;exports.removeControlsFromContainers=dt;exports.replacers=S;exports.toDict=St;exports.updateChapterSuspenseAction=it;exports.updateContainerSuspenseAction=ct;exports.updateControlActionEventLegacy=we;exports.validateChapter=rt;
package/dist/index.d.cts CHANGED
@@ -16,6 +16,7 @@ declare const migrateManifestToLatestVersion: (manifest: AnyManifest) => Manifes
16
16
 
17
17
  declare const createChapter: (label?: string) => Chapter;
18
18
  declare const getCopiedChapterLabel: (prevLabel: string, copiedChapterSuffix: string, labelsSet: Set<string>) => string;
19
+ declare const getAvailableNameWithIndex: (existingLabels: Set<string>, defaultLabel: string) => string;
19
20
  declare const copyChapter: (chapter: Chapter, copiedChapterLabel: string) => Chapter;
20
21
  declare const validateChapter: (chapter: Chapter) => ChapterError[];
21
22
  declare const createChapterBranch: (targetChapterId: string) => ChapterBranch;
@@ -78,4 +79,4 @@ declare const toDict: <T extends {
78
79
  type ResultType = -1 | 0 | 1;
79
80
  declare const compareVersions: (v1?: string, v2?: string) => ResultType;
80
81
 
81
- export { AnyManifest, Chapter, ChapterBranch, ChapterContainer, ChapterError, ChapterSuspenseActionType, ContainerEvent, ContainerSuspenseActionType, Control, ControlActionType, ControlEvent, ControlEventType, ControlType, DEFAULT_GRAPH_DESIGN, GraphCustomChapter, GraphDesign, GraphEditChapter, GraphEditModeDesign, GraphViewChapter, GraphViewModeDesign, MAX_MANIFEST_VERSION, MIN_MANIFEST_VERSION, Manifest_3_3 as Manifest, type ManifestDataTemplate, ManifestParsingError, Manifest_3_3, Media, Metadata, type ParsedManifest, RectangleSize, addBranchToChapter, addControlToChapter, applyContainerTemplate, canBeEndNode, compareVersions, containersTemplateCreator, copyChapter, createChapter, createChapterBranch, createContainerEvent, createControl, createControlEvent, createDefaultGraphDesign, createGraphChapter, createManifest, getChapterSuspenseActionType, getCopiedChapterLabel, getEventByType, getEventIndexByType, isSupportedManifest, migrateManifestToLatestVersion, normalize, parseManifest, removeBranchesFromChapter, removeControlFromChapter, removeControlsFromContainers, replacers, toDict, updateChapterSuspenseAction, updateContainerSuspenseAction, updateControlActionEventLegacy, validateChapter };
82
+ export { AnyManifest, Chapter, ChapterBranch, ChapterContainer, ChapterError, ChapterSuspenseActionType, ContainerEvent, ContainerSuspenseActionType, Control, ControlActionType, ControlEvent, ControlEventType, ControlType, DEFAULT_GRAPH_DESIGN, GraphCustomChapter, GraphDesign, GraphEditChapter, GraphEditModeDesign, GraphViewChapter, GraphViewModeDesign, MAX_MANIFEST_VERSION, MIN_MANIFEST_VERSION, Manifest_3_3 as Manifest, type ManifestDataTemplate, ManifestParsingError, Manifest_3_3, Media, Metadata, type ParsedManifest, RectangleSize, addBranchToChapter, addControlToChapter, applyContainerTemplate, canBeEndNode, compareVersions, containersTemplateCreator, copyChapter, createChapter, createChapterBranch, createContainerEvent, createControl, createControlEvent, createDefaultGraphDesign, createGraphChapter, createManifest, getAvailableNameWithIndex, getChapterSuspenseActionType, getCopiedChapterLabel, getEventByType, getEventIndexByType, isSupportedManifest, migrateManifestToLatestVersion, normalize, parseManifest, removeBranchesFromChapter, removeControlFromChapter, removeControlsFromContainers, replacers, toDict, updateChapterSuspenseAction, updateContainerSuspenseAction, updateControlActionEventLegacy, validateChapter };
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ declare const migrateManifestToLatestVersion: (manifest: AnyManifest) => Manifes
16
16
 
17
17
  declare const createChapter: (label?: string) => Chapter;
18
18
  declare const getCopiedChapterLabel: (prevLabel: string, copiedChapterSuffix: string, labelsSet: Set<string>) => string;
19
+ declare const getAvailableNameWithIndex: (existingLabels: Set<string>, defaultLabel: string) => string;
19
20
  declare const copyChapter: (chapter: Chapter, copiedChapterLabel: string) => Chapter;
20
21
  declare const validateChapter: (chapter: Chapter) => ChapterError[];
21
22
  declare const createChapterBranch: (targetChapterId: string) => ChapterBranch;
@@ -78,4 +79,4 @@ declare const toDict: <T extends {
78
79
  type ResultType = -1 | 0 | 1;
79
80
  declare const compareVersions: (v1?: string, v2?: string) => ResultType;
80
81
 
81
- export { AnyManifest, Chapter, ChapterBranch, ChapterContainer, ChapterError, ChapterSuspenseActionType, ContainerEvent, ContainerSuspenseActionType, Control, ControlActionType, ControlEvent, ControlEventType, ControlType, DEFAULT_GRAPH_DESIGN, GraphCustomChapter, GraphDesign, GraphEditChapter, GraphEditModeDesign, GraphViewChapter, GraphViewModeDesign, MAX_MANIFEST_VERSION, MIN_MANIFEST_VERSION, Manifest_3_3 as Manifest, type ManifestDataTemplate, ManifestParsingError, Manifest_3_3, Media, Metadata, type ParsedManifest, RectangleSize, addBranchToChapter, addControlToChapter, applyContainerTemplate, canBeEndNode, compareVersions, containersTemplateCreator, copyChapter, createChapter, createChapterBranch, createContainerEvent, createControl, createControlEvent, createDefaultGraphDesign, createGraphChapter, createManifest, getChapterSuspenseActionType, getCopiedChapterLabel, getEventByType, getEventIndexByType, isSupportedManifest, migrateManifestToLatestVersion, normalize, parseManifest, removeBranchesFromChapter, removeControlFromChapter, removeControlsFromContainers, replacers, toDict, updateChapterSuspenseAction, updateContainerSuspenseAction, updateControlActionEventLegacy, validateChapter };
82
+ export { AnyManifest, Chapter, ChapterBranch, ChapterContainer, ChapterError, ChapterSuspenseActionType, ContainerEvent, ContainerSuspenseActionType, Control, ControlActionType, ControlEvent, ControlEventType, ControlType, DEFAULT_GRAPH_DESIGN, GraphCustomChapter, GraphDesign, GraphEditChapter, GraphEditModeDesign, GraphViewChapter, GraphViewModeDesign, MAX_MANIFEST_VERSION, MIN_MANIFEST_VERSION, Manifest_3_3 as Manifest, type ManifestDataTemplate, ManifestParsingError, Manifest_3_3, Media, Metadata, type ParsedManifest, RectangleSize, addBranchToChapter, addControlToChapter, applyContainerTemplate, canBeEndNode, compareVersions, containersTemplateCreator, copyChapter, createChapter, createChapterBranch, createContainerEvent, createControl, createControlEvent, createDefaultGraphDesign, createGraphChapter, createManifest, getAvailableNameWithIndex, getChapterSuspenseActionType, getCopiedChapterLabel, getEventByType, getEventIndexByType, isSupportedManifest, migrateManifestToLatestVersion, normalize, parseManifest, removeBranchesFromChapter, removeControlFromChapter, removeControlsFromContainers, replacers, toDict, updateChapterSuspenseAction, updateContainerSuspenseAction, updateControlActionEventLegacy, validateChapter };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {v4}from'uuid';var J=Object.defineProperty,$=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var V=(e,t,r)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,o=(e,t)=>{for(var r in t||(t={}))R.call(t,r)&&V(e,r,t[r]);if(M)for(var r of M(t))D.call(t,r)&&V(e,r,t[r]);return e},s=(e,t)=>$(e,j(t));var g=(e,t)=>{var r={};for(var n in e)R.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&M)for(var n of M(e))t.indexOf(n)<0&&D.call(e,n)&&(r[n]=e[n]);return r};var O=(n=>(n[n.NoVideo=0]="NoVideo",n[n.NoEOV=1]="NoEOV",n[n.NoBranches=2]="NoBranches",n))(O||{});var y="3.3",A=/[3-9]{1}\.[3-9]{1}/;var Y=(r=>(r.Choice="Choice",r.TextInput="TextInput",r))(Y||{}),K=(n=>(n.Button="Button",n.Area="Area",n.Text="Text",n))(K||{}),Z=(r=>(r.onClick="onClick",r.onSuspense="onSuspense",r))(Z||{}),q=(l=>(l.openURI="openURI",l.setNextBranch="setNextBranch",l.setWeightlessRandomBranch="setWeightlessRandomBranch",l.setRandomBranch="setRandomBranch",l.setMaxWeightBranch="setMaxWeightBranch",l.setMinWeightBranch="setMinWeightBranch",l.setDefaultBranch="setDefaultBranch",l.continuePlayback="continuePlayback",l.expect="expect",l))(q||{});var w="3.1";var _=(e,t)=>t==null?void 0:t.find(r=>r.type===e),Ve=(e,t)=>t?t.findIndex(r=>r.type===e):-1;var ee=["Button"],te=["Button"],re=1.5,ne=.1,ae=4.48,N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),Ae=(e,t,r,n)=>({id:v4(),type:e,label:t,layoutParams:se(e,n),props:ie(e,r),events:e!=="Text"?[C("onClick","continuePlayback")]:[]}),C=(e,t,r,n)=>{switch(t){case"setNextBranch":return {type:e,action:{type:t,args:{branchId:r,shouldOpenNow:!0}}};case"continuePlayback":return {type:e,action:{type:t,args:{shouldOpenNow:!0}}};case"openURI":return {type:e,action:{type:t,args:{isDetachContainer:!0,shouldOpenNow:!0,uri:n}}}}},oe={Text:0,Button:.3,Area:.35},se=(e,t)=>{let r=e==="Text",n=r?.12:.09,a=.4;if(t!=null&&t.width&&r){let i=t.height*ne*re,p=i*ae,c=Math.ceil(p/t.width);a=Math.min(1,p/t.width),n=i/t.height*c;}return {x:.5,y:oe[e]||0,width:a,height:n,angle:0,innerSizesDependOn:"video"}},ie=(e,t)=>{let r=e==="Text",n=r?"start":"center",a=r?"top":"center";return o({background:{type:"color",color:N.background,alpha:ee.includes(e)?1:0},shape:{border:{width:.005,color:N.border,alpha:te.includes(e)?1:0},type:"rectangle",roundCorners:r?0:.02}},t&&{text:{value:t,gravityHorizontal:n,gravityVertical:a,color:N.text,size:r?.1:.03,alpha:1}})},we=(e,t,r,n)=>{let a=e.containers.find(u=>u.id===t),i=a?a.controls.find(u=>u.id===r):void 0,p=(i==null?void 0:i.events)||[],c=_("onClick",i==null?void 0:i.events),d=c==null?void 0:c.action.args.branchId;n&&(c?p=p.map(u=>{if(u===c){let h=u.action.args,f=g(h,["uri"]);return s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},f),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0,isDetachContainer:n==="openURI"?!1:void 0})})})}return u}):p.push(C("onClick",n)));let l=n!=="setNextBranch"?e.branches.filter(u=>u.id!==d):e.branches;return s(o({},e),{branches:l,containers:e.containers.map(u=>u.id===t?s(o({},u),{controls:u.controls.map(h=>h.id===r?s(o({},h),{events:p}):h)}):u)})};var k=e=>{let t=[];for(let p of e.chapters){let c,d=[];for(let r of p.branches){let n=r,{isDefault:h}=n,m=g(n,["isDefault"]);h&&(c=m.id),d.push(m);}let l,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:h}=i,m=g(i,["fallbackStrategy"]);switch(h){case"await":l=[];break;case"default":l=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:c,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":l=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let f of m.controls)u.push(s(o({},m),{controls:[s(o({},f),{events:f.subtype==="Text"||f.events.length?f.events:[C("onClick","continuePlayback")]})],id:v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}t.push(s(o({},p),{containers:u,events:l,branches:d}));}return e.metadata.version=w,e.metadata.updated=new Date().toISOString(),s(o({},e),{chapters:t})};var L="3.2";var P=e=>{let n=e.metadata,{media:t}=n,r=g(n,["media"]);if(typeof t=="string")throw new Error("Manifest media should be parsed");return {chapters:e.chapters,metadata:s(o({},r),{version:L}),media:t}};var qe=(e="[Untitled]")=>({id:v4(),label:e,order:"simple",branches:[],containers:[],events:[]}),Qe=(e,t,r)=>{let n=1,a=()=>`${e} (${t}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},et=(e,t)=>{var r;return s(o({},e),{label:t,id:v4(),order:e.order==="start"?"simple":e.order,branches:[],containers:e.containers.map(n=>s(o({},n),{id:v4(),controls:n.controls.map(a=>s(o({},a),{id:v4(),events:a.type!=="Text"?[C("onClick","continuePlayback")]:[]})),events:[E("continuePlayback")]})),events:(r=e.events)==null?void 0:r.map(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch"?s(o({},n),{action:s(o({},n.action),{args:s(o({},n.action.args),{branchId:void 0})})}):n)})},tt=e=>{let t=[];if(e.videoId||t.push(0),e.order!=="end"){let r=!e.events||e.events.some(a=>a.type==="onSuspense"&&a.action.type==="setNextBranch"&&!a.action.args.branchId);r&&t.push(1);let n=e.containers.flatMap(a=>a.controls);!n.length&&r?t.push(2):n.some(a=>{var i;return a.type!=="Text"&&!((i=a==null?void 0:a.events)!=null&&i.length)})&&t.push(2);}return t},rt=e=>({id:v4(),chapterId:e}),E=(e,t)=>({type:"onSuspense",action:{type:e,args:{branchId:t,shouldOpenNow:!0}}}),G=e=>e.containers.filter(t=>t.controls.some(r=>r.type==="Area"||r.type==="Button")),ce=(e,t)=>{let r=new Set,n=0;e.containers.forEach(l=>{n=n+l.controls.length,l.controls.forEach(u=>r.add(`${u.layoutParams.x},${u.layoutParams.y}`));},0);let a=6,i=.02,p=.17,c=[],d=0;for(;c.length===0;){let l=d%a+1,u=Math.floor(d/a)*i,h=l%2===0?.5:.05+u,m=t.layoutParams.y+p*Math.round(l/2)+u;r.has([h,m].join())||c.push(h,m),d=d+1;}return c},nt=(e,t)=>{var c;let[r,n]=ce(e,t),a=(c=e.events)==null?void 0:c.find(d=>d.type==="onSuspense");if(!((a==null?void 0:a.action.type)==="setNextBranch"&&(a==null?void 0:a.action.args.branchId))&&t.type!=="Text"&&G(e).length===0){let d={type:"onSuspense",action:{args:{shouldOpenNow:!0,branchId:void 0},type:"setRandomBranch"}};a?a.action=d.action:e.events.push(d);}return s(o({},e),{containers:[...e.containers,{id:v4(),startTime:0,endTime:null,controls:[s(o({},t),{layoutParams:s(o({},t.layoutParams),{x:r,y:n})})],events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}],layout:{type:"Relative"},type:"Choice"}]})},at=(e,t,r)=>{if(!e.containers.find(c=>c.id===r))return e;let a=[],i=G(e),p=e.containers.filter(c=>{var d;return c.id===r&&(c.controls.forEach(l=>{var u;l.id===t&&((u=l.events)!=null&&u.length)&&a.push(...l.events.map(h=>h.action.args.branchId));}),(d=c.events)!=null&&d.length&&a.push(...c.events.map(l=>l.action.args.branchId))),c.id!==r});return s(o({},e),{containers:p,branches:e.branches.filter(c=>!a.includes(c.id)),events:de(e.events,i.length===1)})},de=(e,t=!1)=>t?e.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?e:[]:e,ot=(e,t,r,n)=>{var a;return r?s(o({},e),{containers:e.containers.map(i=>s(o({},i),{controls:i.controls.map(p=>p.id===r?s(o({},p),{events:[C("onClick","setNextBranch",t.id)]}):p)})),branches:[...e.branches,t]}):n?s(o({},e),{containers:e.containers.map(i=>i.id===n?s(o({},i),{events:[E("setNextBranch",t.id)]}):i),branches:[...e.branches,t]}):s(o({},e),{branches:[...e.branches,t],events:(a=e.events)==null?void 0:a.map(i=>i.type==="onSuspense"?s(o({},i),{action:s(o({},i.action),{args:{branchId:t.id,shouldOpenNow:!0}})}):i)})},T=(e,t)=>t.map(r=>r.action.args.branchId&&e.includes(r.action.args.branchId)?s(o({},r),{action:s(o({},r.action),{args:s(o({},r.action.args),{branchId:void 0})})}):r),U=(e,t)=>t.length?s(o({},e),{branches:e.branches.filter(r=>!t.includes(r.id)),containers:e.containers.map(r=>s(o({},r),{controls:r.controls.map(n=>s(o({},n),{events:T(t,n.events)})),events:T(t,r.events)})),events:T(t,e.events)}):e,st=(e,t)=>{var i;let r=e.events||[],n=(i=e.events)==null?void 0:i.find(p=>p.type==="onSuspense"),a=n==null?void 0:n.action.args.branchId;return t&&(n?r=r.map(p=>p.type==="onSuspense"?s(o({},p),{action:s(o({},p.action),{type:t,args:s(o({},p.action.args),{branchId:t==="setNextBranch"?p.action.args.branchId:void 0})})}):p):r=[...r,{type:"onSuspense",action:{type:t,args:{shouldOpenNow:!0}}}]),s(o({},e),{events:r,branches:t!=="setNextBranch"?e.branches.filter(p=>p.id!==a):e.branches})},it=e=>{if(!e.events)return;let t=e.events.find(r=>r.type==="onSuspense");return t==null?void 0:t.action.type},pt=(e,t,r)=>{let n=t.events||[],a=_("onSuspense",t.events),i=a==null?void 0:a.action.args.branchId;r&&(a?n=n.map(d=>d.type==="onSuspense"?s(o({},d),{action:s(o({},d.action),{type:r,args:s(o({},d.action.args),{branchId:r==="setNextBranch"?d.action.args.branchId:void 0})})}):d):n=[...n,{type:"onSuspense",action:{type:r,args:{shouldOpenNow:!0}}}]);let p=r!=="setNextBranch"?e.branches.filter(d=>d.id!==i):e.branches,c=s(o({},t),{events:n});return s(o({},e),{branches:p,containers:e.containers.map(d=>d.id===t.id?c:d)})},ct=(e,t)=>{let r=new Set(t);return e.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},dt=e=>{if(e.order==="end")return !0;if(e.order==="start")return !1;let t=e.containers.some(n=>_("onSuspense",n.events)),r=e.containers.flatMap(n=>n.controls);return !t&&r.length===0};var v=(e=[])=>({edit:{chapters:e},view:{}}),X=(e,[t,r])=>({id:e,x:t,y:r}),ht=Object.freeze({edit:{background:{color:"#0D0F12",grid:{enabled:!0,color:"#474747"}},defaultChapter:{flipTo:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},controls:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},hover:{enabled:!0,borderColor:"#7B68EE"}},chapters:[]},view:{background:{color:"#0D0F12",grid:{enabled:!1,color:"#474747"}},defaultChapter:{header:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},flipTo:{enabled:!1,backgroundColor:"#282A2E",textColor:"#FFFFFF"},controls:{enabled:!1,backgroundColor:"#282A2E",textColor:"#FFFFFF"},hover:{enabled:!0,borderColor:"#2688EB"},watchAgain:{enabled:!0,backgroundColor:"#2688EB",textColor:"#FFFFFF"},preview:{visible:!1,backgroundColor:"#19191A",textColor:"#5D5F61"},goBlind:!1}}});var z=e=>{let t=[],r=[];for(let a of e.chapters){let n=a,{x:i,y:p}=n,c=g(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,l=[],u=c.containers.map(h=>{var m;return s(o({},h),{events:(d?(m=h.events)==null?void 0:m.map(f=>f.type==="onSuspense"?(f.action.args.branchId&&l.push(f.action.args.branchId),E("expect")):f):h.events)||[],controls:h.controls.map(Ce=>{var B=Ce,{subtype:f}=B,F=g(B,["subtype"]);return s(o({},F),{type:f,events:F.events||[C("onClick","continuePlayback")]})})})});t.push(U(s(o({},c),{containers:u,events:a.events||[]}),l)),r.push({id:c.id,x:i,y:p});}return s(o({},e),{chapters:t,graph:v(r),metadata:s(o({},e.metadata),{version:y})})};var le=[{version:"3.0",migrate:k},{version:"3.1",migrate:P},{version:"3.2",migrate:z}],W=e=>le.reduce((t,r)=>t.metadata.version===r.version?r.migrate(t):t,e);var b=(e,t)=>{let r={};for(let n of e)r[t(n)]=n;return r},It=e=>b(e,t=>t.id),I=(e="",t="")=>{let r=e.split("."),n=t.split("."),a=Math.max(r.length,n.length),i=0;for(let p=0;p<a&&!i;p++)r[p]>n[p]?i=1:r[p]<n[p]?i=-1:i=0;return i};var ue=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ue||{}),Ot=e=>{let t;try{t=JSON.parse(e);}catch(p){throw new Error("ManifestParsingFailed")}t.metadata.version!==y&&(t=W(t));let{chapters:r,metadata:n,media:a,graph:i}=t;if(!A.test(n.version))throw new Error("ManifestUnsupportedVersion");return {chapters:b(r,p=>p.id),metadata:n,media:a,graph:{edit:s(o({},i.edit),{chapters:b(i.edit.chapters,p=>p.id)}),view:s(o({},i.view),{chapters:i.view.chapters?b(i.view.chapters,p=>p.id):void 0})}}};function At(e=!1,t="[Untitled]"){let r=new Date().toISOString(),n=v4(),a={chapters:[{branches:[],containers:[],id:n,label:t,order:"start",events:[]}],metadata:{id:v4(),build:0,version:y,initChapterId:n,created:r,updated:r},media:{videos:[]},graph:v([X(n,[0,0])])};return e?JSON.stringify(a):a}var he="3.0.0",fe="3.3.0",wt=e=>{let t=I(e,he);return t===-1?!1:t===0?!0:I(e,fe)!==1};var S={id:"generate_id"},Ut=e=>({id:v4(),name:"Template",chapterType:e.order,template:JSON.stringify(e.containers,(t,r)=>S[t]||r),type:"container",manifestVersion:y});var Ht=(e,t)=>{try{let r=JSON.parse(t.template,(n,a)=>{if(S[n])switch(a){case"generate_id":return v4();default:return a}return a});return s(o({},e),{branches:[],containers:r})}catch(r){return console.error("The following template is broken:",t.id),e}};export{O as ChapterError,Y as ContainerTypes,K as ControlTypes,ht as DEFAULT_GRAPH_DESIGN,y as DEFAULT_MANIFEST_VERSION,q as EventActionTypes,Z as EventTypes,fe as MAX_MANIFEST_VERSION,he as MIN_MANIFEST_VERSION,ue as ManifestParsingError,A as TEST_VERSION_REGEX,ot as addBranchToChapter,nt as addControlToChapter,Ht as applyContainerTemplate,dt as canBeEndNode,I as compareVersions,Ut as containersTemplateCreator,et as copyChapter,qe as createChapter,rt as createChapterBranch,E as createContainerEvent,Ae as createControl,C as createControlEvent,v as createDefaultGraphDesign,X as createGraphChapter,At as createManifest,it as getChapterSuspenseActionType,Qe as getCopiedChapterLabel,_ as getEventByType,Ve as getEventIndexByType,wt as isSupportedManifest,W as migrateManifestToLatestVersion,b as normalize,Ot as parseManifest,U as removeBranchesFromChapter,at as removeControlFromChapter,ct as removeControlsFromContainers,S as replacers,It as toDict,st as updateChapterSuspenseAction,pt as updateContainerSuspenseAction,we as updateControlActionEventLegacy,tt as validateChapter};
1
+ import {v4}from'uuid';var $=Object.defineProperty,J=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var V=(e,t,r)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,o=(e,t)=>{for(var r in t||(t={}))R.call(t,r)&&V(e,r,t[r]);if(M)for(var r of M(t))D.call(t,r)&&V(e,r,t[r]);return e},s=(e,t)=>J(e,j(t));var g=(e,t)=>{var r={};for(var n in e)R.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&M)for(var n of M(e))t.indexOf(n)<0&&D.call(e,n)&&(r[n]=e[n]);return r};var O=(n=>(n[n.NoVideo=0]="NoVideo",n[n.NoEOV=1]="NoEOV",n[n.NoBranches=2]="NoBranches",n))(O||{});var y="3.3",A=/[3-9]{1}\.[3-9]{1}/;var Y=(r=>(r.Choice="Choice",r.TextInput="TextInput",r))(Y||{}),K=(n=>(n.Button="Button",n.Area="Area",n.Text="Text",n))(K||{}),Z=(r=>(r.onClick="onClick",r.onSuspense="onSuspense",r))(Z||{}),q=(l=>(l.openURI="openURI",l.setNextBranch="setNextBranch",l.setWeightlessRandomBranch="setWeightlessRandomBranch",l.setRandomBranch="setRandomBranch",l.setMaxWeightBranch="setMaxWeightBranch",l.setMinWeightBranch="setMinWeightBranch",l.setDefaultBranch="setDefaultBranch",l.continuePlayback="continuePlayback",l.expect="expect",l))(q||{});var w="3.1";var _=(e,t)=>t==null?void 0:t.find(r=>r.type===e),Ve=(e,t)=>t?t.findIndex(r=>r.type===e):-1;var ee=["Button"],te=["Button"],re=1.5,ne=.1,ae=4.48,N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),Ae=(e,t,r,n)=>({id:v4(),type:e,label:t,layoutParams:se(e,n),props:ie(e,r),events:e!=="Text"?[C("onClick","continuePlayback")]:[]}),C=(e,t,r,n)=>{switch(t){case"setNextBranch":return {type:e,action:{type:t,args:{branchId:r,shouldOpenNow:!0}}};case"continuePlayback":return {type:e,action:{type:t,args:{shouldOpenNow:!0}}};case"openURI":return {type:e,action:{type:t,args:{isDetachContainer:!0,shouldOpenNow:!0,uri:n}}}}},oe={Text:0,Button:.3,Area:.35},se=(e,t)=>{let r=e==="Text",n=r?.12:.09,a=.4;if(t!=null&&t.width&&r){let i=t.height*ne*re,p=i*ae,c=Math.ceil(p/t.width);a=Math.min(1,p/t.width),n=i/t.height*c;}return {x:.5,y:oe[e]||0,width:a,height:n,angle:0,innerSizesDependOn:"video"}},ie=(e,t)=>{let r=e==="Text",n=r?"start":"center",a=r?"top":"center";return o({background:{type:"color",color:N.background,alpha:ee.includes(e)?1:0},shape:{border:{width:.005,color:N.border,alpha:te.includes(e)?1:0},type:"rectangle",roundCorners:r?0:.02}},t&&{text:{value:t,gravityHorizontal:n,gravityVertical:a,color:N.text,size:r?.1:.03,alpha:1}})},we=(e,t,r,n)=>{let a=e.containers.find(u=>u.id===t),i=a?a.controls.find(u=>u.id===r):void 0,p=(i==null?void 0:i.events)||[],c=_("onClick",i==null?void 0:i.events),d=c==null?void 0:c.action.args.branchId;n&&(c?p=p.map(u=>{if(u===c){let h=u.action.args,f=g(h,["uri"]);return s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},f),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0,isDetachContainer:n==="openURI"?!1:void 0})})})}return u}):p.push(C("onClick",n)));let l=n!=="setNextBranch"?e.branches.filter(u=>u.id!==d):e.branches;return s(o({},e),{branches:l,containers:e.containers.map(u=>u.id===t?s(o({},u),{controls:u.controls.map(h=>h.id===r?s(o({},h),{events:p}):h)}):u)})};var k=e=>{let t=[];for(let p of e.chapters){let c,d=[];for(let r of p.branches){let n=r,{isDefault:h}=n,m=g(n,["isDefault"]);h&&(c=m.id),d.push(m);}let l,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:h}=i,m=g(i,["fallbackStrategy"]);switch(h){case"await":l=[];break;case"default":l=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:c,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":l=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let f of m.controls)u.push(s(o({},m),{controls:[s(o({},f),{events:f.subtype==="Text"||f.events.length?f.events:[C("onClick","continuePlayback")]})],id:v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}t.push(s(o({},p),{containers:u,events:l,branches:d}));}return e.metadata.version=w,e.metadata.updated=new Date().toISOString(),s(o({},e),{chapters:t})};var L="3.2";var P=e=>{let n=e.metadata,{media:t}=n,r=g(n,["media"]);if(typeof t=="string")throw new Error("Manifest media should be parsed");return {chapters:e.chapters,metadata:s(o({},r),{version:L}),media:t}};var qe=(e="[Untitled]")=>({id:v4(),label:e,order:"simple",branches:[],containers:[],events:[]}),Qe=(e,t,r)=>{let n=1,a=()=>`${e} (${t}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},et=(e,t)=>{let r=e.size+1,n=()=>`${t} [${r}]`,a=n();for(;e.has(a);)r+=1,a=n();return a},tt=(e,t)=>{var r;return s(o({},e),{label:t,id:v4(),order:e.order==="start"?"simple":e.order,branches:[],containers:e.containers.map(n=>s(o({},n),{id:v4(),controls:n.controls.map(a=>s(o({},a),{id:v4(),events:a.type!=="Text"?[C("onClick","continuePlayback")]:[]})),events:[E("continuePlayback")]})),events:(r=e.events)==null?void 0:r.map(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch"?s(o({},n),{action:s(o({},n.action),{args:s(o({},n.action.args),{branchId:void 0})})}):n)})},rt=e=>{let t=[];if(e.videoId||t.push(0),e.order!=="end"){let r=!e.events||e.events.some(a=>a.type==="onSuspense"&&a.action.type==="setNextBranch"&&!a.action.args.branchId);r&&t.push(1);let n=e.containers.flatMap(a=>a.controls);!n.length&&r?t.push(2):n.some(a=>{var i;return a.type!=="Text"&&!((i=a==null?void 0:a.events)!=null&&i.length)})&&t.push(2);}return t},nt=e=>({id:v4(),chapterId:e}),E=(e,t)=>({type:"onSuspense",action:{type:e,args:{branchId:t,shouldOpenNow:!0}}}),G=e=>e.containers.filter(t=>t.controls.some(r=>r.type==="Area"||r.type==="Button")),ce=(e,t)=>{let r=new Set,n=0;e.containers.forEach(l=>{n=n+l.controls.length,l.controls.forEach(u=>r.add(`${u.layoutParams.x},${u.layoutParams.y}`));},0);let a=6,i=.02,p=.17,c=[],d=0;for(;c.length===0;){let l=d%a+1,u=Math.floor(d/a)*i,h=l%2===0?.5:.05+u,m=t.layoutParams.y+p*Math.round(l/2)+u;r.has([h,m].join())||c.push(h,m),d=d+1;}return c},at=(e,t)=>{var c;let[r,n]=ce(e,t),a=(c=e.events)==null?void 0:c.find(d=>d.type==="onSuspense");if(!((a==null?void 0:a.action.type)==="setNextBranch"&&(a==null?void 0:a.action.args.branchId))&&t.type!=="Text"&&G(e).length===0){let d={type:"onSuspense",action:{args:{shouldOpenNow:!0,branchId:void 0},type:"setRandomBranch"}};a?a.action=d.action:e.events.push(d);}return s(o({},e),{containers:[...e.containers,{id:v4(),startTime:0,endTime:null,controls:[s(o({},t),{layoutParams:s(o({},t.layoutParams),{x:r,y:n})})],events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}],layout:{type:"Relative"},type:"Choice"}]})},ot=(e,t,r)=>{if(!e.containers.find(c=>c.id===r))return e;let a=[],i=G(e),p=e.containers.filter(c=>{var d;return c.id===r&&(c.controls.forEach(l=>{var u;l.id===t&&((u=l.events)!=null&&u.length)&&a.push(...l.events.map(h=>h.action.args.branchId));}),(d=c.events)!=null&&d.length&&a.push(...c.events.map(l=>l.action.args.branchId))),c.id!==r});return s(o({},e),{containers:p,branches:e.branches.filter(c=>!a.includes(c.id)),events:de(e.events,i.length===1)})},de=(e,t=!1)=>t?e.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?e:[]:e,st=(e,t,r,n)=>{var a;return r?s(o({},e),{containers:e.containers.map(i=>s(o({},i),{controls:i.controls.map(p=>p.id===r?s(o({},p),{events:[C("onClick","setNextBranch",t.id)]}):p)})),branches:[...e.branches,t]}):n?s(o({},e),{containers:e.containers.map(i=>i.id===n?s(o({},i),{events:[E("setNextBranch",t.id)]}):i),branches:[...e.branches,t]}):s(o({},e),{branches:[...e.branches,t],events:(a=e.events)==null?void 0:a.map(i=>i.type==="onSuspense"?s(o({},i),{action:s(o({},i.action),{args:{branchId:t.id,shouldOpenNow:!0}})}):i)})},T=(e,t)=>t.map(r=>r.action.args.branchId&&e.includes(r.action.args.branchId)?s(o({},r),{action:s(o({},r.action),{args:s(o({},r.action.args),{branchId:void 0})})}):r),U=(e,t)=>t.length?s(o({},e),{branches:e.branches.filter(r=>!t.includes(r.id)),containers:e.containers.map(r=>s(o({},r),{controls:r.controls.map(n=>s(o({},n),{events:T(t,n.events)})),events:T(t,r.events)})),events:T(t,e.events)}):e,it=(e,t)=>{var i;let r=e.events||[],n=(i=e.events)==null?void 0:i.find(p=>p.type==="onSuspense"),a=n==null?void 0:n.action.args.branchId;return t&&(n?r=r.map(p=>p.type==="onSuspense"?s(o({},p),{action:s(o({},p.action),{type:t,args:s(o({},p.action.args),{branchId:t==="setNextBranch"?p.action.args.branchId:void 0})})}):p):r=[...r,{type:"onSuspense",action:{type:t,args:{shouldOpenNow:!0}}}]),s(o({},e),{events:r,branches:t!=="setNextBranch"?e.branches.filter(p=>p.id!==a):e.branches})},pt=e=>{if(!e.events)return;let t=e.events.find(r=>r.type==="onSuspense");return t==null?void 0:t.action.type},ct=(e,t,r)=>{let n=t.events||[],a=_("onSuspense",t.events),i=a==null?void 0:a.action.args.branchId;r&&(a?n=n.map(d=>d.type==="onSuspense"?s(o({},d),{action:s(o({},d.action),{type:r,args:s(o({},d.action.args),{branchId:r==="setNextBranch"?d.action.args.branchId:void 0})})}):d):n=[...n,{type:"onSuspense",action:{type:r,args:{shouldOpenNow:!0}}}]);let p=r!=="setNextBranch"?e.branches.filter(d=>d.id!==i):e.branches,c=s(o({},t),{events:n});return s(o({},e),{branches:p,containers:e.containers.map(d=>d.id===t.id?c:d)})},dt=(e,t)=>{let r=new Set(t);return e.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},lt=e=>{if(e.order==="end")return !0;if(e.order==="start")return !1;let t=e.containers.some(n=>_("onSuspense",n.events)),r=e.containers.flatMap(n=>n.controls);return !t&&r.length===0};var v=(e=[])=>({edit:{chapters:e},view:{}}),z=(e,[t,r])=>({id:e,x:t,y:r}),ft=Object.freeze({edit:{background:{color:"#0D0F12",grid:{enabled:!0,color:"#474747"}},defaultChapter:{flipTo:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},controls:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},hover:{enabled:!0,borderColor:"#7B68EE"}},chapters:[]},view:{background:{color:"#0D0F12",grid:{enabled:!1,color:"#474747"}},defaultChapter:{header:{enabled:!0,backgroundColor:"#282A2E",textColor:"#FFFFFF"},flipTo:{enabled:!1,backgroundColor:"#282A2E",textColor:"#FFFFFF"},controls:{enabled:!1,backgroundColor:"#282A2E",textColor:"#FFFFFF"},hover:{enabled:!0,borderColor:"#2688EB"},watchAgain:{enabled:!0,backgroundColor:"#2688EB",textColor:"#FFFFFF"},preview:{visible:!1,backgroundColor:"#19191A",textColor:"#5D5F61"},goBlind:!1}}});var W=e=>{let t=[],r=[];for(let a of e.chapters){let n=a,{x:i,y:p}=n,c=g(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,l=[],u=c.containers.map(h=>{var m;return s(o({},h),{events:(d?(m=h.events)==null?void 0:m.map(f=>f.type==="onSuspense"?(f.action.args.branchId&&l.push(f.action.args.branchId),E("expect")):f):h.events)||[],controls:h.controls.map(Ce=>{var B=Ce,{subtype:f}=B,F=g(B,["subtype"]);return s(o({},F),{type:f,events:F.events||[C("onClick","continuePlayback")]})})})});t.push(U(s(o({},c),{containers:u,events:a.events||[]}),l)),r.push({id:c.id,x:i,y:p});}return s(o({},e),{chapters:t,graph:v(r),metadata:s(o({},e.metadata),{version:y})})};var le=[{version:"3.0",migrate:k},{version:"3.1",migrate:P},{version:"3.2",migrate:W}],X=e=>le.reduce((t,r)=>t.metadata.version===r.version?r.migrate(t):t,e);var b=(e,t)=>{let r={};for(let n of e)r[t(n)]=n;return r},St=e=>b(e,t=>t.id),I=(e="",t="")=>{let r=e.split("."),n=t.split("."),a=Math.max(r.length,n.length),i=0;for(let p=0;p<a&&!i;p++)r[p]>n[p]?i=1:r[p]<n[p]?i=-1:i=0;return i};var ue=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ue||{}),At=e=>{let t;try{t=JSON.parse(e);}catch(p){throw new Error("ManifestParsingFailed")}t.metadata.version!==y&&(t=X(t));let{chapters:r,metadata:n,media:a,graph:i}=t;if(!A.test(n.version))throw new Error("ManifestUnsupportedVersion");return {chapters:b(r,p=>p.id),metadata:n,media:a,graph:{edit:s(o({},i.edit),{chapters:b(i.edit.chapters,p=>p.id)}),view:s(o({},i.view),{chapters:i.view.chapters?b(i.view.chapters,p=>p.id):void 0})}}};function wt(e=!1,t="[Untitled]"){let r=new Date().toISOString(),n=v4(),a={chapters:[{branches:[],containers:[],id:n,label:t,order:"start",events:[]}],metadata:{id:v4(),build:0,version:y,initChapterId:n,created:r,updated:r},media:{videos:[]},graph:v([z(n,[0,0])])};return e?JSON.stringify(a):a}var he="3.0.0",fe="3.3.0",kt=e=>{let t=I(e,he);return t===-1?!1:t===0?!0:I(e,fe)!==1};var S={id:"generate_id"},zt=e=>({id:v4(),name:"Template",chapterType:e.order,template:JSON.stringify(e.containers,(t,r)=>S[t]||r),type:"container",manifestVersion:y});var $t=(e,t)=>{try{let r=JSON.parse(t.template,(n,a)=>{if(S[n])switch(a){case"generate_id":return v4();default:return a}return a});return s(o({},e),{branches:[],containers:r})}catch(r){return console.error("The following template is broken:",t.id),e}};export{O as ChapterError,Y as ContainerTypes,K as ControlTypes,ft as DEFAULT_GRAPH_DESIGN,y as DEFAULT_MANIFEST_VERSION,q as EventActionTypes,Z as EventTypes,fe as MAX_MANIFEST_VERSION,he as MIN_MANIFEST_VERSION,ue as ManifestParsingError,A as TEST_VERSION_REGEX,st as addBranchToChapter,at as addControlToChapter,$t as applyContainerTemplate,lt as canBeEndNode,I as compareVersions,zt as containersTemplateCreator,tt as copyChapter,qe as createChapter,nt as createChapterBranch,E as createContainerEvent,Ae as createControl,C as createControlEvent,v as createDefaultGraphDesign,z as createGraphChapter,wt as createManifest,et as getAvailableNameWithIndex,pt as getChapterSuspenseActionType,Qe as getCopiedChapterLabel,_ as getEventByType,Ve as getEventIndexByType,kt as isSupportedManifest,X as migrateManifestToLatestVersion,b as normalize,At as parseManifest,U as removeBranchesFromChapter,ot as removeControlFromChapter,dt as removeControlsFromContainers,S as replacers,St as toDict,it as updateChapterSuspenseAction,ct as updateContainerSuspenseAction,we as updateControlActionEventLegacy,rt as validateChapter};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@interactiveplatform/movika-manifest",
3
3
  "author": "interactiveplatform",
4
- "version": "1.0.2",
4
+ "version": "1.0.3",
5
5
  "license": "ISC",
6
6
  "type": "module",
7
7
  "main": "./dist/index.cjs",