@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.
- package/dist/{chapter-COPBtRYg.d.cts → chapter-DI_7rDZW.d.cts} +2 -1
- package/dist/{chapter-COPBtRYg.d.ts → chapter-DI_7rDZW.d.ts} +2 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/mocks/index.d.cts +1 -1
- package/dist/mocks/index.d.ts +1 -1
- package/mocks/README.MD +7 -0
- package/package.json +1 -1
@@ -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
|
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
|
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-
|
2
|
-
export {
|
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-
|
2
|
-
export {
|
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};
|
package/dist/mocks/index.d.cts
CHANGED
@@ -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,
|
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;
|
package/dist/mocks/index.d.ts
CHANGED
@@ -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,
|
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;
|
package/mocks/README.MD
ADDED
@@ -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
|