@spiffcommerce/core 18.2.0-beta.2 → 18.2.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/index.js +11 -11
- package/dist/index.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8197,7 +8197,7 @@ class zn {
|
|
|
8197
8197
|
* @returns
|
|
8198
8198
|
*/
|
|
8199
8199
|
getBasePrice(A) {
|
|
8200
|
-
var a, n, s;
|
|
8200
|
+
var a, n, s, i;
|
|
8201
8201
|
const e = this.product.basePrice || 0;
|
|
8202
8202
|
if (!A)
|
|
8203
8203
|
return e;
|
|
@@ -8207,21 +8207,21 @@ class zn {
|
|
|
8207
8207
|
);
|
|
8208
8208
|
let t;
|
|
8209
8209
|
return A.integrationId ? t = (a = this.product.integrationProducts) == null ? void 0 : a.find(
|
|
8210
|
-
(
|
|
8211
|
-
var
|
|
8212
|
-
return ((
|
|
8210
|
+
(o) => {
|
|
8211
|
+
var r;
|
|
8212
|
+
return ((r = o.integration) == null ? void 0 : r.id) === A.integrationId;
|
|
8213
8213
|
}
|
|
8214
8214
|
) : A.externalId ? t = (n = this.product.integrationProducts) == null ? void 0 : n.find(
|
|
8215
|
-
(
|
|
8216
|
-
var
|
|
8217
|
-
return ((
|
|
8215
|
+
(o) => {
|
|
8216
|
+
var r;
|
|
8217
|
+
return ((r = o.integration) == null ? void 0 : r.externalIntegrationId) === A.externalId;
|
|
8218
8218
|
}
|
|
8219
8219
|
) : t = (s = this.product.integrationProducts) == null ? void 0 : s.find(
|
|
8220
|
-
(
|
|
8221
|
-
var
|
|
8222
|
-
return ((
|
|
8220
|
+
(o) => {
|
|
8221
|
+
var r;
|
|
8222
|
+
return ((r = o.integration) == null ? void 0 : r.type) === A.integrationType;
|
|
8223
8223
|
}
|
|
8224
|
-
),
|
|
8224
|
+
), (i = t == null ? void 0 : t.additionalIntegrationProduct) != null && i.product ? e + (t.additionalIntegrationProduct.product.basePrice || 0) : e;
|
|
8225
8225
|
}
|
|
8226
8226
|
}
|
|
8227
8227
|
class me {
|
package/dist/index.umd.cjs
CHANGED
|
@@ -2218,7 +2218,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
|
|
|
2218
2218
|
}
|
|
2219
2219
|
}
|
|
2220
2220
|
}
|
|
2221
|
-
`;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
|
+
`;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,o;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(s=>{var r;return((r=s.integration)==null?void 0:r.id)===e.integrationId}):e.externalId?t=(a=this.product.integrationProducts)==null?void 0:a.find(s=>{var r;return((r=s.integration)==null?void 0:r.externalIntegrationId)===e.externalId}):t=(i=this.product.integrationProducts)==null?void 0:i.find(s=>{var r;return((r=s.integration)==null?void 0:r.type)===e.integrationType}),(o=t==null?void 0:t.additionalIntegrationProduct)!=null&&o.product?A+(t.additionalIntegrationProduct.product.basePrice||0):A}}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`
|
|
2222
2222
|
mutation processFlowCreate($processFlowId: String!, $inputs: [String]!) {
|
|
2223
2223
|
processExecutionCreate(processFlowId: $processFlowId, inputs: $inputs) {
|
|
2224
2224
|
id
|