narrat 3.0.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/narrat.es.js CHANGED
@@ -39144,7 +39144,7 @@ const Up = "###_--_~=:;_JUMP", Lb = "###_--_~=:;_RETURN", Ite = "###_--_~=:;_OK"
39144
39144
  function Nte(t) {
39145
39145
  return t === Up || t === Lb || t === Ite || t === Wp;
39146
39146
  }
39147
- const Lte = "3.0.1", Dte = /* @__PURE__ */ new Date("2023-06-24T20:29:23.667Z"), Rte = 400, Kp = 20;
39147
+ const Lte = "3.0.2", Dte = /* @__PURE__ */ new Date("2023-06-24T20:35:31.905Z"), Rte = 400, Kp = 20;
39148
39148
  /*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
39149
39149
  function BN(t) {
39150
39150
  return typeof t > "u" || t === null;
@@ -178,7 +178,7 @@ Found in store "${C.$id}".`),p&&o&&n.hydrate&&n.hydrate(C.$state,p),u=!0,f=!0,C}
178
178
  This will fail in production.`);s=$f,s._s.has(r)||(o?M1(r,e,i,s):oN(r,i,s),process.env.NODE_ENV!=="production"&&(a._pinia=s));const f=s._s.get(r);if(process.env.NODE_ENV!=="production"&&l){const c="__hot:"+r,d=o?M1(c,e,i,s,!0):oN(c,jo({},i),s,!0);l._hotUpdate(d),delete s.state.value[c],s._s.delete(c)}if(process.env.NODE_ENV!=="production"&&qp&&u&&u.proxy&&!l){const c=u.proxy,d="_pStores"in c?c._pStores:c._pStores={};d[r]=f}return f}return a.$id=r,a}function Ls(t,e){return Array.isArray(e)?e.reduce((n,r)=>(n[r]=function(){return t(this.$pinia)[r]},n),{}):Object.keys(e).reduce((n,r)=>(n[r]=function(){const i=t(this.$pinia),o=e[r];return typeof o=="function"?o.call(this,i):i[o]},n),{})}const aN=["music","ambiant","sound"],sN=OZ(aN),Ur=Ir("audio",{state:()=>{const t=new Map;for(const e in sN)t.set(e,{channels:[],options:{volume:1}});return{modes:t,masterVolume:1}},actions:{stopAll(){this.modes.forEach(t=>{t.channels.forEach((e,n)=>{e&&(this.actuallyStopChannel(e),t.channels[n]=null)})})},async stopChannel(t,e){const n=this.getAudioChannel(t,e);if(n){if(this.setAudioChannel(t,e,null),Aa().options.musicFadeOutTime){const r=Tl(n.audio);r&&r.fade(r.volume(n.howlerId),0,Aa().options.musicFadeOutTime*1e3,n.howlerId),await xo(Aa().options.musicFadeOutTime*1e3)}this.actuallyStopChannel(n)}},async pauseChannel(t,e){const n=this.getAudioChannel(t,e);if(!n)return;const r=Tl(n.audio);if(!r){Nt(`Could not find audio ${n.audio}`);return}r.pause(n.howlerId)},async playChannel(t,e,n){ja.Howler.ctx.state==="suspended"&&(console.warn("Audio context is suspended :o"),ja.Howler.ctx.resume());const r=this.getAudioChannel(t,n);if(t==="sound")return this.actuallyPlayChannel(t,n,e);r&&r.audio!==e?await this.changeChannel(t,e,n):r&&r.audio===e?await this.resumeChannel(t,n):await this.actuallyPlayChannel(t,n,e)},async resumeChannel(t,e){const n=this.getAudioChannel(t,e);if(!n)return;const r=Tl(n.audio);if(!r){Nt(`Could not find audio ${n.audio}`);return}r.play(n.howlerId)},async changeChannel(t,e,n){this.getAudioChannel(t,n)&&t!=="sound"&&await this.stopChannel(t,n),await this.actuallyPlayChannel(t,n,e)},actuallyStopChannel(t){see(t.audio,t.howlerId)},getAudioChannel(t,e){return this.modes.get(t).channels[e]||null},setAudioChannel(t,e,n){this.modes.get(t).channels[e]=n},async actuallyPlayChannel(t,e,n){const r=Tl(n);if(!r){Nt(`Could not find audio ${n}`);return}if(t!=="sound"){const i=r.play();r.volume(0,i),r.pause(i),this.setAudioChannel(t,e,{audio:n,howlerId:i}),await xo(Aa().options.musicFadeInDelay*1e3);const o=this.getAudioChannel(t,e);o!==null&&o.audio===n&&(r.play(i),r.fade(0,this.modeVolume(t)*r.volume(),Aa().options.musicFadeInTime*1e3,i))}else if(t==="sound"){const i=r.play();r.volume(this.modeVolume(t)*r.volume(),i),this.setAudioChannel(t,e,{audio:n,howlerId:i})}},reloadAudio(t){for(const e in t.modes){if(e==="sound")continue;const n=e;this.modes.get(n).options=Sr(t.modes[n].options);for(const r in t.modes[n].channels){const i=t.modes[n].channels[r];i&&i.audio&&this.actuallyPlayChannel(n,Number(r),i.audio)}}},stopSound(t){const e=Tl(t);e&&e.stop()},generateSaveData(){const t={};for(const e in sN){const n=this.modes.get(e);t[e]={options:Sr(n.options),channels:Sr(n.channels).map(r=>r?{audio:r.audio}:{audio:null})}}return{modes:t,masterVolume:this.masterVolume}},loadSaveData(t){this.masterVolume=t.masterVolume},reset(){this.stopAll()},setModeVolume(t,e){const n=this.modes.get(t);n.options.volume=e;for(const r in n.channels){const i=n.channels[r];if(i){const o=Tl(i.audio);o&&o.volume(this.modeVolume(t),i.howlerId)}}},setMasterVolume(t){this.masterVolume=t,ja.Howler.volume(t)},modeVolume(t){return this.masterVolume*this.modes.get(t).options.volume}}}),lN={};ja.Howler.volume(.5);let P1={};async function oee(t){Hi.log("Loading audio");const e=[];ja.Howler.volume(t.options.volume);for(const n in t.files){const r=t.files[n];r.src||(r.src=r.path,r.path||console.error(`Audio config for ${n} doesn't have any \`src\` value to find the file`),console.warn("Using `path` for audio and musics is deprecated. Please replace `path` with `src` in your config file!")),e.push(aee(n,t.files[n]))}return t.audioTriggers&&(P1=t.audioTriggers),Promise.all(e)}function El(t){P1[t]&&Ur().playChannel("sound",P1[t],0)}async function aee(t,e){return new Promise((n,r)=>{Hi.log(`Loading audio ${e.src}`);const i=new ja.Howl({...e,src:$o(e.src)});i.load(),lN[t]=i,n()})}function see(t,e){const n=Tl(t);if(!n){Ml(`Could not find music ${t}`);return}n.stop(e)}function Tl(t){return lN[t]}const Iu={};async function lee(t){return Iu[t]?Iu[t]:uN(t,t)}async function uee(t){Hi.log("Loading images");let e=0,n=0;const r=[],i=async(a,s)=>{n++;const l=await uN(a,s);return e++,console.log(`Loaded ${e} / ${n} images`),l},o=(a,s)=>{r.push(i(a,s))};for(const a in t.images){const s=t.images[a];o(a,s)}for(const a in t.screens.screens){const s=t.screens.screens[a];if(s.background&&!t.images[s.background]&&o(s.background,s.background),s.buttons)for(const l in s.buttons){const u=s.buttons[l];typeof u=="object"&&u.background&&!t.images[u.background]&&o(u.background,u.background)}}return Promise.all(r)}async function uN(t,e){if(Iu[t])return Iu[t];const n=new Promise((r,i)=>{Hi.log(`Loading image ${t} at ${e}`);const o=new Image;o.onload=()=>{Iu[t]=o,Hi.log(`Loaded image ${t} successfully`),r(o)},o.onerror=a=>{Nt(`Failed to load image ${t} at ${e}`,a),i(a)},o.src=$o(e)});return Iu[t]=n,n}function Du(){return`${Date.now()}-${Math.floor(Math.random()*1e11)}-${Math.floor(Math.random()*1e11)}`}const cN="2.17.0";function N1(){return`NARRAT_SAVE_${ct().saveFileName}`}const cee="gameSave";let Er;function Xa(){if(Er)return Er;if(!Er){let t=null;try{let e=localStorage.getItem(N1());e||(e=localStorage.getItem(cee)),e&&(localStorage.setItem(`${N1()}_BACKUP`,e),t=JSON.parse(e)),t&&typeof t=="object"&&t.slots&&t.slots[0]&&t.slots[0].id||(t=null,localStorage.clear())}catch(e){Ml(`Save file deleted because it was either broken or an outdated format: ${e}`)}t?Er=t:Er=dN()}return dee(Er),hN(Er),Of(),Er}function fee(){Er=dN(),Of()}function fN(){return{achievements:{achievements:{}},data:{}}}function dee(t){t.version==="1.4.0"&&(t.globalSave=fN(),t.version="1.5.0"),t.version==="1.5.0"&&(t.version="2.16.0"),t.version==="2.16.0"&&(t.slots.forEach(e=>{e&&e.saveData&&(e.saveData.settings={baseSettings:{textSpeed:30,animateText:!0,fontSize:16},customSettings:{}})}),t.version="2.17.0")}function dN(){const t={version:cN,slots:[],globalSave:fN()};return hN(t),t}function hN(t){const e=ct().saves.slots??10;t.slots.length<1&&(t.slots[0]={slotType:"auto",id:Du(),saveData:null,slotNumber:0}),t.slots[0].slotType="auto";for(let n=1;n<e+1;n++)t.slots.length<=n&&(t.slots[n]={slotNumber:n,slotType:ct().saves.mode==="manual"?"manual":"auto",id:Du(),saveData:null})}function pN(t,e,n){const r=mee(n);if(Er.slots[r])Er.slots[r].saveData=t;else{Nt(`Tried to save to slot ${n} but it doesn't exist`);return}Er.globalSave=e,Of()}function hee(t){Er.lastSaveSlot=t}function Of(){localStorage.setItem(N1(),JSON.stringify(Er))}function pee(){const t=Er.slots.find(e=>!e.saveData);return t?t.id:!1}function mee(t){return Er.slots.findIndex(e=>e.id===t)}function Af(t){return Er.slots.find(e=>e.id===t)}function I1(){return Er.slots.find(t=>t.slotType==="auto")}function vee(t){const e=Er.slots.findIndex(n=>n.id===t);Er.slots[e].saveData=null,Of()}function gee(t,e){const n=Af(t);n&&n.saveData&&(n.saveData.metadata.name=e),Of()}function yee(){return{saveDate:new Date().toISOString(),name:"New Save"}}const Gp=Ir("tooltips",{state:()=>({tooltip:null}),actions:{addCustomTooltip(t){t.title&&(t.title=Za(t.title)),t.text=Za(t.text),this.tooltip=t},addTooltip(t,e){const n=p8(t);n&&this.addCustomTooltip({title:n.title,text:n.description,x:(e==null?void 0:e.x)??window.screenX,y:(e==null?void 0:e.y)??window.screenY,width:ed().options.width})},deleteTooltip(){this.tooltip=null}}});function D1(){return window}function bee(t){const e=ed().options.keywordsPrefix,n=new RegExp(`${e}(\\w*)`,"gi");return t=t.replace(n,kee),t}D1().onTooltipEnter=(t,e)=>{const n={x:t.clientX,y:t.clientY-20};Gp().addTooltip(e,n)},D1().onTooltipLeave=()=>{Gp().deleteTooltip()};function kee(t,e){const n=e.toLowerCase();return p8(n)?`<span class='highlighted-tooltip-keyword'
179
179
  onmouseenter="onTooltipEnter(event, '${n}')"
180
180
  onmouseleave="onTooltipLeave()">${e}</span>`:n}function Za(t){const e=t.replace(/%{[^}]*}/g,n=>{const r=n.substr(2,n.length-3);return mN(r)});return bee(e)}function mN(t){const e=Xu(),[n,r]=Pm(e,t);return n[r]}const vN=/\$\$"/,wee=t=>typeof t=="string"&&t.search(vN)===0;function _ee(t){let e=null;const n=[],r=/<[^>]*>/g;do e=r.exec(t),e&&n.push(e);while(e);return n}const Rn=Ir("dialog",{state:()=>({dialog:[],playMode:"normal"}),actions:{generateSaveData(){return{dialog:Sr(this.dialog)}},loadSaveData(t){this.dialog=t.dialog},addDialog(t){this.dialog.push({...t,interactive:t.interactive??!1,id:Du(),text:Za(t.text)}),this.dialog.length>200&&this.dialog.shift()},toggleAutoPlay(){this.playMode=this.playMode==="auto"?"normal":"auto"},toggleSkip(){this.playMode=this.playMode==="skip"?"normal":"skip"},clearDialog(){this.dialog.splice(0,this.dialog.length)},reset(){this.dialog=[],this.playMode="normal"}},getters:{currentDialog(){return this.dialog[this.dialog.length-1]}}});function xee(t,e){return t-e*Xf().options.extraPointsPerLevel}function gN(t,e){const{options:n}=Xf();let r=t;n.showDifficultyWithoutModifiers||(r=xee(t,e));const i=Xf().options;let o=!1,a=0,s=i.difficultyText[0][1];for(;!o;)i.difficultyText.length>a&&r>=i.difficultyText[a][0]?s=i.difficultyText[a][1]:o=!0,a++;let l="";return n.showDifficultyText&&n.showDifficultyNumber?l=`${s} (${r})`:n.showDifficultyText?l=s:n.showDifficultyNumber&&(l=r.toString()),l}function jee({skill:t,skillCheckId:e,value:n}){const r=yr(),i=r.getSkillCheck(e),o=nk(t),a=r.skills[t].level,s=gN(n,a);let l=!0,u=`<span class='skill-check'>[<span class='skill-check-name'>${o.name}</span> - `;return i.happened?i.succeeded?u="":(l=!1,u+=` <span class='skill-check-difficulty'>${s}</span> - <span class='skill-check-failed'>FAILED</span>]</span>`):u+=` <span class='skill-check-difficulty'>${s}</span>]</span>`,{difficultyText:u,allowed:l}}function See(t,e){const n=yr(),r=nk(e.skill),i=gN(e.difficulty,n.skills[e.skill].level);return`<span class='passive-skill-check skill-check'>[<span class='skill-check-name'>${r.name}</span> - <span class='skill-check-difficulty'>${i}</span> - ${t?'<span class="skill-check-success">Success</span>':'<span class="skill-check-failed">Failure</span>'}]</span>`}function Cee(t){const{options:e}=Xf(),n=$ee(e,t),o=yr().skills[t].level*e.extraPointsPerLevel;let a=n.reduce((s,l)=>s+l.unmodified,o);return e.finalRollIsHighest?(a=n.reduce((s,l)=>l.modified>s?l.modified:s,0),Hi.log(`[SKILL CHECK] Keeping only highest roll: ${a}`)):e.finalRollIsLowest&&(a=n.reduce((s,l)=>l.modified<s?l.modified:s,n[0].modified),Hi.log(`[SKILL CHECK] Keeping only lowest roll: ${a}`)),{roll:a,rolls:n}}function $ee(t,e){const r=yr().skills[e],i=r.level*t.extraPointsPerLevel;let{diceRange:o,diceCount:a}=t;t.extraDicePerLevel&&(a+=t.extraDicePerLevel*r.level);const s=[];for(let l=0;l<a;l++){const u=Eee(o),f=u+i;Hi.log(`[SKILL CHECK] Roll ${l+1}/${a}: ${f}. (Base roll: ${u}, modifier: ${i} - Skill level: ${r.level})`),s.push({unmodified:u,modified:f})}return s}function Eee(t){return Math.floor(Math.random()*t[1])+t[0]}function Tee(t){const{skills:e}=rs(),{roll:n,rolls:r}=Cee(t.skill),i=e[t.skill];let o=!1;if(typeof t.winsNeeded=="number"){const a=r.reduce((s,l)=>(yN(l.modified,t.difficulty)&&s++,s),0);a>=t.winsNeeded&&(o=!0),Hi.log(`[SKILL CHECK ${i.name}] - Dice pool mode. ${t.winsNeeded} wins needed. Got ${a} successes.
181
- (${t.id} - ${a}/${t.winsNeeded} - rolls: ${JSON.stringify(r.map(s=>s.modified))})`)}else o=yN(n,t.difficulty),Hi.log(`[SKILL CHECK ${i.name}]: ${o?"✅":"❌"}`,`(${t.id}) - ${n}/${t.difficulty}`);return El(o?"onSkillCheckSuccess":"onSkillCheckFailure"),o}function yN(t,e){const{options:n}=Xf();let r=t>=e;return n.successOnRollsBelowThreshold&&(r=t<=e),n.failOnRollsEqualToThreshold&&t===e&&(r=!1),r}function bN(t){const e=yr(),n=e.getSkillCheck(t.id);if(n&&n.happened&&(n.succeeded||!t.repeatable))return n;const r=Tee(t);return _N(See(r,t)),r?e.passSkillCheck(t.id,t.hideAfterRoll):e.failSkillCheck(t.id,t.hideAfterRoll),e.getSkillCheck(t.id)}function Oee(t,e=[]){const n=t.options,r=t.staticOptions,i=!!n.condition;if(i)return r.success;if(!i){for(const[o,a]of r.elseifs.entries())if(e[o]===!0)return a.branch}if(!i&&r.failure)return r.failure}function kN(t){return typeof t=="object"}function wN(t){return typeof t=="string"&&t.search(/\$/)===0}function _N(t){const e={speaker:"game",text:t,interactive:!1};Rn().addDialog(e)}async function L1(t){Rn().addDialog(t)}function Aee(t,e){if(e<t.length)return t[e]}const Jp="###_--_~=:;_JUMP",R1="###_--_~=:;_RETURN",Mee="###_--_~=:;_OK",Qp="###_--_~=:;_STOP";function Pee(t){return t===Jp||t===R1||t===Mee||t===Qp}const Nee="3.0.1",Iee=new Date("2023-06-24T20:29:23.667Z"),Dee=400,Yp=20;/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function xN(t){return typeof t>"u"||t===null}function Lee(t){return typeof t=="object"&&t!==null}function Ree(t){return Array.isArray(t)?t:xN(t)?[]:[t]}function Bee(t,e){var n,r,i,o;if(e)for(o=Object.keys(e),n=0,r=o.length;n<r;n+=1)i=o[n],t[i]=e[i];return t}function zee(t,e){var n="",r;for(r=0;r<e;r+=1)n+=t;return n}function Fee(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var Vee=xN,qee=Lee,Hee=Ree,Uee=zee,Wee=Fee,Kee=Bee,Dr={isNothing:Vee,isObject:qee,toArray:Hee,repeat:Uee,isNegativeZero:Wee,extend:Kee};function jN(t,e){var n="",r=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(n+='in "'+t.mark.name+'" '),n+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!e&&t.mark.snippet&&(n+=`
181
+ (${t.id} - ${a}/${t.winsNeeded} - rolls: ${JSON.stringify(r.map(s=>s.modified))})`)}else o=yN(n,t.difficulty),Hi.log(`[SKILL CHECK ${i.name}]: ${o?"✅":"❌"}`,`(${t.id}) - ${n}/${t.difficulty}`);return El(o?"onSkillCheckSuccess":"onSkillCheckFailure"),o}function yN(t,e){const{options:n}=Xf();let r=t>=e;return n.successOnRollsBelowThreshold&&(r=t<=e),n.failOnRollsEqualToThreshold&&t===e&&(r=!1),r}function bN(t){const e=yr(),n=e.getSkillCheck(t.id);if(n&&n.happened&&(n.succeeded||!t.repeatable))return n;const r=Tee(t);return _N(See(r,t)),r?e.passSkillCheck(t.id,t.hideAfterRoll):e.failSkillCheck(t.id,t.hideAfterRoll),e.getSkillCheck(t.id)}function Oee(t,e=[]){const n=t.options,r=t.staticOptions,i=!!n.condition;if(i)return r.success;if(!i){for(const[o,a]of r.elseifs.entries())if(e[o]===!0)return a.branch}if(!i&&r.failure)return r.failure}function kN(t){return typeof t=="object"}function wN(t){return typeof t=="string"&&t.search(/\$/)===0}function _N(t){const e={speaker:"game",text:t,interactive:!1};Rn().addDialog(e)}async function L1(t){Rn().addDialog(t)}function Aee(t,e){if(e<t.length)return t[e]}const Jp="###_--_~=:;_JUMP",R1="###_--_~=:;_RETURN",Mee="###_--_~=:;_OK",Qp="###_--_~=:;_STOP";function Pee(t){return t===Jp||t===R1||t===Mee||t===Qp}const Nee="3.0.2",Iee=new Date("2023-06-24T20:35:31.905Z"),Dee=400,Yp=20;/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function xN(t){return typeof t>"u"||t===null}function Lee(t){return typeof t=="object"&&t!==null}function Ree(t){return Array.isArray(t)?t:xN(t)?[]:[t]}function Bee(t,e){var n,r,i,o;if(e)for(o=Object.keys(e),n=0,r=o.length;n<r;n+=1)i=o[n],t[i]=e[i];return t}function zee(t,e){var n="",r;for(r=0;r<e;r+=1)n+=t;return n}function Fee(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}var Vee=xN,qee=Lee,Hee=Ree,Uee=zee,Wee=Fee,Kee=Bee,Dr={isNothing:Vee,isObject:qee,toArray:Hee,repeat:Uee,isNegativeZero:Wee,extend:Kee};function jN(t,e){var n="",r=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(n+='in "'+t.mark.name+'" '),n+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!e&&t.mark.snippet&&(n+=`
182
182
 
183
183
  `+t.mark.snippet),r+" "+n):r}function Mf(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=jN(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Mf.prototype=Object.create(Error.prototype),Mf.prototype.constructor=Mf,Mf.prototype.toString=function(e){return this.name+": "+jN(this,e)};var Oi=Mf;function B1(t,e,n,r,i){var o="",a="",s=Math.floor(i/2)-1;return r-e>s&&(o=" ... ",e=r-s+o.length),n-r>s&&(a=" ...",n=r+s-a.length),{str:o+t.slice(e,n).replace(/\t/g,"→")+a,pos:r-e+o.length}}function z1(t,e){return Dr.repeat(" ",e-t.length)+t}function Gee(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var n=/\r?\n|\r|\0/g,r=[0],i=[],o,a=-1;o=n.exec(t.buffer);)i.push(o.index),r.push(o.index+o[0].length),t.position<=o.index&&a<0&&(a=r.length-2);a<0&&(a=r.length-1);var s="",l,u,f=Math.min(t.line+e.linesAfter,i.length).toString().length,c=e.maxLength-(e.indent+f+3);for(l=1;l<=e.linesBefore&&!(a-l<0);l++)u=B1(t.buffer,r[a-l],i[a-l],t.position-(r[a]-r[a-l]),c),s=Dr.repeat(" ",e.indent)+z1((t.line-l+1).toString(),f)+" | "+u.str+`
184
184
  `+s;for(u=B1(t.buffer,r[a],i[a],t.position,c),s+=Dr.repeat(" ",e.indent)+z1((t.line+1).toString(),f)+" | "+u.str+`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "narrat",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "narrat narrative engine",
5
5
  "main": "dist/narrat.umd.js",
6
6
  "module": "dist/narrat.es.js",