@interactiveplatform/movika-manifest 1.0.0 → 1.0.1-dev.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.
@@ -606,6 +606,7 @@ type AnyChapter = AnyManifest["chapters"][0];
606
606
  type AnyContainer = AnyChapter["containers"][0];
607
607
  type AnyControl = AnyContainer["controls"][0];
608
608
  type Nullable<T> = T | null;
609
+ type RectangleSize = Record<"width" | "height", number>;
609
610
 
610
611
  type ControlType = "Text" | "Button" | "Area";
611
612
  type ControlEventType = "onClick";
@@ -738,4 +739,4 @@ declare enum ChapterError {
738
739
  NoBranches = 2
739
740
  }
740
741
 
741
- export { type Manifest_3_1 as $, type AnyManifest as A, type GraphDefaultBranch as B, type Chapter as C, type GraphBranch as D, DEFAULT_MANIFEST_VERSION as E, type Font as F, type GraphCustomChapter as G, type ManifestVideoVariantType as H, type Extension as I, type CustomManifestVideoVariant as J, type DefaultManifestVideoVariant as K, type ManifestVideoVariant as L, type Manifest_3_3 as M, type ManifestVideo as N, type MediaLink as O, ContainerTypes as P, ControlTypes as Q, EventTypes as R, type Standard as S, TEST_VERSION_REGEX as T, EventActionTypes as U, type VideoId as V, type AnyChapter as W, type AnyContainer as X, type AnyControl as Y, type Nullable as Z, type Manifest_3_0 as _, ChapterError as a, type Manifest_3_2 as a0, type ChapterBranch as b, type ContainerSuspenseActionType as c, type ContainerEvent as d, type Control as e, type ChapterSuspenseActionType as f, type ChapterContainer as g, type ControlType as h, type ControlEventType as i, type ControlActionType as j, type ControlEvent as k, type GraphDesign as l, type Metadata as m, type Media as n, type GraphEditModeDesign as o, type GraphEditChapter as p, type GraphViewModeDesign as q, type GraphViewChapter as r, type ChapterEventType as s, type ContainerEventType as t, type ChapterEvent as u, type ControlLayoutParams as v, type ControlProps as w, type GraphBackground as x, type GraphEditDefaultChapter as y, type GraphViewDefaultChapter as z };
742
+ export { type Manifest_3_0 as $, type AnyManifest as A, type GraphDefaultBranch as B, type Chapter as C, type GraphBranch as D, DEFAULT_MANIFEST_VERSION as E, type Font as F, type GraphCustomChapter as G, type ManifestVideoVariantType as H, type Extension as I, type CustomManifestVideoVariant as J, type DefaultManifestVideoVariant as K, type ManifestVideoVariant as L, type Manifest_3_3 as M, type ManifestVideo as N, type MediaLink as O, ContainerTypes as P, ControlTypes as Q, type RectangleSize as R, type Standard as S, TEST_VERSION_REGEX as T, EventTypes as U, EventActionTypes as V, type VideoId as W, type AnyChapter as X, type AnyContainer as Y, type AnyControl as Z, type Nullable as _, ChapterError as a, type Manifest_3_1 as a0, type Manifest_3_2 as a1, type ChapterBranch as b, type ContainerSuspenseActionType as c, type ContainerEvent as d, type Control as e, type ChapterSuspenseActionType as f, type ChapterContainer as g, type ControlType as h, type ControlEventType as i, type ControlActionType as j, type ControlEvent as k, type GraphDesign as l, type Metadata as m, type Media as n, type GraphEditModeDesign as o, type GraphEditChapter as p, type GraphViewModeDesign as q, type GraphViewChapter as r, type ChapterEventType as s, type ContainerEventType as t, type ChapterEvent as u, type ControlLayoutParams as v, type ControlProps as w, type GraphBackground as x, type GraphEditDefaultChapter as y, type GraphViewDefaultChapter as z };
@@ -606,6 +606,7 @@ type AnyChapter = AnyManifest["chapters"][0];
606
606
  type AnyContainer = AnyChapter["containers"][0];
607
607
  type AnyControl = AnyContainer["controls"][0];
608
608
  type Nullable<T> = T | null;
609
+ type RectangleSize = Record<"width" | "height", number>;
609
610
 
610
611
  type ControlType = "Text" | "Button" | "Area";
611
612
  type ControlEventType = "onClick";
@@ -738,4 +739,4 @@ declare enum ChapterError {
738
739
  NoBranches = 2
739
740
  }
