{"version":3,"file":"product_components.pack.js","mappings":"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","sources":["webpack:///../common/ts/apps/delivery/services/ProductionTimeEstimate.ts","webpack:///../common/ts/apps/delivery/components/ProductProductionTime/ProductProductionTime.ts","webpack:///../common/ts/apps/delivery/components/ProductProductionTime/ProductProductionTime.html.ts","webpack:///../common/ts/core/utils/IntegrationExtra.ts","webpack:///../common/integrations/ts/SharedProductComponents.ts","webpack:///./integrations/ts/SharedProductComponents.ts"],"sourcesContent":["import {Http} from '../../../core/services/Http';\nimport {Services} from '../../../core/services/Services';\nimport {SimplePromise} from '../../../core/utils/SimplePromise';\n\nexport interface InitialProductionTime {\n    material_id: number;\n    quantity: number;\n    size: number | null;\n    standard?: number;\n    rush?: number;\n    message?: string;\n}\n\nexport default class ProductionTimeEstimate {\n    constructor(private initial?: InitialProductionTime) {}\n\n    getEstimate(material: number, quantity: number, size: number | null) {\n        const initial = this.initial;\n        this.initial = null;\n        if (initial && initial.material_id === material && initial.quantity === quantity && initial.size === size) {\n            return SimplePromise.resolve({\n                data: {\n                    standard: initial.standard,\n                    rush: initial.rush,\n                    message: initial.message\n                }\n            });\n        }\n        return Services.get<Http>('$http').request({\n            method: 'GET',\n            url: '/delivery/api/get-production-times-basic/',\n            params: {\n                material,\n                quantity,\n                size\n            }\n        });\n    }\n}\n","import VueComponent, {data, method} from '../../../../core/adapters/VueComponent';\nimport {html} from './ProductProductionTime.html';\nimport {Services} from '../../../../core/services/Services';\nimport ProductionTimeEstimate from '../../services/ProductionTimeEstimate';\n\nclass ProductProductionTimeController extends VueComponent {\n    private estimates: ProductionTimeEstimate;\n    private estimateRequest = 0;\n\n    @data()\n    standard: number;\n\n    @data()\n    rush: number;\n\n    @data()\n    message: string;\n\n    @data()\n    loaded: boolean;\n\n    @data()\n    backordered: boolean;\n\n    // Do not store the product service in the data. There is some odd bug\n    // that bricks the component and prevents it from updating the html.\n    // @data()\n    // product_service;\n\n    constructor(componet) {\n        super(componet);\n\n        Services.waitOn('product-service-loaded').then(() => {\n            let product_service: any = Services.get('ProductService');\n            this.estimates = new ProductionTimeEstimate(product_service.initial_production_time);\n            product_service.configured.bind('change:material', this.updateTimes.bind(this), this);\n            product_service.configured.bind('change:quantity', this.updateTimes.bind(this), this);\n            product_service.configured.bind('change:width', this.updateTimes.bind(this), this);\n            product_service.configured.bind('change:height', this.updateTimes.bind(this), this);\n\n            this.backordered = product_service.configured.material?.backordered;\n            product_service.configured.bind('change:material', () => {\n                this.backordered = product_service.configured.material?.backordered;\n            }, this);\n            this.updateTimes();\n        });\n    }\n\n    @method()\n    updateTimes() {\n        let product_service: any = Services.get('ProductService');\n        const request = ++this.estimateRequest;\n        if (!product_service.configured.material || !product_service.configured.quantity) {\n            return;\n        }\n\n        // Sanity check\n        if (product_service.configured.quantity > 500000) {\n            this.message = 'Please contact customer service for a production time estimate.';\n            return;\n        }\n\n        let size = null;\n        if (product_service.configured.width && product_service.configured.height) {\n            size = product_service.configured.width * product_service.configured.height;\n        }\n\n        this.estimates.getEstimate(product_service.configured.material.id, product_service.configured.quantity, size).then((response) => {\n            if (request !== this.estimateRequest) {\n                return;\n            }\n            this.message = response.data.message;\n            this.standard = response.data.standard;\n            this.rush = response.data.rush;\n        });\n    }\n\n    @method()\n    hidden() {\n        if (!Services.isRegistered('ProductService')) {\n            return false;\n        }\n\n        let product_service: any = Services.get('ProductService');\n        return !product_service.configured?.material;\n    }\n}\n\nexport default function ProductProductionTime() {\n    return {\n        tag: 'product-production-time',\n        controller: ProductProductionTimeController,\n        template: html\n    }\n}\n","export const html:string = `\n<div class=\"pill pill-rounded pill-lg\" :class=\"{'pill-green': !backordered, 'pill-warning': backordered}\" v-if=\"!hidden()\">\n    <span v-if=\"message\">\n        {{ message }}\n    </span>\n    <span v-if=\"backordered\">\n        Out of stock\n    </span>\n    <span v-if=\"!backordered && !message && rush != standard\">\n        Ships in {{ rush }} to {{ standard }} days\n    </span>\n    <span v-if=\"!backordered && !message && rush == standard\">\n        Ships within {{ standard }} days\n    </span>\n</div>\n`;","import {Services} from '../services/Services';\nimport {yieldThread} from './utils';\n\nexport abstract class IntegrationExtra {\n    constructor() {\n        Services.waitOn('loaded-core').then(() => {\n            this.setupGlobalModules();\n            this.setupModels();\n            this.setupServices();\n            this.configureServices();\n            yieldThread().then(() => {\n                this.setupApps();\n            })\n        })\n    }\n\n    configureServices(): void {};\n    setupGlobalModules(): void {};\n\n    abstract setupModels(): void;\n    abstract setupServices(): void;\n    abstract setupApps(): void;\n}","import VueApp from '../../ts/core/adapters/VueApp';\nimport {IntegrationExtra} from '../../ts/core/utils/IntegrationExtra';\nimport ProductProductionTime from '../../ts/apps/delivery/components/ProductProductionTime/ProductProductionTime';\nimport ProductTabGroup from '../../ts/apps/products_shared/apps/ProductTabGroup';\n\n\nexport default class SharedProductComponentsIntegration extends IntegrationExtra {\n    setupApps(): void {\n        VueApp.mount('#production-time-app', (app) => {\n            app.registerComponent(ProductProductionTime);\n        });\n    }\n\n    setupModels(): void {\n    }\n\n    setupServices(): void {\n    }\n}\n","import SharedProductComponentsIntegration from '../../../common/integrations/ts/SharedProductComponents';\n\nconst shared_products_integration = new SharedProductComponentsIntegration();"],"names":["ProductionTimeEstimate","constructor","initial","this","getEstimate","material","quantity","size","material_id","SimplePromise","yY","resolve","data","standard","rush","message","Services","x","get","request","method","url","params","ProductProductionTimeController","VueComponent","Ay","_classSuper","componet","super","estimates","__runInitializers","_instanceExtraInitializers","estimateRequest","_standard_initializers","_standard_extraInitializers","_rush_initializers","_rush_extraInitializers","_message_initializers","loaded","_message_extraInitializers","_loaded_initializers","backordered","_loaded_extraInitializers","_backordered_initializers","waitOn","then","product_service","initial_production_time","configured","bind","updateTimes","width","height","id","response","hidden","isRegistered","p","EJ","__esDecorate","_a","_updateTimes_decorators","kind","name","static","private","access","has","obj","metadata","_metadata","_hidden_decorators","_standard_decorators","set","value","_rush_decorators","_message_decorators","_loaded_decorators","_backordered_decorators","_backordered_extraInitializers","ProductProductionTime","tag","controller","template","IntegrationExtra","_services_Services__WEBPACK_IMPORTED_MODULE_0__","setupGlobalModules","setupModels","setupServices","configureServices","_utils__WEBPACK_IMPORTED_MODULE_1__","E","setupApps","SharedProductComponentsIntegration","T","VueApp","A","mount","app","registerComponent"],"sourceRoot":""}