{"version":3,"sources":["models.js","../Client/models/enums.ts","../Client/models/app-enums.ts","../Client/models/all-enums.ts","../Client/models/configurators/configurator-di.ts","../Client/models/dialogs.ts","../Client/models/configurators/ctoken.ts","../Client/models/configurators/default-values.ts","../Client/models/configurators/kb-object.ts","../Client/models/configurators/rule-container.ts","../Client/models/configurators/ui-object.ts","../Client/models/configurators/accordion.ts","../Client/models/configurators/action-bar.ts","../Client/models/configurators/build.ts","../Client/models/configurators/button.ts","../Client/models/configurators/configurator-action.ts","../Client/models/configurators/configurator-function.ts","../Client/models/configurators/container.ts","../Client/models/configurators/hotspot.ts","../Client/models/configurators/kb-object-manager.ts","../Client/models/configurators/option-filter.ts","../Client/models/configurators/field.ts","../Client/models/configurators/group.ts","../Client/models/configurators/page.ts","../Client/models/configurators/referenced-configurator.ts","../Client/models/configurators/configurator.ts","../Client/models/configurators/dropdown-button.ts","../Client/models/configurators/expander.ts","../Client/models/configurators/grid-column.ts","../Client/models/configurators/grid-row.ts","../Client/models/configurators/html.ts","../Client/models/configurators/layout-config.ts","../Client/models/configurators/layout-content.ts","../Client/models/configurators/media.ts","../Client/models/configurators/partrev.ts","../Client/models/configurators/method-of-manufacture.ts","../Client/models/configurators/nested-set.ts","../Client/models/configurators/option.ts","../Client/models/configurators/output-fields/output-field.ts","../Client/models/configurators/output-fields/cad/cad-annotation-field.ts","../Client/models/configurators/output-fields/cad/cad-block-array-field.ts","../Client/models/configurators/output-fields/cad/cad-block-field.ts","../Client/models/configurators/output-fields/cad/cad-component-field.ts","../Client/models/configurators/output-fields/cad/cad-custom-property-field.ts","../Client/models/configurators/output-fields/cad/cad-dimension-field.ts","../Client/models/configurators/output-fields/cad/cad-drawing-annotation-field.ts","../Client/models/configurators/output-fields/cad/cad-drawing-dimension-field.ts","../Client/models/configurators/output-fields/cad/cad-drawing-sheet-field.ts","../Client/models/configurators/output-fields/cad/cad-drawing-view-field.ts","../Client/models/configurators/output-fields/cad/cad-dynamic-component-field.ts","../Client/models/configurators/output-fields/cad/cad-dynamic-drawing-annotation-field.ts","../Client/models/configurators/output-fields/cad/cad-dynamic-drawing-dimension-field.ts","../Client/models/configurators/output-fields/cad/cad-feature-field.ts","../Client/models/configurators/output-fields/cad/cad-layer-field.ts","../Client/models/configurators/output-fields/cad/cad-lib-feature-field.ts","../Client/models/configurators/output-fields/cad/cad-parameter-field.ts","../Client/models/configurators/output-fields/cad/cad-replace-component-field.ts","../Client/models/configurators/output-fields/cad/cad-representation-field.ts","../Client/models/configurators/output-fields/cad/cad-scale-feature-field.ts","../Client/models/configurators/output-fields/cad/cad-text-field.ts","../Client/models/configurators/output-fields/cad/mates/constraint.ts","../Client/models/configurators/output-fields/cad/mates/mate.ts","../Client/models/configurators/output-fields/cad/mates/cad-angle-mate.ts","../Client/models/configurators/output-fields/cad/mates/cad-coincident-mate.ts","../Client/models/configurators/output-fields/cad/mates/cad-coordinate-system-mate.ts","../Client/models/configurators/output-fields/cad/mates/cad-distance-mate.ts","../Client/models/configurators/output-fields/cad/mates/cad-lib-dimension.ts","../Client/models/configurators/output-fields/cad/mates/cad-lib-reference.ts","../Client/models/configurators/output-fields/cad/mates/cad-position-constraint.ts","../Client/models/configurators/output-fields/excel-cell-field.ts","../Client/models/configurators/output-fields/excel-chart-field.ts","../Client/models/configurators/output-fields/excel-image-field.ts","../Client/models/configurators/output-fields/excel-sheet-field.ts","../Client/models/configurators/output-fields/excel-table-field.ts","../Client/models/configurators/output-fields/pdf-section-field.ts","../Client/models/configurators/output-fields/word-container-field.ts","../Client/models/configurators/output-fields/word-image-field.ts","../Client/models/configurators/output-fields/word-list-field.ts","../Client/models/configurators/output-fields/word-text-field.ts","../Client/models/configurators/output-fields/zip-section-field.ts","../Client/models/configurators/outputs/export.ts","../Client/models/configurators/outputs/output.ts","../Client/models/configurators/outputs/file-output.ts","../Client/models/configurators/outputs/bom-output.ts","../Client/models/configurators/outputs/cad-drawing-output.ts","../Client/models/configurators/outputs/cad-output.ts","../Client/models/configurators/outputs/excel-output.ts","../Client/models/configurators/outputs/image-output.ts","../Client/models/configurators/outputs/pdf-output.ts","../Client/models/configurators/outputs/render-pass-export.ts","../Client/models/configurators/outputs/scene-render-output.ts","../Client/models/configurators/outputs/svg-output.ts","../Client/models/configurators/outputs/text-output.ts","../Client/models/configurators/outputs/word-output.ts","../Client/models/configurators/outputs/zip-output.ts","../Client/models/configurators/page-control.ts","../Client/models/configurators/page-navigator.ts","../Client/models/configurators/page-tabs.ts","../Client/models/configurators/part-material.ts","../Client/models/configurators/part-operation-detail.ts","../Client/models/configurators/part-operation.ts","../Client/models/configurators/popup.ts","../Client/models/configurators/price-widget.ts","../Client/models/configurators/pricing-rule-container.ts","../Client/models/configurators/rule.ts","../Client/models/configurators/svg-viewer.ts","../Client/models/configurators/tab-control.ts","../Client/models/configurators/tab.ts","../Client/models/configurators/text.ts","../Client/models/configurators/toolbar.ts","../Client/models/configurators/viewer.ts","../Client/models/meta.ts","../Client/models/table.ts"],"names":["models","exports","_tools","ePerm","eNotificationType","eNotificationSetting","eEnvironment","eWorkflowAction","eViewPermission","eOutputType","eOutputFieldType","eExportType","eFileSource","eFileStatus","eLogType","eLogSource","eFieldType","eFieldControl","eSort","eProductSortBy","eFormatType","eRuleType","eClusterEnv","eConfiguratorLayout","eConfiguratorTabStyle","eDeploymentStatus","eDifference","eViewerMode","ePosition","eTabPosition","eColumnType","eSelectSource","eAutoCompleteSource","eOptionFilterSource","eDynamicSource","eQueryMode","eConfiguratorImageSource","ePricingFillFromSource","eSingleOptionBehavior","eFilterSource","eFilterType","eFilterControl","eLogSetting","eHotspotSource","eHotspotAttach","eLayerLineWeight","eHotspotPosition","eAnimationEasing","eQueueMessageType","eStateType","eDescriptorType","eWorkflowBuildType","eWorkflowPermissionType","eAdminNotificationTarget","eConfiguratorEntityType","eHotspotShape","eValidationType","eIconStyle","eOracleCpqOperation","eOptionLayout","eButtonStyle","eTableExternalSource","eSkin","eGridColumnWidth","eRelativeSize","eVerticalAlignment","eHorizontalAlignment","ePadding","eMaskType","eValidationTiming","eTextStyle","eTextColor","eTextWeight","eDragMode","eConnectionMode","eToolbarPosition","eContainerItemLayout","eContainerChildAlignment","eContainerItemAlignment","eContainerItemJustify","eColorShade","eBackgroundColor","eElevation","eSliderValueVisibility","eOrientation","eTabSelectionStyle","eSelectionLineColor","eTabWidth","eScroll","eAttributeType","eAttributeControl","eNestedSetDisplay","eUserLicenseType","eJobStatus","eJobType","eValidationSource","eBuildStatus","eAdminIndexOperation","eViewType","eAdminType","eAlertType","eColorFormat","eColorOperation","AllEnums","Object","freeze","__proto__","Kbo","token","target","ConfiguratorDI","register","class","KboOutputField","outputFieldType","KboOutput","outputTypes","_i","arguments","length","Enumerable","propertyKey","descriptor","enumerable","eInputDialogType","eMediaFilter","args","db","hasOwnProperty","key","Error","concat","prototype","$type","type","get","instanceOf","instance","inj","this","getNewOutputField","fieldType","kom","ikbo","values","find","k","f","recurse","getNewOutput","outputType","contains","o","name","loc","toLowerCase","getOutputFieldClassName","getOutputClassName","CToken","withKey","hasKey","Accordion","ActionBar","Build","Button","Configurator","ConfiguratorAction","ConfiguratorFunction","Container","DropdownButton","Expander","Export","Field","GridColumn","GridRow","Group","Html","SvgViewer","Hotspot","KbObject","LayoutConfig","LayoutContent","Media","NestedSet","OptionFilter","Option","Page","PageControl","PageNavigator","PageTabs","Popup","PriceWidget","PricingRuleContainer","ProductRuleContainer","ReferencedConfigurator","RenderPassExport","RuleContainer","Rule","Tab","TabControl","Text","Toolbar","Viewer","BomOutput","CadDrawingOutput","CadOutput","ExcelOutput","FileOutput","ImageOutput","Output","PdfOutput","SceneRenderOutput","WordOutput","ZipOutput","SvgOutput","TextOutput","ExcelCellField","ExcelChartField","ExcelImageField","ExcelSheetField","ExcelTableField","OutputField","PdfSectionField","WordContainerField","WordImageField","WordListField","WordTextField","ZipSectionField","CadAnnotationField","CadBlockArrayField","CadBlockField","CadComponentField","CadCustomPropertyField","CadDimensionField","CadDrawingAnnotationField","CadDrawingDimensionField","CadDrawingSheetField","CadDrawingViewField","CadDynamicComponentField","CadDynamicDrawingAnnotationField","CadDynamicDrawingDimensionField","CadFeatureField","CadLayerField","CadLibFeatureField","CadParameterField","CadReplaceComponentField","CadRepresentationField","CadScaleFeatureField","CadTextField","CadAngleMate","CadCoincidentMate","CadCoordinateSystemMate","CadDistanceMate","CadLibDimension","CadLibReference","CadPositionConstraint","Constraint","Mate","PartRev","PartMaterial","PartOperation","PartOperationDetail","MethodOfManufacture","defaults","visible","left","top","right","bottom","width","height","opacity","order","relativeSize","alignment","buttonStyle","buttonColor","iconSize","idBuildType","idQueue","cloudBuild","ruleType","enabled","iconStyle","textPosition","color","imageHeight","imageWidth","showLabel","fullWidth","relativeWidth","useZeroPadding","entityType","unitOfMeasure","price","cost","maxDiscountPercentage","maxQty","minQty","allowFractionalQty","score","usePartSelector","active","inheritCategoryPermissions","v","snapVersion","alwaysChild","validationTiming","allowSaveWithErrors","idLayout","useMobileDropdowns","headerColor","showMoveAnimation","viewerMode","clearMemoryWhenSwitchingScenes","sceneToolbarPosition","nestedSceneClickToSelect","runQuoteRuleUponInsert","imageSource","allowUserToRemove","bubbleRules","hasPricingRule","hasQuoteRule","autoValidation","convertToKb3d","mouseOverEffects","mouseOverColor","prefetchImages","allowOrbit","allowPan","allowZoom","constrainCameraToRadius","cameraRadius","isPlaceholder","scroll","itemLayout","itemAlignment","itemJustify","spaceBetweenItems","padding","collapseOnMobile","backgroundColor","backgroundShade","backgroundOpacity","elevation","expanded","required","control","searchable","mask","precision","constrainValue","min","max","step","sliderAllowDirectEdit","sliderValueVisibility","dateFormat","format","formatMinPrecision","formatCurrency","formatDecimalSeparator","formatThousandsSeparator","selectSource","autoCompleteSource","useFullTextSearch","constrainToSource","sort","imageOnly","optionLayout","dropdownOptionLayout","enableSelectedImages","linkToDynamicAttribute","hasBeenTouched","uploadToScene","convertUploadedSceneImageToMesh","convertUploadPdfToImage","uploadImageThreshold","verticalAlignment","horizontalAlignment","popupPosition","popupAttach","keepPopupInViewer","popupOffsetX","popupOffsetY","popupTop","popupLeft","popupBottom","popupRight","popupWidth","popupHeight","open","alpha","allowClose","showPopupHeader","showPopupBackground","showTooltip","targetColor","targetShape","targetSize","source","animationDuration","animationEasing","maxHeight","maxWidth","MethodOfManufactureRuleContainer","display","autoNavigateToElement","optimized","level","queryMode","singleOptionBehavior","visibleToChildren","BomMappingField","markedForDrawing","insertionPointX","insertionPointY","insertionPointZ","xScale","yScale","zScale","rotation","flipX","flipY","numRows","rowSpacing","numColumns","columnSpacing","suppressed","deleted","value","x","y","scaleNumerator","scaleDenominator","useCustomScale","scaleAnnoPosition","scaleAnnoTextHeight","autoPositionAnnotations","autosize","autoDimension","autoBalloon","ignoreMultipleBalloons","autoPosition","bomRenumber","allowMultipleBalloonsFirstLevelOnly","referencedPartFamily","fixed","vertical","dimensionTextPrefix","lineType","toAdd","lineWeight","lock","plottable","z","isUniform","scaleUniform","angle","aligned","alignClosest","distance","referenceType","CadPoint","xAngle","yAngle","zAngle","tryCalculateFormula","autoFitColumns","autoFitRows","idTag","nestedIdProduct","TableOutputField","fixContentControlSize","mode","fileNameAsTopModelName","hideCADApplication","closeCADatEnd","maxBuildTime","copyAllFiles","deleteOldFiles","modifyDimensionInAllConfig","createBOM","creoVersion","postToCloud","frameCamera","framePadding","allowEmpty","showPageLabel","labelColor","orientation","tabStyle","tabWidth","customTabWidth","showTabLabels","selectionStyle","selectionColor","selectionShade","selectionLineColor","showDetails","requiresUpdate","fillFromSource","nestScene","nestHotspots","nestPriceObject","nestMethodOfManufacture","style","weight","UiObject","PropertyChangedEvent","_super","apply","__extends","KbEvent","$manager","_this","$propertyChanged","getParent","$parent","Utils","guardNotNull","defaultsClass","prop","id","shortId","generateName","obj","parentGroup","i","resultName","forEach","kb","setProperty","propertyName","newValue","addToUndoStack","privateProp","oldValue","changed","trigger","property","defineProperty","_id","set","val","areEqual","removeKbObjectById","addKbObjectWithId","configurable","getParentOfType","parent","findAncestor","predicate","_parentConfigurator","_name","getUniqueName","removeKbObjectNameReference","addKbObjectNameReference","label","serialize","modifier","result","_loop_1","substr","this_1","ignoredProperties","some","p","isEqual","item","Function","constructor","Array","map","setProps","allowedChildren","rootType","__decorate","call","references","_rules","removeRule","rule","removeKbObject","rules","removeWhere","r","$valid","getCss","Number","filterChildren","tokens","allChildren","list","c","t","push","getChildrenOfType","c2","allChildren_1","containerChildren","isValid","$parentConfigurator","toKebabCase","_expanders","expanders","$outputsNode","$rulesNode","_ruleContainers","_outputs","addOutput","output","addKbObject","outputs","removeOutput","remove","removeRuleContainer","rc","ruleContainers","button","icon","icons","action","function","_children","children","$uid","KbObjectManager","kbObjects","kbObjectIds","isArray","oChild","getByName","throwOnFailure","n","getByIdOrName","idOrName","hasNamedObject","proposed","counter","nameIsUnique","toString","clear","create","sourceItem","targetItem","komArg","propDef","getOwnPropertyDescriptor","upload","extend","optionFilter","dependsOn","dependsOnThis","fieldReferences","field","validationErrors","warnings","none","Field_1","_tags","convertValue","convertToType","convertForSet","date","Date","path","assetId","$freezeFieldValueCalculation","_dirty","val_1","_value","$running","isValueConstrainedToOptions","options","isArrayType","_lastCalculatedValue","origValue","$fieldsDirty","$fieldsDirtyForSceneRules","number","formatType","currency","minPrecision","maxPrecision","decimalSeparator","thousandsSeparator","prefix","formatPrefix","suffix","formatSuffix","recalculateValue","_minDate","_maxDate","_options","timing","always","preValidate","isDefined","addValidation","message","validation_valuemustbegreaterthan","validation_valuemustbelessthan","minDate","toDateString","maxDate","text","validation_required","validateCondition","condition","errorMessage","fixThis","fixThisOptions","msg","isWarning","w","canJoinOptionFilter","imageSelect","select","radio","colorSelect","swatchSelect","checkbox","toggle","multiSelect","imageMultiSelect","colorMultiSelect","idOptionFilter","equalsAny","textArray","numberArray","colorArray","getBaseType","toType","rounder","boolean","String","Boolean","addField","removeField","page","Page_1","_pages","_configurators","addGroup","group","removeGroup","addPage","pages","removePage","allPages","getFields","fields","filter","_a","configurators","_b","nestedSets_1","_c","_d","allowed","splice","userCanAddTo","$ranLoadedRule","_viewerMode","undefined","$actionsNode","$functionsNode","$optionFiltersNode","$referencedConfiguratorsNode","$buildsNode","$hotspotsNode","Configurator_1","_layoutSettings","_idScene","_builds","_optionFilters","_referencedConfigurators","_referencedScenes","_actions","_functions","_hotspots","_layoutContents","isNested","allGroups","layoutContents","selectMany","lc","allRuleContainers","actions","optionFilters","getOutputs","addAction","removeAction","addFunction","functions","removeFunction","addOptionFilter","st","removeOptionFilter","addHotspot","ann","hotspots","removeHotspot","addBuild","buildType","build","builds","b","removeBuild","addReferencedConfigurator","idProduct","referencedConfigurators","removeReferencedConfigurator","addReferencedScene","idScene","referencedScenes","rs","removeReferencedScene","getNestedConfigurators","ns","getAllConfigurators","allNested","addToNested","config","nestedConfigs","pushArray","hasRule","js","getRuleJs","getRuleJsFromContainer","ruleContainer","globalRc","global","setFields","process","drawings","getExports","outputs_1","exp","getGroups","groups","g","getFieldsObject","runConfiguredProduct","configProduct","productDb","fieldRec","stringValue","numberValue","booleanValue","dateValue","uploadValue","stringArrayValue","numberArrayValue","nestRec","idParent","nested","configurator","addedByUser","getConfiguredProduct","withDesiredValues","getFieldValue","desiredValue","idQuoteHeader","validationMessages","parameters","err","messageType","error","object","$label","warn","warning","configuredNested","filtersShouldRunOnClient","database","safeFunction","query","getPartMaterial","mtlPartNum","methodOfManufacture","material","materials","rootPartRev","partNum","getPartOperation","opCode","operations","getPartOperationDetail","j","opDtl","operationDetails","resourceID","resourceGrpID","_buttons","buttons","_columns","columns","$layoutSettingsDirty","$settingsNode","_settings","addSettingsGroup","settings","removeSettingsGroup","addSettingsField","removeSettingsField","getContentContainers","contentType","data","_metadata","$materialsNode","$operationsNode","getMetadataProperties","_materials","_operations","getIdentifyingProperty","manufacture","nestedSetSelected","getNewOutputFieldOfType","cadAnnotation","cadBlockArray","cadBlock","cadComponent","cadCustomProperty","cadDimension","cadDrawingAnnotation","cadDrawingDimension","cadDrawingSheet","cadDrawingView","addConstraint","constraintType","constraint","constraints","removeConstraint","_constraints","cadDynamicComponent","cadDynamicDrawingAnnotation","cadDynamicDrawingDimension","cadFeature","cadLayer","cadLibReference","dimensions","_references","_dimensions","cadLibFeature","cadParameter","cadReplaceComponent","cadRepresentation","cadScaleFeature","cadText","cadAngleMate","cadCoincidentMate","cadCoordinateSystemMate","cadDistanceMate","cadLibDimension","cadPositionConstraint","excelCell","excelChart","template","excelImage","excelSheet","excelTable","pdfSection","wordContainer","wordImage","wordList","wordText","zipSection","ImageTypes","bmp","gif","jpg","png","tiff","$fieldsNode","$exportsNode","$drawingsNode","Output_1","isCadOutput","inventor","solidworks","creo","autoCad","supportsCadDrawings","getOutputExportTypes","et","extension","createExportType","word","pdf","doc","docm","dot","dotm","dotx","emf","epub","html","rtf","txt","xaml","xps","odt","excel","csv","xml","ods","svg","x_t","igs","sat","stl","wrl","vda","eps","neu","tif","iv","slp","catproduct","jt","x_b","xgl","zgl","dwf","sldprt","easm","u3d","psd","ai","cgr","asm","hcg","hsf","dxf","cadDrawing","getCadDrawingExportTypes","bom","_custom","dwg","edrw","getOutputFieldTypes","getOutputFieldTypesByOutputType","zip","getConstraintFieldTypes","getLibFeatureConstraintTypes","usesTemplate","_fields","_exports","addExport","exprt","sceneRender","removeExport","addOutputField","removeOutputField","outputField","containers","addDrawing","drw","removeDrawing","drawing","creo3","salesforce","image","addRenderPass","textContent","_operationDetails","pricing","_columnMaps","svgViewer","_tabs","tabs","DialogButtonArgs","close","InputDialogButtonArgs","MediaDialogButtonArgs","DialogButton","title","callback","InputDialogButton","MediaDialogButton","meta","$name","BuildType","Channel","Company","Contact","CustomAction","Customer","EmailTemplate","Generator","GlobalDefinition","Job","default","enumType","status","createdDate","completedDate","KbRole","KbUserEdit","firstName","lastName","email","isApproved","licenseType","modifiedDate","lastLoginDate","Layout","Log","Material","MatTag","Notification","OutputBuilder","PriceColumn","Product","shortDescription","sku","mfgPartNumber","manufacturer","isConfigured","images","translations","ProductHistory","ProductImage","imagePath","imageOrder","Queue","Quote","state","ownedBy","permissions","viewUsers","idCustomer","viewCustomers","idContact","description","owner","customer","contact","products","files","totalPrice","viewPrices","QuoteFile","tags","filePath","QuoteHeader","QuoteOutput","QuoteProduct","idQuote","quote","createdBy","SafeFunction","Scene","modifiedBy","external","createdByName","SsoGroupRoleMapping","Table","dbTable","Tag","TestBuild","creatorName","Theme","Workflow","valid","isDefault","SceneHistory","_columnDb","addColumn","col","addRow","row","rowArr","getCell","rowIndex","colName","toObjectArray","d","columnScrubMap","scrubName","tools"],"mappings":"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","file":"models.min.js","sourcesContent":["var models = (function (exports, _tools) {\n 'use strict';\n\n (function (ePerm) {\n ePerm[\"viewUsers\"] = \"viewUsers\";\n ePerm[\"modifyUsers\"] = \"modifyUsers\";\n ePerm[\"modifyMedia\"] = \"modifyMedia\";\n ePerm[\"viewProducts\"] = \"viewProducts\";\n ePerm[\"modifyProducts\"] = \"modifyProducts\";\n ePerm[\"viewCustomers\"] = \"viewCustomers\";\n ePerm[\"modifyCustomers\"] = \"modifyCustomers\";\n ePerm[\"viewComments\"] = \"viewComments\";\n ePerm[\"addComments\"] = \"addComments\";\n ePerm[\"modifyAllComments\"] = \"modifyAllComments\";\n ePerm[\"viewAttachments\"] = \"viewAttachments\";\n ePerm[\"addAttachments\"] = \"addAttachments\";\n ePerm[\"modifyAllAttachments\"] = \"modifyAllAttachments\";\n ePerm[\"modifyCurrencies\"] = \"modifyCurrencies\";\n ePerm[\"modifyScenes\"] = \"modifyScenes\";\n ePerm[\"setQuoteDiscount\"] = \"setQuoteDiscount\";\n ePerm[\"setQuoteCustomer\"] = \"setQuoteCustomer\";\n ePerm[\"setQuoteShipping\"] = \"setQuoteShipping\";\n ePerm[\"setQuoteCurrency\"] = \"setQuoteCurrency\";\n ePerm[\"viewQuoteDiscount\"] = \"viewQuoteDiscount\";\n ePerm[\"viewQuoteCustomer\"] = \"viewQuoteCustomer\";\n ePerm[\"viewQuoteShipping\"] = \"viewQuoteShipping\";\n ePerm[\"viewQuoteHeader\"] = \"viewQuoteHeader\";\n ePerm[\"viewQuoteCurrency\"] = \"viewQuoteCurrency\";\n ePerm[\"viewPrices\"] = \"viewPrices\";\n ePerm[\"viewCost\"] = \"viewCost\";\n ePerm[\"loginToOutputBuilder\"] = \"loginToOutputBuilder\";\n ePerm[\"setQuoteProductDescription\"] = \"setQuoteProductDescription\";\n })(exports.ePerm || (exports.ePerm = {}));\n (function (eNotificationType) {\n eNotificationType[\"generic\"] = \"generic\";\n eNotificationType[\"newUser\"] = \"newUser\";\n eNotificationType[\"passwordReset\"] = \"passwordReset\";\n eNotificationType[\"pendingApproval\"] = \"pendingApproval\";\n eNotificationType[\"quoteApproved\"] = \"quoteApproved\";\n eNotificationType[\"quoteRejected\"] = \"quoteRejected\";\n eNotificationType[\"quote\"] = \"quote\";\n eNotificationType[\"errorLog\"] = \"errorLog\";\n })(exports.eNotificationType || (exports.eNotificationType = {}));\n (function (eNotificationSetting) {\n eNotificationSetting[\"none\"] = \"none\";\n eNotificationSetting[\"companyDefault\"] = \"companyDefault\";\n eNotificationSetting[\"notify\"] = \"notify\";\n eNotificationSetting[\"email\"] = \"email\";\n eNotificationSetting[\"notifyAndEmail\"] = \"notifyAndEmail\";\n })(exports.eNotificationSetting || (exports.eNotificationSetting = {}));\n (function (eEnvironment) {\n eEnvironment[\"prod\"] = \"prod\";\n eEnvironment[\"test\"] = \"test\";\n eEnvironment[\"dev\"] = \"dev\";\n })(exports.eEnvironment || (exports.eEnvironment = {}));\n (function (eWorkflowAction) {\n eWorkflowAction[\"custom\"] = \"custom\";\n eWorkflowAction[\"save\"] = \"save\";\n eWorkflowAction[\"deleter\"] = \"deleter\";\n eWorkflowAction[\"submit\"] = \"submit\";\n eWorkflowAction[\"approve\"] = \"approve\";\n eWorkflowAction[\"reject\"] = \"reject\";\n eWorkflowAction[\"entryFail\"] = \"entryFail\";\n eWorkflowAction[\"completeBuild\"] = \"completeBuild\";\n eWorkflowAction[\"failBuild\"] = \"failBuild\";\n eWorkflowAction[\"modifyProducts\"] = \"modifyProducts\";\n eWorkflowAction[\"modifyDiscount\"] = \"modifyDiscount\";\n eWorkflowAction[\"modifyName\"] = \"modifyName\";\n eWorkflowAction[\"modifyCustomer\"] = \"modifyCustomer\";\n eWorkflowAction[\"modifyAttachments\"] = \"modifyAttachments\";\n eWorkflowAction[\"addAttachments\"] = \"addAttachments\";\n eWorkflowAction[\"modifyQuoteHeader\"] = \"modifyQuoteHeader\";\n eWorkflowAction[\"modifyCurrency\"] = \"modifyCurrency\";\n eWorkflowAction[\"reorderProducts\"] = \"reorderProducts\";\n eWorkflowAction[\"modifyQuoteProductDescription\"] = \"modifyQuoteProductDescription\";\n eWorkflowAction[\"modifyShipping\"] = \"modifyShipping\";\n eWorkflowAction[\"buildQuoteProduct\"] = \"buildQuoteProduct\";\n })(exports.eWorkflowAction || (exports.eWorkflowAction = {}));\n (function (eViewPermission) {\n eViewPermission[\"viewQuote\"] = \"viewQuote\";\n eViewPermission[\"viewCost\"] = \"viewCost\";\n eViewPermission[\"viewPricing\"] = \"viewPricing\";\n eViewPermission[\"viewDiscount\"] = \"viewDiscount\";\n eViewPermission[\"viewCustomer\"] = \"viewCustomer\";\n eViewPermission[\"viewOutput\"] = \"viewOutput\";\n eViewPermission[\"viewQuoteHeader\"] = \"viewQuoteHeader\";\n eViewPermission[\"viewCurrency\"] = \"viewCurrency\";\n eViewPermission[\"viewShipping\"] = \"viewShipping\";\n eViewPermission[\"viewQuoteProductDetails\"] = \"viewQuoteProductDetails\";\n })(exports.eViewPermission || (exports.eViewPermission = {}));\n (function (eOutputType) {\n eOutputType[\"none\"] = \"none\";\n eOutputType[\"word\"] = \"word\";\n eOutputType[\"excel\"] = \"excel\";\n eOutputType[\"image\"] = \"image\";\n eOutputType[\"solidworks\"] = \"solidworks\";\n eOutputType[\"inventor\"] = \"inventor\";\n eOutputType[\"creo\"] = \"creo\";\n eOutputType[\"creo3\"] = \"creo3\";\n eOutputType[\"cadDrawing\"] = \"cadDrawing\";\n eOutputType[\"bom\"] = \"bom\";\n eOutputType[\"sceneRender\"] = \"sceneRender\";\n eOutputType[\"pdf\"] = \"pdf\";\n eOutputType[\"salesforce\"] = \"salesforce\";\n eOutputType[\"autoCad\"] = \"autoCad\";\n eOutputType[\"zip\"] = \"zip\";\n eOutputType[\"svg\"] = \"svg\";\n eOutputType[\"text\"] = \"text\";\n })(exports.eOutputType || (exports.eOutputType = {}));\n (function (eOutputFieldType) {\n eOutputFieldType[\"wordText\"] = \"wordText\";\n eOutputFieldType[\"wordContainer\"] = \"wordContainer\";\n eOutputFieldType[\"wordImage\"] = \"wordImage\";\n eOutputFieldType[\"wordList\"] = \"wordList\";\n eOutputFieldType[\"excelSheet\"] = \"excelSheet\";\n eOutputFieldType[\"excelCell\"] = \"excelCell\";\n eOutputFieldType[\"excelImage\"] = \"excelImage\";\n eOutputFieldType[\"excelTable\"] = \"excelTable\";\n eOutputFieldType[\"excelChart\"] = \"excelChart\";\n eOutputFieldType[\"cadReplaceComponent\"] = \"cadReplaceComponent\";\n eOutputFieldType[\"cadAngleMate\"] = \"cadAngleMate\";\n eOutputFieldType[\"cadCoincidentMate\"] = \"cadCoincidentMate\";\n eOutputFieldType[\"cadCoordinateSystemMate\"] = \"cadCoordinateSystemMate\";\n eOutputFieldType[\"cadDistanceMate\"] = \"cadDistanceMate\";\n eOutputFieldType[\"cadPositionConstraint\"] = \"cadPositionConstraint\";\n eOutputFieldType[\"cadDimension\"] = \"cadDimension\";\n eOutputFieldType[\"cadFeature\"] = \"cadFeature\";\n eOutputFieldType[\"cadLibFeature\"] = \"cadLibFeature\";\n eOutputFieldType[\"cadCustomProperty\"] = \"cadCustomProperty\";\n eOutputFieldType[\"cadComponent\"] = \"cadComponent\";\n eOutputFieldType[\"cadDrawingView\"] = \"cadDrawingView\";\n eOutputFieldType[\"cadDrawingSheet\"] = \"cadDrawingSheet\";\n eOutputFieldType[\"cadDrawingAnnotation\"] = \"cadDrawingAnnotation\";\n eOutputFieldType[\"cadDynamicDrawingDimension\"] = \"cadDynamicDrawingDimension\";\n eOutputFieldType[\"cadDynamicDrawingAnnotation\"] = \"cadDynamicDrawingAnnotation\";\n eOutputFieldType[\"cadDynamicComponent\"] = \"cadDynamicComponent\";\n eOutputFieldType[\"cadNestedComponent\"] = \"cadNestedComponent\";\n eOutputFieldType[\"cadScaleFeature\"] = \"cadScaleFeature\";\n eOutputFieldType[\"cadAnnotation\"] = \"cadAnnotation\";\n eOutputFieldType[\"cadText\"] = \"cadText\";\n eOutputFieldType[\"cadParameter\"] = \"cadParameter\";\n eOutputFieldType[\"cadRepresentation\"] = \"cadRepresentation\";\n eOutputFieldType[\"cadPoint\"] = \"cadPoint\";\n eOutputFieldType[\"cadLayer\"] = \"cadLayer\";\n eOutputFieldType[\"bomMapping\"] = \"bomMapping\";\n eOutputFieldType[\"salesForceObject\"] = \"salesForceObject\";\n eOutputFieldType[\"cadDrawingDimension\"] = \"cadDrawingDimension\";\n eOutputFieldType[\"pdfSection\"] = \"pdfSection\";\n eOutputFieldType[\"cadLibReference\"] = \"cadLibReference\";\n eOutputFieldType[\"cadLibDimension\"] = \"cadLibDimension\";\n eOutputFieldType[\"cadBlock\"] = \"cadBlock\";\n eOutputFieldType[\"cadBlockArray\"] = \"cadBlockArray\";\n eOutputFieldType[\"zipSection\"] = \"zipSection\";\n })(exports.eOutputFieldType || (exports.eOutputFieldType = {}));\n (function (eExportType) {\n eExportType[\"_custom\"] = \"_custom\";\n eExportType[\"pdf\"] = \"pdf\";\n eExportType[\"bmp\"] = \"bmp\";\n eExportType[\"doc\"] = \"doc\";\n eExportType[\"docm\"] = \"docm\";\n eExportType[\"dot\"] = \"dot\";\n eExportType[\"dotm\"] = \"dotm\";\n eExportType[\"dotx\"] = \"dotx\";\n eExportType[\"emf\"] = \"emf\";\n eExportType[\"epub\"] = \"epub\";\n eExportType[\"html\"] = \"html\";\n eExportType[\"jpg\"] = \"jpg\";\n eExportType[\"gif\"] = \"gif\";\n eExportType[\"tiff\"] = \"tiff\";\n eExportType[\"dwf\"] = \"dwf\";\n eExportType[\"edrw\"] = \"edrw\";\n eExportType[\"png\"] = \"png\";\n eExportType[\"odt\"] = \"odt\";\n eExportType[\"rtf\"] = \"rtf\";\n eExportType[\"tif\"] = \"tif\";\n eExportType[\"xaml\"] = \"xaml\";\n eExportType[\"xps\"] = \"xps\";\n eExportType[\"ods\"] = \"ods\";\n eExportType[\"svg\"] = \"svg\";\n eExportType[\"txt\"] = \"txt\";\n eExportType[\"easm\"] = \"easm\";\n eExportType[\"prt\"] = \"prt\";\n eExportType[\"g\"] = \"g\";\n eExportType[\"dwg\"] = \"dwg\";\n eExportType[\"dxf\"] = \"dxf\";\n eExportType[\"sldprt\"] = \"sldprt\";\n eExportType[\"sldasm\"] = \"sldasm\";\n eExportType[\"slddrw\"] = \"slddrw\";\n eExportType[\"sldlfp\"] = \"sldlfp\";\n eExportType[\"x_t\"] = \"x_t\";\n eExportType[\"x_b\"] = \"x_b\";\n eExportType[\"igs\"] = \"igs\";\n eExportType[\"stl\"] = \"stl\";\n eExportType[\"wrl\"] = \"wrl\";\n eExportType[\"u3d\"] = \"u3d\";\n eExportType[\"psd\"] = \"psd\";\n eExportType[\"ai\"] = \"ai\";\n eExportType[\"cgr\"] = \"cgr\";\n eExportType[\"asm\"] = \"asm\";\n eExportType[\"hcg\"] = \"hcg\";\n eExportType[\"hsf\"] = \"hsf\";\n eExportType[\"sat\"] = \"sat\";\n eExportType[\"stp\"] = \"stp\";\n eExportType[\"step\"] = \"step\";\n eExportType[\"vda\"] = \"vda\";\n eExportType[\"neu\"] = \"neu\";\n eExportType[\"iv\"] = \"iv\";\n eExportType[\"slp\"] = \"slp\";\n eExportType[\"eps\"] = \"eps\";\n eExportType[\"catproduct\"] = \"catproduct\";\n eExportType[\"jt\"] = \"jt\";\n eExportType[\"zgl\"] = \"zgl\";\n eExportType[\"xgl\"] = \"xgl\";\n eExportType[\"csv\"] = \"csv\";\n eExportType[\"xml\"] = \"xml\";\n })(exports.eExportType || (exports.eExportType = {}));\n (function (eFileSource) {\n eFileSource[\"generated\"] = \"generated\";\n eFileSource[\"uploaded\"] = \"uploaded\";\n eFileSource[\"media\"] = \"media\";\n eFileSource[\"fileUploadField\"] = \"fileUploadField\";\n })(exports.eFileSource || (exports.eFileSource = {}));\n (function (eFileStatus) {\n eFileStatus[\"none\"] = \"none\";\n eFileStatus[\"generating\"] = \"generating\";\n eFileStatus[\"complete\"] = \"complete\";\n eFileStatus[\"failed\"] = \"failed\";\n })(exports.eFileStatus || (exports.eFileStatus = {}));\n (function (eLogType) {\n eLogType[\"info\"] = \"info\";\n eLogType[\"error\"] = \"error\";\n eLogType[\"warning\"] = \"warning\";\n })(exports.eLogType || (exports.eLogType = {}));\n (function (eLogSource) {\n eLogSource[\"productRule\"] = \"productRule\";\n eLogSource[\"workflowRule\"] = \"workflowRule\";\n eLogSource[\"quoteHeaderRule\"] = \"quoteHeaderRule\";\n eLogSource[\"quoteAction\"] = \"quoteAction\";\n eLogSource[\"output\"] = \"output\";\n eLogSource[\"outputRule\"] = \"outputRule\";\n eLogSource[\"outputDriver\"] = \"outputDriver\";\n eLogSource[\"safeFunction\"] = \"safeFunction\";\n eLogSource[\"restHelper\"] = \"restHelper\";\n eLogSource[\"workerRole\"] = \"workerRole\";\n eLogSource[\"sceneImporterWatcher\"] = \"sceneImporterWatcher\";\n eLogSource[\"sceneExporterWatcher\"] = \"sceneExporterWatcher\";\n eLogSource[\"notificationQueueWatcher\"] = \"notificationQueueWatcher\";\n eLogSource[\"configuratorPricingRule\"] = \"configuratorPricingRule\";\n eLogSource[\"configuratorSubmitRule\"] = \"configuratorSubmitRule\";\n eLogSource[\"configuratorNamingRule\"] = \"configuratorNamingRule\";\n eLogSource[\"configuratorLoadedRule\"] = \"configuratorLoadedRule\";\n eLogSource[\"configuratorValueRule\"] = \"configuratorValueRule\";\n eLogSource[\"configuratorValidationRule\"] = \"configuratorValidationRule\";\n eLogSource[\"configuratorMethodOfManufactureRule\"] = \"configuratorMethodOfManufactureRule\";\n eLogSource[\"table\"] = \"table\";\n eLogSource[\"kineticDocumentRules\"] = \"kineticDocumentRules\";\n })(exports.eLogSource || (exports.eLogSource = {}));\n (function (eFieldType) {\n eFieldType[\"text\"] = \"text\";\n eFieldType[\"number\"] = \"number\";\n eFieldType[\"boolean\"] = \"boolean\";\n eFieldType[\"color\"] = \"color\";\n eFieldType[\"date\"] = \"date\";\n eFieldType[\"upload\"] = \"upload\";\n eFieldType[\"textArray\"] = \"textArray\";\n eFieldType[\"numberArray\"] = \"numberArray\";\n eFieldType[\"colorArray\"] = \"colorArray\";\n })(exports.eFieldType || (exports.eFieldType = {}));\n (function (eFieldControl) {\n eFieldControl[\"none\"] = \"none\";\n eFieldControl[\"textbox\"] = \"textbox\";\n eFieldControl[\"multilineTextbox\"] = \"multilineTextbox\";\n eFieldControl[\"label\"] = \"label\";\n eFieldControl[\"numberbox\"] = \"numberbox\";\n eFieldControl[\"checkbox\"] = \"checkbox\";\n eFieldControl[\"toggle\"] = \"toggle\";\n eFieldControl[\"select\"] = \"select\";\n eFieldControl[\"colorSelect\"] = \"colorSelect\";\n eFieldControl[\"button\"] = \"button\";\n eFieldControl[\"upload\"] = \"upload\";\n eFieldControl[\"slider\"] = \"slider\";\n eFieldControl[\"imageSelect\"] = \"imageSelect\";\n eFieldControl[\"colorPicker\"] = \"colorPicker\";\n eFieldControl[\"swatchSelect\"] = \"swatchSelect\";\n eFieldControl[\"autoComplete\"] = \"autoComplete\";\n eFieldControl[\"media\"] = \"media\";\n eFieldControl[\"html\"] = \"html\";\n eFieldControl[\"datePicker\"] = \"datePicker\";\n eFieldControl[\"multiSelect\"] = \"multiSelect\";\n eFieldControl[\"colorMultiSelect\"] = \"colorMultiSelect\";\n eFieldControl[\"imageMultiSelect\"] = \"imageMultiSelect\";\n eFieldControl[\"radio\"] = \"radio\";\n eFieldControl[\"mediaPicker\"] = \"mediaPicker\";\n })(exports.eFieldControl || (exports.eFieldControl = {}));\n (function (eSort) {\n eSort[\"none\"] = \"none\";\n eSort[\"ascending\"] = \"ascending\";\n eSort[\"descending\"] = \"descending\";\n })(exports.eSort || (exports.eSort = {}));\n (function (eProductSortBy) {\n eProductSortBy[\"relevance\"] = \"relevance\";\n eProductSortBy[\"priceLowToHigh\"] = \"priceLowToHigh\";\n eProductSortBy[\"priceHighToLow\"] = \"priceHighToLow\";\n eProductSortBy[\"popularity\"] = \"popularity\";\n eProductSortBy[\"nameAtoZ\"] = \"nameAtoZ\";\n })(exports.eProductSortBy || (exports.eProductSortBy = {}));\n (function (eFormatType) {\n eFormatType[\"none\"] = \"none\";\n eFormatType[\"number\"] = \"number\";\n eFormatType[\"currency\"] = \"currency\";\n eFormatType[\"percentage\"] = \"percentage\";\n })(exports.eFormatType || (exports.eFormatType = {}));\n (function (eRuleType) {\n eRuleType[\"value\"] = \"value\";\n eRuleType[\"visibility\"] = \"visibility\";\n eRuleType[\"validation\"] = \"validation\";\n eRuleType[\"pricing\"] = \"pricing\";\n eRuleType[\"message\"] = \"message\";\n eRuleType[\"loaded\"] = \"loaded\";\n eRuleType[\"submit\"] = \"submit\";\n eRuleType[\"pageChanged\"] = \"pageChanged\";\n eRuleType[\"tabChanged\"] = \"tabChanged\";\n eRuleType[\"expanderChanged\"] = \"expanderChanged\";\n eRuleType[\"output\"] = \"output\";\n eRuleType[\"action\"] = \"action\";\n eRuleType[\"function\"] = \"function\";\n eRuleType[\"global\"] = \"global\";\n eRuleType[\"globalEvent\"] = \"globalEvent\";\n eRuleType[\"safeFunction\"] = \"safeFunction\";\n eRuleType[\"naming\"] = \"naming\";\n eRuleType[\"field\"] = \"field\";\n eRuleType[\"button\"] = \"button\";\n eRuleType[\"svgViewer\"] = \"svgViewer\";\n eRuleType[\"dragStart\"] = \"dragStart\";\n eRuleType[\"dragMove\"] = \"dragMove\";\n eRuleType[\"dragEnd\"] = \"dragEnd\";\n eRuleType[\"optionFilter\"] = \"optionFilter\";\n eRuleType[\"nested\"] = \"nested\";\n eRuleType[\"resize\"] = \"resize\";\n eRuleType[\"nestedSetSelected\"] = \"nestedSetSelected\";\n eRuleType[\"keyboard\"] = \"keyboard\";\n eRuleType[\"manufacture\"] = \"manufacture\";\n eRuleType[\"kineticDocumentRules\"] = \"kineticDocumentRules\";\n eRuleType[\"layout\"] = \"layout\";\n eRuleType[\"configuratorAdded\"] = \"configuratorAdded\";\n eRuleType[\"configuratorRemoved\"] = \"configuratorRemoved\";\n eRuleType[\"configuratorCopied\"] = \"configuratorCopied\";\n eRuleType[\"product\"] = \"product\";\n eRuleType[\"workflow\"] = \"workflow\";\n eRuleType[\"beforeBuild\"] = \"beforeBuild\";\n eRuleType[\"globalDefinition\"] = \"globalDefinition\";\n eRuleType[\"quote\"] = \"quote\";\n eRuleType[\"scene\"] = \"scene\";\n eRuleType[\"sceneLoaded\"] = \"sceneLoaded\";\n eRuleType[\"xrEnter\"] = \"xrEnter\";\n eRuleType[\"xrExit\"] = \"xrExit\";\n })(exports.eRuleType || (exports.eRuleType = {}));\n (function (eClusterEnv) {\n eClusterEnv[\"prod\"] = \"prod\";\n eClusterEnv[\"staging\"] = \"staging\";\n eClusterEnv[\"debug\"] = \"debug\";\n eClusterEnv[\"next\"] = \"next\";\n eClusterEnv[\"dev\"] = \"dev\";\n })(exports.eClusterEnv || (exports.eClusterEnv = {}));\n (function (eConfiguratorLayout) {\n eConfiguratorLayout[\"standard\"] = \"standard\";\n eConfiguratorLayout[\"immersive\"] = \"immersive\";\n })(exports.eConfiguratorLayout || (exports.eConfiguratorLayout = {}));\n (function (eConfiguratorTabStyle) {\n eConfiguratorTabStyle[\"cards\"] = \"cards\";\n eConfiguratorTabStyle[\"tree\"] = \"tree\";\n })(exports.eConfiguratorTabStyle || (exports.eConfiguratorTabStyle = {}));\n (function (eDeploymentStatus) {\n eDeploymentStatus[\"inProgress\"] = \"inProgress\";\n eDeploymentStatus[\"success\"] = \"success\";\n eDeploymentStatus[\"failed\"] = \"failed\";\n })(exports.eDeploymentStatus || (exports.eDeploymentStatus = {}));\n (function (eDifference) {\n eDifference[\"none\"] = \"none\";\n eDifference[\"changed\"] = \"changed\";\n eDifference[\"added\"] = \"added\";\n eDifference[\"removed\"] = \"removed\";\n })(exports.eDifference || (exports.eDifference = {}));\n (function (eViewerMode) {\n eViewerMode[\"none\"] = \"none\";\n eViewerMode[\"media\"] = \"media\";\n eViewerMode[\"scene\"] = \"scene\";\n })(exports.eViewerMode || (exports.eViewerMode = {}));\n (function (ePosition) {\n ePosition[\"left\"] = \"left\";\n ePosition[\"right\"] = \"right\";\n })(exports.ePosition || (exports.ePosition = {}));\n (function (eTabPosition) {\n eTabPosition[\"left\"] = \"left\";\n eTabPosition[\"right\"] = \"right\";\n eTabPosition[\"top\"] = \"top\";\n eTabPosition[\"bottom\"] = \"bottom\";\n })(exports.eTabPosition || (exports.eTabPosition = {}));\n (function (eColumnType) {\n eColumnType[\"text\"] = \"text\";\n eColumnType[\"number\"] = \"number\";\n eColumnType[\"boolean\"] = \"boolean\";\n eColumnType[\"color\"] = \"color\";\n eColumnType[\"date\"] = \"date\";\n eColumnType[\"media\"] = \"media\";\n eColumnType[\"translated\"] = \"translated\";\n })(exports.eColumnType || (exports.eColumnType = {}));\n (function (eSelectSource) {\n eSelectSource[\"simple\"] = \"simple\";\n eSelectSource[\"optionFilter\"] = \"optionFilter\";\n })(exports.eSelectSource || (exports.eSelectSource = {}));\n (function (eAutoCompleteSource) {\n eAutoCompleteSource[\"table\"] = \"table\";\n eAutoCompleteSource[\"database\"] = \"database\";\n })(exports.eAutoCompleteSource || (exports.eAutoCompleteSource = {}));\n (function (eOptionFilterSource) {\n eOptionFilterSource[\"table\"] = \"table\";\n eOptionFilterSource[\"database\"] = \"database\";\n eOptionFilterSource[\"query\"] = \"query\";\n eOptionFilterSource[\"safeFunction\"] = \"safeFunction\";\n eOptionFilterSource[\"optionFilter\"] = \"optionFilter\";\n })(exports.eOptionFilterSource || (exports.eOptionFilterSource = {}));\n (function (eDynamicSource) {\n eDynamicSource[\"media\"] = \"media\";\n eDynamicSource[\"template\"] = \"template\";\n eDynamicSource[\"output\"] = \"output\";\n eDynamicSource[\"nested\"] = \"nested\";\n eDynamicSource[\"nestedExport\"] = \"nestedExport\";\n eDynamicSource[\"exprt\"] = \"exprt\";\n eDynamicSource[\"url\"] = \"url\";\n eDynamicSource[\"tag\"] = \"tag\";\n eDynamicSource[\"quoteOutput\"] = \"quoteOutput\";\n eDynamicSource[\"fileUploadField\"] = \"fileUploadField\";\n })(exports.eDynamicSource || (exports.eDynamicSource = {}));\n (function (eQueryMode) {\n eQueryMode[\"none\"] = \"none\";\n eQueryMode[\"table\"] = \"table\";\n eQueryMode[\"database\"] = \"database\";\n eQueryMode[\"array\"] = \"array\";\n eQueryMode[\"optionFilter\"] = \"optionFilter\";\n eQueryMode[\"parentOptionFilter\"] = \"parentOptionFilter\";\n })(exports.eQueryMode || (exports.eQueryMode = {}));\n (function (eConfiguratorImageSource) {\n eConfiguratorImageSource[\"none\"] = \"none\";\n eConfiguratorImageSource[\"media\"] = \"media\";\n eConfiguratorImageSource[\"scene\"] = \"scene\";\n })(exports.eConfiguratorImageSource || (exports.eConfiguratorImageSource = {}));\n (function (ePricingFillFromSource) {\n ePricingFillFromSource[\"none\"] = \"none\";\n ePricingFillFromSource[\"table\"] = \"table\";\n ePricingFillFromSource[\"database\"] = \"database\";\n })(exports.ePricingFillFromSource || (exports.ePricingFillFromSource = {}));\n (function (eSingleOptionBehavior) {\n eSingleOptionBehavior[\"nothing\"] = \"nothing\";\n eSingleOptionBehavior[\"disable\"] = \"disable\";\n eSingleOptionBehavior[\"hide\"] = \"hide\";\n })(exports.eSingleOptionBehavior || (exports.eSingleOptionBehavior = {}));\n (function (eFilterSource) {\n eFilterSource[\"none\"] = \"none\";\n eFilterSource[\"enum\"] = \"enum\";\n eFilterSource[\"properties\"] = \"properties\";\n eFilterSource[\"users\"] = \"users\";\n eFilterSource[\"states\"] = \"states\";\n eFilterSource[\"configurators\"] = \"configurators\";\n eFilterSource[\"fields\"] = \"fields\";\n eFilterSource[\"customers\"] = \"customers\";\n eFilterSource[\"roles\"] = \"roles\";\n eFilterSource[\"productSorts\"] = \"productSorts\";\n eFilterSource[\"manufacturers\"] = \"manufacturers\";\n eFilterSource[\"attributes\"] = \"attributes\";\n eFilterSource[\"suggestContacts\"] = \"suggestContacts\";\n eFilterSource[\"suggestCustomers\"] = \"suggestCustomers\";\n eFilterSource[\"suggestQuotes\"] = \"suggestQuotes\";\n eFilterSource[\"suggestProducts\"] = \"suggestProducts\";\n eFilterSource[\"headerFields\"] = \"headerFields\";\n })(exports.eFilterSource || (exports.eFilterSource = {}));\n (function (eFilterType) {\n eFilterType[\"property\"] = \"property\";\n eFilterType[\"fieldValue\"] = \"fieldValue\";\n eFilterType[\"sort\"] = \"sort\";\n eFilterType[\"attribute\"] = \"attribute\";\n eFilterType[\"headerValue\"] = \"headerValue\";\n })(exports.eFilterType || (exports.eFilterType = {}));\n (function (eFilterControl) {\n eFilterControl[\"none\"] = \"none\";\n eFilterControl[\"text\"] = \"text\";\n eFilterControl[\"select\"] = \"select\";\n eFilterControl[\"multiSelect\"] = \"multiSelect\";\n eFilterControl[\"dateRange\"] = \"dateRange\";\n eFilterControl[\"numberRange\"] = \"numberRange\";\n eFilterControl[\"suggest\"] = \"suggest\";\n eFilterControl[\"checkbox\"] = \"checkbox\";\n })(exports.eFilterControl || (exports.eFilterControl = {}));\n (function (eLogSetting) {\n eLogSetting[\"all\"] = \"all\";\n eLogSetting[\"minimal\"] = \"minimal\";\n })(exports.eLogSetting || (exports.eLogSetting = {}));\n (function (eHotspotSource) {\n eHotspotSource[\"none\"] = \"none\";\n eHotspotSource[\"text\"] = \"text\";\n eHotspotSource[\"media\"] = \"media\";\n eHotspotSource[\"element\"] = \"element\";\n })(exports.eHotspotSource || (exports.eHotspotSource = {}));\n (function (eHotspotAttach) {\n eHotspotAttach[\"topLeft\"] = \"topLeft\";\n eHotspotAttach[\"top\"] = \"top\";\n eHotspotAttach[\"topRight\"] = \"topRight\";\n eHotspotAttach[\"left\"] = \"left\";\n eHotspotAttach[\"center\"] = \"center\";\n eHotspotAttach[\"right\"] = \"right\";\n eHotspotAttach[\"bottomLeft\"] = \"bottomLeft\";\n eHotspotAttach[\"bottom\"] = \"bottom\";\n eHotspotAttach[\"bottomRight\"] = \"bottomRight\";\n })(exports.eHotspotAttach || (exports.eHotspotAttach = {}));\n (function (eLayerLineWeight) {\n eLayerLineWeight[\"lnWtByLayer\"] = \"lnWtByLayer\";\n eLayerLineWeight[\"lnWtByBlock\"] = \"lnWtByBlock\";\n eLayerLineWeight[\"lnWtByLwDefault\"] = \"lnWtByLwDefault\";\n eLayerLineWeight[\"lnWt000\"] = \"lnWt000\";\n eLayerLineWeight[\"lnWt005\"] = \"lnWt005\";\n eLayerLineWeight[\"lnWt009\"] = \"lnWt009\";\n eLayerLineWeight[\"lnWt013\"] = \"lnWt013\";\n eLayerLineWeight[\"lnWt015\"] = \"lnWt015\";\n eLayerLineWeight[\"lnWt018\"] = \"lnWt018\";\n eLayerLineWeight[\"lnWt020\"] = \"lnWt020\";\n eLayerLineWeight[\"lnWt025\"] = \"lnWt025\";\n eLayerLineWeight[\"lnWt030\"] = \"lnWt030\";\n eLayerLineWeight[\"lnWt035\"] = \"lnWt035\";\n eLayerLineWeight[\"lnWt040\"] = \"lnWt040\";\n eLayerLineWeight[\"lnWt050\"] = \"lnWt050\";\n eLayerLineWeight[\"lnWt053\"] = \"lnWt053\";\n eLayerLineWeight[\"lnWt060\"] = \"lnWt060\";\n eLayerLineWeight[\"lnWt070\"] = \"lnWt070\";\n eLayerLineWeight[\"lnWt080\"] = \"lnWt080\";\n eLayerLineWeight[\"lnWt090\"] = \"lnWt090\";\n eLayerLineWeight[\"lnWt100\"] = \"lnWt100\";\n eLayerLineWeight[\"lnWt106\"] = \"lnWt106\";\n eLayerLineWeight[\"lnWt120\"] = \"lnWt120\";\n eLayerLineWeight[\"lnWt140\"] = \"lnWt140\";\n eLayerLineWeight[\"lnWt158\"] = \"lnWt158\";\n eLayerLineWeight[\"lnWt200\"] = \"lnWt200\";\n eLayerLineWeight[\"lnWt211\"] = \"lnWt211\";\n })(exports.eLayerLineWeight || (exports.eLayerLineWeight = {}));\n (function (eHotspotPosition) {\n eHotspotPosition[\"manual\"] = \"manual\";\n eHotspotPosition[\"target\"] = \"target\";\n })(exports.eHotspotPosition || (exports.eHotspotPosition = {}));\n (function (eAnimationEasing) {\n eAnimationEasing[\"linear\"] = \"linear\";\n eAnimationEasing[\"easeInQuad\"] = \"easeInQuad\";\n eAnimationEasing[\"easeOutQuad\"] = \"easeOutQuad\";\n eAnimationEasing[\"easeInOutQuad\"] = \"easeInOutQuad\";\n eAnimationEasing[\"easeInCubic\"] = \"easeInCubic\";\n eAnimationEasing[\"easeOutCubic\"] = \"easeOutCubic\";\n eAnimationEasing[\"easeInOutCubic\"] = \"easeInOutCubic\";\n eAnimationEasing[\"easeInQuart\"] = \"easeInQuart\";\n eAnimationEasing[\"easeOutQuart\"] = \"easeOutQuart\";\n eAnimationEasing[\"easeInOutQuart\"] = \"easeInOutQuart\";\n eAnimationEasing[\"easeInQuint\"] = \"easeInQuint\";\n eAnimationEasing[\"easeOutQuint\"] = \"easeOutQuint\";\n eAnimationEasing[\"easeInOutQuint\"] = \"easeInOutQuint\";\n eAnimationEasing[\"easeInSine\"] = \"easeInSine\";\n eAnimationEasing[\"easeOutSine\"] = \"easeOutSine\";\n eAnimationEasing[\"easeInOutSine\"] = \"easeInOutSine\";\n eAnimationEasing[\"easeInExpo\"] = \"easeInExpo\";\n eAnimationEasing[\"easeOutExpo\"] = \"easeOutExpo\";\n eAnimationEasing[\"easeInOutExpo\"] = \"easeInOutExpo\";\n eAnimationEasing[\"easeInCirc\"] = \"easeInCirc\";\n eAnimationEasing[\"easeOutCirc\"] = \"easeOutCirc\";\n eAnimationEasing[\"easeInOutCirc\"] = \"easeInOutCirc\";\n eAnimationEasing[\"easeInElastic\"] = \"easeInElastic\";\n eAnimationEasing[\"easeOutElastic\"] = \"easeOutElastic\";\n eAnimationEasing[\"easeInOutElastic\"] = \"easeInOutElastic\";\n eAnimationEasing[\"easeInBack\"] = \"easeInBack\";\n eAnimationEasing[\"easeOutBack\"] = \"easeOutBack\";\n eAnimationEasing[\"easeInOutBack\"] = \"easeInOutBack\";\n eAnimationEasing[\"easeInBounce\"] = \"easeInBounce\";\n eAnimationEasing[\"easeOutBounce\"] = \"easeOutBounce\";\n eAnimationEasing[\"easeInOutBounce\"] = \"easeInOutBounce\";\n })(exports.eAnimationEasing || (exports.eAnimationEasing = {}));\n (function (eQueueMessageType) {\n eQueueMessageType[\"builder\"] = \"builder\";\n eQueueMessageType[\"cleanDb\"] = \"cleanDb\";\n eQueueMessageType[\"completeBuildState\"] = \"completeBuildState\";\n eQueueMessageType[\"notification\"] = \"notification\";\n eQueueMessageType[\"render\"] = \"render\";\n eQueueMessageType[\"pullSfdcProducts\"] = \"pullSfdcProducts\";\n eQueueMessageType[\"upsertProductsToSfdc\"] = \"upsertProductsToSfdc\";\n eQueueMessageType[\"submitFromSfdcCpq\"] = \"submitFromSfdcCpq\";\n eQueueMessageType[\"deployment\"] = \"deployment\";\n eQueueMessageType[\"completeQuoteProductBuild\"] = \"completeQuoteProductBuild\";\n eQueueMessageType[\"sceneImport\"] = \"sceneImport\";\n eQueueMessageType[\"sceneExport\"] = \"sceneExport\";\n eQueueMessageType[\"sceneConvert\"] = \"sceneConvert\";\n })(exports.eQueueMessageType || (exports.eQueueMessageType = {}));\n (function (eStateType) {\n eStateType[\"state\"] = \"state\";\n eStateType[\"approval\"] = \"approval\";\n eStateType[\"build\"] = \"build\";\n })(exports.eStateType || (exports.eStateType = {}));\n (function (eDescriptorType) {\n eDescriptorType[\"user\"] = \"user\";\n eDescriptorType[\"role\"] = \"role\";\n eDescriptorType[\"email\"] = \"email\";\n })(exports.eDescriptorType || (exports.eDescriptorType = {}));\n (function (eWorkflowBuildType) {\n eWorkflowBuildType[\"quoteOutput\"] = \"quoteOutput\";\n eWorkflowBuildType[\"configurator\"] = \"configurator\";\n })(exports.eWorkflowBuildType || (exports.eWorkflowBuildType = {}));\n (function (eWorkflowPermissionType) {\n eWorkflowPermissionType[\"view\"] = \"view\";\n eWorkflowPermissionType[\"viewOutput\"] = \"viewOutput\";\n })(exports.eWorkflowPermissionType || (exports.eWorkflowPermissionType = {}));\n (function (eAdminNotificationTarget) {\n eAdminNotificationTarget[\"companyAdmins\"] = \"companyAdmins\";\n eAdminNotificationTarget[\"allUsersExceptSelfRegistered\"] = \"allUsersExceptSelfRegistered\";\n })(exports.eAdminNotificationTarget || (exports.eAdminNotificationTarget = {}));\n (function (eConfiguratorEntityType) {\n eConfiguratorEntityType[\"product\"] = \"product\";\n eConfiguratorEntityType[\"quoteHeader\"] = \"quoteHeader\";\n })(exports.eConfiguratorEntityType || (exports.eConfiguratorEntityType = {}));\n (function (eHotspotShape) {\n eHotspotShape[\"circle\"] = \"circle\";\n eHotspotShape[\"circleWithText\"] = \"circleWithText\";\n eHotspotShape[\"image\"] = \"image\";\n eHotspotShape[\"mesh\"] = \"mesh\";\n eHotspotShape[\"text\"] = \"text\";\n })(exports.eHotspotShape || (exports.eHotspotShape = {}));\n (function (eValidationType) {\n eValidationType[\"error\"] = \"error\";\n eValidationType[\"warning\"] = \"warning\";\n eValidationType[\"info\"] = \"info\";\n })(exports.eValidationType || (exports.eValidationType = {}));\n (function (eIconStyle) {\n eIconStyle[\"none\"] = \"none\";\n eIconStyle[\"icon\"] = \"icon\";\n eIconStyle[\"media\"] = \"media\";\n })(exports.eIconStyle || (exports.eIconStyle = {}));\n (function (eOracleCpqOperation) {\n eOracleCpqOperation[\"createTransaction\"] = \"createTransaction\";\n eOracleCpqOperation[\"importFileAttachment\"] = \"importFileAttachment\";\n })(exports.eOracleCpqOperation || (exports.eOracleCpqOperation = {}));\n (function (eOptionLayout) {\n eOptionLayout[\"wrap\"] = \"wrap\";\n eOptionLayout[\"vertical\"] = \"vertical\";\n eOptionLayout[\"scroll\"] = \"scroll\";\n })(exports.eOptionLayout || (exports.eOptionLayout = {}));\n (function (eButtonStyle) {\n eButtonStyle[\"normal\"] = \"normal\";\n eButtonStyle[\"link\"] = \"link\";\n eButtonStyle[\"outline\"] = \"outline\";\n })(exports.eButtonStyle || (exports.eButtonStyle = {}));\n (function (eTableExternalSource) {\n eTableExternalSource[\"none\"] = \"none\";\n eTableExternalSource[\"database\"] = \"database\";\n })(exports.eTableExternalSource || (exports.eTableExternalSource = {}));\n (function (eSkin) {\n eSkin[\"classic\"] = \"classic\";\n eSkin[\"material\"] = \"material\";\n })(exports.eSkin || (exports.eSkin = {}));\n (function (eGridColumnWidth) {\n eGridColumnWidth[\"auto\"] = \"auto\";\n eGridColumnWidth[\"x1\"] = \"x1\";\n eGridColumnWidth[\"x2\"] = \"x2\";\n eGridColumnWidth[\"x3\"] = \"x3\";\n eGridColumnWidth[\"x4\"] = \"x4\";\n eGridColumnWidth[\"x5\"] = \"x5\";\n eGridColumnWidth[\"x6\"] = \"x6\";\n eGridColumnWidth[\"x7\"] = \"x7\";\n eGridColumnWidth[\"x8\"] = \"x8\";\n eGridColumnWidth[\"x9\"] = \"x9\";\n eGridColumnWidth[\"x10\"] = \"x10\";\n eGridColumnWidth[\"x11\"] = \"x11\";\n eGridColumnWidth[\"x12\"] = \"x12\";\n })(exports.eGridColumnWidth || (exports.eGridColumnWidth = {}));\n (function (eRelativeSize) {\n eRelativeSize[\"auto\"] = \"auto\";\n eRelativeSize[\"x1\"] = \"x1\";\n eRelativeSize[\"x2\"] = \"x2\";\n eRelativeSize[\"x3\"] = \"x3\";\n eRelativeSize[\"x4\"] = \"x4\";\n eRelativeSize[\"x5\"] = \"x5\";\n eRelativeSize[\"x6\"] = \"x6\";\n eRelativeSize[\"x7\"] = \"x7\";\n eRelativeSize[\"x8\"] = \"x8\";\n eRelativeSize[\"x9\"] = \"x9\";\n eRelativeSize[\"x10\"] = \"x10\";\n eRelativeSize[\"x11\"] = \"x11\";\n eRelativeSize[\"x12\"] = \"x12\";\n eRelativeSize[\"custom\"] = \"custom\";\n })(exports.eRelativeSize || (exports.eRelativeSize = {}));\n (function (eVerticalAlignment) {\n eVerticalAlignment[\"stretch\"] = \"stretch\";\n eVerticalAlignment[\"top\"] = \"top\";\n eVerticalAlignment[\"center\"] = \"center\";\n eVerticalAlignment[\"bottom\"] = \"bottom\";\n })(exports.eVerticalAlignment || (exports.eVerticalAlignment = {}));\n (function (eHorizontalAlignment) {\n eHorizontalAlignment[\"left\"] = \"left\";\n eHorizontalAlignment[\"center\"] = \"center\";\n eHorizontalAlignment[\"right\"] = \"right\";\n })(exports.eHorizontalAlignment || (exports.eHorizontalAlignment = {}));\n (function (ePadding) {\n ePadding[\"none\"] = \"none\";\n ePadding[\"small\"] = \"small\";\n ePadding[\"medium\"] = \"medium\";\n ePadding[\"large\"] = \"large\";\n })(exports.ePadding || (exports.ePadding = {}));\n (function (eMaskType) {\n eMaskType[\"none\"] = \"none\";\n eMaskType[\"phone\"] = \"phone\";\n eMaskType[\"zipCode\"] = \"zipCode\";\n })(exports.eMaskType || (exports.eMaskType = {}));\n (function (eValidationTiming) {\n eValidationTiming[\"always\"] = \"always\";\n eValidationTiming[\"onTouched\"] = \"onTouched\";\n })(exports.eValidationTiming || (exports.eValidationTiming = {}));\n (function (eTextStyle) {\n eTextStyle[\"normal\"] = \"normal\";\n eTextStyle[\"h1\"] = \"h1\";\n eTextStyle[\"h2\"] = \"h2\";\n eTextStyle[\"h3\"] = \"h3\";\n eTextStyle[\"h4\"] = \"h4\";\n eTextStyle[\"h5\"] = \"h5\";\n eTextStyle[\"subtitle\"] = \"subtitle\";\n eTextStyle[\"emphasis\"] = \"emphasis\";\n eTextStyle[\"strong\"] = \"strong\";\n })(exports.eTextStyle || (exports.eTextStyle = {}));\n (function (eTextColor) {\n eTextColor[\"normal\"] = \"normal\";\n eTextColor[\"header\"] = \"header\";\n eTextColor[\"primary\"] = \"primary\";\n eTextColor[\"accent\"] = \"accent\";\n eTextColor[\"error\"] = \"error\";\n eTextColor[\"success\"] = \"success\";\n })(exports.eTextColor || (exports.eTextColor = {}));\n (function (eTextWeight) {\n eTextWeight[\"f100\"] = \"f100\";\n eTextWeight[\"f200\"] = \"f200\";\n eTextWeight[\"f300\"] = \"f300\";\n eTextWeight[\"f400\"] = \"f400\";\n eTextWeight[\"f500\"] = \"f500\";\n eTextWeight[\"f600\"] = \"f600\";\n eTextWeight[\"f700\"] = \"f700\";\n eTextWeight[\"f800\"] = \"f800\";\n eTextWeight[\"f900\"] = \"f900\";\n })(exports.eTextWeight || (exports.eTextWeight = {}));\n (function (eDragMode) {\n eDragMode[\"plane\"] = \"plane\";\n eDragMode[\"free\"] = \"free\";\n eDragMode[\"surface\"] = \"surface\";\n })(exports.eDragMode || (exports.eDragMode = {}));\n (function (eConnectionMode) {\n eConnectionMode[\"none\"] = \"none\";\n eConnectionMode[\"world\"] = \"world\";\n eConnectionMode[\"screen\"] = \"screen\";\n })(exports.eConnectionMode || (exports.eConnectionMode = {}));\n (function (eToolbarPosition) {\n eToolbarPosition[\"hidden\"] = \"hidden\";\n eToolbarPosition[\"topLeft\"] = \"topLeft\";\n eToolbarPosition[\"topRight\"] = \"topRight\";\n eToolbarPosition[\"bottomLeft\"] = \"bottomLeft\";\n eToolbarPosition[\"bottomRight\"] = \"bottomRight\";\n })(exports.eToolbarPosition || (exports.eToolbarPosition = {}));\n (function (eContainerItemLayout) {\n eContainerItemLayout[\"horizontal\"] = \"horizontal\";\n eContainerItemLayout[\"vertical\"] = \"vertical\";\n eContainerItemLayout[\"absolute\"] = \"absolute\";\n })(exports.eContainerItemLayout || (exports.eContainerItemLayout = {}));\n (function (eContainerChildAlignment) {\n eContainerChildAlignment[\"inherit\"] = \"inherit\";\n eContainerChildAlignment[\"stretch\"] = \"stretch\";\n eContainerChildAlignment[\"start\"] = \"start\";\n eContainerChildAlignment[\"center\"] = \"center\";\n eContainerChildAlignment[\"end\"] = \"end\";\n })(exports.eContainerChildAlignment || (exports.eContainerChildAlignment = {}));\n (function (eContainerItemAlignment) {\n eContainerItemAlignment[\"stretch\"] = \"stretch\";\n eContainerItemAlignment[\"start\"] = \"start\";\n eContainerItemAlignment[\"center\"] = \"center\";\n eContainerItemAlignment[\"end\"] = \"end\";\n })(exports.eContainerItemAlignment || (exports.eContainerItemAlignment = {}));\n (function (eContainerItemJustify) {\n eContainerItemJustify[\"start\"] = \"start\";\n eContainerItemJustify[\"center\"] = \"center\";\n eContainerItemJustify[\"end\"] = \"end\";\n })(exports.eContainerItemJustify || (exports.eContainerItemJustify = {}));\n (function (eColorShade) {\n eColorShade[\"default\"] = \"default\";\n eColorShade[\"lighter1\"] = \"lighter1\";\n eColorShade[\"lighter2\"] = \"lighter2\";\n eColorShade[\"lighter3\"] = \"lighter3\";\n eColorShade[\"lighter4\"] = \"lighter4\";\n eColorShade[\"darker1\"] = \"darker1\";\n eColorShade[\"darker2\"] = \"darker2\";\n eColorShade[\"darker3\"] = \"darker3\";\n eColorShade[\"darker4\"] = \"darker4\";\n })(exports.eColorShade || (exports.eColorShade = {}));\n (function (eBackgroundColor) {\n eBackgroundColor[\"background\"] = \"background\";\n eBackgroundColor[\"primary\"] = \"primary\";\n eBackgroundColor[\"accent\"] = \"accent\";\n eBackgroundColor[\"warning\"] = \"warning\";\n eBackgroundColor[\"success\"] = \"success\";\n eBackgroundColor[\"input\"] = \"input\";\n eBackgroundColor[\"header\"] = \"header\";\n })(exports.eBackgroundColor || (exports.eBackgroundColor = {}));\n (function (eElevation) {\n eElevation[\"none\"] = \"none\";\n eElevation[\"z1\"] = \"z1\";\n eElevation[\"z2\"] = \"z2\";\n eElevation[\"z3\"] = \"z3\";\n eElevation[\"z4\"] = \"z4\";\n eElevation[\"z5\"] = \"z5\";\n eElevation[\"z6\"] = \"z6\";\n eElevation[\"z7\"] = \"z7\";\n eElevation[\"z8\"] = \"z8\";\n })(exports.eElevation || (exports.eElevation = {}));\n (function (eSliderValueVisibility) {\n eSliderValueVisibility[\"visible\"] = \"visible\";\n eSliderValueVisibility[\"sliding\"] = \"sliding\";\n eSliderValueVisibility[\"hidden\"] = \"hidden\";\n })(exports.eSliderValueVisibility || (exports.eSliderValueVisibility = {}));\n (function (eOrientation) {\n eOrientation[\"horizontal\"] = \"horizontal\";\n eOrientation[\"vertical\"] = \"vertical\";\n })(exports.eOrientation || (exports.eOrientation = {}));\n (function (eTabSelectionStyle) {\n eTabSelectionStyle[\"line\"] = \"line\";\n eTabSelectionStyle[\"background\"] = \"background\";\n })(exports.eTabSelectionStyle || (exports.eTabSelectionStyle = {}));\n (function (eSelectionLineColor) {\n eSelectionLineColor[\"accent\"] = \"accent\";\n eSelectionLineColor[\"contrast\"] = \"contrast\";\n eSelectionLineColor[\"primary\"] = \"primary\";\n eSelectionLineColor[\"header\"] = \"header\";\n })(exports.eSelectionLineColor || (exports.eSelectionLineColor = {}));\n (function (eTabWidth) {\n eTabWidth[\"custom\"] = \"custom\";\n eTabWidth[\"fill\"] = \"fill\";\n eTabWidth[\"auto\"] = \"auto\";\n })(exports.eTabWidth || (exports.eTabWidth = {}));\n (function (eScroll) {\n eScroll[\"none\"] = \"none\";\n eScroll[\"auto\"] = \"auto\";\n eScroll[\"x\"] = \"x\";\n eScroll[\"y\"] = \"y\";\n })(exports.eScroll || (exports.eScroll = {}));\n (function (eAdminIndexOperation) {\n eAdminIndexOperation[\"updateQuotes\"] = \"updateQuotes\";\n })(exports.eAdminIndexOperation || (exports.eAdminIndexOperation = {}));\n (function (eAttributeType) {\n eAttributeType[\"text\"] = \"text\";\n eAttributeType[\"number\"] = \"number\";\n eAttributeType[\"boolean\"] = \"boolean\";\n eAttributeType[\"date\"] = \"date\";\n })(exports.eAttributeType || (exports.eAttributeType = {}));\n (function (eAttributeControl) {\n eAttributeControl[\"select\"] = \"select\";\n eAttributeControl[\"imageSelect\"] = \"imageSelect\";\n eAttributeControl[\"multiSelect\"] = \"multiSelect\";\n eAttributeControl[\"imageMultiSelect\"] = \"imageMultiSelect\";\n eAttributeControl[\"checkbox\"] = \"checkbox\";\n })(exports.eAttributeControl || (exports.eAttributeControl = {}));\n (function (eNestedSetDisplay) {\n eNestedSetDisplay[\"container\"] = \"container\";\n eNestedSetDisplay[\"group\"] = \"group\";\n eNestedSetDisplay[\"tabControl\"] = \"tabControl\";\n eNestedSetDisplay[\"accordion\"] = \"accordion\";\n })(exports.eNestedSetDisplay || (exports.eNestedSetDisplay = {}));\n (function (eUserLicenseType) {\n eUserLicenseType[\"external\"] = \"external\";\n eUserLicenseType[\"internal\"] = \"internal\";\n eUserLicenseType[\"channel\"] = \"channel\";\n })(exports.eUserLicenseType || (exports.eUserLicenseType = {}));\n (function (eJobStatus) {\n eJobStatus[\"none\"] = \"none\";\n eJobStatus[\"waiting\"] = \"waiting\";\n eJobStatus[\"queued\"] = \"queued\";\n eJobStatus[\"working\"] = \"working\";\n eJobStatus[\"complete\"] = \"complete\";\n eJobStatus[\"failed\"] = \"failed\";\n })(exports.eJobStatus || (exports.eJobStatus = {}));\n (function (eJobType) {\n eJobType[\"build\"] = \"build\";\n eJobType[\"render\"] = \"render\";\n eJobType[\"notification\"] = \"notification\";\n eJobType[\"upsertProductsToSfdc\"] = \"upsertProductsToSfdc\";\n eJobType[\"pullSfdcProducts\"] = \"pullSfdcProducts\";\n eJobType[\"submitFromSfdcCpq\"] = \"submitFromSfdcCpq\";\n eJobType[\"completeBuildState\"] = \"completeBuildState\";\n eJobType[\"cleanDb\"] = \"cleanDb\";\n eJobType[\"deployment\"] = \"deployment\";\n eJobType[\"sceneImport\"] = \"sceneImport\";\n eJobType[\"sceneExport\"] = \"sceneExport\";\n eJobType[\"sceneConvert\"] = \"sceneConvert\";\n eJobType[\"completeQuoteProductBuild\"] = \"completeQuoteProductBuild\";\n eJobType[\"configuratorExport\"] = \"configuratorExport\";\n eJobType[\"configuratorImport\"] = \"configuratorImport\";\n })(exports.eJobType || (exports.eJobType = {}));\n (function (eValidationSource) {\n eValidationSource[\"snap\"] = \"snap\";\n eValidationSource[\"configurator\"] = \"configurator\";\n eValidationSource[\"scene\"] = \"scene\";\n })(exports.eValidationSource || (exports.eValidationSource = {}));\n (function (eBuildStatus) {\n eBuildStatus[\"none\"] = \"none\";\n eBuildStatus[\"generating\"] = \"generating\";\n eBuildStatus[\"complete\"] = \"complete\";\n eBuildStatus[\"failed\"] = \"failed\";\n })(exports.eBuildStatus || (exports.eBuildStatus = {}));\n\n var _allEnums = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get ePerm () { return exports.ePerm; },\n get eNotificationType () { return exports.eNotificationType; },\n get eNotificationSetting () { return exports.eNotificationSetting; },\n get eEnvironment () { return exports.eEnvironment; },\n get eWorkflowAction () { return exports.eWorkflowAction; },\n get eViewPermission () { return exports.eViewPermission; },\n get eOutputType () { return exports.eOutputType; },\n get eOutputFieldType () { return exports.eOutputFieldType; },\n get eExportType () { return exports.eExportType; },\n get eFileSource () { return exports.eFileSource; },\n get eFileStatus () { return exports.eFileStatus; },\n get eLogType () { return exports.eLogType; },\n get eLogSource () { return exports.eLogSource; },\n get eFieldType () { return exports.eFieldType; },\n get eFieldControl () { return exports.eFieldControl; },\n get eSort () { return exports.eSort; },\n get eProductSortBy () { return exports.eProductSortBy; },\n get eFormatType () { return exports.eFormatType; },\n get eRuleType () { return exports.eRuleType; },\n get eClusterEnv () { return exports.eClusterEnv; },\n get eConfiguratorLayout () { return exports.eConfiguratorLayout; },\n get eConfiguratorTabStyle () { return exports.eConfiguratorTabStyle; },\n get eDeploymentStatus () { return exports.eDeploymentStatus; },\n get eDifference () { return exports.eDifference; },\n get eViewerMode () { return exports.eViewerMode; },\n get ePosition () { return exports.ePosition; },\n get eTabPosition () { return exports.eTabPosition; },\n get eColumnType () { return exports.eColumnType; },\n get eSelectSource () { return exports.eSelectSource; },\n get eAutoCompleteSource () { return exports.eAutoCompleteSource; },\n get eOptionFilterSource () { return exports.eOptionFilterSource; },\n get eDynamicSource () { return exports.eDynamicSource; },\n get eQueryMode () { return exports.eQueryMode; },\n get eConfiguratorImageSource () { return exports.eConfiguratorImageSource; },\n get ePricingFillFromSource () { return exports.ePricingFillFromSource; },\n get eSingleOptionBehavior () { return exports.eSingleOptionBehavior; },\n get eFilterSource () { return exports.eFilterSource; },\n get eFilterType () { return exports.eFilterType; },\n get eFilterControl () { return exports.eFilterControl; },\n get eLogSetting () { return exports.eLogSetting; },\n get eHotspotSource () { return exports.eHotspotSource; },\n get eHotspotAttach () { return exports.eHotspotAttach; },\n get eLayerLineWeight () { return exports.eLayerLineWeight; },\n get eHotspotPosition () { return exports.eHotspotPosition; },\n get eAnimationEasing () { return exports.eAnimationEasing; },\n get eQueueMessageType () { return exports.eQueueMessageType; },\n get eStateType () { return exports.eStateType; },\n get eDescriptorType () { return exports.eDescriptorType; },\n get eWorkflowBuildType () { return exports.eWorkflowBuildType; },\n get eWorkflowPermissionType () { return exports.eWorkflowPermissionType; },\n get eAdminNotificationTarget () { return exports.eAdminNotificationTarget; },\n get eConfiguratorEntityType () { return exports.eConfiguratorEntityType; },\n get eHotspotShape () { return exports.eHotspotShape; },\n get eValidationType () { return exports.eValidationType; },\n get eIconStyle () { return exports.eIconStyle; },\n get eOracleCpqOperation () { return exports.eOracleCpqOperation; },\n get eOptionLayout () { return exports.eOptionLayout; },\n get eButtonStyle () { return exports.eButtonStyle; },\n get eTableExternalSource () { return exports.eTableExternalSource; },\n get eSkin () { return exports.eSkin; },\n get eGridColumnWidth () { return exports.eGridColumnWidth; },\n get eRelativeSize () { return exports.eRelativeSize; },\n get eVerticalAlignment () { return exports.eVerticalAlignment; },\n get eHorizontalAlignment () { return exports.eHorizontalAlignment; },\n get ePadding () { return exports.ePadding; },\n get eMaskType () { return exports.eMaskType; },\n get eValidationTiming () { return exports.eValidationTiming; },\n get eTextStyle () { return exports.eTextStyle; },\n get eTextColor () { return exports.eTextColor; },\n get eTextWeight () { return exports.eTextWeight; },\n get eDragMode () { return exports.eDragMode; },\n get eConnectionMode () { return exports.eConnectionMode; },\n get eToolbarPosition () { return exports.eToolbarPosition; },\n get eContainerItemLayout () { return exports.eContainerItemLayout; },\n get eContainerChildAlignment () { return exports.eContainerChildAlignment; },\n get eContainerItemAlignment () { return exports.eContainerItemAlignment; },\n get eContainerItemJustify () { return exports.eContainerItemJustify; },\n get eColorShade () { return exports.eColorShade; },\n get eBackgroundColor () { return exports.eBackgroundColor; },\n get eElevation () { return exports.eElevation; },\n get eSliderValueVisibility () { return exports.eSliderValueVisibility; },\n get eOrientation () { return exports.eOrientation; },\n get eTabSelectionStyle () { return exports.eTabSelectionStyle; },\n get eSelectionLineColor () { return exports.eSelectionLineColor; },\n get eTabWidth () { return exports.eTabWidth; },\n get eScroll () { return exports.eScroll; },\n get eAdminIndexOperation () { return exports.eAdminIndexOperation; },\n get eAttributeType () { return exports.eAttributeType; },\n get eAttributeControl () { return exports.eAttributeControl; },\n get eNestedSetDisplay () { return exports.eNestedSetDisplay; },\n get eUserLicenseType () { return exports.eUserLicenseType; },\n get eJobStatus () { return exports.eJobStatus; },\n get eJobType () { return exports.eJobType; },\n get eValidationSource () { return exports.eValidationSource; },\n get eBuildStatus () { return exports.eBuildStatus; }\n });\n\n var AllEnums = _allEnums;\n\n (function (eViewType) {\n eViewType[\"view\"] = \"view\";\n eViewType[\"edit\"] = \"edit\";\n eViewType[\"new\"] = \"new\";\n })(exports.eViewType || (exports.eViewType = {}));\n (function (eAdminType) {\n eAdminType[\"configurator\"] = \"configurator\";\n eAdminType[\"quoteOutput\"] = \"quoteOutput\";\n eAdminType[\"scene\"] = \"scene\";\n eAdminType[\"productRule\"] = \"productRule\";\n eAdminType[\"quoteHeader\"] = \"quoteHeader\";\n eAdminType[\"layout\"] = \"layout\";\n })(exports.eAdminType || (exports.eAdminType = {}));\n (function (eAlertType) {\n eAlertType[\"info\"] = \"info\";\n eAlertType[\"error\"] = \"error\";\n eAlertType[\"success\"] = \"success\";\n })(exports.eAlertType || (exports.eAlertType = {}));\n (function (eColorFormat) {\n eColorFormat[\"kbcolor\"] = \"kbcolor\";\n eColorFormat[\"hex\"] = \"hex\";\n eColorFormat[\"hsl\"] = \"hsl\";\n eColorFormat[\"hslString\"] = \"hslString\";\n eColorFormat[\"hsv\"] = \"hsv\";\n eColorFormat[\"hsvString\"] = \"hsvString\";\n eColorFormat[\"rgb\"] = \"rgb\";\n eColorFormat[\"rgbString\"] = \"rgbString\";\n })(exports.eColorFormat || (exports.eColorFormat = {}));\n (function (eColorOperation) {\n eColorOperation[\"lighten\"] = \"lighten\";\n eColorOperation[\"brighten\"] = \"brighten\";\n eColorOperation[\"darken\"] = \"darken\";\n eColorOperation[\"saturate\"] = \"saturate\";\n eColorOperation[\"desaturate\"] = \"desaturate\";\n })(exports.eColorOperation || (exports.eColorOperation = {}));\n\n function Kbo(token) {\n return function (target) {\n ConfiguratorDI.register({ token: token, class: target });\n };\n }\n function KboOutputField(token, outputFieldType) {\n return function (target) {\n ConfiguratorDI.register({ token: token, class: target, outputFieldType: outputFieldType });\n };\n }\n function KboOutput(token) {\n var outputTypes = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n outputTypes[_i - 1] = arguments[_i];\n }\n return function (target) {\n ConfiguratorDI.register({ token: token, class: target, outputTypes: outputTypes });\n };\n }\n /**\n * Applied to a getter or setter property, will make it enumerable\n */\n function Enumerable() {\n return function (target, propertyKey, descriptor) {\n descriptor.enumerable = true;\n };\n }\n var ConfiguratorDI = /** @class */ (function () {\n function ConfiguratorDI() {\n }\n ConfiguratorDI.register = function (args) {\n if (ConfiguratorDI.db.hasOwnProperty(args.token.key)) {\n throw new Error(\"A type with key \".concat(args.token.key, \" has already been registered\"));\n }\n ConfiguratorDI.db[args.token.key] = args;\n args.class.prototype.$type = args.token.key;\n if (args.outputFieldType)\n args.class.prototype.type = args.outputFieldType;\n if (args.outputTypes && args.outputTypes.length == 1)\n args.class.prototype.type = args.outputTypes[0];\n };\n ConfiguratorDI.get = function (token) {\n return ConfiguratorDI.db[token.key];\n };\n /**\n * Checks if the instance of a class given is an instance of the class represented by it's\n * injectable class key. If the instance is an instance of a class that was not\n * decorated, or if the class represented by the key was not decorated, then this will\n * return false!\n * @param instance An instance of a class that was decorated\n * @param classKey String key of the class you want to see if the instance is an instance of\n */\n ConfiguratorDI.instanceOf = function (instance, token) {\n // find the injectable\n var inj = this.get(token);\n return inj ? instance instanceof inj.class : false;\n };\n ConfiguratorDI.getNewOutputField = function (fieldType, kom, args) {\n var ikbo = Object.values(ConfiguratorDI.db).find(function (k) { return k.outputFieldType == fieldType; });\n if (!ikbo)\n throw new Error(\"Cannot not find output field type '\".concat(fieldType));\n var f = new ikbo.class(kom);\n if (args) {\n kom.recurse(args, f);\n }\n return f;\n };\n ConfiguratorDI.getNewOutput = function (outputType, kom, args) {\n var ikbo = Object.values(ConfiguratorDI.db).find(function (k) { return k.outputTypes && k.outputTypes.contains(outputType); });\n if (!ikbo)\n throw new Error(\"Cannot not find output type '\".concat(outputType));\n var o = new ikbo.class(kom);\n if (!o.type) {\n o.type = outputType;\n }\n if (args) {\n kom.recurse(args, o);\n }\n o.name = (args && args.name) ? args.name : loc[\"eoutputtype_\" + outputType.toLowerCase() + \"_title\"];\n return o;\n };\n ConfiguratorDI.getOutputFieldClassName = function (outputFieldType) {\n var ikbo = Object.values(ConfiguratorDI.db).find(function (k) { return k.outputFieldType == outputFieldType; });\n return ikbo.token.key;\n };\n ConfiguratorDI.getOutputClassName = function (outputType) {\n var ikbo = Object.values(ConfiguratorDI.db).find(function (k) { return k.outputTypes && k.outputTypes.contains(outputType); });\n return ikbo.token.key;\n };\n ConfiguratorDI.db = {};\n return ConfiguratorDI;\n }());\n\n // tslint:disable:variable-name\n var CToken = /** @class */ (function () {\n function CToken(key) {\n this.key = key;\n }\n CToken.withKey = function (key) {\n var token = this[key];\n if (!token)\n throw new Error(\"Could not find token for key '\".concat(key, \"'\"));\n return token;\n };\n CToken.hasKey = function (key) {\n return this[key] != null;\n };\n // configurator models\n CToken.Accordion = new CToken(\"Accordion\");\n CToken.ActionBar = new CToken(\"ActionBar\");\n CToken.Build = new CToken(\"Build\");\n CToken.Button = new CToken(\"Button\");\n CToken.Configurator = new CToken(\"Configurator\");\n CToken.ConfiguratorAction = new CToken(\"ConfiguratorAction\");\n CToken.ConfiguratorFunction = new CToken(\"ConfiguratorFunction\");\n CToken.Container = new CToken(\"Container\");\n CToken.DropdownButton = new CToken(\"DropdownButton\");\n CToken.Expander = new CToken(\"Expander\");\n CToken.Export = new CToken(\"Export\");\n CToken.Field = new CToken(\"Field\");\n CToken.GridColumn = new CToken(\"GridColumn\");\n CToken.GridRow = new CToken(\"GridRow\");\n CToken.Group = new CToken(\"Group\");\n CToken.Html = new CToken(\"Html\");\n CToken.SvgViewer = new CToken(\"SvgViewer\");\n CToken.Hotspot = new CToken(\"Hotspot\");\n CToken.KbObject = new CToken(\"KbObject\");\n CToken.LayoutConfig = new CToken(\"LayoutConfig\");\n CToken.LayoutContent = new CToken(\"LayoutContent\");\n CToken.Media = new CToken(\"Media\");\n CToken.NestedSet = new CToken(\"NestedSet\");\n CToken.OptionFilter = new CToken(\"OptionFilter\");\n CToken.Option = new CToken(\"Option\");\n CToken.Page = new CToken(\"Page\");\n CToken.PageControl = new CToken(\"PageControl\");\n CToken.PageNavigator = new CToken(\"PageNavigator\");\n CToken.PageTabs = new CToken(\"PageTabs\");\n CToken.Popup = new CToken(\"Popup\");\n CToken.PriceWidget = new CToken(\"PriceWidget\");\n CToken.PricingRuleContainer = new CToken(\"PricingRuleContainer\");\n CToken.ProductRuleContainer = new CToken(\"ProductRuleContainer\");\n CToken.ReferencedConfigurator = new CToken(\"ReferencedConfigurator\");\n CToken.RenderPassExport = new CToken(\"RenderPassExport\");\n CToken.RuleContainer = new CToken(\"RuleContainer\");\n CToken.Rule = new CToken(\"Rule\");\n CToken.Tab = new CToken(\"Tab\");\n CToken.TabControl = new CToken(\"TabControl\");\n CToken.Text = new CToken(\"Text\");\n CToken.Toolbar = new CToken(\"Toolbar\");\n CToken.Viewer = new CToken(\"Viewer\");\n // outputs\n CToken.BomOutput = new CToken(\"BomOutput\");\n CToken.CadDrawingOutput = new CToken(\"CadDrawingOutput\");\n CToken.CadOutput = new CToken(\"CadOutput\");\n CToken.ExcelOutput = new CToken(\"ExcelOutput\");\n CToken.FileOutput = new CToken(\"FileOutput\");\n CToken.ImageOutput = new CToken(\"ImageOutput\");\n CToken.Output = new CToken(\"Output\");\n CToken.PdfOutput = new CToken(\"PdfOutput\");\n CToken.SceneRenderOutput = new CToken(\"SceneRenderOutput\");\n CToken.WordOutput = new CToken(\"WordOutput\");\n CToken.ZipOutput = new CToken(\"ZipOutput\");\n CToken.SvgOutput = new CToken(\"SvgOutput\");\n CToken.TextOutput = new CToken(\"TextOutput\");\n // output fields\n CToken.ExcelCellField = new CToken(\"ExcelCellField\");\n CToken.ExcelChartField = new CToken(\"ExcelChartField\");\n CToken.ExcelImageField = new CToken(\"ExcelImageField\");\n CToken.ExcelSheetField = new CToken(\"ExcelSheetField\");\n CToken.ExcelTableField = new CToken(\"ExcelTableField\");\n CToken.OutputField = new CToken(\"OutputField\");\n CToken.PdfSectionField = new CToken(\"PdfSectionField\");\n CToken.WordContainerField = new CToken(\"WordContainerField\");\n CToken.WordImageField = new CToken(\"WordImageField\");\n CToken.WordListField = new CToken(\"WordListField\");\n CToken.WordTextField = new CToken(\"WordTextField\");\n CToken.ZipSectionField = new CToken(\"ZipSectionField\");\n // cad output fields\n CToken.CadAnnotationField = new CToken(\"CadAnnotationField\");\n CToken.CadBlockArrayField = new CToken(\"CadBlockArrayField\");\n CToken.CadBlockField = new CToken(\"CadBlockField\");\n CToken.CadComponentField = new CToken(\"CadComponentField\");\n CToken.CadCustomPropertyField = new CToken(\"CadCustomPropertyField\");\n CToken.CadDimensionField = new CToken(\"CadDimensionField\");\n CToken.CadDrawingAnnotationField = new CToken(\"CadDrawingAnnotationField\");\n CToken.CadDrawingDimensionField = new CToken(\"CadDrawingDimensionField\");\n CToken.CadDrawingSheetField = new CToken(\"CadDrawingSheetField\");\n CToken.CadDrawingViewField = new CToken(\"CadDrawingViewField\");\n CToken.CadDynamicComponentField = new CToken(\"CadDynamicComponentField\");\n CToken.CadDynamicDrawingAnnotationField = new CToken(\"CadDynamicDrawingAnnotationField\");\n CToken.CadDynamicDrawingDimensionField = new CToken(\"CadDynamicDrawingDimensionField\");\n CToken.CadFeatureField = new CToken(\"CadFeatureField\");\n CToken.CadLayerField = new CToken(\"CadLayerField\");\n CToken.CadLibFeatureField = new CToken(\"CadLibFeatureField\");\n CToken.CadParameterField = new CToken(\"CadParameterField\");\n CToken.CadReplaceComponentField = new CToken(\"CadReplaceComponentField\");\n CToken.CadRepresentationField = new CToken(\"CadRepresentationField\");\n CToken.CadScaleFeatureField = new CToken(\"CadScaleFeatureField\");\n CToken.CadTextField = new CToken(\"CadTextField\");\n // mates\n CToken.CadAngleMate = new CToken(\"CadAngleMate\");\n CToken.CadCoincidentMate = new CToken(\"CadCoincidentMate\");\n CToken.CadCoordinateSystemMate = new CToken(\"CadCoordinateSystemMate\");\n CToken.CadDistanceMate = new CToken(\"CadDistanceMate\");\n CToken.CadLibDimension = new CToken(\"CadLibDimension\");\n CToken.CadLibReference = new CToken(\"CadLibReference\");\n CToken.CadPositionConstraint = new CToken(\"CadPositionConstraint\");\n CToken.Constraint = new CToken(\"Constraint\");\n CToken.Mate = new CToken(\"Mate\");\n // manufacture\n CToken.PartRev = new CToken(\"PartRev\");\n CToken.PartMaterial = new CToken(\"PartMaterial\");\n CToken.PartOperation = new CToken(\"PartOperation\");\n CToken.PartOperationDetail = new CToken(\"PartOperationDetail\");\n CToken.MethodOfManufacture = new CToken(\"MethodOfManufacture\");\n return CToken;\n }());\n\n var defaults = {\n Accordion: {\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n ActionBar: {\n buttonStyle: \"link\",\n buttonColor: \"background\",\n iconSize: 24,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Build: {\n idBuildType: 0,\n idQueue: 1,\n cloudBuild: true,\n },\n Button: {\n ruleType: \"button\",\n enabled: true,\n iconStyle: \"none\",\n textPosition: \"right\",\n buttonStyle: \"normal\",\n color: \"background\",\n imageHeight: 30,\n imageWidth: 30,\n showLabel: true,\n fullWidth: false,\n relativeWidth: \"auto\",\n useZeroPadding: false,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Configurator: {\n entityType: \"product\",\n unitOfMeasure: \"ea.\",\n price: 0.0,\n cost: 0.0,\n maxDiscountPercentage: 0.0,\n maxQty: 0.0,\n minQty: 1.0,\n allowFractionalQty: false,\n score: 0,\n usePartSelector: false,\n active: true,\n inheritCategoryPermissions: false,\n v: 0,\n snapVersion: 0,\n visible: true,\n alwaysChild: false,\n validationTiming: \"always\",\n allowSaveWithErrors: true,\n idLayout: -1,\n useMobileDropdowns: true,\n headerColor: \"header\",\n showMoveAnimation: false,\n viewerMode: \"none\",\n clearMemoryWhenSwitchingScenes: false,\n sceneToolbarPosition: \"bottomRight\",\n nestedSceneClickToSelect: true,\n runQuoteRuleUponInsert: false,\n imageSource: \"none\",\n allowUserToRemove: false,\n bubbleRules: false,\n hasPricingRule: false,\n hasQuoteRule: false,\n autoValidation: true,\n convertToKb3d: false,\n mouseOverEffects: true,\n mouseOverColor: \"#131313\",\n prefetchImages: true,\n allowOrbit: true,\n allowPan: true,\n allowZoom: true,\n constrainCameraToRadius: false,\n cameraRadius: 0.0,\n isPlaceholder: false,\n scroll: \"none\",\n itemLayout: \"horizontal\",\n itemAlignment: \"stretch\",\n itemJustify: \"start\",\n spaceBetweenItems: \"none\",\n padding: \"none\",\n collapseOnMobile: false,\n backgroundColor: \"background\",\n backgroundShade: \"default\",\n backgroundOpacity: 1.0,\n elevation: \"none\",\n relativeSize: \"x1\",\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n alignment: \"inherit\",\n },\n ConfiguratorAction: {\n iconStyle: \"icon\",\n textPosition: \"right\",\n visible: true,\n enabled: true,\n ruleType: \"action\",\n showLabel: true,\n relativeSize: \"auto\",\n },\n ConfiguratorFunction: {\n ruleType: \"action\",\n },\n Container: {\n isPlaceholder: false,\n scroll: \"none\",\n itemLayout: \"horizontal\",\n itemAlignment: \"stretch\",\n itemJustify: \"start\",\n spaceBetweenItems: \"none\",\n padding: \"none\",\n collapseOnMobile: false,\n backgroundColor: \"background\",\n backgroundShade: \"default\",\n backgroundOpacity: 1.0,\n elevation: \"none\",\n relativeSize: \"x1\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n alignment: \"inherit\",\n },\n DropdownButton: {\n ruleType: \"button\",\n enabled: true,\n iconStyle: \"none\",\n textPosition: \"right\",\n buttonStyle: \"normal\",\n color: \"background\",\n imageHeight: 30,\n imageWidth: 30,\n showLabel: true,\n fullWidth: false,\n relativeWidth: \"auto\",\n useZeroPadding: false,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Expander: {\n expanded: true,\n iconStyle: \"icon\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Field: {\n ruleType: \"field\",\n enabled: true,\n required: false,\n type: \"text\",\n control: \"none\",\n searchable: false,\n showLabel: true,\n mask: \"none\",\n precision: 2,\n constrainValue: false,\n min: 0,\n max: 0,\n step: 0,\n sliderAllowDirectEdit: false,\n sliderValueVisibility: \"visible\",\n dateFormat: \"Y-m-d\",\n format: \"none\",\n formatMinPrecision: 0,\n formatCurrency: \"USD\",\n formatDecimalSeparator: \".\",\n formatThousandsSeparator: \",\",\n selectSource: \"simple\",\n autoCompleteSource: \"table\",\n useFullTextSearch: false,\n constrainToSource: true,\n sort: \"none\",\n imageHeight: 30,\n imageWidth: 30,\n imageOnly: false,\n optionLayout: \"wrap\",\n dropdownOptionLayout: \"vertical\",\n enableSelectedImages: false,\n linkToDynamicAttribute: false,\n useZeroPadding: false,\n hasBeenTouched: false,\n uploadToScene: false,\n convertUploadedSceneImageToMesh: false,\n convertUploadPdfToImage: false,\n uploadImageThreshold: 0.5,\n iconStyle: \"icon\",\n buttonStyle: \"normal\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n GridColumn: {\n relativeWidth: \"x1\",\n verticalAlignment: \"stretch\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n GridRow: {\n verticalAlignment: \"stretch\",\n horizontalAlignment: \"left\",\n spaceBetweenItems: \"medium\",\n collapseOnMobile: true,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Group: {\n enabled: true,\n showLabel: true,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Hotspot: {\n target: true,\n popupPosition: \"target\",\n popupAttach: \"center\",\n keepPopupInViewer: true,\n popupOffsetX: 0,\n popupOffsetY: 0,\n popupTop: \"auto\",\n popupLeft: \"auto\",\n popupBottom: \"auto\",\n popupRight: \"auto\",\n popupWidth: \"auto\",\n popupHeight: \"auto\",\n visible: true,\n open: false,\n alpha: 1,\n allowClose: true,\n showPopupHeader: true,\n showPopupBackground: true,\n showTooltip: true,\n targetColor: \"#0A6080\",\n targetShape: \"circle\",\n targetSize: 18,\n source: \"text\",\n animationDuration: 1000,\n animationEasing: \"easeOutCirc\",\n },\n Html: {\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n KbObject: {},\n LayoutConfig: {\n autoValidation: true,\n useMobileDropdowns: true,\n isPlaceholder: false,\n scroll: \"none\",\n itemLayout: \"horizontal\",\n itemAlignment: \"stretch\",\n itemJustify: \"start\",\n spaceBetweenItems: \"none\",\n padding: \"none\",\n collapseOnMobile: false,\n backgroundColor: \"background\",\n backgroundShade: \"default\",\n backgroundOpacity: 1.0,\n elevation: \"none\",\n relativeSize: \"x1\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n alignment: \"inherit\",\n },\n LayoutContent: {\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Media: {\n maxHeight: 256,\n maxWidth: 256,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n MethodOfManufacture: {},\n MethodOfManufactureRuleContainer: {},\n NestedSet: {\n display: \"accordion\",\n autoNavigateToElement: true,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n OptionFilter: {\n ruleType: \"optionFilter\",\n source: \"table\",\n optimized: true,\n level: 0,\n queryMode: \"table\",\n singleOptionBehavior: \"nothing\",\n visibleToChildren: false,\n },\n BomMappingField: {},\n CadAnnotationField: {\n markedForDrawing: false,\n },\n CadBlockArrayField: {\n insertionPointX: 0,\n insertionPointY: 0,\n insertionPointZ: 0,\n xScale: 1,\n yScale: 1,\n zScale: 1,\n rotation: 0,\n flipX: false,\n flipY: false,\n numRows: 1,\n rowSpacing: 1,\n numColumns: 1,\n columnSpacing: 1,\n },\n CadBlockField: {\n insertionPointX: 0,\n insertionPointY: 0,\n insertionPointZ: 0,\n xScale: 1,\n yScale: 1,\n zScale: 1,\n rotation: 0,\n flipX: false,\n flipY: false,\n },\n CadComponentField: {\n suppressed: false,\n deleted: false,\n },\n CadCustomPropertyField: {},\n CadDimensionField: {\n markedForDrawing: false,\n value: 0,\n },\n CadDrawingAnnotationField: {\n x: 0,\n y: 0,\n visible: true,\n },\n CadDrawingDimensionField: {\n visible: true,\n x: 0,\n y: 0,\n },\n CadDrawingSheetField: {\n scaleNumerator: 1,\n scaleDenominator: 1,\n useCustomScale: false,\n deleted: false,\n scaleAnnoPosition: false,\n scaleAnnoTextHeight: false,\n },\n CadDrawingViewField: {\n useCustomScale: false,\n autoPositionAnnotations: false,\n scaleNumerator: 1,\n scaleDenominator: 1,\n autosize: false,\n autoDimension: false,\n autoBalloon: false,\n ignoreMultipleBalloons: true,\n deleted: false,\n suppressed: false,\n autoPosition: true,\n x: 0,\n y: 0,\n bomRenumber: false,\n allowMultipleBalloonsFirstLevelOnly: true,\n referencedPartFamily: \"\",\n },\n CadDynamicComponentField: {\n suppressed: false,\n fixed: false,\n },\n CadDynamicDrawingAnnotationField: {\n x: 0,\n y: 0,\n },\n CadDynamicDrawingDimensionField: {\n x: 0,\n y: 0,\n vertical: false,\n dimensionTextPrefix: false,\n },\n CadFeatureField: {\n suppressed: false,\n deleted: false,\n },\n CadLayerField: {\n lineType: \"BYLAYER\",\n toAdd: true,\n active: true,\n freeze: false,\n lineWeight: \"lnWtByBlock\",\n lock: false,\n plottable: true,\n visible: true,\n },\n CadLibFeatureField: {},\n CadParameterField: {\n value: 0,\n },\n CadReplaceComponentField: {},\n CadRepresentationField: {},\n CadScaleFeatureField: {\n x: 1,\n y: 1,\n z: 1,\n isUniform: true,\n scaleUniform: 1,\n suppressed: false,\n deleted: false,\n },\n CadTextField: {\n insertionPointX: 0,\n insertionPointY: 0,\n insertionPointZ: 0,\n height: 0,\n },\n CadAngleMate: {\n angle: 0,\n aligned: false,\n alignClosest: false,\n },\n CadCoincidentMate: {\n aligned: false,\n alignClosest: false,\n },\n CadCoordinateSystemMate: {\n aligned: false,\n alignClosest: false,\n },\n CadDistanceMate: {\n distance: 0,\n aligned: false,\n alignClosest: false,\n },\n CadLibDimension: {\n value: 0,\n },\n CadLibReference: {\n referenceType: \"0\",\n },\n CadPoint: {},\n CadPositionConstraint: {\n x: 0,\n y: 0,\n z: 0,\n xAngle: 0,\n yAngle: 0,\n zAngle: 0,\n aligned: false,\n alignClosest: false,\n },\n Constraint: {},\n Mate: {\n aligned: false,\n alignClosest: false,\n },\n ExcelCellField: {\n deleted: false,\n },\n ExcelChartField: {\n deleted: false,\n },\n ExcelImageField: {},\n ExcelSheetField: {\n deleted: false,\n tryCalculateFormula: false,\n autoFitColumns: false,\n autoFitRows: false,\n },\n ExcelTableField: {\n deleted: false,\n },\n OutputField: {},\n PdfSectionField: {\n source: \"tag\",\n idTag: 0,\n nestedIdProduct: 0,\n },\n TableOutputField: {},\n WordContainerField: {\n deleted: false,\n },\n WordImageField: {\n deleted: false,\n fixContentControlSize: false,\n },\n WordListField: {\n deleted: false,\n },\n WordTextField: {\n deleted: false,\n },\n ZipSectionField: {\n source: \"tag\",\n idTag: 0,\n nestedIdProduct: 0,\n },\n BomOutput: {\n mode: \"empty\",\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n CadDrawingOutput: {\n fileNameAsTopModelName: false,\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n CadOutput: {\n hideCADApplication: false,\n closeCADatEnd: false,\n maxBuildTime: 600,\n copyAllFiles: false,\n deleteOldFiles: false,\n modifyDimensionInAllConfig: true,\n createBOM: false,\n creoVersion: 3,\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n ExcelOutput: {\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n Export: {\n enabled: true,\n postToCloud: true,\n },\n FileOutput: {\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n ImageOutput: {\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n Output: {\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n PdfOutput: {\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n RenderPassExport: {\n frameCamera: true,\n framePadding: 1,\n allowEmpty: false,\n width: 800,\n height: 600,\n enabled: true,\n postToCloud: true,\n },\n SceneRenderOutput: {\n frameCamera: true,\n framePadding: 1,\n allowEmpty: false,\n width: 800,\n height: 600,\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n SvgOutput: {\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n TextOutput: {\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n WordOutput: {\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n ZipOutput: {\n ruleType: \"output\",\n enabled: true,\n autoValidation: true,\n },\n Page: {\n enabled: true,\n iconStyle: \"icon\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n PageControl: {\n padding: \"large\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n PageNavigator: {\n buttonStyle: \"normal\",\n buttonColor: \"background\",\n showPageLabel: true,\n labelColor: \"normal\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n PageTabs: {\n orientation: \"vertical\",\n tabStyle: \"cards\",\n iconSize: 34,\n tabWidth: \"custom\",\n customTabWidth: 63,\n showTabLabels: true,\n backgroundColor: \"background\",\n backgroundShade: \"default\",\n selectionStyle: \"background\",\n selectionColor: \"accent\",\n selectionShade: \"default\",\n selectionLineColor: \"accent\",\n elevation: \"none\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Popup: {\n popupWidth: \"auto\",\n popupHeight: \"auto\",\n ruleType: \"button\",\n enabled: true,\n iconStyle: \"none\",\n textPosition: \"right\",\n buttonStyle: \"normal\",\n color: \"background\",\n imageHeight: 30,\n imageWidth: 30,\n showLabel: true,\n fullWidth: false,\n relativeWidth: \"auto\",\n useZeroPadding: false,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n PriceWidget: {\n showDetails: true,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n PricingRuleContainer: {\n requiresUpdate: false,\n fillFromSource: \"none\",\n },\n ReferencedConfigurator: {\n nestScene: true,\n nestHotspots: false,\n nestPriceObject: true,\n nestMethodOfManufacture: true,\n },\n Rule: {},\n RuleContainer: {},\n SvgViewer: {\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Tab: {\n showLabel: true,\n iconStyle: \"icon\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n TabControl: {\n tabWidth: \"auto\",\n customTabWidth: 63,\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Text: {\n style: \"normal\",\n color: \"normal\",\n weight: \"f400\",\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Toolbar: {\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n UiObject: {\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n Viewer: {\n visible: true,\n left: \"auto\",\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n width: \"auto\",\n height: \"auto\",\n opacity: 1.0,\n order: 0,\n relativeSize: \"auto\",\n alignment: \"inherit\",\n },\n ProductRuleContainer: {\n autoValidation: true,\n },\n };\n\n var PropertyChangedEvent = /** @class */ (function (_super) {\n __extends(PropertyChangedEvent, _super);\n function PropertyChangedEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PropertyChangedEvent;\n }(_tools.KbEvent));\n var KbObject = /** @class */ (function () {\n function KbObject($manager) {\n var _this = this;\n this.$manager = $manager;\n this.$propertyChanged = new PropertyChangedEvent();\n this.getParent = function () { return _this.$parent; };\n _tools.Utils.guardNotNull($manager);\n // set defaults\n var defaultsClass = defaults[this.$type];\n for (var prop in defaultsClass) {\n this[prop] = defaultsClass[prop];\n }\n this.id = _tools.Utils.shortId();\n }\n KbObject.generateName = function (obj, parentGroup, name) {\n if (!name)\n name = obj.$type;\n var i = 0;\n var resultName = name;\n parentGroup.forEach(function (kb) {\n if (kb.name == resultName) {\n resultName = name + (++i);\n }\n });\n obj.name = resultName;\n };\n /**\n * a helper that derived classes can call from property setters to enable change detection.\n * NOTE! Assumes there is a private backing field\n * for the property that is named by the convention \"_\" + propertyName\n */\n KbObject.prototype.setProperty = function (propertyName, newValue, addToUndoStack) {\n var privateProp = \"_\" + propertyName;\n var oldValue = this[privateProp];\n var changed = (oldValue !== newValue);\n // set the private backing variable\n this[privateProp] = newValue;\n if (changed) {\n this.$propertyChanged.trigger({\n oldValue: oldValue,\n newValue: newValue,\n property: propertyName\n });\n }\n };\n Object.defineProperty(KbObject.prototype, \"id\", {\n get: function () {\n return this._id;\n },\n set: function (val) {\n var changed = !_tools.Utils.areEqual(this._id, val);\n if (changed) {\n // delete from name scope\n this.$manager.removeKbObjectById(this._id);\n this.$manager.addKbObjectWithId(val, this);\n }\n this._id = val;\n },\n enumerable: false,\n configurable: true\n });\n KbObject.prototype.getParentOfType = function ($type) {\n var parent = this.$parent;\n while (parent) {\n if (parent.$type == $type)\n return parent;\n parent = parent.$parent;\n }\n return null;\n };\n KbObject.prototype.findAncestor = function (predicate) {\n var parent = this.$parent;\n while (parent) {\n if (predicate(parent))\n return parent;\n parent = parent.$parent;\n }\n return null;\n };\n Object.defineProperty(KbObject.prototype, \"$parentConfigurator\", {\n get: function () {\n if (!this._parentConfigurator) {\n this._parentConfigurator = this.getParentOfType(\"Configurator\");\n }\n return this._parentConfigurator;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(KbObject.prototype, \"name\", {\n get: function () {\n return this._name;\n },\n set: function (val) {\n var changed = !_tools.Utils.areEqual(this._name, val);\n if (changed) {\n val = this.$manager.getUniqueName(this, val);\n // delete from name scope\n if (this._name) {\n this.$manager.removeKbObjectNameReference(this._name);\n }\n this.$manager.addKbObjectNameReference(val, this);\n }\n this._name = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(KbObject.prototype, \"$label\", {\n /**\n * for field controls to bind to. Defaults to name if there is no label\n */\n get: function () {\n var l = this.label ? this.label : this.name;\n return l;\n },\n enumerable: false,\n configurable: true\n });\n KbObject.prototype.serialize = function (modifier) {\n // Not all objects have complex getters and setters, so we'll default to this.\n var result = {};\n result.$type = this.$type; // type needs to be first for the deserialization to happen correctly on the server\n var _loop_1 = function (key) {\n if (key.substr(0, 1) == \"$\" || (key.substr(0, 1) == \"_\" && key != \"_metadata\") || this_1.ignoredProperties().some(function (p) { return p.isEqual(key); }))\n return \"continue\";\n var item = this_1[key];\n if (item == this_1)\n return \"continue\";\n if (item instanceof Function)\n return \"continue\";\n if (item && item.constructor === Array && item[0] && item[0].serialize) {\n result[key] = item.map(function (i) { return i.serialize(modifier); });\n }\n else if (item && item.serialize) {\n result[key] = item.serialize(modifier);\n }\n else {\n result[key] = item;\n }\n };\n var this_1 = this;\n for (var key in this) {\n _loop_1(key);\n }\n result.name = this.name;\n result.label = this.label;\n result.id = this.id;\n if (modifier)\n modifier(this, result);\n return result;\n };\n /**\n * sets property values of the class given an object. For example: {name: \"field1\", value: 15}\n * Used by snap so don't delete!\n * @param values\n */\n KbObject.prototype.setProps = function (values) {\n for (var key in values) {\n this[key] = values[key];\n }\n };\n /**\n * Can be overridden by derived classes to specify properties that should be ignored during\n * serialization\n */\n KbObject.prototype.ignoredProperties = function () {\n return [];\n };\n KbObject.prototype.allowedChildren = function (rootType) {\n return [];\n };\n __decorate([\n Enumerable()\n ], KbObject.prototype, \"id\", null);\n __decorate([\n Enumerable()\n ], KbObject.prototype, \"$parentConfigurator\", null);\n __decorate([\n Enumerable()\n ], KbObject.prototype, \"name\", null);\n __decorate([\n Enumerable()\n ], KbObject.prototype, \"$label\", null);\n KbObject = __decorate([\n Kbo(CToken.KbObject)\n ], KbObject);\n return KbObject;\n }());\n\n var RuleContainer = /** @class */ (function (_super) {\n __extends(RuleContainer, _super);\n function RuleContainer(kom, args) {\n var _this = _super.call(this, kom) || this;\n // /**\n // * the compiled rule, cached here for performance\n // */\n // public $asyncFn: AsyncRuleFunction;\n // public $syncFn: SyncRuleFunction;\n _this.references = [];\n if (args) {\n _this.ruleType = args.ruleType;\n }\n return _this;\n }\n Object.defineProperty(RuleContainer.prototype, \"rules\", {\n get: function () {\n if (!this._rules)\n this._rules = [];\n return this._rules;\n },\n set: function (val) {\n this._rules = val;\n },\n enumerable: false,\n configurable: true\n });\n RuleContainer.prototype.removeRule = function (rule) {\n this.$manager.removeKbObject(rule);\n this.rules.removeWhere(function (r) { return r.id == rule.id; });\n };\n __decorate([\n Enumerable()\n ], RuleContainer.prototype, \"rules\", null);\n RuleContainer = __decorate([\n Kbo(CToken.RuleContainer)\n ], RuleContainer);\n return RuleContainer;\n }(KbObject));\n\n var UiObject = /** @class */ (function (_super) {\n __extends(UiObject, _super);\n function UiObject(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n _this.$valid = true;\n return _this;\n }\n UiObject.prototype.getCss = function (prop) {\n var v = this[prop];\n var numeric = (Number(v) == v);\n return numeric ? \"\".concat(v, \"px\") : v;\n };\n UiObject.prototype.filterChildren = function (tokens, allChildren) {\n var list = [];\n var _loop_1 = function (c) {\n if (!tokens.length || tokens.some(function (t) { return ConfiguratorDI.instanceOf(c, t); })) {\n list.push(c);\n }\n c.getChildrenOfType.apply(c, tokens).forEach(function (c2) { return list.push(c2); });\n };\n for (var _i = 0, allChildren_1 = allChildren; _i < allChildren_1.length; _i++) {\n var c = allChildren_1[_i];\n _loop_1(c);\n }\n return list;\n };\n /**\n *\n * @param token Gets all the UI children of the given types.\n * @param allChildren\n */\n UiObject.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return [];\n };\n UiObject.prototype.allowedChildren = function (rootType) {\n // implement in derived classes\n return [];\n };\n /**\n * Utility function to get all of the standard allowed elements\n * for container type parents.\n * @param rootType\n */\n UiObject.prototype.containerChildren = function (rootType) {\n if (rootType == CToken.Configurator) {\n return [\n CToken.Accordion,\n CToken.Button,\n CToken.Container,\n CToken.DropdownButton,\n CToken.Expander,\n CToken.Field,\n CToken.GridRow,\n CToken.Group,\n CToken.Html,\n CToken.SvgViewer,\n CToken.Media,\n CToken.Popup,\n CToken.TabControl,\n CToken.Text,\n CToken.Toolbar,\n CToken.NestedSet\n ];\n }\n else if (rootType == CToken.LayoutConfig) {\n return [\n CToken.ActionBar,\n CToken.Accordion,\n CToken.Button,\n CToken.Container,\n CToken.DropdownButton,\n CToken.Expander,\n //CToken.Field,\n //CToken.GridRow,\n CToken.Group,\n CToken.Html,\n CToken.SvgViewer,\n CToken.Media,\n CToken.PageNavigator,\n CToken.PageControl,\n CToken.PageTabs,\n CToken.Popup,\n CToken.PriceWidget,\n CToken.TabControl,\n CToken.Text,\n CToken.Toolbar,\n CToken.Viewer,\n ];\n }\n else {\n return [];\n }\n };\n /** calculated validity and stores result in $valid property */\n UiObject.prototype.isValid = function () {\n var fields = this.getChildrenOfType(CToken.Field);\n var valid = !fields.some(function (f) { return !f.isValid(); });\n if (!valid) {\n this.$valid = false;\n return this.$valid;\n }\n this.$valid = true;\n return this.$valid;\n };\n Object.defineProperty(UiObject.prototype, \"$domId\", {\n /**\n * get's the html id that represents this ui object in the DOM\n */\n get: function () {\n var c = ConfiguratorDI.instanceOf(this, CToken.Configurator) ? this : this.$parentConfigurator;\n var p = c ? c.name.toKebabCase() + \"-\" : \"\";\n return p + this.id;\n },\n enumerable: false,\n configurable: true\n });\n __decorate([\n Enumerable()\n ], UiObject.prototype, \"$domId\", null);\n return UiObject;\n }(RuleContainer));\n\n var Accordion = /** @class */ (function (_super) {\n __extends(Accordion, _super);\n function Accordion(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(Accordion.prototype, \"expanders\", {\n get: function () {\n if (!this._expanders)\n this._expanders = [];\n return this._expanders;\n },\n set: function (val) {\n this._expanders = val;\n },\n enumerable: false,\n configurable: true\n });\n Accordion.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.expanders);\n };\n Accordion.prototype.allowedChildren = function (rootType) {\n return [\n CToken.Expander\n ];\n };\n __decorate([\n Enumerable()\n ], Accordion.prototype, \"expanders\", null);\n Accordion = __decorate([\n Kbo(CToken.Accordion)\n ], Accordion);\n return Accordion;\n }(UiObject));\n\n var ActionBar = /** @class */ (function (_super) {\n __extends(ActionBar, _super);\n function ActionBar(kom) {\n return _super.call(this, kom) || this;\n }\n ActionBar = __decorate([\n Kbo(CToken.ActionBar)\n ], ActionBar);\n return ActionBar;\n }(UiObject));\n\n var Build = /** @class */ (function (_super) {\n __extends(Build, _super);\n function Build(kom) {\n var _this = _super.call(this, kom) || this;\n _this.$outputsNode = { id: _this.id + \"_outputs\", $type: \"OutputsNode\", allowedChildren: function () { return [CToken.Output]; }, getParent: function () { return _this; } };\n _this.$rulesNode = { id: _this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: function () { return [CToken.Rule]; }, getParent: function () { return _this; } };\n return _this;\n }\n Object.defineProperty(Build.prototype, \"ruleContainers\", {\n get: function () {\n if (!this._ruleContainers)\n this._ruleContainers = [];\n return this._ruleContainers;\n },\n set: function (val) {\n this._ruleContainers = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Build.prototype, \"outputs\", {\n get: function () {\n if (!this._outputs)\n this._outputs = [];\n return this._outputs;\n },\n set: function (val) {\n this._outputs = val;\n },\n enumerable: false,\n configurable: true\n });\n Build.prototype.addOutput = function (outputType) {\n var output = ConfiguratorDI.getNewOutput(outputType, this.$manager);\n this.$manager.addKbObject(output, this);\n this.outputs.push(output);\n return output;\n };\n Build.prototype.removeOutput = function (output) {\n this.outputs.remove(output);\n this.$manager.removeKbObject(output);\n };\n Build.prototype.removeRuleContainer = function (rc) {\n this.$manager.removeKbObject(rc);\n this.ruleContainers.remove(rc);\n };\n __decorate([\n Enumerable()\n ], Build.prototype, \"ruleContainers\", null);\n __decorate([\n Enumerable()\n ], Build.prototype, \"outputs\", null);\n Build = __decorate([\n Kbo(CToken.Build)\n ], Build);\n return Build;\n }(KbObject));\n\n var Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n function Button(kom) {\n return _super.call(this, kom, { ruleType: exports.eRuleType.button }) || this;\n }\n Button = __decorate([\n Kbo(CToken.Button)\n ], Button);\n return Button;\n }(UiObject));\n\n var ConfiguratorAction = /** @class */ (function (_super) {\n __extends(ConfiguratorAction, _super);\n function ConfiguratorAction(kom) {\n var _this = _super.call(this, kom) || this;\n _this.icon = _tools.icons.action;\n _this.ruleType = exports.eRuleType.action;\n return _this;\n }\n ConfiguratorAction = __decorate([\n Kbo(CToken.ConfiguratorAction)\n ], ConfiguratorAction);\n return ConfiguratorAction;\n }(RuleContainer));\n\n var ConfiguratorFunction = /** @class */ (function (_super) {\n __extends(ConfiguratorFunction, _super);\n function ConfiguratorFunction(kom) {\n var _this = _super.call(this, kom) || this;\n _this.ruleType = exports.eRuleType.function;\n return _this;\n }\n ConfiguratorFunction = __decorate([\n Kbo(CToken.ConfiguratorFunction)\n ], ConfiguratorFunction);\n return ConfiguratorFunction;\n }(RuleContainer));\n\n var Container = /** @class */ (function (_super) {\n __extends(Container, _super);\n function Container(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(Container.prototype, \"children\", {\n get: function () {\n if (!this._children)\n this._children = [];\n return this._children;\n },\n set: function (val) {\n this._children = val;\n },\n enumerable: false,\n configurable: true\n });\n // public visible: boolean;\n Container.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children);\n };\n Container.prototype.allowedChildren = function (rootType) {\n return this.containerChildren(rootType);\n };\n __decorate([\n Enumerable()\n ], Container.prototype, \"children\", null);\n Container = __decorate([\n Kbo(CToken.Container)\n ], Container);\n return Container;\n }(UiObject));\n\n var Hotspot = /** @class */ (function (_super) {\n __extends(Hotspot, _super);\n function Hotspot(kom) {\n var _this = _super.call(this, kom) || this;\n _this.$uid = _tools.Utils.shortId();\n return _this;\n }\n Hotspot = __decorate([\n Kbo(CToken.Hotspot)\n ], Hotspot);\n return Hotspot;\n }(KbObject));\n\n var KbObjectManager = /** @class */ (function () {\n function KbObjectManager() {\n this.kbObjects = {};\n this.kbObjectIds = {};\n }\n KbObjectManager.prototype.addKbObject = function (o, parent) {\n o.name = this.getUniqueName(o, o.name);\n o.$parent = parent;\n this.kbObjects[o.name.toLowerCase()] = o;\n // if this is a nested configurator, then we don't add it to the id map.\n // Reasoning being that there will be id collisions. \n // Like adding multiple instances of the same nested configurator\n // or even cloning a configurator\n if (!(ConfiguratorDI.instanceOf(o, CToken.Configurator) && parent)) {\n this.kbObjectIds[o.id] = o;\n }\n };\n KbObjectManager.prototype.removeKbObject = function (o) {\n var _this = this;\n if (o) {\n // remove all child kbObjects as well\n if (!ConfiguratorDI.instanceOf(o, CToken.Configurator)) {\n for (var prop in o) {\n if (prop.substr(0, 1) == \"$\" || prop.substr(0, 1) == \"_\")\n continue;\n if (Array.isArray(o[prop])) {\n o[prop].forEach(function (oChild) {\n if (ConfiguratorDI.instanceOf(oChild, CToken.KbObject)) {\n _this.removeKbObject(oChild);\n }\n });\n }\n }\n }\n delete this.kbObjects[o.name.toLowerCase()];\n // if this is a nested configurator, then we don't add it to the id map.\n // Reasoning being that there will be id collisions. \n // Like adding multiple instances of the same nested configurator\n // or even cloning a configurator\n //&& parent ** removed this since the function doesn't take a parent but on client this would be the window\n if (!(ConfiguratorDI.instanceOf(o, CToken.Configurator))) {\n delete this.kbObjectIds[o.id];\n }\n }\n };\n KbObjectManager.prototype.getByName = function (name, throwOnFailure) {\n if (throwOnFailure === void 0) { throwOnFailure = true; }\n var n = name ? name.toLowerCase() : name;\n var o = this.kbObjects[n];\n if (!o && throwOnFailure) {\n throw new Error(\"object with name \" + name + \" does not exist\");\n }\n return o;\n };\n KbObjectManager.prototype.get = function (id, throwOnFailure) {\n if (throwOnFailure === void 0) { throwOnFailure = true; }\n var o = this.kbObjectIds[id];\n if (!o && throwOnFailure) {\n throw new Error(\"object with id \" + id + \" does not exist\");\n }\n return o;\n };\n KbObjectManager.prototype.getByIdOrName = function (idOrName, throwOnFailure) {\n if (throwOnFailure === void 0) { throwOnFailure = true; }\n var o = this.get(idOrName, false);\n if (!o)\n o = this.getByName(idOrName, false);\n if (!o && throwOnFailure) {\n throw new Error(\"object with id or name \" + idOrName + \" does not exist\");\n }\n return o;\n };\n KbObjectManager.prototype.hasNamedObject = function (name) {\n return this.kbObjects.hasOwnProperty(name.toLowerCase());\n };\n KbObjectManager.prototype.removeKbObjectById = function (id) {\n delete this.kbObjectIds[id];\n };\n KbObjectManager.prototype.addKbObjectWithId = function (id, o) {\n this.kbObjectIds[id] = o;\n };\n KbObjectManager.prototype.removeKbObjectNameReference = function (name) {\n delete this.kbObjects[name.toLowerCase()];\n };\n KbObjectManager.prototype.addKbObjectNameReference = function (name, o) {\n this.kbObjects[name.toLowerCase()] = o;\n };\n /**\n * finds a unique name for given object in the context of the collection of kbObjects\n */\n KbObjectManager.prototype.getUniqueName = function (o, proposed) {\n var _this = this;\n var counter = 0;\n proposed = proposed || o.$type || \"Object\"; // IE does not jive with constructor.name so we need a fallback\n var name = proposed;\n var nameIsUnique = function (proposed, o) {\n return !_this.hasNamedObject(proposed.toLowerCase()) || _this.getByName(proposed) === o;\n };\n while (!nameIsUnique(name, o)) {\n counter++;\n name = proposed + counter.toString();\n }\n return name;\n };\n /**\n * clear out all of the id's and names from this instance\n */\n KbObjectManager.prototype.clear = function () {\n this.kbObjectIds = {};\n this.kbObjects = {};\n };\n KbObjectManager.prototype.create = function (token, kom) {\n var k = ConfiguratorDI.get(token);\n return new k.class(kom);\n };\n KbObjectManager.prototype.recurse = function (source, target) {\n var _this = this;\n var kom = target.$manager;\n var _loop_1 = function (prop) {\n if (source.hasOwnProperty(prop)) {\n if (Array.isArray(source[prop])) {\n if (!target[prop]) {\n target[prop] = [];\n }\n source[prop].forEach(function (sourceItem) {\n var targetItem;\n // Hack: Because method of manufacture is a dynamic type on the server-side, it is\n // problemmatic for Newtonsoft to properly assign a $type parameter.\n if (prop == \"materials\")\n sourceItem.$type = CToken.PartMaterial.key;\n if (prop == \"operations\")\n sourceItem.$type = CToken.PartOperation.key;\n if (sourceItem.$type) {\n var komArg = kom;\n if (sourceItem.$type == CToken.Configurator.key) {\n komArg = new KbObjectManager();\n }\n targetItem = _this.create(CToken.withKey(sourceItem.$type), komArg);\n target[prop].push(targetItem);\n // recurse before adding it to the $manager so that the name is already resolved\n _this.recurse(sourceItem, targetItem);\n if (ConfiguratorDI.instanceOf(targetItem, CToken.KbObject)) {\n kom.addKbObject(targetItem, target);\n }\n }\n else if (typeof sourceItem === \"object\") {\n targetItem = {};\n target[prop].push(targetItem);\n _this.recurse(sourceItem, targetItem);\n }\n else { // must be a value type\n var propDef = Object.getOwnPropertyDescriptor(target.constructor.prototype, prop);\n if (!propDef || propDef.set) { //if prop has a setter\n // Only do anything to the target if the property has a setter.\n target[prop].push(sourceItem);\n }\n }\n });\n }\n else {\n var propDef = Object.getOwnPropertyDescriptor(target.constructor.prototype, prop);\n if (prop == \"rootPartRev\")\n source[prop].$type = CToken.PartRev.key;\n if (prop == \"methodOfManufacture\")\n source[prop].$type = CToken.MethodOfManufacture.key;\n if (!propDef || propDef.set) { //if prop has a setter\n // This fixes the following bug:\n //\n // If you created two or more nested configurators that had an upload field, then uploading a file to one of them would also upload it for the other.\n // the reason for this was each upload field was referencing the same default value, which is an empty upload field. This line forces each instance\n // of an upload field to reference its own default value to break that coupling.\n if (source.$type == CToken.Field.key && source.type == exports.eFieldType.upload && prop == \"value\") {\n target[prop] = _tools.Utils.extend({}, source[prop]);\n }\n else if (source[prop] && source[prop].$type) {\n var targetItem = this_1.create(CToken.withKey(source[prop].$type), kom);\n target[prop] = targetItem;\n this_1.recurse(source[prop], targetItem);\n }\n else {\n target[prop] = source[prop];\n }\n }\n }\n }\n };\n var this_1 = this;\n for (var prop in source) {\n _loop_1(prop);\n }\n };\n return KbObjectManager;\n }());\n\n var OptionFilter = /** @class */ (function (_super) {\n __extends(OptionFilter, _super);\n function OptionFilter(kom) {\n var _this = _super.call(this, kom, { ruleType: exports.eRuleType.optionFilter }) || this;\n _this.dependsOn = [];\n _this.dependsOnThis = [];\n _this.fieldReferences = [];\n return _this;\n }\n OptionFilter = __decorate([\n Kbo(CToken.OptionFilter)\n ], OptionFilter);\n return OptionFilter;\n }(RuleContainer));\n\n var Field = /** @class */ (function (_super) {\n __extends(Field, _super);\n function Field(kom) {\n var _this = _super.call(this, kom, { ruleType: exports.eRuleType.field }) || this;\n _this.validationErrors = [];\n _this.warnings = [];\n _this.format = exports.eFormatType.none; // none, currency, percentage, number\n return _this;\n }\n Field_1 = Field;\n Object.defineProperty(Field.prototype, \"tags\", {\n get: function () {\n if (!this._tags)\n this._tags = [];\n return this._tags;\n },\n set: function (val) {\n this._tags = val;\n },\n enumerable: false,\n configurable: true\n });\n Field.prototype.convertValue = function (val) {\n return Field_1.convertToType(val, this.type, this.precision);\n };\n Field.prototype.convertForSet = function (val) {\n /* dates need special handling. Coming from json, they will be ISO strings.\n We need them to be Date objects so they play well with snap rules. But we\n can't new up a new Date() object in the field get() which is where we handle other conversions\n because it will break the binding system in angular (creates an endless digest).\n So we create the Date object in the field value setter. */\n if (this.type == exports.eFieldType.date && val && !(val instanceof Date)) {\n val = new Date(val);\n }\n if (this.type == exports.eFieldType.upload && (!val || typeof (val.path) == \"undefined\")) {\n val = {\n path: null,\n assetId: null\n };\n }\n return val;\n };\n Object.defineProperty(Field.prototype, \"value\", {\n get: function () {\n var _this = this;\n var skip = this.$parentConfigurator && this.$parentConfigurator.$freezeFieldValueCalculation && !this._dirty;\n if (!skip) {\n var val_1 = this.convertValue(this._value);\n if (this.$parentConfigurator && this.$parentConfigurator.$running && this.isValueConstrainedToOptions()) {\n if (!this.options.some(function (o) { return _this.convertValue(o.value) == val_1; })) {\n val_1 = this.options.length ? this.convertValue(this.options[0].value) : null;\n }\n }\n if (this.isArrayType() && this._value == null) {\n this._value = val_1;\n }\n this._lastCalculatedValue = val_1;\n this._dirty = false;\n }\n return this._lastCalculatedValue;\n },\n set: function (val) {\n var origValue = this.value;\n this._value = this.convertForSet(val);\n var newValue = this.value;\n if (origValue != newValue && this.$parentConfigurator) {\n this.$parentConfigurator.$fieldsDirty = true;\n this.$parentConfigurator.$fieldsDirtyForSceneRules = true;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Field.prototype, \"desiredValue\", {\n /**\n * gets the underlying value, not the one calculated by looking at the options.\n * This is needed for passing to the server when running option filters, so the option\n * filter can calculate it's own value for the field correctly and arrive at the same\n * conclusion as the client.\n */\n get: function () {\n return this._value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Field.prototype, \"formattedValue\", {\n /**\n * if the field is a number, formattedValue will return a string representation of the value formatted\n * formatted per the format_ properties on the field\n */\n get: function () {\n if (!this.value) {\n return \"\";\n }\n else if (this.type === exports.eFieldType.number) {\n var args = {\n formatType: this.format,\n currency: this.formatCurrency,\n minPrecision: this.formatMinPrecision,\n maxPrecision: this.precision,\n decimalSeparator: this.formatDecimalSeparator,\n thousandsSeparator: this.formatThousandsSeparator,\n prefix: this.formatPrefix,\n suffix: this.formatSuffix\n };\n return this.value.format(args);\n }\n else {\n return this.value.toString();\n }\n },\n enumerable: false,\n configurable: true\n });\n /** meant to work with $freezeFieldValueCalculation. Marks the field value to be recalculated the next time it's asked for */\n Field.prototype.recalculateValue = function () {\n this._dirty = true;\n };\n Object.defineProperty(Field.prototype, \"minDate\", {\n get: function () {\n return Field_1.convertToType(this._minDate, exports.eFieldType.date, 0);\n },\n set: function (val) {\n this._minDate = this.convertForSet(val);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Field.prototype, \"maxDate\", {\n get: function () {\n return Field_1.convertToType(this._maxDate, exports.eFieldType.date, 0);\n },\n set: function (val) {\n this._maxDate = this.convertForSet(val);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Field.prototype, \"options\", {\n get: function () {\n if (!this._options)\n this._options = [];\n return this._options;\n },\n set: function (val) {\n this._options = val;\n this.recalculateValue();\n },\n enumerable: false,\n configurable: true\n });\n Field.prototype.isValid = function () {\n var timing = exports.eValidationTiming.always;\n if (this.$parentConfigurator) {\n timing = this.$parentConfigurator.validationTiming;\n }\n this.$valid = (timing == exports.eValidationTiming.always || this.hasBeenTouched) ?\n (!this.validationErrors || this.validationErrors.length === 0)\n : true;\n return this.$valid;\n };\n Field.prototype.preValidate = function () {\n // clear validation errors\n this.validationErrors.clear();\n this.warnings.clear();\n // if number field\n if (this.type == exports.eFieldType.number) {\n // validate the value is btw min & max\n if (this.constrainValue && _tools.Utils.isDefined(this.min) && this.value < this.min) {\n this.addValidation({\n message: loc.validation_valuemustbegreaterthan.format(this.min.toString())\n });\n }\n if (this.constrainValue && _tools.Utils.isDefined(this.max) && this.value > this.max) {\n this.addValidation({\n message: loc.validation_valuemustbelessthan.format(this.max.toString())\n });\n }\n }\n else if (this.type == exports.eFieldType.date) {\n if (this.constrainValue && _tools.Utils.isDefined(this.minDate) && this.value < this.minDate) {\n this.addValidation({\n message: loc.validation_valuemustbegreaterthan.format(this.minDate.toDateString())\n });\n }\n if (this.constrainValue && _tools.Utils.isDefined(this.maxDate) && this.value < this.maxDate) {\n this.addValidation({\n message: loc.validation_valuemustbelessthan.format(this.maxDate.toDateString())\n });\n }\n }\n if (this.type == exports.eFieldType.text || this.type == exports.eFieldType.color || this.type == exports.eFieldType.date) {\n if (!this.value && this.required) {\n this.addValidation({\n message: loc.validation_required\n });\n }\n }\n };\n Field.prototype.validateCondition = function (condition, errorMessage, mode, fixThis) {\n if (fixThis === void 0) { fixThis = []; }\n if (!condition) {\n if (mode == \"warning\") {\n this.addValidation({ message: errorMessage, fixThisOptions: fixThis }, true);\n }\n else {\n this.addValidation({ message: errorMessage, fixThisOptions: fixThis });\n }\n }\n };\n Field.prototype.addValidation = function (msg, isWarning) {\n if (isWarning === void 0) { isWarning = false; }\n //don't add if it's a duplicate\n if (isWarning) {\n if (!this.warnings.some(function (w) { return w.message == msg.message; })) {\n if (!this.warnings)\n this.warnings = [];\n this.warnings.push(msg);\n }\n }\n else {\n if (!this.validationErrors.some(function (w) { return w.message == msg.message; })) {\n if (!this.validationErrors)\n this.validationErrors = [];\n this.validationErrors.push(msg);\n }\n }\n };\n /**\n * returns whether a field is allowed to join a select table\n */\n // TODO: This logic is copied in Field.cs... the logic should be defined in only\n // Field.cs and picked up by codegen here.\n Field.prototype.canJoinOptionFilter = function () {\n if (this.control == exports.eFieldControl.imageSelect ||\n this.control == exports.eFieldControl.select ||\n this.control == exports.eFieldControl.radio ||\n this.control == exports.eFieldControl.colorSelect ||\n this.control == exports.eFieldControl.swatchSelect ||\n this.control == exports.eFieldControl.checkbox ||\n this.control == exports.eFieldControl.toggle ||\n this.control == exports.eFieldControl.multiSelect ||\n this.control == exports.eFieldControl.imageMultiSelect ||\n this.control == exports.eFieldControl.colorMultiSelect) {\n return true;\n }\n else {\n return false;\n }\n };\n Field.prototype.isValueConstrainedToOptions = function () {\n return (this.control == exports.eFieldControl.select ||\n this.control == exports.eFieldControl.radio ||\n this.control == exports.eFieldControl.imageSelect ||\n this.control == exports.eFieldControl.colorSelect ||\n this.control == exports.eFieldControl.swatchSelect ||\n (this.control == exports.eFieldControl.checkbox &&\n this.selectSource == exports.eSelectSource.optionFilter &&\n this.idOptionFilter != null));\n };\n Field.prototype.isArrayType = function () {\n return (this.type.equalsAny(exports.eFieldType.textArray, exports.eFieldType.numberArray, exports.eFieldType.colorArray));\n };\n Field.prototype.getBaseType = function () {\n if (this.isArrayType()) {\n return this.type.substr(0, this.type.length - 5);\n }\n else {\n return this.type;\n }\n };\n Field.convertToType = function (value, toType, precision) {\n var val = value;\n if (value == null) {\n val = null;\n }\n if (toType === exports.eFieldType.number) {\n // convert to a number\n // if (typeof value == \"number\" || value instanceof Number)\n // return value;\n val = Number(value);\n // test if NaN : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN\n if (val != val) {\n val = 0;\n }\n // round to precision\n if (precision != -1) {\n val = val.rounder(precision);\n }\n }\n else if (toType === exports.eFieldType.boolean) {\n if (typeof val === \"boolean\") {\n return val;\n }\n if (typeof val === \"string\" || val instanceof String) {\n val = _tools.Utils.areEqual(val, \"true\");\n }\n else {\n val = Boolean(val);\n }\n }\n else if (toType === exports.eFieldType.date) {\n if (value != null && !(value instanceof Date)) {\n val = new Date(value);\n }\n }\n else if (toType == exports.eFieldType.textArray ||\n toType == exports.eFieldType.numberArray ||\n toType == exports.eFieldType.colorArray) {\n if (value == null) {\n val = [];\n }\n else if (!Array.isArray(value)) {\n val = [value];\n }\n // now we should have an array, make sure all items in the array are of the right type\n for (var i = 0; i < val.length; i++) {\n val[i] = Field_1.convertToType(val[i], toType.substr(0, toType.length - 5), precision);\n }\n }\n else if (toType == exports.eFieldType.upload) {\n if (value == null || typeof (value.path) == 'undefined') {\n val = {\n assetId: null,\n path: null\n };\n }\n }\n return val;\n };\n var Field_1;\n __decorate([\n Enumerable()\n ], Field.prototype, \"tags\", null);\n __decorate([\n Enumerable()\n ], Field.prototype, \"value\", null);\n __decorate([\n Enumerable()\n ], Field.prototype, \"desiredValue\", null);\n __decorate([\n Enumerable()\n ], Field.prototype, \"formattedValue\", null);\n __decorate([\n Enumerable()\n ], Field.prototype, \"minDate\", null);\n __decorate([\n Enumerable()\n ], Field.prototype, \"maxDate\", null);\n __decorate([\n Enumerable()\n ], Field.prototype, \"options\", null);\n Field = Field_1 = __decorate([\n Kbo(CToken.Field)\n ], Field);\n return Field;\n }(UiObject));\n\n var Group = /** @class */ (function (_super) {\n __extends(Group, _super);\n function Group(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(Group.prototype, \"children\", {\n get: function () {\n if (!this._children)\n this._children = [];\n return this._children;\n },\n set: function (val) {\n this._children = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Group.prototype, \"fields\", {\n /**\n * Fields array has been deprecated. This readonly property is here for\n * backwards compatibility\n */\n get: function () {\n return this.getChildrenOfType(CToken.Field);\n },\n enumerable: false,\n configurable: true\n });\n Group.prototype.addField = function () {\n var field = new Field(this.$manager);\n this.$manager.addKbObject(field, this);\n this.children.push(field);\n return field;\n };\n Group.prototype.removeField = function (field) {\n this.$manager.removeKbObject(field);\n this.children.remove(field);\n };\n Group.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children);\n };\n Group.prototype.allowedChildren = function (rootType) {\n return this.containerChildren(rootType);\n };\n Group.prototype.ignoredProperties = function () {\n return [\"fields\"];\n };\n __decorate([\n Enumerable()\n ], Group.prototype, \"children\", null);\n Group = __decorate([\n Kbo(CToken.Group)\n ], Group);\n return Group;\n }(UiObject));\n\n var Page = /** @class */ (function (_super) {\n __extends(Page, _super);\n function Page(kom) {\n var _this = _super.call(this, kom) || this;\n _this.icon = \"\";\n if (_tools.icons) {\n _this.icon = _tools.icons.page;\n }\n return _this;\n }\n Page_1 = Page;\n Object.defineProperty(Page.prototype, \"children\", {\n get: function () {\n if (!this._children)\n this._children = [];\n return this._children;\n },\n set: function (val) {\n this._children = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Page.prototype, \"groups\", {\n /**\n * Groups array has been deprecated. This readonly property is here for\n * backwards compatibility\n */\n get: function () {\n return this.getChildrenOfType(CToken.Group);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Page.prototype, \"pages\", {\n get: function () {\n if (!this._pages)\n this._pages = [];\n return this._pages;\n },\n set: function (val) {\n this._pages = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Page.prototype, \"configurators\", {\n get: function () {\n if (!this._configurators)\n this._configurators = [];\n return this._configurators;\n },\n set: function (val) {\n this._configurators = val;\n },\n enumerable: false,\n configurable: true\n });\n Page.prototype.addGroup = function () {\n var group = new Group(this.$manager);\n this.$manager.addKbObject(group, this);\n this.children.push(group);\n return group;\n };\n Page.prototype.removeGroup = function (group) {\n this.$manager.removeKbObject(group);\n this.children.remove(group);\n };\n Page.prototype.addPage = function () {\n var page = new Page_1(this.$manager);\n this.$manager.addKbObject(page, this);\n this.pages.push(page);\n return page;\n };\n Page.prototype.removePage = function (page) {\n this.$manager.removeKbObject(page);\n this.pages.remove(page);\n };\n Page.prototype.allPages = function () {\n return this.getChildrenOfType(CToken.Page);\n };\n Page.prototype.getFields = function (predicate) {\n var fields = this.getChildrenOfType(CToken.Field);\n return predicate ? fields.filter(function (f) { return predicate(f); }) : fields;\n };\n Page.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children.concat(this.pages));\n };\n Page.prototype.isValid = function () {\n var fields = this.getFields();\n var valid = !fields.some(function (f) { return !f.isValid(); });\n if (!valid) {\n this.$valid = false;\n return this.$valid;\n }\n for (var _i = 0, _a = this.configurators; _i < _a.length; _i++) {\n var config = _a[_i];\n if (!config.isValid()) {\n this.$valid = false;\n return this.$valid;\n }\n }\n var nestedSets = this.getChildrenOfType(CToken.NestedSet);\n for (var _b = 0, nestedSets_1 = nestedSets; _b < nestedSets_1.length; _b++) {\n var ns = nestedSets_1[_b];\n for (var _c = 0, _d = ns.configurators; _c < _d.length; _c++) {\n var nested = _d[_c];\n if (!nested.isValid()) {\n this.$valid = false;\n return this.$valid;\n }\n }\n }\n this.$valid = true;\n return this.$valid;\n };\n Page.prototype.allowedChildren = function (rootType) {\n var allowed = this.containerChildren(rootType);\n if (rootType == CToken.Configurator) {\n allowed.splice(0, 0, CToken.Page); //pages can have nested pages\n }\n return allowed;\n };\n Page.prototype.ignoredProperties = function () {\n return [\"groups\"];\n };\n var Page_1;\n __decorate([\n Enumerable()\n ], Page.prototype, \"children\", null);\n __decorate([\n Enumerable()\n ], Page.prototype, \"pages\", null);\n __decorate([\n Enumerable()\n ], Page.prototype, \"configurators\", null);\n Page = Page_1 = __decorate([\n Kbo(CToken.Page)\n ], Page);\n return Page;\n }(UiObject));\n\n var ReferencedConfigurator = /** @class */ (function (_super) {\n __extends(ReferencedConfigurator, _super);\n function ReferencedConfigurator(kom) {\n var _this = _super.call(this, kom) || this;\n _this.ruleContainers = [];\n _this.userCanAddTo = [];\n return _this;\n }\n ReferencedConfigurator.prototype.removeRuleContainer = function (rc) {\n this.$manager.removeKbObject(rc);\n this.ruleContainers.remove(rc);\n };\n ReferencedConfigurator = __decorate([\n Kbo(CToken.ReferencedConfigurator)\n ], ReferencedConfigurator);\n return ReferencedConfigurator;\n }(KbObject));\n\n var Configurator = /** @class */ (function (_super) {\n __extends(Configurator, _super);\n function Configurator(kom, obj) {\n var _this = _super.call(this, kom) || this;\n _this.autoValidation = true;\n /**\n * whether mouse over effects are enabled in the scene viewer\n */\n _this.mouseOverEffects = true;\n /**\n * the color that will be used for the emissive property of the mouse over materials\n */\n _this.mouseOverColor = '#131313';\n /**\n * when true, images in the scene will be prefetched to speed up performance of switching images/materials\n */\n _this.prefetchImages = true;\n /**\n * convienence property set by the configurator view to determine if the loaded rule had been\n * run for this configurator to prevent \"double loading\"\n */\n _this.$ranLoadedRule = false;\n _this._viewerMode = exports.eViewerMode.none;\n kom.recurse(obj, _this);\n _this.$fieldsDirty = false; // reset fields dirty after the recurse\n _this.$fieldsDirtyForSceneRules = true;\n _this.$manager.addKbObject(_this, undefined);\n _this.$rulesNode = { id: _this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: function () { return [CToken.RuleContainer]; }, getParent: function () { return _this; } };\n _this.$actionsNode = { id: _this.id + \"_actions\", $type: \"ActionsNode\", allowedChildren: function () { return [CToken.ConfiguratorAction]; }, getParent: function () { return _this; } };\n _this.$functionsNode = { id: _this.id + \"functions\", $type: \"FunctionsNode\", allowedChildren: function () { return [CToken.ConfiguratorFunction]; }, getParent: function () { return _this; } };\n _this.$optionFiltersNode = { id: _this.id + \"_filters\", $type: \"OptionFiltersNode\", allowedChildren: function () { return [CToken.OptionFilter]; }, getParent: function () { return _this; } };\n _this.$referencedConfiguratorsNode = { id: _this.id + \"_refConfigs\", $type: \"ReferencedConfiguratorsNode\", allowedChildren: function () { return [CToken.ReferencedConfigurator]; }, getParent: function () { return _this; } };\n _this.$buildsNode = { id: _this.id + \"_builds\", $type: \"BuildsNode\", allowedChildren: function () { return [CToken.Build]; }, getParent: function () { return _this; } };\n _this.$hotspotsNode = { id: _this.id + \"_hotspots\", $type: \"HotspotsNode\", allowedChildren: function () { return [CToken.Hotspot]; }, getParent: function () { return _this; } };\n return _this;\n }\n Configurator_1 = Configurator;\n Object.defineProperty(Configurator.prototype, \"layoutSettings\", {\n get: function () {\n if (!this._layoutSettings)\n this._layoutSettings = [];\n return this._layoutSettings;\n },\n set: function (val) {\n this._layoutSettings = val;\n },\n enumerable: false,\n configurable: true\n });\n Configurator.prototype.allowedChildren = function (rootType) {\n return [CToken.Page];\n };\n Object.defineProperty(Configurator.prototype, \"viewerMode\", {\n get: function () {\n return this._viewerMode;\n },\n set: function (val) {\n this.setProperty('viewerMode', val);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"idScene\", {\n get: function () {\n return this._idScene;\n },\n set: function (val) {\n this.setProperty('idScene', val);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"pages\", {\n get: function () {\n if (!this._pages)\n this._pages = [];\n return this._pages;\n },\n set: function (val) {\n this._pages = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"builds\", {\n get: function () {\n if (!this._builds)\n this._builds = [];\n return this._builds;\n },\n set: function (val) {\n this._builds = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"optionFilters\", {\n get: function () {\n if (!this._optionFilters)\n this._optionFilters = [];\n return this._optionFilters;\n },\n set: function (val) {\n this._optionFilters = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"configurators\", {\n get: function () {\n if (!this._configurators)\n this._configurators = [];\n return this._configurators;\n },\n set: function (val) {\n this._configurators = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"referencedConfigurators\", {\n get: function () {\n if (!this._referencedConfigurators)\n this._referencedConfigurators = [];\n return this._referencedConfigurators;\n },\n set: function (val) {\n this._referencedConfigurators = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"referencedScenes\", {\n get: function () {\n if (!this._referencedScenes)\n this._referencedScenes = [];\n return this._referencedScenes;\n },\n set: function (val) {\n this._referencedScenes = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"actions\", {\n get: function () {\n if (!this._actions)\n this._actions = [];\n return this._actions;\n },\n set: function (val) {\n this._actions = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"functions\", {\n get: function () {\n if (!this._functions)\n this._functions = [];\n return this._functions;\n },\n set: function (val) {\n this._functions = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"hotspots\", {\n get: function () {\n if (!this._hotspots)\n this._hotspots = [];\n return this._hotspots;\n },\n set: function (val) {\n this._hotspots = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"ruleContainers\", {\n get: function () {\n if (!this._ruleContainers)\n this._ruleContainers = [];\n return this._ruleContainers;\n },\n set: function (val) {\n this._ruleContainers = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Configurator.prototype, \"layoutContents\", {\n get: function () {\n if (!this._layoutContents)\n this._layoutContents = [];\n return this._layoutContents;\n },\n set: function (val) {\n this._layoutContents = val;\n },\n enumerable: false,\n configurable: true\n });\n Configurator.prototype.isNested = function () {\n return !!this.$parent;\n };\n Configurator.prototype.allPages = function () {\n return this.getChildrenOfType(CToken.Page);\n };\n Configurator.prototype.allGroups = function () {\n return this.getChildrenOfType(CToken.Group);\n };\n /**\n *\n * @param token Gets all the UI children of the given types.\n * @param allChildren\n */\n Configurator.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children.concat(this.pages).concat(this.layoutContents.selectMany(function (lc) { return lc.children; })) //get layout contents children, but not the layout contents themselves\n );\n };\n Configurator.prototype.allRuleContainers = function () {\n return this.ruleContainers\n .concat(this.actions)\n .concat(this.optionFilters)\n .concat(this.getFields())\n .concat(this.getOutputs());\n };\n Configurator.prototype.addPage = function () {\n var page = new Page(this.$manager);\n this.$manager.addKbObject(page, this);\n this.pages.push(page);\n return page;\n };\n Configurator.prototype.removePage = function (page) {\n this.$manager.removeKbObject(page);\n this.pages.remove(page);\n };\n Configurator.prototype.addAction = function () {\n var action = new ConfiguratorAction(this.$manager);\n this.$manager.addKbObject(action, this);\n this.actions.push(action);\n return action;\n };\n Configurator.prototype.removeAction = function (action) {\n this.$manager.removeKbObject(action);\n this.actions.remove(action);\n };\n Configurator.prototype.addFunction = function () {\n var f = new ConfiguratorFunction(this.$manager);\n f.name = 'Function';\n this.$manager.addKbObject(f, this);\n this.functions.push(f);\n return f;\n };\n Configurator.prototype.removeFunction = function (f) {\n this.$manager.removeKbObject(f);\n this.functions.remove(f);\n };\n Configurator.prototype.addOptionFilter = function () {\n var st = new OptionFilter(this.$manager);\n this.$manager.addKbObject(st, this);\n this.optionFilters.push(st);\n return st;\n };\n Configurator.prototype.removeOptionFilter = function (optionFilter) {\n this.$manager.removeKbObject(optionFilter);\n this.optionFilters.remove(optionFilter);\n };\n Configurator.prototype.removeRuleContainer = function (rc) {\n this.$manager.removeKbObject(rc);\n this.ruleContainers.remove(rc);\n };\n Configurator.prototype.addHotspot = function () {\n var ann = new Hotspot(this.$manager);\n this.$manager.addKbObject(ann, this);\n this.hotspots.push(ann);\n return ann;\n };\n Configurator.prototype.removeHotspot = function (ann) {\n this.$manager.removeKbObject(ann);\n this.hotspots.remove(ann);\n };\n Configurator.prototype.addBuild = function (buildType) {\n var build;\n // we should only have one buildtype in a configurator\n var exists = this.builds.some(function (b) { return b.idBuildType == buildType.id; });\n if (!exists) {\n build = new Build(this.$manager);\n build.idBuildType = buildType.id;\n build.name = buildType.name;\n this.$manager.addKbObject(build, this);\n this.builds.push(build);\n }\n return build;\n };\n Configurator.prototype.removeBuild = function (build) {\n this.$manager.removeKbObject(build);\n this.builds.remove(build);\n };\n Configurator.prototype.addReferencedConfigurator = function (idProduct) {\n var rc = this.referencedConfigurators.find(function (rc) { return rc.idProduct == idProduct; });\n if (!rc) {\n rc = new ReferencedConfigurator(this.$manager);\n rc.idProduct = idProduct;\n this.referencedConfigurators.push(rc);\n this.$manager.addKbObject(rc, this);\n }\n return rc;\n };\n Configurator.prototype.removeReferencedConfigurator = function (rc) {\n this.$manager.removeKbObject(rc);\n this.referencedConfigurators.remove(rc);\n };\n Configurator.prototype.addReferencedScene = function (idScene) {\n if (!this.referencedScenes.find(function (rs) { return rs == idScene; })) {\n this.referencedScenes.push(idScene);\n }\n };\n Configurator.prototype.removeReferencedScene = function (rs) {\n this.referencedScenes.remove(rs);\n };\n Configurator.prototype.getNestedConfigurators = function () {\n var result = [];\n this.configurators.forEach(function (n) { return result.push(n); });\n this.allPages().forEach(function (p) {\n p.configurators.forEach(function (n) {\n result.push(n);\n });\n });\n this.getChildrenOfType(CToken.NestedSet).forEach(function (ns) {\n ns.configurators.forEach(function (n) {\n result.push(n);\n });\n });\n return result;\n };\n /**\n * get's all configurators, including children of children, etc.\n */\n Configurator.prototype.getAllConfigurators = function () {\n var allNested = [];\n var addToNested = function (config) {\n var nestedConfigs = config.getNestedConfigurators();\n allNested.pushArray(nestedConfigs);\n nestedConfigs.forEach(function (n) { return addToNested(n); });\n };\n addToNested(this);\n return allNested;\n };\n Configurator.prototype.hasRule = function (ruleType) {\n var rc = this.ruleContainers.find(function (rc) {\n return rc.ruleType.isEqual(ruleType);\n });\n return rc != null && rc.js && rc.js.length > 0;\n };\n /**\n * gets a concatinated javascript rule for the specified rule type\n */\n Configurator.prototype.getRuleJs = function (ruleType) {\n var rc = this.ruleContainers.find(function (rc) {\n return rc.ruleType.isEqual(ruleType);\n });\n return rc ? this.getRuleJsFromContainer(rc) : '';\n };\n Configurator.prototype.getRuleJsFromContainer = function (ruleContainer) {\n // global rule should always be included\n var globalRc = this.ruleContainers.find(function (rc) { return rc.ruleType.isEqual(exports.eRuleType.global); });\n var globalJs = globalRc ? globalRc.js + '\\n\\n' : '';\n return globalJs + ruleContainer.js;\n };\n Configurator.prototype.preValidate = function () {\n this.getFields().forEach(function (field) { return field.preValidate(); });\n };\n Configurator.prototype.isValid = function () {\n var v = true;\n for (var _i = 0, _a = this.pages; _i < _a.length; _i++) {\n var page = _a[_i];\n if (!page.isValid()) {\n v = false;\n }\n }\n for (var _b = 0, _c = this.configurators; _b < _c.length; _b++) {\n var config = _c[_b];\n if (!config.isValid()) {\n v = false;\n }\n }\n this.$valid = v;\n return this.$valid;\n };\n /**\n * Sets field values based on an object whose properties are field names and values are the field values to set\n */\n Configurator.prototype.setFields = function (fields) {\n for (var prop in fields) {\n if (fields.hasOwnProperty(prop)) {\n var field = this.$manager.getByIdOrName(prop, false);\n if (field) {\n field.value = fields[prop];\n }\n }\n }\n };\n Configurator.prototype.getOutputs = function (predicate) {\n var result = [];\n var process = function (o) {\n if (predicate) {\n if (predicate(o)) {\n result.push(o);\n }\n }\n else {\n result.push(o);\n }\n };\n this.builds.forEach(function (b) {\n b.outputs.forEach(function (o) {\n process(o);\n if (ConfiguratorDI.instanceOf(o, CToken.CadOutput)) {\n o.drawings.forEach(process);\n }\n });\n });\n return result;\n };\n Configurator.prototype.getExports = function (predicate) {\n var exports = [];\n var outputs = this.getOutputs();\n for (var _i = 0, outputs_1 = outputs; _i < outputs_1.length; _i++) {\n var o = outputs_1[_i];\n for (var _a = 0, _b = o.exports; _a < _b.length; _a++) {\n var exp = _b[_a];\n if ((predicate && predicate(exp)) || !predicate) {\n exports.push(exp);\n }\n }\n }\n return exports;\n };\n Configurator.prototype.getFields = function (predicate) {\n var fields = this.getChildrenOfType(CToken.Field);\n return predicate ? fields.filter(function (f) { return predicate(f); }) : fields;\n };\n Configurator.prototype.getGroups = function (predicate) {\n var groups = this.getChildrenOfType(CToken.Group);\n return predicate ? groups.filter(function (g) { return predicate(g); }) : groups;\n };\n Configurator.prototype.getFieldsObject = function () {\n var fields = this.getFields();\n var o = {};\n fields.forEach(function (field) {\n o[field.name] = field.value;\n });\n return o;\n };\n Configurator.prototype.runConfiguredProduct = function (configProduct, productDb) {\n var _this = this;\n if (configProduct.fields) {\n configProduct.fields.forEach(function (fieldRec) {\n var field = _this.$manager.get(fieldRec.id, false);\n if (!field)\n field = _this.$manager.getByName(fieldRec.name, false);\n if (field && field.$type == CToken.Field.key) {\n if (field.type == exports.eFieldType.text || field.type == exports.eFieldType.color) {\n field.value = fieldRec.stringValue;\n }\n else if (field.type == exports.eFieldType.number) {\n field.value = fieldRec.numberValue;\n }\n else if (field.type == exports.eFieldType.boolean) {\n field.value = fieldRec.booleanValue;\n }\n else if (field.type == exports.eFieldType.date) {\n field.value = fieldRec.dateValue;\n }\n else if (field.type == exports.eFieldType.upload) {\n field.value = fieldRec.uploadValue;\n }\n else if (field.type == exports.eFieldType.textArray || field.type == exports.eFieldType.colorArray) {\n field.value = fieldRec.stringArrayValue;\n }\n else if (field.type == exports.eFieldType.numberArray) {\n field.value = fieldRec.numberArrayValue;\n }\n else {\n throw new Error('not implemented');\n }\n // } else if (field.type == eFieldType.date) {\n // field.value = (fieldRec).dateValue;\n // } else if (field.type == eFieldType.object) {\n // field.value = (fieldRec).objectValue;\n // } else if (field.type == eFieldType.array) {\n // throw \"not implemented\";\n // }\n }\n });\n }\n if (configProduct.configurators) {\n configProduct.configurators.forEach(function (nestRec) {\n var parent = _this.$manager.get(nestRec.idParent, false) || _this;\n var nested = parent.configurators.find(function (c) { return c.name.isEqual(nestRec.name); });\n if (!nested) {\n nested = new Configurator_1(new KbObjectManager(), productDb[nestRec.idProduct].configurator);\n nested.$running = _this.$running;\n nested.name = nestRec.name;\n parent.configurators.push(nested);\n _this.$manager.addKbObject(nested, parent);\n nested.addedByUser = nestRec.addedByUser;\n nested.allowUserToRemove = nestRec.allowUserToRemove;\n }\n nested.runConfiguredProduct(nestRec, productDb);\n });\n }\n };\n /**\n * gets the configured product of the configurator. WithDesiredValues should only be\n * set to true when sending to the server to run option filters. It sends the desiredValue of the fields\n * as opposed to the calculated value based on options.\n * @param withDesiredValues\n */\n Configurator.prototype.getConfiguredProduct = function (withDesiredValues) {\n if (withDesiredValues === void 0) { withDesiredValues = false; }\n var getFieldValue = function (field) {\n if (withDesiredValues && field.idOptionFilter && field.canJoinOptionFilter()) {\n return field.desiredValue;\n }\n else {\n return field.value;\n }\n };\n var configProduct = {\n configurators: [],\n fields: [],\n name: this.name,\n entityType: this.entityType,\n idProduct: this.idProduct,\n idQuoteHeader: this.idQuoteHeader,\n addedByUser: this.addedByUser,\n allowUserToRemove: this.allowUserToRemove,\n idParent: this.$parent && this.$parent.id,\n idScene: this.idScene,\n validationMessages: [],\n parameters: this.parameters,\n };\n this.getFields().forEach(function (field) {\n var fieldRec = {\n id: field.id,\n name: field.name,\n };\n configProduct.fields.push(fieldRec);\n if (field.type == exports.eFieldType.text || field.type == exports.eFieldType.color) {\n fieldRec.stringValue = getFieldValue(field);\n }\n else if (field.type == exports.eFieldType.number) {\n fieldRec.numberValue = getFieldValue(field);\n }\n else if (field.type == exports.eFieldType.boolean) {\n fieldRec.booleanValue = getFieldValue(field);\n }\n else if (field.type == exports.eFieldType.date) {\n fieldRec.dateValue = getFieldValue(field);\n }\n else if (field.type == exports.eFieldType.upload) {\n fieldRec.uploadValue = getFieldValue(field);\n }\n else if (field.type == exports.eFieldType.textArray || field.type == exports.eFieldType.colorArray) {\n fieldRec.stringArrayValue = getFieldValue(field);\n }\n else if (field.type == exports.eFieldType.numberArray) {\n fieldRec.numberArrayValue = getFieldValue(field);\n }\n else {\n throw new Error('not implemented');\n }\n field.validationErrors.forEach(function (err) {\n configProduct.validationMessages.push({\n messageType: exports.eValidationType.error,\n object: { id: field.id, name: field.$label },\n message: err.message,\n });\n });\n field.warnings.forEach(function (warn) {\n configProduct.validationMessages.push({\n messageType: exports.eValidationType.warning,\n object: { id: field.id, name: field.$label },\n message: warn.message,\n });\n });\n // } else if (field.type == eFieldType.date) {\n // (fieldRec).dateValue = field.value;\n // } else if (field.type == eFieldType.object) {\n // (fieldRec).objectValue = field.value;\n // } else if (field.type == eFieldType.array) {\n // throw \"not implemented\";\n // }\n });\n this.getNestedConfigurators().forEach(function (nested) {\n var configuredNested = nested.getConfiguredProduct(withDesiredValues);\n configProduct.configurators.push(configuredNested);\n });\n return configProduct;\n };\n Configurator.prototype.filtersShouldRunOnClient = function () {\n return !(this.optionFilters.some(function (o) { return o.source == exports.eOptionFilterSource.database; }) ||\n this.optionFilters.some(function (o) { return o.source == exports.eOptionFilterSource.safeFunction; }) ||\n this.optionFilters.some(function (o) { return o.source == exports.eOptionFilterSource.query && o.queryMode == exports.eQueryMode.database; }));\n };\n Configurator.prototype.getPartMaterial = function (mtlPartNum, methodOfManufacture) {\n if (methodOfManufacture === void 0) { methodOfManufacture = null; }\n var result = null;\n var recurse = function (material) {\n if (result)\n return;\n if (material.mtlPartNum == mtlPartNum)\n result = material;\n if (material.materials) {\n for (var i in material.materials) {\n recurse(material.materials[i]);\n }\n }\n };\n if (!methodOfManufacture)\n methodOfManufacture = this.methodOfManufacture.rootPartRev;\n if (methodOfManufacture.partNum == mtlPartNum || methodOfManufacture.mtlPartNum == mtlPartNum)\n return methodOfManufacture;\n for (var i in methodOfManufacture.materials) {\n recurse(methodOfManufacture.materials[i]);\n }\n return result;\n };\n Configurator.prototype.getPartOperation = function (opCode, methodOfManufacture) {\n if (methodOfManufacture === void 0) { methodOfManufacture = null; }\n var result = null;\n var recurse = function (material) {\n if (result)\n return;\n for (var i in material.operations) {\n if (material.operations[i].opCode == opCode)\n result = material.operations[i];\n }\n if (material.materials) {\n for (var i in material.materials) {\n recurse(material.materials[i]);\n }\n }\n };\n if (!methodOfManufacture)\n methodOfManufacture = this.methodOfManufacture.rootPartRev;\n for (var i in methodOfManufacture.operations) {\n if (methodOfManufacture.operations[i].opCode == opCode)\n result = methodOfManufacture.operations[i];\n }\n for (var i in methodOfManufacture.materials) {\n recurse(methodOfManufacture.materials[i]);\n }\n return result;\n };\n Configurator.prototype.getPartOperationDetail = function (id, methodOfManufacture) {\n if (methodOfManufacture === void 0) { methodOfManufacture = null; }\n var result = null;\n var recurse = function (material) {\n if (result)\n return;\n for (var i in material.operations) {\n for (var j in material.operations[i]) {\n var opDtl = material.operations[i].operationDetails[j];\n if (opDtl.resourceID == id || opDtl.resourceGrpID == id)\n result = opDtl;\n }\n }\n if (material.materials) {\n for (var i in material.materials) {\n recurse(material.materials[i]);\n }\n }\n };\n if (!methodOfManufacture)\n methodOfManufacture = this.methodOfManufacture.rootPartRev;\n for (var i in methodOfManufacture.operations) {\n for (var j in methodOfManufacture.operations[i].operationDetails) {\n var opDtl = methodOfManufacture.operations[i].operationDetails[j];\n if (opDtl.resourceID == id || opDtl.resourceGrpID == id)\n result = opDtl;\n }\n }\n for (var i in methodOfManufacture.materials) {\n recurse(methodOfManufacture.materials[i]);\n }\n return result;\n };\n var Configurator_1;\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"layoutSettings\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"viewerMode\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"idScene\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"pages\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"builds\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"optionFilters\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"configurators\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"referencedConfigurators\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"referencedScenes\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"actions\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"functions\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"hotspots\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"ruleContainers\", null);\n __decorate([\n Enumerable()\n ], Configurator.prototype, \"layoutContents\", null);\n Configurator = Configurator_1 = __decorate([\n Kbo(CToken.Configurator)\n ], Configurator);\n return Configurator;\n }(Container));\n\n var DropdownButton = /** @class */ (function (_super) {\n __extends(DropdownButton, _super);\n function DropdownButton(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(DropdownButton.prototype, \"buttons\", {\n get: function () {\n if (!this._buttons)\n this._buttons = [];\n return this._buttons;\n },\n set: function (val) {\n this._buttons = val;\n },\n enumerable: false,\n configurable: true\n });\n DropdownButton.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.buttons);\n };\n DropdownButton.prototype.allowedChildren = function (rootType) {\n return [\n CToken.Button\n ];\n };\n __decorate([\n Enumerable()\n ], DropdownButton.prototype, \"buttons\", null);\n DropdownButton = __decorate([\n Kbo(CToken.DropdownButton)\n ], DropdownButton);\n return DropdownButton;\n }(Button));\n\n var Expander = /** @class */ (function (_super) {\n __extends(Expander, _super);\n function Expander(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(Expander.prototype, \"children\", {\n get: function () {\n if (!this._children)\n this._children = [];\n return this._children;\n },\n set: function (val) {\n this._children = val;\n },\n enumerable: false,\n configurable: true\n });\n Expander.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children);\n };\n Expander.prototype.allowedChildren = function (rootType) {\n var c = this.containerChildren(rootType);\n c.removeWhere(function (c) { return c.key.equalsAny(//don't allow expanders in expanders\n CToken.Accordion.key, CToken.Expander.key); });\n return c;\n };\n __decorate([\n Enumerable()\n ], Expander.prototype, \"children\", null);\n Expander = __decorate([\n Kbo(CToken.Expander)\n ], Expander);\n return Expander;\n }(UiObject));\n\n var GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(GridColumn.prototype, \"children\", {\n get: function () {\n if (!this._children)\n this._children = [];\n return this._children;\n },\n set: function (val) {\n this._children = val;\n },\n enumerable: false,\n configurable: true\n });\n GridColumn.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children);\n };\n GridColumn.prototype.allowedChildren = function (rootType) {\n return this.containerChildren(rootType);\n };\n __decorate([\n Enumerable()\n ], GridColumn.prototype, \"children\", null);\n GridColumn = __decorate([\n Kbo(CToken.GridColumn)\n ], GridColumn);\n return GridColumn;\n }(UiObject));\n\n var GridRow = /** @class */ (function (_super) {\n __extends(GridRow, _super);\n function GridRow(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(GridRow.prototype, \"columns\", {\n get: function () {\n if (!this._columns)\n this._columns = [];\n return this._columns;\n },\n set: function (val) {\n this._columns = val;\n },\n enumerable: false,\n configurable: true\n });\n // public visible: boolean;\n GridRow.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.columns);\n };\n GridRow.prototype.allowedChildren = function (rootType) {\n // implement in derived classes\n return [\n CToken.GridColumn\n ];\n };\n __decorate([\n Enumerable()\n ], GridRow.prototype, \"columns\", null);\n GridRow = __decorate([\n Kbo(CToken.GridRow)\n ], GridRow);\n return GridRow;\n }(UiObject));\n\n var Html = /** @class */ (function (_super) {\n __extends(Html, _super);\n function Html(kom) {\n return _super.call(this, kom) || this;\n }\n Html = __decorate([\n Kbo(CToken.Html)\n ], Html);\n return Html;\n }(UiObject));\n\n var LayoutConfig = /** @class */ (function (_super) {\n __extends(LayoutConfig, _super);\n function LayoutConfig(kom, obj) {\n var _this = _super.call(this, kom) || this;\n kom.recurse(obj, _this);\n _this.$manager.addKbObject(_this, undefined);\n _this.$layoutSettingsDirty = false; // reset fields dirty after the recurse\n _this.$rulesNode = { id: _this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: function () { return [CToken.Rule]; }, getParent: function () { return _this; } };\n _this.$settingsNode = { id: _this.id + \"_settings\", $type: \"SettingsNode\", allowedChildren: function () { return []; }, getParent: function () { return _this; } };\n return _this;\n }\n Object.defineProperty(LayoutConfig.prototype, \"ruleContainers\", {\n get: function () {\n if (!this._ruleContainers)\n this._ruleContainers = [];\n return this._ruleContainers;\n },\n set: function (val) {\n this._ruleContainers = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LayoutConfig.prototype, \"settings\", {\n get: function () {\n if (!this._settings)\n this._settings = [];\n return this._settings;\n },\n set: function (val) {\n this._settings = val;\n },\n enumerable: false,\n configurable: true\n });\n LayoutConfig.prototype.filterChildren = function (tokens, allChildren) {\n var list = [];\n var _loop_1 = function (c) {\n if (!tokens.length || tokens.some(function (t) { return ConfiguratorDI.instanceOf(c, t); })) {\n list.push(c);\n }\n c.getChildrenOfType.apply(c, tokens).forEach(function (c2) { return list.push(c2); });\n };\n for (var _i = 0, allChildren_1 = allChildren; _i < allChildren_1.length; _i++) {\n var c = allChildren_1[_i];\n _loop_1(c);\n }\n return list;\n };\n /**\n *\n * @param token Gets all the UI children of the given types.\n * @param allChildren\n */\n LayoutConfig.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children);\n };\n LayoutConfig.prototype.hasRule = function (ruleType) {\n var rc = this.ruleContainers.find(function (rc) {\n return rc.ruleType.isEqual(ruleType);\n });\n return (rc != null && rc.js && rc.js.length > 0);\n };\n /**\n * gets a concatinated javascript rule for the specified rule type\n */\n LayoutConfig.prototype.getRuleJs = function (ruleType) {\n var rc = this.ruleContainers.find(function (rc) {\n return rc.ruleType.isEqual(ruleType);\n });\n return rc ? this.getRuleJsFromContainer(rc) : \"\";\n };\n LayoutConfig.prototype.getRuleJsFromContainer = function (ruleContainer) {\n // global rule should always be included\n var globalRc = this.ruleContainers.find(function (rc) { return rc.ruleType.isEqual(exports.eRuleType.global); });\n var globalJs = globalRc ? globalRc.js + \"\\n\\n\" : \"\";\n return globalJs + ruleContainer.js;\n };\n LayoutConfig.prototype.addSettingsGroup = function () {\n var g = new Group(this.$manager);\n this.$manager.addKbObject(g, this);\n this.settings.push(g);\n return g;\n };\n LayoutConfig.prototype.removeSettingsGroup = function (g) {\n this.$manager.removeKbObject(g);\n this.settings.remove(g);\n };\n LayoutConfig.prototype.addSettingsField = function (group) {\n var f = new Field(this.$manager);\n this.$manager.addKbObject(f, group);\n group.children.push(f);\n return f;\n };\n LayoutConfig.prototype.removeSettingsField = function (f) {\n this.$manager.removeKbObject(f);\n f.$parent.children.remove(f);\n };\n LayoutConfig.prototype.removeRuleContainer = function (rc) {\n this.$manager.removeKbObject(rc);\n this.ruleContainers.remove(rc);\n };\n /**\n * returns a flat array of the layout children that are\n * content containers meant for consumers to fill in with content\n */\n LayoutConfig.prototype.getContentContainers = function () {\n return this.getChildrenOfType(CToken.Container, CToken.PageControl).filter(function (c) { return !ConfiguratorDI.instanceOf(c, CToken.Container) || c.isPlaceholder; });\n };\n __decorate([\n Enumerable()\n ], LayoutConfig.prototype, \"ruleContainers\", null);\n __decorate([\n Enumerable()\n ], LayoutConfig.prototype, \"settings\", null);\n LayoutConfig = __decorate([\n Kbo(CToken.LayoutConfig)\n ], LayoutConfig);\n return LayoutConfig;\n }(Container));\n\n var LayoutContent = /** @class */ (function (_super) {\n __extends(LayoutContent, _super);\n function LayoutContent(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(LayoutContent.prototype, \"children\", {\n get: function () {\n if (!this._children)\n this._children = [];\n return this._children;\n },\n set: function (val) {\n this._children = val;\n },\n enumerable: false,\n configurable: true\n });\n LayoutContent.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children);\n };\n LayoutContent.prototype.allowedChildren = function (rootType) {\n if (rootType == CToken.Configurator && this.contentType == CToken.Container.key) {\n return this.containerChildren(rootType);\n }\n else {\n return [];\n }\n };\n __decorate([\n Enumerable()\n ], LayoutContent.prototype, \"children\", null);\n LayoutContent = __decorate([\n Kbo(CToken.LayoutContent)\n ], LayoutContent);\n return LayoutContent;\n }(UiObject));\n\n var Media = /** @class */ (function (_super) {\n __extends(Media, _super);\n function Media(kom) {\n return _super.call(this, kom) || this;\n }\n Media = __decorate([\n Kbo(CToken.Media)\n ], Media);\n return Media;\n }(UiObject));\n\n var PartRev = /** @class */ (function (_super) {\n __extends(PartRev, _super);\n function PartRev(kom, data) {\n var _this = _super.call(this, kom) || this;\n _this._metadata = {};\n _this.$materialsNode = { id: _this.id + \"_materials\", $type: \"MaterialsNode\", allowedChildren: function () { return [CToken.PartMaterial]; }, getParent: function () { return _this; } };\n _this.$operationsNode = { id: _this.id + \"_operations\", $type: \"OperationsNode\", allowedChildren: function () { return [CToken.PartOperation]; }, getParent: function () { return _this; } };\n _this._metadata = {};\n for (var key in data) {\n var value = data[key];\n if (!Array.isArray(value))\n _this[key] = value;\n }\n return _this;\n }\n PartRev.getMetadataProperties = function () {\n return [];\n };\n Object.defineProperty(PartRev.prototype, \"materials\", {\n get: function () {\n if (!this._materials)\n this._materials = [];\n return this._materials;\n },\n set: function (val) {\n this._materials = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PartRev.prototype, \"operations\", {\n get: function () {\n if (!this._operations)\n this._operations = [];\n return this._operations;\n },\n set: function (val) {\n this._operations = val;\n },\n enumerable: false,\n configurable: true\n });\n PartRev.prototype.getIdentifyingProperty = function () {\n return \"partNum\";\n };\n __decorate([\n Enumerable()\n ], PartRev.prototype, \"materials\", null);\n __decorate([\n Enumerable()\n ], PartRev.prototype, \"operations\", null);\n PartRev = __decorate([\n Kbo(CToken.PartRev)\n ], PartRev);\n return PartRev;\n }(KbObject));\n\n var MethodOfManufacture = /** @class */ (function (_super) {\n __extends(MethodOfManufacture, _super);\n function MethodOfManufacture(kom) {\n var _this = _super.call(this, kom) || this;\n _this.rootPartRev = new PartRev(kom, { partNum: \"Part Revision\" });\n _this.ruleType = exports.eRuleType.manufacture;\n _this.$rulesNode = { id: _this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: function () { return [CToken.Rule]; }, getParent: function () { return _this; } };\n return _this;\n }\n MethodOfManufacture = __decorate([\n Kbo(CToken.MethodOfManufacture)\n ], MethodOfManufacture);\n return MethodOfManufacture;\n }(RuleContainer));\n\n var NestedSet = /** @class */ (function (_super) {\n __extends(NestedSet, _super);\n function NestedSet(kom) {\n return _super.call(this, kom, { ruleType: exports.eRuleType.nestedSetSelected }) || this;\n }\n Object.defineProperty(NestedSet.prototype, \"configurators\", {\n get: function () {\n if (!this._configurators)\n this._configurators = [];\n return this._configurators;\n },\n set: function (val) {\n this._configurators = val;\n },\n enumerable: false,\n configurable: true\n });\n __decorate([\n Enumerable()\n ], NestedSet.prototype, \"configurators\", null);\n NestedSet = __decorate([\n Kbo(CToken.NestedSet)\n ], NestedSet);\n return NestedSet;\n }(UiObject));\n\n var Option = /** @class */ (function () {\n function Option() {\n }\n Option = __decorate([\n Kbo(CToken.Option)\n ], Option);\n return Option;\n }());\n\n var OutputField = /** @class */ (function (_super) {\n __extends(OutputField, _super);\n function OutputField(kom) {\n return _super.call(this, kom) || this;\n }\n /**\n * OBSOLETE - use ConfiguratorDI.getNewOutputField instead\n * This is here for backwards compatibility\n * @param fieldType\n * @param kom\n * @param args\n */\n OutputField.getNewOutputFieldOfType = function (fieldType, kom, args) {\n return ConfiguratorDI.getNewOutputField(fieldType, kom, args);\n };\n OutputField = __decorate([\n Kbo(CToken.OutputField)\n ], OutputField);\n return OutputField;\n }(KbObject));\n\n var CadAnnotationField = /** @class */ (function (_super) {\n __extends(CadAnnotationField, _super);\n function CadAnnotationField(kom) {\n return _super.call(this, kom) || this;\n }\n CadAnnotationField = __decorate([\n KboOutputField(CToken.CadAnnotationField, exports.eOutputFieldType.cadAnnotation)\n ], CadAnnotationField);\n return CadAnnotationField;\n }(OutputField));\n\n var CadBlockArrayField = /** @class */ (function (_super) {\n __extends(CadBlockArrayField, _super);\n function CadBlockArrayField(kom) {\n return _super.call(this, kom) || this;\n }\n CadBlockArrayField = __decorate([\n KboOutputField(CToken.CadBlockArrayField, exports.eOutputFieldType.cadBlockArray)\n ], CadBlockArrayField);\n return CadBlockArrayField;\n }(OutputField));\n\n var CadBlockField = /** @class */ (function (_super) {\n __extends(CadBlockField, _super);\n function CadBlockField(kom) {\n return _super.call(this, kom) || this;\n }\n CadBlockField = __decorate([\n KboOutputField(CToken.CadBlockField, exports.eOutputFieldType.cadBlock)\n ], CadBlockField);\n return CadBlockField;\n }(OutputField));\n\n var CadComponentField = /** @class */ (function (_super) {\n __extends(CadComponentField, _super);\n function CadComponentField(kom) {\n return _super.call(this, kom) || this;\n }\n CadComponentField = __decorate([\n KboOutputField(CToken.CadComponentField, exports.eOutputFieldType.cadComponent)\n ], CadComponentField);\n return CadComponentField;\n }(OutputField));\n\n var CadCustomPropertyField = /** @class */ (function (_super) {\n __extends(CadCustomPropertyField, _super);\n function CadCustomPropertyField(kom) {\n return _super.call(this, kom) || this;\n }\n CadCustomPropertyField = __decorate([\n KboOutputField(CToken.CadCustomPropertyField, exports.eOutputFieldType.cadCustomProperty)\n ], CadCustomPropertyField);\n return CadCustomPropertyField;\n }(OutputField));\n\n var CadDimensionField = /** @class */ (function (_super) {\n __extends(CadDimensionField, _super);\n function CadDimensionField(kom) {\n return _super.call(this, kom) || this;\n }\n CadDimensionField = __decorate([\n KboOutputField(CToken.CadDimensionField, exports.eOutputFieldType.cadDimension)\n ], CadDimensionField);\n return CadDimensionField;\n }(OutputField));\n\n var CadDrawingAnnotationField = /** @class */ (function (_super) {\n __extends(CadDrawingAnnotationField, _super);\n function CadDrawingAnnotationField(kom) {\n return _super.call(this, kom) || this;\n }\n CadDrawingAnnotationField = __decorate([\n KboOutputField(CToken.CadDrawingAnnotationField, exports.eOutputFieldType.cadDrawingAnnotation)\n ], CadDrawingAnnotationField);\n return CadDrawingAnnotationField;\n }(OutputField));\n\n var CadDrawingDimensionField = /** @class */ (function (_super) {\n __extends(CadDrawingDimensionField, _super);\n function CadDrawingDimensionField(kom) {\n return _super.call(this, kom) || this;\n }\n CadDrawingDimensionField = __decorate([\n KboOutputField(CToken.CadDrawingDimensionField, exports.eOutputFieldType.cadDrawingDimension)\n ], CadDrawingDimensionField);\n return CadDrawingDimensionField;\n }(OutputField));\n\n var CadDrawingSheetField = /** @class */ (function (_super) {\n __extends(CadDrawingSheetField, _super);\n function CadDrawingSheetField(kom) {\n return _super.call(this, kom) || this;\n }\n CadDrawingSheetField = __decorate([\n KboOutputField(CToken.CadDrawingSheetField, exports.eOutputFieldType.cadDrawingSheet)\n ], CadDrawingSheetField);\n return CadDrawingSheetField;\n }(OutputField));\n\n var CadDrawingViewField = /** @class */ (function (_super) {\n __extends(CadDrawingViewField, _super);\n function CadDrawingViewField(kom) {\n return _super.call(this, kom) || this;\n }\n CadDrawingViewField = __decorate([\n KboOutputField(CToken.CadDrawingViewField, exports.eOutputFieldType.cadDrawingView)\n ], CadDrawingViewField);\n return CadDrawingViewField;\n }(OutputField));\n\n var CadDynamicComponentField = /** @class */ (function (_super) {\n __extends(CadDynamicComponentField, _super);\n function CadDynamicComponentField(kom) {\n var _this = _super.call(this, kom) || this;\n _this.addConstraint = function (constraintType, args) {\n var constraint = OutputField.getNewOutputFieldOfType(constraintType, _this.$manager, args);\n constraint.type = constraintType;\n _this.$manager.addKbObject(constraint, _this);\n _this.constraints.push(constraint);\n return constraint;\n };\n _this.removeConstraint = function (constraint) {\n _this.$manager.removeKbObject(constraint);\n _this.constraints.remove(constraint);\n };\n return _this;\n }\n Object.defineProperty(CadDynamicComponentField.prototype, \"constraints\", {\n get: function () {\n if (!this._constraints)\n this._constraints = [];\n return this._constraints;\n },\n set: function (val) {\n this._constraints = val;\n },\n enumerable: false,\n configurable: true\n });\n __decorate([\n Enumerable()\n ], CadDynamicComponentField.prototype, \"constraints\", null);\n CadDynamicComponentField = __decorate([\n KboOutputField(CToken.CadDynamicComponentField, exports.eOutputFieldType.cadDynamicComponent)\n ], CadDynamicComponentField);\n return CadDynamicComponentField;\n }(OutputField));\n\n var CadDynamicDrawingAnnotationField = /** @class */ (function (_super) {\n __extends(CadDynamicDrawingAnnotationField, _super);\n function CadDynamicDrawingAnnotationField(kom) {\n return _super.call(this, kom) || this;\n }\n CadDynamicDrawingAnnotationField = __decorate([\n KboOutputField(CToken.CadDynamicDrawingAnnotationField, exports.eOutputFieldType.cadDynamicDrawingAnnotation)\n ], CadDynamicDrawingAnnotationField);\n return CadDynamicDrawingAnnotationField;\n }(OutputField));\n\n var CadDynamicDrawingDimensionField = /** @class */ (function (_super) {\n __extends(CadDynamicDrawingDimensionField, _super);\n function CadDynamicDrawingDimensionField(kom) {\n return _super.call(this, kom) || this;\n }\n CadDynamicDrawingDimensionField = __decorate([\n KboOutputField(CToken.CadDynamicDrawingDimensionField, exports.eOutputFieldType.cadDynamicDrawingDimension)\n ], CadDynamicDrawingDimensionField);\n return CadDynamicDrawingDimensionField;\n }(OutputField));\n\n var CadFeatureField = /** @class */ (function (_super) {\n __extends(CadFeatureField, _super);\n function CadFeatureField(kom) {\n return _super.call(this, kom) || this;\n }\n CadFeatureField = __decorate([\n KboOutputField(CToken.CadFeatureField, exports.eOutputFieldType.cadFeature)\n ], CadFeatureField);\n return CadFeatureField;\n }(OutputField));\n\n var CadLayerField = /** @class */ (function (_super) {\n __extends(CadLayerField, _super);\n function CadLayerField(kom) {\n return _super.call(this, kom) || this;\n }\n CadLayerField = __decorate([\n KboOutputField(CToken.CadLayerField, exports.eOutputFieldType.cadLayer)\n ], CadLayerField);\n return CadLayerField;\n }(OutputField));\n\n var CadLibFeatureField = /** @class */ (function (_super) {\n __extends(CadLibFeatureField, _super);\n function CadLibFeatureField(kom) {\n var _this = _super.call(this, kom) || this;\n _this.addConstraint = function (constraintType, args) {\n var constraint = OutputField.getNewOutputFieldOfType(constraintType, _this.$manager, args);\n constraint.type = constraintType;\n _this.$manager.addKbObject(constraint, _this);\n if (constraint.type == exports.eOutputFieldType.cadLibReference) {\n _this.references.push(constraint);\n }\n else {\n _this.dimensions.push(constraint);\n }\n return constraint;\n };\n _this.removeConstraint = function (constraint) {\n _this.$manager.removeKbObject(constraint);\n if (constraint.type == exports.eOutputFieldType.cadLibReference) {\n _this.references.remove(constraint);\n }\n else {\n _this.dimensions.remove(constraint);\n }\n };\n return _this;\n }\n Object.defineProperty(CadLibFeatureField.prototype, \"references\", {\n get: function () {\n if (!this._references)\n this._references = [];\n return this._references;\n },\n set: function (val) {\n this._references = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CadLibFeatureField.prototype, \"dimensions\", {\n get: function () {\n if (!this._dimensions)\n this._dimensions = [];\n return this._dimensions;\n },\n set: function (val) {\n this._dimensions = val;\n },\n enumerable: false,\n configurable: true\n });\n __decorate([\n Enumerable()\n ], CadLibFeatureField.prototype, \"references\", null);\n __decorate([\n Enumerable()\n ], CadLibFeatureField.prototype, \"dimensions\", null);\n CadLibFeatureField = __decorate([\n KboOutputField(CToken.CadLibFeatureField, exports.eOutputFieldType.cadLibFeature)\n ], CadLibFeatureField);\n return CadLibFeatureField;\n }(OutputField));\n\n var CadParameterField = /** @class */ (function (_super) {\n __extends(CadParameterField, _super);\n function CadParameterField(kom) {\n return _super.call(this, kom) || this;\n }\n CadParameterField = __decorate([\n KboOutputField(CToken.CadParameterField, exports.eOutputFieldType.cadParameter)\n ], CadParameterField);\n return CadParameterField;\n }(OutputField));\n\n var CadReplaceComponentField = /** @class */ (function (_super) {\n __extends(CadReplaceComponentField, _super);\n function CadReplaceComponentField(kom) {\n return _super.call(this, kom) || this;\n }\n CadReplaceComponentField = __decorate([\n KboOutputField(CToken.CadReplaceComponentField, exports.eOutputFieldType.cadReplaceComponent)\n ], CadReplaceComponentField);\n return CadReplaceComponentField;\n }(OutputField));\n\n var CadRepresentationField = /** @class */ (function (_super) {\n __extends(CadRepresentationField, _super);\n function CadRepresentationField(kom) {\n return _super.call(this, kom) || this;\n }\n CadRepresentationField = __decorate([\n KboOutputField(CToken.CadRepresentationField, exports.eOutputFieldType.cadRepresentation)\n ], CadRepresentationField);\n return CadRepresentationField;\n }(OutputField));\n\n var CadScaleFeatureField = /** @class */ (function (_super) {\n __extends(CadScaleFeatureField, _super);\n function CadScaleFeatureField(kom) {\n return _super.call(this, kom) || this;\n }\n CadScaleFeatureField = __decorate([\n KboOutputField(CToken.CadScaleFeatureField, exports.eOutputFieldType.cadScaleFeature)\n ], CadScaleFeatureField);\n return CadScaleFeatureField;\n }(OutputField));\n\n var CadTextField = /** @class */ (function (_super) {\n __extends(CadTextField, _super);\n function CadTextField(kom) {\n return _super.call(this, kom) || this;\n }\n CadTextField = __decorate([\n KboOutputField(CToken.CadTextField, exports.eOutputFieldType.cadText)\n ], CadTextField);\n return CadTextField;\n }(OutputField));\n\n var Constraint = /** @class */ (function (_super) {\n __extends(Constraint, _super);\n function Constraint(kom) {\n return _super.call(this, kom) || this;\n }\n Constraint = __decorate([\n Kbo(CToken.Constraint)\n ], Constraint);\n return Constraint;\n }(OutputField));\n\n var Mate = /** @class */ (function (_super) {\n __extends(Mate, _super);\n function Mate(kom) {\n return _super.call(this, kom) || this;\n }\n Mate = __decorate([\n Kbo(CToken.Mate)\n ], Mate);\n return Mate;\n }(Constraint));\n\n var CadAngleMate = /** @class */ (function (_super) {\n __extends(CadAngleMate, _super);\n function CadAngleMate(kom) {\n return _super.call(this, kom) || this;\n }\n CadAngleMate = __decorate([\n KboOutputField(CToken.CadAngleMate, exports.eOutputFieldType.cadAngleMate)\n ], CadAngleMate);\n return CadAngleMate;\n }(Mate));\n\n var CadCoincidentMate = /** @class */ (function (_super) {\n __extends(CadCoincidentMate, _super);\n function CadCoincidentMate(kom) {\n return _super.call(this, kom) || this;\n }\n CadCoincidentMate = __decorate([\n KboOutputField(CToken.CadCoincidentMate, exports.eOutputFieldType.cadCoincidentMate)\n ], CadCoincidentMate);\n return CadCoincidentMate;\n }(Mate));\n\n var CadCoordinateSystemMate = /** @class */ (function (_super) {\n __extends(CadCoordinateSystemMate, _super);\n function CadCoordinateSystemMate(kom) {\n return _super.call(this, kom) || this;\n }\n CadCoordinateSystemMate = __decorate([\n KboOutputField(CToken.CadCoordinateSystemMate, exports.eOutputFieldType.cadCoordinateSystemMate)\n ], CadCoordinateSystemMate);\n return CadCoordinateSystemMate;\n }(Mate));\n\n var CadDistanceMate = /** @class */ (function (_super) {\n __extends(CadDistanceMate, _super);\n function CadDistanceMate(kom) {\n return _super.call(this, kom) || this;\n }\n CadDistanceMate = __decorate([\n KboOutputField(CToken.CadDistanceMate, exports.eOutputFieldType.cadDistanceMate)\n ], CadDistanceMate);\n return CadDistanceMate;\n }(Mate));\n\n var CadLibDimension = /** @class */ (function (_super) {\n __extends(CadLibDimension, _super);\n function CadLibDimension(kom) {\n return _super.call(this, kom) || this;\n }\n CadLibDimension = __decorate([\n KboOutputField(CToken.CadLibDimension, exports.eOutputFieldType.cadLibDimension)\n ], CadLibDimension);\n return CadLibDimension;\n }(Constraint));\n\n var CadLibReference = /** @class */ (function (_super) {\n __extends(CadLibReference, _super);\n function CadLibReference(kom) {\n return _super.call(this, kom) || this;\n }\n CadLibReference = __decorate([\n KboOutputField(CToken.CadLibReference, exports.eOutputFieldType.cadLibReference)\n ], CadLibReference);\n return CadLibReference;\n }(Constraint));\n\n var CadPositionConstraint = /** @class */ (function (_super) {\n __extends(CadPositionConstraint, _super);\n function CadPositionConstraint(kom) {\n return _super.call(this, kom) || this;\n }\n CadPositionConstraint = __decorate([\n KboOutputField(CToken.CadPositionConstraint, exports.eOutputFieldType.cadPositionConstraint)\n ], CadPositionConstraint);\n return CadPositionConstraint;\n }(Mate));\n\n var ExcelCellField = /** @class */ (function (_super) {\n __extends(ExcelCellField, _super);\n function ExcelCellField(kom) {\n return _super.call(this, kom) || this;\n }\n ExcelCellField = __decorate([\n KboOutputField(CToken.ExcelCellField, exports.eOutputFieldType.excelCell)\n ], ExcelCellField);\n return ExcelCellField;\n }(OutputField));\n\n var ExcelChartField = /** @class */ (function (_super) {\n __extends(ExcelChartField, _super);\n function ExcelChartField(kom) {\n return _super.call(this, kom) || this;\n }\n ExcelChartField = __decorate([\n KboOutputField(CToken.ExcelChartField, exports.eOutputFieldType.excelChart)\n ], ExcelChartField);\n return ExcelChartField;\n }(OutputField));\n\n var ExcelImageField = /** @class */ (function (_super) {\n __extends(ExcelImageField, _super);\n function ExcelImageField(kom) {\n var _this = _super.call(this, kom) || this;\n _this.source = exports.eDynamicSource.template;\n return _this;\n }\n ExcelImageField = __decorate([\n KboOutputField(CToken.ExcelImageField, exports.eOutputFieldType.excelImage)\n ], ExcelImageField);\n return ExcelImageField;\n }(OutputField));\n\n var ExcelSheetField = /** @class */ (function (_super) {\n __extends(ExcelSheetField, _super);\n function ExcelSheetField(kom) {\n return _super.call(this, kom) || this;\n }\n ExcelSheetField = __decorate([\n KboOutputField(CToken.ExcelSheetField, exports.eOutputFieldType.excelSheet)\n ], ExcelSheetField);\n return ExcelSheetField;\n }(OutputField));\n\n var ExcelTableField = /** @class */ (function (_super) {\n __extends(ExcelTableField, _super);\n function ExcelTableField(kom) {\n return _super.call(this, kom) || this;\n }\n ExcelTableField = __decorate([\n KboOutputField(CToken.ExcelTableField, exports.eOutputFieldType.excelTable)\n ], ExcelTableField);\n return ExcelTableField;\n }(OutputField));\n\n var PdfSectionField = /** @class */ (function (_super) {\n __extends(PdfSectionField, _super);\n function PdfSectionField(kom) {\n return _super.call(this, kom) || this;\n }\n PdfSectionField = __decorate([\n KboOutputField(CToken.PdfSectionField, exports.eOutputFieldType.pdfSection)\n ], PdfSectionField);\n return PdfSectionField;\n }(OutputField));\n\n var WordContainerField = /** @class */ (function (_super) {\n __extends(WordContainerField, _super);\n function WordContainerField(kom) {\n return _super.call(this, kom) || this;\n }\n WordContainerField = __decorate([\n KboOutputField(CToken.WordContainerField, exports.eOutputFieldType.wordContainer)\n ], WordContainerField);\n return WordContainerField;\n }(OutputField));\n\n var WordImageField = /** @class */ (function (_super) {\n __extends(WordImageField, _super);\n function WordImageField(kom) {\n var _this = _super.call(this, kom) || this;\n _this.source = exports.eDynamicSource.template;\n return _this;\n }\n WordImageField = __decorate([\n KboOutputField(CToken.WordImageField, exports.eOutputFieldType.wordImage)\n ], WordImageField);\n return WordImageField;\n }(OutputField));\n\n var WordListField = /** @class */ (function (_super) {\n __extends(WordListField, _super);\n function WordListField(kom) {\n return _super.call(this, kom) || this;\n }\n WordListField = __decorate([\n KboOutputField(CToken.WordListField, exports.eOutputFieldType.wordList)\n ], WordListField);\n return WordListField;\n }(OutputField));\n\n var WordTextField = /** @class */ (function (_super) {\n __extends(WordTextField, _super);\n function WordTextField(kom) {\n return _super.call(this, kom) || this;\n }\n WordTextField = __decorate([\n KboOutputField(CToken.WordTextField, exports.eOutputFieldType.wordText)\n ], WordTextField);\n return WordTextField;\n }(OutputField));\n\n var ZipSectionField = /** @class */ (function (_super) {\n __extends(ZipSectionField, _super);\n function ZipSectionField(kom) {\n return _super.call(this, kom) || this;\n }\n ZipSectionField = __decorate([\n KboOutputField(CToken.ZipSectionField, exports.eOutputFieldType.zipSection)\n ], ZipSectionField);\n return ZipSectionField;\n }(OutputField));\n\n var Export = /** @class */ (function (_super) {\n __extends(Export, _super);\n function Export(kom) {\n var _this = _super.call(this, kom) || this;\n _this.postToCloud = true;\n _this.enabled = true;\n return _this;\n }\n Object.defineProperty(Export.prototype, \"tags\", {\n get: function () {\n if (!this._tags)\n this._tags = [];\n return this._tags;\n },\n set: function (val) {\n this._tags = val;\n },\n enumerable: false,\n configurable: true\n });\n Export.ImageTypes = function () {\n return [exports.eExportType.bmp, exports.eExportType.gif, exports.eExportType.jpg, exports.eExportType.png, exports.eExportType.tiff];\n };\n __decorate([\n Enumerable()\n ], Export.prototype, \"tags\", null);\n Export = __decorate([\n Kbo(CToken.Export)\n ], Export);\n return Export;\n }(KbObject));\n\n var Output = /** @class */ (function (_super) {\n __extends(Output, _super);\n function Output(kom, args) {\n var _this = _super.call(this, kom) || this;\n _this.ruleType = exports.eRuleType.output;\n if (args) {\n kom.recurse(args, _this);\n }\n _this.$manager.addKbObject(_this, undefined);\n _this.$fieldsNode = { id: _this.id + \"_fields\", $type: \"FieldsNode\", allowedChildren: function () { return [CToken.OutputField]; }, getParent: function () { return _this; } };\n _this.$rulesNode = { id: _this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: function () { return [CToken.Rule]; }, getParent: function () { return _this; } };\n _this.$exportsNode = { id: _this.id + \"_exports\", $type: \"ExportsNode\", allowedChildren: function () { return [CToken.Export]; }, getParent: function () { return _this; } };\n _this.$drawingsNode = { id: _this.id + \"_drawings\", $type: \"DrawingsNode\", allowedChildren: function () { return [CToken.CadDrawingOutput]; }, getParent: function () { return _this; } };\n _this.ruleType = exports.eRuleType.output;\n return _this;\n }\n Output_1 = Output;\n Output.isCadOutput = function (outputType) {\n return outputType == exports.eOutputType.inventor ||\n outputType == exports.eOutputType.solidworks ||\n outputType == exports.eOutputType.creo ||\n outputType == exports.eOutputType.autoCad;\n };\n Output.supportsCadDrawings = function (outputType) {\n return outputType == exports.eOutputType.inventor ||\n outputType == exports.eOutputType.solidworks ||\n outputType == exports.eOutputType.creo;\n };\n Output.getOutputExportTypes = function (output) {\n var _this = this;\n if (!output)\n return [];\n var et = function (extension, name) {\n return _this.createExportType(extension, name);\n };\n switch (output.type) {\n case exports.eOutputType.word:\n return [\n et(exports.eExportType.pdf, \"Adobe Portable Document Format\"),\n et(exports.eExportType.bmp, \"Bitmap\"),\n et(exports.eExportType.doc, \"Word Document 97-2003\"),\n et(exports.eExportType.docm, \"Macro-Enabled Word Document\"),\n et(exports.eExportType.dot, \"Word Template 97-2003\"),\n et(exports.eExportType.dotm, \"Macro-Enabled Word Template 97-2003\"),\n et(exports.eExportType.dotx, \"Word Template\"),\n et(exports.eExportType.emf, \"EMF\"),\n et(exports.eExportType.epub, \"EPUB\"),\n et(exports.eExportType.html, \"HTML\"),\n et(exports.eExportType.jpg, \"JPEG\"),\n et(exports.eExportType.png, \"PNG\"),\n et(exports.eExportType.rtf, \"Rich Text Format\"),\n et(exports.eExportType.txt, \"Text\"),\n et(exports.eExportType.tiff, \"TIFF\"),\n et(exports.eExportType.xaml, \"XAML\"),\n et(exports.eExportType.xps, \"XPS\"),\n et(exports.eExportType.odt, \"Open Document Text\")\n ];\n case exports.eOutputType.excel:\n return [\n et(exports.eExportType.pdf, \"Adobe Portable Document Format\"),\n et(exports.eExportType.csv, \"CSV File\"),\n et(exports.eExportType.xml, \"Xml\"),\n et(exports.eExportType.html, \"HTML\"),\n et(exports.eExportType.ods, \"Open Document Spreadsheet\"),\n et(exports.eExportType.svg, \"SVG File\"),\n et(exports.eExportType.txt, \"Tab Delimited Text File\"),\n et(exports.eExportType.tiff, \"TIFF\"),\n et(exports.eExportType.xps, \"XPS\")\n ];\n case exports.eOutputType.creo:\n return [\n et(exports.eExportType.x_t, \"Parasolid\"),\n et(exports.eExportType.igs, \"IGES\"),\n et(exports.eExportType.step, \"STEP\"),\n et(exports.eExportType.sat, \"ACIS\"),\n et(exports.eExportType.stl, \"STL\"),\n et(exports.eExportType.wrl, \"VRML\"),\n et(exports.eExportType.vda, \"VDA\"),\n et(exports.eExportType.pdf, \"Adobe Portable Document Format\"),\n et(exports.eExportType.eps, \"eps\"),\n et(exports.eExportType.neu, \"Neutral\"),\n et(exports.eExportType.jpg, \"JPEG\"),\n et(exports.eExportType.tif, \"Tif\"),\n et(exports.eExportType.iv, \"Inventor\"),\n et(exports.eExportType.slp, \"Render\")\n ];\n case exports.eOutputType.inventor:\n return [\n et(exports.eExportType.jpg, \"JPEG\"),\n et(exports.eExportType.bmp, \"BMP\"),\n et(exports.eExportType.gif, \"GIF\"),\n et(exports.eExportType.png, \"PNG\"),\n et(exports.eExportType.tiff, \"TIFF\"),\n et(exports.eExportType.pdf, \"Adobe Portable Document Format\"),\n et(exports.eExportType.catproduct, \"CATIA V5 Product File\"),\n et(exports.eExportType.igs, \"IGES\"),\n et(exports.eExportType.jt, \"JT\"),\n et(exports.eExportType.x_b, \"Parasolid Binary\"),\n et(exports.eExportType.x_t, \"Parasolid Text\"),\n et(exports.eExportType.g, \"Pro/Engineer Granite Files\"),\n et(exports.eExportType.neu, \"Pro/Engineer NEutral File\"),\n et(exports.eExportType.sat, \"SAT\"),\n et(exports.eExportType.step, \"STEP\"),\n et(exports.eExportType.stl, \"STL\"),\n et(exports.eExportType.xgl, \"XGL\"),\n et(exports.eExportType.zgl, \"ZGL\"),\n et(exports.eExportType.dwf, \"DWF\")\n ];\n case exports.eOutputType.solidworks:\n return [\n et(exports.eExportType.sldprt, \"Solidworks Part\"),\n et(exports.eExportType.x_t, \"Parasolid\"),\n et(exports.eExportType.x_b, \"Parasolid Binary\"),\n et(exports.eExportType.igs, \"IGES\"),\n et(exports.eExportType.step, \"STEP\"),\n et(exports.eExportType.sat, \"ACIS\"),\n et(exports.eExportType.stl, \"STL\"),\n et(exports.eExportType.wrl, \"VRML\"),\n et(exports.eExportType.easm, \"eDrawings Assembly\"),\n et(exports.eExportType.pdf, \"Adobe Portable Document Format\"),\n et(exports.eExportType.u3d, \"Universal 3D\"),\n et(exports.eExportType.psd, \"Adobe Photoshop File\"),\n et(exports.eExportType.ai, \"Adobe Illustrator File\"),\n et(exports.eExportType.xaml, \"Microsoft XAML\"),\n et(exports.eExportType.cgr, \"Catia Graphics\"),\n et(exports.eExportType.asm, \"ProE Assembly\"),\n et(exports.eExportType.jpg, \"JPEG\"),\n et(exports.eExportType.hcg, \"HCG\"),\n et(exports.eExportType.hsf, \"HOOPS HSF\"),\n et(exports.eExportType.tif, \"Tif\")\n ];\n case exports.eOutputType.autoCad:\n return [\n et(exports.eExportType.dxf, \"DXF\"),\n et(exports.eExportType.pdf, \"PDF\"),\n // et(eExportType.dgn, \"DGN\"),\n et(exports.eExportType.dwf, \"DWF\"),\n et(exports.eExportType.bmp, \"BMP\"),\n et(exports.eExportType.stl, \"STL\"),\n et(exports.eExportType.igs, \"IGS\")\n ];\n case exports.eOutputType.cadDrawing:\n return Output_1.getCadDrawingExportTypes(output);\n case exports.eOutputType.bom:\n return [\n et(exports.eExportType.xml, \"XML\"),\n et(exports.eExportType.txt, \"Text\")\n ];\n case exports.eOutputType.svg:\n return [\n et(exports.eExportType.jpg, \"JPEG\"),\n et(exports.eExportType.bmp, \"BMP\"),\n et(exports.eExportType.gif, \"GIF\"),\n et(exports.eExportType.png, \"PNG\"),\n et(exports.eExportType.pdf, \"PDF\")\n ];\n case exports.eOutputType.text:\n return [\n et(exports.eExportType._custom, \"Custom File Extension\")\n ];\n }\n return [];\n };\n Output.getCadDrawingExportTypes = function (output) {\n var _this = this;\n var et = function (extension, name) {\n return _this.createExportType(extension, name);\n };\n switch (output.$parent.type) {\n case exports.eOutputType.solidworks:\n return [\n et(exports.eExportType.dxf, \"DXF\"),\n et(exports.eExportType.dwg, \"DWG\"),\n et(exports.eExportType.psd, \"Adobe Photoshop File\"),\n et(exports.eExportType.ai, \"Adobe Illustrator File\"),\n et(exports.eExportType.pdf, \"Adobe Portable Document Format\"),\n et(exports.eExportType.edrw, \"EDrawings\"),\n et(exports.eExportType.jpg, \"JPEG\"),\n et(exports.eExportType.tif, \"Tif\")\n ];\n case exports.eOutputType.inventor:\n return [\n et(exports.eExportType.jpg, \"JPEG\"),\n et(exports.eExportType.bmp, \"BMP\"),\n et(exports.eExportType.gif, \"GIF\"),\n et(exports.eExportType.png, \"PNG\"),\n et(exports.eExportType.tiff, \"TIFF\"),\n et(exports.eExportType.pdf, \"PDF\"),\n et(exports.eExportType.dwg, \"DWG\"),\n et(exports.eExportType.dwf, \"DWF\")\n ];\n case exports.eOutputType.creo:\n return [\n et(exports.eExportType.dwg, \"DWG\"),\n et(exports.eExportType.dxf, \"DXF\"),\n et(exports.eExportType.pdf, \"Adobe Portable Document Format\"),\n et(exports.eExportType.tiff, \"TIFF\")\n ];\n }\n return [];\n };\n Output.createExportType = function (extension, name) {\n return {\n extension: extension,\n name: name + \" (.\" + extension + \")\"\n };\n };\n Output.getOutputFieldTypes = function (output) {\n if (!output)\n return [];\n return Output_1.getOutputFieldTypesByOutputType(output.type);\n };\n Output.getOutputFieldTypesByOutputType = function (outputType) {\n switch (outputType) {\n case exports.eOutputType.word:\n return [\n exports.eOutputFieldType.wordText,\n exports.eOutputFieldType.wordImage,\n exports.eOutputFieldType.wordContainer,\n exports.eOutputFieldType.wordList\n ];\n case exports.eOutputType.excel:\n return [\n exports.eOutputFieldType.excelCell,\n exports.eOutputFieldType.excelImage,\n exports.eOutputFieldType.excelSheet,\n exports.eOutputFieldType.excelTable,\n exports.eOutputFieldType.excelChart\n ];\n case exports.eOutputType.creo:\n case exports.eOutputType.solidworks:\n return [\n exports.eOutputFieldType.cadAnnotation,\n exports.eOutputFieldType.cadComponent,\n exports.eOutputFieldType.cadCustomProperty,\n exports.eOutputFieldType.cadDimension,\n exports.eOutputFieldType.cadDynamicComponent,\n exports.eOutputFieldType.cadFeature,\n exports.eOutputFieldType.cadLibFeature,\n exports.eOutputFieldType.cadReplaceComponent,\n exports.eOutputFieldType.cadScaleFeature\n ];\n case exports.eOutputType.autoCad:\n return [\n exports.eOutputFieldType.cadLayer,\n exports.eOutputFieldType.cadBlock,\n exports.eOutputFieldType.cadBlockArray,\n exports.eOutputFieldType.cadDimension,\n exports.eOutputFieldType.cadText\n ];\n case exports.eOutputType.inventor:\n return [\n exports.eOutputFieldType.cadAnnotation,\n exports.eOutputFieldType.cadComponent,\n exports.eOutputFieldType.cadCustomProperty,\n exports.eOutputFieldType.cadDimension,\n exports.eOutputFieldType.cadDynamicComponent,\n exports.eOutputFieldType.cadFeature,\n exports.eOutputFieldType.cadLibFeature,\n exports.eOutputFieldType.cadReplaceComponent,\n exports.eOutputFieldType.cadScaleFeature,\n exports.eOutputFieldType.cadParameter\n ];\n case exports.eOutputType.cadDrawing:\n return [\n exports.eOutputFieldType.cadDrawingAnnotation,\n exports.eOutputFieldType.cadDrawingDimension,\n exports.eOutputFieldType.cadDynamicDrawingDimension,\n exports.eOutputFieldType.cadDynamicDrawingAnnotation,\n exports.eOutputFieldType.cadDrawingSheet,\n exports.eOutputFieldType.cadDrawingView,\n exports.eOutputFieldType.cadCustomProperty,\n exports.eOutputFieldType.cadLayer\n ];\n case exports.eOutputType.pdf:\n return [\n exports.eOutputFieldType.pdfSection\n ];\n case exports.eOutputType.zip:\n return [\n exports.eOutputFieldType.zipSection\n ];\n }\n return [];\n };\n Output.getConstraintFieldTypes = function () {\n return [\n exports.eOutputFieldType.cadDistanceMate,\n exports.eOutputFieldType.cadAngleMate,\n exports.eOutputFieldType.cadCoordinateSystemMate,\n exports.eOutputFieldType.cadCoincidentMate,\n exports.eOutputFieldType.cadPositionConstraint\n ];\n };\n Output.getLibFeatureConstraintTypes = function () {\n return [\n exports.eOutputFieldType.cadLibDimension,\n exports.eOutputFieldType.cadLibReference\n ];\n };\n Output.usesTemplate = function (outputType) {\n switch (outputType) {\n case exports.eOutputType.solidworks:\n case exports.eOutputType.inventor:\n case exports.eOutputType.creo:\n case exports.eOutputType.cadDrawing:\n case exports.eOutputType.word:\n case exports.eOutputType.excel:\n case exports.eOutputType.autoCad:\n return true;\n }\n return false;\n };\n Object.defineProperty(Output.prototype, \"fields\", {\n get: function () {\n if (!this._fields)\n this._fields = [];\n return this._fields;\n },\n set: function (val) {\n this._fields = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Output.prototype, \"exports\", {\n get: function () {\n if (!this._exports)\n this._exports = [];\n return this._exports;\n },\n set: function (val) {\n this._exports = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Output.prototype, \"tags\", {\n get: function () {\n if (!this._tags)\n this._tags = [];\n return this._tags;\n },\n set: function (val) {\n this._tags = val;\n },\n enumerable: false,\n configurable: true\n });\n Output.prototype.addExport = function (type) {\n var exprt = new Export(this.$manager);\n exprt.type = type;\n exprt.name = this.type == exports.eOutputType.sceneRender ? \"Render\" : exprt.type + \" Export\";\n this.$manager.addKbObject(exprt, this);\n this.exports.push(exprt);\n return exprt;\n };\n Output.prototype.removeExport = function (exp) {\n this.$manager.removeKbObject(exp);\n this.exports.remove(exp);\n };\n Output.prototype.addOutputField = function (fieldType, args) {\n var field = ConfiguratorDI.getNewOutputField(fieldType, this.$manager, args);\n this.$manager.addKbObject(field, this);\n this.fields.push(field);\n return field;\n };\n Output.prototype.removeOutputField = function (outputField) {\n this.$manager.removeKbObject(outputField);\n this.fields.remove(outputField);\n };\n Output.prototype.allRuleContainers = function () {\n var containers = [this];\n if (ConfiguratorDI.instanceOf(this, CToken.CadOutput)) {\n containers.concat(this.drawings);\n }\n return containers;\n };\n var Output_1;\n __decorate([\n Enumerable()\n ], Output.prototype, \"fields\", null);\n __decorate([\n Enumerable()\n ], Output.prototype, \"exports\", null);\n __decorate([\n Enumerable()\n ], Output.prototype, \"tags\", null);\n Output = Output_1 = __decorate([\n Kbo(CToken.Output)\n ], Output);\n return Output;\n }(RuleContainer));\n\n var FileOutput = /** @class */ (function (_super) {\n __extends(FileOutput, _super);\n function FileOutput(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n if (!args) {\n _this.postToCloud = true;\n }\n return _this;\n }\n FileOutput = __decorate([\n Kbo(CToken.FileOutput)\n ], FileOutput);\n return FileOutput;\n }(Output));\n\n var BomOutput = /** @class */ (function (_super) {\n __extends(BomOutput, _super);\n function BomOutput(kom, args) {\n return _super.call(this, kom, args) || this;\n }\n BomOutput = __decorate([\n KboOutput(CToken.BomOutput, exports.eOutputType.bom)\n ], BomOutput);\n return BomOutput;\n }(FileOutput));\n\n var CadDrawingOutput = /** @class */ (function (_super) {\n __extends(CadDrawingOutput, _super);\n function CadDrawingOutput(kom, args) {\n return _super.call(this, kom, args) || this;\n }\n CadDrawingOutput = __decorate([\n KboOutput(CToken.CadDrawingOutput, exports.eOutputType.cadDrawing)\n ], CadDrawingOutput);\n return CadDrawingOutput;\n }(FileOutput));\n\n var CadOutput = /** @class */ (function (_super) {\n __extends(CadOutput, _super);\n function CadOutput(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n _this.drawings = [];\n return _this;\n }\n CadOutput.prototype.addDrawing = function () {\n var drw = new CadDrawingOutput(this.$manager);\n drw.name = \"Drawing\";\n this.$manager.addKbObject(drw, this);\n this.drawings.push(drw);\n return drw;\n };\n CadOutput.prototype.removeDrawing = function (drawing) {\n this.drawings.remove(drawing);\n this.$manager.removeKbObject(drawing);\n };\n CadOutput.prototype.removeOutput = function (drawing) {\n this.removeDrawing(drawing);\n };\n CadOutput = __decorate([\n KboOutput(CToken.CadOutput, exports.eOutputType.solidworks, exports.eOutputType.autoCad, exports.eOutputType.creo, exports.eOutputType.creo3, exports.eOutputType.inventor, exports.eOutputType.salesforce)\n ], CadOutput);\n return CadOutput;\n }(FileOutput));\n\n var ExcelOutput = /** @class */ (function (_super) {\n __extends(ExcelOutput, _super);\n function ExcelOutput(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n _this.type = exports.eOutputType.excel;\n return _this;\n }\n ExcelOutput = __decorate([\n KboOutput(CToken.ExcelOutput, exports.eOutputType.excel)\n ], ExcelOutput);\n return ExcelOutput;\n }(FileOutput));\n\n var ImageOutput = /** @class */ (function (_super) {\n __extends(ImageOutput, _super);\n function ImageOutput(kom, args) {\n return _super.call(this, kom, args) || this;\n }\n ImageOutput = __decorate([\n KboOutput(CToken.ImageOutput, exports.eOutputType.image)\n ], ImageOutput);\n return ImageOutput;\n }(FileOutput));\n\n var PdfOutput = /** @class */ (function (_super) {\n __extends(PdfOutput, _super);\n function PdfOutput(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n _this.type = exports.eOutputType.pdf;\n return _this;\n }\n PdfOutput = __decorate([\n KboOutput(CToken.PdfOutput, exports.eOutputType.pdf)\n ], PdfOutput);\n return PdfOutput;\n }(FileOutput));\n\n var RenderPassExport = /** @class */ (function (_super) {\n __extends(RenderPassExport, _super);\n function RenderPassExport(kom) {\n return _super.call(this, kom) || this;\n }\n RenderPassExport = __decorate([\n Kbo(CToken.RenderPassExport)\n ], RenderPassExport);\n return RenderPassExport;\n }(Export));\n\n var SceneRenderOutput = /** @class */ (function (_super) {\n __extends(SceneRenderOutput, _super);\n function SceneRenderOutput(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n _this.type = exports.eOutputType.sceneRender;\n return _this;\n }\n SceneRenderOutput.prototype.addRenderPass = function () {\n var exprt = new RenderPassExport(this.$manager);\n exprt.type = exports.eExportType.png;\n exprt.name = \"Render Pass\";\n this.$manager.addKbObject(exprt, this);\n this.exports.push(exprt);\n return exprt;\n };\n SceneRenderOutput = __decorate([\n KboOutput(CToken.SceneRenderOutput, exports.eOutputType.sceneRender)\n ], SceneRenderOutput);\n return SceneRenderOutput;\n }(FileOutput));\n\n var SvgOutput = /** @class */ (function (_super) {\n __extends(SvgOutput, _super);\n function SvgOutput(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n _this.type = exports.eOutputType.svg;\n return _this;\n }\n SvgOutput = __decorate([\n KboOutput(CToken.SvgOutput, exports.eOutputType.svg)\n ], SvgOutput);\n return SvgOutput;\n }(FileOutput));\n\n var TextOutput = /** @class */ (function (_super) {\n __extends(TextOutput, _super);\n function TextOutput(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n _this.textContent = \"\";\n _this.type = exports.eOutputType.text;\n return _this;\n }\n TextOutput = __decorate([\n KboOutput(CToken.TextOutput, exports.eOutputType.text)\n ], TextOutput);\n return TextOutput;\n }(FileOutput));\n\n var WordOutput = /** @class */ (function (_super) {\n __extends(WordOutput, _super);\n function WordOutput(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n _this.type = exports.eOutputType.word;\n return _this;\n }\n WordOutput = __decorate([\n KboOutput(CToken.WordOutput, exports.eOutputType.word)\n ], WordOutput);\n return WordOutput;\n }(FileOutput));\n\n var ZipOutput = /** @class */ (function (_super) {\n __extends(ZipOutput, _super);\n function ZipOutput(kom, args) {\n var _this = _super.call(this, kom, args) || this;\n _this.type = exports.eOutputType.zip;\n return _this;\n }\n ZipOutput = __decorate([\n KboOutput(CToken.ZipOutput, exports.eOutputType.zip)\n ], ZipOutput);\n return ZipOutput;\n }(FileOutput));\n\n var PageControl = /** @class */ (function (_super) {\n __extends(PageControl, _super);\n function PageControl(kom) {\n return _super.call(this, kom) || this;\n }\n PageControl.prototype.allowedChildren = function (rootType) {\n if (rootType == CToken.Configurator) {\n return [\n CToken.Page\n ];\n }\n else {\n return []; // pages are filled in by the consumer, not in the layout\n }\n };\n PageControl = __decorate([\n Kbo(CToken.PageControl)\n ], PageControl);\n return PageControl;\n }(UiObject));\n\n var PageNavigator = /** @class */ (function (_super) {\n __extends(PageNavigator, _super);\n function PageNavigator(kom) {\n return _super.call(this, kom) || this;\n }\n PageNavigator = __decorate([\n Kbo(CToken.PageNavigator)\n ], PageNavigator);\n return PageNavigator;\n }(UiObject));\n\n var PageTabs = /** @class */ (function (_super) {\n __extends(PageTabs, _super);\n function PageTabs(kom) {\n return _super.call(this, kom) || this;\n }\n PageTabs = __decorate([\n Kbo(CToken.PageTabs)\n ], PageTabs);\n return PageTabs;\n }(UiObject));\n\n var PartMaterial = /** @class */ (function (_super) {\n __extends(PartMaterial, _super);\n function PartMaterial(kom, data) {\n return _super.call(this, kom, data) || this;\n }\n PartMaterial.prototype.getIdentifyingProperty = function () {\n return \"mtlPartNum\";\n };\n PartMaterial.getMetadataProperties = function () {\n return [\"getDetails\"];\n };\n PartMaterial = __decorate([\n Kbo(CToken.PartMaterial)\n ], PartMaterial);\n return PartMaterial;\n }(PartRev));\n\n var PartOperationDetail = /** @class */ (function (_super) {\n __extends(PartOperationDetail, _super);\n function PartOperationDetail(kom, data) {\n var _this = _super.call(this, kom) || this;\n _this._metadata = {};\n _this._metadata = {};\n for (var key in data) {\n var value = data[key];\n if (!Array.isArray(value))\n _this[key] = value;\n }\n return _this;\n }\n PartOperationDetail.prototype.getIdentifyingProperty = function () {\n return (this.resourceGrpID ? \"resourceGrpID\" : \"resourceID\");\n };\n PartOperationDetail.getMetadataProperties = function () {\n return [];\n };\n PartOperationDetail = __decorate([\n Kbo(CToken.PartOperationDetail)\n ], PartOperationDetail);\n return PartOperationDetail;\n }(KbObject));\n\n var PartOperation = /** @class */ (function (_super) {\n __extends(PartOperation, _super);\n function PartOperation(kom, data) {\n var _this = _super.call(this, kom) || this;\n _this._metadata = {};\n _this._metadata = {};\n for (var key in data) {\n var value = data[key];\n if (!Array.isArray(value))\n _this[key] = value;\n }\n return _this;\n }\n PartOperation.getMetadataProperties = function () {\n return [];\n };\n Object.defineProperty(PartOperation.prototype, \"operationDetails\", {\n get: function () {\n if (!this._operationDetails)\n this._operationDetails = [];\n return this._operationDetails;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PartOperation.prototype, \"operations\", {\n set: function (val) {\n this._operationDetails = val;\n },\n enumerable: false,\n configurable: true\n });\n PartOperation.prototype.getIdentifyingProperty = function () {\n return \"opDesc\";\n };\n __decorate([\n Enumerable()\n ], PartOperation.prototype, \"operationDetails\", null);\n PartOperation = __decorate([\n Kbo(CToken.PartOperation)\n ], PartOperation);\n return PartOperation;\n }(KbObject));\n\n var Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(Popup.prototype, \"children\", {\n get: function () {\n if (!this._children)\n this._children = [];\n return this._children;\n },\n set: function (val) {\n this._children = val;\n },\n enumerable: false,\n configurable: true\n });\n Popup.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children);\n };\n Popup.prototype.allowedChildren = function (rootType) {\n return this.containerChildren(rootType);\n };\n __decorate([\n Enumerable()\n ], Popup.prototype, \"children\", null);\n Popup = __decorate([\n Kbo(CToken.Popup)\n ], Popup);\n return Popup;\n }(Button));\n\n var PriceWidget = /** @class */ (function (_super) {\n __extends(PriceWidget, _super);\n function PriceWidget(kom) {\n return _super.call(this, kom) || this;\n }\n PriceWidget = __decorate([\n Kbo(CToken.PriceWidget)\n ], PriceWidget);\n return PriceWidget;\n }(UiObject));\n\n var PricingRuleContainer = /** @class */ (function (_super) {\n __extends(PricingRuleContainer, _super);\n function PricingRuleContainer(kom) {\n return _super.call(this, kom, { ruleType: exports.eRuleType.pricing }) || this;\n }\n Object.defineProperty(PricingRuleContainer.prototype, \"columnMaps\", {\n get: function () {\n if (!this._columnMaps)\n this._columnMaps = [];\n return this._columnMaps;\n },\n set: function (val) {\n this._columnMaps = val;\n },\n enumerable: false,\n configurable: true\n });\n __decorate([\n Enumerable()\n ], PricingRuleContainer.prototype, \"columnMaps\", null);\n PricingRuleContainer = __decorate([\n Kbo(CToken.PricingRuleContainer)\n ], PricingRuleContainer);\n return PricingRuleContainer;\n }(RuleContainer));\n\n var Rule = /** @class */ (function (_super) {\n __extends(Rule, _super);\n function Rule(kom) {\n return _super.call(this, kom) || this;\n }\n Rule = __decorate([\n Kbo(CToken.Rule)\n ], Rule);\n return Rule;\n }(KbObject));\n\n var SvgViewer = /** @class */ (function (_super) {\n __extends(SvgViewer, _super);\n function SvgViewer(kom) {\n var _this = _super.call(this, kom, { ruleType: exports.eRuleType.svgViewer }) || this;\n _this.ruleContainers = [];\n _this.$rulesNode = { id: _this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: function () { return [CToken.Rule]; }, getParent: function () { return _this; } };\n return _this;\n }\n SvgViewer = __decorate([\n Kbo(CToken.SvgViewer)\n ], SvgViewer);\n return SvgViewer;\n }(UiObject));\n\n var TabControl = /** @class */ (function (_super) {\n __extends(TabControl, _super);\n function TabControl(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(TabControl.prototype, \"tabs\", {\n get: function () {\n if (!this._tabs)\n this._tabs = [];\n return this._tabs;\n },\n set: function (val) {\n this._tabs = val;\n },\n enumerable: false,\n configurable: true\n });\n TabControl.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.tabs);\n };\n TabControl.prototype.allowedChildren = function (rootType) {\n return [\n CToken.Tab\n ];\n };\n __decorate([\n Enumerable()\n ], TabControl.prototype, \"tabs\", null);\n TabControl = __decorate([\n Kbo(CToken.TabControl)\n ], TabControl);\n return TabControl;\n }(UiObject));\n\n var Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n function Tab(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(Tab.prototype, \"children\", {\n get: function () {\n if (!this._children)\n this._children = [];\n return this._children;\n },\n set: function (val) {\n this._children = val;\n },\n enumerable: false,\n configurable: true\n });\n Tab.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children);\n };\n Tab.prototype.allowedChildren = function (rootType) {\n return this.containerChildren(rootType);\n };\n __decorate([\n Enumerable()\n ], Tab.prototype, \"children\", null);\n Tab = __decorate([\n Kbo(CToken.Tab)\n ], Tab);\n return Tab;\n }(UiObject));\n\n var Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text(kom) {\n return _super.call(this, kom) || this;\n }\n Text = __decorate([\n Kbo(CToken.Text)\n ], Text);\n return Text;\n }(UiObject));\n\n var Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar(kom) {\n return _super.call(this, kom) || this;\n }\n Object.defineProperty(Toolbar.prototype, \"children\", {\n get: function () {\n if (!this._children)\n this._children = [];\n return this._children;\n },\n set: function (val) {\n this._children = val;\n },\n enumerable: false,\n configurable: true\n });\n Toolbar.prototype.getChildrenOfType = function () {\n var tokens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tokens[_i] = arguments[_i];\n }\n return this.filterChildren(tokens, this.children);\n };\n Toolbar.prototype.allowedChildren = function (rootType) {\n return [\n CToken.Button,\n CToken.DropdownButton\n ];\n };\n __decorate([\n Enumerable()\n ], Toolbar.prototype, \"children\", null);\n Toolbar = __decorate([\n Kbo(CToken.Toolbar)\n ], Toolbar);\n return Toolbar;\n }(UiObject));\n\n var Viewer = /** @class */ (function (_super) {\n __extends(Viewer, _super);\n function Viewer(kom) {\n return _super.call(this, kom) || this;\n }\n Viewer = __decorate([\n Kbo(CToken.Viewer)\n ], Viewer);\n return Viewer;\n }(UiObject));\n\n (function (eInputDialogType) {\n eInputDialogType[\"text\"] = \"text\";\n eInputDialogType[\"html\"] = \"html\";\n eInputDialogType[\"textArea\"] = \"textArea\";\n eInputDialogType[\"select\"] = \"select\";\n eInputDialogType[\"snap\"] = \"snap\";\n })(exports.eInputDialogType || (exports.eInputDialogType = {}));\n (function (eMediaFilter) {\n eMediaFilter[eMediaFilter[\"all\"] = 0] = \"all\";\n eMediaFilter[eMediaFilter[\"images\"] = 1] = \"images\";\n eMediaFilter[eMediaFilter[\"videos\"] = 2] = \"videos\";\n eMediaFilter[eMediaFilter[\"imagesAndVideos\"] = 3] = \"imagesAndVideos\";\n eMediaFilter[eMediaFilter[\"environments\"] = 4] = \"environments\";\n })(exports.eMediaFilter || (exports.eMediaFilter = {}));\n var DialogButtonArgs = /** @class */ (function () {\n function DialogButtonArgs() {\n this.close = true;\n }\n return DialogButtonArgs;\n }());\n var InputDialogButtonArgs = /** @class */ (function (_super) {\n __extends(InputDialogButtonArgs, _super);\n function InputDialogButtonArgs() {\n return _super.call(this) || this;\n }\n return InputDialogButtonArgs;\n }(DialogButtonArgs));\n var MediaDialogButtonArgs = /** @class */ (function (_super) {\n __extends(MediaDialogButtonArgs, _super);\n function MediaDialogButtonArgs() {\n return _super.call(this) || this;\n }\n return MediaDialogButtonArgs;\n }(DialogButtonArgs));\n var DialogButton = /** @class */ (function () {\n function DialogButton(title, icon, callback, visible) {\n if (callback === void 0) { callback = null; }\n if (visible === void 0) { visible = true; }\n this.title = title;\n this.icon = icon;\n this.callback = callback;\n this.visible = visible;\n }\n return DialogButton;\n }());\n var InputDialogButton = /** @class */ (function (_super) {\n __extends(InputDialogButton, _super);\n function InputDialogButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InputDialogButton;\n }(DialogButton));\n var MediaDialogButton = /** @class */ (function (_super) {\n __extends(MediaDialogButton, _super);\n function MediaDialogButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return MediaDialogButton;\n }(DialogButton));\n\n // tslint:disable:max-line-length\n var meta = {\n Configurator: {\n $name: \"Configurator\",\n },\n LayoutConfig: {\n $name: \"LayoutConfig\",\n },\n BuildType: {\n $name: \"BuildType\",\n },\n Channel: {\n $name: \"Channel\",\n },\n Company: {\n $name: \"Company\",\n },\n Contact: {\n $name: \"Contact\",\n },\n CustomAction: {\n $name: \"CustomAction\",\n },\n Customer: {\n $name: \"Customer\",\n },\n EmailTemplate: {\n $name: \"EmailTemplate\",\n },\n Generator: {\n $name: \"Generator\",\n },\n GlobalDefinition: {\n $name: \"GlobalDefinition\",\n },\n Job: {\n $name: \"Job\",\n type: { name: \"type\", type: \"text\", control: \"select\", source: \"enum\", default: true, enumType: \"eJobType\" },\n status: { name: \"status\", type: \"text\", control: \"select\", source: \"enum\", enumType: \"eJobStatus\" },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n completedDate: { name: \"completedDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n },\n KbRole: {\n $name: \"KbRole\",\n },\n KbUserEdit: {\n $name: \"KbUserEdit\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n firstName: { name: \"firstName\", type: \"text\", control: \"none\", source: \"none\" },\n lastName: { name: \"lastName\", type: \"text\", control: \"none\", source: \"none\" },\n email: { name: \"email\", type: \"text\", control: \"none\", source: \"none\" },\n isApproved: { name: \"isApproved\", type: \"boolean\", control: \"checkbox\", source: \"none\" },\n licenseType: { name: \"licenseType\", type: \"text\", control: \"select\", source: \"enum\", default: true, enumType: \"eUserLicenseType\" },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n lastLoginDate: { name: \"lastLoginDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n },\n Layout: {\n $name: \"Layout\",\n },\n Log: {\n $name: \"Log\",\n type: { name: \"type\", type: \"text\", control: \"select\", source: \"enum\", default: true, enumType: \"eLogType\" },\n source: { name: \"source\", type: \"text\", control: \"select\", source: \"enum\", enumType: \"eLogSource\" },\n },\n Material: {\n $name: \"Material\",\n },\n MatTag: {\n $name: \"MatTag\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n },\n Notification: {\n $name: \"Notification\",\n },\n OutputBuilder: {\n $name: \"OutputBuilder\",\n },\n PriceColumn: {\n $name: \"PriceColumn\",\n },\n Product: {\n $name: \"Product\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"suggest\", source: \"suggestProducts\" },\n shortDescription: { name: \"shortDescription\", type: \"text\", control: \"text\", source: \"none\" },\n sku: { name: \"sku\", type: \"text\", control: \"text\", source: \"none\" },\n mfgPartNumber: { name: \"mfgPartNumber\", type: \"text\", control: \"text\", source: \"none\" },\n manufacturer: { name: \"manufacturer\", type: \"text\", control: \"select\", source: \"manufacturers\" },\n unitOfMeasure: { name: \"unitOfMeasure\", type: \"text\", control: \"none\", source: \"none\" },\n price: { name: \"price\", type: \"number\", control: \"numberRange\", source: \"none\" },\n maxQty: { name: \"maxQty\", type: \"number\", control: \"none\", source: \"none\" },\n minQty: { name: \"minQty\", type: \"number\", control: \"none\", source: \"none\" },\n allowFractionalQty: { name: \"allowFractionalQty\", type: \"boolean\", control: \"none\", source: \"none\" },\n score: { name: \"score\", type: \"number\", control: \"none\", source: \"none\" },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n isConfigured: { name: \"isConfigured\", type: \"boolean\", control: \"none\", source: \"none\" },\n images: { name: \"images\", type: \"ProductImage[]\", control: \"none\", source: \"none\" },\n translations: { name: \"translations\", type: \"ProductTranslation[]\", control: \"none\", source: \"none\" },\n },\n ProductHistory: {\n $name: \"ProductHistory\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"suggest\", source: \"suggestProducts\" },\n shortDescription: { name: \"shortDescription\", type: \"text\", control: \"text\", source: \"none\" },\n sku: { name: \"sku\", type: \"text\", control: \"text\", source: \"none\" },\n mfgPartNumber: { name: \"mfgPartNumber\", type: \"text\", control: \"text\", source: \"none\" },\n manufacturer: { name: \"manufacturer\", type: \"text\", control: \"select\", source: \"manufacturers\" },\n unitOfMeasure: { name: \"unitOfMeasure\", type: \"text\", control: \"none\", source: \"none\" },\n price: { name: \"price\", type: \"number\", control: \"numberRange\", source: \"none\" },\n maxQty: { name: \"maxQty\", type: \"number\", control: \"none\", source: \"none\" },\n minQty: { name: \"minQty\", type: \"number\", control: \"none\", source: \"none\" },\n allowFractionalQty: { name: \"allowFractionalQty\", type: \"boolean\", control: \"none\", source: \"none\" },\n score: { name: \"score\", type: \"number\", control: \"none\", source: \"none\" },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n isConfigured: { name: \"isConfigured\", type: \"boolean\", control: \"none\", source: \"none\" },\n images: { name: \"images\", type: \"ProductImage[]\", control: \"none\", source: \"none\" },\n translations: { name: \"translations\", type: \"ProductTranslation[]\", control: \"none\", source: \"none\" },\n },\n ProductImage: {\n $name: \"ProductImage\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n imagePath: { name: \"imagePath\", type: \"text\", control: \"none\", source: \"none\" },\n imageOrder: { name: \"imageOrder\", type: \"number\", control: \"none\", source: \"none\" },\n },\n Queue: {\n $name: \"Queue\",\n },\n Quote: {\n $name: \"Quote\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n state: { name: \"state\", type: \"text\", control: \"multiSelect\", source: \"states\", default: true },\n ownedBy: { name: \"ownedBy\", type: \"number\", control: \"multiSelect\", source: \"users\", default: true, permissions: [exports.ePerm.viewUsers] },\n idCustomer: { name: \"idCustomer\", type: \"number\", control: \"multiSelect\", source: \"customers\", permissions: [exports.ePerm.viewCustomers] },\n idContact: { name: \"idContact\", type: \"number\", control: \"suggest\", source: \"suggestContacts\", permissions: [exports.ePerm.viewCustomers] },\n name: { name: \"name\", type: \"text\", control: \"suggest\", source: \"suggestQuotes\" },\n description: { name: \"description\", type: \"text\", control: \"text\", source: \"none\" },\n currency: { name: \"currency\", type: \"text\", control: \"none\", source: \"none\" },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n owner: { name: \"owner\", type: \"text\", control: \"none\", source: \"none\" },\n customer: { name: \"customer\", type: \"text\", control: \"none\", source: \"none\" },\n contact: { name: \"contact\", type: \"text\", control: \"none\", source: \"none\" },\n products: { name: \"products\", type: \"QuoteProduct[]\", control: \"none\", source: \"none\" },\n files: { name: \"files\", type: \"QuoteFile[]\", control: \"none\", source: \"none\" },\n totalPrice: { name: \"totalPrice\", type: \"number\", control: \"numberRange\", source: \"none\", permissions: [exports.ePerm.viewPrices] },\n },\n QuoteFile: {\n $name: \"QuoteFile\",\n tags: { name: \"tags\", type: \"Tag[]\", control: \"none\", source: \"none\" },\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n source: { name: \"source\", type: \"text\", control: \"none\", source: \"none\" },\n status: { name: \"status\", type: \"text\", control: \"none\", source: \"none\" },\n filePath: { name: \"filePath\", type: \"text\", control: \"none\", source: \"none\" },\n },\n QuoteHeader: {\n $name: \"QuoteHeader\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\" },\n },\n QuoteOutput: {\n $name: \"QuoteOutput\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\" },\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"none\", source: \"none\" },\n },\n QuoteProduct: {\n $name: \"QuoteProduct\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n idQuote: { name: \"idQuote\", type: \"number\", control: \"none\", source: \"none\" },\n quote: { name: \"quote\", type: \"text\", control: \"none\", source: \"none\" },\n currency: { name: \"currency\", type: \"text\", control: \"none\", source: \"none\" },\n isConfigured: { name: \"isConfigured\", type: \"boolean\", control: \"none\", source: \"none\" },\n price: { name: \"price\", type: \"number\", control: \"numberRange\", source: \"none\", permissions: [exports.ePerm.viewPrices] },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n createdBy: { name: \"createdBy\", type: \"number\", control: \"select\", source: \"users\", permissions: [exports.ePerm.viewUsers] },\n files: { name: \"files\", type: \"QuoteProductFile[]\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"text\", source: \"none\" },\n description: { name: \"description\", type: \"text\", control: \"text\", source: \"none\" },\n shortDescription: { name: \"shortDescription\", type: \"text\", control: \"none\", source: \"none\" },\n sku: { name: \"sku\", type: \"text\", control: \"text\", source: \"none\" },\n imagePath: { name: \"imagePath\", type: \"text\", control: \"none\", source: \"none\" },\n },\n SafeFunction: {\n $name: \"SafeFunction\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\" },\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"none\", source: \"none\" },\n },\n Scene: {\n $name: \"Scene\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\" },\n modifiedBy: { name: \"modifiedBy\", type: \"number\", control: \"none\", source: \"none\" },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n external: { name: \"external\", type: \"boolean\", control: \"none\", source: \"none\" },\n createdByName: { name: \"createdByName\", type: \"text\", control: \"none\", source: \"none\" },\n },\n SsoGroupRoleMapping: {\n $name: \"SsoGroupRoleMapping\",\n },\n Table: {\n $name: \"Table\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\" },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n source: { name: \"source\", type: \"text\", control: \"select\", source: \"enum\", enumType: \"eTableExternalSource\" },\n dbTable: { name: \"dbTable\", type: \"text\", control: \"none\", source: \"none\" },\n },\n Tag: {\n $name: \"Tag\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n },\n TestBuild: {\n $name: \"TestBuild\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n idProduct: { name: \"idProduct\", type: \"number\", control: \"none\", source: \"none\" },\n idBuildType: { name: \"idBuildType\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n status: { name: \"status\", type: \"text\", control: \"select\", source: \"enum\", enumType: \"eBuildStatus\" },\n creatorName: { name: \"creatorName\", type: \"text\", control: \"none\", source: \"none\" },\n },\n Theme: {\n $name: \"Theme\",\n },\n Workflow: {\n $name: \"Workflow\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\" },\n valid: { name: \"valid\", type: \"boolean\", control: \"none\", source: \"none\" },\n isDefault: { name: \"isDefault\", type: \"boolean\", control: \"none\", source: \"none\" },\n },\n SceneHistory: {\n $name: \"SceneHistory\",\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\" },\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\" },\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\" },\n modifiedBy: { name: \"modifiedBy\", type: \"number\", control: \"none\", source: \"none\" },\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\" },\n external: { name: \"external\", type: \"boolean\", control: \"none\", source: \"none\" },\n createdByName: { name: \"createdByName\", type: \"text\", control: \"none\", source: \"none\" },\n },\n };\n\n var Table = /** @class */ (function () {\n function Table(o) {\n var _this = this;\n this.columns = [];\n this.data = [[]];\n this._columnDb = {};\n if (o) {\n this.id = o.id;\n o.columns.forEach(function (c) {\n _this.addColumn(c);\n });\n this.name = o.name;\n this.description = o.description;\n this.data = o.data;\n }\n }\n /**\n * use this instead of pushing directly to columns array so that\n * the columnDb can be maintained for fast searching\n */\n Table.prototype.addColumn = function (col) {\n this.columns.push(col);\n this._columnDb[col.name] = this.columns.length - 1;\n };\n // public addStandardColumns() {\n // this.data = [[]];\n // this.columns.clear();\n // this.columns.pushArray([\n // { name: \"value\", type: eColumnType.text },\n // { name: \"label\", type: eColumnType.text },\n // { name: \"image\", type: eColumnType.media }\n // ]);\n // }\n Table.prototype.addRow = function (row) {\n var rowArr = [];\n for (var _i = 0, _a = this.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n rowArr.push(row[col.name]);\n }\n this.data.push(rowArr);\n };\n Table.prototype.getCell = function (rowIndex, colName) {\n return this.data[rowIndex][this._columnDb[colName]];\n };\n Table.prototype.toObjectArray = function () {\n var _this = this;\n var d = [];\n var columnScrubMap = {};\n this.columns.forEach(function (col, i) {\n columnScrubMap[i] = _tools.Utils.scrubName(col.name);\n });\n this.data.forEach(function (row, r) {\n var o = {};\n _this.columns.forEach(function (col, c) {\n o[columnScrubMap[c]] = row[c];\n });\n d.push(o);\n });\n return {\n columns: this.columns,\n data: d\n };\n };\n return Table;\n }());\n\n exports.Accordion = Accordion;\n exports.ActionBar = ActionBar;\n exports.AllEnums = AllEnums;\n exports.BomOutput = BomOutput;\n exports.Build = Build;\n exports.Button = Button;\n exports.CToken = CToken;\n exports.CadAngleMate = CadAngleMate;\n exports.CadAnnotationField = CadAnnotationField;\n exports.CadBlockArrayField = CadBlockArrayField;\n exports.CadBlockField = CadBlockField;\n exports.CadCoincidentMate = CadCoincidentMate;\n exports.CadComponentField = CadComponentField;\n exports.CadCoordinateSystemMate = CadCoordinateSystemMate;\n exports.CadCustomPropertyField = CadCustomPropertyField;\n exports.CadDimensionField = CadDimensionField;\n exports.CadDistanceMate = CadDistanceMate;\n exports.CadDrawingAnnotationField = CadDrawingAnnotationField;\n exports.CadDrawingDimensionField = CadDrawingDimensionField;\n exports.CadDrawingOutput = CadDrawingOutput;\n exports.CadDrawingSheetField = CadDrawingSheetField;\n exports.CadDrawingViewField = CadDrawingViewField;\n exports.CadDynamicComponentField = CadDynamicComponentField;\n exports.CadDynamicDrawingAnnotationField = CadDynamicDrawingAnnotationField;\n exports.CadDynamicDrawingDimensionField = CadDynamicDrawingDimensionField;\n exports.CadFeatureField = CadFeatureField;\n exports.CadLayerField = CadLayerField;\n exports.CadLibDimension = CadLibDimension;\n exports.CadLibFeatureField = CadLibFeatureField;\n exports.CadLibReference = CadLibReference;\n exports.CadOutput = CadOutput;\n exports.CadParameterField = CadParameterField;\n exports.CadPositionConstraint = CadPositionConstraint;\n exports.CadReplaceComponentField = CadReplaceComponentField;\n exports.CadRepresentationField = CadRepresentationField;\n exports.CadScaleFeatureField = CadScaleFeatureField;\n exports.CadTextField = CadTextField;\n exports.Configurator = Configurator;\n exports.ConfiguratorAction = ConfiguratorAction;\n exports.ConfiguratorDI = ConfiguratorDI;\n exports.ConfiguratorFunction = ConfiguratorFunction;\n exports.Constraint = Constraint;\n exports.Container = Container;\n exports.DialogButton = DialogButton;\n exports.DialogButtonArgs = DialogButtonArgs;\n exports.DropdownButton = DropdownButton;\n exports.Enumerable = Enumerable;\n exports.ExcelCellField = ExcelCellField;\n exports.ExcelChartField = ExcelChartField;\n exports.ExcelImageField = ExcelImageField;\n exports.ExcelOutput = ExcelOutput;\n exports.ExcelSheetField = ExcelSheetField;\n exports.ExcelTableField = ExcelTableField;\n exports.Expander = Expander;\n exports.Export = Export;\n exports.Field = Field;\n exports.FileOutput = FileOutput;\n exports.GridColumn = GridColumn;\n exports.GridRow = GridRow;\n exports.Group = Group;\n exports.Hotspot = Hotspot;\n exports.Html = Html;\n exports.ImageOutput = ImageOutput;\n exports.InputDialogButton = InputDialogButton;\n exports.InputDialogButtonArgs = InputDialogButtonArgs;\n exports.KbObject = KbObject;\n exports.KbObjectManager = KbObjectManager;\n exports.Kbo = Kbo;\n exports.KboOutput = KboOutput;\n exports.KboOutputField = KboOutputField;\n exports.LayoutConfig = LayoutConfig;\n exports.LayoutContent = LayoutContent;\n exports.Mate = Mate;\n exports.Media = Media;\n exports.MediaDialogButton = MediaDialogButton;\n exports.MediaDialogButtonArgs = MediaDialogButtonArgs;\n exports.MethodOfManufacture = MethodOfManufacture;\n exports.NestedSet = NestedSet;\n exports.Option = Option;\n exports.OptionFilter = OptionFilter;\n exports.Output = Output;\n exports.OutputField = OutputField;\n exports.Page = Page;\n exports.PageControl = PageControl;\n exports.PageNavigator = PageNavigator;\n exports.PageTabs = PageTabs;\n exports.PartMaterial = PartMaterial;\n exports.PartOperation = PartOperation;\n exports.PartOperationDetail = PartOperationDetail;\n exports.PartRev = PartRev;\n exports.PdfOutput = PdfOutput;\n exports.PdfSectionField = PdfSectionField;\n exports.Popup = Popup;\n exports.PriceWidget = PriceWidget;\n exports.PricingRuleContainer = PricingRuleContainer;\n exports.PropertyChangedEvent = PropertyChangedEvent;\n exports.ReferencedConfigurator = ReferencedConfigurator;\n exports.RenderPassExport = RenderPassExport;\n exports.Rule = Rule;\n exports.RuleContainer = RuleContainer;\n exports.SceneRenderOutput = SceneRenderOutput;\n exports.SvgOutput = SvgOutput;\n exports.SvgViewer = SvgViewer;\n exports.Tab = Tab;\n exports.TabControl = TabControl;\n exports.Table = Table;\n exports.Text = Text;\n exports.TextOutput = TextOutput;\n exports.Toolbar = Toolbar;\n exports.UiObject = UiObject;\n exports.Viewer = Viewer;\n exports.WordContainerField = WordContainerField;\n exports.WordImageField = WordImageField;\n exports.WordListField = WordListField;\n exports.WordOutput = WordOutput;\n exports.WordTextField = WordTextField;\n exports.ZipOutput = ZipOutput;\n exports.ZipSectionField = ZipSectionField;\n exports.defaults = defaults;\n exports.meta = meta;\n\n return exports;\n\n}({}, tools));\n//# sourceMappingURL=models.js.map\n","export enum ePerm {\r\n viewUsers = \"viewUsers\",\r\n modifyUsers = \"modifyUsers\",\r\n modifyMedia = \"modifyMedia\",\r\n viewProducts = \"viewProducts\",\r\n modifyProducts = \"modifyProducts\",\r\n viewCustomers = \"viewCustomers\",\r\n modifyCustomers = \"modifyCustomers\",\r\n viewComments = \"viewComments\",\r\n addComments = \"addComments\",\r\n modifyAllComments = \"modifyAllComments\",\r\n viewAttachments = \"viewAttachments\",\r\n addAttachments = \"addAttachments\",\r\n modifyAllAttachments = \"modifyAllAttachments\",\r\n modifyCurrencies = \"modifyCurrencies\",\r\n modifyScenes = \"modifyScenes\",\r\n setQuoteDiscount = \"setQuoteDiscount\",\r\n setQuoteCustomer = \"setQuoteCustomer\",\r\n setQuoteShipping = \"setQuoteShipping\",\r\n setQuoteCurrency = \"setQuoteCurrency\",\r\n viewQuoteDiscount = \"viewQuoteDiscount\",\r\n viewQuoteCustomer = \"viewQuoteCustomer\",\r\n viewQuoteShipping = \"viewQuoteShipping\",\r\n viewQuoteHeader = \"viewQuoteHeader\",\r\n viewQuoteCurrency = \"viewQuoteCurrency\",\r\n viewPrices = \"viewPrices\",\r\n viewCost = \"viewCost\",\r\n loginToOutputBuilder = \"loginToOutputBuilder\",\r\n setQuoteProductDescription = \"setQuoteProductDescription\",\r\n}\r\nexport enum eNotificationType {\r\n generic = \"generic\",\r\n newUser = \"newUser\",\r\n passwordReset = \"passwordReset\",\r\n pendingApproval = \"pendingApproval\",\r\n quoteApproved = \"quoteApproved\",\r\n quoteRejected = \"quoteRejected\",\r\n quote = \"quote\",\r\n errorLog = \"errorLog\",\r\n}\r\nexport enum eNotificationSetting {\r\n none = \"none\",\r\n companyDefault = \"companyDefault\",\r\n notify = \"notify\",\r\n email = \"email\",\r\n notifyAndEmail = \"notifyAndEmail\",\r\n}\r\nexport enum eEnvironment {\r\n prod = \"prod\",\r\n test = \"test\",\r\n dev = \"dev\",\r\n}\r\nexport enum eWorkflowAction {\r\n custom = \"custom\",\r\n save = \"save\",\r\n deleter = \"deleter\",\r\n submit = \"submit\",\r\n approve = \"approve\",\r\n reject = \"reject\",\r\n entryFail = \"entryFail\",\r\n completeBuild = \"completeBuild\",\r\n failBuild = \"failBuild\",\r\n modifyProducts = \"modifyProducts\",\r\n modifyDiscount = \"modifyDiscount\",\r\n modifyName = \"modifyName\",\r\n modifyCustomer = \"modifyCustomer\",\r\n modifyAttachments = \"modifyAttachments\",\r\n addAttachments = \"addAttachments\",\r\n modifyQuoteHeader = \"modifyQuoteHeader\",\r\n modifyCurrency = \"modifyCurrency\",\r\n reorderProducts = \"reorderProducts\",\r\n modifyQuoteProductDescription = \"modifyQuoteProductDescription\",\r\n modifyShipping = \"modifyShipping\",\r\n buildQuoteProduct = \"buildQuoteProduct\",\r\n}\r\nexport enum eViewPermission {\r\n viewQuote = \"viewQuote\",\r\n viewCost = \"viewCost\",\r\n viewPricing = \"viewPricing\",\r\n viewDiscount = \"viewDiscount\",\r\n viewCustomer = \"viewCustomer\",\r\n viewOutput = \"viewOutput\",\r\n viewQuoteHeader = \"viewQuoteHeader\",\r\n viewCurrency = \"viewCurrency\",\r\n viewShipping = \"viewShipping\",\r\n viewQuoteProductDetails = \"viewQuoteProductDetails\",\r\n}\r\nexport enum eOutputType {\r\n none = \"none\",\r\n word = \"word\",\r\n excel = \"excel\",\r\n image = \"image\",\r\n solidworks = \"solidworks\",\r\n inventor = \"inventor\",\r\n creo = \"creo\",\r\n creo3 = \"creo3\",\r\n cadDrawing = \"cadDrawing\",\r\n bom = \"bom\",\r\n sceneRender = \"sceneRender\",\r\n pdf = \"pdf\",\r\n salesforce = \"salesforce\",\r\n autoCad = \"autoCad\",\r\n zip = \"zip\",\r\n svg = \"svg\",\r\n text = \"text\",\r\n}\r\nexport enum eOutputFieldType {\r\n wordText = \"wordText\",\r\n wordContainer = \"wordContainer\",\r\n wordImage = \"wordImage\",\r\n wordList = \"wordList\",\r\n excelSheet = \"excelSheet\",\r\n excelCell = \"excelCell\",\r\n excelImage = \"excelImage\",\r\n excelTable = \"excelTable\",\r\n excelChart = \"excelChart\",\r\n cadReplaceComponent = \"cadReplaceComponent\",\r\n cadAngleMate = \"cadAngleMate\",\r\n cadCoincidentMate = \"cadCoincidentMate\",\r\n cadCoordinateSystemMate = \"cadCoordinateSystemMate\",\r\n cadDistanceMate = \"cadDistanceMate\",\r\n cadPositionConstraint = \"cadPositionConstraint\",\r\n cadDimension = \"cadDimension\",\r\n cadFeature = \"cadFeature\",\r\n cadLibFeature = \"cadLibFeature\",\r\n cadCustomProperty = \"cadCustomProperty\",\r\n cadComponent = \"cadComponent\",\r\n cadDrawingView = \"cadDrawingView\",\r\n cadDrawingSheet = \"cadDrawingSheet\",\r\n cadDrawingAnnotation = \"cadDrawingAnnotation\",\r\n cadDynamicDrawingDimension = \"cadDynamicDrawingDimension\",\r\n cadDynamicDrawingAnnotation = \"cadDynamicDrawingAnnotation\",\r\n cadDynamicComponent = \"cadDynamicComponent\",\r\n cadNestedComponent = \"cadNestedComponent\",\r\n cadScaleFeature = \"cadScaleFeature\",\r\n cadAnnotation = \"cadAnnotation\",\r\n cadText = \"cadText\",\r\n cadParameter = \"cadParameter\",\r\n cadRepresentation = \"cadRepresentation\",\r\n cadPoint = \"cadPoint\",\r\n cadLayer = \"cadLayer\",\r\n bomMapping = \"bomMapping\",\r\n salesForceObject = \"salesForceObject\",\r\n cadDrawingDimension = \"cadDrawingDimension\",\r\n pdfSection = \"pdfSection\",\r\n cadLibReference = \"cadLibReference\",\r\n cadLibDimension = \"cadLibDimension\",\r\n cadBlock = \"cadBlock\",\r\n cadBlockArray = \"cadBlockArray\",\r\n zipSection = \"zipSection\",\r\n}\r\nexport enum eExportType {\r\n _custom = \"_custom\",\r\n pdf = \"pdf\",\r\n bmp = \"bmp\",\r\n doc = \"doc\",\r\n docm = \"docm\",\r\n dot = \"dot\",\r\n dotm = \"dotm\",\r\n dotx = \"dotx\",\r\n emf = \"emf\",\r\n epub = \"epub\",\r\n html = \"html\",\r\n jpg = \"jpg\",\r\n gif = \"gif\",\r\n tiff = \"tiff\",\r\n dwf = \"dwf\",\r\n edrw = \"edrw\",\r\n png = \"png\",\r\n odt = \"odt\",\r\n rtf = \"rtf\",\r\n tif = \"tif\",\r\n xaml = \"xaml\",\r\n xps = \"xps\",\r\n ods = \"ods\",\r\n svg = \"svg\",\r\n txt = \"txt\",\r\n easm = \"easm\",\r\n prt = \"prt\",\r\n g = \"g\",\r\n dwg = \"dwg\",\r\n dxf = \"dxf\",\r\n sldprt = \"sldprt\",\r\n sldasm = \"sldasm\",\r\n slddrw = \"slddrw\",\r\n sldlfp = \"sldlfp\",\r\n x_t = \"x_t\",\r\n x_b = \"x_b\",\r\n igs = \"igs\",\r\n stl = \"stl\",\r\n wrl = \"wrl\",\r\n u3d = \"u3d\",\r\n psd = \"psd\",\r\n ai = \"ai\",\r\n cgr = \"cgr\",\r\n asm = \"asm\",\r\n hcg = \"hcg\",\r\n hsf = \"hsf\",\r\n sat = \"sat\",\r\n stp = \"stp\",\r\n step = \"step\",\r\n vda = \"vda\",\r\n neu = \"neu\",\r\n iv = \"iv\",\r\n slp = \"slp\",\r\n eps = \"eps\",\r\n catproduct = \"catproduct\",\r\n jt = \"jt\",\r\n zgl = \"zgl\",\r\n xgl = \"xgl\",\r\n csv = \"csv\",\r\n xml = \"xml\",\r\n}\r\nexport enum eFileSource {\r\n generated = \"generated\",\r\n uploaded = \"uploaded\",\r\n media = \"media\",\r\n fileUploadField = \"fileUploadField\",\r\n}\r\nexport enum eFileStatus {\r\n none = \"none\",\r\n generating = \"generating\",\r\n complete = \"complete\",\r\n failed = \"failed\",\r\n}\r\nexport enum eLogType {\r\n info = \"info\",\r\n error = \"error\",\r\n warning = \"warning\",\r\n}\r\nexport enum eLogSource {\r\n productRule = \"productRule\",\r\n workflowRule = \"workflowRule\",\r\n quoteHeaderRule = \"quoteHeaderRule\",\r\n quoteAction = \"quoteAction\",\r\n output = \"output\",\r\n outputRule = \"outputRule\",\r\n outputDriver = \"outputDriver\",\r\n safeFunction = \"safeFunction\",\r\n restHelper = \"restHelper\",\r\n workerRole = \"workerRole\",\r\n sceneImporterWatcher = \"sceneImporterWatcher\",\r\n sceneExporterWatcher = \"sceneExporterWatcher\",\r\n notificationQueueWatcher = \"notificationQueueWatcher\",\r\n configuratorPricingRule = \"configuratorPricingRule\",\r\n configuratorSubmitRule = \"configuratorSubmitRule\",\r\n configuratorNamingRule = \"configuratorNamingRule\",\r\n configuratorLoadedRule = \"configuratorLoadedRule\",\r\n configuratorValueRule = \"configuratorValueRule\",\r\n configuratorValidationRule = \"configuratorValidationRule\",\r\n configuratorMethodOfManufactureRule = \"configuratorMethodOfManufactureRule\",\r\n table = \"table\",\r\n kineticDocumentRules = \"kineticDocumentRules\",\r\n}\r\nexport enum eFieldType {\r\n text = \"text\",\r\n number = \"number\",\r\n boolean = \"boolean\",\r\n color = \"color\",\r\n date = \"date\",\r\n upload = \"upload\",\r\n textArray = \"textArray\",\r\n numberArray = \"numberArray\",\r\n colorArray = \"colorArray\",\r\n}\r\nexport enum eFieldControl {\r\n none = \"none\",\r\n textbox = \"textbox\",\r\n multilineTextbox = \"multilineTextbox\",\r\n label = \"label\",\r\n numberbox = \"numberbox\",\r\n checkbox = \"checkbox\",\r\n toggle = \"toggle\",\r\n select = \"select\",\r\n colorSelect = \"colorSelect\",\r\n button = \"button\",\r\n upload = \"upload\",\r\n slider = \"slider\",\r\n imageSelect = \"imageSelect\",\r\n colorPicker = \"colorPicker\",\r\n swatchSelect = \"swatchSelect\",\r\n autoComplete = \"autoComplete\",\r\n media = \"media\",\r\n html = \"html\",\r\n datePicker = \"datePicker\",\r\n multiSelect = \"multiSelect\",\r\n colorMultiSelect = \"colorMultiSelect\",\r\n imageMultiSelect = \"imageMultiSelect\",\r\n radio = \"radio\",\r\n mediaPicker = \"mediaPicker\",\r\n}\r\nexport enum eSort {\r\n none = \"none\",\r\n ascending = \"ascending\",\r\n descending = \"descending\",\r\n}\r\nexport enum eProductSortBy {\r\n relevance = \"relevance\",\r\n priceLowToHigh = \"priceLowToHigh\",\r\n priceHighToLow = \"priceHighToLow\",\r\n popularity = \"popularity\",\r\n nameAtoZ = \"nameAtoZ\",\r\n}\r\nexport enum eFormatType {\r\n none = \"none\",\r\n number = \"number\",\r\n currency = \"currency\",\r\n percentage = \"percentage\",\r\n}\r\nexport enum eRuleType {\r\n value = \"value\",\r\n visibility = \"visibility\",\r\n validation = \"validation\",\r\n pricing = \"pricing\",\r\n message = \"message\",\r\n loaded = \"loaded\",\r\n submit = \"submit\",\r\n pageChanged = \"pageChanged\",\r\n tabChanged = \"tabChanged\",\r\n expanderChanged = \"expanderChanged\",\r\n output = \"output\",\r\n action = \"action\",\r\n function = \"function\",\r\n global = \"global\",\r\n globalEvent = \"globalEvent\",\r\n safeFunction = \"safeFunction\",\r\n naming = \"naming\",\r\n field = \"field\",\r\n button = \"button\",\r\n svgViewer = \"svgViewer\",\r\n dragStart = \"dragStart\",\r\n dragMove = \"dragMove\",\r\n dragEnd = \"dragEnd\",\r\n optionFilter = \"optionFilter\",\r\n nested = \"nested\",\r\n resize = \"resize\",\r\n nestedSetSelected = \"nestedSetSelected\",\r\n keyboard = \"keyboard\",\r\n manufacture = \"manufacture\",\r\n kineticDocumentRules = \"kineticDocumentRules\",\r\n layout = \"layout\",\r\n configuratorAdded = \"configuratorAdded\",\r\n configuratorRemoved = \"configuratorRemoved\",\r\n configuratorCopied = \"configuratorCopied\",\r\n product = \"product\",\r\n workflow = \"workflow\",\r\n beforeBuild = \"beforeBuild\",\r\n globalDefinition = \"globalDefinition\",\r\n quote = \"quote\",\r\n scene = \"scene\",\r\n sceneLoaded = \"sceneLoaded\",\r\n xrEnter = \"xrEnter\",\r\n xrExit = \"xrExit\",\r\n}\r\nexport enum eClusterEnv {\r\n prod = \"prod\",\r\n staging = \"staging\",\r\n debug = \"debug\",\r\n next = \"next\",\r\n dev = \"dev\",\r\n}\r\nexport enum eConfiguratorLayout {\r\n standard = \"standard\",\r\n immersive = \"immersive\",\r\n}\r\nexport enum eConfiguratorTabStyle {\r\n cards = \"cards\",\r\n tree = \"tree\",\r\n}\r\nexport enum eDeploymentStatus {\r\n inProgress = \"inProgress\",\r\n success = \"success\",\r\n failed = \"failed\",\r\n}\r\nexport enum eDifference {\r\n none = \"none\",\r\n changed = \"changed\",\r\n added = \"added\",\r\n removed = \"removed\",\r\n}\r\nexport enum eViewerMode {\r\n none = \"none\",\r\n media = \"media\",\r\n scene = \"scene\",\r\n}\r\nexport enum ePosition {\r\n left = \"left\",\r\n right = \"right\",\r\n}\r\nexport enum eTabPosition {\r\n left = \"left\",\r\n right = \"right\",\r\n top = \"top\",\r\n bottom = \"bottom\",\r\n}\r\nexport enum eColumnType {\r\n text = \"text\",\r\n number = \"number\",\r\n boolean = \"boolean\",\r\n color = \"color\",\r\n date = \"date\",\r\n media = \"media\",\r\n translated = \"translated\",\r\n}\r\nexport enum eSelectSource {\r\n simple = \"simple\",\r\n optionFilter = \"optionFilter\",\r\n}\r\nexport enum eAutoCompleteSource {\r\n table = \"table\",\r\n database = \"database\",\r\n}\r\nexport enum eOptionFilterSource {\r\n table = \"table\",\r\n database = \"database\",\r\n query = \"query\",\r\n safeFunction = \"safeFunction\",\r\n optionFilter = \"optionFilter\",\r\n}\r\nexport enum eDynamicSource {\r\n media = \"media\",\r\n template = \"template\",\r\n output = \"output\",\r\n nested = \"nested\",\r\n nestedExport = \"nestedExport\",\r\n exprt = \"exprt\",\r\n url = \"url\",\r\n tag = \"tag\",\r\n quoteOutput = \"quoteOutput\",\r\n fileUploadField = \"fileUploadField\",\r\n}\r\nexport enum eQueryMode {\r\n none = \"none\",\r\n table = \"table\",\r\n database = \"database\",\r\n array = \"array\",\r\n optionFilter = \"optionFilter\",\r\n parentOptionFilter = \"parentOptionFilter\",\r\n}\r\nexport enum eConfiguratorImageSource {\r\n none = \"none\",\r\n media = \"media\",\r\n scene = \"scene\",\r\n}\r\nexport enum ePricingFillFromSource {\r\n none = \"none\",\r\n table = \"table\",\r\n database = \"database\",\r\n}\r\nexport enum eSingleOptionBehavior {\r\n nothing = \"nothing\",\r\n disable = \"disable\",\r\n hide = \"hide\",\r\n}\r\nexport enum eFilterSource {\r\n none = \"none\",\r\n enum = \"enum\",\r\n properties = \"properties\",\r\n users = \"users\",\r\n states = \"states\",\r\n configurators = \"configurators\",\r\n fields = \"fields\",\r\n customers = \"customers\",\r\n roles = \"roles\",\r\n productSorts = \"productSorts\",\r\n manufacturers = \"manufacturers\",\r\n attributes = \"attributes\",\r\n suggestContacts = \"suggestContacts\",\r\n suggestCustomers = \"suggestCustomers\",\r\n suggestQuotes = \"suggestQuotes\",\r\n suggestProducts = \"suggestProducts\",\r\n headerFields = \"headerFields\",\r\n}\r\nexport enum eFilterType {\r\n property = \"property\",\r\n fieldValue = \"fieldValue\",\r\n sort = \"sort\",\r\n attribute = \"attribute\",\r\n headerValue = \"headerValue\",\r\n}\r\nexport enum eFilterControl {\r\n none = \"none\",\r\n text = \"text\",\r\n select = \"select\",\r\n multiSelect = \"multiSelect\",\r\n dateRange = \"dateRange\",\r\n numberRange = \"numberRange\",\r\n suggest = \"suggest\",\r\n checkbox = \"checkbox\",\r\n}\r\nexport enum eLogSetting {\r\n all = \"all\",\r\n minimal = \"minimal\",\r\n}\r\nexport enum eHotspotSource {\r\n none = \"none\",\r\n text = \"text\",\r\n media = \"media\",\r\n element = \"element\",\r\n}\r\nexport enum eHotspotAttach {\r\n topLeft = \"topLeft\",\r\n top = \"top\",\r\n topRight = \"topRight\",\r\n left = \"left\",\r\n center = \"center\",\r\n right = \"right\",\r\n bottomLeft = \"bottomLeft\",\r\n bottom = \"bottom\",\r\n bottomRight = \"bottomRight\",\r\n}\r\nexport enum eLayerLineWeight {\r\n lnWtByLayer = \"lnWtByLayer\",\r\n lnWtByBlock = \"lnWtByBlock\",\r\n lnWtByLwDefault = \"lnWtByLwDefault\",\r\n lnWt000 = \"lnWt000\",\r\n lnWt005 = \"lnWt005\",\r\n lnWt009 = \"lnWt009\",\r\n lnWt013 = \"lnWt013\",\r\n lnWt015 = \"lnWt015\",\r\n lnWt018 = \"lnWt018\",\r\n lnWt020 = \"lnWt020\",\r\n lnWt025 = \"lnWt025\",\r\n lnWt030 = \"lnWt030\",\r\n lnWt035 = \"lnWt035\",\r\n lnWt040 = \"lnWt040\",\r\n lnWt050 = \"lnWt050\",\r\n lnWt053 = \"lnWt053\",\r\n lnWt060 = \"lnWt060\",\r\n lnWt070 = \"lnWt070\",\r\n lnWt080 = \"lnWt080\",\r\n lnWt090 = \"lnWt090\",\r\n lnWt100 = \"lnWt100\",\r\n lnWt106 = \"lnWt106\",\r\n lnWt120 = \"lnWt120\",\r\n lnWt140 = \"lnWt140\",\r\n lnWt158 = \"lnWt158\",\r\n lnWt200 = \"lnWt200\",\r\n lnWt211 = \"lnWt211\",\r\n}\r\nexport enum eHotspotPosition {\r\n manual = \"manual\",\r\n target = \"target\",\r\n}\r\nexport enum eAnimationEasing {\r\n linear = \"linear\",\r\n easeInQuad = \"easeInQuad\",\r\n easeOutQuad = \"easeOutQuad\",\r\n easeInOutQuad = \"easeInOutQuad\",\r\n easeInCubic = \"easeInCubic\",\r\n easeOutCubic = \"easeOutCubic\",\r\n easeInOutCubic = \"easeInOutCubic\",\r\n easeInQuart = \"easeInQuart\",\r\n easeOutQuart = \"easeOutQuart\",\r\n easeInOutQuart = \"easeInOutQuart\",\r\n easeInQuint = \"easeInQuint\",\r\n easeOutQuint = \"easeOutQuint\",\r\n easeInOutQuint = \"easeInOutQuint\",\r\n easeInSine = \"easeInSine\",\r\n easeOutSine = \"easeOutSine\",\r\n easeInOutSine = \"easeInOutSine\",\r\n easeInExpo = \"easeInExpo\",\r\n easeOutExpo = \"easeOutExpo\",\r\n easeInOutExpo = \"easeInOutExpo\",\r\n easeInCirc = \"easeInCirc\",\r\n easeOutCirc = \"easeOutCirc\",\r\n easeInOutCirc = \"easeInOutCirc\",\r\n easeInElastic = \"easeInElastic\",\r\n easeOutElastic = \"easeOutElastic\",\r\n easeInOutElastic = \"easeInOutElastic\",\r\n easeInBack = \"easeInBack\",\r\n easeOutBack = \"easeOutBack\",\r\n easeInOutBack = \"easeInOutBack\",\r\n easeInBounce = \"easeInBounce\",\r\n easeOutBounce = \"easeOutBounce\",\r\n easeInOutBounce = \"easeInOutBounce\",\r\n}\r\nexport enum eQueueMessageType {\r\n builder = \"builder\",\r\n cleanDb = \"cleanDb\",\r\n completeBuildState = \"completeBuildState\",\r\n notification = \"notification\",\r\n render = \"render\",\r\n pullSfdcProducts = \"pullSfdcProducts\",\r\n upsertProductsToSfdc = \"upsertProductsToSfdc\",\r\n submitFromSfdcCpq = \"submitFromSfdcCpq\",\r\n deployment = \"deployment\",\r\n completeQuoteProductBuild = \"completeQuoteProductBuild\",\r\n sceneImport = \"sceneImport\",\r\n sceneExport = \"sceneExport\",\r\n sceneConvert = \"sceneConvert\",\r\n}\r\nexport enum eStateType {\r\n state = \"state\",\r\n approval = \"approval\",\r\n build = \"build\",\r\n}\r\nexport enum eDescriptorType {\r\n user = \"user\",\r\n role = \"role\",\r\n email = \"email\",\r\n}\r\nexport enum eWorkflowBuildType {\r\n quoteOutput = \"quoteOutput\",\r\n configurator = \"configurator\",\r\n}\r\nexport enum eWorkflowPermissionType {\r\n view = \"view\",\r\n viewOutput = \"viewOutput\",\r\n}\r\nexport enum eAdminNotificationTarget {\r\n companyAdmins = \"companyAdmins\",\r\n allUsersExceptSelfRegistered = \"allUsersExceptSelfRegistered\",\r\n}\r\nexport enum eConfiguratorEntityType {\r\n product = \"product\",\r\n quoteHeader = \"quoteHeader\",\r\n}\r\nexport enum eHotspotShape {\r\n circle = \"circle\",\r\n circleWithText = \"circleWithText\",\r\n image = \"image\",\r\n mesh = \"mesh\",\r\n text = \"text\",\r\n}\r\nexport enum eValidationType {\r\n error = \"error\",\r\n warning = \"warning\",\r\n info = \"info\",\r\n}\r\nexport enum eIconStyle {\r\n none = \"none\",\r\n icon = \"icon\",\r\n media = \"media\",\r\n}\r\nexport enum eOracleCpqOperation {\r\n createTransaction = \"createTransaction\",\r\n importFileAttachment = \"importFileAttachment\",\r\n}\r\nexport enum eOptionLayout {\r\n wrap = \"wrap\",\r\n vertical = \"vertical\",\r\n scroll = \"scroll\",\r\n}\r\nexport enum eButtonStyle {\r\n normal = \"normal\",\r\n link = \"link\",\r\n outline = \"outline\",\r\n}\r\nexport enum eTableExternalSource {\r\n none = \"none\",\r\n database = \"database\",\r\n}\r\nexport enum eSkin {\r\n classic = \"classic\",\r\n material = \"material\",\r\n}\r\nexport enum eGridColumnWidth {\r\n auto = \"auto\",\r\n x1 = \"x1\",\r\n x2 = \"x2\",\r\n x3 = \"x3\",\r\n x4 = \"x4\",\r\n x5 = \"x5\",\r\n x6 = \"x6\",\r\n x7 = \"x7\",\r\n x8 = \"x8\",\r\n x9 = \"x9\",\r\n x10 = \"x10\",\r\n x11 = \"x11\",\r\n x12 = \"x12\",\r\n}\r\nexport enum eRelativeSize {\r\n auto = \"auto\",\r\n x1 = \"x1\",\r\n x2 = \"x2\",\r\n x3 = \"x3\",\r\n x4 = \"x4\",\r\n x5 = \"x5\",\r\n x6 = \"x6\",\r\n x7 = \"x7\",\r\n x8 = \"x8\",\r\n x9 = \"x9\",\r\n x10 = \"x10\",\r\n x11 = \"x11\",\r\n x12 = \"x12\",\r\n custom = \"custom\",\r\n}\r\nexport enum eVerticalAlignment {\r\n stretch = \"stretch\",\r\n top = \"top\",\r\n center = \"center\",\r\n bottom = \"bottom\",\r\n}\r\nexport enum eHorizontalAlignment {\r\n left = \"left\",\r\n center = \"center\",\r\n right = \"right\",\r\n}\r\nexport enum ePadding {\r\n none = \"none\",\r\n small = \"small\",\r\n medium = \"medium\",\r\n large = \"large\",\r\n}\r\nexport enum eMaskType {\r\n none = \"none\",\r\n phone = \"phone\",\r\n zipCode = \"zipCode\",\r\n}\r\nexport enum eValidationTiming {\r\n always = \"always\",\r\n onTouched = \"onTouched\",\r\n}\r\nexport enum eTextStyle {\r\n normal = \"normal\",\r\n h1 = \"h1\",\r\n h2 = \"h2\",\r\n h3 = \"h3\",\r\n h4 = \"h4\",\r\n h5 = \"h5\",\r\n subtitle = \"subtitle\",\r\n emphasis = \"emphasis\",\r\n strong = \"strong\",\r\n}\r\nexport enum eTextColor {\r\n normal = \"normal\",\r\n header = \"header\",\r\n primary = \"primary\",\r\n accent = \"accent\",\r\n error = \"error\",\r\n success = \"success\",\r\n}\r\nexport enum eTextWeight {\r\n f100 = \"f100\",\r\n f200 = \"f200\",\r\n f300 = \"f300\",\r\n f400 = \"f400\",\r\n f500 = \"f500\",\r\n f600 = \"f600\",\r\n f700 = \"f700\",\r\n f800 = \"f800\",\r\n f900 = \"f900\",\r\n}\r\nexport enum eDragMode {\r\n plane = \"plane\",\r\n free = \"free\",\r\n surface = \"surface\",\r\n}\r\nexport enum eConnectionMode {\r\n none = \"none\",\r\n world = \"world\",\r\n screen = \"screen\",\r\n}\r\nexport enum eToolbarPosition {\r\n hidden = \"hidden\",\r\n topLeft = \"topLeft\",\r\n topRight = \"topRight\",\r\n bottomLeft = \"bottomLeft\",\r\n bottomRight = \"bottomRight\",\r\n}\r\nexport enum eContainerItemLayout {\r\n horizontal = \"horizontal\",\r\n vertical = \"vertical\",\r\n absolute = \"absolute\",\r\n}\r\nexport enum eContainerChildAlignment {\r\n inherit = \"inherit\",\r\n stretch = \"stretch\",\r\n start = \"start\",\r\n center = \"center\",\r\n end = \"end\",\r\n}\r\nexport enum eContainerItemAlignment {\r\n stretch = \"stretch\",\r\n start = \"start\",\r\n center = \"center\",\r\n end = \"end\",\r\n}\r\nexport enum eContainerItemJustify {\r\n start = \"start\",\r\n center = \"center\",\r\n end = \"end\",\r\n}\r\nexport enum eColorShade {\r\n default = \"default\",\r\n lighter1 = \"lighter1\",\r\n lighter2 = \"lighter2\",\r\n lighter3 = \"lighter3\",\r\n lighter4 = \"lighter4\",\r\n darker1 = \"darker1\",\r\n darker2 = \"darker2\",\r\n darker3 = \"darker3\",\r\n darker4 = \"darker4\",\r\n}\r\nexport enum eBackgroundColor {\r\n background = \"background\",\r\n primary = \"primary\",\r\n accent = \"accent\",\r\n warning = \"warning\",\r\n success = \"success\",\r\n input = \"input\",\r\n header = \"header\",\r\n}\r\nexport enum eElevation {\r\n none = \"none\",\r\n z1 = \"z1\",\r\n z2 = \"z2\",\r\n z3 = \"z3\",\r\n z4 = \"z4\",\r\n z5 = \"z5\",\r\n z6 = \"z6\",\r\n z7 = \"z7\",\r\n z8 = \"z8\",\r\n}\r\nexport enum eSliderValueVisibility {\r\n visible = \"visible\",\r\n sliding = \"sliding\",\r\n hidden = \"hidden\",\r\n}\r\nexport enum eOrientation {\r\n horizontal = \"horizontal\",\r\n vertical = \"vertical\",\r\n}\r\nexport enum eTabSelectionStyle {\r\n line = \"line\",\r\n background = \"background\",\r\n}\r\nexport enum eSelectionLineColor {\r\n accent = \"accent\",\r\n contrast = \"contrast\",\r\n primary = \"primary\",\r\n header = \"header\",\r\n}\r\nexport enum eTabWidth {\r\n custom = \"custom\",\r\n fill = \"fill\",\r\n auto = \"auto\",\r\n}\r\nexport enum eScroll {\r\n none = \"none\",\r\n auto = \"auto\",\r\n x = \"x\",\r\n y = \"y\",\r\n}\r\nexport enum eAdminIndexOperation {\r\n updateQuotes = \"updateQuotes\",\r\n}\r\nexport enum eAttributeType {\r\n text = \"text\",\r\n number = \"number\",\r\n boolean = \"boolean\",\r\n date = \"date\",\r\n}\r\nexport enum eAttributeControl {\r\n select = \"select\",\r\n imageSelect = \"imageSelect\",\r\n multiSelect = \"multiSelect\",\r\n imageMultiSelect = \"imageMultiSelect\",\r\n checkbox = \"checkbox\",\r\n}\r\nexport enum eNestedSetDisplay {\r\n container = \"container\",\r\n group = \"group\",\r\n tabControl = \"tabControl\",\r\n accordion = \"accordion\",\r\n}\r\nexport enum eUserLicenseType {\r\n external = \"external\",\r\n internal = \"internal\",\r\n channel = \"channel\",\r\n}\r\nexport enum eJobStatus {\r\n none = \"none\",\r\n waiting = \"waiting\",\r\n queued = \"queued\",\r\n working = \"working\",\r\n complete = \"complete\",\r\n failed = \"failed\",\r\n}\r\nexport enum eJobType {\r\n build = \"build\",\r\n render = \"render\",\r\n notification = \"notification\",\r\n upsertProductsToSfdc = \"upsertProductsToSfdc\",\r\n pullSfdcProducts = \"pullSfdcProducts\",\r\n submitFromSfdcCpq = \"submitFromSfdcCpq\",\r\n completeBuildState = \"completeBuildState\",\r\n cleanDb = \"cleanDb\",\r\n deployment = \"deployment\",\r\n sceneImport = \"sceneImport\",\r\n sceneExport = \"sceneExport\",\r\n sceneConvert = \"sceneConvert\",\r\n completeQuoteProductBuild = \"completeQuoteProductBuild\",\r\n configuratorExport = \"configuratorExport\",\r\n configuratorImport = \"configuratorImport\",\r\n}\r\nexport enum eValidationSource {\r\n snap = \"snap\",\r\n configurator = \"configurator\",\r\n scene = \"scene\",\r\n}\r\nexport enum eBuildStatus {\r\n none = \"none\",\r\n generating = \"generating\",\r\n complete = \"complete\",\r\n failed = \"failed\",\r\n}\r\n","\r\nexport enum eViewType {\r\n view = \"view\",\r\n edit = \"edit\",\r\n new = \"new\"\r\n}\r\n\r\nexport enum eAdminType {\r\n configurator = \"configurator\",\r\n quoteOutput = \"quoteOutput\",\r\n scene = \"scene\",\r\n productRule = \"productRule\",\r\n quoteHeader = \"quoteHeader\",\r\n layout = \"layout\"\r\n}\r\n\r\nexport enum eAlertType {\r\n info = \"info\",\r\n error = \"error\",\r\n success = \"success\"\r\n}\r\n\r\nexport enum eColorFormat {\r\n kbcolor = \"kbcolor\",\r\n hex = \"hex\", \r\n hsl = \"hsl\",\r\n hslString = \"hslString\",\r\n hsv = \"hsv\",\r\n hsvString = \"hsvString\",\r\n rgb = \"rgb\",\r\n rgbString = \"rgbString\"\r\n}\r\n\r\nexport enum eColorOperation {\r\n lighten = \"lighten\",\r\n brighten = \"brighten\",\r\n darken = \"darken\",\r\n saturate = \"saturate\",\r\n desaturate = \"desaturate\"\r\n}","import * as _allEnums from \"./enums\";\r\nexport let AllEnums = _allEnums;","import { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { Output } from \"@models/configurators/outputs/output\";\r\nimport { IOutput, IOutputField } from \"@models/entity-models\";\r\nimport { eOutputFieldType, eOutputType } from \"@models/enums\";\r\nimport { Constructor, IMap } from \"@tools\";\r\n\r\nexport interface IKbo {\r\n token: CToken;\r\n class: Constructor;\r\n outputFieldType?: eOutputFieldType;\r\n outputTypes?: eOutputType[];\r\n}\r\n\r\nexport function Kbo(token: CToken) {\r\n return (target: Constructor) => {\r\n ConfiguratorDI.register({ token, class: target });\r\n };\r\n}\r\n\r\nexport function KboOutputField(token: CToken, outputFieldType: eOutputFieldType) {\r\n return (target: Constructor) => {\r\n ConfiguratorDI.register({ token, class: target, outputFieldType });\r\n };\r\n}\r\n\r\nexport function KboOutput(token: CToken, ...outputTypes: eOutputType[]) {\r\n return (target: Constructor) => {\r\n ConfiguratorDI.register({ token, class: target, outputTypes });\r\n };\r\n}\r\n\r\n/**\r\n * Applied to a getter or setter property, will make it enumerable\r\n */\r\nexport function Enumerable() {\r\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\r\n descriptor.enumerable = true;\r\n }\r\n}\r\n\r\nexport class ConfiguratorDI {\r\n private static db: IMap = {};\r\n\r\n public static register(args: IKbo) {\r\n if (ConfiguratorDI.db.hasOwnProperty(args.token.key)) {\r\n throw new Error(`A type with key ${args.token.key} has already been registered`);\r\n }\r\n ConfiguratorDI.db[args.token.key] = args;\r\n\r\n args.class.prototype.$type = args.token.key;\r\n if (args.outputFieldType) args.class.prototype.type = args.outputFieldType;\r\n if (args.outputTypes && args.outputTypes.length == 1) args.class.prototype.type = args.outputTypes[0];\r\n }\r\n\r\n public static get(token: CToken): IKbo {\r\n return ConfiguratorDI.db[token.key];\r\n }\r\n\r\n /**\r\n * Checks if the instance of a class given is an instance of the class represented by it's \r\n * injectable class key. If the instance is an instance of a class that was not\r\n * decorated, or if the class represented by the key was not decorated, then this will\r\n * return false!\r\n * @param instance An instance of a class that was decorated\r\n * @param classKey String key of the class you want to see if the instance is an instance of\r\n */\r\n public static instanceOf(instance: any, token: CToken): instance is T {\r\n // find the injectable\r\n let inj = this.get(token);\r\n return inj ? instance instanceof inj.class : false;\r\n }\r\n\r\n public static getNewOutputField(\r\n fieldType: eOutputFieldType,\r\n kom: KbObjectManager,\r\n args?: IOutputField\r\n ): T {\r\n let ikbo: IKbo = Object.values(ConfiguratorDI.db).find((k: IKbo) => k.outputFieldType == fieldType);\r\n if (!ikbo) throw new Error(`Cannot not find output field type '${fieldType}`);\r\n let f = new ikbo.class(kom) as T;\r\n if (args) {\r\n kom.recurse(args, f);\r\n }\r\n return f;\r\n }\r\n\r\n public static getNewOutput(outputType: eOutputType, kom: KbObjectManager, args?: IOutput): T {\r\n let ikbo: IKbo = Object.values(ConfiguratorDI.db).find((k: IKbo) => k.outputTypes && k.outputTypes.contains(outputType));\r\n if (!ikbo) throw new Error(`Cannot not find output type '${outputType}`);\r\n\r\n let o = new ikbo.class(kom) as T;\r\n if (!o.type) {\r\n o.type = outputType;\r\n }\r\n if (args) {\r\n kom.recurse(args, o);\r\n }\r\n o.name = (args && args.name) ? args.name : loc[\"eoutputtype_\" + outputType.toLowerCase() + \"_title\"];\r\n return o;\r\n }\r\n\r\n public static getOutputFieldClassName(outputFieldType: eOutputFieldType) {\r\n let ikbo: IKbo = Object.values(ConfiguratorDI.db).find((k: IKbo) => k.outputFieldType == outputFieldType);\r\n return ikbo.token.key;\r\n }\r\n\r\n public static getOutputClassName(outputType: eOutputType) {\r\n let ikbo: IKbo = Object.values(ConfiguratorDI.db).find((k: IKbo) => k.outputTypes && k.outputTypes.contains(outputType));\r\n return ikbo.token.key;\r\n }\r\n}\r\n","import { IMediaObject } from \"@models/entity-models\";\r\n\r\nexport interface IAlert {\r\n id?: string;\r\n type?: string;\r\n msg?: any;\r\n persist?: boolean;\r\n timeShown?: number;\r\n /**\r\n * will show progress animations while the promise is active if provided\r\n */\r\n promise?: ng.IPromise;\r\n /**\r\n * the message to show if the promise is a success. If left null, alert will continue to show the original msg. if it fails, the promise reason will become the msg\r\n */\r\n successMsg?: string;\r\n /**\r\n * on promise failure, controls whether the failure reason of the promise will be shown as the msg. Defaults to true.\r\n */\r\n showPromiseReasonOnFail?: boolean;\r\n /**\r\n * a url to an angular template that will be used to fill the content instead of the msg\r\n */\r\n templateUrl?: string;\r\n /**\r\n * HTML string that will be used to fill the content instead of the msg\r\n */\r\n template?: string;\r\n /**\r\n * a scope to go along with the templateUrl\r\n */\r\n scope?: ng.IScope;\r\n}\r\n\r\nexport interface IDialog {\r\n content: JQuery;\r\n buttons: IDialogButton[];\r\n type: string;\r\n visible: boolean;\r\n keypress: (e: JQueryEventObject) => void;\r\n tracker: ng.IPromiseTracker; // shows a progress bar at the top\r\n fullHeight: boolean;\r\n}\r\n\r\nexport interface IDialogButton {\r\n title: string;\r\n icon: string;\r\n callback: (args: TArgs) => void;\r\n visible: boolean;\r\n}\r\n\r\nexport interface IDialogOptions {\r\n type?: string;\r\n content?: any;\r\n templateUrl?: string;\r\n template?: string;\r\n buttons?: IDialogButton[];\r\n buttonArgs?: () => DialogButtonArgs; // a function that returns the args\r\n scope?: ng.IScope;\r\n tracker?: ng.IPromiseTracker;\r\n fullHeight?: boolean; // instead of an auto height dialog, make it take up the whole screen\r\n}\r\n\r\nexport enum eInputDialogType {\r\n text = \"text\",\r\n html = \"html\",\r\n textArea = \"textArea\",\r\n select = \"select\",\r\n snap = \"snap\",\r\n}\r\n\r\nexport interface IInputOptions {\r\n msg?: string;\r\n value?: any;\r\n inputType?: string;\r\n source?: any;\r\n valueField?: string;\r\n labelField?: string;\r\n buttons?: IDialogButton[];\r\n}\r\n\r\nexport enum eMediaFilter {\r\n all,\r\n images,\r\n videos,\r\n imagesAndVideos,\r\n environments\r\n}\r\n\r\nexport interface IMediaDialogOptions {\r\n startPath?: string;\r\n buttons?: MediaDialogButton[];\r\n filter?: eMediaFilter;\r\n apiPath?: string;\r\n rootDir?: string;\r\n open?: (file: IMediaObject) => void;\r\n}\r\n\r\nexport interface IDialogService {\r\n alerts: IAlert[];\r\n dialogs: IDialog[];\r\n progress(options: IAlert);\r\n confirm(confirmMessage: string, yesCallback: () => void, noCallback?: () => void);\r\n alert(alert: IAlert);\r\n closeAlert(index);\r\n dialog(options: IDialogOptions): IDialog;\r\n input(options);\r\n mediaSelect(options);\r\n}\r\n\r\nexport class DialogButtonArgs {\r\n constructor() {\r\n this.close = true;\r\n }\r\n public close: boolean;\r\n}\r\n\r\nexport class InputDialogButtonArgs extends DialogButtonArgs {\r\n constructor() {\r\n super();\r\n }\r\n public value: any;\r\n}\r\n\r\nexport class MediaDialogButtonArgs extends DialogButtonArgs {\r\n constructor() {\r\n super();\r\n }\r\n public selectedItem: IMediaObject;\r\n}\r\n\r\nexport class DialogButton implements IDialogButton {\r\n constructor(\r\n public title: string,\r\n public icon: string,\r\n public callback: (args: TArgs) => void = null,\r\n public visible = true\r\n ) { }\r\n}\r\n\r\nexport class InputDialogButton extends DialogButton { }\r\nexport class MediaDialogButton extends DialogButton { }","// tslint:disable:variable-name\r\n\r\nexport class CToken {\r\n protected constructor(public key: string) { }\r\n\r\n public static withKey(key: string): CToken {\r\n let token = this[key] as CToken;\r\n if (!token) throw new Error(`Could not find token for key '${key}'`);\r\n return token;\r\n }\r\n\r\n public static hasKey(key: string): boolean {\r\n return this[key] != null;\r\n }\r\n\r\n // configurator models\r\n\r\n public static Accordion = new CToken(\"Accordion\");\r\n public static ActionBar = new CToken(\"ActionBar\");\r\n public static Build = new CToken(\"Build\");\r\n public static Button = new CToken(\"Button\");\r\n public static Configurator = new CToken(\"Configurator\");\r\n public static ConfiguratorAction = new CToken(\"ConfiguratorAction\");\r\n public static ConfiguratorFunction = new CToken(\"ConfiguratorFunction\");\r\n public static Container = new CToken(\"Container\");\r\n public static DropdownButton = new CToken(\"DropdownButton\");\r\n public static Expander = new CToken(\"Expander\");\r\n public static Export = new CToken(\"Export\");\r\n public static Field = new CToken(\"Field\");\r\n public static GridColumn = new CToken(\"GridColumn\");\r\n public static GridRow = new CToken(\"GridRow\");\r\n public static Group = new CToken(\"Group\");\r\n public static Html = new CToken(\"Html\");\r\n public static SvgViewer = new CToken(\"SvgViewer\");\r\n public static Hotspot = new CToken(\"Hotspot\");\r\n public static KbObject = new CToken(\"KbObject\");\r\n public static LayoutConfig = new CToken(\"LayoutConfig\");\r\n public static LayoutContent = new CToken(\"LayoutContent\");\r\n public static Media = new CToken(\"Media\");\r\n public static NestedSet = new CToken(\"NestedSet\");\r\n public static OptionFilter = new CToken(\"OptionFilter\");\r\n public static Option = new CToken(\"Option\");\r\n public static Page = new CToken(\"Page\");\r\n public static PageControl = new CToken(\"PageControl\");\r\n public static PageNavigator = new CToken(\"PageNavigator\");\r\n public static PageTabs = new CToken(\"PageTabs\");\r\n public static Popup = new CToken(\"Popup\");\r\n public static PriceWidget = new CToken(\"PriceWidget\");\r\n public static PricingRuleContainer = new CToken(\"PricingRuleContainer\");\r\n public static ProductRuleContainer = new CToken(\"ProductRuleContainer\");\r\n public static ReferencedConfigurator = new CToken(\"ReferencedConfigurator\");\r\n public static RenderPassExport = new CToken(\"RenderPassExport\");\r\n public static RuleContainer = new CToken(\"RuleContainer\");\r\n public static Rule = new CToken(\"Rule\");\r\n public static Tab = new CToken(\"Tab\");\r\n public static TabControl = new CToken(\"TabControl\");\r\n public static Text = new CToken(\"Text\");\r\n public static Toolbar = new CToken(\"Toolbar\");\r\n public static Viewer = new CToken(\"Viewer\");\r\n\r\n // outputs\r\n public static BomOutput = new CToken(\"BomOutput\");\r\n public static CadDrawingOutput = new CToken(\"CadDrawingOutput\");\r\n public static CadOutput = new CToken(\"CadOutput\");\r\n public static ExcelOutput = new CToken(\"ExcelOutput\");\r\n public static FileOutput = new CToken(\"FileOutput\");\r\n public static ImageOutput = new CToken(\"ImageOutput\");\r\n public static Output = new CToken(\"Output\");\r\n public static PdfOutput = new CToken(\"PdfOutput\");\r\n public static SceneRenderOutput = new CToken(\"SceneRenderOutput\");\r\n public static WordOutput = new CToken(\"WordOutput\");\r\n public static ZipOutput = new CToken(\"ZipOutput\");\r\n public static SvgOutput = new CToken(\"SvgOutput\");\r\n public static TextOutput = new CToken(\"TextOutput\");\r\n\r\n // output fields\r\n public static ExcelCellField = new CToken(\"ExcelCellField\");\r\n public static ExcelChartField = new CToken(\"ExcelChartField\");\r\n public static ExcelImageField = new CToken(\"ExcelImageField\");\r\n public static ExcelSheetField = new CToken(\"ExcelSheetField\");\r\n public static ExcelTableField = new CToken(\"ExcelTableField\");\r\n public static OutputField = new CToken(\"OutputField\");\r\n public static PdfSectionField = new CToken(\"PdfSectionField\");\r\n public static WordContainerField = new CToken(\"WordContainerField\");\r\n public static WordImageField = new CToken(\"WordImageField\");\r\n public static WordListField = new CToken(\"WordListField\");\r\n public static WordTextField = new CToken(\"WordTextField\");\r\n public static ZipSectionField = new CToken(\"ZipSectionField\");\r\n\r\n // cad output fields\r\n public static CadAnnotationField = new CToken(\"CadAnnotationField\");\r\n public static CadBlockArrayField = new CToken(\"CadBlockArrayField\");\r\n public static CadBlockField = new CToken(\"CadBlockField\");\r\n public static CadComponentField = new CToken(\"CadComponentField\");\r\n public static CadCustomPropertyField = new CToken(\"CadCustomPropertyField\");\r\n public static CadDimensionField = new CToken(\"CadDimensionField\");\r\n public static CadDrawingAnnotationField = new CToken(\"CadDrawingAnnotationField\");\r\n public static CadDrawingDimensionField = new CToken(\"CadDrawingDimensionField\");\r\n public static CadDrawingSheetField = new CToken(\"CadDrawingSheetField\");\r\n public static CadDrawingViewField = new CToken(\"CadDrawingViewField\");\r\n public static CadDynamicComponentField = new CToken(\"CadDynamicComponentField\");\r\n public static CadDynamicDrawingAnnotationField = new CToken(\"CadDynamicDrawingAnnotationField\");\r\n public static CadDynamicDrawingDimensionField = new CToken(\"CadDynamicDrawingDimensionField\");\r\n public static CadFeatureField = new CToken(\"CadFeatureField\");\r\n public static CadLayerField = new CToken(\"CadLayerField\");\r\n public static CadLibFeatureField = new CToken(\"CadLibFeatureField\");\r\n public static CadParameterField = new CToken(\"CadParameterField\");\r\n public static CadReplaceComponentField = new CToken(\"CadReplaceComponentField\");\r\n public static CadRepresentationField = new CToken(\"CadRepresentationField\");\r\n public static CadScaleFeatureField = new CToken(\"CadScaleFeatureField\");\r\n public static CadTextField = new CToken(\"CadTextField\");\r\n\r\n // mates\r\n public static CadAngleMate = new CToken(\"CadAngleMate\");\r\n public static CadCoincidentMate = new CToken(\"CadCoincidentMate\");\r\n public static CadCoordinateSystemMate = new CToken(\"CadCoordinateSystemMate\");\r\n public static CadDistanceMate = new CToken(\"CadDistanceMate\");\r\n public static CadLibDimension = new CToken(\"CadLibDimension\");\r\n public static CadLibReference = new CToken(\"CadLibReference\");\r\n public static CadPositionConstraint = new CToken(\"CadPositionConstraint\");\r\n public static Constraint = new CToken(\"Constraint\");\r\n public static Mate = new CToken(\"Mate\");\r\n\r\n // manufacture\r\n public static PartRev = new CToken(\"PartRev\");\r\n public static PartMaterial = new CToken(\"PartMaterial\");\r\n public static PartOperation = new CToken(\"PartOperation\");\r\n public static PartOperationDetail = new CToken(\"PartOperationDetail\");\r\n public static MethodOfManufacture = new CToken(\"MethodOfManufacture\");\r\n}\r\n","let defaults = {\r\n Accordion: {\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n ActionBar: {\r\n buttonStyle: \"link\",\r\n buttonColor: \"background\",\r\n iconSize: 24,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Build: {\r\n idBuildType: 0,\r\n idQueue: 1,\r\n cloudBuild: true,\r\n },\r\n Button: {\r\n ruleType: \"button\",\r\n enabled: true,\r\n iconStyle: \"none\",\r\n textPosition: \"right\",\r\n buttonStyle: \"normal\",\r\n color: \"background\",\r\n imageHeight: 30,\r\n imageWidth: 30,\r\n showLabel: true,\r\n fullWidth: false,\r\n relativeWidth: \"auto\",\r\n useZeroPadding: false,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Configurator: {\r\n entityType: \"product\",\r\n unitOfMeasure: \"ea.\",\r\n price: 0.0,\r\n cost: 0.0,\r\n maxDiscountPercentage: 0.0,\r\n maxQty: 0.0,\r\n minQty: 1.0,\r\n allowFractionalQty: false,\r\n score: 0,\r\n usePartSelector: false,\r\n active: true,\r\n inheritCategoryPermissions: false,\r\n v: 0,\r\n snapVersion: 0,\r\n visible: true,\r\n alwaysChild: false,\r\n validationTiming: \"always\",\r\n allowSaveWithErrors: true,\r\n idLayout: -1,\r\n useMobileDropdowns: true,\r\n headerColor: \"header\",\r\n showMoveAnimation: false,\r\n viewerMode: \"none\",\r\n clearMemoryWhenSwitchingScenes: false,\r\n sceneToolbarPosition: \"bottomRight\",\r\n nestedSceneClickToSelect: true,\r\n runQuoteRuleUponInsert: false,\r\n imageSource: \"none\",\r\n allowUserToRemove: false,\r\n bubbleRules: false,\r\n hasPricingRule: false,\r\n hasQuoteRule: false,\r\n autoValidation: true,\r\n convertToKb3d: false,\r\n mouseOverEffects: true,\r\n mouseOverColor: \"#131313\",\r\n prefetchImages: true,\r\n allowOrbit: true,\r\n allowPan: true,\r\n allowZoom: true,\r\n constrainCameraToRadius: false,\r\n cameraRadius: 0.0,\r\n isPlaceholder: false,\r\n scroll: \"none\",\r\n itemLayout: \"horizontal\",\r\n itemAlignment: \"stretch\",\r\n itemJustify: \"start\",\r\n spaceBetweenItems: \"none\",\r\n padding: \"none\",\r\n collapseOnMobile: false,\r\n backgroundColor: \"background\",\r\n backgroundShade: \"default\",\r\n backgroundOpacity: 1.0,\r\n elevation: \"none\",\r\n relativeSize: \"x1\",\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n alignment: \"inherit\",\r\n },\r\n ConfiguratorAction: {\r\n iconStyle: \"icon\",\r\n textPosition: \"right\",\r\n visible: true,\r\n enabled: true,\r\n ruleType: \"action\",\r\n showLabel: true,\r\n relativeSize: \"auto\",\r\n },\r\n ConfiguratorFunction: {\r\n ruleType: \"action\",\r\n },\r\n Container: {\r\n isPlaceholder: false,\r\n scroll: \"none\",\r\n itemLayout: \"horizontal\",\r\n itemAlignment: \"stretch\",\r\n itemJustify: \"start\",\r\n spaceBetweenItems: \"none\",\r\n padding: \"none\",\r\n collapseOnMobile: false,\r\n backgroundColor: \"background\",\r\n backgroundShade: \"default\",\r\n backgroundOpacity: 1.0,\r\n elevation: \"none\",\r\n relativeSize: \"x1\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n alignment: \"inherit\",\r\n },\r\n DropdownButton: {\r\n ruleType: \"button\",\r\n enabled: true,\r\n iconStyle: \"none\",\r\n textPosition: \"right\",\r\n buttonStyle: \"normal\",\r\n color: \"background\",\r\n imageHeight: 30,\r\n imageWidth: 30,\r\n showLabel: true,\r\n fullWidth: false,\r\n relativeWidth: \"auto\",\r\n useZeroPadding: false,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Expander: {\r\n expanded: true,\r\n iconStyle: \"icon\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Field: {\r\n ruleType: \"field\",\r\n enabled: true,\r\n required: false,\r\n type: \"text\",\r\n control: \"none\",\r\n searchable: false,\r\n showLabel: true,\r\n mask: \"none\",\r\n precision: 2,\r\n constrainValue: false,\r\n min: 0,\r\n max: 0,\r\n step: 0,\r\n sliderAllowDirectEdit: false,\r\n sliderValueVisibility: \"visible\",\r\n dateFormat: \"Y-m-d\",\r\n format: \"none\",\r\n formatMinPrecision: 0,\r\n formatCurrency: \"USD\",\r\n formatDecimalSeparator: \".\",\r\n formatThousandsSeparator: \",\",\r\n selectSource: \"simple\",\r\n autoCompleteSource: \"table\",\r\n useFullTextSearch: false,\r\n constrainToSource: true,\r\n sort: \"none\",\r\n imageHeight: 30,\r\n imageWidth: 30,\r\n imageOnly: false,\r\n optionLayout: \"wrap\",\r\n dropdownOptionLayout: \"vertical\",\r\n enableSelectedImages: false,\r\n linkToDynamicAttribute: false,\r\n useZeroPadding: false,\r\n hasBeenTouched: false,\r\n uploadToScene: false,\r\n convertUploadedSceneImageToMesh: false,\r\n convertUploadPdfToImage: false,\r\n uploadImageThreshold: 0.5,\r\n iconStyle: \"icon\",\r\n buttonStyle: \"normal\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n GridColumn: {\r\n relativeWidth: \"x1\",\r\n verticalAlignment: \"stretch\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n GridRow: {\r\n verticalAlignment: \"stretch\",\r\n horizontalAlignment: \"left\",\r\n spaceBetweenItems: \"medium\",\r\n collapseOnMobile: true,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Group: {\r\n enabled: true,\r\n showLabel: true,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Hotspot: {\r\n target: true,\r\n popupPosition: \"target\",\r\n popupAttach: \"center\",\r\n keepPopupInViewer: true,\r\n popupOffsetX: 0,\r\n popupOffsetY: 0,\r\n popupTop: \"auto\",\r\n popupLeft: \"auto\",\r\n popupBottom: \"auto\",\r\n popupRight: \"auto\",\r\n popupWidth: \"auto\",\r\n popupHeight: \"auto\",\r\n visible: true,\r\n open: false,\r\n alpha: 1,\r\n allowClose: true,\r\n showPopupHeader: true,\r\n showPopupBackground: true,\r\n showTooltip: true,\r\n targetColor: \"#0A6080\",\r\n targetShape: \"circle\",\r\n targetSize: 18,\r\n source: \"text\",\r\n animationDuration: 1000,\r\n animationEasing: \"easeOutCirc\",\r\n },\r\n Html: {\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n KbObject: {\r\n },\r\n LayoutConfig: {\r\n autoValidation: true,\r\n useMobileDropdowns: true,\r\n isPlaceholder: false,\r\n scroll: \"none\",\r\n itemLayout: \"horizontal\",\r\n itemAlignment: \"stretch\",\r\n itemJustify: \"start\",\r\n spaceBetweenItems: \"none\",\r\n padding: \"none\",\r\n collapseOnMobile: false,\r\n backgroundColor: \"background\",\r\n backgroundShade: \"default\",\r\n backgroundOpacity: 1.0,\r\n elevation: \"none\",\r\n relativeSize: \"x1\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n alignment: \"inherit\",\r\n },\r\n LayoutContent: {\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Media: {\r\n maxHeight: 256,\r\n maxWidth: 256,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n MethodOfManufacture: {\r\n },\r\n MethodOfManufactureRuleContainer: {\r\n },\r\n NestedSet: {\r\n display: \"accordion\",\r\n autoNavigateToElement: true,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n OptionFilter: {\r\n ruleType: \"optionFilter\",\r\n source: \"table\",\r\n optimized: true,\r\n level: 0,\r\n queryMode: \"table\",\r\n singleOptionBehavior: \"nothing\",\r\n visibleToChildren: false,\r\n },\r\n BomMappingField: {\r\n },\r\n CadAnnotationField: {\r\n markedForDrawing: false,\r\n },\r\n CadBlockArrayField: {\r\n insertionPointX: 0,\r\n insertionPointY: 0,\r\n insertionPointZ: 0,\r\n xScale: 1,\r\n yScale: 1,\r\n zScale: 1,\r\n rotation: 0,\r\n flipX: false,\r\n flipY: false,\r\n numRows: 1,\r\n rowSpacing: 1,\r\n numColumns: 1,\r\n columnSpacing: 1,\r\n },\r\n CadBlockField: {\r\n insertionPointX: 0,\r\n insertionPointY: 0,\r\n insertionPointZ: 0,\r\n xScale: 1,\r\n yScale: 1,\r\n zScale: 1,\r\n rotation: 0,\r\n flipX: false,\r\n flipY: false,\r\n },\r\n CadComponentField: {\r\n suppressed: false,\r\n deleted: false,\r\n },\r\n CadCustomPropertyField: {\r\n },\r\n CadDimensionField: {\r\n markedForDrawing: false,\r\n value: 0,\r\n },\r\n CadDrawingAnnotationField: {\r\n x: 0,\r\n y: 0,\r\n visible: true,\r\n },\r\n CadDrawingDimensionField: {\r\n visible: true,\r\n x: 0,\r\n y: 0,\r\n },\r\n CadDrawingSheetField: {\r\n scaleNumerator: 1,\r\n scaleDenominator: 1,\r\n useCustomScale: false,\r\n deleted: false,\r\n scaleAnnoPosition: false,\r\n scaleAnnoTextHeight: false,\r\n },\r\n CadDrawingViewField: {\r\n useCustomScale: false,\r\n autoPositionAnnotations: false,\r\n scaleNumerator: 1,\r\n scaleDenominator: 1,\r\n autosize: false,\r\n autoDimension: false,\r\n autoBalloon: false,\r\n ignoreMultipleBalloons: true,\r\n deleted: false,\r\n suppressed: false,\r\n autoPosition: true,\r\n x: 0,\r\n y: 0,\r\n bomRenumber: false,\r\n allowMultipleBalloonsFirstLevelOnly: true,\r\n referencedPartFamily: \"\",\r\n },\r\n CadDynamicComponentField: {\r\n suppressed: false,\r\n fixed: false,\r\n },\r\n CadDynamicDrawingAnnotationField: {\r\n x: 0,\r\n y: 0,\r\n },\r\n CadDynamicDrawingDimensionField: {\r\n x: 0,\r\n y: 0,\r\n vertical: false,\r\n dimensionTextPrefix: false,\r\n },\r\n CadFeatureField: {\r\n suppressed: false,\r\n deleted: false,\r\n },\r\n CadLayerField: {\r\n lineType: \"BYLAYER\",\r\n toAdd: true,\r\n active: true,\r\n freeze: false,\r\n lineWeight: \"lnWtByBlock\",\r\n lock: false,\r\n plottable: true,\r\n visible: true,\r\n },\r\n CadLibFeatureField: {\r\n },\r\n CadParameterField: {\r\n value: 0,\r\n },\r\n CadReplaceComponentField: {\r\n },\r\n CadRepresentationField: {\r\n },\r\n CadScaleFeatureField: {\r\n x: 1,\r\n y: 1,\r\n z: 1,\r\n isUniform: true,\r\n scaleUniform: 1,\r\n suppressed: false,\r\n deleted: false,\r\n },\r\n CadTextField: {\r\n insertionPointX: 0,\r\n insertionPointY: 0,\r\n insertionPointZ: 0,\r\n height: 0,\r\n },\r\n CadAngleMate: {\r\n angle: 0,\r\n aligned: false,\r\n alignClosest: false,\r\n },\r\n CadCoincidentMate: {\r\n aligned: false,\r\n alignClosest: false,\r\n },\r\n CadCoordinateSystemMate: {\r\n aligned: false,\r\n alignClosest: false,\r\n },\r\n CadDistanceMate: {\r\n distance: 0,\r\n aligned: false,\r\n alignClosest: false,\r\n },\r\n CadLibDimension: {\r\n value: 0,\r\n },\r\n CadLibReference: {\r\n referenceType: \"0\",\r\n },\r\n CadPoint: {\r\n },\r\n CadPositionConstraint: {\r\n x: 0,\r\n y: 0,\r\n z: 0,\r\n xAngle: 0,\r\n yAngle: 0,\r\n zAngle: 0,\r\n aligned: false,\r\n alignClosest: false,\r\n },\r\n Constraint: {\r\n },\r\n Mate: {\r\n aligned: false,\r\n alignClosest: false,\r\n },\r\n ExcelCellField: {\r\n deleted: false,\r\n },\r\n ExcelChartField: {\r\n deleted: false,\r\n },\r\n ExcelImageField: {\r\n },\r\n ExcelSheetField: {\r\n deleted: false,\r\n tryCalculateFormula: false,\r\n autoFitColumns: false,\r\n autoFitRows: false,\r\n },\r\n ExcelTableField: {\r\n deleted: false,\r\n },\r\n OutputField: {\r\n },\r\n PdfSectionField: {\r\n source: \"tag\",\r\n idTag: 0,\r\n nestedIdProduct: 0,\r\n },\r\n TableOutputField: {\r\n },\r\n WordContainerField: {\r\n deleted: false,\r\n },\r\n WordImageField: {\r\n deleted: false,\r\n fixContentControlSize: false,\r\n },\r\n WordListField: {\r\n deleted: false,\r\n },\r\n WordTextField: {\r\n deleted: false,\r\n },\r\n ZipSectionField: {\r\n source: \"tag\",\r\n idTag: 0,\r\n nestedIdProduct: 0,\r\n },\r\n BomOutput: {\r\n mode: \"empty\",\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n CadDrawingOutput: {\r\n fileNameAsTopModelName: false,\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n CadOutput: {\r\n hideCADApplication: false,\r\n closeCADatEnd: false,\r\n maxBuildTime: 600,\r\n copyAllFiles: false,\r\n deleteOldFiles: false,\r\n modifyDimensionInAllConfig: true,\r\n createBOM: false,\r\n creoVersion: 3,\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n ExcelOutput: {\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n Export: {\r\n enabled: true,\r\n postToCloud: true,\r\n },\r\n FileOutput: {\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n ImageOutput: {\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n Output: {\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n PdfOutput: {\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n RenderPassExport: {\r\n frameCamera: true,\r\n framePadding: 1,\r\n allowEmpty: false,\r\n width: 800,\r\n height: 600,\r\n enabled: true,\r\n postToCloud: true,\r\n },\r\n SceneRenderOutput: {\r\n frameCamera: true,\r\n framePadding: 1,\r\n allowEmpty: false,\r\n width: 800,\r\n height: 600,\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n SvgOutput: {\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n TextOutput: {\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n WordOutput: {\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n ZipOutput: {\r\n ruleType: \"output\",\r\n enabled: true,\r\n autoValidation: true,\r\n },\r\n Page: {\r\n enabled: true,\r\n iconStyle: \"icon\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n PageControl: {\r\n padding: \"large\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n PageNavigator: {\r\n buttonStyle: \"normal\",\r\n buttonColor: \"background\",\r\n showPageLabel: true,\r\n labelColor: \"normal\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n PageTabs: {\r\n orientation: \"vertical\",\r\n tabStyle: \"cards\",\r\n iconSize: 34,\r\n tabWidth: \"custom\",\r\n customTabWidth: 63,\r\n showTabLabels: true,\r\n backgroundColor: \"background\",\r\n backgroundShade: \"default\",\r\n selectionStyle: \"background\",\r\n selectionColor: \"accent\",\r\n selectionShade: \"default\",\r\n selectionLineColor: \"accent\",\r\n elevation: \"none\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Popup: {\r\n popupWidth: \"auto\",\r\n popupHeight: \"auto\",\r\n ruleType: \"button\",\r\n enabled: true,\r\n iconStyle: \"none\",\r\n textPosition: \"right\",\r\n buttonStyle: \"normal\",\r\n color: \"background\",\r\n imageHeight: 30,\r\n imageWidth: 30,\r\n showLabel: true,\r\n fullWidth: false,\r\n relativeWidth: \"auto\",\r\n useZeroPadding: false,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n PriceWidget: {\r\n showDetails: true,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n PricingRuleContainer: {\r\n requiresUpdate: false,\r\n fillFromSource: \"none\",\r\n },\r\n ReferencedConfigurator: {\r\n nestScene: true,\r\n nestHotspots: false,\r\n nestPriceObject: true,\r\n nestMethodOfManufacture: true,\r\n },\r\n Rule: {\r\n },\r\n RuleContainer: {\r\n },\r\n SvgViewer: {\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Tab: {\r\n showLabel: true,\r\n iconStyle: \"icon\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n TabControl: {\r\n tabWidth: \"auto\",\r\n customTabWidth: 63,\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Text: {\r\n style: \"normal\",\r\n color: \"normal\",\r\n weight: \"f400\",\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Toolbar: {\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n UiObject: {\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n Viewer: {\r\n visible: true,\r\n left: \"auto\",\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n width: \"auto\",\r\n height: \"auto\",\r\n opacity: 1.0,\r\n order: 0,\r\n relativeSize: \"auto\",\r\n alignment: \"inherit\",\r\n },\r\n ProductRuleContainer: {\r\n autoValidation: true,\r\n },\r\n};\r\nexport { defaults };","import { Configurator } from \"@models/configurators/configurator\";\r\nimport { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { defaults } from \"@models/configurators/default-values\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IKbObject } from \"@models/entity-models\";\r\nimport { KbEvent, Utils } from \"@tools\";\r\n\r\n\r\n\r\nexport interface IPropertyChangedArgs {\r\n property: string;\r\n oldValue: any;\r\n newValue: any;\r\n}\r\nexport class PropertyChangedEvent extends KbEvent { }\r\n\r\nexport interface IDummyNode {\r\n id: string;\r\n $expanded?: boolean;\r\n $type: string;\r\n allowedChildren(rootType?: CToken): CToken[];\r\n getParent: () => KbObject;\r\n}\r\n\r\n@Kbo(CToken.KbObject)\r\nexport class KbObject implements IKbObject, IDummyNode {\r\n constructor(public $manager: KbObjectManager) {\r\n Utils.guardNotNull($manager);\r\n\r\n // set defaults\r\n let defaultsClass = defaults[this.$type];\r\n for (let prop in defaultsClass) {\r\n this[prop] = defaultsClass[prop];\r\n }\r\n\r\n this.id = Utils.shortId();\r\n }\r\n\r\n public $type: string;\r\n public $expanded: boolean;\r\n public $propertyChanged = new PropertyChangedEvent();\r\n public label: string;\r\n public description: string;\r\n\r\n public static generateName(obj: KbObject, parentGroup: any[], name?: string) {\r\n if (!name) name = obj.$type;\r\n let i = 0;\r\n let resultName = name;\r\n parentGroup.forEach(kb => {\r\n if (kb.name == resultName) {\r\n resultName = name + (++i);\r\n }\r\n });\r\n obj.name = resultName;\r\n }\r\n\r\n /**\r\n * a helper that derived classes can call from property setters to enable change detection. \r\n * NOTE! Assumes there is a private backing field\r\n * for the property that is named by the convention \"_\" + propertyName\r\n */\r\n protected setProperty(propertyName: string, newValue, addToUndoStack: boolean = false) {\r\n let privateProp = \"_\" + propertyName;\r\n let oldValue = this[privateProp];\r\n let changed = (oldValue !== newValue);\r\n // set the private backing variable\r\n this[privateProp] = newValue;\r\n if (changed) {\r\n this.$propertyChanged.trigger({\r\n oldValue,\r\n newValue,\r\n property: propertyName\r\n });\r\n }\r\n }\r\n\r\n private _id: string;\r\n @Enumerable()\r\n public get id(): string {\r\n return this._id;\r\n }\r\n public set id(val: string) {\r\n let changed = !Utils.areEqual(this._id, val);\r\n\r\n if (changed) {\r\n // delete from name scope\r\n this.$manager.removeKbObjectById(this._id);\r\n this.$manager.addKbObjectWithId(val, this);\r\n }\r\n this._id = val;\r\n }\r\n\r\n public $parent: KbObject;\r\n\r\n public getParentOfType($type: string): KbObject {\r\n let parent: KbObject = this.$parent;\r\n while (parent) {\r\n if (parent.$type == $type) return parent;\r\n parent = parent.$parent;\r\n }\r\n return null;\r\n }\r\n\r\n public findAncestor(predicate: (kbo) => boolean) {\r\n let parent: KbObject = this.$parent;\r\n while (parent) {\r\n if (predicate(parent)) return parent;\r\n parent = parent.$parent;\r\n }\r\n return null;\r\n }\r\n \r\n private _parentConfigurator: Configurator;\r\n @Enumerable()\r\n public get $parentConfigurator(): Configurator {\r\n if (!this._parentConfigurator) {\r\n this._parentConfigurator = this.getParentOfType(\"Configurator\") as Configurator;\r\n }\r\n return this._parentConfigurator;\r\n }\r\n\r\n private _name: string;\r\n @Enumerable()\r\n public get name(): string {\r\n return this._name;\r\n }\r\n public set name(val: string) {\r\n let changed = !Utils.areEqual(this._name, val);\r\n\r\n if (changed) {\r\n val = this.$manager.getUniqueName(this, val);\r\n // delete from name scope\r\n if (this._name) {\r\n this.$manager.removeKbObjectNameReference(this._name);\r\n }\r\n this.$manager.addKbObjectNameReference(val, this);\r\n }\r\n this._name = val;\r\n }\r\n\r\n /**\r\n * for field controls to bind to. Defaults to name if there is no label\r\n */\r\n @Enumerable()\r\n public get $label(): string {\r\n let l = this.label ? this.label : this.name;\r\n return l;\r\n }\r\n\r\n public serialize(modifier: (kbo: KbObject, serialized: {}) => void): {} {\r\n // Not all objects have complex getters and setters, so we'll default to this.\r\n let result: any = {};\r\n\r\n result.$type = this.$type; // type needs to be first for the deserialization to happen correctly on the server\r\n for (let key in this) {\r\n if (key.substr(0, 1) == \"$\" || (key.substr(0, 1) == \"_\" && key != \"_metadata\") || this.ignoredProperties().some(p => p.isEqual(key))) continue;\r\n let item: any = this[key] as any;\r\n if (item == this) continue;\r\n if (item instanceof Function) continue;\r\n if (item && item.constructor === Array && item[0] && item[0].serialize) {\r\n result[key] = item.map((i: KbObject) => i.serialize(modifier));\r\n } else if (item && item.serialize) {\r\n result[key] = (item as KbObject).serialize(modifier);\r\n } else {\r\n result[key] = item;\r\n }\r\n }\r\n result.name = this.name;\r\n result.label = this.label;\r\n result.id = this.id;\r\n if (modifier) modifier(this, result);\r\n return result;\r\n }\r\n\r\n /**\r\n * sets property values of the class given an object. For example: {name: \"field1\", value: 15}\r\n * Used by snap so don't delete!\r\n * @param values\r\n */\r\n public setProps(values: {}) {\r\n for (let key in values) {\r\n this[key] = values[key];\r\n }\r\n }\r\n\r\n /**\r\n * Can be overridden by derived classes to specify properties that should be ignored during\r\n * serialization\r\n */\r\n public ignoredProperties(): string[]{\r\n return [];\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return [];\r\n }\r\n\r\n public getParent = () => this.$parent;\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Rule } from \"@models/configurators/rule\";\r\nimport { IReference, IRuleContainer } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.RuleContainer)\r\nexport class RuleContainer extends KbObject implements IRuleContainer {\r\n constructor(kom: KbObjectManager, args?: { ruleType?: string}) {\r\n super(kom);\r\n if (args) {\r\n this.ruleType = args.ruleType;\r\n }\r\n }\r\n\r\n public ruleType: string;\r\n public js: string;\r\n\r\n private _rules: Rule[];\r\n @Enumerable()\r\n public get rules(): Rule[] {\r\n if (!this._rules) this._rules = [];\r\n return this._rules;\r\n }\r\n public set rules(val) {\r\n this._rules = val;\r\n }\r\n\r\n /**\r\n * holds the snap structure. Starts with $ so angular will ignore it when parsing json\r\n */\r\n public $structure: any;\r\n\r\n // /**\r\n // * the compiled rule, cached here for performance\r\n // */\r\n // public $asyncFn: AsyncRuleFunction;\r\n // public $syncFn: SyncRuleFunction;\r\n\r\n public references: IReference[] = [];\r\n\r\n public removeRule(rule: Rule) {\r\n this.$manager.removeKbObject(rule);\r\n this.rules.removeWhere(r => r.id == rule.id);\r\n }\r\n\r\n // public serialize(): IRuleContainer {\r\n // let o = super.serialize() as IRuleContainer;\r\n // if (this.$structure) {\r\n // o.js = (new snap.Js()).generate(this.$structure);\r\n // }\r\n // return o;\r\n // }\r\n}\r\n","import { ConfiguratorDI, Enumerable } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { Field } from \"@models/configurators/field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { Configurator } from \"./configurator\";\r\n\r\nexport class UiObject extends RuleContainer {\r\n\r\n constructor(kom: KbObjectManager, args?: { ruleType?: string }) {\r\n super(kom, args);\r\n }\r\n\r\n public visible: boolean;\r\n public left: string;\r\n public top: string;\r\n public right: string;\r\n public bottom: string;\r\n public width: string;\r\n public height: string;\r\n public opacity: number;\r\n public order: number;\r\n public relativeSize: string;\r\n public alignment: string;\r\n public $valid = true;\r\n\r\n public getCss(prop: string) {\r\n let v = this[prop];\r\n let numeric = (Number(v) == v);\r\n return numeric ? `${v}px` : v;\r\n }\r\n\r\n protected filterChildren(tokens: CToken[], allChildren: UiObject[]): T[] {\r\n let list: T[] = [];\r\n for (let c of allChildren) {\r\n if (!tokens.length || tokens.some(t => ConfiguratorDI.instanceOf(c, t))) {\r\n list.push(c as any);\r\n }\r\n c.getChildrenOfType(...tokens).forEach(c2 => list.push(c2));\r\n }\r\n return list;\r\n }\r\n\r\n /**\r\n * \r\n * @param token Gets all the UI children of the given types.\r\n * @param allChildren \r\n */\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return [];\r\n }\r\n\r\n\r\n public allowedChildren(rootType: CToken): CToken[]{\r\n // implement in derived classes\r\n return [];\r\n }\r\n\r\n /**\r\n * Utility function to get all of the standard allowed elements\r\n * for container type parents.\r\n * @param rootType \r\n */\r\n public containerChildren(rootType: CToken): CToken[]{\r\n if (rootType == CToken.Configurator) {\r\n return [\r\n CToken.Accordion,\r\n CToken.Button,\r\n CToken.Container,\r\n CToken.DropdownButton,\r\n CToken.Expander,\r\n CToken.Field,\r\n CToken.GridRow,\r\n CToken.Group,\r\n CToken.Html,\r\n CToken.SvgViewer,\r\n CToken.Media,\r\n CToken.Popup,\r\n CToken.TabControl,\r\n CToken.Text, \r\n CToken.Toolbar, \r\n CToken.NestedSet\r\n ];\r\n } else if (rootType == CToken.LayoutConfig) {\r\n return [\r\n CToken.ActionBar,\r\n CToken.Accordion,\r\n CToken.Button,\r\n CToken.Container,\r\n CToken.DropdownButton,\r\n CToken.Expander,\r\n //CToken.Field,\r\n //CToken.GridRow,\r\n CToken.Group,\r\n CToken.Html,\r\n CToken.SvgViewer,\r\n CToken.Media,\r\n CToken.PageNavigator,\r\n CToken.PageControl,\r\n CToken.PageTabs,\r\n CToken.Popup,\r\n CToken.PriceWidget,\r\n CToken.TabControl,\r\n CToken.Text, \r\n CToken.Toolbar, \r\n CToken.Viewer,\r\n ];\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n /** calculated validity and stores result in $valid property */\r\n public isValid(): boolean {\r\n let fields = this.getChildrenOfType(CToken.Field);\r\n let valid = !fields.some(f => !f.isValid());\r\n if (!valid) {\r\n this.$valid = false;\r\n return this.$valid;\r\n }\r\n\r\n this.$valid = true;\r\n return this.$valid;\r\n }\r\n\r\n /**\r\n * get's the html id that represents this ui object in the DOM\r\n */\r\n @Enumerable()\r\n public get $domId(): string {\r\n let c = ConfiguratorDI.instanceOf(this, CToken.Configurator) ? this : this.$parentConfigurator;\r\n let p = c ? c.name.toKebabCase() + \"-\" : \"\";\r\n return p + this.id;\r\n }\r\n\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { Expander } from \"@models/configurators/expander\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IAccordion } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Accordion)\r\nexport class Accordion extends UiObject implements IAccordion {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n private _expanders: Expander[];\r\n @Enumerable()\r\n public get expanders(): Expander[] {\r\n if (!this._expanders) this._expanders = [];\r\n return this._expanders;\r\n }\r\n public set expanders(val) {\r\n this._expanders = val;\r\n }\r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.expanders\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return [\r\n CToken.Expander\r\n ];\r\n }\r\n}\r\n\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IActionBar } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.ActionBar)\r\nexport class ActionBar extends UiObject implements IActionBar {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public buttonStyle: string; \r\n public iconSize: number;\r\n}\r\n","import { ConfiguratorDI, Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Output } from \"@models/configurators/outputs/output\";\r\nimport { IDummyNode } from \"@models/configurators/kb-object\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { IBuild } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\n\r\n@Kbo(CToken.Build)\r\nexport class Build extends KbObject implements IBuild {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n this.$outputsNode = { id: this.id + \"_outputs\", $type: \"OutputsNode\", allowedChildren: () => [CToken.Output], getParent: () => this };\r\n this.$rulesNode = { id: this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: () => [CToken.Rule], getParent: () => this };\r\n }\r\n\r\n public idBuildType: number;\r\n public $outputsNode: IDummyNode;\r\n public $rulesNode: IDummyNode;\r\n\r\n private _ruleContainers: RuleContainer[];\r\n @Enumerable()\r\n public get ruleContainers(): RuleContainer[] {\r\n if (!this._ruleContainers) this._ruleContainers = [];\r\n return this._ruleContainers;\r\n }\r\n public set ruleContainers(val) {\r\n this._ruleContainers = val;\r\n }\r\n\r\n private _outputs: Output[];\r\n @Enumerable()\r\n public get outputs(): Output[] {\r\n if (!this._outputs) this._outputs = [];\r\n return this._outputs;\r\n }\r\n public set outputs(val) {\r\n this._outputs = val;\r\n }\r\n\r\n public cloudBuild: boolean;\r\n public idQueue: number;\r\n\r\n public addOutput(outputType: eOutputType): Output {\r\n let output = ConfiguratorDI.getNewOutput(outputType, this.$manager);\r\n this.$manager.addKbObject(output, this);\r\n this.outputs.push(output);\r\n return output;\r\n }\r\n\r\n public removeOutput(output: Output) {\r\n this.outputs.remove(output);\r\n this.$manager.removeKbObject(output);\r\n }\r\n\r\n public removeRuleContainer(rc: RuleContainer) {\r\n this.$manager.removeKbObject(rc);\r\n this.ruleContainers.remove(rc);\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IButton } from \"@models/entity-models\";\r\nimport { eRuleType } from \"@models/enums\";\r\n\r\n@Kbo(CToken.Button)\r\nexport class Button extends UiObject implements IButton {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom, { ruleType: eRuleType.button });\r\n }\r\n\r\n public enabled: boolean;\r\n public icon: string;\r\n public iconStyle: string;\r\n public textPosition: string;\r\n public mediaPath: string;\r\n public showLabel: boolean;\r\n public buttonStyle: string;\r\n public fullWidth: boolean;\r\n public relativeWidth: string;\r\n public imageHeight: number;\r\n public imageWidth: number;\r\n \r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { IConfiguratorAction } from \"@models/entity-models\";\r\nimport { eRuleType } from \"@models/enums\";\r\nimport { icons } from \"@tools\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\n\r\n@Kbo(CToken.ConfiguratorAction)\r\nexport class ConfiguratorAction extends RuleContainer implements IConfiguratorAction {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n\r\n this.icon = icons.action;\r\n this.ruleType = eRuleType.action;\r\n }\r\n public icon: string;\r\n public iconStyle: string;\r\n public textPosition: string;\r\n public mediaPath: string;\r\n public visible: boolean;\r\n public enabled: boolean;\r\n public imageWidth: number;\r\n public imageHeight: number;\r\n public showLabel: boolean;\r\n public relativeSize: string;\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { IConfiguratorFunction } from \"@models/entity-models\";\r\nimport { eRuleType } from \"@models/enums\";\r\n\r\n@Kbo(CToken.ConfiguratorFunction)\r\nexport class ConfiguratorFunction extends RuleContainer implements IConfiguratorFunction {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n\r\n this.ruleType = eRuleType.function;\r\n } \r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IContainer } from \"@models/entity-models\";\r\n\r\n\r\n@Kbo(CToken.Container)\r\nexport class Container extends UiObject implements IContainer {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public isPlaceholder: boolean;\r\n public itemLayout: string;\r\n public itemAlignment: string;\r\n public itemJustify: string;\r\n public spaceBetweenItems: string;\r\n public scroll: string;\r\n public padding: string;\r\n public collapseOnMobile: boolean;\r\n public backgroundColor: string;\r\n public backgroundShade: string;\r\n public backgroundOpacity: number;\r\n public elevation: string;\r\n \r\n\r\n private _children: UiObject[];\r\n @Enumerable()\r\n public get children(): UiObject[] {\r\n if (!this._children) this._children = [];\r\n return this._children;\r\n }\r\n public set children(val) {\r\n this._children = val;\r\n }\r\n\r\n // public visible: boolean;\r\n\r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return this.containerChildren(rootType);\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IHotspot } from \"@models/entity-models\";\r\nimport { Utils } from \"@tools\";\r\n\r\n@Kbo(CToken.Hotspot)\r\nexport class Hotspot extends KbObject implements IHotspot {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n this.$uid = Utils.shortId();\r\n }\r\n public target: boolean;\r\n public targetNode: string;\r\n public popupPosition: string;\r\n public popupAttach: string;\r\n public popupOffsetX: number;\r\n public popupOffsetY: number;\r\n public keepPopupInViewer: boolean;\r\n public idCamera: string;\r\n public open: boolean;\r\n public sourceId: string;\r\n public source: string;\r\n public popupTop: string;\r\n public popupLeft: string;\r\n public popupBottom: string;\r\n public popupRight: string;\r\n public popupWidth: string;\r\n public popupHeight: string;\r\n public visible: boolean;\r\n public alpha: number;\r\n public animationDuration: number;\r\n public animationEasing: string;\r\n public allowClose: boolean;\r\n public targetColor: string;\r\n public showPopupHeader: boolean;\r\n public targetShape: string;\r\n public targetSize: number;\r\n public targetText: string;\r\n public targetImage: string;\r\n\r\n public $left: number;\r\n public $top: number;\r\n public $hover: boolean;\r\n public $zindex: number;\r\n public $uid: string; //used for performance of ng-repeat for nested hotspots\r\n}\r\n","import { Configurator } from \"@models/configurators/configurator\";\r\nimport { ConfiguratorDI } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { IField } from \"@models/entity-models\";\r\nimport { eFieldType } from \"@models/enums\";\r\nimport { Utils } from \"@tools\";\r\n\r\nexport class KbObjectManager {\r\n constructor() {\r\n }\r\n public kbObjects: any = {};\r\n public kbObjectIds: any = {};\r\n\r\n public addKbObject(o: KbObject, parent: KbObject) {\r\n o.name = this.getUniqueName(o, o.name);\r\n o.$parent = parent;\r\n this.kbObjects[o.name.toLowerCase()] = o;\r\n\r\n // if this is a nested configurator, then we don't add it to the id map.\r\n // Reasoning being that there will be id collisions. \r\n // Like adding multiple instances of the same nested configurator\r\n // or even cloning a configurator\r\n if (!(ConfiguratorDI.instanceOf(o, CToken.Configurator) && parent)) {\r\n this.kbObjectIds[o.id] = o;\r\n }\r\n }\r\n\r\n public removeKbObject(o: KbObject) {\r\n if (o) {\r\n // remove all child kbObjects as well\r\n if (!ConfiguratorDI.instanceOf(o, CToken.Configurator)) {\r\n for (let prop in o) {\r\n if (prop.substr(0, 1) == \"$\" || prop.substr(0, 1) == \"_\") continue;\r\n if (Array.isArray(o[prop])) {\r\n o[prop].forEach(oChild => {\r\n if (ConfiguratorDI.instanceOf(oChild, CToken.KbObject)) {\r\n this.removeKbObject(oChild);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n delete this.kbObjects[o.name.toLowerCase()];\r\n // if this is a nested configurator, then we don't add it to the id map.\r\n // Reasoning being that there will be id collisions. \r\n // Like adding multiple instances of the same nested configurator\r\n // or even cloning a configurator\r\n //&& parent ** removed this since the function doesn't take a parent but on client this would be the window\r\n if (!(ConfiguratorDI.instanceOf(o, CToken.Configurator))) { \r\n delete this.kbObjectIds[(o as Configurator).id];\r\n }\r\n\r\n }\r\n }\r\n\r\n public getByName(name: string, throwOnFailure = true): T {\r\n let n = name? name.toLowerCase(): name;\r\n let o = this.kbObjects[n] as T;\r\n if (!o && throwOnFailure) {\r\n throw new Error(\"object with name \" + name + \" does not exist\");\r\n }\r\n return o;\r\n }\r\n\r\n public get(id: string, throwOnFailure = true): T {\r\n let o = this.kbObjectIds[id] as T;\r\n if (!o && throwOnFailure) {\r\n throw new Error(\"object with id \" + id + \" does not exist\");\r\n }\r\n return o;\r\n }\r\n\r\n public getByIdOrName(idOrName: string, throwOnFailure = true): T{\r\n let o = this.get(idOrName, false);\r\n if (!o) o = this.getByName(idOrName, false);\r\n if (!o && throwOnFailure) {\r\n throw new Error(\"object with id or name \" + idOrName + \" does not exist\");\r\n }\r\n return o;\r\n }\r\n\r\n public hasNamedObject(name: string): boolean {\r\n return this.kbObjects.hasOwnProperty(name.toLowerCase());\r\n }\r\n\r\n public removeKbObjectById(id: string) {\r\n delete this.kbObjectIds[id];\r\n }\r\n\r\n public addKbObjectWithId(id: string, o: KbObject) {\r\n this.kbObjectIds[id] = o;\r\n }\r\n\r\n public removeKbObjectNameReference(name: string) {\r\n delete this.kbObjects[name.toLowerCase()];\r\n }\r\n\r\n public addKbObjectNameReference(name: string, o: KbObject) {\r\n this.kbObjects[name.toLowerCase()] = o;\r\n }\r\n\r\n /**\r\n * finds a unique name for given object in the context of the collection of kbObjects\r\n */\r\n public getUniqueName(o: KbObject, proposed?: string) {\r\n let counter = 0;\r\n proposed = proposed || o.$type || \"Object\"; // IE does not jive with constructor.name so we need a fallback\r\n let name = proposed;\r\n let nameIsUnique = (proposed: string, o?: KbObject) => {\r\n return !this.hasNamedObject(proposed.toLowerCase()) || this.getByName(proposed) === o;\r\n };\r\n while (!nameIsUnique(name, o)) {\r\n counter++;\r\n name = proposed + counter.toString();\r\n }\r\n return name;\r\n }\r\n\r\n /**\r\n * clear out all of the id's and names from this instance\r\n */\r\n public clear() {\r\n this.kbObjectIds = {};\r\n this.kbObjects = {};\r\n }\r\n\r\n public create(token: CToken, kom: KbObjectManager): T {\r\n let k = ConfiguratorDI.get(token);\r\n return new k.class(kom) as T;\r\n }\r\n\r\n public recurse(source: any, target: KbObject) {\r\n let kom = target.$manager;\r\n for (let prop in source) {\r\n if (source.hasOwnProperty(prop)) {\r\n if (Array.isArray(source[prop])) {\r\n if (!target[prop]) {\r\n target[prop] = [];\r\n }\r\n\r\n source[prop].forEach(sourceItem => {\r\n let targetItem;\r\n // Hack: Because method of manufacture is a dynamic type on the server-side, it is\r\n // problemmatic for Newtonsoft to properly assign a $type parameter.\r\n if (prop == \"materials\") sourceItem.$type = CToken.PartMaterial.key;\r\n if (prop == \"operations\") sourceItem.$type = CToken.PartOperation.key;\r\n if (sourceItem.$type) {\r\n let komArg = kom;\r\n if (sourceItem.$type == CToken.Configurator.key) {\r\n komArg = new KbObjectManager();\r\n }\r\n targetItem = this.create(CToken.withKey(sourceItem.$type), komArg);\r\n target[prop].push(targetItem);\r\n\r\n // recurse before adding it to the $manager so that the name is already resolved\r\n this.recurse(sourceItem, targetItem);\r\n\r\n if (ConfiguratorDI.instanceOf(targetItem, CToken.KbObject)) {\r\n kom.addKbObject(targetItem, target);\r\n }\r\n } else if (typeof sourceItem === \"object\") {\r\n targetItem = {};\r\n target[prop].push(targetItem);\r\n this.recurse(sourceItem, targetItem);\r\n } else { // must be a value type\r\n let propDef = Object.getOwnPropertyDescriptor(target.constructor.prototype, prop);\r\n if (!propDef || propDef.set) { //if prop has a setter\r\n // Only do anything to the target if the property has a setter.\r\n target[prop].push(sourceItem);\r\n }\r\n }\r\n });\r\n } else {\r\n let propDef = Object.getOwnPropertyDescriptor(target.constructor.prototype, prop);\r\n if (prop == \"rootPartRev\") source[prop].$type = CToken.PartRev.key;\r\n if (prop == \"methodOfManufacture\") source[prop].$type = CToken.MethodOfManufacture.key;\r\n if (!propDef || propDef.set) { //if prop has a setter\r\n // This fixes the following bug:\r\n //\r\n // If you created two or more nested configurators that had an upload field, then uploading a file to one of them would also upload it for the other.\r\n // the reason for this was each upload field was referencing the same default value, which is an empty upload field. This line forces each instance\r\n // of an upload field to reference its own default value to break that coupling.\r\n if (source.$type == CToken.Field.key && (source).type == eFieldType.upload && prop == \"value\") {\r\n target[prop] = Utils.extend({}, source[prop]);\r\n }\r\n else if (source[prop] && source[prop].$type) {\r\n let targetItem = this.create(CToken.withKey(source[prop].$type), kom);\r\n target[prop] = targetItem;\r\n this.recurse(source[prop], targetItem);\r\n } else {\r\n target[prop] = source[prop];\r\n }\r\n } \r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { IOptionFilter } from \"@models/entity-models\";\r\nimport { eRuleType } from \"@models/enums\";\r\n\r\n@Kbo(CToken.OptionFilter)\r\nexport class OptionFilter extends RuleContainer implements IOptionFilter {\r\n constructor(kom: KbObjectManager) {\r\n super(kom, { ruleType: eRuleType.optionFilter });\r\n this.dependsOn = [];\r\n this.dependsOnThis = [];\r\n this.fieldReferences = [];\r\n }\r\n\r\n public idTable: number;\r\n public source: string;\r\n public dbTable: string;\r\n public idOptionFilter: string;\r\n public level: number;\r\n public queryMode: string;\r\n public singleOptionBehavior: string;\r\n public dependsOn: string[];\r\n public dependsOnThis: string[];\r\n public fieldReferences: string[];\r\n public optimized: boolean;\r\n public visibleToChildren: boolean;\r\n public snapType: string;\r\n /**\r\n * Stores the last values of referenced fields on the client for optimization purposes\r\n */\r\n public $lastValues: { [fieldId: string]: any };\r\n\r\n /**\r\n * Temporary variable telling us whether this option filter's dependencies changed and should be run\r\n */\r\n public $shouldRun: boolean;\r\n /**\r\n * Holds the snap structure. Starts with $ so angular will ignore it when parsing json\r\n */\r\n public $structure: any;\r\n /**\r\n * The most recent calculated source. Stored for other option filters that might refer\r\n * to this one for it's source.\r\n */\r\n public $source: any[];\r\n\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IField, IOption, ITag, IUploadValue } from \"@models/entity-models\";\r\nimport { eFieldControl, eFieldType, eFormatType, eRuleType, eSelectSource, eValidationTiming } from \"@models/enums\";\r\nimport { Utils } from \"@tools\";\r\n\r\nexport interface IFixThisOption {\r\n fix: () => any;\r\n label: string;\r\n}\r\n\r\nexport interface IFieldValidationMsg {\r\n message: string;\r\n fixThisOptions?: IFixThisOption[];\r\n}\r\n\r\n@Kbo(CToken.Field)\r\nexport class Field extends UiObject implements IField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom, { ruleType: eRuleType.field });\r\n\r\n }\r\n\r\n public type: string;\r\n public control: string;\r\n public helpMediaPath: string;\r\n public helpUrl: string;\r\n public validationErrors: IFieldValidationMsg[] = [];\r\n public warnings: IFieldValidationMsg[] = [];\r\n public hasBeenTouched: boolean; //tracks whether the field has been interacted with by the user since the configurator started\r\n // public valid: boolean = true;\r\n // public invalidReason: string;\r\n public enabled: boolean;\r\n public required: boolean;\r\n public searchable: boolean;\r\n // public visible: boolean;\r\n public precision: number;\r\n public constrainValue: boolean;\r\n public min: number;\r\n public max: number;\r\n public sliderAllowDirectEdit: boolean;\r\n public sliderValueVisibility: string;\r\n public showLabel: boolean;\r\n /**\r\n * in some numeric controls, we can constrain options to increments from min to max.\r\n */\r\n public step: number;\r\n public mask: string;\r\n public dateFormat: string;\r\n public format: string = eFormatType.none; // none, currency, percentage, number\r\n public formatPrefix: string;\r\n public formatSuffix: string;\r\n public formatCurrency: string;\r\n public formatDecimalSeparator: string;\r\n public formatThousandsSeparator: string;\r\n public formatMinPrecision: number;\r\n public acceptedFileTyes: string;\r\n public uploadToScene: boolean;\r\n public convertUploadedSceneImageToMesh: boolean;\r\n public uploadImageThreshold: number;\r\n public convertUploadPdfToImage: boolean;\r\n public linkToDynamicAttribute: boolean;\r\n public dynamicAttributeId: string;\r\n public _lockDynamicAttributeControl: boolean;\r\n public sortColumn: string;\r\n\r\n private _tags: ITag[];\r\n @Enumerable()\r\n public get tags(): ITag[] {\r\n if (!this._tags) this._tags = [];\r\n return this._tags;\r\n }\r\n public set tags(val) {\r\n this._tags = val;\r\n }\r\n\r\n private convertValue(val: any) {\r\n return Field.convertToType(val, this.type, this.precision);\r\n }\r\n\r\n private convertForSet(val: any) {\r\n /* dates need special handling. Coming from json, they will be ISO strings. \r\n We need them to be Date objects so they play well with snap rules. But we \r\n can't new up a new Date() object in the field get() which is where we handle other conversions\r\n because it will break the binding system in angular (creates an endless digest).\r\n So we create the Date object in the field value setter. */\r\n if (this.type == eFieldType.date && val && !(val instanceof Date)) {\r\n val = new Date(val);\r\n }\r\n if (this.type == eFieldType.upload && (!val || typeof (val.path) == \"undefined\"))\r\n {\r\n val = {\r\n path: null,\r\n assetId: null\r\n };\r\n }\r\n\r\n return val;\r\n }\r\n\r\n private _value: any;\r\n private _lastCalculatedValue: any; // the last value calculated by get value()\r\n private _dirty: any; // meant to work in concert with $freezeFieldValueCalculation. If marked to true, the field will recalculate the next time get value() is called even when frozen.\r\n @Enumerable()\r\n public get value(): any {\r\n let skip = this.$parentConfigurator && this.$parentConfigurator.$freezeFieldValueCalculation && !this._dirty;\r\n\r\n if (!skip) {\r\n let val = this.convertValue(this._value);\r\n if (this.$parentConfigurator && this.$parentConfigurator.$running && this.isValueConstrainedToOptions()) {\r\n if (!this.options.some(o => this.convertValue(o.value) == val)) {\r\n val = this.options.length ? this.convertValue(this.options[0].value) : null;\r\n }\r\n }\r\n if (this.isArrayType() && this._value == null) {\r\n this._value = val;\r\n }\r\n this._lastCalculatedValue = val;\r\n this._dirty = false;\r\n }\r\n return this._lastCalculatedValue;\r\n }\r\n public set value(val) {\r\n let origValue = this.value;\r\n this._value = this.convertForSet(val);\r\n let newValue = this.value;\r\n if (origValue != newValue && this.$parentConfigurator) {\r\n this.$parentConfigurator.$fieldsDirty = true;\r\n this.$parentConfigurator.$fieldsDirtyForSceneRules = true;\r\n }\r\n }\r\n\r\n /**\r\n * gets the underlying value, not the one calculated by looking at the options.\r\n * This is needed for passing to the server when running option filters, so the option\r\n * filter can calculate it's own value for the field correctly and arrive at the same\r\n * conclusion as the client.\r\n */\r\n @Enumerable()\r\n public get desiredValue(): any {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * if the field is a number, formattedValue will return a string representation of the value formatted\r\n * formatted per the format_ properties on the field\r\n */\r\n @Enumerable()\r\n public get formattedValue(): string {\r\n if (!this.value) {\r\n return \"\";\r\n } else if (this.type === eFieldType.number) {\r\n let args: INumberFormatArgs = {\r\n formatType: this.format,\r\n currency: this.formatCurrency,\r\n minPrecision: this.formatMinPrecision,\r\n maxPrecision: this.precision,\r\n decimalSeparator: this.formatDecimalSeparator,\r\n thousandsSeparator: this.formatThousandsSeparator,\r\n prefix: this.formatPrefix,\r\n suffix: this.formatSuffix\r\n };\r\n return (this.value as number).format(args);\r\n } else {\r\n return this.value.toString();\r\n }\r\n }\r\n\r\n /** meant to work with $freezeFieldValueCalculation. Marks the field value to be recalculated the next time it's asked for */\r\n public recalculateValue() {\r\n this._dirty = true;\r\n }\r\n\r\n private _minDate: Date;\r\n @Enumerable()\r\n public get minDate(): Date {\r\n return Field.convertToType(this._minDate, eFieldType.date, 0);\r\n }\r\n public set minDate(val) {\r\n this._minDate = this.convertForSet(val);\r\n }\r\n\r\n private _maxDate: Date;\r\n @Enumerable()\r\n public get maxDate(): Date {\r\n return Field.convertToType(this._maxDate, eFieldType.date, 0);\r\n }\r\n public set maxDate(val) {\r\n this._maxDate = this.convertForSet(val);\r\n }\r\n\r\n /**\r\n * the dynamic list of options that the UI binds to. If the selectSource is simple,\r\n * then these options are already filled in. If the selectSource is optionFilter, then these\r\n * options are filled in dynamically on every field value change\r\n */\r\n private _options: IOption[];\r\n @Enumerable()\r\n public get options(): IOption[] {\r\n if (!this._options) this._options = [];\r\n return this._options;\r\n }\r\n public set options(val) {\r\n this._options = val;\r\n this.recalculateValue();\r\n }\r\n\r\n public sort: string;\r\n public selectSource: string;\r\n public idOptionFilter: string;\r\n public autoCompleteSource: string;\r\n public useFullTextSearch: boolean;\r\n public constrainToSource: boolean;\r\n public idTable: number;\r\n public dbTable: string;\r\n public valueColumn: string;\r\n public labelColumn: string;\r\n public imageColumn: string;\r\n public imageWhenSelectedColumn: string;\r\n public descriptionColumn: string;\r\n public imageHeight: number;\r\n public imageWidth: number;\r\n public imageOnly: boolean;\r\n public optionLayout: string;\r\n public dropdownOptionLayout: string;\r\n public enableSelectedImages: boolean;\r\n\r\n public actionJs: string;\r\n public actionBlocks: string;\r\n\r\n public iconStyle: string;\r\n public icon: string;\r\n public buttonStyle: string;\r\n\r\n public isValid(): boolean {\r\n let timing: string = eValidationTiming.always;\r\n if (this.$parentConfigurator) {\r\n timing = this.$parentConfigurator.validationTiming;\r\n }\r\n\r\n this.$valid = (timing == eValidationTiming.always || this.hasBeenTouched) ?\r\n (!this.validationErrors || this.validationErrors.length === 0)\r\n : true;\r\n\r\n return this.$valid;\r\n }\r\n\r\n public preValidate() {\r\n // clear validation errors\r\n this.validationErrors.clear();\r\n this.warnings.clear();\r\n\r\n // if number field\r\n if (this.type == eFieldType.number) {\r\n // validate the value is btw min & max\r\n if (this.constrainValue && Utils.isDefined(this.min) && this.value < this.min) {\r\n this.addValidation({\r\n message: loc.validation_valuemustbegreaterthan.format(this.min.toString())\r\n });\r\n }\r\n if (this.constrainValue && Utils.isDefined(this.max) && this.value > this.max) {\r\n this.addValidation({\r\n message: loc.validation_valuemustbelessthan.format(this.max.toString())\r\n });\r\n }\r\n } else if (this.type == eFieldType.date) {\r\n if (this.constrainValue && Utils.isDefined(this.minDate) && this.value < this.minDate) {\r\n this.addValidation({\r\n message: loc.validation_valuemustbegreaterthan.format(this.minDate.toDateString())\r\n });\r\n }\r\n if (this.constrainValue && Utils.isDefined(this.maxDate) && this.value < this.maxDate) {\r\n this.addValidation({\r\n message: loc.validation_valuemustbelessthan.format(this.maxDate.toDateString())\r\n });\r\n }\r\n }\r\n \r\n if (this.type == eFieldType.text || this.type == eFieldType.color || this.type == eFieldType.date) {\r\n if (!this.value && this.required) {\r\n this.addValidation({\r\n message: loc.validation_required\r\n });\r\n }\r\n }\r\n }\r\n\r\n public validateCondition(condition: boolean, errorMessage: string, mode: string, fixThis: IFixThisOption[] = []) {\r\n if (!condition) {\r\n if (mode == \"warning\") {\r\n this.addValidation({ message: errorMessage, fixThisOptions: fixThis }, true);\r\n } else {\r\n this.addValidation({ message: errorMessage, fixThisOptions: fixThis });\r\n }\r\n }\r\n }\r\n\r\n public addValidation(msg: IFieldValidationMsg, isWarning: boolean = false) {\r\n //don't add if it's a duplicate\r\n if (isWarning) {\r\n if (!this.warnings.some(w => w.message == msg.message)) {\r\n if (!this.warnings) this.warnings = [];\r\n this.warnings.push(msg);\r\n }\r\n } else {\r\n if (!this.validationErrors.some(w => w.message == msg.message)) {\r\n if (!this.validationErrors) this.validationErrors = [];\r\n this.validationErrors.push(msg);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * returns whether a field is allowed to join a select table\r\n */\r\n\r\n // TODO: This logic is copied in Field.cs... the logic should be defined in only\r\n // Field.cs and picked up by codegen here.\r\n public canJoinOptionFilter(): boolean {\r\n if (this.control == eFieldControl.imageSelect ||\r\n this.control == eFieldControl.select ||\r\n this.control == eFieldControl.radio ||\r\n this.control == eFieldControl.colorSelect ||\r\n this.control == eFieldControl.swatchSelect ||\r\n this.control == eFieldControl.checkbox ||\r\n this.control == eFieldControl.toggle ||\r\n this.control == eFieldControl.multiSelect ||\r\n this.control == eFieldControl.imageMultiSelect ||\r\n this.control == eFieldControl.colorMultiSelect) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n public isValueConstrainedToOptions(): boolean {\r\n return (this.control == eFieldControl.select ||\r\n this.control == eFieldControl.radio ||\r\n this.control == eFieldControl.imageSelect ||\r\n this.control == eFieldControl.colorSelect ||\r\n this.control == eFieldControl.swatchSelect ||\r\n (\r\n this.control == eFieldControl.checkbox &&\r\n this.selectSource == eSelectSource.optionFilter &&\r\n this.idOptionFilter != null\r\n )\r\n );\r\n }\r\n\r\n public isArrayType(): boolean {\r\n return (this.type.equalsAny(eFieldType.textArray, eFieldType.numberArray, eFieldType.colorArray));\r\n }\r\n\r\n public getBaseType(): string {\r\n if (this.isArrayType()) {\r\n return this.type.substr(0, this.type.length - 5);\r\n } else {\r\n return this.type;\r\n }\r\n }\r\n\r\n public static convertToType(value: any, toType: string, precision: number) {\r\n let val: any = value;\r\n\r\n if (value == null) {\r\n val = null;\r\n }\r\n\r\n if (toType === eFieldType.number) {\r\n // convert to a number\r\n // if (typeof value == \"number\" || value instanceof Number)\r\n // return value;\r\n val = Number(value);\r\n // test if NaN : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN\r\n if (val != val) {\r\n val = 0;\r\n }\r\n // round to precision\r\n if (precision != -1) {\r\n val = val.rounder(precision);\r\n }\r\n } else if (toType === eFieldType.boolean) {\r\n if (typeof val === \"boolean\") {\r\n return val;\r\n }\r\n if (typeof val === \"string\" || val instanceof String) {\r\n val = Utils.areEqual(val as string, \"true\");\r\n } else {\r\n val = Boolean(val);\r\n }\r\n } else if (toType === eFieldType.date) {\r\n if (value != null && !(value instanceof Date)) {\r\n val = new Date(value);\r\n }\r\n } else if (toType == eFieldType.textArray ||\r\n toType == eFieldType.numberArray ||\r\n toType == eFieldType.colorArray\r\n ) {\r\n if (value == null) {\r\n val = [];\r\n } else if (!Array.isArray(value)) {\r\n val = [value];\r\n }\r\n // now we should have an array, make sure all items in the array are of the right type\r\n for (let i = 0; i < val.length; i++) {\r\n val[i] = Field.convertToType(val[i], toType.substr(0, toType.length - 5), precision);\r\n }\r\n }\r\n else if (toType == eFieldType.upload) {\r\n if (value == null || typeof (value.path) == 'undefined') {\r\n val = {\r\n assetId: null,\r\n path: null\r\n };\r\n }\r\n }\r\n\r\n return val;\r\n }\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { Field } from \"@models/configurators/field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IGroup } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Group)\r\nexport class Group extends UiObject implements IGroup {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n private _children: UiObject[];\r\n @Enumerable()\r\n public get children(): UiObject[] {\r\n if (!this._children) this._children = [];\r\n return this._children;\r\n }\r\n public set children(val) {\r\n this._children = val;\r\n }\r\n \r\n\r\n /**\r\n * Fields array has been deprecated. This readonly property is here for\r\n * backwards compatibility\r\n */\r\n public get fields(): Field[] {\r\n return this.getChildrenOfType(CToken.Field);\r\n }\r\n\r\n\r\n // public visible: boolean;\r\n public showLabel: boolean;\r\n\r\n public addField(): Field {\r\n let field = new Field(this.$manager);\r\n this.$manager.addKbObject(field, this);\r\n this.children.push(field);\r\n return field;\r\n }\r\n\r\n public removeField(field: Field) {\r\n this.$manager.removeKbObject(field);\r\n this.children.remove(field);\r\n }\r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return this.containerChildren(rootType);\r\n }\r\n\r\n public ignoredProperties(): string[]{\r\n return [\"fields\"];\r\n }\r\n}\r\n","import { Configurator } from \"@models/configurators/configurator\";\r\nimport { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { Field } from \"@models/configurators/field\";\r\nimport { Group } from \"@models/configurators/group\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IPage } from \"@models/entity-models\";\r\nimport { icons } from \"@tools\";\r\nimport { NestedSet } from \"./nested-set\";\r\n\r\n@Kbo(CToken.Page)\r\nexport class Page extends UiObject implements IPage {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n\r\n this.icon = \"\";\r\n if (icons) {\r\n this.icon = icons.page;\r\n }\r\n }\r\n public icon: string;\r\n public iconStyle: string;\r\n public mediaPath: string;\r\n public mediaPathWhenSelected: string;\r\n // public visible: boolean = true;\r\n\r\n private _children: UiObject[];\r\n @Enumerable()\r\n public get children(): UiObject[] {\r\n if (!this._children) this._children = [];\r\n return this._children;\r\n }\r\n public set children(val) {\r\n this._children = val;\r\n }\r\n\r\n /**\r\n * Groups array has been deprecated. This readonly property is here for\r\n * backwards compatibility\r\n */\r\n public get groups(): Group[]{\r\n return this.getChildrenOfType(CToken.Group);\r\n }\r\n\r\n \r\n private _pages: Page[];\r\n @Enumerable()\r\n public get pages(): Page[] {\r\n if (!this._pages) this._pages = [];\r\n return this._pages;\r\n }\r\n public set pages(val) {\r\n this._pages = val;\r\n }\r\n\r\n private _configurators: Configurator[];\r\n @Enumerable()\r\n public get configurators(): Configurator[] {\r\n if (!this._configurators) this._configurators = [];\r\n return this._configurators;\r\n }\r\n public set configurators(val) {\r\n this._configurators = val;\r\n }\r\n\r\n public addGroup(): Group {\r\n let group = new Group(this.$manager);\r\n this.$manager.addKbObject(group, this);\r\n this.children.push(group);\r\n return group;\r\n }\r\n\r\n public removeGroup(group: Group) {\r\n this.$manager.removeKbObject(group);\r\n this.children.remove(group);\r\n }\r\n\r\n public addPage(): Page {\r\n let page = new Page(this.$manager);\r\n this.$manager.addKbObject(page, this);\r\n this.pages.push(page);\r\n return page;\r\n }\r\n\r\n public removePage(page: Page) {\r\n this.$manager.removeKbObject(page);\r\n this.pages.remove(page);\r\n }\r\n\r\n public allPages(): Page[] {\r\n return this.getChildrenOfType(CToken.Page);\r\n }\r\n\r\n public getFields(predicate?: (field: Field) => boolean): Field[] {\r\n let fields = this.getChildrenOfType(CToken.Field);\r\n return predicate ? fields.filter(f => predicate(f)) : fields;\r\n }\r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children.concat(this.pages)\r\n );\r\n }\r\n\r\n public isValid(): boolean {\r\n let fields = this.getFields();\r\n let valid = !fields.some(f => !f.isValid());\r\n if (!valid) {\r\n this.$valid = false;\r\n return this.$valid;\r\n }\r\n\r\n for (let config of this.configurators) {\r\n if (!config.isValid()) {\r\n this.$valid = false;\r\n return this.$valid;\r\n }\r\n }\r\n let nestedSets = this.getChildrenOfType(CToken.NestedSet);\r\n for (let ns of nestedSets) {\r\n for (let nested of ns.configurators) {\r\n if (!nested.isValid()) {\r\n this.$valid = false;\r\n return this.$valid;\r\n }\r\n }\r\n }\r\n this.$valid = true;\r\n return this.$valid;\r\n }\r\n \r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n let allowed = this.containerChildren(rootType);\r\n if (rootType == CToken.Configurator) {\r\n allowed.splice(0, 0, CToken.Page); //pages can have nested pages\r\n }\r\n return allowed;\r\n }\r\n\r\n\r\n public ignoredProperties(): string[]{\r\n return [\"groups\"];\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { IReferencedConfigurator } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.ReferencedConfigurator)\r\nexport class ReferencedConfigurator extends KbObject implements IReferencedConfigurator {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public idProduct: number;\r\n public ruleContainers: RuleContainer[] = [];\r\n public userCanAddTo: string[] = [];\r\n public nestScene: boolean;\r\n public nestHotspots: boolean;\r\n public nestPriceObject: boolean;\r\n public element: string;\r\n\r\n public removeRuleContainer(rc: RuleContainer) {\r\n this.$manager.removeKbObject(rc);\r\n this.ruleContainers.remove(rc);\r\n }\r\n}\r\n","import { Build } from '@models/configurators/build';\r\nimport { ConfiguratorAction } from '@models/configurators/configurator-action';\r\nimport { ConfiguratorDI, Enumerable, Kbo } from '@models/configurators/configurator-di';\r\nimport { Container } from '@models/configurators/container';\r\nimport { CToken } from '@models/configurators/ctoken';\r\nimport { Field } from '@models/configurators/field';\r\nimport { Group } from '@models/configurators/group';\r\nimport { Hotspot } from '@models/configurators/hotspot';\r\nimport { IDummyNode } from '@models/configurators/kb-object';\r\nimport { KbObjectManager } from '@models/configurators/kb-object-manager';\r\nimport { OptionFilter } from '@models/configurators/option-filter';\r\nimport { CadOutput } from '@models/configurators/outputs/cad-output';\r\nimport { Output } from '@models/configurators/outputs/output';\r\nimport { Page } from '@models/configurators/page';\r\nimport { PartMaterial } from '@models/configurators/part-material';\r\nimport { PartOperation } from '@models/configurators/part-operation';\r\nimport { PartOperationDetail } from '@models/configurators/part-operation-detail';\r\nimport { PartRev } from '@models/configurators/partrev';\r\nimport { ReferencedConfigurator } from '@models/configurators/referenced-configurator';\r\nimport { RuleContainer } from '@models/configurators/rule-container';\r\nimport { UiObject } from '@models/configurators/ui-object';\r\nimport {\r\n IBooleanFieldRecording,\r\n IBuildType,\r\n IConfigurator,\r\n IConfiguredProduct,\r\n IDateFieldRecording,\r\n IFieldRecording,\r\n ILayoutSettingRecording,\r\n IMethodOfManufacture,\r\n INumberArrayFieldRecording,\r\n INumberFieldRecording,\r\n IPriceObject,\r\n IProduct,\r\n IStringArrayFieldRecording,\r\n IStringFieldRecording,\r\n IUploadFieldRecording,\r\n} from '@models/entity-models';\r\nimport { eFieldType, eOptionFilterSource, eQueryMode, eRuleType, eValidationType, eViewerMode } from '@models/enums';\r\nimport { ConfiguratorFunction } from './configurator-function';\r\nimport { LayoutContent } from './layout-content';\r\nimport { NestedSet } from './nested-set';\r\nimport { Export } from './outputs/export';\r\n\r\n@Kbo(CToken.Configurator)\r\nexport class Configurator extends Container implements IConfigurator {\r\n constructor(kom: KbObjectManager, obj?: any) {\r\n super(kom);\r\n\r\n kom.recurse(obj, this);\r\n this.$fieldsDirty = false; // reset fields dirty after the recurse\r\n this.$fieldsDirtyForSceneRules = true;\r\n this.$manager.addKbObject(this, undefined);\r\n\r\n this.$rulesNode = { id: this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: () => [CToken.RuleContainer], getParent: () => this };\r\n this.$actionsNode = { id: this.id + \"_actions\", $type: \"ActionsNode\", allowedChildren: () => [CToken.ConfiguratorAction], getParent: () => this };\r\n this.$functionsNode = { id: this.id + \"functions\", $type: \"FunctionsNode\", allowedChildren: () => [CToken.ConfiguratorFunction], getParent: () => this };\r\n this.$optionFiltersNode = { id: this.id + \"_filters\", $type: \"OptionFiltersNode\", allowedChildren: () => [CToken.OptionFilter], getParent: () => this };\r\n this.$referencedConfiguratorsNode = { id: this.id + \"_refConfigs\", $type: \"ReferencedConfiguratorsNode\", allowedChildren: () => [CToken.ReferencedConfigurator], getParent: () => this };\r\n this.$buildsNode = { id: this.id + \"_builds\", $type: \"BuildsNode\", allowedChildren: () => [CToken.Build], getParent: () => this };\r\n this.$hotspotsNode = { id: this.id + \"_hotspots\", $type: \"HotspotsNode\", allowedChildren: () => [CToken.Hotspot], getParent: () => this };\r\n }\r\n\r\n // dummy nodes\r\n public $rulesNode: IDummyNode; // dummy object to act as the data item for the tree node\r\n public $actionsNode: IDummyNode; // dummy object to act as the data item for the tree node\r\n public $functionsNode: IDummyNode; // dummy object to act as the data item for the tree node\r\n public $optionFiltersNode: IDummyNode; // dummy object to act as the data item for the optionFilters node\r\n public $referencedConfiguratorsNode: IDummyNode;\r\n public $buildsNode: IDummyNode;\r\n public $hotspotsNode: IDummyNode;\r\n\r\n public idProduct: number;\r\n public idQuoteHeader: number;\r\n public entityType: string;\r\n public idLayout: number;\r\n\r\n private _layoutSettings: ILayoutSettingRecording[];\r\n @Enumerable()\r\n public get layoutSettings(): ILayoutSettingRecording[] {\r\n if (!this._layoutSettings) this._layoutSettings = [];\r\n return this._layoutSettings;\r\n }\r\n public set layoutSettings(val) {\r\n this._layoutSettings = val;\r\n }\r\n\r\n public allowedChildren(rootType: CToken) {\r\n return [CToken.Page];\r\n }\r\n\r\n // IProduct properties\r\n public shortDescription: string;\r\n public sku: string;\r\n public mfgPartNumber: string;\r\n public manufacturer: string;\r\n public unitOfMeasure: string;\r\n public price: number;\r\n public cost: number;\r\n public maxDiscountPercentage: number;\r\n public maxQty: number;\r\n public minQty: number;\r\n public allowFractionalQty: boolean;\r\n public relatedProductsQuery: string;\r\n public score: number;\r\n public active: boolean;\r\n public priceObject: IPriceObject;\r\n\r\n public inheritCategoryPermissions: boolean;\r\n\r\n public v: number;\r\n public snapVersion: number;\r\n public validationTiming: string;\r\n public allowSaveWithErrors: boolean;\r\n public layout: string;\r\n public tabStyle: string;\r\n public tabIconSize: number;\r\n public headerColor: string;\r\n public viewerMediaPath: string;\r\n public autoValidation: boolean = true;\r\n public showPrice: boolean;\r\n public showNavigation: boolean;\r\n public showSubmitButton: boolean;\r\n public submitButtonText: string;\r\n public generateQrCodeText: string;\r\n public submitAndStayButtonText: string;\r\n public showMoveAnimation: boolean;\r\n public showTabs: boolean;\r\n public showTabLabels: boolean;\r\n public showActionBar: boolean;\r\n public hasPricingRule: boolean;\r\n public hasQuoteRule: boolean;\r\n\r\n public nestedButtonText: string;\r\n public allowUserToRemove: boolean;\r\n\r\n public alwaysChild: boolean;\r\n public alwaysChildOf: number;\r\n\r\n public methodOfManufacture: IMethodOfManufacture;\r\n\r\n /** when a child of a nested set, will be filled with the element in this configurator whose UI will be used in the parent */\r\n public $nestedSetElement: UiObject;\r\n /**\r\n * should only be true when the configurator is running on the client\r\n */\r\n public $running: boolean;\r\n\r\n /**\r\n * if this configurator is a nested and was added by the end user, then stores the id of the user that added it\r\n */\r\n public addedByUser: number;\r\n /**\r\n * whether the fields in this configurator have been modified since the last rule cycle\r\n */\r\n public $fieldsDirty: boolean;\r\n\r\n /**\r\n * whether the fields in this configurator have been modified since the last scene rules cycle\r\n */\r\n public $fieldsDirtyForSceneRules: boolean;\r\n\r\n /**\r\n * freezes fields so they will not recalculate their value when calling field.value get() unless you\r\n * explicitly tell them to. Do not use unles you are fully aware of what you are doing.\r\n */\r\n public $freezeFieldValueCalculation: boolean;\r\n /**\r\n * Whether a value change in direct child configurators cause a rule cycle in this configurator.\r\n * Calculated by the configurator admin.\r\n */\r\n public bubbleRules: boolean;\r\n /**\r\n * Holds the rootscene's id as a string containing \"rootconfig.parentconfig.name/rootconfig.name\"\r\n * This is used to key the values in sceneViewerDb\r\n */\r\n public nestedPath: string | number;\r\n /**\r\n * if this is a scene configurator, holds the uuid of the clara scene\r\n */\r\n public claraId: string;\r\n /**\r\n * a unique id for tracking nested scenes. Only filled in if this configurator's\r\n * scene has been nested into a higher level scene\r\n */\r\n public $nestedSceneId: string;\r\n /**\r\n * a map of old scene id's to new scene id's. This is filled in when this is a nested scene configurator\r\n */\r\n public $sceneIdMap: {};\r\n /**\r\n * Used by sceneService as a placeholder for the scene configurator that correlates\r\n * to this cpq configurator (used for nested scene rules)\r\n */\r\n public $sceneConfigurator: Configurator;\r\n /**\r\n * When using kb3d, will hold a reference to the scene node that corresponds with this configurator\r\n */\r\n public $sceneNode: any;\r\n /**\r\n * Used by sceneService to determine whether this configurator should bubble up it's scene hotspots\r\n * when used as a nested configurator\r\n */\r\n public $nestHotspots: boolean;\r\n /**\r\n * When this configurator is a scene configurator, then uiConfigurator will be filled in\r\n * with it's corresponding full CPQ configurator\r\n */\r\n public $uiConfigurator: Configurator;\r\n /**\r\n * whether mouse over effects are enabled in the scene viewer\r\n */\r\n public mouseOverEffects: boolean = true;\r\n /**\r\n * the color that will be used for the emissive property of the mouse over materials\r\n */\r\n public mouseOverColor: string = '#131313';\r\n /**\r\n * when true, images in the scene will be prefetched to speed up performance of switching images/materials\r\n */\r\n public prefetchImages: boolean = true;\r\n /**\r\n * stores parameters passed into the configurator through the URL\r\n */\r\n parameters?: { [key: string]: any };\r\n /*\r\n * One of the properties for integrating with Kinetic\r\n */\r\n usePartSelector?: boolean;\r\n /**\r\n * convienence property set by the configurator view to determine if the loaded rule had been\r\n * run for this configurator to prevent \"double loading\"\r\n */\r\n public $ranLoadedRule: boolean = false;\r\n\r\n public convertToKb3d: boolean;\r\n public allowOrbit: boolean;\r\n public allowPan: boolean;\r\n public allowZoom: boolean;\r\n public constrainCameraToRadius: boolean;\r\n public cameraRadius: number;\r\n public pagePosition: string;\r\n public tabPosition: string;\r\n public pageWidth: number;\r\n public pageWidthUnits: string;\r\n\r\n private _viewerMode: string = eViewerMode.none;\r\n @Enumerable()\r\n public get viewerMode(): string {\r\n return this._viewerMode;\r\n }\r\n public set viewerMode(val) {\r\n this.setProperty('viewerMode', val);\r\n }\r\n\r\n private _idScene: number;\r\n @Enumerable()\r\n public get idScene(): number {\r\n return this._idScene;\r\n }\r\n public set idScene(val) {\r\n this.setProperty('idScene', val);\r\n }\r\n\r\n public clearMemoryWhenSwitchingScenes: boolean;\r\n public sceneToolbarPosition: string;\r\n public nestedSceneClickToSelect: boolean;\r\n\r\n private _pages: Page[];\r\n @Enumerable()\r\n public get pages(): Page[] {\r\n if (!this._pages) this._pages = [];\r\n return this._pages;\r\n }\r\n public set pages(val) {\r\n this._pages = val;\r\n }\r\n\r\n private _builds: Build[];\r\n @Enumerable()\r\n public get builds(): Build[] {\r\n if (!this._builds) this._builds = [];\r\n return this._builds;\r\n }\r\n public set builds(val) {\r\n this._builds = val;\r\n }\r\n\r\n private _optionFilters: OptionFilter[];\r\n @Enumerable()\r\n public get optionFilters(): OptionFilter[] {\r\n if (!this._optionFilters) this._optionFilters = [];\r\n return this._optionFilters;\r\n }\r\n public set optionFilters(val) {\r\n this._optionFilters = val;\r\n }\r\n\r\n private _configurators: Configurator[];\r\n @Enumerable()\r\n public get configurators(): Configurator[] {\r\n if (!this._configurators) this._configurators = [];\r\n return this._configurators;\r\n }\r\n public set configurators(val) {\r\n this._configurators = val;\r\n }\r\n\r\n private _referencedConfigurators: ReferencedConfigurator[];\r\n @Enumerable()\r\n public get referencedConfigurators(): ReferencedConfigurator[] {\r\n if (!this._referencedConfigurators) this._referencedConfigurators = [];\r\n return this._referencedConfigurators;\r\n }\r\n public set referencedConfigurators(val) {\r\n this._referencedConfigurators = val;\r\n }\r\n\r\n private _referencedScenes: number[];\r\n @Enumerable()\r\n public get referencedScenes(): number[] {\r\n if (!this._referencedScenes) this._referencedScenes = [];\r\n return this._referencedScenes;\r\n }\r\n public set referencedScenes(val) {\r\n this._referencedScenes = val;\r\n }\r\n\r\n private _actions: ConfiguratorAction[];\r\n @Enumerable()\r\n public get actions(): ConfiguratorAction[] {\r\n if (!this._actions) this._actions = [];\r\n return this._actions;\r\n }\r\n public set actions(val) {\r\n this._actions = val;\r\n }\r\n\r\n private _functions: ConfiguratorFunction[];\r\n @Enumerable()\r\n public get functions(): ConfiguratorFunction[] {\r\n if (!this._functions) this._functions = [];\r\n return this._functions;\r\n }\r\n public set functions(val) {\r\n this._functions = val;\r\n }\r\n\r\n private _hotspots: Hotspot[];\r\n @Enumerable()\r\n public get hotspots(): Hotspot[] {\r\n if (!this._hotspots) this._hotspots = [];\r\n return this._hotspots;\r\n }\r\n public set hotspots(val) {\r\n this._hotspots = val;\r\n }\r\n\r\n private _ruleContainers: RuleContainer[];\r\n @Enumerable()\r\n public get ruleContainers(): RuleContainer[] {\r\n if (!this._ruleContainers) this._ruleContainers = [];\r\n return this._ruleContainers;\r\n }\r\n public set ruleContainers(val) {\r\n this._ruleContainers = val;\r\n }\r\n\r\n private _layoutContents: LayoutContent[];\r\n @Enumerable()\r\n public get layoutContents(): LayoutContent[] {\r\n if (!this._layoutContents) this._layoutContents = [];\r\n return this._layoutContents;\r\n }\r\n public set layoutContents(val) {\r\n this._layoutContents = val;\r\n }\r\n\r\n public isNested() {\r\n return !!this.$parent;\r\n }\r\n\r\n public allPages(): Page[] {\r\n return this.getChildrenOfType(CToken.Page);\r\n }\r\n\r\n public allGroups(): Group[] {\r\n return this.getChildrenOfType(CToken.Group);\r\n }\r\n\r\n /**\r\n *\r\n * @param token Gets all the UI children of the given types.\r\n * @param allChildren\r\n */\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(\r\n tokens,\r\n this.children.concat(this.pages).concat(this.layoutContents.selectMany(lc => lc.children)) //get layout contents children, but not the layout contents themselves\r\n );\r\n }\r\n\r\n public allRuleContainers(): RuleContainer[] {\r\n return this.ruleContainers\r\n .concat(this.actions)\r\n .concat(this.optionFilters)\r\n .concat(this.getFields())\r\n .concat(this.getOutputs());\r\n }\r\n\r\n public addPage(): Page {\r\n let page = new Page(this.$manager);\r\n this.$manager.addKbObject(page, this);\r\n this.pages.push(page);\r\n return page;\r\n }\r\n\r\n public removePage(page: Page) {\r\n this.$manager.removeKbObject(page);\r\n this.pages.remove(page);\r\n }\r\n\r\n public addAction(): ConfiguratorAction {\r\n let action = new ConfiguratorAction(this.$manager);\r\n this.$manager.addKbObject(action, this);\r\n this.actions.push(action);\r\n return action;\r\n }\r\n\r\n public removeAction(action: ConfiguratorAction) {\r\n this.$manager.removeKbObject(action);\r\n this.actions.remove(action);\r\n }\r\n\r\n public addFunction(): ConfiguratorFunction {\r\n let f = new ConfiguratorFunction(this.$manager);\r\n f.name = 'Function';\r\n this.$manager.addKbObject(f, this);\r\n this.functions.push(f);\r\n return f;\r\n }\r\n\r\n public removeFunction(f: ConfiguratorFunction) {\r\n this.$manager.removeKbObject(f);\r\n this.functions.remove(f);\r\n }\r\n\r\n public addOptionFilter(): OptionFilter {\r\n let st = new OptionFilter(this.$manager);\r\n this.$manager.addKbObject(st, this);\r\n this.optionFilters.push(st);\r\n return st;\r\n }\r\n\r\n public removeOptionFilter(optionFilter: OptionFilter) {\r\n this.$manager.removeKbObject(optionFilter);\r\n this.optionFilters.remove(optionFilter);\r\n }\r\n\r\n public removeRuleContainer(rc: RuleContainer) {\r\n this.$manager.removeKbObject(rc);\r\n this.ruleContainers.remove(rc);\r\n }\r\n\r\n public addHotspot(): Hotspot {\r\n let ann = new Hotspot(this.$manager);\r\n this.$manager.addKbObject(ann, this);\r\n this.hotspots.push(ann);\r\n return ann;\r\n }\r\n\r\n public removeHotspot(ann: Hotspot) {\r\n this.$manager.removeKbObject(ann);\r\n this.hotspots.remove(ann);\r\n }\r\n\r\n public addBuild(buildType: IBuildType): Build {\r\n let build: Build;\r\n // we should only have one buildtype in a configurator\r\n let exists = this.builds.some(b => b.idBuildType == buildType.id);\r\n if (!exists) {\r\n build = new Build(this.$manager);\r\n build.idBuildType = buildType.id;\r\n build.name = buildType.name;\r\n this.$manager.addKbObject(build, this);\r\n this.builds.push(build);\r\n }\r\n\r\n return build;\r\n }\r\n\r\n public removeBuild(build: Build) {\r\n this.$manager.removeKbObject(build);\r\n this.builds.remove(build);\r\n }\r\n\r\n public addReferencedConfigurator(idProduct: number) {\r\n let rc = this.referencedConfigurators.find(rc => rc.idProduct == idProduct);\r\n if (!rc) {\r\n rc = new ReferencedConfigurator(this.$manager);\r\n rc.idProduct = idProduct;\r\n this.referencedConfigurators.push(rc);\r\n this.$manager.addKbObject(rc, this);\r\n }\r\n\r\n return rc;\r\n }\r\n\r\n public removeReferencedConfigurator(rc: ReferencedConfigurator) {\r\n this.$manager.removeKbObject(rc);\r\n this.referencedConfigurators.remove(rc);\r\n }\r\n\r\n public addReferencedScene(idScene: number) {\r\n if (!this.referencedScenes.find(rs => rs == idScene)) {\r\n this.referencedScenes.push(idScene);\r\n }\r\n }\r\n\r\n public removeReferencedScene(rs: number) {\r\n this.referencedScenes.remove(rs);\r\n }\r\n\r\n public getNestedConfigurators(): Configurator[] {\r\n let result: Configurator[] = [];\r\n this.configurators.forEach(n => result.push(n));\r\n this.allPages().forEach(p => {\r\n p.configurators.forEach(n => {\r\n result.push(n);\r\n });\r\n });\r\n this.getChildrenOfType(CToken.NestedSet).forEach(ns => {\r\n ns.configurators.forEach(n => {\r\n result.push(n);\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * get's all configurators, including children of children, etc.\r\n */\r\n public getAllConfigurators(): Configurator[] {\r\n let allNested = [];\r\n let addToNested = (config: Configurator) => {\r\n let nestedConfigs = config.getNestedConfigurators();\r\n allNested.pushArray(nestedConfigs);\r\n nestedConfigs.forEach(n => addToNested(n));\r\n };\r\n addToNested(this);\r\n return allNested;\r\n }\r\n\r\n public hasRule(ruleType: string): boolean {\r\n let rc = this.ruleContainers.find(rc => {\r\n return rc.ruleType.isEqual(ruleType);\r\n });\r\n return rc != null && rc.js && rc.js.length > 0;\r\n }\r\n /**\r\n * gets a concatinated javascript rule for the specified rule type\r\n */\r\n public getRuleJs(ruleType: string): string {\r\n let rc = this.ruleContainers.find(rc => {\r\n return rc.ruleType.isEqual(ruleType);\r\n });\r\n return rc ? this.getRuleJsFromContainer(rc) : '';\r\n }\r\n\r\n public getRuleJsFromContainer(ruleContainer: RuleContainer): string {\r\n // global rule should always be included\r\n let globalRc = this.ruleContainers.find(rc => rc.ruleType.isEqual(eRuleType.global));\r\n let globalJs = globalRc ? globalRc.js + '\\n\\n' : '';\r\n return globalJs + ruleContainer.js;\r\n }\r\n\r\n public preValidate() {\r\n this.getFields().forEach(field => field.preValidate());\r\n }\r\n\r\n public isValid(): boolean {\r\n let v = true;\r\n\r\n for (let page of this.pages) {\r\n if (!page.isValid()) {\r\n v = false;\r\n }\r\n }\r\n for (let config of this.configurators) {\r\n if (!config.isValid()) {\r\n v = false;\r\n }\r\n }\r\n\r\n this.$valid = v;\r\n return this.$valid;\r\n }\r\n\r\n /**\r\n * Sets field values based on an object whose properties are field names and values are the field values to set\r\n */\r\n public setFields(fields: {}) {\r\n for (let prop in fields) {\r\n if (fields.hasOwnProperty(prop)) {\r\n let field = this.$manager.getByIdOrName(prop, false);\r\n if (field) {\r\n field.value = fields[prop];\r\n }\r\n }\r\n }\r\n }\r\n\r\n public getOutputs(predicate?: (output: Output) => boolean): Output[] {\r\n let result = [];\r\n\r\n let process = o => {\r\n if (predicate) {\r\n if (predicate(o)) {\r\n result.push(o);\r\n }\r\n } else {\r\n result.push(o);\r\n }\r\n };\r\n this.builds.forEach(b => {\r\n b.outputs.forEach(o => {\r\n process(o);\r\n if (ConfiguratorDI.instanceOf(o, CToken.CadOutput)) {\r\n o.drawings.forEach(process);\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n public getExports(predicate?: (exp: Export) => boolean): Export[] {\r\n let exports = [];\r\n let outputs = this.getOutputs();\r\n for (let o of outputs) {\r\n for (let exp of o.exports) {\r\n if ((predicate && predicate(exp)) || !predicate) {\r\n exports.push(exp);\r\n }\r\n }\r\n }\r\n return exports;\r\n }\r\n\r\n public getFields(predicate?: (field: Field) => boolean): Field[] {\r\n let fields = this.getChildrenOfType(CToken.Field);\r\n return predicate ? fields.filter(f => predicate(f)) : fields;\r\n }\r\n\r\n public getGroups(predicate?: (group: Group) => boolean): Group[] {\r\n let groups = this.getChildrenOfType(CToken.Group);\r\n return predicate ? groups.filter(g => predicate(g)) : groups;\r\n }\r\n\r\n public getFieldsObject(): {} {\r\n let fields = this.getFields();\r\n let o = {};\r\n fields.forEach(field => {\r\n o[field.name] = field.value;\r\n });\r\n return o;\r\n }\r\n\r\n public runConfiguredProduct(configProduct: IConfiguredProduct, productDb: { [idProduct: number]: IProduct }) {\r\n if (configProduct.fields) {\r\n configProduct.fields.forEach(fieldRec => {\r\n let field = this.$manager.get(fieldRec.id, false);\r\n if (!field) field = this.$manager.getByName(fieldRec.name, false);\r\n if (field && field.$type == CToken.Field.key) {\r\n if (field.type == eFieldType.text || field.type == eFieldType.color) {\r\n field.value = (fieldRec as IStringFieldRecording).stringValue;\r\n } else if (field.type == eFieldType.number) {\r\n field.value = (fieldRec as INumberFieldRecording).numberValue;\r\n } else if (field.type == eFieldType.boolean) {\r\n field.value = (fieldRec as IBooleanFieldRecording).booleanValue;\r\n } else if (field.type == eFieldType.date) {\r\n field.value = (fieldRec as IDateFieldRecording).dateValue;\r\n } else if (field.type == eFieldType.upload) {\r\n field.value = (fieldRec as IUploadFieldRecording).uploadValue;\r\n } else if (field.type == eFieldType.textArray || field.type == eFieldType.colorArray) {\r\n field.value = (fieldRec as IStringArrayFieldRecording).stringArrayValue;\r\n } else if (field.type == eFieldType.numberArray) {\r\n field.value = (fieldRec as INumberArrayFieldRecording).numberArrayValue;\r\n } else {\r\n throw new Error('not implemented');\r\n }\r\n // } else if (field.type == eFieldType.date) {\r\n // field.value = (fieldRec).dateValue;\r\n // } else if (field.type == eFieldType.object) {\r\n // field.value = (fieldRec).objectValue;\r\n // } else if (field.type == eFieldType.array) {\r\n // throw \"not implemented\";\r\n // }\r\n }\r\n });\r\n }\r\n if (configProduct.configurators) {\r\n configProduct.configurators.forEach(nestRec => {\r\n let parent = this.$manager.get(nestRec.idParent, false) || this;\r\n let nested = parent.configurators.find(c => c.name.isEqual(nestRec.name));\r\n if (!nested) {\r\n nested = new Configurator(new KbObjectManager(), productDb[nestRec.idProduct].configurator);\r\n nested.$running = this.$running;\r\n nested.name = nestRec.name;\r\n parent.configurators.push(nested);\r\n this.$manager.addKbObject(nested, parent);\r\n nested.addedByUser = nestRec.addedByUser;\r\n nested.allowUserToRemove = nestRec.allowUserToRemove;\r\n }\r\n\r\n nested.runConfiguredProduct(nestRec, productDb);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * gets the configured product of the configurator. WithDesiredValues should only be\r\n * set to true when sending to the server to run option filters. It sends the desiredValue of the fields\r\n * as opposed to the calculated value based on options.\r\n * @param withDesiredValues\r\n */\r\n public getConfiguredProduct(withDesiredValues = false): IConfiguredProduct {\r\n let getFieldValue = (field: Field) => {\r\n if (withDesiredValues && field.idOptionFilter && field.canJoinOptionFilter()) {\r\n return field.desiredValue;\r\n } else {\r\n return field.value;\r\n }\r\n };\r\n\r\n let configProduct = {\r\n configurators: [],\r\n fields: [],\r\n name: this.name,\r\n entityType: this.entityType,\r\n idProduct: this.idProduct,\r\n idQuoteHeader: this.idQuoteHeader,\r\n addedByUser: this.addedByUser,\r\n allowUserToRemove: this.allowUserToRemove,\r\n idParent: this.$parent && this.$parent.id,\r\n idScene: this.idScene,\r\n validationMessages: [],\r\n parameters: this.parameters,\r\n } as IConfiguredProduct;\r\n\r\n this.getFields().forEach(field => {\r\n let fieldRec = {\r\n id: field.id,\r\n name: field.name,\r\n } as IFieldRecording;\r\n configProduct.fields.push(fieldRec);\r\n if (field.type == eFieldType.text || field.type == eFieldType.color) {\r\n (fieldRec as IStringFieldRecording).stringValue = getFieldValue(field);\r\n } else if (field.type == eFieldType.number) {\r\n (fieldRec as INumberFieldRecording).numberValue = getFieldValue(field);\r\n } else if (field.type == eFieldType.boolean) {\r\n (fieldRec as IBooleanFieldRecording).booleanValue = getFieldValue(field);\r\n } else if (field.type == eFieldType.date) {\r\n (fieldRec as IDateFieldRecording).dateValue = getFieldValue(field);\r\n } else if (field.type == eFieldType.upload) {\r\n (fieldRec as IUploadFieldRecording).uploadValue = getFieldValue(field);\r\n } else if (field.type == eFieldType.textArray || field.type == eFieldType.colorArray) {\r\n (fieldRec as IStringArrayFieldRecording).stringArrayValue = getFieldValue(field);\r\n } else if (field.type == eFieldType.numberArray) {\r\n (fieldRec as INumberArrayFieldRecording).numberArrayValue = getFieldValue(field);\r\n } else {\r\n throw new Error('not implemented');\r\n }\r\n field.validationErrors.forEach(err => {\r\n configProduct.validationMessages.push({\r\n messageType: eValidationType.error,\r\n object: { id: field.id, name: field.$label },\r\n message: err.message,\r\n });\r\n });\r\n field.warnings.forEach(warn => {\r\n configProduct.validationMessages.push({\r\n messageType: eValidationType.warning,\r\n object: { id: field.id, name: field.$label },\r\n message: warn.message,\r\n });\r\n });\r\n // } else if (field.type == eFieldType.date) {\r\n // (fieldRec).dateValue = field.value;\r\n // } else if (field.type == eFieldType.object) {\r\n // (fieldRec).objectValue = field.value;\r\n // } else if (field.type == eFieldType.array) {\r\n // throw \"not implemented\";\r\n // }\r\n });\r\n\r\n this.getNestedConfigurators().forEach(nested => {\r\n let configuredNested = nested.getConfiguredProduct(withDesiredValues);\r\n configProduct.configurators.push(configuredNested);\r\n });\r\n\r\n return configProduct;\r\n }\r\n\r\n public filtersShouldRunOnClient() {\r\n return !(\r\n this.optionFilters.some(o => o.source == eOptionFilterSource.database) ||\r\n this.optionFilters.some(o => o.source == eOptionFilterSource.safeFunction) ||\r\n this.optionFilters.some(o => o.source == eOptionFilterSource.query && o.queryMode == eQueryMode.database)\r\n );\r\n }\r\n\r\n public getPartMaterial(mtlPartNum: string, methodOfManufacture: PartRev = null): PartMaterial {\r\n let result: PartMaterial = null;\r\n let recurse = (material: PartMaterial) => {\r\n if (result) return;\r\n if (material.mtlPartNum == mtlPartNum) result = material;\r\n if (material.materials) {\r\n for (let i in material.materials) {\r\n recurse(material.materials[i]);\r\n }\r\n }\r\n };\r\n if (!methodOfManufacture) methodOfManufacture = this.methodOfManufacture.rootPartRev;\r\n if (methodOfManufacture.partNum == mtlPartNum || (methodOfManufacture).mtlPartNum == mtlPartNum)\r\n return methodOfManufacture;\r\n for (let i in methodOfManufacture.materials) {\r\n recurse(methodOfManufacture.materials[i]);\r\n }\r\n return result;\r\n }\r\n\r\n public getPartOperation(opCode: string, methodOfManufacture: PartRev = null): PartOperation {\r\n let result: PartOperation = null;\r\n let recurse = (material: PartMaterial) => {\r\n if (result) return;\r\n for (let i in material.operations) {\r\n if (material.operations[i].opCode == opCode) result = material.operations[i];\r\n }\r\n if (material.materials) {\r\n for (let i in material.materials) {\r\n recurse(material.materials[i]);\r\n }\r\n }\r\n };\r\n if (!methodOfManufacture) methodOfManufacture = this.methodOfManufacture.rootPartRev;\r\n\r\n for (let i in methodOfManufacture.operations) {\r\n if (methodOfManufacture.operations[i].opCode == opCode) result = methodOfManufacture.operations[i];\r\n }\r\n for (let i in methodOfManufacture.materials) {\r\n recurse(methodOfManufacture.materials[i]);\r\n }\r\n return result;\r\n }\r\n\r\n public getPartOperationDetail(id: string, methodOfManufacture: PartRev = null): PartOperationDetail {\r\n let result: PartOperationDetail = null;\r\n let recurse = (material: PartMaterial) => {\r\n if (result) return;\r\n for (let i in material.operations) {\r\n for (let j in material.operations[i]) {\r\n let opDtl = material.operations[i].operationDetails[j];\r\n if (opDtl.resourceID == id || opDtl.resourceGrpID == id) result = opDtl;\r\n }\r\n }\r\n if (material.materials) {\r\n for (let i in material.materials) {\r\n recurse(material.materials[i]);\r\n }\r\n }\r\n };\r\n if (!methodOfManufacture) methodOfManufacture = this.methodOfManufacture.rootPartRev;\r\n\r\n for (let i in methodOfManufacture.operations) {\r\n for (let j in methodOfManufacture.operations[i].operationDetails) {\r\n let opDtl = methodOfManufacture.operations[i].operationDetails[j];\r\n if (opDtl.resourceID == id || opDtl.resourceGrpID == id) result = opDtl;\r\n }\r\n }\r\n for (let i in methodOfManufacture.materials) {\r\n recurse(methodOfManufacture.materials[i]);\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Button } from \"@models/configurators/button\";\r\nimport { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IDropdownButton } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.DropdownButton)\r\nexport class DropdownButton extends Button implements IDropdownButton {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n private _buttons: Button[];\r\n @Enumerable()\r\n public get buttons(): Button[] {\r\n if (!this._buttons) this._buttons = [];\r\n return this._buttons;\r\n }\r\n public set buttons(val) {\r\n this._buttons = val;\r\n }\r\n \r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.buttons\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return [\r\n CToken.Button\r\n ];\r\n }\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IExpander } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Expander)\r\nexport class Expander extends UiObject implements IExpander {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public expanded: boolean;\r\n public $expandedInPreview: boolean;\r\n public icon: string;\r\n public iconStyle: string;\r\n public mediaPath: string;\r\n \r\n private _children: UiObject[];\r\n @Enumerable()\r\n public get children(): UiObject[] {\r\n if (!this._children) this._children = [];\r\n return this._children;\r\n }\r\n public set children(val) {\r\n this._children = val;\r\n }\r\n \r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n let c = this.containerChildren(rootType);\r\n c.removeWhere(c => c.key.equalsAny( //don't allow expanders in expanders\r\n CToken.Accordion.key,\r\n CToken.Expander.key\r\n ));\r\n return c;\r\n }\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IGridColumn } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.GridColumn)\r\nexport class GridColumn extends UiObject implements IGridColumn {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n private _children: UiObject[];\r\n @Enumerable()\r\n public get children(): UiObject[] {\r\n if (!this._children) this._children = [];\r\n return this._children;\r\n }\r\n public set children(val) {\r\n this._children = val;\r\n }\r\n\r\n // public visible: boolean;\r\n public relativeWidth: string;\r\n public verticalAlignment: string;\r\n\r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return this.containerChildren(rootType);\r\n }\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { GridColumn } from \"@models/configurators/grid-column\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IGridRow } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.GridRow)\r\nexport class GridRow extends UiObject implements IGridRow {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public horizontalAlignment: string;\r\n public verticalAlignment: string;\r\n public spaceBetweenItems: string;\r\n public collapseOnMobile: boolean;\r\n \r\n private _columns: GridColumn[];\r\n @Enumerable()\r\n public get columns(): GridColumn[] {\r\n if (!this._columns) this._columns = [];\r\n return this._columns;\r\n }\r\n public set columns(val) {\r\n this._columns = val;\r\n }\r\n\r\n // public visible: boolean;\r\n\r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.columns\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n // implement in derived classes\r\n return [\r\n CToken.GridColumn\r\n ];\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { ITab, IHtml } from \"@models/entity-models\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\n\r\n@Kbo(CToken.Html)\r\nexport class Html extends UiObject implements IHtml {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n \r\n public value: string;\r\n}\r\n","import { ConfiguratorDI, Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { Container } from \"@models/configurators/container\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { Field } from \"@models/configurators/field\";\r\nimport { Group } from \"@models/configurators/group\";\r\nimport { IDummyNode } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { ILayoutConfig } from \"@models/entity-models\";\r\nimport { eRuleType } from \"@models/enums\";\r\n\r\n@Kbo(CToken.LayoutConfig)\r\nexport class LayoutConfig extends Container implements ILayoutConfig {\r\n\r\n constructor(kom: KbObjectManager, obj?: any) {\r\n super(kom);\r\n\r\n kom.recurse(obj, this);\r\n this.$manager.addKbObject(this, undefined);\r\n this.$layoutSettingsDirty = false; // reset fields dirty after the recurse\r\n\r\n this.$rulesNode = { id: this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: () => [CToken.Rule], getParent: () => this }; \r\n this.$settingsNode = { id: this.id + \"_settings\", $type: \"SettingsNode\", allowedChildren: () => [], getParent: () => this };\r\n }\r\n \r\n // dummy nodes\r\n public $rulesNode: IDummyNode; // dummy object to act as the data item for the tree node\r\n public $settingsNode: IDummyNode;\r\n /**\r\n * whether the layout settings in this layout have been modified since the last rule cycle\r\n */\r\n public $layoutSettingsDirty: boolean;\r\n public autoValidation: boolean;\r\n public useMobileDropdowns: boolean;\r\n\r\n private _ruleContainers: RuleContainer[];\r\n @Enumerable()\r\n public get ruleContainers(): RuleContainer[] {\r\n if (!this._ruleContainers) this._ruleContainers = [];\r\n return this._ruleContainers;\r\n }\r\n public set ruleContainers(val) {\r\n this._ruleContainers = val;\r\n }\r\n\r\n private _settings: UiObject[];\r\n @Enumerable()\r\n public get settings(): UiObject[] {\r\n if (!this._settings) this._settings = [];\r\n return this._settings;\r\n }\r\n public set settings(val) {\r\n this._settings = val;\r\n }\r\n\r\n public filterChildren(tokens: CToken[], allChildren: UiObject[]): T[] {\r\n let list: T[] = [];\r\n for (let c of allChildren) {\r\n if (!tokens.length || tokens.some(t => ConfiguratorDI.instanceOf(c, t))) {\r\n list.push(c as any);\r\n }\r\n c.getChildrenOfType(...tokens).forEach(c2 => list.push(c2));\r\n }\r\n return list;\r\n }\r\n\r\n /**\r\n * \r\n * @param token Gets all the UI children of the given types.\r\n * @param allChildren \r\n */\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children\r\n );\r\n }\r\n \r\n public hasRule(ruleType: string): boolean {\r\n let rc = this.ruleContainers.find(rc => {\r\n return rc.ruleType.isEqual(ruleType);\r\n });\r\n return (rc != null && rc.js && rc.js.length > 0);\r\n }\r\n /**\r\n * gets a concatinated javascript rule for the specified rule type\r\n */\r\n public getRuleJs(ruleType: string): string {\r\n let rc = this.ruleContainers.find(rc => {\r\n return rc.ruleType.isEqual(ruleType);\r\n });\r\n return rc ? this.getRuleJsFromContainer(rc) : \"\";\r\n }\r\n\r\n public getRuleJsFromContainer(ruleContainer: RuleContainer): string {\r\n // global rule should always be included\r\n let globalRc = this.ruleContainers.find(rc => rc.ruleType.isEqual(eRuleType.global));\r\n let globalJs = globalRc ? globalRc.js + \"\\n\\n\" : \"\";\r\n return globalJs + ruleContainer.js;\r\n } \r\n\r\n public addSettingsGroup(): Group {\r\n let g = new Group(this.$manager);\r\n this.$manager.addKbObject(g, this);\r\n this.settings.push(g);\r\n return g;\r\n }\r\n\r\n public removeSettingsGroup(g: Group) {\r\n this.$manager.removeKbObject(g);\r\n this.settings.remove(g);\r\n }\r\n\r\n public addSettingsField(group: Group): Field {\r\n let f = new Field(this.$manager);\r\n this.$manager.addKbObject(f, group);\r\n group.children.push(f);\r\n return f;\r\n }\r\n\r\n public removeSettingsField(f: Field) {\r\n this.$manager.removeKbObject(f);\r\n (f.$parent as Group).children.remove(f);\r\n }\r\n\r\n public removeRuleContainer(rc: RuleContainer) {\r\n this.$manager.removeKbObject(rc);\r\n this.ruleContainers.remove(rc);\r\n }\r\n\r\n /**\r\n * returns a flat array of the layout children that are \r\n * content containers meant for consumers to fill in with content\r\n */\r\n public getContentContainers(): UiObject[]{\r\n return this.getChildrenOfType(\r\n CToken.Container,\r\n CToken.PageControl\r\n ).filter(c => !ConfiguratorDI.instanceOf(c, CToken.Container) || c.isPlaceholder);\r\n }\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { ILayoutContent } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.LayoutContent)\r\nexport class LayoutContent extends UiObject implements ILayoutContent {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n } \r\n\r\n public idContent: string;\r\n public nameInLayout: string;\r\n public contentType: string;\r\n public $foundInCurrentLayout: boolean;\r\n\r\n private _children: UiObject[];\r\n @Enumerable()\r\n public get children(): UiObject[] {\r\n if (!this._children) this._children = [];\r\n return this._children;\r\n }\r\n public set children(val) {\r\n this._children = val;\r\n }\r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n if (rootType == CToken.Configurator && this.contentType == CToken.Container.key) {\r\n return this.containerChildren(rootType);\r\n } else {\r\n return [];\r\n }\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { ITab, IMedia } from \"@models/entity-models\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\n\r\n@Kbo(CToken.Media)\r\nexport class Media extends UiObject implements IMedia {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n \r\n public mediaPath: string;\r\n}\r\n","import { ConfiguratorDI, Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { PartMaterial } from \"@models/configurators/part-material\";\r\nimport { PartOperation } from \"@models/configurators/part-operation\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IDummyNode } from \"@models/configurators/kb-object\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\n\r\nexport interface IManufactureObject {\r\n $properties: UiObject[];\r\n getIdentifyingProperty: () => string;\r\n _metadata: any[];\r\n}\r\n\r\n@Kbo(CToken.PartRev)\r\nexport class PartRev extends KbObject implements IManufactureObject {\r\n\r\n public $properties: UiObject[];\r\n public partNum: string;\r\n public _metadata: any = {}\r\n;\r\n\r\n public static getMetadataProperties() {\r\n return [];\r\n }\r\n\r\n private _materials: PartMaterial[];\r\n @Enumerable()\r\n public get materials(): PartMaterial[] {\r\n if (!this._materials) this._materials = [];\r\n return this._materials;\r\n }\r\n public set materials(val) {\r\n this._materials = val;\r\n }\r\n\r\n private _operations: PartOperation[];\r\n @Enumerable()\r\n public get operations(): PartOperation[] {\r\n if (!this._operations) this._operations = [];\r\n return this._operations;\r\n }\r\n public set operations(val) {\r\n this._operations = val;\r\n }\r\n public $materialsNode: IDummyNode;\r\n public $operationsNode: IDummyNode;\r\n\r\n constructor(kom: KbObjectManager, data?: any) {\r\n super(kom);\r\n this.$materialsNode = { id: this.id + \"_materials\", $type: \"MaterialsNode\", allowedChildren: () => [CToken.PartMaterial], getParent: () => this };\r\n this.$operationsNode = { id: this.id + \"_operations\", $type: \"OperationsNode\", allowedChildren: () => [CToken.PartOperation], getParent: () => this };\r\n this._metadata = {};\r\n\r\n for (const key in data) {\r\n const value = data[key];\r\n if (!Array.isArray(value)) (this as any)[key] = value;\r\n }\r\n }\r\n\r\n public getIdentifyingProperty() {\r\n return \"partNum\";\r\n }\r\n}","import { ConfiguratorDI, Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { PartMaterial } from \"@models/configurators/part-material\";\r\nimport { PartOperation } from \"@models/configurators/part-operation\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IDummyNode } from \"@models/configurators/kb-object\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IMethodOfManufacture } from \"@models/entity-models\";\r\nimport { PartRev } from \"@models/configurators/partrev\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { eRuleType } from \"@models/enums\";\r\n\r\n@Kbo(CToken.MethodOfManufacture)\r\nexport class MethodOfManufacture extends RuleContainer implements IMethodOfManufacture {\r\n\r\n public rootPartRev: PartRev;\r\n\r\n public $rulesNode: IDummyNode;\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n this.rootPartRev = new PartRev(kom, { partNum: \"Part Revision\" });\r\n this.ruleType = eRuleType.manufacture;\r\n this.$rulesNode = { id: this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: () => [CToken.Rule], getParent: () => this };\r\n }\r\n}","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { INestedSet } from \"@models/entity-models\";\r\nimport { eRuleType } from \"@models/enums\";\r\nimport { Configurator } from \"./configurator\";\r\n\r\n@Kbo(CToken.NestedSet)\r\nexport class NestedSet extends UiObject implements INestedSet {\r\n constructor(kom: KbObjectManager) {\r\n super(kom, { ruleType: eRuleType.nestedSetSelected });\r\n }\r\n\r\n public display: string;\r\n public autoNavigateToElement: boolean;\r\n \r\n private _configurators: Configurator[];\r\n @Enumerable()\r\n public get configurators(): Configurator[] {\r\n if (!this._configurators) this._configurators = [];\r\n return this._configurators;\r\n }\r\n public set configurators(val) {\r\n this._configurators = val;\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { IOption } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Option)\r\nexport class Option implements IOption {\r\n constructor() {\r\n\r\n }\r\n public value: any;\r\n public image: string;\r\n public imageWhenSelected: string;\r\n public label: string;\r\n public description: string;\r\n}\r\n","import { ConfiguratorDI, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IOutputField } from \"@models/entity-models\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\n\r\n@Kbo(CToken.OutputField)\r\nexport class OutputField extends KbObject implements IOutputField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n \r\n public type: eOutputFieldType;\r\n public externalId: string;\r\n\r\n /**\r\n * OBSOLETE - use ConfiguratorDI.getNewOutputField instead\r\n * This is here for backwards compatibility\r\n * @param fieldType \r\n * @param kom \r\n * @param args \r\n */\r\n public static getNewOutputFieldOfType(\r\n fieldType: eOutputFieldType,\r\n kom: KbObjectManager,\r\n args?: IOutputField\r\n ): T {\r\n return ConfiguratorDI.getNewOutputField(fieldType, kom, args);\r\n }\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadAnnotationField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadAnnotationField, eOutputFieldType.cadAnnotation)\r\nexport class CadAnnotationField extends OutputField implements ICadAnnotationField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public value: string;\r\n public markedForDrawing: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadBlockArrayField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadBlockArrayField, eOutputFieldType.cadBlockArray)\r\nexport class CadBlockArrayField extends OutputField implements ICadBlockArrayField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public columnSpacing: number;\r\n public filePath: string;\r\n public flipX: boolean;\r\n public flipY: boolean;\r\n public insertionPointX: number;\r\n public insertionPointY: number;\r\n public insertionPointZ: number;\r\n public layer: string;\r\n public numColumns: number;\r\n public numRows: number;\r\n public password: string;\r\n public rotation: number;\r\n public rowSpacing: number;\r\n public xScale: number;\r\n public yScale: number;\r\n public zScale: number;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadBlockField, ICadParameterField} from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadBlockField, eOutputFieldType.cadBlock)\r\nexport class CadBlockField extends OutputField implements ICadBlockField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public filePath: string;\r\n public flipX: boolean;\r\n public flipY: boolean;\r\n public insertionPointX: number;\r\n public insertionPointY: number;\r\n public insertionPointZ: number;\r\n public layer: string;\r\n public parameters: ICadParameterField[];\r\n public password: string;\r\n public rotation: number;\r\n public xScale: number;\r\n public yScale: number;\r\n public zScale: number;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadComponentField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadComponentField, eOutputFieldType.cadComponent)\r\nexport class CadComponentField extends OutputField implements ICadComponentField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public value: string;\r\n public suppressed: boolean;\r\n public deleted: boolean;\r\n public newFileName: string;\r\n public partFamilyName: string;\r\n public newPartFamilyName: string;\r\n public material: string;\r\n public customMaterialDatabase: string;\r\n public fileNameWithExtension: string;\r\n public filePath: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadCustomPropertyField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadCustomPropertyField, eOutputFieldType.cadCustomProperty)\r\nexport class CadCustomPropertyField extends OutputField implements ICadCustomPropertyField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public value: string;\r\n public fieldName: string;\r\n public partName: string;\r\n public partFamilyName: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadDimensionField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadDimensionField, eOutputFieldType.cadDimension)\r\nexport class CadDimensionField extends OutputField implements ICadDimensionField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public markedForDrawing: boolean;\r\n public value: number;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadDrawingAnnotationField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadDrawingAnnotationField, eOutputFieldType.cadDrawingAnnotation)\r\nexport class CadDrawingAnnotationField extends OutputField implements ICadDrawingAnnotationField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public value: string;\r\n public x: number;\r\n public y: number;\r\n public visible: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadDrawingDimensionField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadDrawingDimensionField, eOutputFieldType.cadDrawingDimension)\r\nexport class CadDrawingDimensionField extends OutputField implements ICadDrawingDimensionField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public visible: boolean;\r\n public x: number;\r\n public y: number;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadDrawingSheetField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadDrawingSheetField, eOutputFieldType.cadDrawingSheet)\r\nexport class CadDrawingSheetField extends OutputField implements ICadDrawingSheetField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public scaleNumerator: number;\r\n public scaleDenominator: number;\r\n public useCustomScale: boolean;\r\n public deleted: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadDrawingViewField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadDrawingViewField, eOutputFieldType.cadDrawingView)\r\nexport class CadDrawingViewField extends OutputField implements ICadDrawingViewField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public useCustomScale: boolean;\r\n public autoPositionAnnotations: boolean;\r\n public scaleNumerator: number;\r\n public scaleDenominator: number;\r\n public autosize: boolean;\r\n public autoDimension: boolean;\r\n public autoBalloon: boolean;\r\n public ignoreMultipleBalloons: boolean;\r\n public deleted: boolean;\r\n public suppressed: boolean;\r\n public autoPosition: boolean;\r\n public parentBOMtitle: string;\r\n public bOMrenumber: boolean;\r\n public customPosition: boolean;\r\n public x: number;\r\n public y: number;\r\n}\r\n","import { Enumerable, KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Constraint } from \"@models/configurators/output-fields/cad/mates/constraint\";\r\nimport { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { ICadDynamicComponentField } from \"@models/entity-models\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\n\r\n@KboOutputField(CToken.CadDynamicComponentField, eOutputFieldType.cadDynamicComponent)\r\nexport class CadDynamicComponentField extends OutputField implements ICadDynamicComponentField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public filePath: string;\r\n public absoluteCompName: string;\r\n public partFamilyName: string;\r\n public suppressed: boolean;\r\n public fixed: boolean;\r\n public newName: string;\r\n public source: string;\r\n public sourceId: string;\r\n public nestedName: string;\r\n public nestedIdProduct: number;\r\n\r\n private _constraints: Constraint[];\r\n @Enumerable()\r\n public get constraints(): OutputField[] {\r\n if (!this._constraints) this._constraints = [];\r\n return this._constraints;\r\n }\r\n public set constraints(val) {\r\n this._constraints = val;\r\n }\r\n\r\n public addConstraint = (constraintType: eOutputFieldType, args?: any): Constraint => {\r\n let constraint = OutputField.getNewOutputFieldOfType(constraintType, this.$manager, args);\r\n constraint.type = constraintType;\r\n this.$manager.addKbObject(constraint, this);\r\n this.constraints.push(constraint);\r\n return constraint;\r\n }\r\n\r\n public removeConstraint = constraint => {\r\n this.$manager.removeKbObject(constraint);\r\n this.constraints.remove(constraint);\r\n }\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadDynamicDrawingAnnotationField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadDynamicDrawingAnnotationField, eOutputFieldType.cadDynamicDrawingAnnotation)\r\nexport class CadDynamicDrawingAnnotationField extends OutputField implements ICadDynamicDrawingAnnotationField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public value: string;\r\n public pointFullName: string;\r\n public x: number;\r\n public y: number;\r\n public viewFullName: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadDynamicDrawingDimensionField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadDynamicDrawingDimensionField, eOutputFieldType.cadDynamicDrawingDimension)\r\nexport class CadDynamicDrawingDimensionField extends OutputField implements ICadDynamicDrawingDimensionField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public visible: boolean;\r\n public point1Name: string;\r\n public point1ParentId: string;\r\n public point2Name: string;\r\n public point2ParentId: string;\r\n public x: number;\r\n public y: number;\r\n public vertical: boolean;\r\n public viewFullName: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadFeatureField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadFeatureField, eOutputFieldType.cadFeature)\r\nexport class CadFeatureField extends OutputField implements ICadFeatureField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public suppressed: boolean;\r\n public newName: string;\r\n public deleted: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadLayerField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadLayerField, eOutputFieldType.cadLayer)\r\nexport class CadLayerField extends OutputField implements ICadLayerField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public layerName: string;\r\n public lineType: string;\r\n public toAdd: boolean;\r\n public active: boolean;\r\n public freeze: boolean;\r\n public lineWeight: string; // eLayerLineWeight\r\n public color: string;\r\n public lock: boolean;\r\n public plottable: boolean;\r\n}\r\n","import { Enumerable, KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { CadLibDimension } from \"@models/configurators/output-fields/cad/mates/cad-lib-dimension\";\r\nimport { CadLibReference } from \"@models/configurators/output-fields/cad/mates/cad-lib-reference\";\r\nimport { Constraint } from \"@models/configurators/output-fields/cad/mates/constraint\";\r\nimport { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { ICadLibFeatureField } from \"@models/entity-models\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\n\r\n@KboOutputField(CToken.CadLibFeatureField, eOutputFieldType.cadLibFeature)\r\nexport class CadLibFeatureField extends OutputField implements ICadLibFeatureField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public libraryFeatureName: string;\r\n public componentId: string;\r\n public partFamilyName: string;\r\n public filePath: string;\r\n\r\n private _references: CadLibReference[];\r\n @Enumerable()\r\n public get references(): CadLibReference[] {\r\n if (!this._references) this._references = [];\r\n return this._references;\r\n }\r\n public set references(val) {\r\n this._references = val;\r\n }\r\n\r\n private _dimensions: CadLibDimension[];\r\n @Enumerable()\r\n public get dimensions(): CadLibDimension[] {\r\n if (!this._dimensions) this._dimensions = [];\r\n return this._dimensions;\r\n }\r\n public set dimensions(val) {\r\n this._dimensions = val;\r\n }\r\n \r\n public addConstraint = (constraintType: eOutputFieldType, args?: any): Constraint => {\r\n let constraint = OutputField.getNewOutputFieldOfType(constraintType, this.$manager, args);\r\n constraint.type = constraintType;\r\n this.$manager.addKbObject(constraint, this);\r\n if (constraint.type == eOutputFieldType.cadLibReference) {\r\n this.references.push(constraint as any);\r\n } else {\r\n this.dimensions.push(constraint as any);\r\n }\r\n return constraint;\r\n }\r\n\r\n public removeConstraint = constraint => {\r\n this.$manager.removeKbObject(constraint);\r\n if (constraint.type == eOutputFieldType.cadLibReference) {\r\n this.references.remove(constraint as any);\r\n } else {\r\n this.dimensions.remove(constraint as any);\r\n }\r\n }\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadParameterField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadParameterField, eOutputFieldType.cadParameter)\r\nexport class CadParameterField extends OutputField implements ICadParameterField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public value: any;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadReplaceComponentField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadReplaceComponentField, eOutputFieldType.cadReplaceComponent)\r\nexport class CadReplaceComponentField extends OutputField implements ICadReplaceComponentField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public filePath: string;\r\n public componentToReplace: string;\r\n public newName: string;\r\n public partFamilyName: string;\r\n public interchangeGroupCompID: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadRepresentationField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadRepresentationField, eOutputFieldType.cadRepresentation)\r\nexport class CadRepresentationField extends OutputField implements ICadRepresentationField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public parentComponentID: string;\r\n public visibility: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadScaleFeatureField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadScaleFeatureField, eOutputFieldType.cadScaleFeature)\r\nexport class CadScaleFeatureField extends OutputField implements ICadScaleFeatureField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public x: number;\r\n public y: number;\r\n public z: number;\r\n public isUniform: boolean;\r\n public scaleUniform: number;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadTextField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadTextField, eOutputFieldType.cadText)\r\nexport class CadTextField extends OutputField implements ICadTextField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public height: number;\r\n public insertionPointX: number;\r\n public insertionPointY: number;\r\n public insertionPointZ: number;\r\n public value: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IConstraint } from \"@models/entity-models\";\r\nimport { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@Kbo(CToken.Constraint)\r\nexport class Constraint extends OutputField implements IConstraint {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Constraint } from \"@models/configurators/output-fields/cad/mates/constraint\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IMate } from \"@models/entity-models\";\r\nimport { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@Kbo(CToken.Mate)\r\nexport class Mate extends Constraint implements IMate {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public parentId: string;\r\n public referenceComponentName: string;\r\n public referenceComponentId: string;\r\n public existingEntity: string;\r\n public dynamicEntity: string;\r\n public aligned: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Mate } from \"@models/configurators/output-fields/cad/mates/mate\";\r\nimport { ICadAngleMate } from \"@models/entity-models\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadAngleMate, eOutputFieldType.cadAngleMate)\r\nexport class CadAngleMate extends Mate implements ICadAngleMate {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public angle: number;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Mate } from \"@models/configurators/output-fields/cad/mates/mate\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadCoincidentMate } from \"@models/entity-models\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\n\r\n@KboOutputField(CToken.CadCoincidentMate, eOutputFieldType.cadCoincidentMate)\r\nexport class CadCoincidentMate extends Mate implements ICadCoincidentMate {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Mate } from \"@models/configurators/output-fields/cad/mates/mate\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadCoordinateSystemMate } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadCoordinateSystemMate, eOutputFieldType.cadCoordinateSystemMate)\r\nexport class CadCoordinateSystemMate extends Mate implements ICadCoordinateSystemMate {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public value: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Mate } from \"@models/configurators/output-fields/cad/mates/mate\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadDistanceMate } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadDistanceMate, eOutputFieldType.cadDistanceMate)\r\nexport class CadDistanceMate extends Mate implements ICadDistanceMate {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public distance: number;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Constraint } from \"@models/configurators/output-fields/cad/mates/constraint\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadLibDimension } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadLibDimension, eOutputFieldType.cadLibDimension)\r\nexport class CadLibDimension extends Constraint implements ICadLibDimension {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public value: number;\r\n \r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Constraint } from \"@models/configurators/output-fields/cad/mates/constraint\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadLibReference } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadLibReference, eOutputFieldType.cadLibReference)\r\nexport class CadLibReference extends Constraint implements ICadLibReference {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public referenceType: string;\r\n\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { ICadPositionConstraint } from \"@models/entity-models\";\r\nimport { Mate } from \"@models/configurators/output-fields/cad/mates/mate\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.CadPositionConstraint, eOutputFieldType.cadPositionConstraint)\r\nexport class CadPositionConstraint extends Mate implements ICadPositionConstraint {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public x: number;\r\n public y: number;\r\n public z: number;\r\n public xAngle: number;\r\n public yAngle: number;\r\n public zAngle: number;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IExcelCellField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.ExcelCellField, eOutputFieldType.excelCell)\r\nexport class ExcelCellField extends OutputField implements IExcelCellField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public deleted: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IExcelChartField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.ExcelChartField, eOutputFieldType.excelChart)\r\nexport class ExcelChartField extends OutputField implements IExcelChartField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public deleted: boolean;\r\n public sheetName: string;\r\n public tableInsertCoord: string;\r\n public chartTitle: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eDynamicSource, eOutputFieldType } from \"@models/enums\";\r\nimport { IExcelImageField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.ExcelImageField, eOutputFieldType.excelImage)\r\nexport class ExcelImageField extends OutputField implements IExcelImageField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public filePath: string;\r\n public source: string = eDynamicSource.template;\r\n public sourceId: string;\r\n\r\n public sheetName: string;\r\n\r\n public upperLeftCell: string;\r\n\r\n public lowerRightCell: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IExcelSheetField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.ExcelSheetField, eOutputFieldType.excelSheet)\r\nexport class ExcelSheetField extends OutputField implements IExcelSheetField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public deleted: boolean;\r\n public tryCalculateFormula: boolean;\r\n public autoFitColumns: boolean;\r\n public autoFitRows: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IExcelTableField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.ExcelTableField, eOutputFieldType.excelTable)\r\nexport class ExcelTableField extends OutputField implements IExcelTableField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public deleted: boolean;\r\n public sheetName: string;\r\n public coord: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IPdfSectionField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.PdfSectionField, eOutputFieldType.pdfSection)\r\nexport class PdfSectionField extends OutputField implements IPdfSectionField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public source: string;\r\n public idQuoteOutput: number;\r\n public idTag: number;\r\n public filepaths: string[];\r\n public filePath: string;\r\n public sourceId: string;\r\n public nestedName: string;\r\n public nestedIdProduct: number;\r\n public selectedPages: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IWordContainerField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.WordContainerField, eOutputFieldType.wordContainer)\r\nexport class WordContainerField extends OutputField implements IWordContainerField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public deleted: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eDynamicSource, eOutputFieldType } from \"@models/enums\";\r\nimport { IWordImageField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.WordImageField, eOutputFieldType.wordImage)\r\nexport class WordImageField extends OutputField implements IWordImageField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n public deleted: boolean;\r\n public filePath: string;\r\n public source: string = eDynamicSource.template;\r\n public sourceId: string;\r\n public fixContentControlSize: boolean;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IWordListField, IWordListProperty } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.WordListField, eOutputFieldType.wordList)\r\nexport class WordListField extends OutputField implements IWordListField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n public deleted: boolean;\r\n public value: {}[];\r\n public properties: IWordListProperty[];\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IWordTextField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.WordTextField, eOutputFieldType.wordText)\r\nexport class WordTextField extends OutputField implements IWordTextField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n public deleted: boolean;\r\n public value: string;\r\n}\r\n","import { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { eOutputFieldType } from \"@models/enums\";\r\nimport { IZipSectionField } from \"@models/entity-models\";\r\nimport { KboOutputField } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutputField(CToken.ZipSectionField, eOutputFieldType.zipSection)\r\nexport class ZipSectionField extends OutputField implements IZipSectionField {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public source: string;\r\n public idQuoteOutput: number;\r\n public idTag: number;\r\n public filepaths: string[];\r\n public filePath: string;\r\n public sourceId: string;\r\n public nestedName: string;\r\n public nestedIdProduct: number;\r\n public selectedPages: string;\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IExport, ITag } from \"@models/entity-models\";\r\nimport { eExportType } from \"@models/enums\";\r\n\r\n@Kbo(CToken.Export)\r\nexport class Export extends KbObject implements IExport {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n this.postToCloud = true;\r\n this.enabled = true;\r\n }\r\n \r\n public type: string;\r\n public targetDirectory: string;\r\n public targetFilename: string;\r\n public enabled: boolean;\r\n public postToCloud: boolean;\r\n public resultFilePath: string;\r\n public pass: string;\r\n\r\n private _tags: ITag[];\r\n @Enumerable()\r\n public get tags(): ITag[] {\r\n if (!this._tags) this._tags = [];\r\n return this._tags;\r\n }\r\n public set tags(val) {\r\n this._tags = val;\r\n }\r\n\r\n public static ImageTypes(): string[] {\r\n return [eExportType.bmp, eExportType.gif, eExportType.jpg, eExportType.png, eExportType.tiff];\r\n }\r\n}\r\n","import { ConfiguratorDI, Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { IDummyNode } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { OutputField } from \"@models/configurators/output-fields/output-field\";\r\nimport { CadOutput } from \"@models/configurators/outputs/cad-output\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { IOutput, IOutputField, ITag } from \"@models/entity-models\";\r\nimport { eExportType, eOutputFieldType, eOutputType, eRuleType } from \"@models/enums\";\r\nimport { Export } from \"./export\";\r\n\r\nexport interface IExportType {\r\n extension: string;\r\n name: string;\r\n}\r\n\r\n@Kbo(CToken.Output)\r\nexport class Output extends RuleContainer implements IOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom);\r\n this.ruleType = eRuleType.output;\r\n if (args) {\r\n kom.recurse(args, this);\r\n }\r\n this.$manager.addKbObject(this, undefined);\r\n this.$fieldsNode = { id: this.id + \"_fields\", $type: \"FieldsNode\", allowedChildren: () => [CToken.OutputField], getParent: () => this };\r\n this.$rulesNode = { id: this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: () => [CToken.Rule], getParent: () => this };\r\n this.$exportsNode = { id: this.id + \"_exports\", $type: \"ExportsNode\", allowedChildren: () => [CToken.Export], getParent: () => this };\r\n this.$drawingsNode = { id: this.id + \"_drawings\", $type: \"DrawingsNode\", allowedChildren: () => [CToken.CadDrawingOutput], getParent: () => this };\r\n this.ruleType = eRuleType.output;\r\n }\r\n\r\n public static isCadOutput(outputType: string): boolean {\r\n return outputType == eOutputType.inventor ||\r\n outputType == eOutputType.solidworks ||\r\n outputType == eOutputType.creo ||\r\n outputType == eOutputType.autoCad;\r\n }\r\n\r\n public static supportsCadDrawings(outputType: string): boolean {\r\n return outputType == eOutputType.inventor ||\r\n outputType == eOutputType.solidworks ||\r\n outputType == eOutputType.creo;\r\n }\r\n \r\n public static getOutputExportTypes(output: Output): IExportType[] {\r\n if (!output) return [];\r\n\r\n let et = (extension: string, name: string) => {\r\n return this.createExportType(extension, name);\r\n };\r\n\r\n switch (output.type) {\r\n case eOutputType.word:\r\n return [\r\n et(eExportType.pdf, \"Adobe Portable Document Format\"),\r\n et(eExportType.bmp, \"Bitmap\"),\r\n et(eExportType.doc, \"Word Document 97-2003\"),\r\n et(eExportType.docm, \"Macro-Enabled Word Document\"),\r\n et(eExportType.dot, \"Word Template 97-2003\"),\r\n et(eExportType.dotm, \"Macro-Enabled Word Template 97-2003\"),\r\n et(eExportType.dotx, \"Word Template\"),\r\n et(eExportType.emf, \"EMF\"),\r\n et(eExportType.epub, \"EPUB\"),\r\n et(eExportType.html, \"HTML\"),\r\n et(eExportType.jpg, \"JPEG\"),\r\n et(eExportType.png, \"PNG\"),\r\n et(eExportType.rtf, \"Rich Text Format\"),\r\n et(eExportType.txt, \"Text\"),\r\n et(eExportType.tiff, \"TIFF\"),\r\n et(eExportType.xaml, \"XAML\"),\r\n et(eExportType.xps, \"XPS\"),\r\n et(eExportType.odt, \"Open Document Text\")\r\n ];\r\n case eOutputType.excel:\r\n return [\r\n et(eExportType.pdf, \"Adobe Portable Document Format\"),\r\n et(eExportType.csv, \"CSV File\"),\r\n et(eExportType.xml, \"Xml\"),\r\n et(eExportType.html, \"HTML\"),\r\n et(eExportType.ods, \"Open Document Spreadsheet\"),\r\n et(eExportType.svg, \"SVG File\"),\r\n et(eExportType.txt, \"Tab Delimited Text File\"),\r\n et(eExportType.tiff, \"TIFF\"),\r\n et(eExportType.xps, \"XPS\")\r\n ];\r\n case eOutputType.creo:\r\n return [\r\n et(eExportType.x_t, \"Parasolid\"),\r\n et(eExportType.igs, \"IGES\"),\r\n et(eExportType.step, \"STEP\"),\r\n et(eExportType.sat, \"ACIS\"),\r\n et(eExportType.stl, \"STL\"),\r\n et(eExportType.wrl, \"VRML\"),\r\n et(eExportType.vda, \"VDA\"),\r\n et(eExportType.pdf, \"Adobe Portable Document Format\"),\r\n et(eExportType.eps, \"eps\"),\r\n et(eExportType.neu, \"Neutral\"),\r\n et(eExportType.jpg, \"JPEG\"),\r\n et(eExportType.tif, \"Tif\"),\r\n et(eExportType.iv, \"Inventor\"),\r\n et(eExportType.slp, \"Render\")\r\n ];\r\n case eOutputType.inventor:\r\n return [\r\n et(eExportType.jpg, \"JPEG\"),\r\n et(eExportType.bmp, \"BMP\"),\r\n et(eExportType.gif, \"GIF\"),\r\n et(eExportType.png, \"PNG\"),\r\n et(eExportType.tiff, \"TIFF\"),\r\n et(eExportType.pdf, \"Adobe Portable Document Format\"),\r\n et(eExportType.catproduct, \"CATIA V5 Product File\"),\r\n et(eExportType.igs, \"IGES\"),\r\n et(eExportType.jt, \"JT\"),\r\n et(eExportType.x_b, \"Parasolid Binary\"),\r\n et(eExportType.x_t, \"Parasolid Text\"),\r\n et(eExportType.g, \"Pro/Engineer Granite Files\"),\r\n et(eExportType.neu, \"Pro/Engineer NEutral File\"),\r\n et(eExportType.sat, \"SAT\"),\r\n et(eExportType.step, \"STEP\"),\r\n et(eExportType.stl, \"STL\"),\r\n et(eExportType.xgl, \"XGL\"),\r\n et(eExportType.zgl, \"ZGL\"),\r\n et(eExportType.dwf, \"DWF\")\r\n ];\r\n case eOutputType.solidworks:\r\n return [\r\n et(eExportType.sldprt, \"Solidworks Part\"),\r\n et(eExportType.x_t, \"Parasolid\"),\r\n et(eExportType.x_b, \"Parasolid Binary\"),\r\n et(eExportType.igs, \"IGES\"),\r\n et(eExportType.step, \"STEP\"),\r\n et(eExportType.sat, \"ACIS\"),\r\n et(eExportType.stl, \"STL\"),\r\n et(eExportType.wrl, \"VRML\"),\r\n et(eExportType.easm, \"eDrawings Assembly\"),\r\n et(eExportType.pdf, \"Adobe Portable Document Format\"),\r\n et(eExportType.u3d, \"Universal 3D\"),\r\n et(eExportType.psd, \"Adobe Photoshop File\"),\r\n et(eExportType.ai, \"Adobe Illustrator File\"),\r\n et(eExportType.xaml, \"Microsoft XAML\"),\r\n et(eExportType.cgr, \"Catia Graphics\"),\r\n et(eExportType.asm, \"ProE Assembly\"),\r\n et(eExportType.jpg, \"JPEG\"),\r\n et(eExportType.hcg, \"HCG\"),\r\n et(eExportType.hsf, \"HOOPS HSF\"),\r\n et(eExportType.tif, \"Tif\")\r\n ];\r\n case eOutputType.autoCad:\r\n return [\r\n et(eExportType.dxf, \"DXF\"),\r\n et(eExportType.pdf, \"PDF\"),\r\n // et(eExportType.dgn, \"DGN\"),\r\n et(eExportType.dwf, \"DWF\"),\r\n et(eExportType.bmp, \"BMP\"),\r\n et(eExportType.stl, \"STL\"),\r\n et(eExportType.igs, \"IGS\")\r\n ];\r\n case eOutputType.cadDrawing:\r\n return Output.getCadDrawingExportTypes(output);\r\n case eOutputType.bom:\r\n return [\r\n et(eExportType.xml, \"XML\"),\r\n et(eExportType.txt, \"Text\")\r\n ];\r\n case eOutputType.svg:\r\n return [\r\n et(eExportType.jpg, \"JPEG\"),\r\n et(eExportType.bmp, \"BMP\"),\r\n et(eExportType.gif, \"GIF\"),\r\n et(eExportType.png, \"PNG\"),\r\n et(eExportType.pdf, \"PDF\")\r\n ]\r\n case eOutputType.text:\r\n return [\r\n et(eExportType._custom, \"Custom File Extension\")\r\n ]\r\n }\r\n return [];\r\n }\r\n\r\n private static getCadDrawingExportTypes(output: Output): IExportType[] {\r\n let et = (extension: string, name: string) => {\r\n return this.createExportType(extension, name);\r\n };\r\n\r\n switch ((output.$parent as Output).type) {\r\n case eOutputType.solidworks:\r\n return [\r\n et(eExportType.dxf, \"DXF\"),\r\n et(eExportType.dwg, \"DWG\"),\r\n et(eExportType.psd, \"Adobe Photoshop File\"),\r\n et(eExportType.ai, \"Adobe Illustrator File\"),\r\n et(eExportType.pdf, \"Adobe Portable Document Format\"),\r\n et(eExportType.edrw, \"EDrawings\"),\r\n et(eExportType.jpg, \"JPEG\"),\r\n et(eExportType.tif, \"Tif\")\r\n ];\r\n case eOutputType.inventor:\r\n return [\r\n et(eExportType.jpg, \"JPEG\"),\r\n et(eExportType.bmp, \"BMP\"),\r\n et(eExportType.gif, \"GIF\"),\r\n et(eExportType.png, \"PNG\"),\r\n et(eExportType.tiff, \"TIFF\"),\r\n et(eExportType.pdf, \"PDF\"),\r\n et(eExportType.dwg, \"DWG\"),\r\n et(eExportType.dwf, \"DWF\")\r\n ];\r\n case eOutputType.creo:\r\n return [\r\n et(eExportType.dwg, \"DWG\"),\r\n et(eExportType.dxf, \"DXF\"),\r\n et(eExportType.pdf, \"Adobe Portable Document Format\"),\r\n et(eExportType.tiff, \"TIFF\")\r\n ];\r\n }\r\n return [];\r\n }\r\n\r\n private static createExportType(extension: string, name: string): IExportType {\r\n return {\r\n extension,\r\n name: name + \" (.\" + extension + \")\"\r\n };\r\n }\r\n\r\n public static getOutputFieldTypes(output: IOutput) {\r\n if (!output) return [];\r\n return Output.getOutputFieldTypesByOutputType(output.type);\r\n }\r\n\r\n public static getOutputFieldTypesByOutputType(outputType) {\r\n switch (outputType) {\r\n case eOutputType.word:\r\n return [\r\n eOutputFieldType.wordText,\r\n eOutputFieldType.wordImage,\r\n eOutputFieldType.wordContainer,\r\n eOutputFieldType.wordList];\r\n case eOutputType.excel:\r\n return [\r\n eOutputFieldType.excelCell,\r\n eOutputFieldType.excelImage,\r\n eOutputFieldType.excelSheet,\r\n eOutputFieldType.excelTable,\r\n eOutputFieldType.excelChart];\r\n case eOutputType.creo:\r\n case eOutputType.solidworks:\r\n return [\r\n eOutputFieldType.cadAnnotation,\r\n eOutputFieldType.cadComponent,\r\n eOutputFieldType.cadCustomProperty,\r\n eOutputFieldType.cadDimension,\r\n eOutputFieldType.cadDynamicComponent,\r\n eOutputFieldType.cadFeature,\r\n eOutputFieldType.cadLibFeature,\r\n eOutputFieldType.cadReplaceComponent,\r\n eOutputFieldType.cadScaleFeature];\r\n case eOutputType.autoCad:\r\n return [\r\n eOutputFieldType.cadLayer,\r\n eOutputFieldType.cadBlock,\r\n eOutputFieldType.cadBlockArray,\r\n eOutputFieldType.cadDimension,\r\n eOutputFieldType.cadText];\r\n case eOutputType.inventor:\r\n return [\r\n eOutputFieldType.cadAnnotation,\r\n eOutputFieldType.cadComponent,\r\n eOutputFieldType.cadCustomProperty,\r\n eOutputFieldType.cadDimension,\r\n eOutputFieldType.cadDynamicComponent,\r\n eOutputFieldType.cadFeature,\r\n eOutputFieldType.cadLibFeature,\r\n eOutputFieldType.cadReplaceComponent,\r\n eOutputFieldType.cadScaleFeature,\r\n eOutputFieldType.cadParameter];\r\n case eOutputType.cadDrawing:\r\n return [\r\n eOutputFieldType.cadDrawingAnnotation,\r\n eOutputFieldType.cadDrawingDimension,\r\n eOutputFieldType.cadDynamicDrawingDimension,\r\n eOutputFieldType.cadDynamicDrawingAnnotation,\r\n eOutputFieldType.cadDrawingSheet,\r\n eOutputFieldType.cadDrawingView,\r\n eOutputFieldType.cadCustomProperty,\r\n eOutputFieldType.cadLayer];\r\n case eOutputType.pdf:\r\n return [\r\n eOutputFieldType.pdfSection\r\n ];\r\n case eOutputType.zip:\r\n return [\r\n eOutputFieldType.zipSection\r\n ];\r\n }\r\n return [];\r\n }\r\n\r\n public static getConstraintFieldTypes() {\r\n return [\r\n eOutputFieldType.cadDistanceMate,\r\n eOutputFieldType.cadAngleMate,\r\n eOutputFieldType.cadCoordinateSystemMate,\r\n eOutputFieldType.cadCoincidentMate,\r\n eOutputFieldType.cadPositionConstraint\r\n ];\r\n }\r\n\r\n public static getLibFeatureConstraintTypes() {\r\n return [\r\n eOutputFieldType.cadLibDimension,\r\n eOutputFieldType.cadLibReference\r\n ];\r\n }\r\n\r\n public static usesTemplate(outputType: string) {\r\n switch (outputType) {\r\n case eOutputType.solidworks:\r\n case eOutputType.inventor:\r\n case eOutputType.creo:\r\n case eOutputType.cadDrawing:\r\n case eOutputType.word:\r\n case eOutputType.excel:\r\n case eOutputType.autoCad:\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _fields: OutputField[];\r\n @Enumerable()\r\n public get fields(): OutputField[] {\r\n if (!this._fields) this._fields = [];\r\n return this._fields;\r\n }\r\n public set fields(val) {\r\n this._fields = val;\r\n }\r\n\r\n private _exports: Export[];\r\n @Enumerable()\r\n public get exports(): Export[] {\r\n if (!this._exports) this._exports = [];\r\n return this._exports;\r\n }\r\n public set exports(val) {\r\n this._exports = val;\r\n }\r\n\r\n private _tags: ITag[];\r\n @Enumerable()\r\n public get tags(): ITag[] {\r\n if (!this._tags) this._tags = [];\r\n return this._tags;\r\n }\r\n public set tags(val) {\r\n this._tags = val;\r\n }\r\n\r\n public enabled: boolean;\r\n public resultFilePath: string;\r\n\r\n public $fieldsNode: IDummyNode;\r\n public $rulesNode: IDummyNode;\r\n public $exportsNode: IDummyNode;\r\n public $drawingsNode: IDummyNode;\r\n public type: string;\r\n public autoValidation: boolean;\r\n public overwritePreExistingBuilds: boolean;\r\n\r\n public addExport(type: string): Export {\r\n let exprt = new Export(this.$manager);\r\n exprt.type = type;\r\n exprt.name = this.type == eOutputType.sceneRender ? \"Render\" : exprt.type + \" Export\";\r\n this.$manager.addKbObject(exprt, this);\r\n this.exports.push(exprt);\r\n return exprt;\r\n }\r\n\r\n public removeExport(exp: Export) {\r\n this.$manager.removeKbObject(exp);\r\n this.exports.remove(exp);\r\n }\r\n\r\n public addOutputField(fieldType: eOutputFieldType, args?: IOutputField): OutputField {\r\n let field = ConfiguratorDI.getNewOutputField(fieldType, this.$manager, args);\r\n this.$manager.addKbObject(field, this);\r\n this.fields.push(field);\r\n return field;\r\n }\r\n\r\n public removeOutputField(outputField: OutputField) {\r\n this.$manager.removeKbObject(outputField);\r\n this.fields.remove(outputField);\r\n }\r\n\r\n public allRuleContainers(): RuleContainer[] {\r\n let containers: RuleContainer[] = [this];\r\n if (ConfiguratorDI.instanceOf(this, CToken.CadOutput)) {\r\n containers.concat(this.drawings);\r\n }\r\n return containers;\r\n }\r\n}\r\n","import { Output } from \"@models/configurators/outputs/output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IFileOutput } from \"@models/entity-models\";\r\nimport { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@Kbo(CToken.FileOutput)\r\nexport class FileOutput extends Output implements IFileOutput {\r\n constructor(kom: KbObjectManager, args?: IFileOutput) {\r\n super(kom, args);\r\n if (!args) {\r\n this.postToCloud = true;\r\n }\r\n }\r\n public templatePath: string;\r\n public targetDirectory: string;\r\n public targetFilename: string;\r\n public postToCloud: boolean;\r\n\r\n}\r\n","import { KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IBomOutput, IOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\n\r\n@KboOutput(CToken.BomOutput, eOutputType.bom)\r\nexport class BomOutput extends FileOutput implements IBomOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n }\r\n}\r\n","import { Output } from \"@models/configurators/outputs/output\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { ICadDrawingOutput, IOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { Kbo, KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutput(CToken.CadDrawingOutput, eOutputType.cadDrawing)\r\nexport class CadDrawingOutput extends FileOutput implements ICadDrawingOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n }\r\n}\r\n","import { Output } from \"@models/configurators/outputs/output\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { ICadOutput, IOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { CadDrawingOutput } from \"@models/configurators/outputs/cad-drawing-output\";\r\nimport { Kbo, KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutput(CToken.CadOutput,\r\n eOutputType.solidworks,\r\n eOutputType.autoCad,\r\n eOutputType.creo,\r\n eOutputType.creo3,\r\n eOutputType.inventor,\r\n eOutputType.salesforce\r\n)\r\nexport class CadOutput extends FileOutput implements ICadOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n }\r\n public drawings: CadDrawingOutput[] = [];\r\n public partFamilyName: string;\r\n public newPartFamilyName: string;\r\n public material: string;\r\n public customMaterialDatabase: string;\r\n public modifyDimensionInAllConfig: boolean;\r\n\r\n public addDrawing() {\r\n let drw = new CadDrawingOutput(this.$manager);\r\n drw.name = \"Drawing\";\r\n this.$manager.addKbObject(drw, this);\r\n this.drawings.push(drw);\r\n return drw;\r\n }\r\n\r\n public removeDrawing(drawing: CadDrawingOutput) {\r\n this.drawings.remove(drawing);\r\n this.$manager.removeKbObject(drawing);\r\n }\r\n\r\n public removeOutput(drawing: CadDrawingOutput) {\r\n this.removeDrawing(drawing);\r\n }\r\n}\r\n","import { Output } from \"@models/configurators/outputs/output\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IExcelOutput, IOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { Kbo, KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutput(CToken.ExcelOutput, eOutputType.excel)\r\nexport class ExcelOutput extends FileOutput implements IExcelOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n this.type = eOutputType.excel;\r\n }\r\n}\r\n","import { Output } from \"@models/configurators/outputs/output\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IImageOutput, IOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { Kbo, KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutput(CToken.ImageOutput, eOutputType.image)\r\nexport class ImageOutput extends FileOutput implements IImageOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n }\r\n}\r\n","import { Output } from \"@models/configurators/outputs/output\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IOutput, IPdfOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { Kbo, KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutput(CToken.PdfOutput, eOutputType.pdf)\r\nexport class PdfOutput extends FileOutput implements IPdfOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n this.type = eOutputType.pdf;\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IRenderPassExport } from \"@models/entity-models\";\r\nimport { Export } from \"./export\";\r\n\r\n@Kbo(CToken.RenderPassExport)\r\nexport class RenderPassExport extends Export implements IRenderPassExport {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n \r\n public pass: string;\r\n public viewpoint: string;\r\n public frameCamera: boolean;\r\n public framePadding: number;\r\n public allowEmpty: boolean;\r\n public width: number;\r\n public height: number;\r\n}\r\n","import { KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { IOutput, ISceneRenderOutput } from \"@models/entity-models\";\r\nimport { eExportType, eOutputType } from \"@models/enums\";\r\nimport { RenderPassExport } from \"./render-pass-export\";\r\n\r\n@KboOutput(CToken.SceneRenderOutput, eOutputType.sceneRender)\r\nexport class SceneRenderOutput extends FileOutput implements ISceneRenderOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n this.type = eOutputType.sceneRender;\r\n }\r\n\r\n public pass: string;\r\n public idScene: number;\r\n public width: number;\r\n public height: number;\r\n\r\n public addRenderPass(): RenderPassExport {\r\n let exprt = new RenderPassExport(this.$manager);\r\n exprt.type = eExportType.png;\r\n exprt.name = \"Render Pass\";\r\n this.$manager.addKbObject(exprt, this);\r\n this.exports.push(exprt);\r\n return exprt;\r\n }\r\n}\r\n","import { Output } from \"@models/configurators/outputs/output\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IOutput, ISvgOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { Kbo, KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutput(CToken.SvgOutput, eOutputType.svg)\r\nexport class SvgOutput extends FileOutput implements ISvgOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n this.type = eOutputType.svg;\r\n }\r\n}\r\n","import { Output } from \"@models/configurators/outputs/output\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IOutput, ITextOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { Kbo, KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutput(CToken.TextOutput, eOutputType.text)\r\nexport class TextOutput extends FileOutput implements ITextOutput {\r\n\r\n public textContent: string = \"\";\r\n\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n this.type = eOutputType.text;\r\n }\r\n}\r\n","import { Output } from \"@models/configurators/outputs/output\";\r\nimport { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IOutput, IWordOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { Kbo, KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutput(CToken.WordOutput, eOutputType.word)\r\nexport class WordOutput extends FileOutput implements IWordOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n this.type = eOutputType.word;\r\n }\r\n}\r\n","import { FileOutput } from \"@models/configurators/outputs/file-output\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IOutput, IZipOutput } from \"@models/entity-models\";\r\nimport { eOutputType } from \"@models/enums\";\r\nimport { Kbo, KboOutput } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\n\r\n@KboOutput(CToken.ZipOutput, eOutputType.zip)\r\nexport class ZipOutput extends FileOutput implements IZipOutput {\r\n constructor(kom: KbObjectManager, args?: IOutput) {\r\n super(kom, args);\r\n this.type = eOutputType.zip;\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IPageControl } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.PageControl)\r\nexport class PageControl extends UiObject implements IPageControl {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public padding: string;\r\n\r\n public allowedChildren(rootType: CToken) {\r\n if (rootType == CToken.Configurator){\r\n return [\r\n CToken.Page\r\n ]\r\n } else {\r\n return []; // pages are filled in by the consumer, not in the layout\r\n }\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IPageNavigator } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.PageNavigator)\r\nexport class PageNavigator extends UiObject implements IPageNavigator {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public buttonStyle: string;\r\n public showPageLabel: boolean;\r\n public labelColor: string;\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IPageTabs } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.PageTabs)\r\nexport class PageTabs extends UiObject implements IPageTabs {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n } \r\n\r\n public orientation: string; //eOrientation\r\n public tabStyle: string;\r\n public tabWidth: string;\r\n public customTabWidth: number;\r\n public iconSize: number;\r\n public showTabLabels: boolean;\r\n public backgroundColor: string;\r\n public backgroundShade: string;\r\n public selectionStyle: string;\r\n public selectionColor: string;\r\n public selectionShade: string;\r\n public selectionLineColor: string;\r\n public elevation: string;\r\n}\r\n","import { ConfiguratorDI, Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IManufactureObject, PartRev } from \"@models/configurators/partrev\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\n\r\n@Kbo(CToken.PartMaterial)\r\nexport class PartMaterial extends PartRev implements IManufactureObject {\r\n\r\n public $properties: UiObject[];\r\n\r\n public pullAsAsm: boolean;\r\n public mtlPartNum: string;\r\n\r\n constructor(kom: KbObjectManager, data?: any) {\r\n super(kom, data);\r\n }\r\n\r\n public getIdentifyingProperty() {\r\n return \"mtlPartNum\";\r\n }\r\n\r\n public static getMetadataProperties() {\r\n return [\"getDetails\"];\r\n }\r\n}","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IManufactureObject } from \"..\";\r\n\r\n@Kbo(CToken.PartOperationDetail)\r\nexport class PartOperationDetail extends KbObject implements IManufactureObject {\r\n\r\n public $properties: UiObject[];\r\n public opDtlDesc: string;\r\n public resourceID: string;\r\n public resourceGrpID: string;\r\n public _metadata: any = {};\r\n\r\n\r\n constructor(kom: KbObjectManager, data?: any) {\r\n super(kom);\r\n this._metadata = {};\r\n\r\n for (var key in data) {\r\n let value = data[key];\r\n if (!Array.isArray(value)) (this as any)[key] = value;\r\n }\r\n }\r\n\r\n public getIdentifyingProperty() {\r\n return (this.resourceGrpID ? \"resourceGrpID\" : \"resourceID\");\r\n }\r\n\r\n public static getMetadataProperties() {\r\n return [];\r\n }\r\n}","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IManufactureObject, PartOperationDetail } from \"..\";\r\n\r\n@Kbo(CToken.PartOperation)\r\nexport class PartOperation extends KbObject implements IManufactureObject {\r\n\r\n public $properties: UiObject[];\r\n public opDesc: string;\r\n public opCode: string;\r\n public _metadata: any = {}\r\n;\r\n\r\n public static getMetadataProperties() {\r\n return [];\r\n }\r\n\r\n private _operationDetails: PartOperationDetail[];\r\n @Enumerable()\r\n public get operationDetails(): PartOperationDetail[] {\r\n if (!this._operationDetails) this._operationDetails = [];\r\n return this._operationDetails;\r\n }\r\n public set operations(val) {\r\n this._operationDetails = val;\r\n }\r\n\r\n constructor(kom: KbObjectManager, data?: any) {\r\n super(kom);\r\n this._metadata = {};\r\n\r\n for (const key in data) {\r\n const value = data[key];\r\n if (!Array.isArray(value)) (this as any)[key] = value;\r\n }\r\n }\r\n\r\n public getIdentifyingProperty() {\r\n return \"opDesc\";\r\n }\r\n}","import { Button } from \"@models/configurators/button\";\r\nimport { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IPopup } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Popup)\r\nexport class Popup extends Button implements IPopup {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public popupWidth: string;\r\n public popupHeight: string;\r\n \r\n private _children: UiObject[];\r\n @Enumerable()\r\n public get children(): UiObject[] {\r\n if (!this._children) this._children = [];\r\n return this._children;\r\n }\r\n public set children(val) {\r\n this._children = val;\r\n }\r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return this.containerChildren(rootType);\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IPriceWidget } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.PriceWidget)\r\nexport class PriceWidget extends UiObject implements IPriceWidget {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n } \r\n\r\n public showDetails: boolean;\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { IPriceColumnMap, IPricingRuleContainer } from \"@models/entity-models\";\r\nimport { eRuleType } from \"@models/enums\";\r\n\r\n@Kbo(CToken.PricingRuleContainer)\r\nexport class PricingRuleContainer extends RuleContainer implements IPricingRuleContainer {\r\n constructor(kom: KbObjectManager) {\r\n super(kom, { ruleType: eRuleType.pricing });\r\n\r\n }\r\n\r\n public fillFromSource: string;\r\n public idTable: number;\r\n public dbTable: string;\r\n\r\n public skuColumn: string;\r\n public mediaColumn: string;\r\n public descriptionColumn: string;\r\n public unitOfMeasureColumn: string;\r\n public materialCostColumn: string;\r\n public materialMarginColumn: string;\r\n public laborCostColumn: string;\r\n public laborMarginColumn: string;\r\n public requiresUpdate: boolean;\r\n\r\n private _columnMaps: IPriceColumnMap[];\r\n @Enumerable()\r\n public get columnMaps(): IPriceColumnMap[] {\r\n if (!this._columnMaps) this._columnMaps = [];\r\n return this._columnMaps;\r\n }\r\n public set columnMaps(val) {\r\n this._columnMaps = val;\r\n }\r\n\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObject } from \"@models/configurators/kb-object\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { IRule } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Rule)\r\nexport class Rule extends KbObject implements IRule {\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public type: string; // eRuleType\r\n public description: string;\r\n public blocks: string;\r\n public codeMode: boolean;\r\n /**\r\n * holds the snap workspace. Starts with $ so angular will ignore it when parsing json\r\n */\r\n public $workspace: any;\r\n\r\n // public serialize(): IRule {\r\n // let o = super.serialize() as IRule;\r\n // if (this.$workspace) {\r\n // o.blocks = this.$workspace.serializeToJson();\r\n // // o.js = (new snap.Js()).generate(this.$workspace.blocks.item(0));\r\n // }\r\n // return o;\r\n // }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { ISvgViewer } from \"@models/entity-models\";\r\nimport { eRuleType } from \"@models/enums\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { RuleContainer } from \"@models/configurators/rule-container\";\r\nimport { IDummyNode } from \"@models/configurators/kb-object\";\r\n\r\n@Kbo(CToken.SvgViewer)\r\nexport class SvgViewer extends UiObject implements ISvgViewer {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom, { ruleType: eRuleType.svgViewer });\r\n this.$rulesNode = { id: this.id + \"_rules\", $type: \"RulesNode\", allowedChildren: () => [CToken.Rule], getParent: () => this }\r\n }\r\n\r\n public $rulesNode: IDummyNode;\r\n\r\n public autoValidation: boolean;\r\n\r\n public defs: string;\r\n\r\n public disablePan: boolean;\r\n\r\n public disableZoom: boolean;\r\n\r\n public maxZoom: number;\r\n\r\n public minZoom: number;\r\n\r\n public panX: number;\r\n\r\n public panY: number;\r\n\r\n public svgHeight: string;\r\n\r\n public svgWidth: string;\r\n\r\n public zoomLevel: number;\r\n\r\n public value: string;\r\n\r\n public svgStyle: string;\r\n\r\n public ruleContainers: RuleContainer[] = [];\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { Tab } from \"@models/configurators/tab\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { ITabControl } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.TabControl)\r\nexport class TabControl extends UiObject implements ITabControl {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public tabWidth: string;\r\n public customTabWidth: number;\r\n public $selectedTab: string;\r\n\r\n private _tabs: Tab[];\r\n @Enumerable()\r\n public get tabs(): Tab[] {\r\n if (!this._tabs) this._tabs = [];\r\n return this._tabs;\r\n }\r\n public set tabs(val) {\r\n this._tabs = val;\r\n }\r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.tabs\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return [\r\n CToken.Tab\r\n ];\r\n }\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { ITab } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Tab)\r\nexport class Tab extends UiObject implements ITab {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n\r\n public icon: string;\r\n public iconStyle: string;\r\n public mediaPath: string;\r\n public showLabel: boolean;\r\n public mediaPathWhenSelected: string;\r\n \r\n private _children: UiObject[];\r\n @Enumerable()\r\n public get children(): UiObject[] {\r\n if (!this._children) this._children = [];\r\n return this._children;\r\n }\r\n public set children(val) {\r\n this._children = val;\r\n }\r\n \r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return this.containerChildren(rootType);\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IText } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Text)\r\nexport class Text extends UiObject implements IText {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n \r\n public value: string;\r\n public style: string;\r\n public color: string;\r\n public weight: string;\r\n}\r\n","import { Enumerable, Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IToolbar } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Toolbar)\r\nexport class Toolbar extends UiObject implements IToolbar {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n }\r\n \r\n private _children: UiObject[];\r\n @Enumerable()\r\n public get children(): UiObject[] {\r\n if (!this._children) this._children = [];\r\n return this._children;\r\n }\r\n public set children(val) {\r\n this._children = val;\r\n }\r\n \r\n\r\n public getChildrenOfType(...tokens: CToken[]): T[] {\r\n return this.filterChildren(tokens,\r\n this.children\r\n );\r\n }\r\n\r\n public allowedChildren(rootType: CToken): CToken[] {\r\n return [\r\n CToken.Button,\r\n CToken.DropdownButton\r\n ];\r\n }\r\n}\r\n","import { Kbo } from \"@models/configurators/configurator-di\";\r\nimport { CToken } from \"@models/configurators/ctoken\";\r\nimport { KbObjectManager } from \"@models/configurators/kb-object-manager\";\r\nimport { UiObject } from \"@models/configurators/ui-object\";\r\nimport { IViewer } from \"@models/entity-models\";\r\n\r\n@Kbo(CToken.Viewer)\r\nexport class Viewer extends UiObject implements IViewer {\r\n\r\n constructor(kom: KbObjectManager) {\r\n super(kom);\r\n } \r\n}\r\n","\r\n// tslint:disable:max-line-length\r\nimport { ePerm } from \"./enums\";\r\n\r\nexport interface IMetaProperty {\r\n name?: string;\r\n type?: string;\r\n control?: string;\r\n source?: string;\r\n enumType?: string;\r\n default?: boolean;\r\n sticky?: boolean;\r\n permissions?: string[];\r\n}\r\n\r\nexport const meta = {\r\n Configurator: {\r\n $name: \"Configurator\",\r\n },\r\n LayoutConfig: {\r\n $name: \"LayoutConfig\",\r\n },\r\n BuildType: {\r\n $name: \"BuildType\",\r\n },\r\n Channel: {\r\n $name: \"Channel\",\r\n },\r\n Company: {\r\n $name: \"Company\",\r\n },\r\n Contact: {\r\n $name: \"Contact\",\r\n },\r\n CustomAction: {\r\n $name: \"CustomAction\",\r\n },\r\n Customer: {\r\n $name: \"Customer\",\r\n },\r\n EmailTemplate: {\r\n $name: \"EmailTemplate\",\r\n },\r\n Generator: {\r\n $name: \"Generator\",\r\n },\r\n GlobalDefinition: {\r\n $name: \"GlobalDefinition\",\r\n },\r\n Job: {\r\n $name: \"Job\",\r\n type: { name: \"type\", type: \"text\", control: \"select\", source: \"enum\", default: true, enumType: \"eJobType\"},\r\n status: { name: \"status\", type: \"text\", control: \"select\", source: \"enum\", enumType: \"eJobStatus\"},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n completedDate: { name: \"completedDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n },\r\n KbRole: {\r\n $name: \"KbRole\",\r\n },\r\n KbUserEdit: {\r\n $name: \"KbUserEdit\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n firstName: { name: \"firstName\", type: \"text\", control: \"none\", source: \"none\"},\r\n lastName: { name: \"lastName\", type: \"text\", control: \"none\", source: \"none\"},\r\n email: { name: \"email\", type: \"text\", control: \"none\", source: \"none\"},\r\n isApproved: { name: \"isApproved\", type: \"boolean\", control: \"checkbox\", source: \"none\"},\r\n licenseType: { name: \"licenseType\", type: \"text\", control: \"select\", source: \"enum\", default: true, enumType: \"eUserLicenseType\"},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n lastLoginDate: { name: \"lastLoginDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n },\r\n Layout: {\r\n $name: \"Layout\",\r\n },\r\n Log: {\r\n $name: \"Log\",\r\n type: { name: \"type\", type: \"text\", control: \"select\", source: \"enum\", default: true, enumType: \"eLogType\"},\r\n source: { name: \"source\", type: \"text\", control: \"select\", source: \"enum\", enumType: \"eLogSource\"},\r\n },\r\n Material: {\r\n $name: \"Material\",\r\n },\r\n MatTag: {\r\n $name: \"MatTag\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n Notification: {\r\n $name: \"Notification\",\r\n },\r\n OutputBuilder: {\r\n $name: \"OutputBuilder\",\r\n },\r\n PriceColumn: {\r\n $name: \"PriceColumn\",\r\n },\r\n Product: {\r\n $name: \"Product\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"suggest\", source: \"suggestProducts\"},\r\n shortDescription: { name: \"shortDescription\", type: \"text\", control: \"text\", source: \"none\"},\r\n sku: { name: \"sku\", type: \"text\", control: \"text\", source: \"none\"},\r\n mfgPartNumber: { name: \"mfgPartNumber\", type: \"text\", control: \"text\", source: \"none\"},\r\n manufacturer: { name: \"manufacturer\", type: \"text\", control: \"select\", source: \"manufacturers\"},\r\n unitOfMeasure: { name: \"unitOfMeasure\", type: \"text\", control: \"none\", source: \"none\"},\r\n price: { name: \"price\", type: \"number\", control: \"numberRange\", source: \"none\"},\r\n maxQty: { name: \"maxQty\", type: \"number\", control: \"none\", source: \"none\"},\r\n minQty: { name: \"minQty\", type: \"number\", control: \"none\", source: \"none\"},\r\n allowFractionalQty: { name: \"allowFractionalQty\", type: \"boolean\", control: \"none\", source: \"none\"},\r\n score: { name: \"score\", type: \"number\", control: \"none\", source: \"none\"},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n isConfigured: { name: \"isConfigured\", type: \"boolean\", control: \"none\", source: \"none\"},\r\n images: { name: \"images\", type: \"ProductImage[]\", control: \"none\", source: \"none\"},\r\n translations: { name: \"translations\", type: \"ProductTranslation[]\", control: \"none\", source: \"none\"},\r\n },\r\n ProductHistory: {\r\n $name: \"ProductHistory\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"suggest\", source: \"suggestProducts\"},\r\n shortDescription: { name: \"shortDescription\", type: \"text\", control: \"text\", source: \"none\"},\r\n sku: { name: \"sku\", type: \"text\", control: \"text\", source: \"none\"},\r\n mfgPartNumber: { name: \"mfgPartNumber\", type: \"text\", control: \"text\", source: \"none\"},\r\n manufacturer: { name: \"manufacturer\", type: \"text\", control: \"select\", source: \"manufacturers\"},\r\n unitOfMeasure: { name: \"unitOfMeasure\", type: \"text\", control: \"none\", source: \"none\"},\r\n price: { name: \"price\", type: \"number\", control: \"numberRange\", source: \"none\"},\r\n maxQty: { name: \"maxQty\", type: \"number\", control: \"none\", source: \"none\"},\r\n minQty: { name: \"minQty\", type: \"number\", control: \"none\", source: \"none\"},\r\n allowFractionalQty: { name: \"allowFractionalQty\", type: \"boolean\", control: \"none\", source: \"none\"},\r\n score: { name: \"score\", type: \"number\", control: \"none\", source: \"none\"},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n isConfigured: { name: \"isConfigured\", type: \"boolean\", control: \"none\", source: \"none\"},\r\n images: { name: \"images\", type: \"ProductImage[]\", control: \"none\", source: \"none\"},\r\n translations: { name: \"translations\", type: \"ProductTranslation[]\", control: \"none\", source: \"none\"},\r\n },\r\n ProductImage: {\r\n $name: \"ProductImage\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n imagePath: { name: \"imagePath\", type: \"text\", control: \"none\", source: \"none\"},\r\n imageOrder: { name: \"imageOrder\", type: \"number\", control: \"none\", source: \"none\"},\r\n },\r\n Queue: {\r\n $name: \"Queue\",\r\n },\r\n Quote: {\r\n $name: \"Quote\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n state: { name: \"state\", type: \"text\", control: \"multiSelect\", source: \"states\", default: true},\r\n ownedBy: { name: \"ownedBy\", type: \"number\", control: \"multiSelect\", source: \"users\", default: true, permissions: [ePerm.viewUsers]},\r\n idCustomer: { name: \"idCustomer\", type: \"number\", control: \"multiSelect\", source: \"customers\", permissions: [ePerm.viewCustomers]},\r\n idContact: { name: \"idContact\", type: \"number\", control: \"suggest\", source: \"suggestContacts\", permissions: [ePerm.viewCustomers]},\r\n name: { name: \"name\", type: \"text\", control: \"suggest\", source: \"suggestQuotes\"},\r\n description: { name: \"description\", type: \"text\", control: \"text\", source: \"none\"},\r\n currency: { name: \"currency\", type: \"text\", control: \"none\", source: \"none\"},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n owner: { name: \"owner\", type: \"text\", control: \"none\", source: \"none\"},\r\n customer: { name: \"customer\", type: \"text\", control: \"none\", source: \"none\"},\r\n contact: { name: \"contact\", type: \"text\", control: \"none\", source: \"none\"},\r\n products: { name: \"products\", type: \"QuoteProduct[]\", control: \"none\", source: \"none\"},\r\n files: { name: \"files\", type: \"QuoteFile[]\", control: \"none\", source: \"none\"},\r\n totalPrice: { name: \"totalPrice\", type: \"number\", control: \"numberRange\", source: \"none\", permissions: [ePerm.viewPrices]},\r\n },\r\n QuoteFile: {\r\n $name: \"QuoteFile\",\r\n tags: { name: \"tags\", type: \"Tag[]\", control: \"none\", source: \"none\"},\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n source: { name: \"source\", type: \"text\", control: \"none\", source: \"none\"},\r\n status: { name: \"status\", type: \"text\", control: \"none\", source: \"none\"},\r\n filePath: { name: \"filePath\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n QuoteHeader: {\r\n $name: \"QuoteHeader\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n QuoteOutput: {\r\n $name: \"QuoteOutput\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\"},\r\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n QuoteProduct: {\r\n $name: \"QuoteProduct\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n idQuote: { name: \"idQuote\", type: \"number\", control: \"none\", source: \"none\"},\r\n quote: { name: \"quote\", type: \"text\", control: \"none\", source: \"none\"},\r\n currency: { name: \"currency\", type: \"text\", control: \"none\", source: \"none\"},\r\n isConfigured: { name: \"isConfigured\", type: \"boolean\", control: \"none\", source: \"none\"},\r\n price: { name: \"price\", type: \"number\", control: \"numberRange\", source: \"none\", permissions: [ePerm.viewPrices]},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n createdBy: { name: \"createdBy\", type: \"number\", control: \"select\", source: \"users\", permissions: [ePerm.viewUsers]},\r\n files: { name: \"files\", type: \"QuoteProductFile[]\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"text\", source: \"none\"},\r\n description: { name: \"description\", type: \"text\", control: \"text\", source: \"none\"},\r\n shortDescription: { name: \"shortDescription\", type: \"text\", control: \"none\", source: \"none\"},\r\n sku: { name: \"sku\", type: \"text\", control: \"text\", source: \"none\"},\r\n imagePath: { name: \"imagePath\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n SafeFunction: {\r\n $name: \"SafeFunction\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\"},\r\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n Scene: {\r\n $name: \"Scene\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\"},\r\n modifiedBy: { name: \"modifiedBy\", type: \"number\", control: \"none\", source: \"none\"},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n external: { name: \"external\", type: \"boolean\", control: \"none\", source: \"none\"},\r\n createdByName: { name: \"createdByName\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n SsoGroupRoleMapping: {\r\n $name: \"SsoGroupRoleMapping\",\r\n },\r\n Table: {\r\n $name: \"Table\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\"},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n source: { name: \"source\", type: \"text\", control: \"select\", source: \"enum\", enumType: \"eTableExternalSource\"},\r\n dbTable: { name: \"dbTable\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n Tag: {\r\n $name: \"Tag\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n TestBuild: {\r\n $name: \"TestBuild\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n idProduct: { name: \"idProduct\", type: \"number\", control: \"none\", source: \"none\"},\r\n idBuildType: { name: \"idBuildType\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n status: { name: \"status\", type: \"text\", control: \"select\", source: \"enum\", enumType: \"eBuildStatus\"},\r\n creatorName: { name: \"creatorName\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n Theme: {\r\n $name: \"Theme\",\r\n },\r\n Workflow: {\r\n $name: \"Workflow\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\"},\r\n valid: { name: \"valid\", type: \"boolean\", control: \"none\", source: \"none\"},\r\n isDefault: { name: \"isDefault\", type: \"boolean\", control: \"none\", source: \"none\"},\r\n },\r\n SceneHistory: {\r\n $name: \"SceneHistory\",\r\n id: { name: \"id\", type: \"number\", control: \"none\", source: \"none\"},\r\n name: { name: \"name\", type: \"text\", control: \"none\", source: \"none\"},\r\n description: { name: \"description\", type: \"text\", control: \"none\", source: \"none\"},\r\n modifiedBy: { name: \"modifiedBy\", type: \"number\", control: \"none\", source: \"none\"},\r\n createdDate: { name: \"createdDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n modifiedDate: { name: \"modifiedDate\", type: \"text\", control: \"dateRange\", source: \"none\"},\r\n external: { name: \"external\", type: \"boolean\", control: \"none\", source: \"none\"},\r\n createdByName: { name: \"createdByName\", type: \"text\", control: \"none\", source: \"none\"},\r\n },\r\n};","import { IColumnDefinition, ITable, ITableObject } from \"@models/entity-models\";\r\nimport { Utils } from \"@tools\";\r\n\r\nexport class Table implements ITable {\r\n constructor(o?: ITable) {\r\n if (o) {\r\n this.id = o.id;\r\n o.columns.forEach(c => {\r\n this.addColumn(c);\r\n });\r\n this.name = o.name;\r\n this.description = o.description;\r\n this.data = o.data;\r\n }\r\n }\r\n\r\n public id: number;\r\n public name: string;\r\n public description: string;\r\n public columns: IColumnDefinition[] = [];\r\n public data: any[][] = [[]];\r\n\r\n private _columnDb: { [name: string]: number } = {};\r\n\r\n /**\r\n * use this instead of pushing directly to columns array so that\r\n * the columnDb can be maintained for fast searching\r\n */\r\n public addColumn(col: IColumnDefinition) {\r\n this.columns.push(col);\r\n this._columnDb[col.name] = this.columns.length - 1;\r\n }\r\n\r\n // public addStandardColumns() {\r\n // this.data = [[]];\r\n // this.columns.clear();\r\n // this.columns.pushArray([\r\n // { name: \"value\", type: eColumnType.text },\r\n // { name: \"label\", type: eColumnType.text },\r\n // { name: \"image\", type: eColumnType.media }\r\n // ]);\r\n // }\r\n\r\n public addRow(row: {}) {\r\n let rowArr = [];\r\n for (let col of this.columns) {\r\n rowArr.push(row[col.name]);\r\n }\r\n this.data.push(rowArr);\r\n }\r\n\r\n public getCell(rowIndex: number, colName: string) {\r\n return this.data[rowIndex][this._columnDb[colName]];\r\n }\r\n\r\n public toObjectArray(): ITableObject {\r\n let d = [];\r\n let columnScrubMap = {};\r\n this.columns.forEach((col, i) => {\r\n columnScrubMap[i] = Utils.scrubName(col.name);\r\n });\r\n this.data.forEach((row, r) => {\r\n let o = {};\r\n this.columns.forEach((col, c) => {\r\n o[columnScrubMap[c]] = row[c];\r\n });\r\n d.push(o);\r\n });\r\n return {\r\n columns: this.columns,\r\n data: d\r\n } as ITableObject;\r\n }\r\n\r\n}\r\n"]}