UNPKG

sextant

Version:

Chart application flows, then implement them in code

2 lines 32.6 kB
(this.webpackJsonpsextant=this.webpackJsonpsextant||[]).push([[0],{36:function(e,t,a){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.getTargetDatabaseFile=t.getTargetDir=void 0;var n=a(35);t.getTargetDir=function(){return Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).TARGET_DIR?n.resolve(e.cwd(),Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).TARGET_DIR):e.cwd()},t.getTargetDatabaseFile=function(){return n.resolve(t.getTargetDir(),"database.json")}}).call(this,a(50))},48:function(e,t,a){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,a=1,n=arguments.length;a<n;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.updateFeatureEventPayloadWithFunc=t.updateFeatureDescription=t.updateFeatureName=t.updateFeatureEventPayload=t.getStepsFromScenarios=t.deleteActor=t.updateActorName=t.addActor=t.deleteStep=t.updateStepEventName=t.addStep=t.DEFAULT_EVENT_NAME=t.duplicateScenario=t.deleteScenario=t.updateScenarioDescription=t.updateScenarioName=t.addFeature=t.addScenario=t.getActorsWithSteps=t.flattenDatabase=void 0;var r=a(80),i=a(37),c=a(81),o=function(){return r.default()};t.flattenDatabase=function(e){return{features:Object.values(e.features).map((function(e){return n(n({},c.sanitizeFeature(e)),{actors:Object.values(e.actors).map(c.sanitizeActor),scenarios:Object.values(e.scenarios).map(c.sanitizeScenario)})}))}},t.getActorsWithSteps=function(e,t){return e.map((function(a){return n(n({},a),{from:e.map((function(e){return{env:e.name,in:t.filter((function(t){return t.to===a.id&&t.from===e.id})),out:t.filter((function(t){return t.from===a.id&&t.to===e.id}))}})).filter((function(e){return e.in.length>0||e.out.length>0})),to:e.map((function(e){return{env:e.name,in:t.filter((function(t){return t.from===a.id&&t.to===e.id})),out:t.filter((function(t){return t.to===a.id&&t.from===e.id}))}})).filter((function(e){return e.in.length>0||e.out.length>0}))})}))},t.addScenario=function(e,t){return i.default(e,(function(e){var a=e.features[t],n=o();a.scenarios[n]={id:n,description:"Description",name:"New Scenario",order:Object.keys(a.scenarios).length,steps:[]}}))},t.addFeature=function(e){return i.default(e,(function(e){var t=o();e.features[t]={id:t,actors:{},description:"Description",eventPayloads:"",name:"New Feature",scenarios:{}}}))},t.updateScenarioName=function(e,t,a,n){return i.default(e,(function(e){e.features[t].scenarios[a].name=n}))},t.updateScenarioDescription=function(e,t,a,n){return i.default(e,(function(e){e.features[t].scenarios[a].description=n}))},t.deleteScenario=function(e,t,a){return i.default(e,(function(e){delete e.features[t].scenarios[a]}))},t.duplicateScenario=function(e,t,a){return i.default(e,(function(e){var r=o();e.features[t].scenarios[r]=n(n({},e.features[t].scenarios[a]),{id:r})}))},t.DEFAULT_EVENT_NAME="EVENT",t.addStep=function(e){var a=e.database,n=e.fromEnvId,r=e.index,c=e.scenarioId,s=e.featureId,l=e.toEnvId;return i.default(a,(function(e){e.features[s].scenarios[c].steps.splice(r,0,{event:t.DEFAULT_EVENT_NAME,id:o(),from:n,to:l})}))},t.updateStepEventName=function(e,t,a,n,r){return i.default(e,(function(e){e.features[t].scenarios[a].steps[n].event=r}))},t.deleteStep=function(e,t,a,n){return i.default(e,(function(e){e.features[t].scenarios[a].steps.splice(n,1)}))},t.addActor=function(e,t){return i.default(e,(function(e){var a=o();e.features[t].actors[a]={id:a,name:"New Actor"}}))},t.updateActorName=function(e,t,a,n,r){return i.default(e,(function(e){e.features[t].scenarios[a],e.features[t].actors[n].name=r}))},t.deleteActor=function(e,t,a){return Object.values(e.features[t].scenarios).forEach((function(e){e.steps.forEach((function(e){if(e.from===a||e.to===a)throw new Error("This actor cannot be deleted because steps depend on it.")}))})),i.default(e,(function(e){delete e.features[t].actors[a]}))},t.getStepsFromScenarios=function(e){return e.reduce((function(e,t){return e.concat(t.steps.reduce((function(e,t){return e.concat(t)}),[]))}),[])},t.updateFeatureEventPayload=function(e,t,a){return i.default(e,(function(e){e.features[t].eventPayloads=a}))},t.updateFeatureName=function(e,t,a){return i.default(e,(function(e){e.features[t].name=a}))},t.updateFeatureDescription=function(e,t,a){return i.default(e,(function(e){e.features[t].description=a}))},t.updateFeatureEventPayloadWithFunc=function(e,t,a){return i.default(e,(function(e){e.features[t].eventPayloads=a(e.features[t].eventPayloads)}))}},51:function(e,t){function a(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}a.keys=function(){return[]},a.resolve=a,e.exports=a,a.id=51},60:function(e,t,a){"use strict";var n=a(33),r=a(31),i=a(56),c=a.n(i),o=a(0),s=a.n(o),l=(a(75),a(76),a(77),a(17)),u=a.n(l),d=a(8),f=a(25),m=a(39),E=a(32),p=a(9),g=function(){return Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).REACT_APP_DATABASE_SAVE_MODE||"cli"},v=function(e){try{var t={},a=new URLSearchParams(e);return Array.from(a.keys()).forEach((function(e){t[e]=a.get(e)})),t}catch(n){return console.log("Something went wrong in getSearchParams",n),null}},b=function(e){return h(window.location.search,Object(E.a)({},"d",function(e){return btoa(JSON.stringify(e))}(e)))},h=function(e,t){var a=v(e);return new URLSearchParams(Object(m.a)(Object(m.a)({},a),t)).toString()},N=function(){switch(g()){case"localStorage":try{var e;return Promise.resolve(Object(p.migrateDatabase)(JSON.parse(atob((null===(e=v(window.location.search||""))||void 0===e?void 0:e.d)||""))))}catch(t){return Promise.resolve(void 0)}default:return fetch("/api/getDatabase").then((function(e){return e.json()}))}};var x=function(e){return s.a.createElement("svg",Object.assign({},e,{className:"fill-current ".concat(e.className),xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"}),s.a.createElement("path",{d:"M4.06 13a8 8 0 005.18 6.51A18.5 18.5 0 018.02 13H4.06zm0-2h3.96a18.5 18.5 0 011.22-6.51A8 8 0 004.06 11zm15.88 0a8 8 0 00-5.18-6.51A18.5 18.5 0 0115.98 11h3.96zm0 2h-3.96a18.5 18.5 0 01-1.22 6.51A8 8 0 0019.94 13zm-9.92 0c.16 3.95 1.23 7 1.98 7s1.82-3.05 1.98-7h-3.96zm0-2h3.96c-.16-3.95-1.23-7-1.98-7s-1.82 3.05-1.98 7zM12 22a10 10 0 110-20 10 10 0 010 20z"}))},y=a(42),O=a.n(y),_=a(58),A=a(6),I=a(37),T=function(e,t){return["# type ".concat(t||""," {"),"# ","# }","",e].join("\n")},w=function(e,t){return Object(I.default)(e,(function(e){var a=new RegExp("type ".concat(t," {")),n=e.split("\n"),r=n.findIndex((function(e){return a.test(e)}));if(-1===r)return e;var i=n.slice(r),c=/\}/,o=i.findIndex((function(e){return c.test(e)}));return-1===o?e:(n.splice(r,o+1),n.join("\n"))}))},D=function(e){var t=document.createElement("input");t.value=e,document.body.appendChild(t),t.select(),t.setSelectionRange(0,99999),document.execCommand("copy"),document.body.removeChild(t)},C=Object(A.Machine)({initial:"loading",context:{database:{version:2,features:{initial:{id:"initial",description:"Description",name:"Initial",actors:{},scenarios:{},eventPayloads:""}}}},on:{REPORT_SERVER_NOT_RUNNING:".serverNotRunning"},states:{loading:{invoke:{src:"loadDatabase",onDone:[{cond:"databaseHasAtLeastOneFeature",actions:["saveDatabaseToContext"],target:"editing"},{actions:["saveDefaultDatabaseToContext","goToInitialFeature"],target:"editing"}],onError:{target:"recoveringFromError"}}},serverNotRunning:{},recoveringFromError:{always:[{cond:"databaseFromContextHasAtLeastOneFeature",actions:["goToFirstFeature"],target:"editing"},{actions:["saveDefaultDatabaseToContext","goToInitialFeature"],target:"editing"}]},editing:{initial:"idle",on:{FEATURE_NOT_FOUND:[{cond:"databaseFromContextHasAtLeastOneFeature",actions:["goToFirstFeature"],target:"editing"},{actions:["saveDefaultDatabaseToContext","goToInitialFeature"],target:"editing"}],UPDATE_FEATURE_EVENT_PAYLOAD:{actions:Object(A.assign)((function(e,t){return{database:Object(p.updateFeatureEventPayload)(e.database,t.featureId,t.eventPayloadString)}})),target:".throttling"},ADD_ACTOR:{actions:Object(A.assign)((function(e,t){return{database:Object(p.addActor)(e.database,t.featureId)}})),target:".throttling"},DELETE_ACTOR:[{cond:"canDeleteActor",actions:["deleteActor"],target:".throttling"},{actions:["tellUserWeCannotDeleteTheActor"]}],ADD_SCENARIO:{actions:Object(A.assign)((function(e,t){return{database:Object(p.addScenario)(e.database,t.featureId)}})),target:".throttling"},DELETE_SCENARIO:{actions:Object(A.assign)((function(e,t){return{database:Object(p.deleteScenario)(e.database,t.featureId,t.scenarioId)}})),target:".throttling"},UPDATE_FEATURE_NAME:{target:".throttling",actions:[Object(A.assign)((function(e,t){return{database:Object(p.updateFeatureName)(e.database,t.featureId,t.name)}}))]},GET_SHARE_LINK:{actions:"copyShareLinkToClipboard"},DUPLICATE_SCENARIO:{target:".throttling",actions:[Object(A.assign)((function(e,t){return{database:Object(p.duplicateScenario)(e.database,t.featureId,t.scenarioId)}}))]},ADD_FEATURE:{target:".throttling",actions:[Object(A.assign)((function(e){return{database:Object(p.addFeature)(e.database)}}))]},UPDATE_SCENARIO_DESCRIPTION:{target:".throttling",actions:[Object(A.assign)((function(e,t){return{database:Object(p.updateScenarioDescription)(e.database,t.featureId,t.scenarioId,t.description)}}))]},UPDATE_FEATURE_DESCRIPTION:{target:".throttling",actions:[Object(A.assign)((function(e,t){return{database:Object(p.updateFeatureDescription)(e.database,t.featureId,t.description)}}))]},ADD_STEP:{actions:[Object(A.assign)((function(e,t){return{database:Object(p.updateFeatureEventPayloadWithFunc)(e.database,t.featureId,(function(e){return T(e,p.DEFAULT_EVENT_NAME)}))}})),Object(A.assign)((function(e,t){return{database:Object(p.addStep)({database:e.database,fromEnvId:t.fromEnvId,index:t.index,scenarioId:t.scenarioId,featureId:t.featureId,toEnvId:t.toEnvId})}}))],target:".throttling"},DELETE_STEP:{actions:[Object(A.assign)((function(e,t){var a=e.database.features[t.featureId].scenarios[t.scenarioId].steps[t.stepIndex].event;return{database:Object(p.updateFeatureEventPayloadWithFunc)(e.database,t.featureId,(function(e){return w(e,a)}))}})),Object(A.assign)((function(e,t){return{database:Object(p.deleteStep)(e.database,t.featureId,t.scenarioId,t.stepIndex)}}))],target:".throttling"},UPDATE_STEP_NAME:{actions:[Object(A.assign)((function(e,t){var a=e.database.features[t.featureId].scenarios[t.scenarioId].steps[t.stepIndex].event;return{database:Object(p.updateFeatureEventPayloadWithFunc)(e.database,t.featureId,(function(e){return""===t.name?w(e,a):e.includes(a)?function(e,t,a){var n=new RegExp("type ".concat(t||""," {"));return e.replace(n,"type ".concat(a||""," {"))}(e,a,t.name):T(e,t.name)}))}})),Object(A.assign)((function(e,t){return{database:Object(p.updateStepEventName)(e.database,t.featureId,t.scenarioId,t.stepIndex,t.name)}}))],target:".throttling"},UPDATE_ACTOR_NAME:{actions:Object(A.assign)((function(e,t){return{database:Object(p.updateActorName)(e.database,t.featureId,t.scenarioId,t.envId,t.name)}})),target:".throttling"},UPDATE_SCENARIO_NAME:{actions:Object(A.assign)((function(e,t){return{database:Object(p.updateScenarioName)(e.database,t.featureId,t.scenarioId,t.name)}})),target:".throttling"}},states:{idle:{},throttling:{after:{800:"saving"}},saving:{always:{target:"idle",actions:"saveToDatabase"}}}}}},{services:{loadDatabase:function(){var e=Object(_.a)(O.a.mark((function e(){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",N());case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},guards:{databaseFromContextHasAtLeastOneFeature:function(e){return Object.keys(e.database).length>0},databaseHasAtLeastOneFeature:function(e,t){var a;return Object.keys((null===(a=t.data)||void 0===a?void 0:a.features)||{}).length>0},canDeleteActor:function(e,t){var a=e.database,n=t.envId,r=t.featureId;try{return Object.values(a.features[r].scenarios).forEach((function(e){e.steps.forEach((function(e){if(e.from===n||e.to===n)throw new Error("This actor cannot be deleted because steps depend on it.")}))})),!0}catch(i){return!1}}},actions:{tellUserWeCannotDeleteTheActor:function(){alert("You cannot delete this actor because it has steps associated with it.")},copyShareLinkToClipboard:function(e){D("https://demo.sextant.tools/?".concat(b(e.database))),alert("Copied share link to clipboard!")},saveDefaultDatabaseToContext:Object(A.assign)((function(e){return{database:{version:2,features:{initial:{description:"Description",actors:{},eventPayloads:"",id:"initial",name:"Your First Feature",scenarios:{}}}}}})),saveDatabaseToContext:Object(A.assign)((function(e,t){var a;return(null===(a=t.data)||void 0===a?void 0:a.features)?{database:t.data}:{}})),deleteActor:Object(A.assign)((function(e,t){return{database:Object(p.deleteActor)(e.database,t.featureId,t.envId)}}))}});var S=function(e){return s.a.createElement("svg",Object.assign({},e,{className:"fill-current ".concat(e.className),xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"}),s.a.createElement("path",{d:"M17 11a1 1 0 010 2h-4v4a1 1 0 01-2 0v-4H7a1 1 0 010-2h4V7a1 1 0 012 0v4h4z"}))};var j=function(e){return s.a.createElement("svg",Object.assign({},e,{className:"fill-current ".concat(e.className),xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"}),s.a.createElement("path",{d:"M16.24 14.83a1 1 0 01-1.41 1.41L12 13.41l-2.83 2.83a1 1 0 01-1.41-1.41L10.59 12 7.76 9.17a1 1 0 011.41-1.41L12 10.59l2.83-2.83a1 1 0 011.41 1.41L13.41 12l2.83 2.83z"}))},F=Object(A.Machine)({initial:"idle",states:{idle:{on:{CLICK_PLUS_ICON:{target:"chosenFrom",actions:["assignFirstItemChosen"]}}},chosenFrom:{on:{CLICK_PLUS_ICON:[{cond:"isSameAsChosen",target:"idle",actions:["clearChoices"]},{cond:"isSameIndexAsChosen",actions:["clearChoices","registerNewEvent"],target:"idle"},{actions:["assignFirstItemChosen"]}]}}}},{guards:{isSameAsChosen:function(e,t){return e.actorChosen===t.actor&&e.indexChosen===t.index},isSameIndexAsChosen:function(e,t){return e.indexChosen===t.index}},actions:{assignFirstItemChosen:Object(A.assign)((function(e,t){return{actorChosen:t.actor,indexChosen:t.index}})),clearChoices:Object(A.assign)((function(e){return{indexChosen:void 0}}))}}),P=a(28);var R=function(e){return s.a.createElement("svg",Object.assign({},e,{className:"fill-current ".concat(e.className),xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"}),s.a.createElement("path",{d:"M14.7 15.3a1 1 0 01-1.4 1.4l-4-4a1 1 0 010-1.4l4-4a1 1 0 011.4 1.4L11.42 12l3.3 3.3z"}))};var L=function(e){return s.a.createElement("svg",Object.assign({},e,{className:"fill-current ".concat(e.className),xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"}),s.a.createElement("path",{d:"M9.3 8.7a1 1 0 011.4-1.4l4 4a1 1 0 010 1.4l-4 4a1 1 0 01-1.4-1.4l3.29-3.3-3.3-3.3z"}))},U=function(e){var t=e.actors.findIndex((function(t){return t.id===e.step.from})),a=e.actors.findIndex((function(t){return t.id===e.step.to})),n=a>t;return n?s.a.createElement("div",{className:classNames("flex items-center",!n&&"justify-end")},s.a.createElement("div",{className:"w-24"}),Object(P.a)(new Array(t)).map((function(){return s.a.createElement(s.a.Fragment,null,s.a.createElement("div",{className:"w-24"}),s.a.createElement("div",{className:"w-24"}),s.a.createElement("div",{className:"w-6"}))})),s.a.createElement("div",{className:"rounded-full w-4 h-4 bg-gray-600 -ml-2"}),s.a.createElement("div",{className:"flex items-center -ml-2"},s.a.createElement("div",{className:"relative flex items-center"},Object(P.a)(new Array(a-t)).map((function(){return s.a.createElement(s.a.Fragment,null,s.a.createElement("div",{className:"border-b-2 border-gray-600 w-48"}),s.a.createElement("div",{className:"border-b-2 border-gray-600 w-6"}))})),s.a.createElement(M,{value:e.step.event,onChange:e.onChangeEvent,onDelete:e.onDelete})),s.a.createElement(L,{className:"-ml-5 h-8 w-8 text-gray-600"}))):s.a.createElement("div",{className:classNames("h-4 flex items-center")},s.a.createElement("div",{className:"w-24"}," "),Object(P.a)(new Array(a)).map((function(){return s.a.createElement(s.a.Fragment,null,s.a.createElement("div",{className:"w-24"}),s.a.createElement("div",{className:"w-24"}),s.a.createElement("div",{className:"w-6"}))})),s.a.createElement("div",{className:"flex items-center -mr-2 relative"},s.a.createElement(R,{className:" text-gray-600 absolute left-0 -ml-3 w-8 h-8"}),s.a.createElement("div",{className:"flex items-center relative"},Object(P.a)(new Array(t-a)).map((function(){return s.a.createElement(s.a.Fragment,null,s.a.createElement("div",{className:"border-b-2 border-gray-600 w-48"}),s.a.createElement("div",{className:"border-b-2 border-gray-600 w-6"}))})),s.a.createElement("div",{className:"absolute top-0 left-0 w-full flex items-center justify-center z-10"},s.a.createElement(M,{value:e.step.event,onChange:e.onChangeEvent,onDelete:e.onDelete})))),s.a.createElement("div",{className:"rounded-full w-4 h-4 bg-gray-600 -mr-2"}))},M=function(e){return s.a.createElement("div",{className:"absolute top-0 left-0 w-full flex items-center justify-center z-10"},s.a.createElement("div",{className:"relative flex space-x-2 items-center",style:{transform:"translateY(calc(-50% + 1px))"}},s.a.createElement("div",{className:"w-4"}),s.a.createElement(u.a,{className:"bg-white border-2 border-gray-600 px-2 text-xs text-gray-800 text-center flex items-center appearance-none break-all",html:e.value,style:{maxWidth:"8rem"},onChange:function(t){return e.onChange(t.target.value)}}),s.a.createElement("button",{className:"w-4 h-4 bg-gray-600 flex justify-center items-center text-white rounded-full",onClick:e.onDelete},s.a.createElement(j,null))))},k=function(e){var t=e.children,a=e.title,n=e.onChangeTitle,r=e.onDelete,i=e.onDuplicate,c=e.description,o=e.onChangeDescription;return s.a.createElement("div",{className:"border-2 relative"},s.a.createElement("div",null,s.a.createElement("div",{className:"border-b-2 bg-gray-100"},s.a.createElement("div",{className:"flex items-center"},s.a.createElement(u.a,{className:"text-gray-700 font-bold text-lg flex-grow px-3 py-2 ",html:a,tagName:"h2",onChange:function(e){return n(e.target.value)}}),s.a.createElement("div",{className:"px-3 flex-shrink-0"},s.a.createElement("button",{onClick:i,className:"text-xs uppercase px-3 py-2"},"Duplicate"))),s.a.createElement(u.a,{className:"text-xs px-3 py-2 -mt-3 text-gray-700 leading-relaxed",onChange:function(e){return o(e.target.value)},placeholder:"Description",tagName:"p",html:c||""})),s.a.createElement("button",{className:"absolute top-0 right-0 bg-gray-600 text-white rounded-full w-4 h-4 -mt-2 -mr-2 flex justify-center items-center",onClick:function(){return r()}},s.a.createElement(j,null))),s.a.createElement("div",{className:"px-3 py-3 overflow-x-auto"},t))},z=function(e){var t=Object(r.useMachine)(F,{actions:{registerNewEvent:function(t,a){e.onAddStep({from:t.actorChosen,to:a.actor,index:a.index})}}}),a=Object(n.a)(t,2),i=a[0],c=a[1];return s.a.createElement("div",{className:"inline-block"},s.a.createElement("div",{className:"flex space-x-6"},e.actors.map((function(t,a){return s.a.createElement("div",{className:"relative"},s.a.createElement(u.a,{className:"p-4 bg-gray-200 text-gray-800 uppercase w-48 block text-center",html:t.name,onChange:function(a){return e.onEditActor(a.target.value,t.id)}}),s.a.createElement("button",{className:"absolute top-0 right-0 bg-gray-600 text-white rounded-full w-4 h-4 -mt-2 -mr-2 flex justify-center items-center",onClick:function(){return e.onDeleteActor(t.id)}},s.a.createElement(j,null)))})),s.a.createElement("button",{className:"p-4 w-16 flex justify-center items-center bg-gray-200 text-gray-800",onClick:e.onCreateActor},s.a.createElement(S,null))),e.steps.map((function(t,a,n){return s.a.createElement(s.a.Fragment,null,s.a.createElement("div",{className:"flex space-x-6"},e.actors.map((function(e){return s.a.createElement("div",{className:"flex justify-center w-48 h-10 relative"},s.a.createElement("div",{className:"border-r-2"}),s.a.createElement("button",{className:classNames("absolute h-6 w-24 mt-2 top-0 flex justify-center group"),onClick:function(){c({type:"CLICK_PLUS_ICON",actor:e.id,index:a})}},s.a.createElement("div",{className:classNames("w-6 h-6 rounded-full bg-gray-200 text-gray-600 opacity-0 group-hover:opacity-100 group-focus:opacity-100",e.id===i.context.actorChosen&&a===i.context.indexChosen&&"opacity-100 bg-blue-200 text-blue-800")},s.a.createElement(S,null))))}))),s.a.createElement(U,{step:t,onDelete:function(){return e.onDeleteStep(a)},actors:e.actors,onChangeEvent:function(t){return e.onEditEvent(t,a)}}))})),s.a.createElement("div",{className:"flex space-x-6"},e.actors.map((function(e){return s.a.createElement("div",{className:"flex justify-center w-48 h-6"},s.a.createElement("div",{className:"border-r-2"}))}))),s.a.createElement("div",{className:"flex space-x-6"},e.actors.map((function(t){return s.a.createElement("div",{className:"flex justify-center w-48"},s.a.createElement("button",{className:classNames("bg-gray-200 rounded-full h-10 w-10 flex justify-center items-center text-gray-600",t.id===i.context.actorChosen&&e.steps.length===i.context.indexChosen&&"bg-blue-200 text-blue-800"),onClick:function(){c({type:"CLICK_PLUS_ICON",actor:t.id,index:e.steps.length})}},s.a.createElement(S,null)))}))),s.a.createElement("div",{className:"flex space-x-6"},e.actors.map((function(e){return s.a.createElement("div",{className:"flex justify-center w-48 h-6"},s.a.createElement("div",{className:"border-r-2"}))}))),s.a.createElement("div",{className:"flex space-x-6"},e.actors.map((function(t,a){return s.a.createElement(u.a,{className:"p-4 bg-gray-200 text-gray-800 uppercase w-48 block text-center",html:t.name,onChange:function(a){return e.onEditActor(a.target.value,t.id)}})})),s.a.createElement("button",{className:"p-4 w-16 flex justify-center items-center bg-gray-200 text-gray-800",onClick:e.onCreateActor},s.a.createElement(S,null))))};t.a=function(){var e=Object(d.e)(),t=function(){var e=Object(d.f)().search;return v(e)}(),a=Object(r.useMachine)(C,{actions:{goToInitialFeature:function(){e.replace("/?".concat(h(window.location.search,{featureId:"initial"})))},goToFirstFeature:function(t){var a=Object.values(t.database.features)[0].id;e.replace("/?".concat(h(window.location.search,{featureId:a})))},saveToDatabase:function(t){return function(e,t){switch(g()){case"localStorage":var a="/?".concat(b(e));t.replace(a);break;default:return fetch("/api/saveToDatabase",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}}(t.database,e)}}}),i=Object(n.a)(a,2),l=i[0],m=i[1],E=null===t||void 0===t?void 0:t.featureId,p=l.context.database.features[E||""],N=Object(o.useMemo)((function(){return Object.values((null===p||void 0===p?void 0:p.scenarios)||{})}),[p]);switch(function(e,t,a){var n=Object(o.useRef)();Object(o.useEffect)((function(){return n.current=setInterval(e,t),function(){clearInterval(n.current)}}),a)}((function(){l.matches("editing")&&"cli"===g()&&fetch("/api/ping").catch((function(e){m({type:"REPORT_SERVER_NOT_RUNNING"})}))}),2500,[l.matches("editing")]),Object(o.useEffect)((function(){p||m({type:"FEATURE_NOT_FOUND"})}),[p,l.value]),!0){case l.matches("serverNotRunning"):return s.a.createElement("div",{className:"max-w-lg p-6 text-gray-700"},s.a.createElement("p",null,"Sextant couldn't reach the terminal where the application is running. Try restarting it."));case l.matches("recoveringFromError"):return s.a.createElement("div",null,"Something went wrong");case Boolean(l.matches("editing")&&p):return s.a.createElement("div",{className:"flex flex-col h-screen overflow-hidden"},s.a.createElement("div",{className:"flex items-center justify-between flex-shrink-0 h-12 px-4 border-t-4 border-primary-600"},s.a.createElement("h1",{className:"flex items-center font-bold tracking-widest uppercase text-primary-800"},"sextant"),s.a.createElement("div",{className:"flex items-center mr-4 space-x-10 text-sm tracking-wider text-gray-700"},s.a.createElement("a",{href:"https://github.com/mattpocock/sextant",target:"_blank"},"GitHub"),s.a.createElement("a",{href:"https://docs.sextant.tools",target:"_blank"},"Docs"),s.a.createElement("button",{className:"flex items-center space-x-2 text-primary-800",onClick:function(){return m("GET_SHARE_LINK")}},s.a.createElement(x,{className:"w-5 h-5 text-primary-600"}),s.a.createElement("span",null,"Share")))),s.a.createElement("div",{className:"flex flex-grow overflow-hidden border-t-2"},s.a.createElement("div",{className:"flex-shrink-0 w-48 h-full px-4 py-4 border-r-2"},s.a.createElement("h1",{className:"mb-2"},"Features"),s.a.createElement("div",{className:"mb-4 space-y-2"},Object.values(l.context.database.features).map((function(e){return s.a.createElement(f.b,{to:"/?".concat(h(window.location.search,{featureId:e.id})),className:"block text-sm text-gray-700"},null===e||void 0===e?void 0:e.name)}))),s.a.createElement("button",{onClick:function(){m({type:"ADD_FEATURE"})},className:"px-3 py-1 text-sm text-gray-700 bg-gray-200"},"Add Feature")),s.a.createElement("div",{className:"flex flex-grow overflow-hidden"},s.a.createElement("div",{className:"flex-col flex-1 p-6 space-y-6 overflow-y-auto"},s.a.createElement("div",null,s.a.createElement(u.a,{className:"inline-block text-2xl",html:null===p||void 0===p?void 0:p.name,tagName:"h1",onChange:function(e){m({type:"UPDATE_FEATURE_NAME",name:e.target.value,featureId:E})}}),s.a.createElement(u.a,{html:(null===p||void 0===p?void 0:p.description)||"",tagName:"p",onChange:function(e){m({type:"UPDATE_FEATURE_DESCRIPTION",description:e.target.value,featureId:E})},className:"mt-1 text-xs leading-relaxed text-gray-700"})),N.map((function(e,t){return s.a.createElement(k,{title:e.name,onChangeTitle:function(t){m({type:"UPDATE_SCENARIO_NAME",name:t,scenarioId:e.id,featureId:E})},description:e.description,onChangeDescription:function(t){m({type:"UPDATE_SCENARIO_DESCRIPTION",description:t,scenarioId:e.id,featureId:p.id})},onDuplicate:function(){m({type:"DUPLICATE_SCENARIO",scenarioId:e.id,featureId:E})},onDelete:function(){m({type:"DELETE_SCENARIO",scenarioId:e.id,featureId:E})}},s.a.createElement(z,{actors:Object.values((null===p||void 0===p?void 0:p.actors)||{}),steps:e.steps,onAddStep:function(t){var a=t.index,n=t.from,r=t.to;m({type:"ADD_STEP",index:a,fromEnvId:n,toEnvId:r,scenarioId:e.id,featureId:E})},onEditEvent:function(t,a){m({type:"UPDATE_STEP_NAME",name:t,scenarioId:e.id,featureId:E,stepIndex:a})},onDeleteStep:function(t){m({type:"DELETE_STEP",scenarioId:e.id,featureId:E,stepIndex:t})},onDeleteActor:function(e){m({type:"DELETE_ACTOR",envId:e,featureId:E})},onCreateActor:function(){m({type:"ADD_ACTOR",featureId:E})},onEditActor:function(t,a){m({type:"UPDATE_ACTOR_NAME",envId:a,name:t,scenarioId:e.id,featureId:E})}}))})),s.a.createElement("div",null,s.a.createElement("button",{className:"h-12 px-4 bg-gray-200",onClick:function(){m({type:"ADD_SCENARIO",featureId:E})}},"New Scenario"))),s.a.createElement("div",{className:"flex-shrink-0 p-6 space-y-6 overflow-y-auto border-l-2"},s.a.createElement("h1",{className:"text-2xl"},"Event Payloads"),s.a.createElement(c.a,{mode:"graphqlschema",theme:"xcode",tabSize:2,value:(null===p||void 0===p?void 0:p.eventPayloads)||"",onChange:function(e){m({type:"UPDATE_FEATURE_EVENT_PAYLOAD",eventPayloadString:e,featureId:E})},enableBasicAutocompletion:!0,enableLiveAutocompletion:!0,enableSnippets:!0,setOptions:{showLineNumbers:!1,highlightGutterLine:!1},width:"420px",highlightActiveLine:!1,height:"calc(100% - 80px)"})))));default:return null}}},61:function(e,t,a){e.exports=a(62)},62:function(e,t,a){"use strict";a.r(t),function(e){var t=a(0),n=a.n(t),r=a(54),i=a.n(r),c=(a(67),a(60)),o=a(59),s=a.n(o),l=a(25),u=a(8);e.classNames=s.a,i.a.render(n.a.createElement(l.a,null,n.a.createElement(u.a,{path:"*"},n.a.createElement(c.a,null))),document.getElementById("root"))}.call(this,a(20))},67:function(e,t,a){},79:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},81:function(e,t,a){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,a=1,n=arguments.length;a<n;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.sanitizeStep=t.sanitizeScenario=t.sanitizeActor=t.sanitizeFeature=void 0;var r=a(82),i=function(e){return r(e.trim())};t.sanitizeFeature=function(e){return n(n({},e),{name:i(e.name)})},t.sanitizeActor=function(e){return n(n({},e),{name:i(e.name)})},t.sanitizeScenario=function(e){return n(n({},e),{name:i(e.name),steps:e.steps.map(t.sanitizeStep)})},t.sanitizeStep=function(e){return n({},e)}},83:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createSextantPlugin=void 0;var n=a(48),r=a(49),i=a(35),c=a(36);t.createSextantPlugin=function(e){return function(t,a){e({database:n.flattenDatabase(t),writeFileSync:function(e,t){var a=c.getTargetDir();r.writeFileSync(i.resolve(a,e),t)}},a)}}},84:function(e,t,a){"use strict";var n=this&&this.__read||function(e,t){var a="function"===typeof Symbol&&e[Symbol.iterator];if(!a)return e;var n,r,i=a.call(e),c=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)c.push(n.value)}catch(o){r={error:o}}finally{try{n&&!n.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}return c};Object.defineProperty(t,"__esModule",{value:!0}),t.unwrapPluginFromArrayDeclaration=t.ensureConfigFileExists=t.getConfig=t.getConfigFileLocation=t.executeConfigFile=void 0;var r=a(36),i=a(35),c=a(49),o=a(85);t.executeConfigFile=function(e){var c;null===(c=t.getConfig().plugins)||void 0===c||c.forEach((function(c,o){var s=n(t.unwrapPluginFromArrayDeclaration(c),2),l=s[0],u=s[1];switch(typeof l){case"function":return l(e,u);case"string":var d=l;(l.startsWith("./")||l.startsWith("../"))&&(d=i.resolve(r.getTargetDir(),l));var f=a(51)(d);return"function"===typeof f?f(e,u):f.default(e,u);default:console.log("An incorrect plugin syntax was passed in your config."),console.log("Path: sextantConfig.plugins["+o+"]"),console.log("Plugin passed: "+JSON.stringify(l))}}))},t.getConfigFileLocation=function(){var e=r.getTargetDir(),t=void 0;for(var a in o.PERMITTED_SEXTANT_CONFIG_FILENAMES){var n=i.resolve(e,a);if(c.existsSync(n)){t=n;break}}return t||i.resolve(e,o.PERMITTED_SEXTANT_CONFIG_FILENAMES[0])},t.getConfig=function(){var e=t.getConfigFileLocation();return e?a(51)(e):{}},t.ensureConfigFileExists=function(){var e=t.getConfigFileLocation();c.existsSync(e)||c.writeFileSync(e,o.DEFAULT_CONFIG_FILE)},t.unwrapPluginFromArrayDeclaration=function(e){return Array.isArray(e)?[e[0],e[1]||{}]:[e,{}]}},85:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_CONFIG_FILE=t.PERMITTED_SEXTANT_CONFIG_FILENAMES=void 0,t.PERMITTED_SEXTANT_CONFIG_FILENAMES=["sextant.config.js"],t.DEFAULT_CONFIG_FILE="module.exports = { plugins: [] };"},86:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},87:function(e,t,a){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,a=1,n=arguments.length;a<n;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.migrateDatabase=void 0,t.migrateDatabase=function(e){switch(e.version){case 2:return e;default:return r[0](e)}};var r=[function(e){var t={};return Object.values(e.services).forEach((function(e){t[e.id]=n(n({},e),{actors:e.environments,scenarios:e.sequences})})),{version:2,features:t}}]},9:function(e,t,a){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[a]}})}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),r=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||n(t,e,a)};Object.defineProperty(t,"__esModule",{value:!0}),r(a(79),t),r(a(48),t),r(a(83),t),r(a(36),t),r(a(84),t),r(a(86),t),r(a(87),t)}},[[61,1,2]]]); //# sourceMappingURL=main.243b6613.chunk.js.map