740
741
 
741
- export { type Manifest_3_1 as $, type AnyManifest as A, type GraphDefaultBranch as B, type Chapter as C, type GraphBranch as D, DEFAULT_MANIFEST_VERSION as E, type Font as F, type GraphCustomChapter as G, type ManifestVideoVariantType as H, type Extension as I, type CustomManifestVideoVariant as J, type DefaultManifestVideoVariant as K, type ManifestVideoVariant as L, type Manifest_3_3 as M, type ManifestVideo as N, type MediaLink as O, ContainerTypes as P, ControlTypes as Q, EventTypes as R, type Standard as S, TEST_VERSION_REGEX as T, EventActionTypes as U, type VideoId as V, type AnyChapter as W, type AnyContainer as X, type AnyControl as Y, type Nullable as Z, type Manifest_3_0 as _, ChapterError as a, type Manifest_3_2 as a0, type ChapterBranch as b, type ContainerSuspenseActionType as c, type ContainerEvent as d, type Control as e, type ChapterSuspenseActionType as f, type ChapterContainer as g, type ControlType as h, type ControlEventType as i, type ControlActionType as j, type ControlEvent as k, type GraphDesign as l, type Metadata as m, type Media as n, type GraphEditModeDesign as o, type GraphEditChapter as p, type GraphViewModeDesign as q, type GraphViewChapter as r, type ChapterEventType as s, type ContainerEventType as t, type ChapterEvent as u, type ControlLayoutParams as v, type ControlProps as w, type GraphBackground as x, type GraphEditDefaultChapter as y, type GraphViewDefaultChapter as z };
742
+ export { type Manifest_3_0 as $, type AnyManifest as A, type GraphDefaultBranch as B, type Chapter as C, type GraphBranch as D, DEFAULT_MANIFEST_VERSION as E, type Font as F, type GraphCustomChapter as G, type ManifestVideoVariantType as H, type Extension as I, type CustomManifestVideoVariant as J, type DefaultManifestVideoVariant as K, type ManifestVideoVariant as L, type Manifest_3_3 as M, type ManifestVideo as N, type MediaLink as O, ContainerTypes as P, ControlTypes as Q, type RectangleSize as R, type Standard as S, TEST_VERSION_REGEX as T, EventTypes as U, EventActionTypes as V, type VideoId as W, type AnyChapter as X, type AnyContainer as Y, type AnyControl as Z, type Nullable as _, ChapterError as a, type Manifest_3_1 as a0, type Manifest_3_2 as a1, type ChapterBranch as b, type ContainerSuspenseActionType as c, type ContainerEvent as d, type Control as e, type ChapterSuspenseActionType as f, type ChapterContainer as g, type ControlType as h, type ControlEventType as i, type ControlActionType as j, type ControlEvent as k, type GraphDesign as l, type Metadata as m, type Media as n, type GraphEditModeDesign as o, type GraphEditChapter as p, type GraphViewModeDesign as q, type GraphViewChapter as r, type ChapterEventType as s, type ContainerEventType as t, type ChapterEvent as u, type ControlLayoutParams as v, type ControlProps as w, type GraphBackground as x, type GraphEditDefaultChapter as y, type GraphViewDefaultChapter as z };
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 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;
1
+ 'use strict';var uuid=require('uuid');var J=Object.defineProperty,$=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var R=(t,e,r)=>e in t?J(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)=>$(t,j(e));var g=(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",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=(h=>(h.openURI="openURI",h.setNextBranch="setNextBranch",h.setWeightlessRandomBranch="setWeightlessRandomBranch",h.setRandomBranch="setRandomBranch",h.setMaxWeightBranch="setMaxWeightBranch",h.setMinWeightBranch="setMinWeightBranch",h.setDefaultBranch="setDefaultBranch",h.continuePlayback="continuePlayback",h.expect="expect",h))(q||{});var F="3.1";var _=(t,e)=>e==null?void 0:e.find(r=>r.type===t),Rt=(t,e)=>e?e.findIndex(r=>r.type===t):-1;var tt=["Button"],et=["Button"],rt=1.5,nt=.1,at=4.48,N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),At=(t,e,r,n)=>({id:uuid.v4(),type:t,label:e,layoutParams:st(t,n),props:it(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}}}}},ot={Text:0,Button:.3,Area:.35},st=(t,e)=>{let r=t==="Text",n=r?.12:.09,a=.4;if(e!=null&&e.width&&r){let i=e.height*nt*rt,p=i*at,c=Math.ceil(p/e.width);a=Math.min(1,p/e.width),n=i/e.height*c;}return {x:.5,y:ot[t]||0,width:a,height:n,angle:0,innerSizesDependOn:"video"}},it=(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}})},Ft=(t,e,r,n)=>{let a=t.containers.find(u=>u.id===e),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 l=u.action.args,m=g(l,["uri"]);return s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},m),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0,isDetachContainer:n==="openURI"?!1:void 0})})})}return u}):p.push(C("onClick",n)));let h=n!=="setNextBranch"?t.branches.filter(u=>u.id!==d):t.branches;return s(o({},t),{branches:h,containers:t.containers.map(u=>u.id===e?s(o({},u),{controls:u.controls.map(l=>l.id===r?s(o({},l),{events:p}):l)}):u)})};var L=t=>{let e=[];for(let p of t.chapters){let c,d=[];for(let r of p.branches){let n=r,{isDefault:l}=n,f=g(n,["isDefault"]);l&&(c=f.id),d.push(f);}let h,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:l}=i,f=g(i,["fallbackStrategy"]);switch(l){case"await":h=[];break;case"default":h=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:c,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":h=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let m of f.controls)u.push(s(o({},f),{controls:[s(o({},m),{events:m.subtype==="Text"||m.events.length?m.events:[C("onClick","continuePlayback")]})],id:uuid.v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}e.push(s(o({},p),{containers:u,events:h,branches:d}));}return t.metadata.version=F,t.metadata.updated=new Date().toISOString(),s(o({},t),{chapters:e})};var P="3.2";var k=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 qt=(t="[Untitled]")=>({id:uuid.v4(),label:t,order:"simple",branches:[],containers:[],events:[]}),Qt=(t,e,r)=>{let n=1,a=()=>`${t} (${e}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},te=(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:[E("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)})},ee=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},re=t=>({id:uuid.v4(),chapterId:t}),E=(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")),ct=(t,e)=>{let r=new Set,n=0;t.containers.forEach(h=>{n=n+h.controls.length,h.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 h=d%a+1,u=Math.floor(d/a)*i,l=h%2===0?.5:.05+u,f=e.layoutParams.y+p*Math.round(h/2)+u;r.has([l,f].join())||c.push(l,f),d=d+1;}return c},ne=(t,e)=>{var c;let[r,n]=ct(t,e),a=(c=t.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))&&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"}]})},ae=(t,e,r)=>{if(!t.containers.find(c=>c.id===r))return t;let a=[],i=G(t),p=t.containers.filter(c=>{var d;return c.id===r&&(c.controls.forEach(h=>{var u;h.id===e&&((u=h.events)!=null&&u.length)&&a.push(...h.events.map(l=>l.action.args.branchId));}),(d=c.events)!=null&&d.length&&a.push(...c.events.map(h=>h.action.args.branchId))),c.id!==r});return s(o({},t),{containers:p,branches:t.branches.filter(c=>!a.includes(c.id)),events:dt(t.events,i.length===1)})},dt=(t,e=!1)=>e?t.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?t:[]:t,oe=(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:[E("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)})},T=(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:T(e,n.events)})),events:T(e,r.events)})),events:T(e,t.events)}):t,se=(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})},ie=t=>{if(!t.events)return;let e=t.events.find(r=>r.type==="onSuspense");return e==null?void 0:e.action.type},pe=(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,c=s(o({},e),{events:n});return s(o({},t),{branches:p,containers:t.containers.map(d=>d.id===e.id?c:d)})},ce=(t,e)=>{let r=new Set(e);return t.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},de=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 v=(t=[])=>({edit:{chapters:t},view:{}}),X=(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,c=g(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,h=[],u=c.containers.map(l=>{var f;return s(o({},l),{events:(d?(f=l.events)==null?void 0:f.map(m=>m.type==="onSuspense"?(m.action.args.branchId&&h.push(m.action.args.branchId),E("expect")):m):l.events)||[],controls:l.controls.map(Ct=>{var V=Ct,{subtype:m}=V,B=g(V,["subtype"]);return s(o({},B),{type:m,events:B.events||[C("onClick","continuePlayback")]})})})});e.push(U(s(o({},c),{containers:u,events:a.events||[]}),h)),r.push({id:c.id,x:i,y:p});}return s(o({},t),{chapters:e,graph:v(r),metadata:s(o({},t.metadata),{version:y})})};var ht=[{version:"3.0",migrate:L},{version:"3.1",migrate:k},{version:"3.2",migrate:W}],z=t=>ht.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},Te=t=>b(t,e=>e.id),I=(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 ut=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ut||{}),De=t=>{let e;try{e=JSON.parse(t);}catch(p){throw new Error("ManifestParsingFailed")}e.metadata.version!==y&&(e=z(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 we(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:v([X(n,[0,0])])};return t?JSON.stringify(a):a}var lt="3.0.0",mt="3.3.0",Ae=t=>{let e=I(t,lt);return e===-1?!1:e===0?!0:I(t,mt)!==1};var S={id:"generate_id"},Ge=t=>({id:uuid.v4(),name:"Template",chapterType:t.order,template:JSON.stringify(t.containers,(e,r)=>S[e]||r),type:"container",manifestVersion:y});var ze=(t,e)=>{try{let r=JSON.parse(e.template,(n,a)=>{if(S[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=Y;exports.ControlTypes=K;exports.DEFAULT_MANIFEST_VERSION=y;exports.EventActionTypes=q;exports.EventTypes=Z;exports.MAX_MANIFEST_VERSION=mt;exports.MIN_MANIFEST_VERSION=lt;exports.ManifestParsingError=ut;exports.TEST_VERSION_REGEX=A;exports.addBranchToChapter=oe;exports.addControlToChapter=ne;exports.applyContainerTemplate=ze;exports.canBeEndNode=de;exports.compareVersions=I;exports.containersTemplateCreator=Ge;exports.copyChapter=te;exports.createChapter=qt;exports.createChapterBranch=re;exports.createContainerEvent=E;exports.createControl=At;exports.createControlEvent=C;exports.createDefaultGraphDesign=v;exports.createGraphChapter=X;exports.createManifest=we;exports.getChapterSuspenseActionType=ie;exports.getCopiedChapterLabel=Qt;exports.getEventByType=_;exports.getEventIndexByType=Rt;exports.isSupportedManifest=Ae;exports.migrateManifestToLatestVersion=z;exports.normalize=b;exports.parseManifest=De;exports.removeBranchesFromChapter=U;exports.removeControlFromChapter=ae;exports.removeControlsFromContainers=ce;exports.replacers=S;exports.toDict=Te;exports.updateChapterSuspenseAction=se;exports.updateContainerSuspenseAction=pe;exports.updateControlActionEventLegacy=Ft;exports.validateChapter=ee;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as AnyManifest, M as Manifest_3_3, C as Chapter, a as ChapterError, b as ChapterBranch, c as ContainerSuspenseActionType, d as ContainerEvent, e as Control, f as ChapterSuspenseActionType, g as ChapterContainer, h as ControlType, i as ControlEventType, j as ControlActionType, k as ControlEvent, G as GraphCustomChapter, l as GraphDesign, m as Metadata, n as Media, o as GraphEditModeDesign, p as GraphEditChapter, q as GraphViewModeDesign, r as GraphViewChapter } from './chapter-COPBtRYg.cjs';
2
- export { W as AnyChapter, X as AnyContainer, Y as AnyControl, u as ChapterEvent, s as ChapterEventType, t as ContainerEventType, P as ContainerTypes, v as ControlLayoutParams, w as ControlProps, Q as ControlTypes, J as CustomManifestVideoVariant, E as DEFAULT_MANIFEST_VERSION, K as DefaultManifestVideoVariant, U as EventActionTypes, R as EventTypes, I as Extension, F as Font, x as GraphBackground, D as GraphBranch, B as GraphDefaultBranch, y as GraphEditDefaultChapter, z as GraphViewDefaultChapter, N as ManifestVideo, L as ManifestVideoVariant, H as ManifestVideoVariantType, O as MediaLink, Z as Nullable, S as Standard, T as TEST_VERSION_REGEX, V as VideoId } from './chapter-COPBtRYg.cjs';
1
+ import { A as AnyManifest, M as Manifest_3_3, C as Chapter, a as ChapterError, b as ChapterBranch, c as ContainerSuspenseActionType, d as ContainerEvent, e as Control, f as ChapterSuspenseActionType, g as ChapterContainer, h as ControlType, R as RectangleSize, i as ControlEventType, j as ControlActionType, k as ControlEvent, G as GraphCustomChapter, l as GraphDesign, m as Metadata, n as Media, o as GraphEditModeDesign, p as GraphEditChapter, q as GraphViewModeDesign, r as GraphViewChapter } from './chapter-DI_7rDZW.cjs';
2
+ export { X as AnyChapter, Y as AnyContainer, Z as AnyControl, u as ChapterEvent, s as ChapterEventType, t as ContainerEventType, P as ContainerTypes, v as ControlLayoutParams, w as ControlProps, Q as ControlTypes, J as CustomManifestVideoVariant, E as DEFAULT_MANIFEST_VERSION, K as DefaultManifestVideoVariant, V as EventActionTypes, U as EventTypes, I as Extension, F as Font, x as GraphBackground, D as GraphBranch, B as GraphDefaultBranch, y as GraphEditDefaultChapter, z as GraphViewDefaultChapter, N as ManifestVideo, L as ManifestVideoVariant, H as ManifestVideoVariantType, O as MediaLink, _ as Nullable, S as Standard, T as TEST_VERSION_REGEX, W as VideoId } from './chapter-DI_7rDZW.cjs';
3
3
 
4
4
  interface ManifestDataTemplate {
5
5
  id: string;
@@ -30,7 +30,7 @@ declare const updateContainerSuspenseAction: (chapter: Chapter, container: Chapt
30
30
  declare const removeControlsFromContainers: (containers: ChapterContainer[], controlIds: string[]) => ChapterContainer[];
31
31
  declare const canBeEndNode: (chapter: Chapter) => boolean;
32
32
 
33
- declare const createControl: (type: ControlType, label: string, text: string | undefined) => Control;
33
+ declare const createControl: (type: ControlType, label: string, text: string | undefined, containerSize?: RectangleSize) => Control;
34
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
 
@@ -77,4 +77,4 @@ declare const toDict: <T extends {
77
77
  type ResultType = -1 | 0 | 1;
78
78
  declare const compareVersions: (v1?: string, v2?: string) => ResultType;
79
79
 
80
- export { AnyManifest, Chapter, ChapterBranch, ChapterContainer, ChapterError, ChapterSuspenseActionType, ContainerEvent, ContainerSuspenseActionType, Control, ControlActionType, ControlEvent, ControlEventType, ControlType, 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, 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 };
80
+ export { AnyManifest, Chapter, ChapterBranch, ChapterContainer, ChapterError, ChapterSuspenseActionType, ContainerEvent, ContainerSuspenseActionType, Control, ControlActionType, ControlEvent, ControlEventType, ControlType, 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 };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as AnyManifest, M as Manifest_3_3, C as Chapter, a as ChapterError, b as ChapterBranch, c as ContainerSuspenseActionType, d as ContainerEvent, e as Control, f as ChapterSuspenseActionType, g as ChapterContainer, h as ControlType, i as ControlEventType, j as ControlActionType, k as ControlEvent, G as GraphCustomChapter, l as GraphDesign, m as Metadata, n as Media, o as GraphEditModeDesign, p as GraphEditChapter, q as GraphViewModeDesign, r as GraphViewChapter } from './chapter-COPBtRYg.js';
2
- export { W as AnyChapter, X as AnyContainer, Y as AnyControl, u as ChapterEvent, s as ChapterEventType, t as ContainerEventType, P as ContainerTypes, v as ControlLayoutParams, w as ControlProps, Q as ControlTypes, J as CustomManifestVideoVariant, E as DEFAULT_MANIFEST_VERSION, K as DefaultManifestVideoVariant, U as EventActionTypes, R as EventTypes, I as Extension, F as Font, x as GraphBackground, D as GraphBranch, B as GraphDefaultBranch, y as GraphEditDefaultChapter, z as GraphViewDefaultChapter, N as ManifestVideo, L as ManifestVideoVariant, H as ManifestVideoVariantType, O as MediaLink, Z as Nullable, S as Standard, T as TEST_VERSION_REGEX, V as VideoId } from './chapter-COPBtRYg.js';
1
+ import { A as AnyManifest, M as Manifest_3_3, C as Chapter, a as ChapterError, b as ChapterBranch, c as ContainerSuspenseActionType, d as ContainerEvent, e as Control, f as ChapterSuspenseActionType, g as ChapterContainer, h as ControlType, R as RectangleSize, i as ControlEventType, j as ControlActionType, k as ControlEvent, G as GraphCustomChapter, l as GraphDesign, m as Metadata, n as Media, o as GraphEditModeDesign, p as GraphEditChapter, q as GraphViewModeDesign, r as GraphViewChapter } from './chapter-DI_7rDZW.js';
2
+ export { X as AnyChapter, Y as AnyContainer, Z as AnyControl, u as ChapterEvent, s as ChapterEventType, t as ContainerEventType, P as ContainerTypes, v as ControlLayoutParams, w as ControlProps, Q as ControlTypes, J as CustomManifestVideoVariant, E as DEFAULT_MANIFEST_VERSION, K as DefaultManifestVideoVariant, V as EventActionTypes, U as EventTypes, I as Extension, F as Font, x as GraphBackground, D as GraphBranch, B as GraphDefaultBranch, y as GraphEditDefaultChapter, z as GraphViewDefaultChapter, N as ManifestVideo, L as ManifestVideoVariant, H as ManifestVideoVariantType, O as MediaLink, _ as Nullable, S as Standard, T as TEST_VERSION_REGEX, W as VideoId } from './chapter-DI_7rDZW.js';
3
3
 
4
4
  interface ManifestDataTemplate {
5
5
  id: string;
@@ -30,7 +30,7 @@ declare const updateContainerSuspenseAction: (chapter: Chapter, container: Chapt
30
30
  declare const removeControlsFromContainers: (containers: ChapterContainer[], controlIds: string[]) => ChapterContainer[];
31
31
  declare const canBeEndNode: (chapter: Chapter) => boolean;
32
32
 
33
- declare const createControl: (type: ControlType, label: string, text: string | undefined) => Control;
33
+ declare const createControl: (type: ControlType, label: string, text: string | undefined, containerSize?: RectangleSize) => Control;
34
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
 
@@ -77,4 +77,4 @@ declare const toDict: <T extends {
77
77
  type ResultType = -1 | 0 | 1;
78
78
  declare const compareVersions: (v1?: string, v2?: string) => ResultType;
79
79
 
80
- export { AnyManifest, Chapter, ChapterBranch, ChapterContainer, ChapterError, ChapterSuspenseActionType, ContainerEvent, ContainerSuspenseActionType, Control, ControlActionType, ControlEvent, ControlEventType, ControlType, 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, 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 };
80
+ export { AnyManifest, Chapter, ChapterBranch, ChapterContainer, ChapterError, ChapterSuspenseActionType, ContainerEvent, ContainerSuspenseActionType, Control, ControlActionType, ControlEvent, ControlEventType, ControlType, 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 };
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 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};
1
+ import {v4}from'uuid';var J=Object.defineProperty,$=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var R=(t,e,r)=>e in t?J(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)=>$(t,j(e));var g=(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",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=(h=>(h.openURI="openURI",h.setNextBranch="setNextBranch",h.setWeightlessRandomBranch="setWeightlessRandomBranch",h.setRandomBranch="setRandomBranch",h.setMaxWeightBranch="setMaxWeightBranch",h.setMinWeightBranch="setMinWeightBranch",h.setDefaultBranch="setDefaultBranch",h.continuePlayback="continuePlayback",h.expect="expect",h))(q||{});var F="3.1";var _=(t,e)=>e==null?void 0:e.find(r=>r.type===t),Rt=(t,e)=>e?e.findIndex(r=>r.type===t):-1;var tt=["Button"],et=["Button"],rt=1.5,nt=.1,at=4.48,N=Object.freeze({background:"#0D0F12",border:"#0D0F12",text:"#F2F5FF"}),At=(t,e,r,n)=>({id:v4(),type:t,label:e,layoutParams:st(t,n),props:it(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}}}}},ot={Text:0,Button:.3,Area:.35},st=(t,e)=>{let r=t==="Text",n=r?.12:.09,a=.4;if(e!=null&&e.width&&r){let i=e.height*nt*rt,p=i*at,c=Math.ceil(p/e.width);a=Math.min(1,p/e.width),n=i/e.height*c;}return {x:.5,y:ot[t]||0,width:a,height:n,angle:0,innerSizesDependOn:"video"}},it=(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}})},Ft=(t,e,r,n)=>{let a=t.containers.find(u=>u.id===e),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 l=u.action.args,m=g(l,["uri"]);return s(o({},u),{action:s(o({},u.action),{type:n,args:s(o({},m),{branchId:n==="setNextBranch"?u.action.args.branchId:void 0,isDetachContainer:n==="openURI"?!1:void 0})})})}return u}):p.push(C("onClick",n)));let h=n!=="setNextBranch"?t.branches.filter(u=>u.id!==d):t.branches;return s(o({},t),{branches:h,containers:t.containers.map(u=>u.id===e?s(o({},u),{controls:u.controls.map(l=>l.id===r?s(o({},l),{events:p}):l)}):u)})};var L=t=>{let e=[];for(let p of t.chapters){let c,d=[];for(let r of p.branches){let n=r,{isDefault:l}=n,f=g(n,["isDefault"]);l&&(c=f.id),d.push(f);}let h,u=[];for(let a of p.containers){let i=a,{fallbackStrategy:l}=i,f=g(i,["fallbackStrategy"]);switch(l){case"await":h=[];break;case"default":h=[{type:"onSuspense",action:{type:"setNextBranch",args:{branchId:c,shouldOpenNow:!0}}}];break;case"weightlessRandom":case"random":h=[{type:"onSuspense",action:{type:"setRandomBranch",args:{shouldOpenNow:!0}}}];break}for(let m of f.controls)u.push(s(o({},f),{controls:[s(o({},m),{events:m.subtype==="Text"||m.events.length?m.events:[C("onClick","continuePlayback")]})],id:v4(),events:[{type:"onSuspense",action:{type:"continuePlayback",args:{shouldOpenNow:!0}}}]}));}e.push(s(o({},p),{containers:u,events:h,branches:d}));}return t.metadata.version=F,t.metadata.updated=new Date().toISOString(),s(o({},t),{chapters:e})};var P="3.2";var k=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 qt=(t="[Untitled]")=>({id:v4(),label:t,order:"simple",branches:[],containers:[],events:[]}),Qt=(t,e,r)=>{let n=1,a=()=>`${t} (${e}${n})`,i=a();for(;r.has(i);)n+=1,i=a();return i},te=(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:[E("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)})},ee=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},re=t=>({id:v4(),chapterId:t}),E=(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")),ct=(t,e)=>{let r=new Set,n=0;t.containers.forEach(h=>{n=n+h.controls.length,h.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 h=d%a+1,u=Math.floor(d/a)*i,l=h%2===0?.5:.05+u,f=e.layoutParams.y+p*Math.round(h/2)+u;r.has([l,f].join())||c.push(l,f),d=d+1;}return c},ne=(t,e)=>{var c;let[r,n]=ct(t,e),a=(c=t.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))&&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"}]})},ae=(t,e,r)=>{if(!t.containers.find(c=>c.id===r))return t;let a=[],i=G(t),p=t.containers.filter(c=>{var d;return c.id===r&&(c.controls.forEach(h=>{var u;h.id===e&&((u=h.events)!=null&&u.length)&&a.push(...h.events.map(l=>l.action.args.branchId));}),(d=c.events)!=null&&d.length&&a.push(...c.events.map(h=>h.action.args.branchId))),c.id!==r});return s(o({},t),{containers:p,branches:t.branches.filter(c=>!a.includes(c.id)),events:dt(t.events,i.length===1)})},dt=(t,e=!1)=>e?t.find(n=>n.type==="onSuspense"&&n.action.type==="setNextBranch")?t:[]:t,oe=(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:[E("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)})},T=(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:T(e,n.events)})),events:T(e,r.events)})),events:T(e,t.events)}):t,se=(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})},ie=t=>{if(!t.events)return;let e=t.events.find(r=>r.type==="onSuspense");return e==null?void 0:e.action.type},pe=(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,c=s(o({},e),{events:n});return s(o({},t),{branches:p,containers:t.containers.map(d=>d.id===e.id?c:d)})},ce=(t,e)=>{let r=new Set(e);return t.map(n=>s(o({},n),{controls:n.controls.filter(a=>!r.has(a.id))}))},de=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 v=(t=[])=>({edit:{chapters:t},view:{}}),X=(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,c=g(n,["x","y"]),d=Array.isArray(a.events)&&!a.events.length,h=[],u=c.containers.map(l=>{var f;return s(o({},l),{events:(d?(f=l.events)==null?void 0:f.map(m=>m.type==="onSuspense"?(m.action.args.branchId&&h.push(m.action.args.branchId),E("expect")):m):l.events)||[],controls:l.controls.map(Ct=>{var V=Ct,{subtype:m}=V,B=g(V,["subtype"]);return s(o({},B),{type:m,events:B.events||[C("onClick","continuePlayback")]})})})});e.push(U(s(o({},c),{containers:u,events:a.events||[]}),h)),r.push({id:c.id,x:i,y:p});}return s(o({},t),{chapters:e,graph:v(r),metadata:s(o({},t.metadata),{version:y})})};var ht=[{version:"3.0",migrate:L},{version:"3.1",migrate:k},{version:"3.2",migrate:W}],z=t=>ht.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},Te=t=>b(t,e=>e.id),I=(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 ut=(r=>(r.Failed="ManifestParsingFailed",r.UnsupportedVersion="ManifestUnsupportedVersion",r))(ut||{}),De=t=>{let e;try{e=JSON.parse(t);}catch(p){throw new Error("ManifestParsingFailed")}e.metadata.version!==y&&(e=z(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 we(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:v([X(n,[0,0])])};return t?JSON.stringify(a):a}var lt="3.0.0",mt="3.3.0",Ae=t=>{let e=I(t,lt);return e===-1?!1:e===0?!0:I(t,mt)!==1};var S={id:"generate_id"},Ge=t=>({id:v4(),name:"Template",chapterType:t.order,template:JSON.stringify(t.containers,(e,r)=>S[e]||r),type:"container",manifestVersion:y});var ze=(t,e)=>{try{let r=JSON.parse(e.template,(n,a)=>{if(S[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,Y as ContainerTypes,K as ControlTypes,y as DEFAULT_MANIFEST_VERSION,q as EventActionTypes,Z as EventTypes,mt as MAX_MANIFEST_VERSION,lt as MIN_MANIFEST_VERSION,ut as ManifestParsingError,A as TEST_VERSION_REGEX,oe as addBranchToChapter,ne as addControlToChapter,ze as applyContainerTemplate,de as canBeEndNode,I as compareVersions,Ge as containersTemplateCreator,te as copyChapter,qt as createChapter,re as createChapterBranch,E as createContainerEvent,At as createControl,C as createControlEvent,v as createDefaultGraphDesign,X as createGraphChapter,we as createManifest,ie as getChapterSuspenseActionType,Qt as getCopiedChapterLabel,_ as getEventByType,Rt as getEventIndexByType,Ae as isSupportedManifest,z as migrateManifestToLatestVersion,b as normalize,De as parseManifest,U as removeBranchesFromChapter,ae as removeControlFromChapter,ce as removeControlsFromContainers,S as replacers,Te as toDict,se as updateChapterSuspenseAction,pe as updateContainerSuspenseAction,Ft as updateControlActionEventLegacy,ee as validateChapter};
@@ -1,4 +1,4 @@
1
- import { C as Chapter, u as ChapterEvent, g as ChapterContainer, v as ControlLayoutParams, e as Control, M as Manifest_3_3, _ as Manifest_3_0, $ as Manifest_3_1, a0 as Manifest_3_2, N as ManifestVideo } from '../chapter-COPBtRYg.cjs';
1
+ import { C as Chapter, u as ChapterEvent, g as ChapterContainer, v as ControlLayoutParams, e as Control, M as Manifest_3_3, $ as Manifest_3_0, a0 as Manifest_3_1, a1 as Manifest_3_2, N as ManifestVideo } from '../chapter-DI_7rDZW.cjs';
2
2
 
3
3
  declare const MOCKED_CHAPTER: Chapter;
4
4
  declare const MOCKED_CHAPTER_EVENT: ChapterEvent;
@@ -1,4 +1,4 @@
1
- import { C as Chapter, u as ChapterEvent, g as ChapterContainer, v as ControlLayoutParams, e as Control, M as Manifest_3_3, _ as Manifest_3_0, $ as Manifest_3_1, a0 as Manifest_3_2, N as ManifestVideo } from '../chapter-COPBtRYg.js';
1
+ import { C as Chapter, u as ChapterEvent, g as ChapterContainer, v as ControlLayoutParams, e as Control, M as Manifest_3_3, $ as Manifest_3_0, a0 as Manifest_3_1, a1 as Manifest_3_2, N as ManifestVideo } from '../chapter-DI_7rDZW.js';
2
2
 
3
3
  declare const MOCKED_CHAPTER: Chapter;
4
4
  declare const MOCKED_CHAPTER_EVENT: ChapterEvent;
@@ -0,0 +1,7 @@
1
+ # Описание проблемы
2
+
3
+ https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/main/docs/problems/NoResolution.md
4
+
5
+ # Выбранное решение проблемы
6
+
7
+ https://github.com/andrewbranch/example-subpath-exports-ts-compat/tree/main/examples/node_modules/package-json-redirects
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@interactiveplatform/movika-manifest",
3
3
  "author": "interactiveplatform",
4
- "version": "1.0.0",
4
+ "version": "1.0.1-dev.0",
5
5
  "license": "ISC",
6
6
  "type": "module",
7
7
  "main": "./dist/index.cjs",