@interactiveplatform/movika-manifest 1.0.0-dev.1 → 1.0.0
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 +0 -9
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/mocks/package.json +4 -0
- package/package.json +6 -4
package/README.md
CHANGED
@@ -5,15 +5,6 @@ Provides constants, types, utilities.
|
|
5
5
|
## Basic usage
|
6
6
|
|
7
7
|
```typescript
|
8
|
-
// Importing depending on tsconfig 'bundleResolution' value
|
9
|
-
|
10
|
-
// bundleResolution is 'Bundler'
|
11
8
|
import { ChapterError } from "@interactiveplatform/movika-manifest";
|
12
9
|
import { MOCKED_CONTROL } from "@interactiveplatform/movika-manifest/mocks";
|
13
|
-
|
14
|
-
// bundleResolution is 'node'
|
15
|
-
import { ChapterError } from "@interactiveplatform/movika-manifest/dist";
|
16
|
-
import { MOCKED_CONTROL } from "@interactiveplatform/movika-manifest/dist/mocks";
|
17
|
-
|
18
|
-
// and etc..
|
19
10
|
```
|
package/dist/index.cjs
CHANGED
@@ -1 +1 @@
|
|
1
|
-
'use strict';var uuid=require('uuid');var $=Object.defineProperty,H=Object.defineProperties;var Y=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var R=(t,e,r)=>e in t?$(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,o=(t,e)=>{for(var r in e||(e={}))O.call(e,r)&&R(t,r,e[r]);if(M)for(var r of M(e))D.call(e,r)&&R(t,r,e[r]);return t},s=(t,e)=>H(t,Y(e));var C=(t,e)=>{var r={};for(var n in t)O.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&M)for(var n of M(t))e.indexOf(n)<0&&D.call(t,n)&&(r[n]=t[n]);return r};var w=(n=>(n[n.NoVideo=0]="NoVideo",n[n.NoEOV=1]="NoEOV",n[n.NoBranches=2]="NoBranches",n))(w||{});var y="3.3",k=/[3-9]{1}\.[3-9]{1}/;var j=(r=>(r.Choice="Choice",r.TextInput="TextInput",r))(j||{}),K=(n=>(n.Button="Button",n.Area="Area",n.Text="Text",n))(K||{}),q=(r=>(r.onClick="onClick",r.onSuspense="onSuspense",r))(q||{}),Q=(c=>(c.openURI="openURI",c.setNextBranch="setNextBranch",c.setWeightlessRandomBranch="setWeightlessRandomBranch",c.setRandomBranch="setRandomBranch",c.setMaxWeightBranch="setMaxWeightBranch",c.setMinWeightBranch="setMinWeightBranch",c.setDefaultBranch="setDefaultBranch",c.continuePlayback="continuePlayback",c.expect="expect",c))(Q||{});var A="3.1";var _=(t,e)=>e==null?void 0:e.find(r=>r.type===t),It=(t,e)=>e?e.findIndex(r=>r.type===t):-1;var tt=["Button"],et=["Button"],N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),Ot=(t,e,r)=>({id:uuid.v4(),type:t,label:e,layoutParams:nt(t),props:at(t,r),events:t!=="Text"?[g("onClick","continuePlayback")]:[]}),g=(t,e,r)=>{switch(e){case"setNextBranch":return {type:t,action:{type:e,args:{branchId:r,shouldOpenNow:!0}}};case"continuePlayback":return {type:t,action:{type:e,args:{shouldOpenNow:!0}}};case"openURI":return {type:t,action:{type:e,args:{shouldOpenNow:!0,uri:r}}}}},rt={Text:0,Button:.3,Area:.35},nt=t=>{let e=t==="Text";return {x:.5,y:rt[t]||0,width:.4,height:e?.12:.09,angle:0,innerSizesDependOn:"video"}},at=(t,e)=>{let r=t==="Text",n=r?"start":"center",a=r?"top":"center";return o({background:{type:"color",color:N.background,alpha:tt.includes(t)?1:0},shape:{border:{width:.005,color:N.border,alpha:et.includes(t)?1:0},type:"rectangle",roundCorners:r?0:.02}},e&&{text:{value:e,gravityHorizontal:n,gravityVertical:a,color:N.text,size:r?.1:.03,alpha:1}})},Dt=(t,e,r,n)=>{var c;let a=(c=t.containers.find(u=>u.id===e))==null?void 0:c.controls.find(u=>u.id===r),i=(a==null?void 0:a.events)||[],p=_("onClick",a==null?void 0:a.events),m=p==null?void 0:p.action.args.branchId;(n==="setNextBranch"||n==="continuePlayback")&&(p?i=i.map(u=>u===p?s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},u.action.args),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0})})}):u):i.push(g("onClick",n)));let d=n!=="setNextBranch"?t.branches.filter(u=>u.id!==m):t.branches;return s(o({},t),{branches:d,containers:t.containers.map(u=>u.id===e?s(o({},u),{controls:u.controls.map(h=>h.id===r?s(o({},h),{events:i}):h)}):u)})};var F=t=>{let e=[];for(let p of t.chapters){let m,d=[];for(let r of p.branches){let n=r,{isDefault:h}=n,l=C(n,["isDefault"]);h&&(m=l.id),d.push(l);}let c,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:h}=i,l=C(i,["fallbackStrategy"]);switch(h){case"await":c=[];break;case"default":c=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:m,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":c=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let f of l.controls)u.push(s(o({},l),{controls:[s(o({},f),{events:f.subtype==="Text"||f.events.length?f.events:[g("onClick","continuePlayback")]})],id:uuid.v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}e.push(s(o({},p),{containers:u,events:c,branches:d}));}return t.metadata.version=A,t.metadata.updated=new Date().toISOString(),s(o({},t),{chapters:e})};var P="3.2";var L=t=>{let n=t.metadata,{media:e}=n,r=C(n,["media"]);if(typeof e=="string")throw new Error("Manifest media should be parsed");return {chapters:t.chapters,metadata:s(o({},r),{version:P}),media:e}};var jt=(t="[Untitled]")=>({id:uuid.v4(),label:t,order:"simple",branches:[],containers:[],events:[]}),Kt=(t,e,r)=>{let n=1,a=()=>`${t} (${e}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},qt=(t,e)=>{var r;return s(o({},t),{label:e,id:uuid.v4(),order:t.order==="start"?"simple":t.order,branches:[],containers:t.containers.map(n=>s(o({},n),{id:uuid.v4(),controls:n.controls.map(a=>s(o({},a),{id:uuid.v4(),events:a.type!=="Text"?[g("onClick","continuePlayback")]:[]})),events:[v("continuePlayback")]})),events:(r=t.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)})},Qt=t=>{let e=[];if(t.videoId||e.push(0),t.order!=="end"){let r=!t.events||t.events.some(a=>a.type==="onSuspense"&&a.action.type==="setNextBranch"&&!a.action.args.branchId);r&&e.push(1);let n=t.containers.flatMap(a=>a.controls);!n.length&&r?e.push(2):n.some(a=>{var i;return a.type!=="Text"&&!((i=a==null?void 0:a.events)!=null&&i.length)})&&e.push(2);}return e},Zt=t=>({id:uuid.v4(),chapterId:t}),v=(t,e)=>({type:"onSuspense",action:{type:t,args:{branchId:e,shouldOpenNow:!0}}}),G=t=>t.containers.filter(e=>e.controls.some(r=>r.type==="Area"||r.type==="Button")),st=(t,e)=>{let r=new Set,n=0;t.containers.forEach(c=>{n=n+c.controls.length,c.controls.forEach(u=>r.add(`${u.layoutParams.x},${u.layoutParams.y}`));},0);let a=6,i=.02,p=.17,m=[],d=0;for(;m.length===0;){let c=d%a+1,u=Math.floor(d/a)*i,h=c%2===0?.5:.05+u,l=e.layoutParams.y+p*Math.round(c/2)+u;r.has([h,l].join())||m.push(h,l),d=d+1;}return m},te=(t,e)=>{var m;let[r,n]=st(t,e),a=(m=t.events)==null?void 0:m.find(d=>d.type==="onSuspense");if(!((a==null?void 0:a.action.type)==="setNextBranch"&&(a==null?void 0:a.action.args.branchId))&&e.type!=="Text"&&G(t).length===0){let d={type:"onSuspense",action:{args:{shouldOpenNow:!0,branchId:void 0},type:"setRandomBranch"}};a?a.action=d.action:t.events.push(d);}return s(o({},t),{containers:[...t.containers,{id:uuid.v4(),startTime:0,endTime:null,controls:[s(o({},e),{layoutParams:s(o({},e.layoutParams),{x:r,y:n})})],events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}],layout:{type:"Relative"},type:"Choice"}]})},ee=(t,e,r)=>{if(!t.containers.find(m=>m.id===r))return t;let a=[],i=G(t),p=t.containers.filter(m=>{var d;return m.id===r&&(m.controls.forEach(c=>{var u;c.id===e&&((u=c.events)!=null&&u.length)&&a.push(...c.events.map(h=>h.action.args.branchId));}),(d=m.events)!=null&&d.length&&a.push(...m.events.map(c=>c.action.args.branchId))),m.id!==r});return s(o({},t),{containers:p,branches:t.branches.filter(m=>!a.includes(m.id)),events:it(t.events,i.length===1)})},it=(t,e=!1)=>e?t.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?t:[]:t,re=(t,e,r,n)=>{var a;return r?s(o({},t),{containers:t.containers.map(i=>s(o({},i),{controls:i.controls.map(p=>p.id===r?s(o({},p),{events:[g("onClick","setNextBranch",e.id)]}):p)})),branches:[...t.branches,e]}):n?s(o({},t),{containers:t.containers.map(i=>i.id===n?s(o({},i),{events:[v("setNextBranch",e.id)]}):i),branches:[...t.branches,e]}):s(o({},t),{branches:[...t.branches,e],events:(a=t.events)==null?void 0:a.map(i=>i.type==="onSuspense"?s(o({},i),{action:s(o({},i.action),{args:{branchId:e.id,shouldOpenNow:!0}})}):i)})},S=(t,e)=>e.map(r=>r.action.args.branchId&&t.includes(r.action.args.branchId)?s(o({},r),{action:s(o({},r.action),{args:s(o({},r.action.args),{branchId:void 0})})}):r),U=(t,e)=>e.length?s(o({},t),{branches:t.branches.filter(r=>!e.includes(r.id)),containers:t.containers.map(r=>s(o({},r),{controls:r.controls.map(n=>s(o({},n),{events:S(e,n.events)})),events:S(e,r.events)})),events:S(e,t.events)}):t,ne=(t,e)=>{var i;let r=t.events||[],n=(i=t.events)==null?void 0:i.find(p=>p.type==="onSuspense"),a=n==null?void 0:n.action.args.branchId;return e&&(n?r=r.map(p=>p.type==="onSuspense"?s(o({},p),{action:s(o({},p.action),{type:e,args:s(o({},p.action.args),{branchId:e==="setNextBranch"?p.action.args.branchId:void 0})})}):p):r=[...r,{type:"onSuspense",action:{type:e,args:{shouldOpenNow:!0}}}]),s(o({},t),{events:r,branches:e!=="setNextBranch"?t.branches.filter(p=>p.id!==a):t.branches})},ae=t=>{if(!t.events)return;let e=t.events.find(r=>r.type==="onSuspense");return e==null?void 0:e.action.type},oe=(t,e,r)=>{let n=e.events||[],a=_("onSuspense",e.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"?t.branches.filter(d=>d.id!==i):t.branches,m=s(o({},e),{events:n});return s(o({},t),{branches:p,containers:t.containers.map(d=>d.id===e.id?m:d)})},se=(t,e)=>{let r=new Set(e);return t.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},ie=t=>{if(t.order==="end")return !0;if(t.order==="start")return !1;let e=t.containers.some(n=>_("onSuspense",n.events)),r=t.containers.flatMap(n=>n.controls);return !e&&r.length===0};var E=(t=[])=>({edit:{chapters:t},view:{}}),z=(t,[e,r])=>({id:t,x:e,y:r});var W=t=>{let e=[],r=[];for(let a of t.chapters){let n=a,{x:i,y:p}=n,m=C(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,c=[],u=m.containers.map(h=>{var l;return s(o({},h),{events:(d?(l=h.events)==null?void 0:l.map(f=>f.type==="onSuspense"?(f.action.args.branchId&&c.push(f.action.args.branchId),v("expect")):f):h.events)||[],controls:h.controls.map(lt=>{var V=lt,{subtype:f}=V,B=C(V,["subtype"]);return s(o({},B),{type:f,events:B.events||[g("onClick","continuePlayback")]})})})});e.push(U(s(o({},m),{containers:u,events:a.events||[]}),c)),r.push({id:m.id,x:i,y:p});}return s(o({},t),{chapters:e,graph:E(r),metadata:s(o({},t.metadata),{version:y})})};var pt=[{version:"3.0",migrate:F},{version:"3.1",migrate:L},{version:"3.2",migrate:W}],J=t=>pt.reduce((e,r)=>e.metadata.version===r.version?r.migrate(e):e,t);var b=(t,e)=>{let r={};for(let n of t)r[e(n)]=n;return r},ve=t=>b(t,e=>e.id),T=(t="",e="")=>{let r=t.split("."),n=e.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 ct=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ct||{}),Ve=t=>{let e;try{e=JSON.parse(t);}catch(p){throw new Error("ManifestParsingFailed")}e.metadata.version!==y&&(e=J(e));let{chapters:r,metadata:n,media:a,graph:i}=e;if(!k.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 Re(t=!1,e="[Untitled]"){let r=new Date().toISOString(),n=uuid.v4(),a={chapters:[{branches:[],containers:[],id:n,label:e,order:"start",events:[]}],metadata:{id:uuid.v4(),build:0,version:y,initChapterId:n,created:r,updated:r},media:{videos:[]},graph:E([z(n,[0,0])])};return t?JSON.stringify(a):a}var dt="3.0.0",ut="3.3.0",Oe=t=>{let e=T(t,dt);return e===-1?!1:e===0?!0:T(t,ut)!==1};var I={id:"generate_id"},Fe=t=>({id:uuid.v4(),name:"Template",chapterType:t.order,template:JSON.stringify(t.containers,(e,r)=>I[e]||r),type:"container",manifestVersion:y});var Ue=(t,e)=>{try{let r=JSON.parse(e.template,(n,a)=>{if(I[n])switch(a){case"generate_id":return uuid.v4();default:return a}return a});return s(o({},t),{branches:[],containers:r})}catch(r){return console.error("The following template is broken:",e.id),t}};exports.ChapterError=w;exports.ContainerTypes=j;exports.ControlTypes=K;exports.DEFAULT_MANIFEST_VERSION=y;exports.EventActionTypes=Q;exports.EventTypes=q;exports.MAX_MANIFEST_VERSION=ut;exports.MIN_MANIFEST_VERSION=dt;exports.ManifestParsingError=ct;exports.TEST_VERSION_REGEX=k;exports.addBranchToChapter=re;exports.addControlToChapter=te;exports.applyContainerTemplate=Ue;exports.canBeEndNode=ie;exports.compareVersions=T;exports.containersTemplateCreator=Fe;exports.copyChapter=qt;exports.createChapter=jt;exports.createChapterBranch=Zt;exports.createContainerEvent=v;exports.createControl=Ot;exports.createControlEvent=g;exports.createDefaultGraphDesign=E;exports.createGraphChapter=z;exports.createManifest=Re;exports.getChapterSuspenseActionType=ae;exports.getCopiedChapterLabel=Kt;exports.getEventByType=_;exports.getEventIndexByType=It;exports.isSupportedManifest=Oe;exports.migrateManifestToLatestVersion=J;exports.normalize=b;exports.parseManifest=Ve;exports.removeBranchesFromChapter=U;exports.removeControlFromChapter=ee;exports.removeControlsFromContainers=se;exports.replacers=I;exports.toDict=ve;exports.updateChapterSuspenseAction=ne;exports.updateContainerSuspenseAction=oe;exports.updateControlActionEventLegacy=Dt;exports.validateChapter=Qt;
|
1
|
+
'use strict';var uuid=require('uuid');var $=Object.defineProperty,H=Object.defineProperties;var Y=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var D=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var R=(t,e,r)=>e in t?$(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,o=(t,e)=>{for(var r in e||(e={}))D.call(e,r)&&R(t,r,e[r]);if(M)for(var r of M(e))O.call(e,r)&&R(t,r,e[r]);return t},s=(t,e)=>H(t,Y(e));var g=(t,e)=>{var r={};for(var n in t)D.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&M)for(var n of M(t))e.indexOf(n)<0&&O.call(t,n)&&(r[n]=t[n]);return r};var w=(n=>(n[n.NoVideo=0]="NoVideo",n[n.NoEOV=1]="NoEOV",n[n.NoBranches=2]="NoBranches",n))(w||{});var y="3.3",A=/[3-9]{1}\.[3-9]{1}/;var j=(r=>(r.Choice="Choice",r.TextInput="TextInput",r))(j||{}),K=(n=>(n.Button="Button",n.Area="Area",n.Text="Text",n))(K||{}),q=(r=>(r.onClick="onClick",r.onSuspense="onSuspense",r))(q||{}),Q=(c=>(c.openURI="openURI",c.setNextBranch="setNextBranch",c.setWeightlessRandomBranch="setWeightlessRandomBranch",c.setRandomBranch="setRandomBranch",c.setMaxWeightBranch="setMaxWeightBranch",c.setMinWeightBranch="setMinWeightBranch",c.setDefaultBranch="setDefaultBranch",c.continuePlayback="continuePlayback",c.expect="expect",c))(Q||{});var F="3.1";var _=(t,e)=>e==null?void 0:e.find(r=>r.type===t),It=(t,e)=>e?e.findIndex(r=>r.type===t):-1;var tt=["Button"],et=["Button"],N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),Dt=(t,e,r)=>({id:uuid.v4(),type:t,label:e,layoutParams:nt(t),props:at(t,r),events:t!=="Text"?[C("onClick","continuePlayback")]:[]}),C=(t,e,r,n)=>{switch(e){case"setNextBranch":return {type:t,action:{type:e,args:{branchId:r,shouldOpenNow:!0}}};case"continuePlayback":return {type:t,action:{type:e,args:{shouldOpenNow:!0}}};case"openURI":return {type:t,action:{type:e,args:{isDetachContainer:!0,shouldOpenNow:!0,uri:n}}}}},rt={Text:0,Button:.3,Area:.35},nt=t=>{let e=t==="Text";return {x:.5,y:rt[t]||0,width:.4,height:e?.12:.09,angle:0,innerSizesDependOn:"video"}},at=(t,e)=>{let r=t==="Text",n=r?"start":"center",a=r?"top":"center";return o({background:{type:"color",color:N.background,alpha:tt.includes(t)?1:0},shape:{border:{width:.005,color:N.border,alpha:et.includes(t)?1:0},type:"rectangle",roundCorners:r?0:.02}},e&&{text:{value:e,gravityHorizontal:n,gravityVertical:a,color:N.text,size:r?.1:.03,alpha:1}})},Ot=(t,e,r,n)=>{var c;let a=(c=t.containers.find(u=>u.id===e))==null?void 0:c.controls.find(u=>u.id===r),i=(a==null?void 0:a.events)||[],p=_("onClick",a==null?void 0:a.events),h=p==null?void 0:p.action.args.branchId;n&&(p?i=i.map(u=>{if(u===p){let m=u.action.args,l=g(m,["uri"]);return s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},l),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0,isDetachContainer:n==="openURI"?!1:void 0})})})}return u}):i.push(C("onClick",n)));let d=n!=="setNextBranch"?t.branches.filter(u=>u.id!==h):t.branches;return s(o({},t),{branches:d,containers:t.containers.map(u=>u.id===e?s(o({},u),{controls:u.controls.map(m=>m.id===r?s(o({},m),{events:i}):m)}):u)})};var k=t=>{let e=[];for(let p of t.chapters){let h,d=[];for(let r of p.branches){let n=r,{isDefault:m}=n,f=g(n,["isDefault"]);m&&(h=f.id),d.push(f);}let c,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:m}=i,f=g(i,["fallbackStrategy"]);switch(m){case"await":c=[];break;case"default":c=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:h,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":c=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let l of f.controls)u.push(s(o({},f),{controls:[s(o({},l),{events:l.subtype==="Text"||l.events.length?l.events:[C("onClick","continuePlayback")]})],id:uuid.v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}e.push(s(o({},p),{containers:u,events:c,branches:d}));}return t.metadata.version=F,t.metadata.updated=new Date().toISOString(),s(o({},t),{chapters:e})};var P="3.2";var L=t=>{let n=t.metadata,{media:e}=n,r=g(n,["media"]);if(typeof e=="string")throw new Error("Manifest media should be parsed");return {chapters:t.chapters,metadata:s(o({},r),{version:P}),media:e}};var jt=(t="[Untitled]")=>({id:uuid.v4(),label:t,order:"simple",branches:[],containers:[],events:[]}),Kt=(t,e,r)=>{let n=1,a=()=>`${t} (${e}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},qt=(t,e)=>{var r;return s(o({},t),{label:e,id:uuid.v4(),order:t.order==="start"?"simple":t.order,branches:[],containers:t.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:[v("continuePlayback")]})),events:(r=t.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)})},Qt=t=>{let e=[];if(t.videoId||e.push(0),t.order!=="end"){let r=!t.events||t.events.some(a=>a.type==="onSuspense"&&a.action.type==="setNextBranch"&&!a.action.args.branchId);r&&e.push(1);let n=t.containers.flatMap(a=>a.controls);!n.length&&r?e.push(2):n.some(a=>{var i;return a.type!=="Text"&&!((i=a==null?void 0:a.events)!=null&&i.length)})&&e.push(2);}return e},Zt=t=>({id:uuid.v4(),chapterId:t}),v=(t,e)=>({type:"onSuspense",action:{type:t,args:{branchId:e,shouldOpenNow:!0}}}),G=t=>t.containers.filter(e=>e.controls.some(r=>r.type==="Area"||r.type==="Button")),st=(t,e)=>{let r=new Set,n=0;t.containers.forEach(c=>{n=n+c.controls.length,c.controls.forEach(u=>r.add(`${u.layoutParams.x},${u.layoutParams.y}`));},0);let a=6,i=.02,p=.17,h=[],d=0;for(;h.length===0;){let c=d%a+1,u=Math.floor(d/a)*i,m=c%2===0?.5:.05+u,f=e.layoutParams.y+p*Math.round(c/2)+u;r.has([m,f].join())||h.push(m,f),d=d+1;}return h},te=(t,e)=>{var h;let[r,n]=st(t,e),a=(h=t.events)==null?void 0:h.find(d=>d.type==="onSuspense");if(!((a==null?void 0:a.action.type)==="setNextBranch"&&(a==null?void 0:a.action.args.branchId))&&e.type!=="Text"&&G(t).length===0){let d={type:"onSuspense",action:{args:{shouldOpenNow:!0,branchId:void 0},type:"setRandomBranch"}};a?a.action=d.action:t.events.push(d);}return s(o({},t),{containers:[...t.containers,{id:uuid.v4(),startTime:0,endTime:null,controls:[s(o({},e),{layoutParams:s(o({},e.layoutParams),{x:r,y:n})})],events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}],layout:{type:"Relative"},type:"Choice"}]})},ee=(t,e,r)=>{if(!t.containers.find(h=>h.id===r))return t;let a=[],i=G(t),p=t.containers.filter(h=>{var d;return h.id===r&&(h.controls.forEach(c=>{var u;c.id===e&&((u=c.events)!=null&&u.length)&&a.push(...c.events.map(m=>m.action.args.branchId));}),(d=h.events)!=null&&d.length&&a.push(...h.events.map(c=>c.action.args.branchId))),h.id!==r});return s(o({},t),{containers:p,branches:t.branches.filter(h=>!a.includes(h.id)),events:it(t.events,i.length===1)})},it=(t,e=!1)=>e?t.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?t:[]:t,re=(t,e,r,n)=>{var a;return r?s(o({},t),{containers:t.containers.map(i=>s(o({},i),{controls:i.controls.map(p=>p.id===r?s(o({},p),{events:[C("onClick","setNextBranch",e.id)]}):p)})),branches:[...t.branches,e]}):n?s(o({},t),{containers:t.containers.map(i=>i.id===n?s(o({},i),{events:[v("setNextBranch",e.id)]}):i),branches:[...t.branches,e]}):s(o({},t),{branches:[...t.branches,e],events:(a=t.events)==null?void 0:a.map(i=>i.type==="onSuspense"?s(o({},i),{action:s(o({},i.action),{args:{branchId:e.id,shouldOpenNow:!0}})}):i)})},S=(t,e)=>e.map(r=>r.action.args.branchId&&t.includes(r.action.args.branchId)?s(o({},r),{action:s(o({},r.action),{args:s(o({},r.action.args),{branchId:void 0})})}):r),U=(t,e)=>e.length?s(o({},t),{branches:t.branches.filter(r=>!e.includes(r.id)),containers:t.containers.map(r=>s(o({},r),{controls:r.controls.map(n=>s(o({},n),{events:S(e,n.events)})),events:S(e,r.events)})),events:S(e,t.events)}):t,ne=(t,e)=>{var i;let r=t.events||[],n=(i=t.events)==null?void 0:i.find(p=>p.type==="onSuspense"),a=n==null?void 0:n.action.args.branchId;return e&&(n?r=r.map(p=>p.type==="onSuspense"?s(o({},p),{action:s(o({},p.action),{type:e,args:s(o({},p.action.args),{branchId:e==="setNextBranch"?p.action.args.branchId:void 0})})}):p):r=[...r,{type:"onSuspense",action:{type:e,args:{shouldOpenNow:!0}}}]),s(o({},t),{events:r,branches:e!=="setNextBranch"?t.branches.filter(p=>p.id!==a):t.branches})},ae=t=>{if(!t.events)return;let e=t.events.find(r=>r.type==="onSuspense");return e==null?void 0:e.action.type},oe=(t,e,r)=>{let n=e.events||[],a=_("onSuspense",e.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"?t.branches.filter(d=>d.id!==i):t.branches,h=s(o({},e),{events:n});return s(o({},t),{branches:p,containers:t.containers.map(d=>d.id===e.id?h:d)})},se=(t,e)=>{let r=new Set(e);return t.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},ie=t=>{if(t.order==="end")return !0;if(t.order==="start")return !1;let e=t.containers.some(n=>_("onSuspense",n.events)),r=t.containers.flatMap(n=>n.controls);return !e&&r.length===0};var E=(t=[])=>({edit:{chapters:t},view:{}}),z=(t,[e,r])=>({id:t,x:e,y:r});var W=t=>{let e=[],r=[];for(let a of t.chapters){let n=a,{x:i,y:p}=n,h=g(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,c=[],u=h.containers.map(m=>{var f;return s(o({},m),{events:(d?(f=m.events)==null?void 0:f.map(l=>l.type==="onSuspense"?(l.action.args.branchId&&c.push(l.action.args.branchId),v("expect")):l):m.events)||[],controls:m.controls.map(lt=>{var V=lt,{subtype:l}=V,B=g(V,["subtype"]);return s(o({},B),{type:l,events:B.events||[C("onClick","continuePlayback")]})})})});e.push(U(s(o({},h),{containers:u,events:a.events||[]}),c)),r.push({id:h.id,x:i,y:p});}return s(o({},t),{chapters:e,graph:E(r),metadata:s(o({},t.metadata),{version:y})})};var pt=[{version:"3.0",migrate:k},{version:"3.1",migrate:L},{version:"3.2",migrate:W}],J=t=>pt.reduce((e,r)=>e.metadata.version===r.version?r.migrate(e):e,t);var b=(t,e)=>{let r={};for(let n of t)r[e(n)]=n;return r},ve=t=>b(t,e=>e.id),T=(t="",e="")=>{let r=t.split("."),n=e.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 ct=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ct||{}),Ve=t=>{let e;try{e=JSON.parse(t);}catch(p){throw new Error("ManifestParsingFailed")}e.metadata.version!==y&&(e=J(e));let{chapters:r,metadata:n,media:a,graph:i}=e;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 Re(t=!1,e="[Untitled]"){let r=new Date().toISOString(),n=uuid.v4(),a={chapters:[{branches:[],containers:[],id:n,label:e,order:"start",events:[]}],metadata:{id:uuid.v4(),build:0,version:y,initChapterId:n,created:r,updated:r},media:{videos:[]},graph:E([z(n,[0,0])])};return t?JSON.stringify(a):a}var dt="3.0.0",ut="3.3.0",De=t=>{let e=T(t,dt);return e===-1?!1:e===0?!0:T(t,ut)!==1};var I={id:"generate_id"},ke=t=>({id:uuid.v4(),name:"Template",chapterType:t.order,template:JSON.stringify(t.containers,(e,r)=>I[e]||r),type:"container",manifestVersion:y});var Ue=(t,e)=>{try{let r=JSON.parse(e.template,(n,a)=>{if(I[n])switch(a){case"generate_id":return uuid.v4();default:return a}return a});return s(o({},t),{branches:[],containers:r})}catch(r){return console.error("The following template is broken:",e.id),t}};exports.ChapterError=w;exports.ContainerTypes=j;exports.ControlTypes=K;exports.DEFAULT_MANIFEST_VERSION=y;exports.EventActionTypes=Q;exports.EventTypes=q;exports.MAX_MANIFEST_VERSION=ut;exports.MIN_MANIFEST_VERSION=dt;exports.ManifestParsingError=ct;exports.TEST_VERSION_REGEX=A;exports.addBranchToChapter=re;exports.addControlToChapter=te;exports.applyContainerTemplate=Ue;exports.canBeEndNode=ie;exports.compareVersions=T;exports.containersTemplateCreator=ke;exports.copyChapter=qt;exports.createChapter=jt;exports.createChapterBranch=Zt;exports.createContainerEvent=v;exports.createControl=Dt;exports.createControlEvent=C;exports.createDefaultGraphDesign=E;exports.createGraphChapter=z;exports.createManifest=Re;exports.getChapterSuspenseActionType=ae;exports.getCopiedChapterLabel=Kt;exports.getEventByType=_;exports.getEventIndexByType=It;exports.isSupportedManifest=De;exports.migrateManifestToLatestVersion=J;exports.normalize=b;exports.parseManifest=Ve;exports.removeBranchesFromChapter=U;exports.removeControlFromChapter=ee;exports.removeControlsFromContainers=se;exports.replacers=I;exports.toDict=ve;exports.updateChapterSuspenseAction=ne;exports.updateContainerSuspenseAction=oe;exports.updateControlActionEventLegacy=Ot;exports.validateChapter=Qt;
|
package/dist/index.d.cts
CHANGED
@@ -31,7 +31,7 @@ declare const removeControlsFromContainers: (containers: ChapterContainer[], con
|
|
31
31
|
declare const canBeEndNode: (chapter: Chapter) => boolean;
|
32
32
|
|
33
33
|
declare const createControl: (type: ControlType, label: string, text: string | undefined) => Control;
|
34
|
-
declare const createControlEvent: (eventType: ControlEventType, actionType: ControlActionType,
|
34
|
+
declare const createControlEvent: (eventType: ControlEventType, actionType: ControlActionType, branchId?: string, uri?: string) => ControlEvent;
|
35
35
|
declare const updateControlActionEventLegacy: (chapter: Chapter, containerId: string, controlId: string, newActionType?: ControlActionType) => Chapter;
|
36
36
|
|
37
37
|
declare const getEventByType: <Event extends ControlEvent | ContainerEvent, Type extends Event["type"]>(type: Type, events?: Event[]) => Event | undefined;
|
package/dist/index.d.ts
CHANGED
@@ -31,7 +31,7 @@ declare const removeControlsFromContainers: (containers: ChapterContainer[], con
|
|
31
31
|
declare const canBeEndNode: (chapter: Chapter) => boolean;
|
32
32
|
|
33
33
|
declare const createControl: (type: ControlType, label: string, text: string | undefined) => Control;
|
34
|
-
declare const createControlEvent: (eventType: ControlEventType, actionType: ControlActionType,
|
34
|
+
declare const createControlEvent: (eventType: ControlEventType, actionType: ControlActionType, branchId?: string, uri?: string) => ControlEvent;
|
35
35
|
declare const updateControlActionEventLegacy: (chapter: Chapter, containerId: string, controlId: string, newActionType?: ControlActionType) => Chapter;
|
36
36
|
|
37
37
|
declare const getEventByType: <Event extends ControlEvent | ContainerEvent, Type extends Event["type"]>(type: Type, events?: Event[]) => Event | undefined;
|
package/dist/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import {v4}from'uuid';var $=Object.defineProperty,H=Object.defineProperties;var Y=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var R=(t,e,r)=>e in t?$(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,o=(t,e)=>{for(var r in e||(e={}))O.call(e,r)&&R(t,r,e[r]);if(M)for(var r of M(e))D.call(e,r)&&R(t,r,e[r]);return t},s=(t,e)=>H(t,Y(e));var C=(t,e)=>{var r={};for(var n in t)O.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&M)for(var n of M(t))e.indexOf(n)<0&&D.call(t,n)&&(r[n]=t[n]);return r};var w=(n=>(n[n.NoVideo=0]="NoVideo",n[n.NoEOV=1]="NoEOV",n[n.NoBranches=2]="NoBranches",n))(w||{});var y="3.3",k=/[3-9]{1}\.[3-9]{1}/;var j=(r=>(r.Choice="Choice",r.TextInput="TextInput",r))(j||{}),K=(n=>(n.Button="Button",n.Area="Area",n.Text="Text",n))(K||{}),q=(r=>(r.onClick="onClick",r.onSuspense="onSuspense",r))(q||{}),Q=(c=>(c.openURI="openURI",c.setNextBranch="setNextBranch",c.setWeightlessRandomBranch="setWeightlessRandomBranch",c.setRandomBranch="setRandomBranch",c.setMaxWeightBranch="setMaxWeightBranch",c.setMinWeightBranch="setMinWeightBranch",c.setDefaultBranch="setDefaultBranch",c.continuePlayback="continuePlayback",c.expect="expect",c))(Q||{});var A="3.1";var _=(t,e)=>e==null?void 0:e.find(r=>r.type===t),It=(t,e)=>e?e.findIndex(r=>r.type===t):-1;var tt=["Button"],et=["Button"],N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),Ot=(t,e,r)=>({id:v4(),type:t,label:e,layoutParams:nt(t),props:at(t,r),events:t!=="Text"?[g("onClick","continuePlayback")]:[]}),g=(t,e,r)=>{switch(e){case"setNextBranch":return {type:t,action:{type:e,args:{branchId:r,shouldOpenNow:!0}}};case"continuePlayback":return {type:t,action:{type:e,args:{shouldOpenNow:!0}}};case"openURI":return {type:t,action:{type:e,args:{shouldOpenNow:!0,uri:r}}}}},rt={Text:0,Button:.3,Area:.35},nt=t=>{let e=t==="Text";return {x:.5,y:rt[t]||0,width:.4,height:e?.12:.09,angle:0,innerSizesDependOn:"video"}},at=(t,e)=>{let r=t==="Text",n=r?"start":"center",a=r?"top":"center";return o({background:{type:"color",color:N.background,alpha:tt.includes(t)?1:0},shape:{border:{width:.005,color:N.border,alpha:et.includes(t)?1:0},type:"rectangle",roundCorners:r?0:.02}},e&&{text:{value:e,gravityHorizontal:n,gravityVertical:a,color:N.text,size:r?.1:.03,alpha:1}})},Dt=(t,e,r,n)=>{var c;let a=(c=t.containers.find(u=>u.id===e))==null?void 0:c.controls.find(u=>u.id===r),i=(a==null?void 0:a.events)||[],p=_("onClick",a==null?void 0:a.events),m=p==null?void 0:p.action.args.branchId;(n==="setNextBranch"||n==="continuePlayback")&&(p?i=i.map(u=>u===p?s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},u.action.args),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0})})}):u):i.push(g("onClick",n)));let d=n!=="setNextBranch"?t.branches.filter(u=>u.id!==m):t.branches;return s(o({},t),{branches:d,containers:t.containers.map(u=>u.id===e?s(o({},u),{controls:u.controls.map(h=>h.id===r?s(o({},h),{events:i}):h)}):u)})};var F=t=>{let e=[];for(let p of t.chapters){let m,d=[];for(let r of p.branches){let n=r,{isDefault:h}=n,l=C(n,["isDefault"]);h&&(m=l.id),d.push(l);}let c,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:h}=i,l=C(i,["fallbackStrategy"]);switch(h){case"await":c=[];break;case"default":c=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:m,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":c=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let f of l.controls)u.push(s(o({},l),{controls:[s(o({},f),{events:f.subtype==="Text"||f.events.length?f.events:[g("onClick","continuePlayback")]})],id:v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}e.push(s(o({},p),{containers:u,events:c,branches:d}));}return t.metadata.version=A,t.metadata.updated=new Date().toISOString(),s(o({},t),{chapters:e})};var P="3.2";var L=t=>{let n=t.metadata,{media:e}=n,r=C(n,["media"]);if(typeof e=="string")throw new Error("Manifest media should be parsed");return {chapters:t.chapters,metadata:s(o({},r),{version:P}),media:e}};var jt=(t="[Untitled]")=>({id:v4(),label:t,order:"simple",branches:[],containers:[],events:[]}),Kt=(t,e,r)=>{let n=1,a=()=>`${t} (${e}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},qt=(t,e)=>{var r;return s(o({},t),{label:e,id:v4(),order:t.order==="start"?"simple":t.order,branches:[],containers:t.containers.map(n=>s(o({},n),{id:v4(),controls:n.controls.map(a=>s(o({},a),{id:v4(),events:a.type!=="Text"?[g("onClick","continuePlayback")]:[]})),events:[v("continuePlayback")]})),events:(r=t.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)})},Qt=t=>{let e=[];if(t.videoId||e.push(0),t.order!=="end"){let r=!t.events||t.events.some(a=>a.type==="onSuspense"&&a.action.type==="setNextBranch"&&!a.action.args.branchId);r&&e.push(1);let n=t.containers.flatMap(a=>a.controls);!n.length&&r?e.push(2):n.some(a=>{var i;return a.type!=="Text"&&!((i=a==null?void 0:a.events)!=null&&i.length)})&&e.push(2);}return e},Zt=t=>({id:v4(),chapterId:t}),v=(t,e)=>({type:"onSuspense",action:{type:t,args:{branchId:e,shouldOpenNow:!0}}}),G=t=>t.containers.filter(e=>e.controls.some(r=>r.type==="Area"||r.type==="Button")),st=(t,e)=>{let r=new Set,n=0;t.containers.forEach(c=>{n=n+c.controls.length,c.controls.forEach(u=>r.add(`${u.layoutParams.x},${u.layoutParams.y}`));},0);let a=6,i=.02,p=.17,m=[],d=0;for(;m.length===0;){let c=d%a+1,u=Math.floor(d/a)*i,h=c%2===0?.5:.05+u,l=e.layoutParams.y+p*Math.round(c/2)+u;r.has([h,l].join())||m.push(h,l),d=d+1;}return m},te=(t,e)=>{var m;let[r,n]=st(t,e),a=(m=t.events)==null?void 0:m.find(d=>d.type==="onSuspense");if(!((a==null?void 0:a.action.type)==="setNextBranch"&&(a==null?void 0:a.action.args.branchId))&&e.type!=="Text"&&G(t).length===0){let d={type:"onSuspense",action:{args:{shouldOpenNow:!0,branchId:void 0},type:"setRandomBranch"}};a?a.action=d.action:t.events.push(d);}return s(o({},t),{containers:[...t.containers,{id:v4(),startTime:0,endTime:null,controls:[s(o({},e),{layoutParams:s(o({},e.layoutParams),{x:r,y:n})})],events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}],layout:{type:"Relative"},type:"Choice"}]})},ee=(t,e,r)=>{if(!t.containers.find(m=>m.id===r))return t;let a=[],i=G(t),p=t.containers.filter(m=>{var d;return m.id===r&&(m.controls.forEach(c=>{var u;c.id===e&&((u=c.events)!=null&&u.length)&&a.push(...c.events.map(h=>h.action.args.branchId));}),(d=m.events)!=null&&d.length&&a.push(...m.events.map(c=>c.action.args.branchId))),m.id!==r});return s(o({},t),{containers:p,branches:t.branches.filter(m=>!a.includes(m.id)),events:it(t.events,i.length===1)})},it=(t,e=!1)=>e?t.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?t:[]:t,re=(t,e,r,n)=>{var a;return r?s(o({},t),{containers:t.containers.map(i=>s(o({},i),{controls:i.controls.map(p=>p.id===r?s(o({},p),{events:[g("onClick","setNextBranch",e.id)]}):p)})),branches:[...t.branches,e]}):n?s(o({},t),{containers:t.containers.map(i=>i.id===n?s(o({},i),{events:[v("setNextBranch",e.id)]}):i),branches:[...t.branches,e]}):s(o({},t),{branches:[...t.branches,e],events:(a=t.events)==null?void 0:a.map(i=>i.type==="onSuspense"?s(o({},i),{action:s(o({},i.action),{args:{branchId:e.id,shouldOpenNow:!0}})}):i)})},S=(t,e)=>e.map(r=>r.action.args.branchId&&t.includes(r.action.args.branchId)?s(o({},r),{action:s(o({},r.action),{args:s(o({},r.action.args),{branchId:void 0})})}):r),U=(t,e)=>e.length?s(o({},t),{branches:t.branches.filter(r=>!e.includes(r.id)),containers:t.containers.map(r=>s(o({},r),{controls:r.controls.map(n=>s(o({},n),{events:S(e,n.events)})),events:S(e,r.events)})),events:S(e,t.events)}):t,ne=(t,e)=>{var i;let r=t.events||[],n=(i=t.events)==null?void 0:i.find(p=>p.type==="onSuspense"),a=n==null?void 0:n.action.args.branchId;return e&&(n?r=r.map(p=>p.type==="onSuspense"?s(o({},p),{action:s(o({},p.action),{type:e,args:s(o({},p.action.args),{branchId:e==="setNextBranch"?p.action.args.branchId:void 0})})}):p):r=[...r,{type:"onSuspense",action:{type:e,args:{shouldOpenNow:!0}}}]),s(o({},t),{events:r,branches:e!=="setNextBranch"?t.branches.filter(p=>p.id!==a):t.branches})},ae=t=>{if(!t.events)return;let e=t.events.find(r=>r.type==="onSuspense");return e==null?void 0:e.action.type},oe=(t,e,r)=>{let n=e.events||[],a=_("onSuspense",e.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"?t.branches.filter(d=>d.id!==i):t.branches,m=s(o({},e),{events:n});return s(o({},t),{branches:p,containers:t.containers.map(d=>d.id===e.id?m:d)})},se=(t,e)=>{let r=new Set(e);return t.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},ie=t=>{if(t.order==="end")return !0;if(t.order==="start")return !1;let e=t.containers.some(n=>_("onSuspense",n.events)),r=t.containers.flatMap(n=>n.controls);return !e&&r.length===0};var E=(t=[])=>({edit:{chapters:t},view:{}}),z=(t,[e,r])=>({id:t,x:e,y:r});var W=t=>{let e=[],r=[];for(let a of t.chapters){let n=a,{x:i,y:p}=n,m=C(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,c=[],u=m.containers.map(h=>{var l;return s(o({},h),{events:(d?(l=h.events)==null?void 0:l.map(f=>f.type==="onSuspense"?(f.action.args.branchId&&c.push(f.action.args.branchId),v("expect")):f):h.events)||[],controls:h.controls.map(lt=>{var V=lt,{subtype:f}=V,B=C(V,["subtype"]);return s(o({},B),{type:f,events:B.events||[g("onClick","continuePlayback")]})})})});e.push(U(s(o({},m),{containers:u,events:a.events||[]}),c)),r.push({id:m.id,x:i,y:p});}return s(o({},t),{chapters:e,graph:E(r),metadata:s(o({},t.metadata),{version:y})})};var pt=[{version:"3.0",migrate:F},{version:"3.1",migrate:L},{version:"3.2",migrate:W}],J=t=>pt.reduce((e,r)=>e.metadata.version===r.version?r.migrate(e):e,t);var b=(t,e)=>{let r={};for(let n of t)r[e(n)]=n;return r},ve=t=>b(t,e=>e.id),T=(t="",e="")=>{let r=t.split("."),n=e.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 ct=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ct||{}),Ve=t=>{let e;try{e=JSON.parse(t);}catch(p){throw new Error("ManifestParsingFailed")}e.metadata.version!==y&&(e=J(e));let{chapters:r,metadata:n,media:a,graph:i}=e;if(!k.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 Re(t=!1,e="[Untitled]"){let r=new Date().toISOString(),n=v4(),a={chapters:[{branches:[],containers:[],id:n,label:e,order:"start",events:[]}],metadata:{id:v4(),build:0,version:y,initChapterId:n,created:r,updated:r},media:{videos:[]},graph:E([z(n,[0,0])])};return t?JSON.stringify(a):a}var dt="3.0.0",ut="3.3.0",Oe=t=>{let e=T(t,dt);return e===-1?!1:e===0?!0:T(t,ut)!==1};var I={id:"generate_id"},Fe=t=>({id:v4(),name:"Template",chapterType:t.order,template:JSON.stringify(t.containers,(e,r)=>I[e]||r),type:"container",manifestVersion:y});var Ue=(t,e)=>{try{let r=JSON.parse(e.template,(n,a)=>{if(I[n])switch(a){case"generate_id":return v4();default:return a}return a});return s(o({},t),{branches:[],containers:r})}catch(r){return console.error("The following template is broken:",e.id),t}};export{w as ChapterError,j as ContainerTypes,K as ControlTypes,y as DEFAULT_MANIFEST_VERSION,Q as EventActionTypes,q as EventTypes,ut as MAX_MANIFEST_VERSION,dt as MIN_MANIFEST_VERSION,ct as ManifestParsingError,k as TEST_VERSION_REGEX,re as addBranchToChapter,te as addControlToChapter,Ue as applyContainerTemplate,ie as canBeEndNode,T as compareVersions,Fe as containersTemplateCreator,qt as copyChapter,jt as createChapter,Zt as createChapterBranch,v as createContainerEvent,Ot as createControl,g as createControlEvent,E as createDefaultGraphDesign,z as createGraphChapter,Re as createManifest,ae as getChapterSuspenseActionType,Kt as getCopiedChapterLabel,_ as getEventByType,It as getEventIndexByType,Oe as isSupportedManifest,J as migrateManifestToLatestVersion,b as normalize,Ve as parseManifest,U as removeBranchesFromChapter,ee as removeControlFromChapter,se as removeControlsFromContainers,I as replacers,ve as toDict,ne as updateChapterSuspenseAction,oe as updateContainerSuspenseAction,Dt as updateControlActionEventLegacy,Qt as validateChapter};
|
1
|
+
import {v4}from'uuid';var $=Object.defineProperty,H=Object.defineProperties;var Y=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var D=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var R=(t,e,r)=>e in t?$(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,o=(t,e)=>{for(var r in e||(e={}))D.call(e,r)&&R(t,r,e[r]);if(M)for(var r of M(e))O.call(e,r)&&R(t,r,e[r]);return t},s=(t,e)=>H(t,Y(e));var g=(t,e)=>{var r={};for(var n in t)D.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&M)for(var n of M(t))e.indexOf(n)<0&&O.call(t,n)&&(r[n]=t[n]);return r};var w=(n=>(n[n.NoVideo=0]="NoVideo",n[n.NoEOV=1]="NoEOV",n[n.NoBranches=2]="NoBranches",n))(w||{});var y="3.3",A=/[3-9]{1}\.[3-9]{1}/;var j=(r=>(r.Choice="Choice",r.TextInput="TextInput",r))(j||{}),K=(n=>(n.Button="Button",n.Area="Area",n.Text="Text",n))(K||{}),q=(r=>(r.onClick="onClick",r.onSuspense="onSuspense",r))(q||{}),Q=(c=>(c.openURI="openURI",c.setNextBranch="setNextBranch",c.setWeightlessRandomBranch="setWeightlessRandomBranch",c.setRandomBranch="setRandomBranch",c.setMaxWeightBranch="setMaxWeightBranch",c.setMinWeightBranch="setMinWeightBranch",c.setDefaultBranch="setDefaultBranch",c.continuePlayback="continuePlayback",c.expect="expect",c))(Q||{});var F="3.1";var _=(t,e)=>e==null?void 0:e.find(r=>r.type===t),It=(t,e)=>e?e.findIndex(r=>r.type===t):-1;var tt=["Button"],et=["Button"],N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),Dt=(t,e,r)=>({id:v4(),type:t,label:e,layoutParams:nt(t),props:at(t,r),events:t!=="Text"?[C("onClick","continuePlayback")]:[]}),C=(t,e,r,n)=>{switch(e){case"setNextBranch":return {type:t,action:{type:e,args:{branchId:r,shouldOpenNow:!0}}};case"continuePlayback":return {type:t,action:{type:e,args:{shouldOpenNow:!0}}};case"openURI":return {type:t,action:{type:e,args:{isDetachContainer:!0,shouldOpenNow:!0,uri:n}}}}},rt={Text:0,Button:.3,Area:.35},nt=t=>{let e=t==="Text";return {x:.5,y:rt[t]||0,width:.4,height:e?.12:.09,angle:0,innerSizesDependOn:"video"}},at=(t,e)=>{let r=t==="Text",n=r?"start":"center",a=r?"top":"center";return o({background:{type:"color",color:N.background,alpha:tt.includes(t)?1:0},shape:{border:{width:.005,color:N.border,alpha:et.includes(t)?1:0},type:"rectangle",roundCorners:r?0:.02}},e&&{text:{value:e,gravityHorizontal:n,gravityVertical:a,color:N.text,size:r?.1:.03,alpha:1}})},Ot=(t,e,r,n)=>{var c;let a=(c=t.containers.find(u=>u.id===e))==null?void 0:c.controls.find(u=>u.id===r),i=(a==null?void 0:a.events)||[],p=_("onClick",a==null?void 0:a.events),h=p==null?void 0:p.action.args.branchId;n&&(p?i=i.map(u=>{if(u===p){let m=u.action.args,l=g(m,["uri"]);return s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},l),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0,isDetachContainer:n==="openURI"?!1:void 0})})})}return u}):i.push(C("onClick",n)));let d=n!=="setNextBranch"?t.branches.filter(u=>u.id!==h):t.branches;return s(o({},t),{branches:d,containers:t.containers.map(u=>u.id===e?s(o({},u),{controls:u.controls.map(m=>m.id===r?s(o({},m),{events:i}):m)}):u)})};var k=t=>{let e=[];for(let p of t.chapters){let h,d=[];for(let r of p.branches){let n=r,{isDefault:m}=n,f=g(n,["isDefault"]);m&&(h=f.id),d.push(f);}let c,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:m}=i,f=g(i,["fallbackStrategy"]);switch(m){case"await":c=[];break;case"default":c=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:h,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":c=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let l of f.controls)u.push(s(o({},f),{controls:[s(o({},l),{events:l.subtype==="Text"||l.events.length?l.events:[C("onClick","continuePlayback")]})],id:v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}e.push(s(o({},p),{containers:u,events:c,branches:d}));}return t.metadata.version=F,t.metadata.updated=new Date().toISOString(),s(o({},t),{chapters:e})};var P="3.2";var L=t=>{let n=t.metadata,{media:e}=n,r=g(n,["media"]);if(typeof e=="string")throw new Error("Manifest media should be parsed");return {chapters:t.chapters,metadata:s(o({},r),{version:P}),media:e}};var jt=(t="[Untitled]")=>({id:v4(),label:t,order:"simple",branches:[],containers:[],events:[]}),Kt=(t,e,r)=>{let n=1,a=()=>`${t} (${e}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},qt=(t,e)=>{var r;return s(o({},t),{label:e,id:v4(),order:t.order==="start"?"simple":t.order,branches:[],containers:t.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:[v("continuePlayback")]})),events:(r=t.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)})},Qt=t=>{let e=[];if(t.videoId||e.push(0),t.order!=="end"){let r=!t.events||t.events.some(a=>a.type==="onSuspense"&&a.action.type==="setNextBranch"&&!a.action.args.branchId);r&&e.push(1);let n=t.containers.flatMap(a=>a.controls);!n.length&&r?e.push(2):n.some(a=>{var i;return a.type!=="Text"&&!((i=a==null?void 0:a.events)!=null&&i.length)})&&e.push(2);}return e},Zt=t=>({id:v4(),chapterId:t}),v=(t,e)=>({type:"onSuspense",action:{type:t,args:{branchId:e,shouldOpenNow:!0}}}),G=t=>t.containers.filter(e=>e.controls.some(r=>r.type==="Area"||r.type==="Button")),st=(t,e)=>{let r=new Set,n=0;t.containers.forEach(c=>{n=n+c.controls.length,c.controls.forEach(u=>r.add(`${u.layoutParams.x},${u.layoutParams.y}`));},0);let a=6,i=.02,p=.17,h=[],d=0;for(;h.length===0;){let c=d%a+1,u=Math.floor(d/a)*i,m=c%2===0?.5:.05+u,f=e.layoutParams.y+p*Math.round(c/2)+u;r.has([m,f].join())||h.push(m,f),d=d+1;}return h},te=(t,e)=>{var h;let[r,n]=st(t,e),a=(h=t.events)==null?void 0:h.find(d=>d.type==="onSuspense");if(!((a==null?void 0:a.action.type)==="setNextBranch"&&(a==null?void 0:a.action.args.branchId))&&e.type!=="Text"&&G(t).length===0){let d={type:"onSuspense",action:{args:{shouldOpenNow:!0,branchId:void 0},type:"setRandomBranch"}};a?a.action=d.action:t.events.push(d);}return s(o({},t),{containers:[...t.containers,{id:v4(),startTime:0,endTime:null,controls:[s(o({},e),{layoutParams:s(o({},e.layoutParams),{x:r,y:n})})],events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}],layout:{type:"Relative"},type:"Choice"}]})},ee=(t,e,r)=>{if(!t.containers.find(h=>h.id===r))return t;let a=[],i=G(t),p=t.containers.filter(h=>{var d;return h.id===r&&(h.controls.forEach(c=>{var u;c.id===e&&((u=c.events)!=null&&u.length)&&a.push(...c.events.map(m=>m.action.args.branchId));}),(d=h.events)!=null&&d.length&&a.push(...h.events.map(c=>c.action.args.branchId))),h.id!==r});return s(o({},t),{containers:p,branches:t.branches.filter(h=>!a.includes(h.id)),events:it(t.events,i.length===1)})},it=(t,e=!1)=>e?t.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?t:[]:t,re=(t,e,r,n)=>{var a;return r?s(o({},t),{containers:t.containers.map(i=>s(o({},i),{controls:i.controls.map(p=>p.id===r?s(o({},p),{events:[C("onClick","setNextBranch",e.id)]}):p)})),branches:[...t.branches,e]}):n?s(o({},t),{containers:t.containers.map(i=>i.id===n?s(o({},i),{events:[v("setNextBranch",e.id)]}):i),branches:[...t.branches,e]}):s(o({},t),{branches:[...t.branches,e],events:(a=t.events)==null?void 0:a.map(i=>i.type==="onSuspense"?s(o({},i),{action:s(o({},i.action),{args:{branchId:e.id,shouldOpenNow:!0}})}):i)})},S=(t,e)=>e.map(r=>r.action.args.branchId&&t.includes(r.action.args.branchId)?s(o({},r),{action:s(o({},r.action),{args:s(o({},r.action.args),{branchId:void 0})})}):r),U=(t,e)=>e.length?s(o({},t),{branches:t.branches.filter(r=>!e.includes(r.id)),containers:t.containers.map(r=>s(o({},r),{controls:r.controls.map(n=>s(o({},n),{events:S(e,n.events)})),events:S(e,r.events)})),events:S(e,t.events)}):t,ne=(t,e)=>{var i;let r=t.events||[],n=(i=t.events)==null?void 0:i.find(p=>p.type==="onSuspense"),a=n==null?void 0:n.action.args.branchId;return e&&(n?r=r.map(p=>p.type==="onSuspense"?s(o({},p),{action:s(o({},p.action),{type:e,args:s(o({},p.action.args),{branchId:e==="setNextBranch"?p.action.args.branchId:void 0})})}):p):r=[...r,{type:"onSuspense",action:{type:e,args:{shouldOpenNow:!0}}}]),s(o({},t),{events:r,branches:e!=="setNextBranch"?t.branches.filter(p=>p.id!==a):t.branches})},ae=t=>{if(!t.events)return;let e=t.events.find(r=>r.type==="onSuspense");return e==null?void 0:e.action.type},oe=(t,e,r)=>{let n=e.events||[],a=_("onSuspense",e.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"?t.branches.filter(d=>d.id!==i):t.branches,h=s(o({},e),{events:n});return s(o({},t),{branches:p,containers:t.containers.map(d=>d.id===e.id?h:d)})},se=(t,e)=>{let r=new Set(e);return t.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},ie=t=>{if(t.order==="end")return !0;if(t.order==="start")return !1;let e=t.containers.some(n=>_("onSuspense",n.events)),r=t.containers.flatMap(n=>n.controls);return !e&&r.length===0};var E=(t=[])=>({edit:{chapters:t},view:{}}),z=(t,[e,r])=>({id:t,x:e,y:r});var W=t=>{let e=[],r=[];for(let a of t.chapters){let n=a,{x:i,y:p}=n,h=g(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,c=[],u=h.containers.map(m=>{var f;return s(o({},m),{events:(d?(f=m.events)==null?void 0:f.map(l=>l.type==="onSuspense"?(l.action.args.branchId&&c.push(l.action.args.branchId),v("expect")):l):m.events)||[],controls:m.controls.map(lt=>{var V=lt,{subtype:l}=V,B=g(V,["subtype"]);return s(o({},B),{type:l,events:B.events||[C("onClick","continuePlayback")]})})})});e.push(U(s(o({},h),{containers:u,events:a.events||[]}),c)),r.push({id:h.id,x:i,y:p});}return s(o({},t),{chapters:e,graph:E(r),metadata:s(o({},t.metadata),{version:y})})};var pt=[{version:"3.0",migrate:k},{version:"3.1",migrate:L},{version:"3.2",migrate:W}],J=t=>pt.reduce((e,r)=>e.metadata.version===r.version?r.migrate(e):e,t);var b=(t,e)=>{let r={};for(let n of t)r[e(n)]=n;return r},ve=t=>b(t,e=>e.id),T=(t="",e="")=>{let r=t.split("."),n=e.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 ct=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ct||{}),Ve=t=>{let e;try{e=JSON.parse(t);}catch(p){throw new Error("ManifestParsingFailed")}e.metadata.version!==y&&(e=J(e));let{chapters:r,metadata:n,media:a,graph:i}=e;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 Re(t=!1,e="[Untitled]"){let r=new Date().toISOString(),n=v4(),a={chapters:[{branches:[],containers:[],id:n,label:e,order:"start",events:[]}],metadata:{id:v4(),build:0,version:y,initChapterId:n,created:r,updated:r},media:{videos:[]},graph:E([z(n,[0,0])])};return t?JSON.stringify(a):a}var dt="3.0.0",ut="3.3.0",De=t=>{let e=T(t,dt);return e===-1?!1:e===0?!0:T(t,ut)!==1};var I={id:"generate_id"},ke=t=>({id:v4(),name:"Template",chapterType:t.order,template:JSON.stringify(t.containers,(e,r)=>I[e]||r),type:"container",manifestVersion:y});var Ue=(t,e)=>{try{let r=JSON.parse(e.template,(n,a)=>{if(I[n])switch(a){case"generate_id":return v4();default:return a}return a});return s(o({},t),{branches:[],containers:r})}catch(r){return console.error("The following template is broken:",e.id),t}};export{w as ChapterError,j as ContainerTypes,K as ControlTypes,y as DEFAULT_MANIFEST_VERSION,Q as EventActionTypes,q as EventTypes,ut as MAX_MANIFEST_VERSION,dt as MIN_MANIFEST_VERSION,ct as ManifestParsingError,A as TEST_VERSION_REGEX,re as addBranchToChapter,te as addControlToChapter,Ue as applyContainerTemplate,ie as canBeEndNode,T as compareVersions,ke as containersTemplateCreator,qt as copyChapter,jt as createChapter,Zt as createChapterBranch,v as createContainerEvent,Dt as createControl,C as createControlEvent,E as createDefaultGraphDesign,z as createGraphChapter,Re as createManifest,ae as getChapterSuspenseActionType,Kt as getCopiedChapterLabel,_ as getEventByType,It as getEventIndexByType,De as isSupportedManifest,J as migrateManifestToLatestVersion,b as normalize,Ve as parseManifest,U as removeBranchesFromChapter,ee as removeControlFromChapter,se as removeControlsFromContainers,I as replacers,ve as toDict,ne as updateChapterSuspenseAction,oe as updateContainerSuspenseAction,Ot as updateControlActionEventLegacy,Qt as validateChapter};
|
package/package.json
CHANGED
@@ -1,20 +1,22 @@
|
|
1
1
|
{
|
2
2
|
"name": "@interactiveplatform/movika-manifest",
|
3
3
|
"author": "interactiveplatform",
|
4
|
-
"version": "1.0.0
|
4
|
+
"version": "1.0.0",
|
5
5
|
"license": "ISC",
|
6
6
|
"type": "module",
|
7
|
+
"main": "./dist/index.cjs",
|
8
|
+
"module": "./dist/index.js",
|
9
|
+
"types": "./dist/index.d.ts",
|
7
10
|
"files": [
|
8
|
-
"dist/*"
|
11
|
+
"dist/*",
|
12
|
+
"mocks/package.json"
|
9
13
|
],
|
10
14
|
"exports": {
|
11
15
|
".": {
|
12
|
-
"types": "./dist/index.d.ts",
|
13
16
|
"import": "./dist/index.js",
|
14
17
|
"require": "./dist/index.cjs"
|
15
18
|
},
|
16
19
|
"./mocks": {
|
17
|
-
"types": "./dist/mocks/index.d.ts",
|
18
20
|
"import": "./dist/mocks/index.js",
|
19
21
|
"require": "./dist/mocks/index.cjs"
|
20
22
|
},
|