@spiffcommerce/core 18.2.0-beta.0 → 18.2.0-beta.1
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/index.js +13 -8
- package/dist/index.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8196,7 +8196,7 @@ class zn {
|
|
|
8196
8196
|
* @returns
|
|
8197
8197
|
*/
|
|
8198
8198
|
getBasePrice(A) {
|
|
8199
|
-
var a, n;
|
|
8199
|
+
var a, n, s;
|
|
8200
8200
|
const e = this.product.basePrice || 0;
|
|
8201
8201
|
if (!A)
|
|
8202
8202
|
return e;
|
|
@@ -8206,16 +8206,21 @@ class zn {
|
|
|
8206
8206
|
);
|
|
8207
8207
|
let t;
|
|
8208
8208
|
return A.integrationId ? t = (a = this.product.integrationProducts) == null ? void 0 : a.find(
|
|
8209
|
-
(
|
|
8210
|
-
var
|
|
8211
|
-
return ((
|
|
8209
|
+
(i) => {
|
|
8210
|
+
var o;
|
|
8211
|
+
return ((o = i.integration) == null ? void 0 : o.id) === A.integrationId;
|
|
8212
8212
|
}
|
|
8213
8213
|
) : A.externalId ? t = (n = this.product.integrationProducts) == null ? void 0 : n.find(
|
|
8214
|
-
(
|
|
8215
|
-
var
|
|
8216
|
-
return ((
|
|
8214
|
+
(i) => {
|
|
8215
|
+
var o;
|
|
8216
|
+
return ((o = i.integration) == null ? void 0 : o.externalIntegrationId) === A.externalId;
|
|
8217
|
+
}
|
|
8218
|
+
) : t = (s = this.product.integrationProducts) == null ? void 0 : s.find(
|
|
8219
|
+
(i) => {
|
|
8220
|
+
var o;
|
|
8221
|
+
return ((o = i.integration) == null ? void 0 : o.type) === A.integrationType;
|
|
8217
8222
|
}
|
|
8218
|
-
)
|
|
8223
|
+
), !t || !t.additionalIntegrationProduct || !t.additionalIntegrationProduct.product ? e : e + (t.additionalIntegrationProduct.product.basePrice || 0);
|
|
8219
8224
|
}
|
|
8220
8225
|
}
|
|
8221
8226
|
class me {
|
package/dist/index.umd.cjs
CHANGED
|
@@ -2217,7 +2217,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
|
|
|
2217
2217
|
}
|
|
2218
2218
|
}
|
|
2219
2219
|
}
|
|
2220
|
-
`;class jn{constructor(e,A,t){this.bundleId=e,this.bundleOwnerId=A,this.initPromise=this.getOrCreateGlobalPropertyState().then(n=>{this.globalPropertyState=n}),this.onGlobalPropertyStateChange=t}getInitializationPromise(){return this.initPromise}getGlobalPropertyState(){return this.globalPropertyState}getAspect(e){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const A=this.globalPropertyState.aspects.find(t=>t.name===e);if(A)return A.value}async setAspect(e,A){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const t=we(this.globalPropertyState),n=this.globalPropertyState.aspects.find(a=>a.name===e);n?n.value=A:this.globalPropertyState.aspects.push({name:e,value:A}),await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(t,this.globalPropertyState)}async updateGlobalPropertyState(){var A;if(!this.globalPropertyState)throw new Error("Global property state not initialized");const e=await x.getShadowGraphqlClient().mutate({mutation:On,variables:{id:this.globalPropertyState.id,aspects:this.globalPropertyState.aspects},context:{bundleOwnerId:this.bundleOwnerId}});if((A=e.data)!=null&&A.globalPropertyStateUpdate)this.globalPropertyState=e.data.globalPropertyStateUpdate;else throw new Error("Unable to update global property state")}async getOrCreateGlobalPropertyState(){var t;const e=await x.getShadowGraphqlClient().query({query:zn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{bundleId:this.bundleId},context:{bundleOwnerId:this.bundleOwnerId}});if(e.data.globalPropertyState&&e.data.globalPropertyState.id)return e.data.globalPropertyState;const A=await x.getShadowGraphqlClient().mutate({mutation:Ln,variables:{bundleId:this.bundleId},context:{bundleOwnerId:this.bundleOwnerId}});if((t=A.data)!=null&&t.globalPropertyStateCreate&&A.data.globalPropertyStateCreate.id)return A.data.globalPropertyStateCreate;throw new Error(`Unable to create global property state for bundle: ${this.bundleId}`)}}class Kn{constructor(e){this.setState(e)}setState(e){e&&(this.state=JSON.parse(e))}applyStateToWorkflowExperience(e){var a,i;if(!this.state||!((a=e==null?void 0:e.getWorkflowManager())!=null&&a.getModelContainer()))return;const A=(i=this.state.transactions.find(o=>o.transactionId===e.getWorkflowManager().getTransaction().id&&o.transform))==null?void 0:i.transform;if(!A)return;const t=this.flipTransform(A,e.getWorkflowManager().getPreviewService()),n=e.getWorkflowManager().getModelContainer();n.position=t.position,n.rotation=t.rotation,n.scale=t.scale}setWorkflowExperienceTransform(e,A){var o;if(!((o=e==null?void 0:e.getWorkflowManager())!=null&&o.getModelContainer()))return;const t=this.flipTransform(A,e.getWorkflowManager().getPreviewService()),n=e.getWorkflowManager().getModelContainer();n.position=t.position,n.rotation=t.rotation,n.scale=t.scale;const a=e.getWorkflowManager().getTransaction().id;this.state?this.state.transactions||(this.state.transactions=[]):this.state={transactions:[]};const i=this.state.transactions.find(s=>s.transactionId===a);i?i.transform=A:this.state.transactions.push({transactionId:a,transform:A})}removeStateForTransaction(e){if(!this.state||!this.state.transactions)return;const A=this.state.transactions.findIndex(t=>t.transactionId===e);A!==-1&&this.state.transactions.splice(A,1)}getSerializedState(){if(this.state)return JSON.stringify(this.state)}flipTransform(e,A){return A&&A.flipTransform?A.flipTransform(e.position,{x:e.rotation.x*Math.PI/180,y:e.rotation.y*Math.PI/180,z:e.rotation.z*Math.PI/180},e.scale):{position:e.position,rotation:{x:e.rotation.x*Math.PI/180,y:e.rotation.y*Math.PI/180,z:e.rotation.z*Math.PI/180},scale:e.scale}}}class OA{constructor(e){this.collection=e}getId(){return this.collection.id}getName(){return this.collection.name}getProducts(){return this.collection.productCollectionProducts.map(e=>new zA(e))}getTransformCollection(){if(this.collection.transformCollection)return new jA(this.collection.transformCollection)}getResource(){return this.collection}}class zA{constructor(e){this.product=e.product,this.productResource=e}getId(){return this.product.id}getName(){return this.product.name}getIntegrationByType(e,A){const n=(this.product.integrationProducts||[]).find(a=>{var r,l,d;const i=(r=a.integration)==null?void 0:r.type,o=((l=a.integration)==null?void 0:l.type)===e,s=A?((d=a.integration)==null?void 0:d.externalIntegrationId)===A:!0;return i&&o&&s});if(!n)throw new Error("Failed to find requested integration type on product. This is generally due to a configuration error");return n}getDefaultWorkflow(){const e=this.product.workflows||[];if(e.length===0)throw new R("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");const A=this.productResource.workflowId;if(A){const n=e.find(a=>a.workflowName===A);if(n)return new Oe(n)}const t=e[0];return new Oe(t)}getIntegrations(){return this.product.integrationProducts||[]}getResource(){return this.product}getBasePrice(e){var n,a;const A=this.product.basePrice||0;if(!e)return A;if(!e.integrationType&&!e.externalId&&!e.integrationId)throw new Error("You must provide at least one of the following fields on the includeAdditionalProduct object: integrationType, externalId, integrationId");let t;return e.integrationId?t=(n=this.product.integrationProducts)==null?void 0:n.find(i=>{var o;return((o=i.integration)==null?void 0:o.id)===e.integrationId}):e.externalId?t=(a=this.product.integrationProducts)==null?void 0:a.find(i=>{var o;return((o=i.integration)==null?void 0:o.externalIntegrationId)===e.externalId}):t=this.getIntegrationByType(e.integrationType),!t||!t.additionalIntegrationProduct||!t.additionalIntegrationProduct.product?A:A+(t.additionalIntegrationProduct.product.basePrice||0)}}class Oe{constructor(e){this.workflow=e}getId(){return this.workflow.workflowName}getName(){return this.workflow.friendlyName}getThumbnail(){return this.workflow.imageUrl}}class jA{constructor(e){this.collection=e}getId(){return this.collection.id}getName(){return this.collection.name}getTransforms(){return this.collection.transforms.map(e=>new KA(e))}}class KA{constructor(e){this.transform=e}getId(){return this.transform.id}getName(){return this.transform.name}get(){return{position:this.transform.position,rotation:this.transform.rotation,scale:this.transform.scale}}}class VA{constructor(e,A,t,n,a){var i,o,s;this.eventListeners=new Map,this.workflowExperiences=[],this.client=e,this.id=A.id,this.name=A.name||"",this.ownerId=a,this.metadata=new Map(((i=A.metadata)==null?void 0:i.map(r=>[r.key,r.value]))||[]),this.productCollection=A.productCollection,this.bundleStateManager=new Kn(A.bundleStateData),this.globalConfiguration=(o=this.productCollection)==null?void 0:o.globalPropertyConfiguration,this.globalPropertyStateManager=new jn(this.id,this.ownerId,this.checkConditionalHandlesChanged.bind(this)),this.globalPropertyHandleService=new kn(this),this.setPreviewService(t),this.initializationPromise=this.loadExistingBundles(((s=A.transactions)==null?void 0:s.map(r=>r.id))||[],n)}getInitializationPromise(){return this.initializationPromise}addEventListener(e,A){this.eventListeners.set(e,[...this.eventListeners.get(e)||[],A])}removeEventListener(e,A){const t=this.eventListeners.get(e)||[],n=t.indexOf(A);n>-1&&t.splice(n,1)}getClient(){return this.client}getId(){return this.id}getName(){return this.name}setName(e){return this.name=e,this.updateBundle()}getMetadata(){return new Map(this.metadata)}setMetadata(e){return this.metadata=new Map(e),this.updateBundle()}setNameAndMetadata(e,A){return this.name=e,this.metadata=new Map(A),this.updateBundle()}hasGlobalProperties(){return!!this.globalConfiguration&&this.globalConfiguration.aspects.length>0}async getGlobalProperties(){return this.globalPropertyHandleService.applyConditionsFromState(await this.globalPropertyHandleService.getHandles(),this.getGlobalPropertyStateManager().getGlobalPropertyState())}getGlobalPropertyStateManager(){return this.globalPropertyStateManager}async getGlobalPropertyTotalSubunits(){return(await this.globalPropertyHandleService.getHandles()).filter(t=>t.getType()===c.AspectType.Option).map(t=>{var n;return((n=t.getCurrentVariant())==null?void 0:n.getPrice())||0}).reduce((t,n)=>t+n,0)}getTotalSubunits(){return this.workflowExperiences.map(e=>e.getTotalPriceSubunits()).reduce((e,A)=>e+A,0)}getProductCollection(){return this.productCollection?new OA(this.productCollection):void 0}async addWorkflowExperience(e){await this.appendWorkflowExperience(e),await this.injectExperienceIntoPreviewService(e);const A=await this.getGlobalProperties();await Promise.all(A.map(t=>t.applyGlobalState([e])))}async addWorkflowExperiences(e){const A=e.map(i=>i.getWorkflowManager().getTransaction().id),t=A.map(i=>this.workflowExperiences.find(o=>o.getWorkflowManager().getTransaction().id===i));if(t.some(i=>!!i))throw new Error("Unable to add transaction to bundle - Already Exists: "+t.filter(i=>!!i).map(i=>i==null?void 0:i.getWorkflowManager().getTransaction().id).join(", "));const n=P.getMap("transactionOwnerIds")||new Map,a=A.map(i=>n.get(i));await x.getShadowGraphqlClient().mutate({mutation:xn,variables:{id:this.id,transactionIds:A,transactionOwnerIds:a},context:{bundleOwnerId:this.ownerId}}).catch(i=>{console.error(i)}),this.workflowExperiences.push(...e),await Promise.all([this.updateTransactionOrder(),(async()=>{for(const o of e)await this.injectExperienceIntoPreviewService(o);const i=await this.getGlobalProperties();await Promise.all(i.map(o=>o.applyGlobalState(e)))})()])}async appendWorkflowExperience(e,A=!0){const t=e.getWorkflowManager().getTransaction().id;if(this.workflowExperiences.find(o=>o.getWorkflowManager().getTransaction().id===t))throw new Error("Unable to add transaction to bundle - Already Exists!");const i=(P.getMap("transactionOwnerIds")||new Map).get(t);await x.getShadowGraphqlClient().mutate({mutation:Nn,variables:{id:this.id,transactionId:t},context:{bundleOwnerId:this.ownerId,transactionOwnerId:i}}),A&&this.workflowExperiences.push(e)}async removeWorkflowExperience(e){const A=this.workflowExperiences.indexOf(e);await this.removeTransaction(A,this.workflowExperiences[A].getWorkflowManager().getTransaction())}async removeWorkflowExperiences(e){await this.removeTransactions(e.map(A=>A.getWorkflowManager().getTransaction()))}async removeWorkflowExperienceByTransaction(e){const A=this.workflowExperiences.findIndex(t=>t.getWorkflowManager().getTransaction().id===e.id);await this.removeTransaction(A,e)}async removeWorkflowExperiencesByTransactions(e){await this.removeTransactions(e)}async removeTransaction(e,A,t=!0){if(e>-1){const n=this.workflowExperiences.find(a=>a.getWorkflowManager().getTransaction().id===A.id);this.previewService&&n.getWorkflowManager().ejectFromPreviewService(),this.bundleStateManager.removeStateForTransaction(A.id),await x.getShadowGraphqlClient().mutate({mutation:Hn,variables:{id:this.id,transactionId:A.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([a,i])=>({key:a,value:i})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),t&&(this.workflowExperiences.splice(e,1),await this.updateTransactionOrder())}else throw new Error("Unable to remove workflow experience from bundle - Not Found! - "+A.id)}async removeTransactions(e){const A=e.map(n=>this.workflowExperiences.findIndex(a=>a.getWorkflowManager().getTransaction().id===n.id));if(A.some(n=>n===-1))throw new Error("Unable to remove workflow experience from bundle - The following aren't included in the bundle: "+e.filter((n,a)=>A[a]===-1).map(n=>n.id).join(", "));const t=e.map(n=>this.workflowExperiences.splice(this.workflowExperiences.findIndex(a=>a.getWorkflowManager().getTransaction().id===n.id),1)[0]);this.previewService&&t.forEach(n=>n.getWorkflowManager().ejectFromPreviewService()),e.forEach(n=>this.bundleStateManager.removeStateForTransaction(n.id)),await x.getShadowGraphqlClient().mutate({mutation:Rn,variables:{id:this.id,transactionIds:e.map(n=>n.id),name:this.name,metadata:Array.from(this.metadata.entries()).map(([n,a])=>({key:n,value:a})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),await this.updateTransactionOrder()}async insertWorkflowExperience(e,A){await this.appendWorkflowExperience(e,!1),this.workflowExperiences.splice(A,0,e),await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(e);const t=await this.getGlobalProperties();await Promise.all(t.map(n=>n.applyGlobalState([e])))})()])}async replaceWorkflowExperience(e,A){if(e<0||e>=this.workflowExperiences.length)throw new Error("Unable to replace workflow experience in bundle - Index out of range!");const t=this.workflowExperiences[e];if(t.getWorkflowManager().getTransaction().id===A.getWorkflowManager().getTransaction().id)throw new Error("Unable to replace workflow experience in bundle - Same transaction!");await Promise.all([this.removeTransaction(e,t.getWorkflowManager().getTransaction(),!1),this.appendWorkflowExperience(A,!1)]),this.workflowExperiences[e]=A,await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(A);const n=await this.getGlobalProperties();await Promise.all(n.map(a=>a.applyGlobalState([A])))})()])}async swapWorkflowExperiences(e,A){if(e<0||e>=this.workflowExperiences.length||A<0||A>=this.workflowExperiences.length)throw new Error("Unable to swap workflow experiences in bundle - Index out of range!");if(e===A)return;const t=this.workflowExperiences[e];this.workflowExperiences[e]=this.workflowExperiences[A],this.workflowExperiences[A]=t,await this.updateTransactionOrder()}getWorkflowExperiences(){return[...this.workflowExperiences]}async sortWorkflowExperiences(e){this.workflowExperiences=this.workflowExperiences.sort(e),await this.updateTransactionOrder()}getWorkflowExperienceCount(){return this.workflowExperiences.length}async addStakeholder(e,A){var a;const t=await x.getShadowGraphqlClient().mutate({mutation:Un,variables:{id:this.id,details:e,type:A||oe.Owner},context:{bundleOwnerId:this.ownerId}});if(!((a=t.data)!=null&&a.bundleAddStakeholder))throw new Error("Bundle not found!");const n=t.data.bundleAddStakeholder.bundleStakeholders||[];this.storeStakeholderCustomers(n)}async updateStakeholders(e){var n;const A=await x.getShadowGraphqlClient().mutate({mutation:Gn,variables:{id:this.id,input:e},context:{bundleOwnerId:this.ownerId}});if(!((n=A.data)!=null&&n.bundleUpdateStakeholders))throw new Error("Bundle not found!");const t=A.data.bundleUpdateStakeholders.bundleStakeholders||[];this.storeStakeholderCustomers(t)}async getAllStakeholders(){const e=await x.getShadowGraphqlClient().query({query:Sn,errorPolicy:"all",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!e.data.bundles||e.data.bundles.length===0)throw new Error("Bundle not found!");const A=e.data.bundles[0].bundleStakeholders||[];return this.storeStakeholderCustomers(A),A}storeStakeholderCustomers(e){e.forEach(A=>{A.customer&&this.client.storeCustomer(A.customer)})}async finish(e,A){return await on(this.workflowExperiences.map(t=>({workflowManager:t.getWorkflowManager(),workflow:t.getWorkflowManager().getWorkflow(),layouts:t.getWorkflowManager().getLayouts(),getReducerState:()=>t.getCommandContext().getState(),product:t.getWorkflowManager().getProduct(),transaction:t.getWorkflowManager().getTransaction(),workflowSelections:t.getWorkflowManager().getWorkflowSelections(),designName:t.getWorkflowManager().getWorkflow().name,workflowMetadata:t.getWorkflowManager().getWorkflowMetadata()})),e??(()=>{}),A?(t,n)=>{const a=this.workflowExperiences.find(i=>i.getWorkflowManager().getTransaction().id===n);return a?A(a):(console.warn("SpiffCommerce - Bundle create design - Unable to find experience for transaction: "+n),Promise.resolve(void 0))}:void 0)}getPreviewService(){return this.previewService}async setPreviewService(e){if(this.workflowExperiences&&this.workflowExperiences.length>0&&(this.workflowExperiences.forEach(A=>A.getWorkflowManager().ejectFromPreviewService()),e))for(const A of this.workflowExperiences)await this.injectExperienceIntoPreviewService(A);e&&e.registerModelLoadEventListener&&e.registerModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService&&this.previewService!==e&&this.previewService.unregisterModelLoadEventListener&&this.previewService.unregisterModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService=e}setWorkflowExperienceTransform(e,A){return this.bundleStateManager.setWorkflowExperienceTransform(e,A),this.updateBundle()}onModelLoadEvent(e){e.eventType==="unload"||!e.modelContainer||(e.modelContainer.registerMaterialSelectedCallback(()=>this.onModelSelectedEvent(e.modelContainer,!0)),e.modelContainer.registerMaterialDeselectedCallback(()=>this.onModelSelectedEvent(e.modelContainer,!1)))}onModelSelectedEvent(e,A){if(e&&e.metadata&&e.metadata instanceof Map&&e.metadata.has("workflowManager")){const n=e.metadata.get("workflowManager").getTransaction(),a=this.workflowExperiences.find(i=>i.getWorkflowManager().getTransaction().id===n.id);a&&this.fireEvent(A?"workflow-experience-hover-enter":"workflow-experience-hover-exit",{workflowExperience:a})}}async injectExperienceIntoPreviewService(e){if(this.previewService){const A=e.getWorkflowManager().injectIntoPreviewService(this.previewService);try{this.bundleStateManager.applyStateToWorkflowExperience(e)}catch(t){console.error(`Unable to apply state to workflow experience: ${t}`)}await A}}async loadExistingBundles(e,A){if(e.length===0)return;const t=await this.client.getWorkflowExperiences(e.map(n=>({type:"transaction",transactionId:n})),A);if(this.workflowExperiences=t,this.previewService)for(const n of t)await this.injectExperienceIntoPreviewService(n)}async updateBundle(){var A;if(!((A=(await x.getShadowGraphqlClient().mutate({mutation:Pn,variables:{id:this.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([t,n])=>({key:t,value:n})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}})).data)!=null&&A.bundleUpdate))throw new Error("Bundle not found!")}async updateTransactionOrder(){await x.getShadowGraphqlClient().mutate({mutation:vn,variables:{id:this.id,transactionIds:this.workflowExperiences.map(e=>e.getWorkflowManager().getTransaction().id)},context:{bundleOwnerId:this.ownerId}})}async checkConditionalHandlesChanged(e,A){const t=await this.globalPropertyHandleService.getHandles(),n=this.globalPropertyHandleService.applyConditionsFromState(t,e),a=this.globalPropertyHandleService.applyConditionsFromState(t,A);(()=>{if(n.length!==a.length)return!0;for(let o=0;o<n.length;o++)if(n[o].getName()!==a[o].getName())return!0;return!1})()&&this.fireEvent("conditional-global-properties-changed",{globalProperties:a})}fireEvent(e,A){(this.eventListeners.get(e)||[]).forEach(n=>n({bundle:this,event:e,data:A}))}}const Vn=M.gql`
|
|
2220
|
+
`;class jn{constructor(e,A,t){this.bundleId=e,this.bundleOwnerId=A,this.initPromise=this.getOrCreateGlobalPropertyState().then(n=>{this.globalPropertyState=n}),this.onGlobalPropertyStateChange=t}getInitializationPromise(){return this.initPromise}getGlobalPropertyState(){return this.globalPropertyState}getAspect(e){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const A=this.globalPropertyState.aspects.find(t=>t.name===e);if(A)return A.value}async setAspect(e,A){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const t=we(this.globalPropertyState),n=this.globalPropertyState.aspects.find(a=>a.name===e);n?n.value=A:this.globalPropertyState.aspects.push({name:e,value:A}),await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(t,this.globalPropertyState)}async updateGlobalPropertyState(){var A;if(!this.globalPropertyState)throw new Error("Global property state not initialized");const e=await x.getShadowGraphqlClient().mutate({mutation:On,variables:{id:this.globalPropertyState.id,aspects:this.globalPropertyState.aspects},context:{bundleOwnerId:this.bundleOwnerId}});if((A=e.data)!=null&&A.globalPropertyStateUpdate)this.globalPropertyState=e.data.globalPropertyStateUpdate;else throw new Error("Unable to update global property state")}async getOrCreateGlobalPropertyState(){var t;const e=await x.getShadowGraphqlClient().query({query:zn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{bundleId:this.bundleId},context:{bundleOwnerId:this.bundleOwnerId}});if(e.data.globalPropertyState&&e.data.globalPropertyState.id)return e.data.globalPropertyState;const A=await x.getShadowGraphqlClient().mutate({mutation:Ln,variables:{bundleId:this.bundleId},context:{bundleOwnerId:this.bundleOwnerId}});if((t=A.data)!=null&&t.globalPropertyStateCreate&&A.data.globalPropertyStateCreate.id)return A.data.globalPropertyStateCreate;throw new Error(`Unable to create global property state for bundle: ${this.bundleId}`)}}class Kn{constructor(e){this.setState(e)}setState(e){e&&(this.state=JSON.parse(e))}applyStateToWorkflowExperience(e){var a,i;if(!this.state||!((a=e==null?void 0:e.getWorkflowManager())!=null&&a.getModelContainer()))return;const A=(i=this.state.transactions.find(o=>o.transactionId===e.getWorkflowManager().getTransaction().id&&o.transform))==null?void 0:i.transform;if(!A)return;const t=this.flipTransform(A,e.getWorkflowManager().getPreviewService()),n=e.getWorkflowManager().getModelContainer();n.position=t.position,n.rotation=t.rotation,n.scale=t.scale}setWorkflowExperienceTransform(e,A){var o;if(!((o=e==null?void 0:e.getWorkflowManager())!=null&&o.getModelContainer()))return;const t=this.flipTransform(A,e.getWorkflowManager().getPreviewService()),n=e.getWorkflowManager().getModelContainer();n.position=t.position,n.rotation=t.rotation,n.scale=t.scale;const a=e.getWorkflowManager().getTransaction().id;this.state?this.state.transactions||(this.state.transactions=[]):this.state={transactions:[]};const i=this.state.transactions.find(s=>s.transactionId===a);i?i.transform=A:this.state.transactions.push({transactionId:a,transform:A})}removeStateForTransaction(e){if(!this.state||!this.state.transactions)return;const A=this.state.transactions.findIndex(t=>t.transactionId===e);A!==-1&&this.state.transactions.splice(A,1)}getSerializedState(){if(this.state)return JSON.stringify(this.state)}flipTransform(e,A){return A&&A.flipTransform?A.flipTransform(e.position,{x:e.rotation.x*Math.PI/180,y:e.rotation.y*Math.PI/180,z:e.rotation.z*Math.PI/180},e.scale):{position:e.position,rotation:{x:e.rotation.x*Math.PI/180,y:e.rotation.y*Math.PI/180,z:e.rotation.z*Math.PI/180},scale:e.scale}}}class OA{constructor(e){this.collection=e}getId(){return this.collection.id}getName(){return this.collection.name}getProducts(){return this.collection.productCollectionProducts.map(e=>new zA(e))}getTransformCollection(){if(this.collection.transformCollection)return new jA(this.collection.transformCollection)}getResource(){return this.collection}}class zA{constructor(e){this.product=e.product,this.productResource=e}getId(){return this.product.id}getName(){return this.product.name}getIntegrationByType(e,A){const n=(this.product.integrationProducts||[]).find(a=>{var r,l,d;const i=(r=a.integration)==null?void 0:r.type,o=((l=a.integration)==null?void 0:l.type)===e,s=A?((d=a.integration)==null?void 0:d.externalIntegrationId)===A:!0;return i&&o&&s});if(!n)throw new Error("Failed to find requested integration type on product. This is generally due to a configuration error");return n}getDefaultWorkflow(){const e=this.product.workflows||[];if(e.length===0)throw new R("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");const A=this.productResource.workflowId;if(A){const n=e.find(a=>a.workflowName===A);if(n)return new Oe(n)}const t=e[0];return new Oe(t)}getIntegrations(){return this.product.integrationProducts||[]}getResource(){return this.product}getBasePrice(e){var n,a,i;const A=this.product.basePrice||0;if(!e)return A;if(!e.integrationType&&!e.externalId&&!e.integrationId)throw new Error("You must provide at least one of the following fields on the includeAdditionalProduct object: integrationType, externalId, integrationId");let t;return e.integrationId?t=(n=this.product.integrationProducts)==null?void 0:n.find(o=>{var s;return((s=o.integration)==null?void 0:s.id)===e.integrationId}):e.externalId?t=(a=this.product.integrationProducts)==null?void 0:a.find(o=>{var s;return((s=o.integration)==null?void 0:s.externalIntegrationId)===e.externalId}):t=(i=this.product.integrationProducts)==null?void 0:i.find(o=>{var s;return((s=o.integration)==null?void 0:s.type)===e.integrationType}),!t||!t.additionalIntegrationProduct||!t.additionalIntegrationProduct.product?A:A+(t.additionalIntegrationProduct.product.basePrice||0)}}class Oe{constructor(e){this.workflow=e}getId(){return this.workflow.workflowName}getName(){return this.workflow.friendlyName}getThumbnail(){return this.workflow.imageUrl}}class jA{constructor(e){this.collection=e}getId(){return this.collection.id}getName(){return this.collection.name}getTransforms(){return this.collection.transforms.map(e=>new KA(e))}}class KA{constructor(e){this.transform=e}getId(){return this.transform.id}getName(){return this.transform.name}get(){return{position:this.transform.position,rotation:this.transform.rotation,scale:this.transform.scale}}}class VA{constructor(e,A,t,n,a){var i,o,s;this.eventListeners=new Map,this.workflowExperiences=[],this.client=e,this.id=A.id,this.name=A.name||"",this.ownerId=a,this.metadata=new Map(((i=A.metadata)==null?void 0:i.map(r=>[r.key,r.value]))||[]),this.productCollection=A.productCollection,this.bundleStateManager=new Kn(A.bundleStateData),this.globalConfiguration=(o=this.productCollection)==null?void 0:o.globalPropertyConfiguration,this.globalPropertyStateManager=new jn(this.id,this.ownerId,this.checkConditionalHandlesChanged.bind(this)),this.globalPropertyHandleService=new kn(this),this.setPreviewService(t),this.initializationPromise=this.loadExistingBundles(((s=A.transactions)==null?void 0:s.map(r=>r.id))||[],n)}getInitializationPromise(){return this.initializationPromise}addEventListener(e,A){this.eventListeners.set(e,[...this.eventListeners.get(e)||[],A])}removeEventListener(e,A){const t=this.eventListeners.get(e)||[],n=t.indexOf(A);n>-1&&t.splice(n,1)}getClient(){return this.client}getId(){return this.id}getName(){return this.name}setName(e){return this.name=e,this.updateBundle()}getMetadata(){return new Map(this.metadata)}setMetadata(e){return this.metadata=new Map(e),this.updateBundle()}setNameAndMetadata(e,A){return this.name=e,this.metadata=new Map(A),this.updateBundle()}hasGlobalProperties(){return!!this.globalConfiguration&&this.globalConfiguration.aspects.length>0}async getGlobalProperties(){return this.globalPropertyHandleService.applyConditionsFromState(await this.globalPropertyHandleService.getHandles(),this.getGlobalPropertyStateManager().getGlobalPropertyState())}getGlobalPropertyStateManager(){return this.globalPropertyStateManager}async getGlobalPropertyTotalSubunits(){return(await this.globalPropertyHandleService.getHandles()).filter(t=>t.getType()===c.AspectType.Option).map(t=>{var n;return((n=t.getCurrentVariant())==null?void 0:n.getPrice())||0}).reduce((t,n)=>t+n,0)}getTotalSubunits(){return this.workflowExperiences.map(e=>e.getTotalPriceSubunits()).reduce((e,A)=>e+A,0)}getProductCollection(){return this.productCollection?new OA(this.productCollection):void 0}async addWorkflowExperience(e){await this.appendWorkflowExperience(e),await this.injectExperienceIntoPreviewService(e);const A=await this.getGlobalProperties();await Promise.all(A.map(t=>t.applyGlobalState([e])))}async addWorkflowExperiences(e){const A=e.map(i=>i.getWorkflowManager().getTransaction().id),t=A.map(i=>this.workflowExperiences.find(o=>o.getWorkflowManager().getTransaction().id===i));if(t.some(i=>!!i))throw new Error("Unable to add transaction to bundle - Already Exists: "+t.filter(i=>!!i).map(i=>i==null?void 0:i.getWorkflowManager().getTransaction().id).join(", "));const n=P.getMap("transactionOwnerIds")||new Map,a=A.map(i=>n.get(i));await x.getShadowGraphqlClient().mutate({mutation:xn,variables:{id:this.id,transactionIds:A,transactionOwnerIds:a},context:{bundleOwnerId:this.ownerId}}).catch(i=>{console.error(i)}),this.workflowExperiences.push(...e),await Promise.all([this.updateTransactionOrder(),(async()=>{for(const o of e)await this.injectExperienceIntoPreviewService(o);const i=await this.getGlobalProperties();await Promise.all(i.map(o=>o.applyGlobalState(e)))})()])}async appendWorkflowExperience(e,A=!0){const t=e.getWorkflowManager().getTransaction().id;if(this.workflowExperiences.find(o=>o.getWorkflowManager().getTransaction().id===t))throw new Error("Unable to add transaction to bundle - Already Exists!");const i=(P.getMap("transactionOwnerIds")||new Map).get(t);await x.getShadowGraphqlClient().mutate({mutation:Nn,variables:{id:this.id,transactionId:t},context:{bundleOwnerId:this.ownerId,transactionOwnerId:i}}),A&&this.workflowExperiences.push(e)}async removeWorkflowExperience(e){const A=this.workflowExperiences.indexOf(e);await this.removeTransaction(A,this.workflowExperiences[A].getWorkflowManager().getTransaction())}async removeWorkflowExperiences(e){await this.removeTransactions(e.map(A=>A.getWorkflowManager().getTransaction()))}async removeWorkflowExperienceByTransaction(e){const A=this.workflowExperiences.findIndex(t=>t.getWorkflowManager().getTransaction().id===e.id);await this.removeTransaction(A,e)}async removeWorkflowExperiencesByTransactions(e){await this.removeTransactions(e)}async removeTransaction(e,A,t=!0){if(e>-1){const n=this.workflowExperiences.find(a=>a.getWorkflowManager().getTransaction().id===A.id);this.previewService&&n.getWorkflowManager().ejectFromPreviewService(),this.bundleStateManager.removeStateForTransaction(A.id),await x.getShadowGraphqlClient().mutate({mutation:Hn,variables:{id:this.id,transactionId:A.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([a,i])=>({key:a,value:i})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),t&&(this.workflowExperiences.splice(e,1),await this.updateTransactionOrder())}else throw new Error("Unable to remove workflow experience from bundle - Not Found! - "+A.id)}async removeTransactions(e){const A=e.map(n=>this.workflowExperiences.findIndex(a=>a.getWorkflowManager().getTransaction().id===n.id));if(A.some(n=>n===-1))throw new Error("Unable to remove workflow experience from bundle - The following aren't included in the bundle: "+e.filter((n,a)=>A[a]===-1).map(n=>n.id).join(", "));const t=e.map(n=>this.workflowExperiences.splice(this.workflowExperiences.findIndex(a=>a.getWorkflowManager().getTransaction().id===n.id),1)[0]);this.previewService&&t.forEach(n=>n.getWorkflowManager().ejectFromPreviewService()),e.forEach(n=>this.bundleStateManager.removeStateForTransaction(n.id)),await x.getShadowGraphqlClient().mutate({mutation:Rn,variables:{id:this.id,transactionIds:e.map(n=>n.id),name:this.name,metadata:Array.from(this.metadata.entries()).map(([n,a])=>({key:n,value:a})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),await this.updateTransactionOrder()}async insertWorkflowExperience(e,A){await this.appendWorkflowExperience(e,!1),this.workflowExperiences.splice(A,0,e),await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(e);const t=await this.getGlobalProperties();await Promise.all(t.map(n=>n.applyGlobalState([e])))})()])}async replaceWorkflowExperience(e,A){if(e<0||e>=this.workflowExperiences.length)throw new Error("Unable to replace workflow experience in bundle - Index out of range!");const t=this.workflowExperiences[e];if(t.getWorkflowManager().getTransaction().id===A.getWorkflowManager().getTransaction().id)throw new Error("Unable to replace workflow experience in bundle - Same transaction!");await Promise.all([this.removeTransaction(e,t.getWorkflowManager().getTransaction(),!1),this.appendWorkflowExperience(A,!1)]),this.workflowExperiences[e]=A,await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(A);const n=await this.getGlobalProperties();await Promise.all(n.map(a=>a.applyGlobalState([A])))})()])}async swapWorkflowExperiences(e,A){if(e<0||e>=this.workflowExperiences.length||A<0||A>=this.workflowExperiences.length)throw new Error("Unable to swap workflow experiences in bundle - Index out of range!");if(e===A)return;const t=this.workflowExperiences[e];this.workflowExperiences[e]=this.workflowExperiences[A],this.workflowExperiences[A]=t,await this.updateTransactionOrder()}getWorkflowExperiences(){return[...this.workflowExperiences]}async sortWorkflowExperiences(e){this.workflowExperiences=this.workflowExperiences.sort(e),await this.updateTransactionOrder()}getWorkflowExperienceCount(){return this.workflowExperiences.length}async addStakeholder(e,A){var a;const t=await x.getShadowGraphqlClient().mutate({mutation:Un,variables:{id:this.id,details:e,type:A||oe.Owner},context:{bundleOwnerId:this.ownerId}});if(!((a=t.data)!=null&&a.bundleAddStakeholder))throw new Error("Bundle not found!");const n=t.data.bundleAddStakeholder.bundleStakeholders||[];this.storeStakeholderCustomers(n)}async updateStakeholders(e){var n;const A=await x.getShadowGraphqlClient().mutate({mutation:Gn,variables:{id:this.id,input:e},context:{bundleOwnerId:this.ownerId}});if(!((n=A.data)!=null&&n.bundleUpdateStakeholders))throw new Error("Bundle not found!");const t=A.data.bundleUpdateStakeholders.bundleStakeholders||[];this.storeStakeholderCustomers(t)}async getAllStakeholders(){const e=await x.getShadowGraphqlClient().query({query:Sn,errorPolicy:"all",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!e.data.bundles||e.data.bundles.length===0)throw new Error("Bundle not found!");const A=e.data.bundles[0].bundleStakeholders||[];return this.storeStakeholderCustomers(A),A}storeStakeholderCustomers(e){e.forEach(A=>{A.customer&&this.client.storeCustomer(A.customer)})}async finish(e,A){return await on(this.workflowExperiences.map(t=>({workflowManager:t.getWorkflowManager(),workflow:t.getWorkflowManager().getWorkflow(),layouts:t.getWorkflowManager().getLayouts(),getReducerState:()=>t.getCommandContext().getState(),product:t.getWorkflowManager().getProduct(),transaction:t.getWorkflowManager().getTransaction(),workflowSelections:t.getWorkflowManager().getWorkflowSelections(),designName:t.getWorkflowManager().getWorkflow().name,workflowMetadata:t.getWorkflowManager().getWorkflowMetadata()})),e??(()=>{}),A?(t,n)=>{const a=this.workflowExperiences.find(i=>i.getWorkflowManager().getTransaction().id===n);return a?A(a):(console.warn("SpiffCommerce - Bundle create design - Unable to find experience for transaction: "+n),Promise.resolve(void 0))}:void 0)}getPreviewService(){return this.previewService}async setPreviewService(e){if(this.workflowExperiences&&this.workflowExperiences.length>0&&(this.workflowExperiences.forEach(A=>A.getWorkflowManager().ejectFromPreviewService()),e))for(const A of this.workflowExperiences)await this.injectExperienceIntoPreviewService(A);e&&e.registerModelLoadEventListener&&e.registerModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService&&this.previewService!==e&&this.previewService.unregisterModelLoadEventListener&&this.previewService.unregisterModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService=e}setWorkflowExperienceTransform(e,A){return this.bundleStateManager.setWorkflowExperienceTransform(e,A),this.updateBundle()}onModelLoadEvent(e){e.eventType==="unload"||!e.modelContainer||(e.modelContainer.registerMaterialSelectedCallback(()=>this.onModelSelectedEvent(e.modelContainer,!0)),e.modelContainer.registerMaterialDeselectedCallback(()=>this.onModelSelectedEvent(e.modelContainer,!1)))}onModelSelectedEvent(e,A){if(e&&e.metadata&&e.metadata instanceof Map&&e.metadata.has("workflowManager")){const n=e.metadata.get("workflowManager").getTransaction(),a=this.workflowExperiences.find(i=>i.getWorkflowManager().getTransaction().id===n.id);a&&this.fireEvent(A?"workflow-experience-hover-enter":"workflow-experience-hover-exit",{workflowExperience:a})}}async injectExperienceIntoPreviewService(e){if(this.previewService){const A=e.getWorkflowManager().injectIntoPreviewService(this.previewService);try{this.bundleStateManager.applyStateToWorkflowExperience(e)}catch(t){console.error(`Unable to apply state to workflow experience: ${t}`)}await A}}async loadExistingBundles(e,A){if(e.length===0)return;const t=await this.client.getWorkflowExperiences(e.map(n=>({type:"transaction",transactionId:n})),A);if(this.workflowExperiences=t,this.previewService)for(const n of t)await this.injectExperienceIntoPreviewService(n)}async updateBundle(){var A;if(!((A=(await x.getShadowGraphqlClient().mutate({mutation:Pn,variables:{id:this.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([t,n])=>({key:t,value:n})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}})).data)!=null&&A.bundleUpdate))throw new Error("Bundle not found!")}async updateTransactionOrder(){await x.getShadowGraphqlClient().mutate({mutation:vn,variables:{id:this.id,transactionIds:this.workflowExperiences.map(e=>e.getWorkflowManager().getTransaction().id)},context:{bundleOwnerId:this.ownerId}})}async checkConditionalHandlesChanged(e,A){const t=await this.globalPropertyHandleService.getHandles(),n=this.globalPropertyHandleService.applyConditionsFromState(t,e),a=this.globalPropertyHandleService.applyConditionsFromState(t,A);(()=>{if(n.length!==a.length)return!0;for(let o=0;o<n.length;o++)if(n[o].getName()!==a[o].getName())return!0;return!1})()&&this.fireEvent("conditional-global-properties-changed",{globalProperties:a})}fireEvent(e,A){(this.eventListeners.get(e)||[]).forEach(n=>n({bundle:this,event:e,data:A}))}}const Vn=M.gql`
|
|
2221
2221
|
mutation processFlowCreate($processFlowId: String!, $inputs: [String]!) {
|
|
2222
2222
|
processExecutionCreate(processFlowId: $processFlowId, inputs: $inputs) {
|
|
2223
2223
|
id
|
package/package.json
CHANGED