{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/helper/Meta.js","webpack:///./app/helper/Brush.js","webpack:///./app/helper/Tag.js","webpack:///./app/helper/Figure.js","webpack:///./app/util/Querystring.js","webpack:///./app/Rules.js","webpack:///./app/api/TransferExpressAPI.js","webpack:///./app/api/CmeAPI.js","webpack:///./app/helper/CmeFixDocument.js","webpack:///./app/helper/TxColorMatching.js","webpack:///./app/helper/TxAllColors.js","webpack:///./app/helper/TxFixColor.js","webpack:///./app/helper/TxFixDistress.js","webpack:///./app/helper/TxFixDocument.js","webpack:///./app/helper/Doc.js","webpack:///./app/helper/TransferGroup.js","webpack:///./app/api/CadworxLiveAPI.js","webpack:///./app/helper/TxDistress.js","webpack:///./app/helper/CmeClipArt.js","webpack:///./app/api/CadworxAPI.js","webpack:///./app/helper/Color.js","webpack:///./app/api/ExternalAPI.js","webpack:///./app/helper/Cme.js","webpack:///./app/helper/CmeBrush.js","webpack:///./app/helper/Tx.js","webpack:///./app/helper/TxColor.js","webpack:///./Smp/src/Polyfills.js","webpack:///./app/helper/CmeFonts.js","webpack:///./app/helper/CmeFixBrush.js","webpack:///./element-resize-detector.js","webpack:///(webpack)/buildin/global.js","webpack:///./Smp/src/util/Dom.js","webpack:///./app/helper/TxPattern.js","webpack:///./Smp/src/StoreManager.js","webpack:///./Smp/src/util/Config.js","webpack:///./Smp/src/util/Event.js","webpack:///./Smp/src/data/Model.js","webpack:///./Smp/src/data/Store.js","webpack:///./Smp/src/data/PagingStore.js","webpack:///./app/cadworx/store/CxPagingAssetsStore.js","webpack:///./app/cadworx/store/CxArtsStore.js","webpack:///./app/cadworx/store/CxTagsStore.js","webpack:///./app/cme/store/CmeClipArtsStore.js","webpack:///./app/cme/store/CmeTagsStore.js","webpack:///./app/transferExpress/store/TxPagingAssetsStore.js","webpack:///./app/transferExpress/store/TxClipArtsStore.js","webpack:///./app/transferExpress/store/TxTagsStore.js","webpack:///./app/transferExpress/store/TxClipArtTagsStore.js","webpack:///./app/util/OnReady.js","webpack:///./app/service/BaseService.js","webpack:///./app/service/ClipArtService.js","webpack:///./app/cme/store/CmeTemplatesStore.js","webpack:///./app/transferExpress/store/TxLayoutTagsStore.js","webpack:///./app/transferExpress/store/TxLayoutsStore.js","webpack:///./app/service/TemplateService.js","webpack:///./app/helper/Background.js","webpack:///./app/service/DesignService.js","webpack:///./app/service/DecorationService.js","webpack:///./app/cadworx/store/CxAssetsStore.js","webpack:///./app/cadworx/store/CxEffectsStore.js","webpack:///./app/transferExpress/store/TxEffectsStore.js","webpack:///./app/helper/Effect.js","webpack:///./app/service/EffectService.js","webpack:///./app/cadworx/model/CadworxFontModel.js","webpack:///./app/cadworx/store/CxFontsStore.js","webpack:///./app/cme/model/CmeFontModel.js","webpack:///./app/cme/store/CmeFontsStore.js","webpack:///./app/helper/Font.js","webpack:///./app/model/ImportedFontModel.js","webpack:///./app/store/ImportedFontsStore.js","webpack:///./app/transferExpress/model/TxFontModel.js","webpack:///./app/transferExpress/store/TxAssetsStore.js","webpack:///./app/transferExpress/store/TxFontsStore.js","webpack:///./app/service/FontService.js","webpack:///./app/service/ImportService.js","webpack:///./app/store/MonogramFontsStore.js","webpack:///./app/service/MonogramService.js","webpack:///./app/cme/store/CmeMyFilesStore.js","webpack:///./app/transferExpress/store/TxMyFilesStore.js","webpack:///./app/transferExpress/store/TxMyFileTagsStore.js","webpack:///./app/store/SavedDesignsStore.js","webpack:///./app/service/MyFilesService.js","webpack:///./app/api/RailsAPI.js","webpack:///./app/helper/TxTransferGroup.js","webpack:///./app/helper/unique.js","webpack:///./app/service/OrderService.js","webpack:///./app/cadworx/store/CxBrushesStore.js","webpack:///./app/cadworx/store/CxPalettesStore.js","webpack:///./app/cme/store/CmePalettesStore.js","webpack:///./app/cme/CmeTextures.js","webpack:///./app/transferExpress/model/TxBrushModel.js","webpack:///./app/transferExpress/store/TxPalettesStore.js","webpack:///./app/transferExpress/store/TxProductTypesStore.js","webpack:///./app/transferExpress/store/TxTransferTypesStore.js","webpack:///./app/service/PaletteService.js","webpack:///./app/Product.js","webpack:///./app/service/ProductService.js","webpack:///./app/service/ShowThroughService.js","webpack:///./app/ToolManager.js","webpack:///./app/service/ToolService.js","webpack:///./app/helper/CmeWarning.js","webpack:///./app/helper/TxWarning.js","webpack:///./app/helper/Warning.js","webpack:///./app/service/WarningService.js","webpack:///./Smp/src/ComponentManager.js","webpack:///./Smp/src/Element.js","webpack:///./Smp/src/util/Template.js","webpack:///./Smp/src/Box.js","webpack:///./Smp/src/util/Binder.js","webpack:///./Smp/src/Component.js","webpack:///./Smp/src/util/DelayedTask.js","webpack:///./Smp/src/util/ClickHold.js","webpack:///./Smp/src/button/Button.js","webpack:///./Smp/src/field/Field.js","webpack:///./Smp/src/field/TextAreaField.js","webpack:///./Smp/src/field/TextField.js","webpack:///./Smp/src/layout/Layout.js","webpack:///./Smp/src/layout/LayoutColumn.js","webpack:///./Smp/src/layout/LayoutRow.js","webpack:///./Smp/src/Header.js","webpack:///./Smp/src/Panel.js","webpack:///./Smp/src/util/Modal.js","webpack:///./Smp/src/util/Dialog.js","webpack:///./app/DialogManager.js","webpack:///./app/view/DebugPanel.js","webpack:///./app/util/DebugUtil.js","webpack:///./app/util/PostMessage.js","webpack:///./app/util/Units.js","webpack:///./app/UseCase.js","webpack:///./Smp/src/field/SelectField.js","webpack:///./app/field/RemoteSourceField.js","webpack:///./Smp/src/field/SearchField.js","webpack:///./app/header/SearchHeader.js","webpack:///./Smp/src/PagingScroller.js","webpack:///./Smp/src/StoreBinder.js","webpack:///./Smp/src/List.js","webpack:///./app/list/DocumentList.js","webpack:///./Smp/src/ViewController.js","webpack:///./app/effectPicker/EffectPickerController.js","webpack:///./Smp/src/ViewModel.js","webpack:///./app/effectPicker/EffectPickerModel.js","webpack:///./app/effectPicker/EffectPicker.js","webpack:///./Smp/src/Container.js","webpack:///./app/canvas/DragValue.js","webpack:///./app/effect/EffectGhost.js","webpack:///./Smp/src/field/CheckboxField.js","webpack:///./Smp/src/field/NumberField.js","webpack:///./Smp/src/util/Anchor.js","webpack:///./Smp/src/Menu.js","webpack:///./app/field/UnitField.js","webpack:///./app/effect/EffectBump.js","webpack:///./app/effect/Border.js","webpack:///./app/effect/Capital.js","webpack:///./app/effect/ClassicArc.js","webpack:///./app/field/ThumbField.js","webpack:///./app/field/BrushField.js","webpack:///./app/colorpicker/ColorPickerColor.js","webpack:///./app/colorpicker/ColorPickerPointer.js","webpack:///./app/colorpicker/ColorPickerAlpha.js","webpack:///./app/colorpicker/ColorPickerDrag.js","webpack:///./app/colorpicker/ColorPickerGradient.js","webpack:///./app/colorpicker/ColorPickerSpectrum.js","webpack:///./app/colorpicker/ColorPicker.js","webpack:///./app/colorpicker/ColorPickerCanvas.js","webpack:///./app/colorpicker/ColorPickerPanel.js","webpack:///./app/list/BrushList.js","webpack:///./app/store/CanvasBrushesStore.js","webpack:///./app/list/CanvasBrushList.js","webpack:///./app/transferExpress/field/TxProductTypesField.js","webpack:///./app/transferExpress/field/TxTransferTypesField.js","webpack:///./app/palettePicker/PalettePickerController.js","webpack:///./app/palettePicker/PalettePickerModel.js","webpack:///./app/palettePicker/PalettePicker.js","webpack:///./app/effect/EffectBrush.js","webpack:///./app/effect/Contour.js","webpack:///./app/effect/Distress.js","webpack:///./app/effect/Effect3d.js","webpack:///./app/effect/FitEllipse.js","webpack:///./app/effect/FitEnvelope.js","webpack:///./app/effect/PenContour.js","webpack:///./app/field/PenField.js","webpack:///./app/field/CanvasField.js","webpack:///./app/field/DashStyleField.js","webpack:///./app/field/LineJoinField.js","webpack:///./Smp/src/field/RangeField.js","webpack:///./app/field/TriggerField.js","webpack:///./app/field/TriggerRangeField.js","webpack:///./Smp/src/util/Device.js","webpack:///./app/panel/PenPanelController.js","webpack:///./app/panel/PenPanelModel.js","webpack:///./app/panel/PenPanel.js","webpack:///./app/effect/Shadow.js","webpack:///./app/effect/Split.js","webpack:///./app/effect/VerticalArch.js","webpack:///./app/effect/Effects.js","webpack:///./app/effect/EffectEditor.js","webpack:///./app/panel/EditEffectsPanelController.js","webpack:///./app/panel/EditEffectsPanel.js","webpack:///./app/list/FontList.js","webpack:///./app/panel/MonogramTextPanelController.js","webpack:///./app/panel/MonogramTextPanelModel.js","webpack:///./app/panel/MonogramTextPanel.js","webpack:///./app/button/FileButton.js","webpack:///./app/field/TagField.js","webpack:///./app/transferExpress/field/TxFontCategoriesField.js","webpack:///./app/fontPicker/FontPickerController.js","webpack:///./app/fontPicker/FontPickerModel.js","webpack:///./app/fontPicker/FontPicker.js","webpack:///./app/panel/TextPanelController.js","webpack:///./app/panel/TextPanelModel.js","webpack:///./app/panel/TextPanel.js","webpack:///./app/view/Notification.js","webpack:///./app/Application.js","webpack:///./app/view/ArtWorkAlert.js","webpack:///./app/view/CanvasAlert.js","webpack:///./app/view/CanvasController.js","webpack:///./app/view/Canvas.js","webpack:///./app/menu/ZoomMenuController.js","webpack:///./app/menu/ZoomMenuModel.js","webpack:///./app/menu/ZoomMenu.js","webpack:///./app/view/ZoomController.js","webpack:///./app/view/ZoomModel.js","webpack:///./app/view/Zoom.js","webpack:///./app/view/frontend/Hud.js","webpack:///./Smp/src/button/ButtonManager.js","webpack:///./Smp/src/button/ToggleButton.js","webpack:///./app/canvas/SpectrumIconCanvas.js","webpack:///./Smp/src/layout/LayoutCard.js","webpack:///./app/panel/ArrangePanelController.js","webpack:///./app/panel/ArrangePanelModel.js","webpack:///./app/panel/ArrangePanel.js","webpack:///./app/panel/ShapePanelController.js","webpack:///./app/panel/ShapePanelModel.js","webpack:///./app/panel/ShapePanel.js","webpack:///./app/view/frontend/ShortcutsController.js","webpack:///./app/view/frontend/ShortcutsModel.js","webpack:///./app/view/frontend/Shortcuts.js","webpack:///./app/clipArtPicker/ClipArtPickerController.js","webpack:///./app/clipArtPicker/ClipArtPickerModel.js","webpack:///./app/clipArtPicker/ClipArtPicker.js","webpack:///./app/myFilesPicker/MyFilesPickerController.js","webpack:///./app/myFilesPicker/MyFilesPickerModel.js","webpack:///./app/myFilesPicker/MyFilesPicker.js","webpack:///./app/templatePicker/TemplatePickerController.js","webpack:///./app/templatePicker/TemplatePickerModel.js","webpack:///./app/templatePicker/TemplatePicker.js","webpack:///./app/panel/FontPanelController.js","webpack:///./app/panel/FontPanelModel.js","webpack:///./app/panel/FontPanel.js","webpack:///./app/menu/AddMenuController.js","webpack:///./app/menu/AddMenu.js","webpack:///./app/panel/ZoomPanelController.js","webpack:///./app/panel/ZoomPanelModel.js","webpack:///./app/panel/ZoomPanel.js","webpack:///./app/view/frontend/MainToolbarController.js","webpack:///./app/view/frontend/MainToolbarModel.js","webpack:///./app/view/frontend/MainToolbar.js","webpack:///./app/view/frontend/ViewToolbarController.js","webpack:///./app/view/frontend/ViewToolbar.js","webpack:///./app/view/frontend/Main.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Meta","f","metadata","figures","_set","getSource","getFontSource","forEach","isText","flagFontAsCadworxLive","set","meta","flagFontAsCme","CmeClipArt","isSwappable","target","length","find","isCme","flagFontAsTransferExpress","undefined","isTransferExpress","xType","Array","isArray","_localId","Date","now","v","label","getTransferGroup","Brush","brush","material","materialDescription","color","colorDescription","split","indexOf","data","decodeName","Cx","b","type","getType","this","isBrushType","options","ignoreShowThrough","zones","uniqueBrushZones","assign","collapseTags","count","filter","zone","showThrough","brushZones","isEmptyType","brushes","push","CmeFixBrush","fix","changeBrushZone","Core","thumbnailUrl","Id","Cdl","toXmlString","Height","height","Width","width","isShowThrough","Tag","Name","Owned","Shared","Type","getRoot","root","getTxRoot","a","len","tag","charAt","toUpperCase","slice","Figure","figure","extraCharSpacing","extraWordSpacing","Color","uniqueColorZones","isGrouped","topFigure","setBrush","ignoreGroups","ignorePowerClips","isProxyGroup","list","isGroup","canEditContent","deepPowerClipContents","item","font","areEqual","inLayer","layer","fs","Text","isMultiPart","Shape","_powerClipContents","isEmpty","effect","findConstrainEffect","modifyKeeping$","processes","remove","maxWidth","resolve","add","Process","Constrain","hFit","isometric","vFit","areCme","materialBounds$","bounds$","materialBounds_","bounds_","config","boundsType","setSize$","bounds","docPoint","textAtPoint","canEditText","globalBounds_","contains","Querystring","getQueryValue","isFrontEnd","Rules","product","Application","code","allowAllHexColors","allowDraw","allowShape","allowEditTextDirection","allowEditTextPen","allowEditTextSpacing","allowPositionFigures","frontendAllowModifyDesign","frontEndAutoHideBottomToolbar","frontEndAutoHideTopToolbar","allowChangeableAspectRatio","docId","backgroundDocId","designDocId","query","isBackEnd","hasMaxColors","maxColors","showObjectMenu","frontEndShowTopToolbar","TransferExpressAPI","me","_userSessionId","_defaultSessionId","transferExpressToken","lowercaseName","toLowerCase","startsWith","tags","getClipArtTags","_getDocThumb","id","_getCdnUrl","path","Document","Url","Thumbnail","requestModel","Doc","Format","replace","Background","getTemplateTags","year","getFullYear","Tags","TX","SetCurrentYear","Font","text","FamilyName","familyName","Weight","weight","databaseConfig","_config","sessionId","_sessionId","CadworxAPI","cdnGetUrl","url","Network","getProtocol","contentType","encode","myJSONdata","dataType","ExternalAPI","request$","_request$","then","fontModel","fromCore","_moveFont$","moveFont$","_loadCategories$","response","_parseCategories","SubCategories","Items","parentName","subCategories","CategoryName","DeptID","_load$","pmIsSubstrate","pmName","pmType","transferTypeName","items","ProductTypes","printMethod","transferType","DesignerPrintMethodName","DesignerPrintMethodType","ExternalName","IsDefault","PrintMethodIsDefault","IsSubstrate","PrintMethodDefault","TransferTypes","searchOptions","TransferType","Substrate","colorName","colors","Colors","filtered","ColorName","sort","ColorGroupName","Keyword","_searchClipArts$","_loadClipArts$","cliparts","Cliparts","ClipartID","ClipartName","TotalCount","TotalOnServer","_search$","pagination","total_count","_searchLayouts$","_loadLayouts$","layouts","Layouts","LayoutID","LayoutName","Start","Limit","Sort","Search","_loadDoc$","docModel","doc","moveFigures$","method","responseType","CmeAPI","stahlsShopperId","buildThumbRequestModel","fontName","format","getCdnUrl","searchModel","_loadFontConfig$","fonts","_populateFontDisplayName","DisplayName","Config","Read","configModel","JSON","parse","Data","fontsConfig","lookup","_fontNameLookup","fullName","FullName","displayName","trim","Match","Archived","Hidden","searchTags$","textures","materials","whenEach","model","tagName","searchDocuments$","loadDoc$","texture","_getSessionId$","moveTextureBrush$","_doGetSessionId$","initSessionId","shopperId","_shopperId","NameSpace","UserId","SessionId","CmeFixDocument","_fixFontMetadata","_fixClipArtMetadata","_checkForClipArtAlternates","Cme","getTextFigures","CmeFonts","inNameLookup","getClipArtFigures","flagAsCme","getOriginalDocName","searchForAlternates$","CmeBrush","ensureDefaultBrush","_fixPricingSupport","_fixSmallClipArt$","setOriginalClipartName","fn$","whenAll","result","index","locked","LabPoint","_availableMatchLabPoints","_getLabPointFromRGB","_hex2rgb","_rgb2xyz","_xyz2lab","_round","_white","TxAllColors","_allColors","_allColorsLoaded","loadColors$","txColor","TxColor","parseTxColorData","TxColorMatching","x","y","z","spotColorName","rawRgb","rgb","xyz","lab","raw","g","parseInt","substring","loop","Math","pow","white","num","after","reg","RegExp","findByCadxColorIn","cadxColor","foundColor","findByNameIn","findByCMYKIn","cmyk","findByRGBIn","dist","p2","point","min","Infinity","minIdx","getPantoneOnly","indexOfCv","spotColorWithoutCv","indexBeforeNumber","lastIndexOf","possibleColorSearchMap","availableLabPoint","possibleColorMatch","info","abs","sqrt","_findClosestMatchToCadxColorIn","cmykHex","CMYKHex","rgbHex","RGBHex","isCxColorOriginallyFromTxPalette","isDesignColorOriginallyFromTxPalette","designColor","_CadxColor","TxFixColor","isCca","isNonBlackAndWhiteCca","colorNames","forEachColor","activePageFigures","Cx_","uniq","size","nonBlackAndWhiteColors","findWhere","convertColors","loadedColor","colorFixup","colorToFix","colorToFixSpotColor","isBlueShowThrough","isCustomColor","fixedUpColor","toCxColor","alpha","clone","TxFixDistress","dLayer","rest","layers","TxDistress","distressLayerXType","first","Raster","mc","monochromeColors","Defer","convertDistressFigure$","newFigure","layerBelowDistressLayer","getLayerBelowDistressLayer","distressLayerFigureCount","activeLayer","isDistressLayer","getDistressLayerIndex","findIndex","raster","rec","CreateRectangle","pcc","PowerClipContent","createForFigure","powerClipContents","polyregions","powerClipId","txId","TxFixDocument","getTxId","flagAsTransferExpress","flagAsClipArt","fix$","fixedDoc","fixClipartId","simplifyTextPartsWherePossible","fixPenContourBehindFill","load$","penContourEffect","findByType","Cadx","PenContour","each","pens","pen","behindFill","polyRegion","singlePolyRegion","groupFigures","indexOfActiveLayer","simplifyTextPartsWherePossibleInActiveLayer","Tx","isMultiPartText","textPartsCanBeSimplified","simplifiedFigure","simplifyTextParts","allFigures","everyTextBlock","everyClipart","ruleId","class1","savedDesignClass","class2","pages","page","cdl","tempDoc","fromXmlString","save$","update$","layerName","releaseLayers","reduce","_","all","concat","release","clear","releaseFigures","initMetadataOnDocLoad","setFigureId","setOriginalDocName","setOriginalTemplateName","fixDesign","TransferGroup","getNextGroupName","setTransferGroup","fixClipArt$","CadworxLiveAPI","flagAsCadworxLive","loadClipArt$","loadEffect$","loadMyFileDoc$","initMetadataOnTemplateLoad","flagAsTemplate","fixTemplate$","loadTemplate$","simplifyMultipartText","DocType","Doc3D","background","noCache","cache","_getNoCacheString","Page","getDate","getMonth","getHours","getMinutes","getSeconds","groupId","getData","setData","json","stringify","groups","getDesignGroups","groupIds","keys","newData","designGroups","groupNames","activeFigures","_getActiveDesignFigures","getFirstGroupName","addToGroup","designService","getDesignFigures","getActiveDesignFigures","getName","firstGroup","transferGroups","every","getActiveDesignGroups","_getDesignFigures","getGroups","indexes","prefix","_prefix","_getGroupIndexes","max","apply","designDocument","groupMap","getGroupNameMap","added","ungrouped","inGroup","createGroup","deleteTransferGroup","cadworxliveToken","paletteName","decoded","eval","Palettes","activePageLayers","findActiveDistressLayer","toArray","nonDistressedLayerId","findNonDistressedLayer","distressLayerId","top","middle","distressed","distress","nonDistressed","canvas","Layer","distressFs","distressedFs","tmp","haveDistressedFs","_getActiveDistressTransferGroups","shift","_removeDistressFigures","_updateDistressFigure$","_removeEmptyDistressLayers","designFigures","distressFigures","findActiveDistressFigures","distressGroups","layerId","designLayerId","distressFigure","values","oldBounds","isEqual","translate","Point","substract","lx_ly","_changeDistressFigure$","shape","untransformedVectorBounds$","r_bounds","Polyregion","anchor","AbsoluteAnchor","center","matrix22","Matrix","pin","r_width","r_height","b_width","b_height","s_x","s_y","scale","_getIdOfVersionBySize","sizeRe","isNegative","itemIsNegative","itemName","itemNameOnly","nameOnly","startWithRe","_getAlternateClipArt","test","arr","pop","join","cmeClipArtStoreRoot","_setAlternateClipArt","negName","negativeName","start","isNaN","cmeDarkClipArtRoot","totalCount","searchForNegatives$","unique","ART_WORK","CdnMap","applyIf","excludeIdent","excludeLog","Cdn","getRequestUrl","params","buildRequestData","optionsModel","exludeIdent","ident","SuperUser","encodeURIComponent","remoteConfig","remoteSessionId","resources","imageLink","isRaster","link","isMonogram","FontMatch","toCore","moveResources$","RemoteAuthToken","RemoteConfig","RemoteResources","jsonText","coreUrl","getUrl","requestData","_handleSearchResponse$","Success","error","Error","_logUnsuccessfulResponse","reject","Model","warning","str","style","Alpha","ARGB","ShowThrough","asString","colorZones","fromColor","handleNetworkError","_logNetworkError","XMLHttpRequest","standardizeNetworkError","arguments","timeout","dataSent","decode","errorType","errorDetail","requestId","log","RequestId","RequestJson","found","cmeDecodeMaterial","firstBrush","recursiveCollect","func","recursiveForEach","cf","union","Group","simplified","_toHex","CMYK","RGB","Key","ColorKey","GroupKey","ColorGroupKey","GroupName","PMS","PMSName","PMSTxNameEquivalent","SpotColorName","corel_txname","owner","_decimalToHex","arg","toString","callback","T","k","TypeError","O","kValue","some","fun","thisArg","res","predicate","configurable","writable","varArgs","to","nextSource","nextKey","window","document","inputValidity","buttonValidity","selectValidity","textareaValidity","functions","input","browserValidityFunctions","getOwnPropertyDescriptor","HTMLInputElement","HTMLButtonElement","HTMLSelectElement","HTMLTextAreaElement","button","select","textarea","getValidityState","field","getAttribute","nodeName","isNum","valid","group","getElementsByName","form","checked","checkValidity","badInput","patternMismatch","hasAttribute","rangeOverflow","Number","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","selectedIndex","fieldTagName","browserValidity","createElement","validity","searchFonts$","SortDir","nameLookup","_nameLookup","_fontData","cmeDecodeColor","setMaterialColor","setMaterial","raf","cancel","IS_BROWSER","_window","global","attachEvent","stylesCreated","animationName","animationKeyframes","animationStyle","animationstartevent","resetTriggers","element","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","scrollLeft","scrollWidth","scrollTop","scrollHeight","offsetWidth","offsetHeight","requestFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","fn","setTimeout","cancelFrame","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","clearTimeout","scrollListener","e","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","animation","keyframeprefix","domPrefixes","startEvents","pfx","elm","addResizeListener","getComputedStyle","position","css","head","getElementsByTagName","styleSheet","cssText","appendChild","createTextNode","createStyles","className","innerHTML","addEventListener","Function","Dom","on","el","event","handler","useCapture","removeEventListener","html","div","firstChild","container","parentNode","insertBefore","nextSibling","cls","addCls","cs","classList","removeCls","toggleCls","toggle","getBoundingClientRect","documentElement","clientHeight","clientWidth","prop","getPropertyValue","currentStyle","selector","context","matches","TxPattern","promises","powerClip","pcFigures","_updateFigurePattern$","pcBounds","preVectorBounds$","prePin$","prePin","invalidate","fit$","translated","minus","fit","StoreManager","_autoId","getStoreLookup","getInstanceLookup","getId","_instances","sm","_stores","_initialConfig","Event","_listeners","Map","preventDefault","returnValue","stopPropagation","cancelBubble","has","listeners","listener","splice","args","cb","callbackItems","un","_store","store","_data","_processData","copy","oldValue","_onChange","change","_onModelChange","Store","isStore","_event","_id","getConfig","_isLoaded","_isLoading","_model","_initData","registerInstance","loadData","_initLoad","load","records","getRecords","_records","record","createRecord","_emit","_processResponseItem","appendData","_currentLoadOptions","getFilter","_emitBeforeLoad","_doLoad","_processResponse","_prepareLoadData","_onLoad","getDataRoot","loadOptions","_emitLoad","_emitLoadFail","emit","destroy","unregisterInstance","_beforeDestroy","_afterDestroy","PagingStore","isPagingStore","_page","_totalCount","loadPage","begin","end","getPage","pageSize","getPageSize","isLocal","_localRecords","getPageRecords","getTotalProperty","curOptions","limit","_localLoad","getLocalRecords","_localFilter","totalProperty","CxPagingAssetsStore","rootTag","sortBy","_searchText","_requestModel","SortBy","preventSearch","isRootTag","searchTag","getRootTag","_searchByText","_searchByTag","setSearchTag","_applyToSearch","_applyTag","_oldSearchTag","getSearchTag","isSearchTag","responseModel","_onLoadComplete","_onLoadFailed","owned","shared","match","currentMatch","CxArtsStore","searchFn$","searchDocs$","ThumbHeight","ThumbUrl","getDocThumb","ThumbWidth","CxTagsStore","searchByTag","_getDisplayName","rootName","CmeClipArtsStore","_thumbSize","_sml","_smlNeg","_lrg","_lrgNeg","_artFilterFn","_isSmall","_isNegative","_syncWithNegativeFilter","isFilteredByNegative","thumbUrl","_getThumbUrl","_loadByFilter","_isSmallNegative","_isLarge","_isLargeNegative","_filterClipArt","_parseName","negId","getIdOfNegativeVersion","negItem","Raw","RawNegative","CmeTagsStore","_loadTagThumbs$","cmeClipartTagThumbsRoot","resp","_tagThumbsMap","catThumb","_filterUnpublishedTags","categories","TxPagingAssetsStore","ColorFlag","Unique","old","TxClipArtsStore","searchClipArts$","getClipArtThumb","TxTagsStore","apiFn$","TxClipArtTagsStore","loadClipArtCategories$","dataRoot","OnReady","_handlers","isReady","BaseService","_onReady","_remove","onReady","ready","ClipArtService","_onApplicationReady","_initStores","_initActiveStore","_onIsReady","_cadworxStore","cadworxClipArtsStoreRoot","_cadworxTagsStore","cadworxClipArtTagsStoreRoot","_cmeStore","_cmeTagsStore","cmeClipArtTagsStoreRoot","_txStore","_txTagsStore","setCadworxActive","isCadworxActive","isCmeActive","isTransferExpressActive","setCmeActive","setTransferExpressActive","_activeStore","_activeTagsStore","CmeTemplatesStore","TxLayoutTagsStore","loadLayoutCategories$","TxLayoutsStore","searchLayouts$","getTemplateThumb","TemplateService","cadworxTemplatesStoreRoot","cadworxTemplateTagsStoreRoot","cmeTemplateStoreRoot","cmeTemplateTagsStoreRoot","findLayer","activePage","hidden","findRaster","center$","colorAt$","fixSize$","defer","sizeSet","DesignService","designLayerSelector","arrayCondition","_canvas","_onCanvasDuplicated","_onCanvasChange","_onCanvasFiguresChanged","_onCanvasZoomUpdated","mainDocument","tool","Tool","Select","commit$","bgRaster","_bumpBackgroundSize$","bgRasters","findAllRasters","w","_bumpBackgroundSizeCondition","_bumpAllBackgroundsSizeCondition","_saveCondition","groupName","selectedFigures","render$","_createText$","_addText$","_cmeAddTextOutline","_cmeFixBrush","ensureSingleBrush","contour","Contour","offset","constrain","flagFontAsUserImported","fontSize","textFigure","_centerAndAddToDesignArea$","addToFirstGroup","_importCadworxLiveDocOnLoad","loadCadworxLiveClipArt$","loadCadworxLiveMyFile$","loadCadworxLiveTemplate$","loader$","app","lock","wait","when","hide","unlock","_importCmeDocOnLoad","loadCmeClipArt$","oldFigures","oldFigure","optional","getOptional","pricingLabel","getPricingLabel","transferGroupName","setOptional","setPricingLabel","replaceClipart$","loadCmeMyFile$","loadCmeTemplate$","_importTransferExpressDocOnLoad","loadTransferExpressClipArt$","loadTransferExpressMyFile$","loadTransferExpressTemplate$","isTemplate","parseDistressLayers","addToDistressLayer","addToNonDistressedLayer","_addToDesignArea","loadFigures$","flagAsUserImported","destinationLayerSelector","hideBackgroundFigures","bg","decorationService","setHidden","zoomToFitPages$","openDesign$","syncAnnotations","obj","getFigureId","activePage$","clearAnnotations","clearSelection","Promise","_brush","canEditBrush","changes","_brushTarget","_brushZones","_brushCondition","toolIsSelect","_pen","canEditPen","_penCondition","_aspectRatioLocked","canEditSize","_height","units","parseFloat","toUser","ignoreHeightChange","toDocument","aspectRatioLocked","ignoreWidthChange","_sizeTarget","_width","_sizeCondition","_designSizeHeight","_designSizeWidth","_designSizeCondition","_text","_textTarget","_canEditText","_textCondition","are","pageData","editable","getTextEditable","figure_index","line","_charSpacing","canEditCharSpacing","_charSpacingTarget","setCharSpacing","_charSpacingCondition","_font","canEditFont","_font$","_getFontTarget","_fontTarget","fontService","getFontDisplayName","_fontSize","_fontCondition","_maxWidth","canEditMaxWidth","_maxWidthTarget","setMaxWidth$","_maxWidthCondition","setTextEditable","_textEditableTarget","_textEditableCondition","_lineDirection","canEditLineDirection","_lineDirectionTarget","lineDirection","bump","_lineDirectionCondition","_addContentsTarget","activeDocument","content","addPowerClipContents","_addContentsCondition","_extractContentsTarget","extractPowerClipContents","_extractContentsCondition","direction","_mirrorTarget","mirrorX$","_mirrorCondition","action","_reshapeTarget","reshape$","_reshapeCondition","_reshapeMultiCondition","_orderTarget","_orderCondition","alignment","_alignTarget","align$","_alignCondition","_groupTarget","_groupAllow","_groupCondition","ungroup","_ungroupTarget","_ungroupCondition","canUndo","undo","canRedo","redo","_duplicateTarget","duplicate","_duplicateCondition","_zoomValue","canZoom","zoomPages","_zoomCondition","zoomIn","zoomTo","zoomOut","margin","canZoomToFit","zoomToFit$","_zoomTarget","_zoomToFitCondition","_removeTarget","_removeCondition","allBgRasters","pageFigures","selected","hasSelected","sizeFigures","brushTarget","filterOutDistressFigures","canAddContents","canExtractContents","inSameLayer","areTransferExpress","areColorsEqual","areBrushesEqual","_getBrushZones","_penTarget","_getPens","getCharSpacing","areFontsEqual","getMaxWidth","_textEditable","_designSizeTarget","clones","removed","addedFigure","_isDuplicateId","cleanGroupNames","brushZonesExEmptyBrush","getPens","figureId","_hasFigures","hasDistressFigures","hasProxyGroup","zoom","round","DecorationService","decorationLayerId","decorationLayerSelector","_onDesignServiceReady","_findLayer","rectangle","Pen","dashStyle","lineJoin","_addNew","_addNewCondition","_figures","_editCondition","annotate","_layer","CxAssetsStore","CxEffectsStore","tagNames","_getTagNames","stores","getDisplayName","docs","_findDocs","names","_tagsLoaded","_loadTags$","_doLoadTags$","cadworxEffectTagsStoreRoot","TxEffectsStore","getEffectThumb","Effect","keep","loadProcesses$","effects","addKeeping$","enforceGroupBrush","from","insert","removeKeeping$","EffectService","_initCanvasEvents","_initCadworxStores","_initTxStores","_onCadworxsStoreLoad","txEffectsStoreRoot","_onTxStoreLoad","_importEffect","loadCadworxLiveEffect$","loadTransferExpressEffect$","_addEffect","add$","_allowedEffects","_effects","move","_target","remove$","_addCondition","isCadworxLive","isTxActive","_getAllowedEffects","CadworxFontModel","moved","_movedFont","getFontThumb","CxFontsStore","CmeFontModel","MinSize","CmeFontsStore","read$","ImportedFontModel","getThumb","ImportedFontsStore","search$","TxFontModel","font$","_transformItem","NumberOnly","UppercaseOnly","Category","caseFlag","CaseFlag","isNumberOnly","uppercaseOnly","DefaultBold","TypeFaceName","CategoryName1","CorelFontName","TxAssetsStore","TxFontsStore","loadFonts$","_allCategory","_activeCategory","_categories","_addCategory","category","FontService","_initImportedStores","_initCmeStores","_initTransferExpressStores","_cxStore","cadworxFontStoreRoot","_cxTagsStore","cadworxFontTagsStoreRoot","fontData","cmeFontStoreRoot","_importedStore","myImportedFontsStoreRoot","isImportedActive","setImportedActive","findFontDisplayName","_getFont$","getFont$","_cmeGetFontMinSizeLookup","_cmeFontMinSizeLookup","isLoaded","ImportService","file","progressHandler","setProgress","scope","create$","alert","errorMsg","isCadworxFile","myImportedFilesStoreRoot","fileUpload$","handleCadworxResponse$","Documents","Upload","Import","getExtension","percent","setMessage","MonogramFontsStore","_filterChars","searchByCircle","searchByDiamond","chars","_getChars","fontStyle","_getFontStyle","frameSystem","_getFrameSystem","Chars","FontStyle","FrameSystem","Monogram","Line","char","MonogramService","_fontsStore","cmeMonogramFontsStoreRoot","_frameSystem","_fontStyle","_size","setText","selectedIsMonogram","firstFigure","CmeMyFilesStore","TxMyFilesStore","NoDuplicateNames","getMyFileThumb","TxMyFileTagsStore","txSavedLayoutsRoot","txOrdersRoot","SavedDesignsStore","myCadworxArtStoreRoot","Class1","HasClass1","Class2","HasClass2","MyFilesService","canAddCadworx","canAddCme","canAddTransferExpress","_savedDesignsStore","myCadworxArtTagsStoreRoot","cmeMyFilesStoreRoot","setSavedDesignsActive","sources","canAddSavedDesign","isSavedDesignActive","hasUserSession","RailsAPI","customizationId","apiEndpoint","get$","apiKey","token","post$","getTime","TxTransferGroup","TG","_findDistressFigureForNewTransferGroup","_txCloneDistressFigure","cloneDeep","self","OrderService","_quantity","_pricingFailed","_getSelectedFigures","_createTransferGroupCondition","_removeFromTransferGroupCondition","_metadata","sizes","view_type","transfer_group_name","_pricing","_optional","_optionalTarget","_getNextPricingLabel","_syncMetadata","figuresByPage","_getDesignFiguresByPage","_optionalCondition","_pricingLabel","canEditPricingLabel","_pricingLabelTarget","_pricingLabelCondition","_initOrigCdlByPage","_initOptional","buildMetadata","_getPricing","_onCanvasActivePageChanged","_onCanvasCommit","_onCanvasNewDocument","selectedCount","selectedIsGroup","_clearTransferGroupCondition","_origCdlByPage","_getCdlByPage","dirty","layerBy","canPrice","pricingData","getPricingData","havePricingData","stringified","pricingDataChanged","_pricingCache","getPricing$","transfers","jobData","cxPage","price","quantity","sku","empty_design","cxJobType","cxDocumentId","cxConfig","cxEmptyDesign","cxQuantity","cxVariableData","description","texts","material_description","color_description","originalTemplate","original_template","docName","groupNameMap","_getGroupNameMap","cdlByPage","pageId","modifiedDesign","visibleFigures","_getVisibleFigures","emptyDesign","transferGroupIndex","colorData","_getColorData","productionMethods","_getAvailableProductionMethods","_getDesignSize","available_production_methods","cx_variable_data","cdl_hash","_getCdlHash","_getCliparts","colorDescriptions","doc_name","modified_design","_getOriginalTemplate","materialDescriptions","_getText","txArtOnly","users_transfer_group_name","_metadataChanged","notifyOfUnsavedChanges","service","warningService","methods","isCmeValidForFulfillment","isGeneralValid","isTxValidForFulfillment","oldData","visible","getDesignFiguresByPage","cleanCdl","hash","charCodeAt","getOriginalClipartName","_processColorDataArray","getSize","_toInch","mmValue","toFixed","getOriginalTemplateName","is","CxBrushesStore","_palettes","enumColors$","argb","Value","ThumbStyle","getThumbStyle","CxPalettesStore","isLoading","enumPalettes$","CmePalettesStore","materials$","materialDesc","_processMaterialColors","Material","_processMaterialColorItem","colorDesc","colorNumber","hex","encodeName","_getThumbStyle","paletteService","cmeTextureId","CmeTextures","_loadedLookup","_lookup","searchTextures$","textureBrush","_findLoadedTexture","loadTexture$","_saveLoadedTexture","loaded","TxBrushModel","TxPalettesStore","currOpts","substrate","_addToPalette","TxProductTypesStore","loadProductTypes$","_getDefault","_findRecord","_activeRecord","_activeTransferType","getDefault","setActive","TxTransferTypesStore","productTypesStore","_productTypesStore","_bindProductTypesStore","_boundOnProductTypeChange","_onProductTypeChange","transferTypes","PaletteService","_cmeTextures","_onCmeMaterialsStoreLoad","_txProductTypesStore","_txTransferTypesStore","palettes","texture$","textureId","isSubstrate","_loadCadworx","_loadCme","Product","customizations","_customizations","max_layers","allowAddingEffects","allow_adding_effects","allow_all_hex_colors","allow_not_proportionally_resize","allow_edit_text_direction","allow_edit_text_pen","allow_edit_text_spacing","backend_allow_draw","backend_allow_shape","allow_position_figures","frontend_allow_modify_design","frontend_auto_hide_bottom_toolbar","frontend_auto_hide_top_toolbar","frontend_show_top_toolbar","show_object_menu","cadx_background_document_id","cadx_design_document_id","templateTags","_parseTags","templates","artworkTags","artworks","colorTags","fontTags","textureTags","_parseTextureTags","_parseOptionTypes","_parseOptionValues","_parseSelectedOptionTypes","_parseViews","_parseVariants","itemData","types","option_types","presentation","Position","_colorOptionType","_sizeOptionType","_optionTypes","colorType","sizeType","selectedTypes","selected_option_types","showColors","showSizes","option_values","_parseColorOptionValues","_parseSizeOptionValues","_parseColorData","sortColorsByPosition","isHex","thumb","Hex","IsHex","Presentation","MaterialCode","material_code","views","product_view_types","view_type_name","optionsValues","variants","_parseVariantOptionValues","Designs","_parseVariantDesigns","designs","Images","_parseVariantImages","images","options_text","Size","_designsCache","originalDesign","document_id","DocId","IsOriginal","_findItem","ids","variant","design","updateDesign","findDesign","_findItemIndex","cadx_document_id","ImageId","cadx_asset_id","option_type_id","colorWithPosition","image","findVariantImage","findVariantImageLink","firstColor","ProductService","_colorsStore","_sizesStore","_variantViewsStore","_initProduct$","productId","getProduct$","getCustomizations$","_product","_showColors","_showSizes","_designValue","editingOrder","canEditOrder","showingQuote","canShowCustomerQuote","addDesign","removeDesign","_variant","findVariant","_syncColors","setDynamicFieldsForFrontEndOnly","colorId","sizeId","ShowThroughService","_isIE","_initFallback","navigator","userAgent","_boundOnProductServiceChange","_onProductServiceChange","productService","register","_syncShowThroughColor$","oldVariant","oldId","_getBgColor$","_bgColor","_setColor","newColor","showThroughColor","ToolManager","_defaultBrush","_defaultPen","_nodeEditAlphaValue","_boundOnCanvasToolChanged","_onCanvasToolChanged","_alphaCondition","NodeEdit","_alphaTarget","_detectCornersCondition","FreeDraw","_detectCornersTarget","alphaCondition","_brushValue","brushCondition","_detectCorners","_detectCornersValue","detectCorners","_penValue","penCondition","_setTool","Draw","DrawEllipse","DrawRectangle","Pan","PowerClip","Zoom","ToolService","_mgr","mgr","initCanvas","nodeEditAlpha","detectCornersCondition","addDrawTool","addFreeDrawTool","addDrawEllipseTool","addDrawRectangleTool","addNodeEditTool","addPanTool","addPowerClipTool","isPowerClipActive","addSelectTool","addTextTool","addZoomTool","CmeWarning","areAllCme","isValid","message","preventFulfillment","preventSave","areSingleColor","_colorsAreInPalette","_clipArtHasShowThrough","filterFigures","clipart","bgHex","lowContrastFigure","_firstLowContrastClipArt","annotation","_lowContrastAnnotation","lowContrastMessage","isLowContrast","ratio","figureContrastRatio","fg","figureRgb","contrastRatio","l1","getL","l2","getsRGB","substr","getRGB","err","tooLargeLabel","_getScaleFactor","tooSmallFigure","_firstClipArtTooSmall","_tooSmallLabel","_isTooSmall","h","minH","getMinHeight","minW","getMinWidth","oo","scaleFactor","_owner","isLayer","_firstTextTooSmall","_textTooSmallLabel","textIsTooSmall","minFontSize","getMinFontSize","concreteFontSize_","getCmeFontMinSize","TxWarning","areColorsValid","_findPen","arePensSolid","arePensWidthValid","isTransferGroupTooLargeForUltraColorSoft","isTransferGroupTooLarge","_isTransferGroupTooLarge","txFigures","Warning","_hasTransferExpressFigures","maxColorsPerPage","overMaxColorCount","labels","_duplicatePricingLabels","_firstFigureWithDuplicatePricingLabel","orderService","pricingLabels","pos","duplicateLabels","_firstFigureMissingPricingLabel","_firstFigureExceedingTextureWidth","_exceedsTextureWidth","_findTextureWidth","_findMaterialCode","findTextureTag","WarningService","_warnings","_findWarning","isCmeType","isType","isTxType","warnings","_eachWarning","msgs","_filterWarningsByType","_syncWarnings","fnList","areAllCmeResult","colorsAreInPaletteResult","clipArtHasShowThroughResult","tooSmallClipArtResult","lowContrastClipArtResult","_bgHex","areSingleColorResult","tooSmallTextResult","areColorsValidResult","arePensSolidResult","arePensWidthValidResult","isTransferGroupTooLargeResult","hasTransferExpressFigures","overMaxColorCountResult","duplicatePricingLabelsResult","missingPricingLabelResult","exceedingTextureWidthResult","_forEachTransferGroup","groupWarnings","_syncAnnotations","_getBgColor","getBgColor$","activePageId","_clearAnnotations","_showAnnotation","_annotations","boxStyle","unannotate","ComponentManager","getComponentLookup","cm","_components","Element","isElement","dom","removeChild","hasCls","setSize","setStyle","getStyle","getBox","body","parent","Template","getElementById","Box","_initConfig","isBox","getInitialConfig","_el","_getBaseCls","_rendered","template","tpl","update","_onResize","configCls","_createEl","renderTo","_onElRender","child","replaceChild","_getRenderData","_getRenderTpl","_onRender","_initEvents","Binder","_init","_initView","_initViewModel","controller","view","setView","setViewModel","setViewController","_findHandler","getViewController","_onViewRender","_onViewPublish","viewKey","viewModel","viewModelKey","viewController","_getViewModelBindKey","_findViewModel","_syncViews","setter","_getViewSetter","init","_ignoreViewChange","_syncViewModel","_ignoreViewModelChange","comp","getViewModel","_onViewModelPublish","_findViews","bindKey","_getViewBindKey","getLayoutItems","getFooter","Component","_initBinder","isComponent","_publish","_binder","_initListeners","_getListenerHandler","getHandler","DelayedTask","delay","timeoutId","ClickHold","_delayedTask","_onDelay","_delayingForHold","onClick","onContextMenu","onHold","onRepeat","_onContextMenu","_onMouseUp","_onMouseDown","_onTouchStart","_swiping","_detectSwipe","changedTouches","_callHandler","_downEvent","_startDelay","diffX","diffY","downEvent","clientX","clientY","_onClick","_cancelDelay","_doRepeat","Button","isButton","disabledCls","disabled","forceValue","setIconAlign","getIconDom","elDom","_iconEl","getTextDom","_textEl","getEl","setAttribute","iconCls","title","setIconCls","setTitle","enableHoldEvent","repeat","_onHold","getDisabled","_doClick","_doRipple","_fireHandler","ink","box","left","Field","_noLabelCls","isField","_setAttribute","_inputEl","blur","_removeAttribute","removeAttribute","_labelEl","required","_getRawValue","_setRawValue","execCommand","focus","setSelectionRange","autofocus","inputType","maxlength","pattern","readonly","setDisabled","attributes","_getInputAttributes","labelDom","inputDom","placeholder","setPlaceholder","setValue","_onBlur","_onInput","_onKeyUp","TextAreaField","isTextAreaField","cols","rows","TextField","isTextField","Layout","isLayout","layoutEl","getLayoutEl","_setLayoutElCls","_setItemCls","LayoutColumn","_alignOptions","baseline","stretch","isLayoutColumn","align","flex","LayoutRow","isLayoutRow","Header","isHeader","header","_titleEl","closable","closeIconCls","getCloseIconCls","closeDom","iconDom","tools","_closeEl","_initTools","addTool","tooltip","toolEls","_toolEls","_onToolClick","insertAfter","closeEl","_onCloseClick","iconEl","Panel","bodyHtml","_initLayout","isPanel","_footer","_layout","_bodyEl","_items","_header","_renderHeader","_renderBody","_renderFooter","_renderHtml","_renderItems","_doLayout","cfg","render","close","bodyCls","bodyStyle","bodyEl","footer","cmp","_onAdd","doLayout","_onRemove","removeAll","Modal","_onTargetDestroy","Dialog","_closingLookup","getMe","side","_createComponent","_onShow","_onClose","_instance","_initModal","_onBeforeDestroy","_initCloseOnBlur","closeOnBlur","_boundDialogOnMouseDown","onDocMouseDown","modal","closeOnMaskClick","_onModalClick","sides","boundOnDocClick","DialogManager","dialogs","closeAll","isShowing","_onSheetDestroy","show","DebugPanel","searchSplit","decodeURIComponent","location","search","debug","_configField","href","debugInfo","coreJsVersion","grafikaVersion","itemSplit","layout","btn","copyToClipboard","debugUtil","exportToCadworx","open","DebugUtil","fileName","_getDateString","activePageIndex","AsRaster","FileName","SeparateColors","download_","_moveResourcesToTestAccount$","_saveToTestAccount$","dynamicFields","getDynamicText","background_document_id","design_document_id","trustedSource","_trustedSource","postMessage","_remoteConfig","bgDoc","backgroundDocument","designDoc","_saveDocumentToTestAccount$","savedBgId","savedDocId","_remoteServer","Create","Class3","class3","docType","ExternalId","externalId","Modified","modified","Notes","notes","PostMessage","_onMessage","send","success","origin","_onDeleteAlternative","_onSave","_onSetVariant","_onGetView","_onSetView","_onChangedQty","_onSetDynamicValue","_onSetViewByDynamicValue","onDesignRemoved","canSaveToCart$","saveToCart$","_onSaveSuccess","_onSaveError","errors","source","qty","setDynamicText$","viewByFigureId","Units","registeredItems","userUnit","userValue","unit","previousUnit","onUnitChanged","UseCase","effectService","monogramService","_map","services","useCases","_getServices","unRegister","map","useCase","SelectField","isSelectField","_createGroups","_selectEl","_initValue","_createGroup","_createOptions","_clearOptions","_createOption","Option","defaultSelected","_setDisabled","selectDom","_setInputFromValue","selectOption","isEditable","option","_findOption","getOptions","_syncUserEnteredOption","inputSelectDom","setGroups","setOptions","_onSelectChange","getValue","_removeUserOption","_userEnteredOption","_insertUserOption","editableAttributes","multiple","RemoteSourceField","_getService","_onServiceReady","_initDocumentOptions","_initDocumentValue","getSources","getActiveSource","setSource","SearchField","isSearchField","getStore","clearFilter","_unbindStore","_bindStore","isFiltered","_boundOnStoreLoad","_onStoreLoad","incremental","results","setIncremental","setResults","setStore","keyCode","doFilter","SearchHeader","_searchField","setSearchHidden","titleDom","btnEl","_searchBtnEl","_onSearchBtnElClick","getHidden","titleEl","PagingScroller","_list","_loading","onItemsRendered","onScrollEnd","onStoreChange","oldStore","onStoreLoad","itemBox","itemStyle","listBox","_getRenderedItems","bottom","marginBottom","loadNextPage","scroller","total","getTotalCount","_storeFullyLoaded","nextPage","StoreBinder","onAdd","_onBeforeLoad","onBeforeLoad","_onDataChange","onDataChange","onLoad","_onLoadFail","onLoadFail","onRemove","List","isList","storeBinder","_storeBinder","_removedRenderedItems","getCount","_renderEmptyText","_onStoreAdd","_onStoreonBeforeLoad","_onStoreDataChange","_onStoreRemove","_initClickEvent","_onElClick","listItem","_findListItem","isSelected","deselect","_getAt","getAt","_select","_onSelect","itemSelectedCls","multiSelect","getSelected","_deselect","_onDeselect","_selectedItems","_onScrollEnd","getElementsByClassName","cn","newEl","_renderItem","_removeEmptyText","_renderLoadingText","_removeLoadingText","itemCls","itemTpl","_onRenderItems","_emptyTextDom","_removeDom","_loadingTextDom","DocumentList","paging","_pagingScroller","eventName","ViewController","EffectPickerController","_boundServiceHandler","_onServiceChange","vm","effectStores","_searchHeader","getView","importEffect","ViewModel","_setConfig","_view","_viewController","EffectPickerModel","EffectPicker","headerConfig","allowedEffects","allowDrag","Container","isContainer","_initItems","_createItem","cmps","_onInsertAt","DragValue","onDrag","onDragEnd","_mouseDownHandler","_deltaX","_deltaY","_dragOffsetX","_dragOffsetY","onselectstart","_mouseDownX","_mouseDownY","_setOffset","isDrag","_docEl","_mousemoveHandler","_mouseupHandler","_syncDelta","EffectGhost","_dom","allow","ghost","icon","CheckboxField","isCheckboxField","getChecked","setChecked","NumberField","isNumberField","step","Anchor","_cls","_renderTo","_anchorPos","_render","anchorLeft","anchorTop","renderToCenter","targetCenter","renderToBox","targetBox","bodyBox","anchorPos","_getAnchorPosition","right","_syncAnchorCls","Menu","menu","isMenu","assert","_parentMenu","_child","menuConfig","parentMenu","registerChild","_renderModal","_modal","_boundOnDocMouseDown","_boundOnDocTouchStart","onDocTouchStart","_boundOnWinResize","_onWinResize","_getButtonEl","_doAnchor","_anchor","showBy","UnitField","_units","unitDom","_unitEl","_onUnitClick","_showMenu","_closeMenu","setUnit","EffectBump","handlers","onLeft","onRight","onUp","onDown","onMinus","onPlus","Border","dX","dY","separate","isChecked","gap","toDocumentUnit","unitchange","toUserUnit","getMinusPlusButtons","check","Capital","scaleX","scaleY","hAlignment","vAlignment","ClassArc","dontRotate","ThumbField","thumbCls","_updateValue","selectAt","_inputDomValue","_onInputClick","node","_getThumbFromTarget","nodes","_getThumbs","_onThumbClick","_selectThumb","getItemAt","wrap","_selectedThumbWrap","newValue","val","_updateThumbs","iLen","j","jLen","prevWrap","thumbs","thumbsCount","_insertThumb","_updateThumb","_createThumb","BrushField","bgImage","isGradientType","isTextureType","ColorPickerColor","hsvToRgb","bound01","part","hsv","rgbToHsv","toHsv","floor","q","mod","isOnePointZero","processPercent","isPercentage","ColorPickerPointer","getDefaultPosition","renderArrow","renderLine","renderRadial","ctx","beginPath","moveTo","lineTo","closePath","fillStyle","fill","lineWidth","strokeStyle","stroke","arc","PI","ColorPickerAlpha","picker","pointer","toAlpha01","gradient","baseColor","createLinearGradient","addColorStop","fillRect","ColorPickerDrag","_bindElement","_boundMouseDownHandler","docEl","_getEventPoint","borderLeftWidth","borderTopWidth","rect","offsetX","offsetY","_constrainPoint","unbindElement","ColorPickerGradient","toRgbString","createRadialGradient","_constrainToBox","getPointerPosition","getImageData","ColorPickerSpectrum","ColorPicker","onChange","onChangeEnd","sliderWidth","spectrum","bindCanvas","_isDirty","setAlpha","getColorPoint","sample","sampleColor","setBaseColor","getColor","clearRect","_draggable","_boundUnbindCanvas","unbindCanvas","_inBox","onColorAlphaChange","onColorChange","ColorPickerCanvas","setColor","_applyColor","_fromCxColor","getContext","_onPickerChange","_onPickerChangeEnd","ColorPickerPanel","_initialColor","_syncFields","_syncBoxStyle","_colorBox","_syncColorPicker","_alphaField","_hexField","_colorPickerCanvas","_initialColorBox","_getBoxStyle","changeend","_onCanvasChangeEnd","_configFields","colorPickerColor","_toCxColor","toHex","_configHexField","_configAlphaField","_configColorBox","_onHexInput","_getAlphaFieldValue","_onInputChange","_onAlphaInput","_onColorBoxRender","_onInitialColorBoxRender","_initBoxStyle","_onInitialColorBoxClick","getInitialColor","BrushList","CanvasBrushesStore","_designService","_boundHandler","onDesignServiceChange","isEmptyBrush","showThroughFound","parseBrushItem","Cls","loadColors","loadBrushes","CanvasBrushList","colorOnly","TxProductTypesField","_bindColorStore","txProductTypesStore","_getColorsStore","_colorStoreBinder","_onColorStoreBeforeLoad","_onColorStoreLoad","_onColorStoreLoadFail","_getStore","getActive","TxTransferTypesField","_onFontServiceReady","txTransferTypesStore","txSetActiveTransferType","PalettePickerController","_initBrush","_initService","_initUseCase","_boundOnUseCase","onUseCase","_useCases","registerUseCase","brushAtIndex","_editIndex","_showingMore","_setColorPickerColor","_setColorPickerInitialColor","unRegisterUseCase","transferExpressActive","brushFieldInitialized","showMore","_brushFieldInitialized","_toggleBrushFieldLimited","_brushField","_colorPicker","_ignoreColorPickerChange","task","newBrush","isDirty","cp","_getColorPickerAlpha01","setInitialColor","onColorPickerChange","_setColorPickerColorKeepingAlpha","_maybeGetTextureBrush$","cmeTexture$","fromBrush","PalettePickerModel","brushFieldHidden","showMoreHidden","txPrintMethodFieldHidden","txTransferTypeFieldHidden","PalettePicker","comps","_paletteComps","_clearPalettes","_configTitle","_configCanvasBrushList","_configShowThroughBrushField","_configBrushList","_configBrushField","_configShowMoreButton","_configColorPickerPanel","_configSourceField","_configTxPrintMethodField","_configTxProductTypeField","thumbclick","emptyText","loadingIconCls","loadingText","EffectBrush","setItemAt","steps","getField","inside","outside","includeHoles","combine","chamfer_D","chamfer_L","Distress","scratchesLevel","rustLevel","foldsLevel","Effect3d","_delayedEffect","borderIntensity","borderSize","contourOffset","lightSource","lightGap","lightIntensity","lightSize","shadowIntensity","shadowSizePercentage","slopeIntensity","slopeSize","FitEllipse","rotation","placement","mirror","FitEnvelope","hPos","vPos","keepLines","highResolution","addBearingX","fields","getPenColorField","PenField","opacity","colorDom","CanvasField","_updateFigure","_syncCanvasSize","innerCls","_getInnerCls","innerId","_inputInnerEl","_initCanvas","Canvas","appendTo","captureKey","plugins","stackViewTools","widget","_delayedSyncId","updateSize","DashStyleField","_activeColor","_defaultColor","_color","_options","valueIsDashCap","setFigure","_createDashStyleFigure","dashCap","Polyline","regions","Region","LineJoinField","_createLineJoinFigure","RangeField","isRangeField","TriggerField","triggerDom","_triggerEl","_onTriggerClick","TriggerRangeField","_onSliderInput","_onSliderRender","Device","isMobile","isTablet","detect","appName","PenPanelController","onPenChange","_setPenAlpha","rangeField","_setOpacity","getPen","fireHandler","_showAlerts","_setPenPropertyValue","isDesktop","_clearOpacity","_delayedClearOpacity","setApplicationPen","getPenFromService","cleanPen","Transparent","initServices","disable","brushColorConfig","PenPanelModel","panelStyle","dashCapActiveFlat","dashCapActiveRound","dashCapActiveTriangle","dashStyleActiveSolid","dashStyleActiveDash","dashStyleActiveDot","dashStyleActiveDashDot","dashStyleActiveDashDotDot","lineJoinActiveBevel","lineJoinActiveMiter","lineJoinActiveMiterClipped","lineJoinActiveRound","alphaAlertHidden","disableDashCap","lineJoinValue","penFieldHidden","penFieldValue","widthAlertHidden","PenPanel","showDialog","rangeinput","_configLineJoinFields","_configDashStyleField","_configDashCapFields","_configLineJoinField","active","click","_configDashCapField","Shadow","symplify","getDirectionButtons","Split","overlap","turn","VerticalArch","Effects","getFields","ClassicArc","getSimpleFields","EffectEditor","_body","bodyHidden","_dragHandleCls","_toolbarCls","_configToolbar","_configBody","_formatEffectType","_onHandleDestroy","_onHandleRender","_onBodyRender","brushIndex","penIndex","_onRangeInput","handle","_dragValue","_findDragTarget","dragTarget","_dragTarget","_isDragging","_createGhost","_dragData","_getDragData","_positionGhost","_destroyGhost","targetCls","dragTargetBox","_findDragTargetIndex","ghostBox","_ghost","EditEffectsPanelController","_figure","_syncToEffect","_initUseCases","syncToEffects","editing","_editEffect","editor","moveEffect","_boundOnCanvasRender","_onCanvasPreview","_markDirty","addEffects","_removingEffect","removeEffect$","_moveEffect","EditEffectsPanel","_addEditors","_pruneEditors","_checkPlacement","_editing","_configEditors","isEditing","_findEditor","setBodyHidden","_configEditor","_move","temp","_insertBefore","cmpEffect","edit","FontList","_icon","_deletingIcon","_getDeleteIcon","_getDeleteText","MonogramTextPanelController","_syncToFigure","searchMonogramFontsByCircle","searchMonogramFontsByDiamond","_boundOnMonogramServiceChange","_onMonogramServiceChange","_onMonogramServiceReady","_boundOnDesignServiceChange","_onDesignServiceChange","dsc","msc","frameSystemIsCircle","frameSystemIsDiamond","fontsStore","monogramText","filterChars","_setSize","monogramFont$","MonogramTextPanelModel","textDisabled","textValue","MonogramTextPanel","dragDropDisabled","_onStoreBeforeLoad","_onStoreLoadFail","FileButton","iconAlign","fieldEl","accept","getButtonDom","files","btnCls","buttonCls","onFieldChange","_getHandler","TagField","getAssetsStore","getTagsStore","_loadTagOptions","force","_unbindAssetsStore","_bindAssetsStore","_bindTagsStore","_initStore","assetsStore","tagsStore","setAssetsStore","setTagsStore","_boundOnAssetsStoreLoad","_onAssetsStoreLoad","_getActiveTag","setTag","_insertRootTag","_hasAllTag","insertAt","_initTagSelection","findRecord","TxFontCategoriesField","transferExpressFontsStore","cat","activeCategory","searchByCategory","FontPickerController","cadworxActive","cmeActive","importedActive","dragAssetType","fileButton","_showImporting","importFontFile$","getFiles","_hideImporting","importedFontsStore","showDeleting","deleteImportedFont$","hideDeleting","FontPickerModel","cadworxTagFieldHidden","fontListAllowDelete","fontListDragAssetType","fontListStore","importButtonHidden","transferExpressCategoryFieldHidden","FontPicker","getAssetType","_configRemoteSourceField","_configCadworxTagField","_configImportButton","_configTransferExpressCategoryField","_configFontList","cadworxStore","hideOnFilter","cadworxFontTagsStore","allowDelete","deleteclick","TextPanelController","showEffects","editEffects","_onFontSizeChange","_onPenPanelSelect","newPen","charSpacing","_setFontByType","fontByType$","canAddEffect","_syncMaxWidthField","registerUnits","canSeeSpectrum","allowEditCharSpacing","allowEditLineDirection","TextPanelModel","brushHidden","penHidden","charSpacingDisabled","charSpacingHidden","charSpacingLabel","effectsHidden","fontNameValue","lineDirectionDisabled","lineDirectionHidden","lineDirectionLabel","maxWidthHidden","maxWidthLabel","maxWidthValue","spectrumHidden","TextPanel","_configTextField","_configFontNameField","_configFontSizeField","_configBrushSpectrum","_configPenField","_configEffectsButton","_configMaxWidthField","_configCharSpacingField","_configLineDirectionField","_configImportedFontPicker","Notification","_textDom","fullscreen","_cmp","_configSpacer","_configIcon","_configText","_configButtons","handleCallback","_inDesignMode","_boundsHiddenFiguresMap","_loadingCls","_savingCls","clipArtService","templateService","importService","myFilesService","showThroughService","toolService","_useCase","_onCxReady","showDebugInfo","_hideLoading","_setBodyCls","setDesignerReady","_showLoading","_initKeyboardShortcuts","onkeydown","_onKeyboardShortcut","ctrlKey","metaKey","String","fromCharCode","which","_setDynamicFields","_setDynamicFieldsId","setDynamicFields","enlargeToggle","designMode","_initDesignForQuote$","_editOrder$","canDesign","_initDesign$","canCreate","_initDesignDocument$","newDocument","setUnsavedChanges","setBackgroundHidden$","hasFiguresOtherThanCme","allowModify","allowModifyDesign","autoHideBottomToolbar","autoHideTopToolbar","showTopToolbar","addContents","bumpBackgroundSize","canBumpBackgroundSize","canBumpAllBackgroundsSize","canEditEffects","addCadworxLiveText","addCmeText","addImportedText","addTransferExpressText","canAlign","canChangeAspectRatio","allowDrawShape","createTransferGroup","canCreateTransferGroup","removeFromTransferGroup","canRemoveFromTransferGroup","canDuplicate","allowGroup","canGroup","canUngroup","getDynamicTextFigureById","canSetTextEditable","extractContents","canMirror","canOrder","allowPricing","canRemove","canReshape","canReshapeMulti","setEstimatePrice","_createSharedCopy","openProductsDesignDocument$","_class1","_class2","_class3","_modified","_notes","_docType","_externalId","_category","CreateShared","activeDesign","_saveOrderEdit$","_save$","saveDesign$","onDesignSaved","removeSavedDesign$","_showSaving","_hideSaving","setSaveResponse","_doSave$","designDocIsOriginal","idsOfVariantsUsingDesign","postMessageData","savedBg","savedDoc","designServiceAllow","canSave","isValidToSave","pricingFailed","canEditOptional","canEditProduct","zoomToFit","oldDesign","onVariantSet","setVariantCompleted","selectTransferGroup","registerCanvas","condition","canPositionFigures","_onCanvasCommitStarted","_onCanvasDoubleClick","_onCanvasRenderStarted","_onCanvasRenderComplete","_onCanvasResize","waitFor","hasTransferExpressAssets","updateDistress$","updatePattern$","canEditMonogramText","cleanGroups$","_onCanvasResizeId","importCadworxLiveClipArt","importCmeClipArt","importTransferExpressClipArt","getCadworxFont$","addTextByType","getCmeFont$","getImportedFont$","getTransferExpressFont$","importMyFile","importCadworxLiveMyFile","importCmeMyFile","importTransferExpressMyFile","importCadworxLiveTemplate","importCmeTemplate","importTransferExpressTemplate","_initDesignBackground$","_getInitVariant","variantOfFirstColor","variantViewId","variantId","findVariantOfFirstPositionedColor","findVariantWithImageLink","newBackground$","openBackground$","mainViewType","order","importFile$","importDocFromFile$","importFont$","replaceCmeClipArt","saveCopy$","hasAssetsOtherThanCme","isCmeValid","hasVisibleFigures","messages","addNew","canAddNew","canEdit","cadworxLiveFont$","cmeFont$","importedFont$","transferExpressFont$","confirm","ArtWorkAlert","_initPosition","docToView","hx","hy","canvasPos","_getPosition","xPos","yPos","xScroll","yScroll","offsetLeft","clientLeft","offsetTop","clientTop","offsetParent","CanvasAlert","_onAnnotationsUpdated","updates","_delayedUpdate","_getDelayedTask","_update","_removeAll","isLowContrastAnnotation","isTooLargeLabel","isTooSmallLabel","isTextTooSmallLabel","_add","_genId","_createDom","ly","_getItems","_getCanvasDom","_onItemClick","_onCmeLowContrastAlertClick","_onCmeTooLargeAlertClick","_onCmeTooSmallAlertClick","_onCmeTextTooSmallAlertClick","getIdOfLargeVersion","tooLargeMessage","msg","isLarge","getIdOfSmallVersion","textTooSmallMessage","CanvasController","onApplicationReady","getCanvas","delayCanvasSizeSync","getCxCanvas","_syncVariant","_syncVariantViewImages","isCanvas","_innerEl","canvasTouchEnabled","Plugin","Grid","UserLines","KeyShortcuts","HeadUpDisplay","PagesSelector","targetIsInput","_onCanvasReady","_delayedSyncCanvasSize","_registeredCanvas","ZoomMenuController","canZoomToDesign","zoomToDesign","zoomToBackground","ZoomMenuModel","zoomDisabled","zoomToDesignDisabled","ZoomMenu","ZoomController","ZoomModel","zoomDisplayValue","Hud","_isToolPan","_initDesignServiceHandlers","_checkActiveTool","_boundToolServiceHandler","ButtonManager","bm","_groups","state","getGroupLookup","toggleGroup","pressed","ToggleButton","isToggleButton","enableToggle","pressedCls","toggleDisabled","allowDepress","suppressEvent","onToggle","unregister","SpectrumIconCanvas","_context","asPen","boxSize","LayoutCard","isLayoutCard","setActiveItem","activeCls","hasActiveCls","activeItem","isActiveIndex","_onSetActiveItem","ArrangePanelController","ArrangePanelModel","disableAlign","disableOrder","ArrangePanel","ShapePanelController","reshape","_closeView","ShapePanelModel","disableAddContents","disableExtractContents","disableMirror","disableReshape","disableReshapeMulti","ShapePanel","ShortcutsController","removeSelected","canSeePenSpectrum","canDelete","ShortcutsModel","deleteHidden","penSpectrumHidden","textHidden","Shortcuts","ClipArtPickerController","modeHasTags","_modeHasTags","cmeStore","isFilteredBySmall","_isCmeStoreFilteredByNegative","_syncCmeNegativeCss","_syncDragAssetType","filterBySmall","filterByLarge","filterByNegative","storeIsFiltered","importByType","ClipArtPickerModel","tagFieldHidden","cmeDetailHidden","cmeDetailValue","cmeNegativeFieldHidden","cmeNegativeFieldValue","listDragAssetType","listStore","tagFieldAssetsStore","tagFieldTagsStore","ClipArtPicker","_configTagField","_configCmeFilters","_configDocumentList","_configCmeDetailField","_configCmeNegativeField","storechange","binder","MyFilesPickerController","savedActive","removeDesign$","MyFilesPickerModel","listAllowDelete","MyFilesPicker","canAddTx","TemplatePickerController","TemplatePickerModel","TemplatePicker","FontPanelController","_handleButtons","fontPicker","_fontPicker","_selectedRecord","_hasText","_getRecord","fontRecord","backendEndpoint","FontPanelModel","fontPickerHidden","footerHidden","mediaLibrariesButtonHidden","FontPanel","footerConfig","AddMenuController","addText","AddMenu","canOpenSavedDesign","ZoomPanelController","_doZoom","ZoomPanelModel","zoomValue","ZoomPanel","MainToolbarController","restart","_updateModeButton","_syncShortcuts","shortcuts","MainToolbarModel","redoDisabled","undoDisabled","enlargeButtonIconCls","enlargeButtonPressed","modeButtonIconCls","modeButtonPressed","MainToolbar","_renderShortcuts","toolbar","ViewToolbarController","ViewToolbar","_configSelectField","hideViewDropDown","_parsePageData","_syncSelectField","selectField","tabContainer","Main"],"mappings":"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","file":"app-frontend.7c4fb6e4b46afa3ff19b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 88);\n","import CmeClipArt from './CmeClipArt';\r\n\r\nexport default class Meta {\r\n\r\n ////\r\n // New data\r\n // dxSource: 'cadworx-live' | 'cad-cut' | 'transfer-express'\r\n // dxFontSource: 'cadworx-live' | 'cad-cut' | 'transfer-express'\r\n // dxIsClipArt: true | false\r\n // dxIsTemplate: true | false\r\n\r\n static getSource (f) {\r\n return f.metadata.get('dxSource');\r\n }\r\n static getFontSource (f) {\r\n return f.metadata.get('dxFontSource');\r\n }\r\n\r\n static flagAsUserImported (figures) {\r\n Meta._set(figures, 'dxSource', 'user-import');\r\n }\r\n static isUserImported (f) {\r\n return Meta.getSource(f) === 'user-import';\r\n }\r\n\r\n static flagFontAsUserImported (figures) {\r\n Meta._set(figures, 'dxFontSource', 'user-import');\r\n }\r\n static isUserImportedFont (f) {\r\n return Meta.getFontSource(f) === 'user-import';\r\n }\r\n\r\n static flagAsCadworxLive (figures) {\r\n figures.forEach(function (f) {\r\n if (f.isText) {\r\n Meta.flagFontAsCadworxLive(f);\r\n } else {\r\n f.metadata.set('dxSource', 'cadworx-live');\r\n }\r\n });\r\n }\r\n static flagFontAsCadworxLive (figures) {\r\n Meta._set(figures, 'dxFontSource', 'cadworx-live');\r\n }\r\n static isCadworxLive (f) {\r\n var meta = f.metadata,\r\n value = 'cadworx-live';\r\n\r\n return meta.get('dxSource') === value ||\r\n meta.get('dxFontSource') === value;\r\n }\r\n\r\n static flagAsCme (figures) {\r\n figures.forEach(function (f) {\r\n if (f.isText) {\r\n Meta.flagFontAsCme(f);\r\n } else {\r\n f.metadata.set('dxSource', 'cad-cut');\r\n }\r\n });\r\n }\r\n static flagFontAsCme (figures) {\r\n Meta._set(figures, 'dxFontSource', 'cad-cut');\r\n }\r\n static isCme (f) {\r\n var meta = f.metadata,\r\n value = 'cad-cut';\r\n\r\n return meta.get('dxSource') === value ||\r\n meta.get('dxFontSource') === value ||\r\n CmeClipArt.isSwappable(f); // Fallback\r\n }\r\n static areCme (target) {\r\n if (!target || target.length === 0) {\r\n return false;\r\n }\r\n\r\n // Any not CME?\r\n return target.find(function (f) {\r\n return !(Meta.isCme(f));\r\n }) ? false : true;\r\n }\r\n\r\n static flagAsTransferExpress (figures) {\r\n figures.forEach(function (f) {\r\n if (f.isText) {\r\n Meta.flagFontAsTransferExpress(f);\r\n } else {\r\n f.metadata.set('dxSource', 'transfer-express');\r\n }\r\n });\r\n }\r\n static flagFontAsTransferExpress (figures) {\r\n Meta._set(figures, 'dxFontSource', 'transfer-express');\r\n }\r\n static isTransferExpress (f) {\r\n var meta = f.metadata,\r\n value = 'transfer-express';\r\n\r\n return meta.get('dxSource') === value ||\r\n meta.get('dxFontSource') === value ||\r\n meta.get('txId') !== undefined || // TX Clip Art gets this\r\n meta.get('txSeqName') !== undefined;\r\n }\r\n static areTransferExpress (target) {\r\n if (!target || target.length ===0) {\r\n return false;\r\n }\r\n\r\n // Any not TX?\r\n return target.find(function (f) {\r\n return !(Meta.isTransferExpress(f));\r\n }) ? false : true;\r\n }\r\n\r\n static flagAsClipArt (figures) {\r\n Meta._set(figures, 'dxIsClipArt', true);\r\n }\r\n static isClipArt (f) {\r\n var value = f.metadata.get('dxIsClipArt');\r\n\r\n return f.xType == 'System.Clipart' || // TX fallback\r\n CmeClipArt.isSwappable(f) || // CME fallback\r\n (typeof value === 'string' ? value === 'true' : value === true);\r\n }\r\n\r\n static flagAsTemplate (figures) {\r\n Meta._set(figures, 'dxIsTemplate', true);\r\n }\r\n static isTemplate (f) {\r\n var value = f.metadata.get('dxIsTemplate');\r\n return typeof value === 'string' ? value === 'true' : value === true;\r\n }\r\n\r\n static _set (figures, key, value) {\r\n if (!Array.isArray(figures)) {\r\n figures = [figures];\r\n }\r\n\r\n figures.forEach(function (f) {\r\n f.metadata.set(key, value);\r\n });\r\n }\r\n ////\r\n\r\n /**\r\n * We use this to allow the frontend designer to modify 'dynamic' figures.\r\n * We used to use the figure._localId.\r\n * @param {Cx.Figure} f\r\n */\r\n static setFigureId (f) {\r\n f.metadata.set('dxFigureId', f._localId + ':' + Date.now());\r\n }\r\n\r\n /**\r\n * Allow for existing id's in the database to still work\r\n * by falling back to the figure._localId.\r\n * @param {Cx.Figure} f\r\n */\r\n static getFigureId (f) {\r\n return f.metadata.get('dxFigureId') || f._localId;\r\n }\r\n\r\n /**\r\n * CME pricing support\r\n * @param {Cx.Figure} f\r\n * @param {Boolean} v\r\n */\r\n static setTextEditable (f, v) {\r\n f.metadata.set('dxAllowEdit', v);\r\n }\r\n\r\n /**\r\n * CME pricing support\r\n * @param {Cx.Figure} f\r\n */\r\n static getTextEditable (f) {\r\n var value = f.metadata.get('dxAllowEdit');\r\n return typeof value === 'string' ? value === 'true' : value === true;\r\n }\r\n\r\n /**\r\n * CME only.\r\n * @param {Cx.Figure} f\r\n * @param {String} v\r\n */\r\n static setMaterial (f, v) {\r\n // Not using 'dx' prefix here\r\n // Using same key as CME Designer\r\n f.metadata.set('MaterialId', v);\r\n }\r\n\r\n /**\r\n * CME only.\r\n * @param {Cx.Figure} f\r\n * @param {String} v\r\n */\r\n static setMaterialColor (f, v) {\r\n // Not using 'dx' prefix here\r\n // Using same key as CME Designer\r\n f.metadata.set('MaterialNumber', v);\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f\r\n */\r\n static getMinHeight (f) {\r\n return f.metadata.get('minHeight');\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f\r\n */\r\n static getMinWidth (f) {\r\n return f.metadata.get('minWidth');\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f\r\n * @param {Boolean} v\r\n */\r\n static setOptional (f, v) {\r\n f.metadata.set('dxOptional', v);\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f\r\n */\r\n static getOptional (f) {\r\n var value = f.metadata.get('dxOptional');\r\n return typeof value === 'string' ? value === 'true' : value === true;\r\n }\r\n\r\n /**\r\n * CME pricing support\r\n * @param {Cx.Figure} f\r\n * @param {String} name\r\n */\r\n static setOriginalClipartName (f, name) {\r\n f.metadata.set('dxOriginalClipartName', name);\r\n }\r\n\r\n /**\r\n * CME pricing support\r\n * @param {Cx.Figure} f\r\n */\r\n static getOriginalClipartName (f) {\r\n return f.metadata.get('dxOriginalClipartName');\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f\r\n */\r\n static setOriginalDocName (f, name) {\r\n f.metadata.set('dxOriginalDocName', name);\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f\r\n */\r\n static getOriginalDocName (f) {\r\n return f.metadata.get('dxOriginalDocName') ||\r\n f.metadata.get('originalDocName'); // CME metadata\r\n }\r\n\r\n /**\r\n * CME pricing support\r\n * @param {Cx.Figure} f\r\n * @param {String} name\r\n */\r\n static setOriginalTemplateName (f, name) {\r\n return f.metadata.set('dxOriginalTemplateName', name);\r\n }\r\n\r\n /**\r\n * CME pricing support\r\n * @param {Cx.Figure} f\r\n */\r\n static getOriginalTemplateName (f) {\r\n return f.metadata.get('dxOriginalTemplateName');\r\n }\r\n\r\n /**\r\n * CME pricing support\r\n * @param {Cx.Figure} f\r\n * @param {String} label\r\n */\r\n static setPricingLabel (f, label) {\r\n f.metadata.set('dxPricingLabel', label);\r\n }\r\n\r\n /**\r\n * CME pricing support\r\n * @param {Cx.Figure} f\r\n */\r\n static getPricingLabel (f) {\r\n return f.metadata.get('dxPricingLabel');\r\n }\r\n\r\n /**\r\n * Saved Designs from Transfer Express can have\r\n * 'txId' set.\r\n * @param {Cx.Figure} f\r\n */\r\n static getTxId (f) {\r\n return f.metadata.get('txId');\r\n }\r\n\r\n /**\r\n * Transfer groups can only be on top level figures.\r\n * @param {Cx.Figure} f\r\n * @param {String} name\r\n */\r\n static setTransferGroup (f, name) {\r\n f.metadata.set('dxTransferGroup', name);\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f\r\n */\r\n static getTransferGroup (f) {\r\n return f.metadata.get('dxTransferGroup');\r\n }\r\n\r\n static areTransferGroup (target, name) {\r\n if (!target || target.length === 0) {\r\n return false;\r\n }\r\n\r\n return target.find(function (f) {\r\n return Meta.getTransferGroup(f) !== name;\r\n }) ? false : true;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f\r\n */\r\n static deleteTransferGroup (f) {\r\n f.metadata.delete('dxTransferGroup');\r\n }\r\n\r\n}\r\n","import CmeFixBrush from './CmeFixBrush';\r\n\r\nexport default class Brush {\r\n\r\n /**\r\n * CME\r\n * We will not always have the color {Number}.\r\n * \r\n * @param {Cx.Brush/Cx.Color} brush\r\n * @param {String} material The material code. E.g. 'CCH'\r\n * @param {String} materialDescription The name. E.g. 'Adhesive'\r\n * @param {String} color The color number. E.g. '130'\r\n * @param {String} colorDescription The color name. E.g. 'Electric Copper'\r\n */\r\n static encodeName (brush, material, materialDescription, color, colorDescription) {\r\n if (material && materialDescription && color && colorDescription) {\r\n brush.name = material + '..' + materialDescription + '..' + color + '..' + colorDescription;\r\n } else if (colorDescription) {\r\n brush.name = colorDescription;\r\n }\r\n }\r\n\r\n /**\r\n * CME\r\n * @param {Cx.Brush/Cx.Color} brush\r\n */\r\n static decodeName (brush) {\r\n var name = brush.name,\r\n splitter = '..',\r\n split;\r\n\r\n if (name && name.indexOf(splitter) !== -1) {\r\n split = name.split(splitter);\r\n\r\n return {\r\n color: split[2],\r\n colorDescription: split[3],\r\n material: split[0],\r\n materialDescription: split[1]\r\n };\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @param {Cx.Brush} brush\r\n */\r\n static cmeDecodeMaterial (brush) {\r\n var data = Brush.decodeName(brush);\r\n return data ? data.material : undefined;\r\n }\r\n\r\n /**\r\n * @param {Cx.Brush} brush\r\n */\r\n static cmeDecodeColor (brush) {\r\n var data = Brush.decodeName(brush);\r\n return data ? data.color : undefined;\r\n }\r\n\r\n /**\r\n * @param {Cx.Color} color\r\n */\r\n static fromColor (color) {\r\n // Preverve encoded name\r\n return new Cx.Brush({ color: color, name: color.name });\r\n }\r\n\r\n /**\r\n * @param {Cx.Brush} b\r\n */\r\n static isBrushType (b) {\r\n var type = b.getType();\r\n return (type === 'Brush' || type === 'Empty');\r\n }\r\n\r\n /**\r\n * @param {Cx.Brush} b\r\n */\r\n static isEmptyType (b) {\r\n if (this.isBrushType(b)) {\r\n return b.getType() === 'Empty';\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * @param {Cx.Brush} b\r\n */\r\n static isGradientType (b) {\r\n return (b.getType() === 'LinearGradientBrush');\r\n }\r\n\r\n /**\r\n * @param {Cx.Brush} b\r\n */\r\n static isTextureType (b) {\r\n return (b.getType() === 'TextureBrush');\r\n }\r\n\r\n /**\r\n * @param {Cx.Figures} figures\r\n * @param {Object} options\r\n * @param {Boolean} ignoreShowThrough\r\n */\r\n static uniqueBrushZones (figures, options, ignoreShowThrough) {\r\n var zones = Cx.uniqueBrushZones(figures, Object.assign({ collapseTags: (figures.count != 1) }, options || {}));\r\n\r\n if (ignoreShowThrough) {\r\n // Filter out 'ShowThrough'\r\n zones = zones.filter(function (zone) { \r\n var brush = zone.value,\r\n type = brush.getType(),\r\n isBrush = type === 'Brush',\r\n isShowThrough = isBrush && brush.color.showThrough;\r\n\r\n return !isShowThrough;\r\n });\r\n }\r\n\r\n return zones;\r\n }\r\n\r\n /**\r\n * @param {Object[]} brushZones\r\n */\r\n static brushZonesExEmptyBrush (brushZones) {\r\n // Filter out 'Empty'\r\n return brushZones.filter(function (zone) { \r\n var isEmpty = Brush.isEmptyType(zone.value);\r\n return !isEmpty;\r\n });\r\n }\r\n\r\n /**\r\n * @param {Object[]} brushZones\r\n */\r\n static brushes (brushZones) {\r\n var brushes = [];\r\n\r\n brushZones.forEach(function (zone) {\r\n brushes.push(zone.value);\r\n });\r\n\r\n return brushes;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure/Cx.Figure[]} target\r\n * @param {Cx.Brush} brush\r\n */\r\n static setBrush (target, brush) {\r\n target = Array.isArray(target) ? target : [target];\r\n\r\n var zones = Brush.uniqueBrushZones(target);\r\n\r\n // Ensure CME metadata is set\r\n CmeFixBrush.fix(target, brush);\r\n\r\n zones.forEach(function (zone) {\r\n Cx.changeBrushZone(target, zone, brush);\r\n });\r\n }\r\n\r\n /**\r\n * @param {Object} data The brush data.\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static getThumb (data, options) {\r\n return Cx.Core.Brush.thumbnailUrl({\r\n Brush: data.Id ? { Id: data.Id } : { Cdl: data.Brush.toXmlString() },\r\n Height: options.height,\r\n Width: options.width\r\n });\r\n }\r\n\r\n static isShowThrough (brush) {\r\n var isBrushType = Brush.isBrushType(brush),\r\n isShowThrough = isBrushType ? brush.color.showThrough : false;\r\n\r\n return isShowThrough;\r\n }\r\n\r\n}\r\n","export default class Tag {\r\n\r\n static getRoot () {\r\n return '/designer';\r\n }\r\n\r\n static getTxRoot () {\r\n return '/tx';\r\n }\r\n\r\n static myImportedFilesStoreRoot () {\r\n return { Name: '/designer/imported', Owned: true, Shared: false, Type: 'Doc' };\r\n }\r\n\r\n static myImportedFontsStoreRoot () {\r\n return { Owned: true, Shared: false, Type: 'Font' };\r\n }\r\n\r\n static cadworxArtStoreRoot () {\r\n return { Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cadworxArtTagsStoreRoot () {\r\n return { Name: Tag.getRoot(), Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static myCadworxArtStoreRoot () {\r\n return { Owned: true, Shared: false, Type: 'Doc' };\r\n }\r\n\r\n static myCadworxArtTagsStoreRoot () {\r\n return { Name: Tag.getRoot(), Owned: true, Shared: false, Type: 'Doc' };\r\n }\r\n\r\n static cadworxClipArtsStoreRoot () {\r\n return { Name: Tag.getRoot() + '/clipart/**', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cadworxClipArtTagsStoreRoot () {\r\n return { Name: Tag.getRoot() + '/clipart', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cadworxTemplatesStoreRoot () {\r\n return { Name: Tag.getRoot() + '/templates/**', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cadworxTemplateTagsStoreRoot () {\r\n return { Name: Tag.getRoot() + '/templates', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cadworxFontStoreRoot () {\r\n return { Name: Tag.getRoot() + '/**', Owned: false, Shared: true, Type: 'Font' };\r\n }\r\n\r\n static cadworxFontTagsStoreRoot () {\r\n return { Name: Tag.getRoot(), Owned: false, Shared: true, Type: 'Font' };\r\n }\r\n\r\n static cadworxEffectTagsStoreRoot () {\r\n return { Name: Tag.getRoot() + '/effects', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cmeClipArtStoreRoot () {\r\n return { Name: '/v2/PUBLIC/Clipart/**', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cmeDarkClipArtRoot () {\r\n return { Name: '/v2/PUBLIC/ForDarks/Clipart', Owned: false, Shared: true, Type: 'Doc'};\r\n }\r\n\r\n static cmeClipArtTagsStoreRoot () {\r\n return { Name: '/v2/PUBLIC/Clipart', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cmeClipartTagThumbsRoot () {\r\n return { Name: '/v2/PUBLIC/CategoryThumbs/Clipart', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cmeFontStoreRoot () {\r\n return { Name: '/designer/v2/PUBLIC/Standard', Owned: false, Shared: true, Type: 'Font' };\r\n }\r\n\r\n static cmeMonogramFontsStoreRoot () {\r\n return { Name: '/designer/PRIVATE/Monogram/**', Owned: false, Shared: true, Type: 'Font' };\r\n }\r\n\r\n static cmeMyFilesStoreRoot () {\r\n return { Owned: true, Shared: false, Type: 'Doc' };\r\n }\r\n\r\n static cmeTemplateStoreRoot () {\r\n return { Name: '/v2/PUBLIC/Templates/**', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static cmeTemplateTagsStoreRoot () {\r\n return { Name: '/v2/PUBLIC/Templates', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static textEffectsStoreRoot () {\r\n return { Name: Tag.getRoot() + '/text effects', Owned: false, Shared: true, Type: 'Doc' };\r\n }\r\n\r\n static txEffectsStoreRoot () {\r\n var root = Tag.getTxRoot();\r\n\r\n return [\r\n { Name: root + '/effects/outline', Owned: false, Shared: true, Type: 'Doc' },\r\n { Name: root + '/effects/shadow', Owned: false, Shared: true, Type: 'Doc' },\r\n { Name: root + '/effects/combo', Owned: false, Shared: true, Type: 'Doc' },\r\n { Name: root + '/effects/shape2', Owned: false, Shared: true, Type: 'Doc' },\r\n { Name: root + '/effects/arch2', Owned: false, Shared: true, Type: 'Doc' },\r\n { Name: root + '/effects/bookend2', Owned: false, Shared: true, Type: 'Doc' },\r\n { Name: root + '/effects/circle text2', Owned: false, Shared: true, Type: 'Doc' },\r\n { Name: root + '/effects/direction2', Owned: false, Shared: true, Type: 'Doc' },\r\n { Name: root + '/effects/slant2', Owned: false, Shared: true, Type: 'Doc' }\r\n ];\r\n }\r\n\r\n static txSavedLayoutsRoot () {\r\n return { Name: Tag.getTxRoot() + '/saved layouts', Owned: true, Shared: false, Type: 'Doc' };\r\n }\r\n\r\n static txOrdersRoot () {\r\n return { Name: 'tx/orders', Owned: true, Shared: false, Type: 'Doc' };\r\n }\r\n\r\n /**\r\n * @param {Object/Object[]} a A tag.\r\n * @param {Object/Object[]} b A tag.\r\n */\r\n static areEqual (a, b) { \r\n a = Array.isArray(a) ? a : [a];\r\n b = Array.isArray(b) ? b : [b];\r\n \r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n \r\n for (var i = 0, len = a.length; i < len; i++) {\r\n if (!b[i]) {\r\n return false;\r\n }\r\n \r\n if (!(a[i].Name === b[i].Name && a[i].Owned === b[i].Owned && a[i].Shared === b[i].Shared)) {\r\n return false;\r\n }\r\n }\r\n \r\n return true;\r\n }\r\n\r\n /**\r\n * @param {String/Object} tag\r\n */\r\n static getDisplayName (tag) {\r\n if (!tag) {\r\n return '';\r\n }\r\n\r\n var name = typeof tag === 'string' ? tag : tag.Name,\r\n split = name.split('/');\r\n\r\n name = split.length > 1 ? split[split.length - 1] : name;\r\n return name.charAt(0).toUpperCase() + name.slice(1);\r\n }\r\n\r\n /**\r\n * @param {String/Object} tag\r\n */\r\n // static getPath (tag) {\r\n // if (Ext.isEmpty(tag)) {\r\n // return '';\r\n // }\r\n\r\n // var name = (Ext.isString(tag) ? tag : tag.Name).replace(Tag.getRoot(), ''),\r\n // path = [];\r\n\r\n // Ext.Array.each(name.split('/'), function (item) {\r\n // path.push(Ext.util.Format.capitalize(item));\r\n // });\r\n\r\n // return path.join('/').replace('/**', '');\r\n // }\r\n}","import Brush from './Brush.js';\r\nimport Color from './Color.js';\r\nimport Meta from './Meta.js';\r\n\r\nexport default class Figure {\r\n\r\n /**\r\n * @param {Cx.Figure[]} target\r\n * @param {Number} v\r\n */\r\n static setCharSpacing (figure, v) {\r\n figure.extraCharSpacing = v;\r\n figure.extraWordSpacing = v;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} target\r\n */\r\n static getCharSpacing (figure) {\r\n return figure.extraCharSpacing;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} target\r\n * @param {Boolean} ignoreShowThrough\r\n */\r\n static areColorsEqual (target, ignoreShowThrough) {\r\n var zones = Color.uniqueColorZones(target, undefined, ignoreShowThrough);\r\n return zones.length === 1;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} target\r\n */\r\n static areBrushesEqual (target) {\r\n var zones = Brush.uniqueBrushZones(target);\r\n return zones.length === 1;\r\n }\r\n\r\n /**\r\n * Grouped figures must have the same brush.\r\n * @param {Cx.Figure} figure A grouped figure.\r\n */\r\n static enforceGroupBrush (figure) {\r\n var zone, zones;\r\n\r\n if (figure.isGrouped) {\r\n zones = Brush.uniqueBrushZones(figure.topFigure.figures);\r\n zone = zones[0];\r\n Brush.setBrush(figure, zone.value);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static hasProxyGroup (figures) {\r\n figures = Figure.ignoreGroups(figures);\r\n figures = Figure.ignorePowerClips(figures);\r\n\r\n var len = figures.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (figures[i].isProxyGroup) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Figure[]} figures\r\n * @param {Cx.Figure[]} list Internal use only.\r\n */\r\n static ignoreGroups (figures, list) {\r\n if (list === undefined) {\r\n list = [];\r\n }\r\n\r\n figures.forEach(function (f) {\r\n if (f.isGroup) {\r\n Figure.ignoreGroups(f.figures, list);\r\n } else {\r\n list.push(f);\r\n }\r\n });\r\n\r\n return list;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Figure[]} figures\r\n * @param {Cx.Figure[]} list Internal use only.\r\n */\r\n static ignorePowerClips (figures, list) {\r\n if (list === undefined) {\r\n list = [];\r\n }\r\n\r\n figures.forEach(function (f) {\r\n if (f.canEditContent()) {\r\n var pcc = f.deepPowerClipContents();\r\n pcc.forEach(function (item) {\r\n Figure.ignorePowerClips(item.figures, list);\r\n });\r\n } else {\r\n list.push(f);\r\n }\r\n });\r\n\r\n return list;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} target\r\n */\r\n static areFontsEqual (target) {\r\n var font = target[0].font,\r\n len = target.length,\r\n i = 1;\r\n\r\n for (; i < len; i++) {\r\n if (!Cx.areEqual(font, target[i].font)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} target\r\n */\r\n static inSameLayer (target) {\r\n var len = target.length,\r\n i = 1;\r\n\r\n for (; i < len; i++) {\r\n if (!Figure.inLayer(target[i], target[0].layer)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n * @param {Cx.Layer} layer\r\n */\r\n static inLayer (figure, layer) {\r\n var fs = layer.figures,\r\n len = fs.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (fs[i]._localId === figure._localId) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} target\r\n */\r\n static canAddContents (target) {\r\n if (target.length < 2 ) {\r\n return false;\r\n }\r\n\r\n var f = target[0];\r\n return ( f instanceof Cx.Text && ! f.isMultiPart ) || ( f instanceof Cx.Shape );\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} target\r\n */\r\n static canExtractContents (target) {\r\n return target.length === 1 ? ! target[0]._powerClipContents.isEmpty : false;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n */\r\n static canEditText (figure) {\r\n return figure.isText && !figure.isMultiPart;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n * @param {Number} v\r\n */\r\n static setMaxWidth$ (figure, v) {\r\n var effect = Figure.findConstrainEffect(figure);\r\n\r\n if (effect) {\r\n if (v === 0) {\r\n return figure.modifyKeeping$('center', function () {\r\n figure.processes.remove(effect);\r\n });\r\n } else {\r\n effect.maxWidth = v;\r\n return Cx.resolve();\r\n }\r\n }\r\n\r\n else {\r\n return figure.modifyKeeping$('center', function () {\r\n figure.processes.add(Cx.Process.Constrain({\r\n hFit: 'Contained',\r\n isometric: false,\r\n maxWidth: v,\r\n vFit: 'Contained'\r\n }));\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n */\r\n static getMaxWidth (figure) {\r\n var effect = Figure.findConstrainEffect(figure);\r\n return effect ? effect.maxWidth : 0;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n */\r\n static findConstrainEffect (figure) {\r\n return figure.processes.find(function (p) {\r\n return p.type === 'Constrain';\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n */\r\n static isMonogram (figure) {\r\n return figure.type === 'Monogram';\r\n }\r\n\r\n //\r\n // SIZE HELPER\r\n //\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static bounds$ (figures) {\r\n if (Meta.areCme(figures)) {\r\n return Cx.materialBounds$(figures);\r\n } else {\r\n return Cx.bounds$(figures);\r\n }\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static bounds_ (figures) {\r\n return Meta.areCme(figures) ? Cx.materialBounds_(figures) : Cx.bounds_(figures);\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n * @param {Object} config\r\n */\r\n static setSize$ (figures, config) {\r\n if (Meta.areCme(figures)) {\r\n config.boundsType = 'material';\r\n }\r\n\r\n return Cx.setSize$(figures, config);\r\n }\r\n\r\n /**\r\n * When figures are inside a group their bounds never changes.\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static getSize (figures) {\r\n var list = [],\r\n bounds;\r\n\r\n figures.forEach(function (f) {\r\n var o = f.isGrouped ? f.topFigure : undefined;\r\n\r\n if (o) {\r\n if (list.indexOf(o) == -1) {\r\n list.push(o);\r\n }\r\n } else {\r\n list.push(f);\r\n }\r\n });\r\n\r\n bounds = Figure.bounds_(list);\r\n\r\n return {\r\n height: bounds.height,\r\n width: bounds.width\r\n };\r\n }\r\n\r\n //\r\n // HELPER TO DETERMINE TEXT DOUBLE CLICKED ON WITHIN GROUP\r\n //\r\n\r\n /**\r\n * Returns the top text figure at the point inside of the group.\r\n * @param {Cx.Figure} figure A group figure.\r\n * @param {Cx.Point} docPoint\r\n */\r\n static textAtPoint (figure, docPoint) {\r\n var fs = figure.figures,\r\n i = fs.length - 1,\r\n f;\r\n\r\n for (; i > -1; i--) {\r\n f = fs[i];\r\n\r\n if (f.isGroup) {\r\n f = Figure.textAtPoint(f, docPoint);\r\n\r\n if (f) {\r\n return f;\r\n }\r\n }\r\n\r\n else if (Figure.canEditText(f) && f.globalBounds_().contains(docPoint)) {\r\n return f;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n}\r\n","export default class Querystring {\r\n\r\n /**\r\n * Commerce API\r\n */\r\n static apiEndpoint () {\r\n return Cx.getQueryValue('app.apiEndpoint');\r\n }\r\n\r\n /**\r\n * Commerce API\r\n */\r\n static apiKey () {\r\n return Cx.getQueryValue('app.apiKey');\r\n }\r\n\r\n /**\r\n * Commerce API\r\n */\r\n static backendEndpoint () {\r\n return Cx.getQueryValue('app.backendEndpoint');\r\n }\r\n\r\n /**\r\n * Commerce API\r\n */\r\n static defaultFontLibrary () {\r\n return Cx.getQueryValue('app.defaultFontLibrary');\r\n }\r\n\r\n /**\r\n * Cadworxlive\r\n */\r\n static cadworxliveToken () {\r\n return Cx.getQueryValue('app.cadworxliveToken');\r\n }\r\n\r\n /**\r\n * CME\r\n */\r\n static stahlsShopperId () {\r\n return Cx.getQueryValue('app.stahlsShopperId');\r\n }\r\n\r\n /**\r\n * Transfer Express\r\n */\r\n static transferExpressToken () {\r\n return Cx.getQueryValue('app.transferExpressToken');\r\n }\r\n\r\n /**\r\n * Commerce API\r\n */\r\n static trustedSource () {\r\n return Cx.getQueryValue('trustedSource');\r\n }\r\n\r\n /**\r\n * Create from document?\r\n */\r\n static docId () {\r\n return Cx.getQueryValue('app.docId');\r\n }\r\n\r\n /**\r\n * Edit product.\r\n */\r\n static productId () {\r\n return Cx.getQueryValue('app.productId') || undefined;\r\n }\r\n\r\n /**\r\n * Show the images associated with this view type on load and\r\n * whenever a different color is selected\r\n */\r\n static mainViewType () {\r\n return Cx.getQueryValue('app.mainViewType') || undefined;\r\n }\r\n\r\n static hideViewDropDown () {\r\n return Cx.getQueryValue('app.hideViewDropDown') === 'true'\r\n }\r\n\r\n /**\r\n * Allow touch interaction with the canvas \r\n */\r\n static canvasTouchEnabled () {\r\n return Cx.getQueryValue('app.canvasTouchEnabled') === 'true'\r\n }\r\n\r\n /**\r\n * Initial variant to select.\r\n */\r\n static variantId () {\r\n return Cx.getQueryValue('app.variantId') || undefined;\r\n }\r\n\r\n /**\r\n * If set, use that designer rules instead of product's customization rules.\r\n */\r\n static customizationId () {\r\n return Cx.getQueryValue('app.customizationId');\r\n }\r\n\r\n /**\r\n * Edit order.\r\n */\r\n static backgroundDocId () {\r\n return Cx.getQueryValue('app.backgroundDoc');\r\n }\r\n\r\n /**\r\n * Edit order.\r\n */\r\n static designDocId () {\r\n return Cx.getQueryValue('app.designDoc');\r\n }\r\n\r\n static isBackEnd () {\r\n return Querystring.isFrontEnd() ? false : true;\r\n }\r\n\r\n static isFrontEnd () {\r\n return Cx.getQueryValue('app.frontEnd') === 'true';\r\n }\r\n\r\n}\r\n","import Querystring from './util/Querystring.js';\r\n\r\nexport default class Rules {\r\n\r\n static code () {\r\n var product = Application.product();\r\n return product ? product.code : '';\r\n }\r\n\r\n static allowAllHexColors () {\r\n var product = Application.product();\r\n return product ? product.allowAllHexColors : true;\r\n }\r\n\r\n static allowDraw () {\r\n // Allow draw tools?\r\n var product = Application.product();\r\n return product ? product.allowDraw : true;\r\n }\r\n\r\n static allowDrawShape () {\r\n // Allow draw shape tool?\r\n var product = Application.product();\r\n return product ? product.allowShape : true;\r\n }\r\n\r\n static allowEditTextDirection () {\r\n var product = Application.product();\r\n return product ? product.allowEditTextDirection : true;\r\n }\r\n\r\n static allowEditTextPen () {\r\n var product = Application.product();\r\n return product ? product.allowEditTextPen : true;\r\n }\r\n\r\n static allowEditTextSpacing () {\r\n var product = Application.product();\r\n return product ? product.allowEditTextSpacing : true;\r\n }\r\n\r\n static allowPositionFigures () {\r\n var product = Application.product();\r\n return product ? product.allowPositionFigures : true;\r\n }\r\n\r\n static allowPricing () {\r\n return false; // Used to be based on Rules.modeIsCme();\r\n }\r\n\r\n static allowModifyDesign () {\r\n var product = Application.product();\r\n return product ? product.frontendAllowModifyDesign : false;\r\n }\r\n\r\n static autoHideBottomToolbar () {\r\n var product = Application.product();\r\n return product ? product.frontEndAutoHideBottomToolbar : false;\r\n }\r\n\r\n static autoHideTopToolbar () {\r\n var product = Application.product();\r\n return product ? product.frontEndAutoHideTopToolbar : false;\r\n }\r\n\r\n static canAddEffect () {\r\n return true;\r\n }\r\n\r\n static canChangeAspectRatio () {\r\n var product = Application.product();\r\n return product ? product.allowChangeableAspectRatio : true;\r\n }\r\n\r\n /**\r\n * Create design from document.\r\n */\r\n static canCreate () {\r\n return Querystring.docId() ? true : false;\r\n }\r\n\r\n /**\r\n * Store owner or customer is designing.\r\n */\r\n static canDesign () {\r\n var product = Application.product();\r\n\r\n return (\r\n product &&\r\n product.backgroundDocId &&\r\n product.designDocId\r\n ) ? true : false;\r\n }\r\n\r\n /**\r\n * Store owner is editing a customer order.\r\n */\r\n static canEditOrder () {\r\n var product = Application.product(),\r\n query = Querystring;\r\n\r\n return (\r\n query.isBackEnd() &&\r\n product &&\r\n query.backgroundDocId() &&\r\n query.designDocId()\r\n ) ? true : false;\r\n }\r\n\r\n /**\r\n * Need to be able to show the design to customer in the frontend for quotes.\r\n */\r\n static canShowCustomerQuote () {\r\n var query = Querystring;\r\n\r\n return (\r\n query.isFrontEnd() &&\r\n query.backgroundDocId() &&\r\n query.designDocId()\r\n ) ? true : false;\r\n }\r\n\r\n /**\r\n * Returns {Number} if there is a 'maxColors' defined, otherwise returns {undefined}.\r\n */\r\n static maxColorsPerPage () {\r\n var product = Application.product(),\r\n hasMax = product ? product.hasMaxColors : false,\r\n max = hasMax ? product.maxColors : undefined;\r\n\r\n return max;\r\n }\r\n\r\n static showObjectMenu () {\r\n var product = Application.product();\r\n return product ? product.showObjectMenu : true;\r\n }\r\n\r\n static showTopToolbar () {\r\n var product = Application.product();\r\n return product ? product.frontEndShowTopToolbar : false;\r\n }\r\n\r\n}\r\n","import CadworxAPI from './CadworxAPI.js';\r\nimport ExternalAPI from './ExternalAPI.js';\r\nimport Querystring from '../util/Querystring.js';\r\n\r\nexport default class TransferExpressAPI {\r\n\r\n /**\r\n * Private.\r\n */\r\n static _config () {\r\n return 'TX';\r\n }\r\n\r\n /**\r\n * Private.\r\n * Falls back to the default when user has no account.\r\n */\r\n static _sessionId () {\r\n var me = TransferExpressAPI;\r\n return me._userSessionId() || me._defaultSessionId();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _defaultSessionId () {\r\n return 'ad48e578-89a7-46dc-8e0f-864829a2d4ee';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _userSessionId () {\r\n return Querystring.transferExpressToken();\r\n }\r\n\r\n //\r\n // CHECK SESSION SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n */\r\n static hasUserSession () {\r\n return TransferExpressAPI._userSessionId() ? true : false;\r\n }\r\n\r\n //\r\n // TAG SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {String} name\r\n */\r\n static getClipArtTags (name) {\r\n var lowercaseName = name.toLowerCase(),\r\n tag = lowercaseName.startsWith('cca') ? 'cca' : lowercaseName.charAt(0);\r\n\r\n return [{ Name: '/tx/production/' + tag }]; // cca, x or w\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} name\r\n */\r\n static getTemplateTags (name) {\r\n var lowercaseName = name.toLowerCase(),\r\n tag = lowercaseName.startsWith('3d') ? '3d' : 'qq';\r\n\r\n return [{ 'Name':'/tx/production/' + tag }]; // 3d or qq\r\n }\r\n\r\n //\r\n // THUMBNAIL SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {Object} name\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static getClipArtThumb (name, options) {\r\n var me = TransferExpressAPI,\r\n tags = me.getClipArtTags(name);\r\n\r\n return me._getDocThumb(name, tags, options);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n * @param {Object} options\r\n */\r\n static getEffectThumb (id, options) {\r\n var url = TransferExpressAPI._getCdnUrl({\r\n path: Cx.Core.Document.Url.Thumbnail,\r\n requestModel: {\r\n Doc: { Id: id },\r\n Height: options.height,\r\n Width: options.width,\r\n Format: 'png'\r\n }\r\n });\r\n\r\n // Fails with '/Cdn'\r\n return url.replace(/\\/Cdn/gi, '');\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n * @param {Object} options\r\n */\r\n static getMyFileThumb (id, options) {\r\n return TransferExpressAPI._getCdnUrl({\r\n path: 'TX/Thumbnail',\r\n requestModel: {\r\n Doc: {\r\n Id: id\r\n },\r\n Background: 'BackgroundColorOnly',\r\n Height: options.height,\r\n Width: options.width,\r\n Format: 'png'\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} name\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static getTemplateThumb (name, options) {\r\n var me = TransferExpressAPI,\r\n tags = me.getTemplateTags(name);\r\n\r\n return me._getDocThumb(name, tags, options);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} name\r\n * @param {Object[]} tags\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static _getDocThumb (name, tags, options) {\r\n var year = new Date().getFullYear() + '';\r\n\r\n return TransferExpressAPI._getCdnUrl({\r\n path: 'TX/Thumbnail',\r\n requestModel: {\r\n Doc: {\r\n Name: name,\r\n Tags: tags\r\n },\r\n Height: options.height,\r\n Width: options.width,\r\n Format: 'png',\r\n TX: { SetCurrentYear: year }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @param {Object} data The font data.\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static getFontThumb (data, options) {\r\n var font = data.Font,\r\n text = (options.text || font.name).replace(/[\"'()]/g, \"\"); // Quotes and parenthesis break the thumbnail\r\n\r\n return TransferExpressAPI._getCdnUrl({\r\n path: 'TX/FontThumbnail',\r\n requestModel: {\r\n Color: options.color || 'F0F0F0',\r\n Font: {\r\n FamilyName: font.familyName,\r\n Weight: font.weight\r\n },\r\n Text: text,\r\n Height: options.height,\r\n Width: options.width\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} config\r\n */\r\n static _getCdnUrl (config) {\r\n var me = TransferExpressAPI,\r\n databaseConfig = me._config(),\r\n sessionId = me._sessionId();\r\n\r\n return CadworxAPI.cdnGetUrl(databaseConfig, sessionId, config);\r\n }\r\n\r\n //\r\n // FONT SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * Retrieve fonts from Transfer Express.\r\n * We do not get a font 'Id'.\r\n */\r\n static loadFonts$ () {\r\n var url = Cx.Network.getProtocol() + '//webservices-prod.transferexpress.com/webservices/Layout.svc/FontList',\r\n options = {\r\n contentType: 'application/json; charset=utf-8',\r\n data: Cx.encode({ myJSONdata: {} }),\r\n dataType: 'json',\r\n type: 'POST',\r\n url: url\r\n };\r\n\r\n return ExternalAPI.request$(options);\r\n }\r\n\r\n /**\r\n * Public.\r\n * 1. Get a proper 'FontModel', we do not get one from Transfer Express.\r\n * 2. Move the font resource.\r\n * \r\n * @param {String} familyName\r\n * @param {Number} weight\r\n */\r\n static font$ (familyName, weight) {\r\n var me = TransferExpressAPI,\r\n requestModel = {\r\n FamilyName: familyName,\r\n Weight: weight\r\n },\r\n url = 'TX/Font';\r\n\r\n return me._request$(url, requestModel, 'GET').then(function (fontModel) {\r\n var font = Cx.Font.fromCore(fontModel);\r\n\r\n return me._moveFont$(font).then(function () {\r\n return Cx.resolve(font);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Cx.Font} font\r\n */\r\n static _moveFont$ (font) {\r\n var me = TransferExpressAPI,\r\n config = me._config(),\r\n sessionId = me._sessionId();\r\n\r\n return CadworxAPI.moveFont$(config, sessionId, font);\r\n }\r\n\r\n //\r\n // CATEGORY SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n */\r\n static loadClipArtCategories$ () {\r\n var url = Cx.Network.getProtocol() + '//webservices-prod.transferexpress.com/webservices/Clipart.svc/CategoryList';\r\n return TransferExpressAPI._loadCategories$(url);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static loadLayoutCategories$ () {\r\n var url = Cx.Network.getProtocol() + '//webservices-prod.transferexpress.com/webservices/Layout.svc/CategoryList';\r\n return TransferExpressAPI._loadCategories$(url);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _loadCategories$ (url) {\r\n var options = {\r\n contentType: 'application/json; charset=utf-8',\r\n data: Cx.encode({ myJSONdata: {} }),\r\n dataType: 'json',\r\n type: 'POST',\r\n url: url\r\n };\r\n\r\n return ExternalAPI.request$(options).then(function (response) {\r\n var list = [];\r\n TransferExpressAPI._parseCategories(list, undefined, response.SubCategories);\r\n return Cx.resolve({ Items: list });\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object[]} list\r\n * @param {String} parentName\r\n * @param {Object[]} subCategories\r\n */\r\n static _parseCategories (list, parentName, subCategories) {\r\n subCategories.forEach(function (item) {\r\n var name = item.CategoryName;\r\n name = parentName ? parentName + ' - ' + name : name;\r\n\r\n list.push({\r\n Id: item.DeptID,\r\n Name: name\r\n });\r\n\r\n if (item.SubCategories) {\r\n TransferExpressAPI._parseCategories(list, name, item.SubCategories);\r\n }\r\n });\r\n }\r\n\r\n //\r\n // COLOR SUPPORT\r\n //\r\n\r\n /**\r\n * Colors depend on PrintMethod and TransferType.\r\n */\r\n static loadProductTypes$ () {\r\n var url = Cx.Network.getProtocol() + '//webservices-prod.transferexpress.com/webservices/TransferTypes.svc/ProductTypes',\r\n searchOptions = {};\r\n\r\n return TransferExpressAPI._load$(url, searchOptions).then(function (response) {\r\n var items = response.ProductTypes,\r\n len = items ? items.length : 0,\r\n i = 0,\r\n printMethod = {},\r\n transferType = {},\r\n data = [],\r\n item, pmIsSubstrate, pmName, pmType, transferTypeName;\r\n\r\n for (; i < len; i++) {\r\n item = items[i];\r\n pmName = item.DesignerPrintMethodName;\r\n pmType = item.DesignerPrintMethodType;\r\n pmIsSubstrate = (pmType == 'Material' || pmType == 'Substrate') ? true : false;\r\n transferTypeName = item.ExternalName;\r\n\r\n if (!printMethod[pmName]) {\r\n printMethod[pmName] = {\r\n IsDefault: item.PrintMethodIsDefault == 'Y' ? true : false,\r\n IsSubstrate: pmIsSubstrate,\r\n Name: pmName\r\n };\r\n }\r\n\r\n if (!transferType[transferTypeName]) {\r\n transferType[transferTypeName] = {\r\n IsDefault: item.PrintMethodDefault == 'Y' ? true : false,\r\n IsSubstrate: pmIsSubstrate,\r\n Name: transferTypeName\r\n };\r\n\r\n if (!printMethod[pmName].TransferTypes) {\r\n printMethod[pmName].TransferTypes = [];\r\n }\r\n \r\n printMethod[pmName].TransferTypes.push(transferType[transferTypeName]);\r\n }\r\n }\r\n\r\n for (pmName in printMethod) {\r\n data.push(printMethod[pmName]);\r\n }\r\n\r\n return Cx.resolve({ Items: data });\r\n });\r\n }\r\n\r\n static loadColors$ (searchOptions) {\r\n searchOptions = searchOptions || { TransferType: 'Goof Proof', Substrate: '' };\r\n\r\n var url = Cx.Network.getProtocol() + '//webservices-prod.transferexpress.com/webservices/Colors.svc/TransferType';\r\n\r\n return TransferExpressAPI._load$(url, searchOptions).then(function (response) {\r\n var colors = response.Colors,\r\n len = colors.length,\r\n i = 0,\r\n filtered = [],\r\n colorName;\r\n\r\n for (; i < len; i++) {\r\n colorName = colors[i].ColorName;\r\n\r\n if (colorName == 'Various' || colorName == 'CLEAR' || colorName == 'SL Blocker') {\r\n continue;\r\n }\r\n\r\n filtered.push(colors[i]);\r\n }\r\n\r\n filtered.sort(function (a, b) {\r\n return a.ColorGroupName < b.ColorGroupName ? -1 : 1;\r\n });\r\n\r\n return Cx.resolve({ Items: filtered });\r\n });\r\n }\r\n\r\n //\r\n // CLIPART SUPPORT\r\n //\r\n\r\n static searchClipArts$ (searchOptions) {\r\n var me = TransferExpressAPI;\r\n\r\n if (searchOptions.Keyword) {\r\n return me._searchClipArts$(searchOptions);\r\n } else {\r\n return me._loadClipArts$(searchOptions);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _loadClipArts$ (searchOptions) {\r\n var url = Cx.Network.getProtocol() + '//webservices-prod.transferexpress.com/webservices/Clipart.svc/CategoryContents';\r\n\r\n return TransferExpressAPI._load$(url, searchOptions).then(function (response) {\r\n var cliparts = response.Cliparts || [],\r\n items = [];\r\n\r\n cliparts.forEach(function (data) {\r\n items.push({ Id: data.ClipartID, Name: data.ClipartName });\r\n });\r\n\r\n return Cx.resolve({\r\n Items: items,\r\n TotalCount: response.TotalOnServer\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _searchClipArts$ (searchOptions) {\r\n var url = Cx.Network.getProtocol() + '//transferexpress.com/api/assets/cliparts/search/';\r\n\r\n return TransferExpressAPI._search$(url, searchOptions).then(function (response) {\r\n var cliparts = response.cliparts || [],\r\n items = [];\r\n\r\n cliparts.forEach(function (data) {\r\n items.push({ Id: data.id, Name: data.name });\r\n });\r\n\r\n return Cx.resolve({\r\n Items: items,\r\n TotalCount: response.meta.pagination.total_count\r\n });\r\n });\r\n }\r\n\r\n //\r\n // LAYOUT SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n */\r\n static searchLayouts$ (searchOptions) {\r\n var me = TransferExpressAPI;\r\n\r\n if (searchOptions.Keyword) {\r\n return me._searchLayouts$(searchOptions);\r\n } else {\r\n return me._loadLayouts$(searchOptions);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _loadLayouts$ (searchOptions) {\r\n var url = Cx.Network.getProtocol() + '//webservices-prod.transferexpress.com/webservices/Layout.svc/CategoryContents';\r\n\r\n return TransferExpressAPI._load$(url, searchOptions).then(function (response) {\r\n var layouts = response.Layouts || [],\r\n items = [];\r\n\r\n layouts.forEach(function (data) {\r\n items.push({ Id: data.LayoutID, Name: data.LayoutName });\r\n });\r\n\r\n return Cx.resolve({\r\n Items: items,\r\n TotalCount: response.TotalOnServer\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _load$ (url, searchOptions) {\r\n var options = {\r\n contentType: 'application/json; charset=utf-8',\r\n data: Cx.encode({ myJSONdata: Cx.encode(searchOptions) }),\r\n dataType: 'json',\r\n type: 'POST',\r\n url: url\r\n };\r\n\r\n return ExternalAPI.request$(options);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _searchLayouts$ (searchOptions) {\r\n var url = Cx.Network.getProtocol() + '//transferexpress.com/api/assets/layouts/search/';\r\n\r\n return TransferExpressAPI._search$(url, searchOptions).then(function (response) {\r\n var layouts = response.layouts || [],\r\n items = [];\r\n\r\n layouts.forEach(function (data) {\r\n items.push({ Id: data.id, Name: data.name });\r\n });\r\n\r\n return Cx.resolve({\r\n Items: items,\r\n TotalCount: response.meta.pagination.total_count\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _search$ (url, searchOptions) {\r\n var page = searchOptions.Start + 1,\r\n limit = searchOptions.Limit,\r\n sort = searchOptions.Sort,\r\n text = searchOptions.Keyword,\r\n options = {\r\n contentType: 'application/json; charset=utf-8',\r\n data: 'page=' + page + '&per_page=' + limit + '&sort=' + sort,\r\n dataType: 'json',\r\n type: 'GET',\r\n url: url + text\r\n };\r\n\r\n return ExternalAPI.request$(options);\r\n }\r\n\r\n //\r\n // DOC SEARCH SUPPORT\r\n //\r\n\r\n static searchDocs$ (requestModel) {\r\n var me = TransferExpressAPI,\r\n databaseConfig = me._config(),\r\n method = 'POST',\r\n sessionId = me._sessionId(),\r\n url = Cx.Core.Document.Url.Search;\r\n\r\n return CadworxAPI.request$(databaseConfig, sessionId, url, requestModel, method);\r\n }\r\n\r\n //\r\n // LOAD SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * Loads the document and moves any font and raster resources.\r\n * @param {String} name\r\n * @param {Object} options\r\n */\r\n static loadClipArt$ (name, options) {\r\n var me = TransferExpressAPI,\r\n tags = me.getClipArtTags(name),\r\n requestModel = { Name: name, Tags: tags };\r\n\r\n return me._loadDoc$(requestModel, options);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n */\r\n static loadEffect$ (id) {\r\n var me = TransferExpressAPI,\r\n requestModel = { Id: id };\r\n\r\n return me._loadDoc$(requestModel);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n */\r\n static loadMyFileDoc$ (id) {\r\n var me = TransferExpressAPI,\r\n requestModel = { Id: id };\r\n\r\n return me._loadDoc$(requestModel);\r\n }\r\n\r\n /**\r\n * Public.\r\n * Loads the document and moves any font and raster resources.\r\n * @param {String} name\r\n * @param {Object} options\r\n */\r\n static loadTemplate$ (name, options) {\r\n var me = TransferExpressAPI,\r\n tags = me.getTemplateTags(name),\r\n requestModel = { Name: name, Tags: tags };\r\n\r\n return me._loadDoc$(requestModel, options);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Loads the document and moves any font and raster resources.\r\n * @param {Object} requestModel\r\n * @param {Object} options\r\n */\r\n static _loadDoc$ (requestModel, options) {\r\n var url = 'TX/DocRead';\r\n\r\n return TransferExpressAPI._request$(url, requestModel, 'POST', null, options).then(function (docModel) {\r\n var databaseConfig = TransferExpressAPI._config(),\r\n sessionId = TransferExpressAPI._sessionId(),\r\n doc = Cx.Document.fromCore(docModel),\r\n figures = doc.figures;\r\n\r\n return CadworxAPI.moveFigures$(databaseConfig, sessionId, figures).then(function () {\r\n return Cx.resolve(doc);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Use to make all Transfer Express requests.\r\n */\r\n static _request$ (url, requestModel, method, responseType, options) {\r\n var me = TransferExpressAPI,\r\n databaseConfig = me._config(),\r\n sessionId = me._sessionId();\r\n\r\n return CadworxAPI.request$(databaseConfig, sessionId, url, requestModel, method, responseType, options);\r\n }\r\n\r\n}\r\n","import Doc from '../helper/Doc.js';\r\nimport Querystring from '../util/Querystring.js';\r\nimport CadworxAPI from './CadworxAPI.js';\r\nimport ExternalAPI from './ExternalAPI.js';\r\n\r\nexport default class CmeAPI {\r\n\r\n /**\r\n * Private.\r\n */\r\n static _config () {\r\n return 'Stahls';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _defaultSessionId () {\r\n return '651c2e81-d885-42ff-ba96-b24e27183bb4';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _shopperId () {\r\n return Querystring.stahlsShopperId();\r\n }\r\n\r\n //\r\n // THUMBNAIL SUPPORT\r\n //\r\n\r\n /**\r\n * @param {Object} data The document data.\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static getDocThumb (data, options) {\r\n return CmeAPI._getCdnUrl({\r\n path: Cx.Core.Document.Url.Thumbnail,\r\n requestModel: Doc.buildThumbRequestModel(data, options)\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} data\r\n * @param {Object} options\r\n */\r\n static getFontThumb (data, options) {\r\n var font = data.Font,\r\n fontName = font.name.toLowerCase(),\r\n text = (options.text || font.name).replace(/[\"'()]/g, \"\"); // Quotes and parenthesis break the thumbnail\r\n\r\n // Number only font?\r\n if (fontName.indexOf('numbers') !== -1) {\r\n text = '1234567890';\r\n }\r\n\r\n return CmeAPI._getCdnUrl({\r\n path: Cx.Core.Font.Url.Thumbnail,\r\n requestModel: {\r\n color: options.color || 'F0F0F0',\r\n font: { id: font.id },\r\n format: 'png',\r\n height: options.height,\r\n text: text,\r\n width: options.width\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} config\r\n */\r\n static _getCdnUrl (config) {\r\n var databaseConfig = CmeAPI._config(),\r\n sessionId = CmeAPI._sessionId || CmeAPI._defaultSessionId();\r\n\r\n return CadworxAPI.getCdnUrl(databaseConfig, sessionId, config);\r\n }\r\n\r\n //\r\n // MATERIAL SUPPORT\r\n //\r\n\r\n static materials$ () {\r\n var url = 'https://api.stahls.com//materials',\r\n options = {\r\n contentType: 'application/json; charset=utf-8',\r\n data: 'designer=CMETemplate',\r\n dataType: 'json',\r\n type: 'GET',\r\n url: url\r\n };\r\n\r\n return ExternalAPI.request$(options).then(function (response) {\r\n response.sort(function (a, b) {\r\n return a.materialDescription < b.materialDescription ? -1 : 1;\r\n });\r\n\r\n return Cx.resolve({\r\n Items: response\r\n });\r\n });\r\n }\r\n\r\n //\r\n // SEARCH SUPPORT\r\n //\r\n\r\n /**\r\n * @param {Object} searchModel\r\n * @param {Object} [options]\r\n */\r\n static searchDocuments$ (searchModel, options) {\r\n return CmeAPI._request$(Cx.Core.Document.Url.Search, searchModel, 'GET', null, options);\r\n }\r\n\r\n /**\r\n * @param {Object} searchModel\r\n * @param {Object} [options]\r\n */\r\n static searchFonts$ (searchModel, options) {\r\n return CmeAPI._loadFontConfig$().then(function (fonts) {\r\n return CmeAPI._request$(Cx.Core.Font.Url.Search, searchModel, 'GET', null, options).then(function (response) {\r\n var items = response.Items;\r\n\r\n items.forEach(function (item) {\r\n CmeAPI._populateFontDisplayName(item, fonts);\r\n });\r\n\r\n // Sort on display name\r\n items.sort(function (a, b) {\r\n return a.DisplayName < b.DisplayName ? -1 : 1;\r\n });\r\n\r\n return response;\r\n });\r\n });\r\n }\r\n\r\n static _loadFontConfig$ () {\r\n var requestModel = { Id: 'a75016bf-5301-4db8-9550-5c73781e3ef7' },\r\n url = Cx.Core.Config.Url.Read;\r\n\r\n return CmeAPI._request$(url, requestModel, 'GET').then(function (configModel) {\r\n var data = JSON.parse(configModel.Data);\r\n return Cx.resolve(data.fonts);\r\n });\r\n }\r\n\r\n static _populateFontDisplayName (item, fontsConfig) {\r\n var lookup = CmeAPI._fontNameLookup,\r\n fullName = item.FullName,\r\n config = fontsConfig.find(function (c) { return c.name === fullName; }),\r\n displayName = config ? config.displayName : fullName;\r\n\r\n if (!lookup) {\r\n lookup = CmeAPI._fontNameLookup = {};\r\n }\r\n\r\n lookup[fullName] = displayName;\r\n item.DisplayName = displayName.split('(')[0].trim();\r\n\r\n return item;\r\n }\r\n\r\n /**\r\n * @param {Cx.Font} font\r\n */\r\n static findFontDisplayName (font) {\r\n var lookup = CmeAPI._fontNameLookup || {};\r\n return lookup[font.fullName];\r\n }\r\n\r\n /**\r\n * @param {Object} searchModel\r\n * @param {Object} [options]\r\n */\r\n static searchTags$ (searchModel, options) {\r\n return CmeAPI._request$(Cx.Core.Tag.Url.Search, searchModel, 'GET', null, options);\r\n }\r\n\r\n /**\r\n * @return {Object} textures A texture lookup object.\r\n * {'Glitter Flake': { Aqua: '81f769d6-e210-4d82-b8c3-458f69246191', ... }, ... }\r\n */\r\n static searchTextures$ () {\r\n var tagName = '/PUBLIC/Textures',\r\n searchModel = {\r\n Match: { Archived: false, Hidden: false, Owned: false, Shared: true, Type: 'Doc' },\r\n Text: tagName\r\n };\r\n\r\n return CmeAPI.searchTags$(searchModel).then(function (response) {\r\n var textures = {},\r\n materials = [];\r\n\r\n // ex: ['Glitter Flake', 'Hologram']\r\n response.forEach(function (item) {\r\n var name = item.Name.split('/')[3];\r\n if (name) { materials.push(name); }\r\n });\r\n\r\n return Cx.whenEach(materials, function (material) {\r\n var tags = [{ Name: tagName + '/' + material }],\r\n model = { Match: { Archived: false, Owned: false, Shared: true, Tags: tags } };\r\n\r\n return CmeAPI.searchDocuments$(model).then(function (items) {\r\n var colors = {};\r\n\r\n items.Items.forEach(function (item) {\r\n colors[item.Name] = item.Id;\r\n });\r\n\r\n textures[material] = colors;\r\n });\r\n }).then(function () {\r\n return textures;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * @param {String} id The document id.\r\n */\r\n static loadTexture$ (id) {\r\n var me = CmeAPI;\r\n\r\n return me.loadDoc$(id).then(function (texture) {\r\n return me._getSessionId$().then(function (sessionId) {\r\n var brush = Cx.uniqueBrushZones(texture.figures)[0].value,\r\n databaseConfig = me._config();\r\n\r\n return CadworxAPI.moveTextureBrush$(databaseConfig, sessionId, brush).then(function () {\r\n return Cx.resolve(brush);\r\n });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} url\r\n * @param {Object} requestModel\r\n */\r\n static _request$ (url, requestModel, method, responseType, options) {\r\n return CmeAPI._getSessionId$().then(function (sessionId) {\r\n var databaseConfig = CmeAPI._config();\r\n return CadworxAPI.request$(databaseConfig, sessionId, url, requestModel, method, responseType, options);\r\n });\r\n }\r\n\r\n //\r\n // LOAD SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * Loads the CME document and moves any font and raster resources.\r\n * @param {*} id\r\n * @param {Object} options\r\n */\r\n static loadDoc$ (id, options) {\r\n return CmeAPI._getSessionId$().then(function (sessionId) {\r\n var requestModel = { Id: id },\r\n url = Cx.Core.Document.Url.Read;\r\n\r\n return CmeAPI._request$(url, requestModel, 'GET', null, options).then(function (docModel) {\r\n var databaseConfig = CmeAPI._config(),\r\n doc = Cx.Document.fromCore(docModel),\r\n figures = doc.figures;\r\n\r\n return CadworxAPI.moveFigures$(databaseConfig, sessionId, figures).then(function () {\r\n return Cx.resolve(doc);\r\n });\r\n });\r\n });\r\n }\r\n\r\n //\r\n // RESOURCE MOVE SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Font} font\r\n */\r\n static moveFont$ (font) {\r\n return CmeAPI._getSessionId$().then(function (sessionId) {\r\n var databaseConfig = CmeAPI._config();\r\n return CadworxAPI.moveFont$(databaseConfig, sessionId, font);\r\n });\r\n }\r\n\r\n //\r\n // SESSION SUPPORT\r\n //\r\n\r\n /**\r\n * Private.\r\n */\r\n static _getSessionId$ () {\r\n var sessionId = CmeAPI._sessionId;\r\n\r\n if (sessionId) {\r\n return Cx.resolve(sessionId);\r\n } else {\r\n return CmeAPI._doGetSessionId$();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * Initial user, this will be replaced by the session obtained by\r\n * external login during exectuion.\r\n */\r\n static _doGetSessionId$ () {\r\n var me = CmeAPI,\r\n initSessionId = me._defaultSessionId(),\r\n shopperId = me._shopperId(),\r\n databaseConfig, requestModel, url;\r\n\r\n if (!shopperId) {\r\n // Fall back to the default.\r\n // Frontend Designer will not get the shopperId.\r\n return Cx.resolve(initSessionId);\r\n }\r\n\r\n else {\r\n databaseConfig = me._config();\r\n url = 'Core2/User/ExternalLogin';\r\n requestModel = {\r\n NameSpace: 'Shopper',\r\n UserId: shopperId\r\n };\r\n\r\n return CadworxAPI.request$(databaseConfig, initSessionId, url, requestModel).then(function (data) {\r\n var sessionId = data.SessionId;\r\n\r\n CmeAPI._sessionId = sessionId;\r\n return Cx.resolve(sessionId);\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import Cme from './Cme.js';\r\nimport CmeBrush from './CmeBrush.js';\r\nimport CmeClipArt from './CmeClipArt.js';\r\nimport CmeFonts from './CmeFonts.js';\r\nimport Figure from './Figure.js';\r\nimport Meta from './Meta.js';\r\n\r\nexport default class CmeFixDocument {\r\n\r\n //\r\n // DESIGN\r\n //\r\n\r\n /** \r\n * Call after loading the design document.\r\n * Ensure we have any needed alternates for clip art.\r\n * @param {Cx.Document} doc\r\n */\r\n static fixDesign (doc) {\r\n var me = CmeFixDocument;\r\n\r\n me._fixFontMetadata(doc);\r\n me._fixClipArtMetadata(doc);\r\n me._checkForClipArtAlternates(doc);\r\n }\r\n\r\n /** \r\n * To support old designs with no font source set in the metadata\r\n * we check for any text with CME fonts and set the metadata.\r\n * @param {Cx.Document} doc\r\n */\r\n static _fixFontMetadata (doc) {\r\n var textFigures = Cme.getTextFigures(doc.figures);\r\n\r\n textFigures.forEach(function (f) {\r\n // Old design?\r\n if (!Meta.getFontSource(f) && CmeFonts.inNameLookup(f.font.name)) {\r\n // Flag the font source as CME\r\n Meta.flagFontAsCme(f);\r\n }\r\n });\r\n }\r\n\r\n /** \r\n * Call after loading the design document.\r\n * To support old designs with no font source set in the metadata\r\n * we check for any text with CME fonts and set the metadata.\r\n * @param {Cx.Document} doc\r\n */\r\n static _fixClipArtMetadata (doc) {\r\n var figures = Cme.getClipArtFigures(doc.figures);\r\n\r\n figures.forEach(function (f) {\r\n if (!Meta.getSource(f) && CmeClipArt.isSwappable(f)) {\r\n Meta.flagAsCme([f]);\r\n }\r\n });\r\n }\r\n\r\n /** \r\n * Call after loading the design document.\r\n * @param {Cx.Document} doc\r\n */\r\n static _checkForClipArtAlternates (doc) {\r\n if (Meta.areCme(doc.figures)) {\r\n doc.figures.forEach(function (figure) {\r\n var name = Meta.getOriginalDocName(figure);\r\n\r\n if (name) {\r\n CmeClipArt.searchForAlternates$(name);\r\n }\r\n });\r\n }\r\n }\r\n\r\n //\r\n // CLIP ART\r\n //\r\n\r\n /**\r\n * Call when opening clip art document.\r\n * @param {Cx.Document} doc\r\n */\r\n static fixClipArt$ (doc) {\r\n var figures = doc.figures;\r\n\r\n CmeBrush.ensureDefaultBrush(figures);\r\n CmeFixDocument._fixPricingSupport(doc, figures);\r\n\r\n return CmeClipArt.searchForAlternates$(doc.name).then(function () {\r\n return CmeFixDocument._fixSmallClipArt$(figures).then(function () {\r\n return Cx.resolve(figures);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Call when opening clip art.\r\n * @param {Cx.Document} doc\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static _fixPricingSupport (doc, figures) {\r\n var name = doc.name;\r\n\r\n figures.forEach(function (f) {\r\n Meta.setOriginalClipartName(f, name);\r\n });\r\n }\r\n\r\n /**\r\n * For CME clip art, since it is '-Sml' version, add in at triple size\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static _fixSmallClipArt$ (figures) {\r\n var fn$ = [];\r\n\r\n figures.forEach(function (f) {\r\n fn$.push(f.bounds$());\r\n });\r\n\r\n return Cx.whenAll(fn$).then(function (result) {\r\n var fn$ = [];\r\n\r\n figures.forEach(function (f, index) {\r\n fn$.push(Figure.setSize$([f], {\r\n locked: true,\r\n width: result[index].width * 3\r\n }));\r\n });\r\n\r\n return Cx.whenAll(fn$);\r\n });\r\n }\r\n\r\n //\r\n // TEMPLATES\r\n //\r\n\r\n /**\r\n * Call when opening template document\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static fixTemplate$ (figures) {\r\n var fn$ = [];\r\n\r\n figures.forEach(function (figure) {\r\n var name = Meta.getOriginalDocName(figure);\r\n\r\n if (name && CmeClipArt.isSwappable(name)) {\r\n fn$.push(CmeClipArt.searchForAlternates$(name));\r\n }\r\n });\r\n\r\n if (fn$.length > 0) {\r\n return Cx.whenAll(fn$);\r\n } else {\r\n return Cx.resolve();\r\n }\r\n }\r\n\r\n}\r\n","var TxColorMatching = function(){\r\n\r\n //var RGBPoint = function (x, y, z, label, spotColorName) {\r\n // this.x = x;\r\n // this.y = y;\r\n // this.z = z;\r\n // this.label = label;\r\n // this.spotColorName = spotColorName;\r\n //};\r\n\r\n var LabPoint = function (x, y, z, label, spotColorName) {\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n this.label = label;\r\n this.spotColorName = spotColorName;\r\n };\r\n\r\n var _availableMatchLabPoints = [];\r\n\r\n var _pointDistance = function (p, p2) {\r\n var x = Math.abs(p.x - p2.x);\r\n var y = Math.abs(p.y - p2.y);\r\n var z = Math.abs(p.z - p2.z);\r\n\r\n return Math.sqrt(x * x + y * y + z * z);\r\n };\r\n\r\n var _getLabPointFromRGB = function (rawRgb, label, spotColorName) {\r\n var rgb = _hex2rgb(rawRgb);\r\n var xyz = _rgb2xyz(rgb);\r\n var lab = _xyz2lab(xyz);\r\n\r\n return new LabPoint(lab.l, lab.a, lab.b, label, spotColorName);\r\n };\r\n\r\n var _appColorAsLabPoint = function (appColor) {\r\n return _getLabPointFromRGB(appColor.RGBHex, appColor.Name, appColor.SpotColorName);\r\n };\r\n\r\n /*\r\n Code below is mostly from https://github.com/Shushik/i-color with minor modifications.\r\n Took what we needed for RGB to LAB conversion only.\r\n Can see logic for conversions here: http://www.easyrgb.com/index.php?X=MATH&H=02#text2\r\n */\r\n\r\n var _hex2rgb = function (raw) {\r\n raw = raw.replace(\"#\", \"\");\r\n\r\n var rgb = { r: 0, g: 0, b: 0 };\r\n\r\n if (raw.length == 3) {\r\n rgb.r = parseInt((raw.substring(0, 1) + raw.substring(0, 1)), 16);\r\n rgb.g = parseInt((raw.substring(1, 2) + raw.substring(1, 2)), 16);\r\n rgb.b = parseInt((raw.substring(2, 3) + raw.substring(2, 3)), 16);\r\n }\r\n else {\r\n rgb.r = parseInt(raw.substring(0, 2), 16);\r\n rgb.g = parseInt(raw.substring(2, 4), 16);\r\n rgb.b = parseInt(raw.substring(4, 6), 16);\r\n }\r\n\r\n return rgb;\r\n };\r\n\r\n var _rgb2xyz = function (raw) {\r\n var tmp = '',\r\n loop = '',\r\n rgb = {\r\n r: raw.r / 255,\r\n g: raw.g / 255,\r\n b: raw.b / 255\r\n },\r\n xyz = null;\r\n\r\n for (loop in rgb) {\r\n if (rgb[loop] > 0.04045) {\r\n rgb[loop] = Math.pow(((rgb[loop] + 0.055) / 1.055), 2.4);\r\n }\r\n else {\r\n rgb[loop] /= 12.92;\r\n }\r\n\r\n rgb[loop] = rgb[loop] * 100;\r\n }\r\n\r\n xyz = {\r\n x: rgb.r * 0.4124 + rgb.g * 0.3576 + rgb.b * 0.1805,\r\n y: rgb.r * 0.2126 + rgb.g * 0.7152 + rgb.b * 0.0722,\r\n z: rgb.r * 0.0193 + rgb.g * 0.1192 + rgb.b * 0.9505\r\n };\r\n\r\n for (loop in xyz) {\r\n xyz[loop] = _round(xyz[loop]);\r\n }\r\n\r\n return xyz;\r\n };\r\n\r\n var _xyz2lab = function (raw) {\r\n var loop = '',\r\n xyz = {},\r\n white = _white;\r\n\r\n for (loop in raw) {\r\n xyz[loop] = raw[loop] / white[loop];\r\n\r\n if (xyz[loop] > 0.008856) {\r\n xyz[loop] = Math.pow(xyz[loop], 1 / 3);\r\n }\r\n else {\r\n xyz[loop] = (7.787 * xyz[loop]) + (16 / 116);\r\n }\r\n }\r\n\r\n return {\r\n l: 116 * xyz.y - 16,\r\n a: 500 * (xyz.x - xyz.y),\r\n b: 200 * (xyz.y - xyz.z)\r\n };\r\n };\r\n\r\n //Instead of nonworking Math.toFixed()\r\n var _round = function (num, after) {\r\n after = after || 3;\r\n\r\n var reg = new RegExp('^([-\\\\d]*)(\\\\.\\\\d{1,' + after + '})?.*');\r\n\r\n num += '';\r\n num = num.replace(reg, '$1$2');\r\n num -= 0;\r\n\r\n return num;\r\n };\r\n\r\n var _white = {\r\n x: 95.047,\r\n y: 100.000,\r\n z: 108.883\r\n };\r\n\r\n /*\r\n End code peices from https://github.com/Shushik/i-color\r\n */\r\n\r\n var _findClosestMatchToCadxColorIn = function(cadxColor, colors){\r\n var point = _getLabPointFromRGB(cadxColor.rgb());\r\n var min = Infinity;\r\n var minIdx = -1;\r\n var i, dist;\r\n\r\n var getPantoneOnly = function (spotColorName) {\r\n var indexOfCv = spotColorName.indexOf(' CV');\r\n var spotColorWithoutCv = spotColorName.substring(0, indexOfCv);\r\n var indexBeforeNumber = spotColorWithoutCv.lastIndexOf(' ');\r\n\r\n if (indexBeforeNumber !== -1) {\r\n var pantoneOnly = spotColorWithoutCv.substring(indexBeforeNumber).trim();\r\n return pantoneOnly;\r\n }\r\n else {\r\n return spotColorWithoutCv;\r\n }\r\n };\r\n\r\n var possibleColorSearchMap = _availableMatchLabPoints;\r\n\r\n //See if we can narrow down by comparing Pantone numbers\r\n if(cadxColor.spotColorName){\r\n possibleColorSearchMap = _availableMatchLabPoints.filter(function (availableLabPoint) {\r\n return getPantoneOnly(availableLabPoint.spotColorName) == getPantoneOnly(cadxColor.spotColorName);\r\n });\r\n }\r\n\r\n if (possibleColorSearchMap.length === 1) {\r\n //If we have reduced to just one color, see if we can just find that color\r\n var possibleColorMatch = TxColorMatching.findByNameIn(possibleColorSearchMap[0].label, colors); //me.findByColorName(possibleColorSearchMap[minIdx].label);\r\n if (possibleColorMatch)\r\n return possibleColorMatch;\r\n }\r\n\r\n if(possibleColorSearchMap.length === 0){\r\n Cx.info('Possible color search map is empty, choosing closest match by point distance of Lab points.');\r\n possibleColorSearchMap = _availableMatchLabPoints;\r\n }\r\n\r\n for (i = 0; i < possibleColorSearchMap.length; ++i) {\r\n dist = _pointDistance(possibleColorSearchMap[i], point);\r\n if (dist < min) {\r\n min = dist;\r\n minIdx = i;\r\n }\r\n }\r\n\r\n return TxColorMatching.findByNameIn(possibleColorSearchMap[minIdx].label, colors);\r\n };\r\n\r\n return {\r\n\r\n findByCadxColorIn: function(cadxColor, colors){\r\n var foundColor = TxColorMatching.findByNameIn(cadxColor.name, colors);\r\n\r\n if (!foundColor)\r\n foundColor = TxColorMatching.findByCMYKIn(cadxColor.cmyk, colors);\r\n\r\n if (!foundColor)\r\n foundColor = TxColorMatching.findByRGBIn(cadxColor.rgb, colors);\r\n\r\n if (!foundColor)\r\n foundColor = _findClosestMatchToCadxColorIn(cadxColor, colors);\r\n\r\n return foundColor;\r\n }\r\n\r\n , findByNameIn: function(name, colors){\r\n //Same logic as D6\r\n if(!name)\r\n return null;\r\n\r\n var matchingColor = colors.find(function(color){\r\n return (color.Name === name || (color.Name && color.Name.toLowerCase() === name.toLowerCase()));\r\n });\r\n\r\n return matchingColor;\r\n }\r\n\r\n , findByCMYKIn: function(cmykHex, colors){\r\n //Same logic as D6\r\n if(!cmykHex)\r\n return null;\r\n\r\n cmykHex = cmykHex.toLowerCase();\r\n\r\n var matchingColor = colors.find(function(color) {\r\n return (color.CMYKHex && color.CMYKHex.toLowerCase() === cmykHex);\r\n });\r\n\r\n return matchingColor;\r\n }\r\n\r\n , findByRGBIn: function(rgbHex, colors){\r\n //Same logic as D6\r\n if(!rgbHex)\r\n return null;\r\n\r\n rgbHex = rgbHex.toLowerCase();\r\n\r\n var matchingColor = colors.find(function(color) {\r\n return (color.RGBHex && color.RGBHex.toLowerCase() === rgbHex);\r\n });\r\n\r\n return matchingColor;\r\n }\r\n\r\n //Base set of colors to use when attempting to \"find closest match\" via LAB points.\r\n // , setAvailableMatchColors: function( appColors){\r\n // _availableMatchLabPoints = App_.map(appColors, _appColorAsLabPoint);\r\n // }\r\n\r\n , isCxColorOriginallyFromTxPalette: function(cadxColor){\r\n //We don't want to try and match colors that weren't previously selected by the user\r\n //Essentially, we don't want to match colors from user imports\r\n //But we can't just single out by user imported figures because the user may have later selected the colors from the palette\r\n //Once they select the colors, we want to make sure they stay in sync with the palette values and are correct between print methods\r\n\r\n //So... we detect if the color originally came from TX palette by checking for spot color name or CMYK.\r\n //return !!(cadxColor && (cadxColor.spotColorName || cadxColor.cmyk));\r\n //UPDATE: CMYK is not set on user imported colors but spot color name is.\r\n return !!(cadxColor && cadxColor.cmyk);\r\n }\r\n\r\n , isDesignColorOriginallyFromTxPalette: function(designColor){\r\n return TxColorMatching.isCxColorOriginallyFromTxPalette(designColor._CadxColor);\r\n }\r\n\r\n };\r\n\r\n}();\r\n\r\nexport default TxColorMatching;\r\n","import TransferExpressAPI from '../api/TransferExpressAPI';\r\nimport TxColor from './TxColor';\r\n\r\nexport default class TxAllColors {\r\n\r\n static colors () {\r\n return TxAllColors._allColors || [];\r\n }\r\n\r\n static load$ () {\r\n if (TxAllColors._allColorsLoaded) {\r\n return Cx.resolve(TxAllColors.colors());\r\n } else {\r\n return TransferExpressAPI.loadColors$({ TransferType: '', Substrate: '' }).then(\r\n function (response) {\r\n var colors = [];\r\n\r\n response.Items.forEach(function (txColor) {\r\n colors.push(TxColor.parseTxColorData(txColor));\r\n });\r\n\r\n TxAllColors._allColors = colors;\r\n TxAllColors._allColorsLoaded = true;\r\n\r\n return Cx.resolve(colors);\r\n }\r\n );\r\n }\r\n }\r\n\r\n}\r\n","import TxAllColors from './TxAllColors.js';\r\nimport TxColor from './TxColor.js';\r\nimport TxColorMatching from './TxColorMatching';\r\n\r\nexport default class TxFixColor {\r\n\r\n // Fixup colors in CDL by making sure they are equivalents of TX colors, including CMYK, SpotColorName etc.\r\n static fix (doc) {\r\n // See notes on TxFixColor.colorFixup for notes related to CCA specific logic.\r\n var ccaTags = doc.tags.filter(function (tag) {\r\n return (tag.name.indexOf('cca') != -1);\r\n });\r\n\r\n var isCca = (ccaTags.length > 0);\r\n\r\n //If CCA, check if it is a black and white only CCA (see TxFixColor.colorFixup comments)\r\n var isNonBlackAndWhiteCca = false;\r\n\r\n if (isCca) {\r\n //Get a unique list of color names\r\n var colorNames = [];\r\n Cx.forEachColor(doc.activePageFigures, function (color) {\r\n if(color.name) colorNames.push(color.name.toLowerCase());\r\n });\r\n colorNames = Cx_.uniq(colorNames);\r\n\r\n //If there are only two colors, check if they are black and white\r\n if (Cx_.size(colorNames) == 2) {\r\n var nonBlackAndWhiteColors = Cx_.findWhere(colorNames, function(colorName) {\r\n return colorName != 'black' && colorName != 'white';\r\n });\r\n\r\n isNonBlackAndWhiteCca = (Cx_.size(nonBlackAndWhiteColors) > 0);\r\n }\r\n else {\r\n isNonBlackAndWhiteCca = true;\r\n }\r\n }\r\n\r\n Cx.convertColors(doc.activePageFigures, function (loadedColor) {\r\n return TxFixColor.colorFixup(loadedColor, isNonBlackAndWhiteCca);\r\n });\r\n }\r\n\r\n //About isNonBlackAndWhiteCca - https://cadworx.atlassian.net/browse/CADXUI-929\r\n //Don't want to change white to show through for CCA, so we have to undo what the conversion system has done\r\n //and then look for 658 CV and change that to show through if it exists.\r\n //For black and white CCAs, we leave white as show through.\r\n //TODO: Blue show through stuff is for verify mode only, should extract this and make part of verify only code.\r\n static colorFixup (colorToFix, isNonBlackAndWhiteCca) {\r\n var colorToFixSpotColor = colorToFix.spotColorName,\r\n isBlueShowThrough = ((colorToFixSpotColor && colorToFixSpotColor.toLowerCase().indexOf('658 cv') != -1) || (colorToFix.name && colorToFix.name.toLowerCase().indexOf('658 cv') != -1));\r\n\r\n //Now that this method finds \"closest match\", we don't want to do it for 658 CV. It isn't in the palette, so it wasn't found previously but now the new code matches it to Carolina Blue.\r\n //Also, we don't want to match colors of imports, make the user choose what they want vs. changing their artwork without notice\r\n //We also don't want to match custom colors\r\n if (\r\n !isBlueShowThrough &&\r\n !TxColor.isCustomColor(colorToFix) &&\r\n TxColorMatching.isCxColorOriginallyFromTxPalette(colorToFix)\r\n ) {\r\n var fixedUpColor = TxColorMatching.findByCadxColorIn(colorToFix, TxAllColors.colors());\r\n\r\n if (fixedUpColor) {\r\n fixedUpColor = TxColor.toCxColor(fixedUpColor);\r\n }\r\n }\r\n\r\n // Handle transparent colors, we need this for distress\r\n if (fixedUpColor) {\r\n fixedUpColor.alpha = colorToFix.alpha;\r\n }\r\n\r\n if (fixedUpColor && ((colorToFix.showThrough && !isNonBlackAndWhiteCca) || (isNonBlackAndWhiteCca && isBlueShowThrough))) {\r\n fixedUpColor.showThrough = true;\r\n }\r\n\r\n else if (isNonBlackAndWhiteCca && isBlueShowThrough) {\r\n fixedUpColor = colorToFix.clone();\r\n fixedUpColor.showThrough = true;\r\n }\r\n\r\n return fixedUpColor || colorToFix;\r\n }\r\n\r\n}\r\n","import TxDistress from './TxDistress';\r\n\r\nexport default class TxFixDistress {\r\n\r\n /**\r\n * Converts distress layer figure to a rectangular figure if there is one\r\n * @param {Cx.Document} doc\r\n */\r\n static fix$ (doc) {\r\n // Find distress layer, even for document where it is not tagged as 'System.Distress'\r\n var dLayer = Cx_.find( Cx_.rest(doc.layers), function(l){\r\n if( l.xType === TxDistress.distressLayerXType() )\r\n return true;\r\n\r\n if( l.figures.length == 1 ) {\r\n var f = Cx_.first( l.figures );\r\n if( f instanceof Cx.Figure.Raster ) {\r\n var mc = f.monochromeColors();\r\n // A lonely raster where one of the colors is transparent\r\n if( mc.length == 2 && ( mc[0].alpha == 0 || mc[1].alpha == 0 ) )\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n if (!dLayer)\r\n return Cx.Defer().resolve(doc);\r\n\r\n var figure = Cx_.first( dLayer.figures );\r\n\r\n if( !figure ) {\r\n doc.layers.remove(dLayer);\r\n return Cx.Defer().resolve(doc);\r\n }\r\n else {\r\n // Force the correct xType\r\n dLayer.xType = TxDistress.distressLayerXType();\r\n\r\n return TxFixDistress.convertDistressFigure$(figure)\r\n .then(function( newFigure ){\r\n var layerBelowDistressLayer = TxFixDistress.getLayerBelowDistressLayer(doc);\r\n\r\n //Fix up for old bug, remove when we no longer see logs for extended period.\r\n //Check if multiple figures are inside distress layer, only distress figure itself should be in this layer\r\n var distressLayerFigureCount = dLayer.figures.length;\r\n if(distressLayerFigureCount > 1){\r\n Cx.info('Found multiple figures in distress layer, fixing up, moving to layer below.');\r\n for(var i = 1, len = distressLayerFigureCount; i < len; i++){\r\n layerBelowDistressLayer.add(dLayer.figures[i]);\r\n }\r\n }\r\n\r\n dLayer.figures.set(newFigure);\r\n\r\n var activeLayer = doc.activeLayer;\r\n var isDistressLayerActive = TxDistress.isDistressLayer(activeLayer);\r\n if(isDistressLayerActive){\r\n doc.activeLayer = layerBelowDistressLayer;\r\n }\r\n\r\n return Cx.resolve(doc);\r\n });\r\n }\r\n }\r\n\r\n static getLayerBelowDistressLayer (doc) {\r\n return doc.layers[TxFixDistress.getDistressLayerIndex(doc) - 1];\r\n }\r\n\r\n static getDistressLayerIndex (doc) {\r\n return Cx_.findIndex(doc.layers, TxDistress.isDistressLayer);\r\n }\r\n\r\n /**\r\n * Creates a rectangular figure with a distressed texture brush from\r\n * a raster figure\r\n */\r\n static convertDistressFigure$ (figure) {\r\n //TODO: cphillips, this orginal data needs to have the showthrough color set\r\n if (figure instanceof Cx.Figure.Raster) {\r\n var raster = figure.clone();\r\n return raster.bounds$().then( function(bounds){\r\n \r\n if( raster.monochromeColors().length > 1 )\r\n raster.monochromeColors(1).showThrough = true;\r\n \r\n var id = 'Distress';\r\n var rec = Cx.Figure.Shape.CreateRectangle({ bounds: bounds });\r\n var pcc = Cx.PowerClipContent.createForFigure(id,[raster],rec);\r\n rec.powerClipContents.add(pcc);\r\n rec.polyregions(0).powerClipId(id);\r\n \r\n // Move metadata to the new distress figure\r\n rec.xType = 'System.Clipart';\r\n rec.txId( raster.txId() );\r\n raster.txId(null);\r\n \r\n /* Texture brush based\r\n rec.brush(Cx.TextureBrush({\r\n imageLink: figure.imageLink()\r\n , monochromeColors: figure.monochromeColors()\r\n , matrix22: Cx.Matrix.concat(Cx.Matrix.scale(1 / 3), figure.matrix22().clone())\r\n }));\r\n rec.brush().monochromeColors().at(1).showThrough(true);\r\n */\r\n return rec;\r\n });\r\n }\r\n else {\r\n // Already a rectangular shape\r\n // Make sure we have the xType\r\n var d = figure.clone();\r\n d.xType = 'System.Clipart';\r\n return Cx.Defer().resolve( d );\r\n }\r\n }\r\n\r\n}\r\n","import Meta from './Meta.js';\r\nimport Tx from './Tx.js';\r\nimport TxAllColors from './TxAllColors.js';\r\nimport TxFixColor from './TxFixColor.js';\r\nimport TxFixDistress from './TxFixDistress.js';\r\n\r\nexport default class TxFixDocument {\r\n\r\n //\r\n // DESIGN\r\n //\r\n\r\n /** \r\n * Call after loading the design document.\r\n * Backward compat.\r\n * @param {Cx.Document} doc\r\n */\r\n static fixDesign (doc) {\r\n doc.figures.forEach(function (f) {\r\n if (!Meta.getSource(f) && Meta.getTxId(f)) {\r\n Meta.flagAsTransferExpress([f]);\r\n\r\n if (f.xType === 'System.Clipart') {\r\n Meta.flagAsClipArt(f);\r\n }\r\n }\r\n });\r\n }\r\n\r\n //\r\n // EASY VIEW FIXUPS\r\n //\r\n\r\n static fix$ (doc) {\r\n // Fix distress layers, D6 expects them to be a rectangle with a texture brush\r\n return TxFixDistress.fix$(doc).then(function (fixedDoc) {\r\n // If the documnent is a 'Clipart' document we want to ensure the figure(s)\r\n // have a Tx Id... which will be the document name.\r\n TxFixDocument.fixClipartId(doc);\r\n\r\n //Simplify text parts if we can, if not we can't allow some effects to be edited\r\n TxFixDocument.simplifyTextPartsWherePossible(doc);\r\n\r\n TxFixDocument.fixPenContourBehindFill(doc.figures);\r\n\r\n // Fix up colors in CDL by making sure they are equivalents of TX colors, including CMYK, SpotColorName etc.\r\n // Ensure that all colors are loaded\r\n return TxAllColors.load$().then(function () {\r\n TxFixColor.fix(doc);\r\n return Cx.resolve(doc);\r\n });\r\n });\r\n }\r\n\r\n static fixPenContourBehindFill (figures) {\r\n var _findPenContour = function (processes) {\r\n return Cx.findByType(processes, Cadx.Process.PenContour);\r\n };\r\n\r\n figures.forEach(function(f){\r\n var penContourEffect = _findPenContour(f.processes);\r\n\r\n if (penContourEffect) {\r\n Cx_.each(penContourEffect.pens, function(pen){\r\n pen.behindFill = true;\r\n });\r\n }\r\n\r\n //We may only need this for imports, that's where the issue was found\r\n if (f.polyregions) {\r\n Cx_.each(f.polyregions, function (polyRegion) {\r\n if(polyRegion.isArray){\r\n Cx_.each(polyRegion, function (singlePolyRegion) {\r\n singlePolyRegion.pen.behindFill = true;\r\n });\r\n } else {\r\n polyRegion.pen.behindFill = true;\r\n }\r\n });\r\n }\r\n\r\n //Need to look within Groups as well.\r\n if (f.isGroup) {\r\n var groupFigures = f.figures;\r\n TxFixDocument.fixPenContourBehindFill(groupFigures);\r\n }\r\n });\r\n\r\n return figures;\r\n }\r\n\r\n static simplifyTextPartsWherePossible (doc){\r\n var activeLayer = doc.activeLayer;\r\n var indexOfActiveLayer = doc.layers.indexOf(activeLayer);\r\n \r\n doc.layers.forEach(function (layer) {\r\n //Set layer active, temporarily\r\n doc.activeLayer = layer;\r\n TxFixDocument.simplifyTextPartsWherePossibleInActiveLayer(doc);\r\n });\r\n \r\n doc.activeLayer = doc.layers[indexOfActiveLayer];\r\n }\r\n\r\n static simplifyTextPartsWherePossibleInActiveLayer (doc) {\r\n var activeLayerFigures = doc.activeLayer.figures;\r\n \r\n activeLayerFigures.forEach(function (figure) {\r\n //Simplify text parts if we can\r\n if (Tx.isMultiPartText(figure) && Cx.Figure.textPartsCanBeSimplified(figure)) {\r\n var clone = figure.clone();\r\n var simplifiedFigure = Cx.Figure.simplifyTextParts(clone);\r\n \r\n //Replace is based off replacing figures in active layer. Is supposed to work across layers but it doesn't\r\n //Basically, replace only replaces in active layer, had issues here when distress layer was active due to fixDistressDocument$\r\n //This also caused issues with distress layers, when multi part text was in both layers\r\n //It also doesn't traverse within groups when looking for figures to replace, you end up with a duplicate, so we had to stop using Tx.everyTextBlock (it looks within groups)\r\n doc.replace(figure, simplifiedFigure);\r\n }\r\n });\r\n }\r\n\r\n // If the document is a 'Clipart' document we want to ensure the figure(s)\r\n // have a Tx Id... which will be the document name.\r\n static fixClipartId (doc) {\r\n var allFigures = doc.activePageFigures,\r\n clipartFigures;\r\n\r\n // Any text and this is not a 'Clipart' document\r\n if (Tx.everyTextBlock(allFigures).length > 0) {\r\n return;\r\n }\r\n\r\n clipartFigures = Tx.everyClipart(allFigures);\r\n clipartFigures.forEach(function (figure) {\r\n if (!figure.txId) {\r\n figure.txId = doc.name;\r\n }\r\n });\r\n }\r\n\r\n}","import CadworxLiveAPI from '../api/CadworxLiveAPI.js';\r\nimport CmeAPI from '../api/CmeAPI.js';\r\nimport TransferExpressAPI from '../api/TransferExpressAPI.js';\r\nimport CmeFixDocument from './CmeFixDocument';\r\nimport Meta from './Meta.js';\r\nimport TransferGroup from './TransferGroup.js';\r\nimport Tx from './Tx.js';\r\nimport TxFixDocument from './TxFixDocument.js';\r\nimport Rules from '../Rules.js';\r\n\r\nexport default class Doc {\r\n\r\n //\r\n // SAVED DESIGN\r\n //\r\n\r\n static savedDesignClass () {\r\n return 'SavedDesign';\r\n }\r\n\r\n /**\r\n * Flag as a 'SavedDesign'.\r\n * @param {Cx.Document} doc\r\n */\r\n static saveDesign$ (doc) {\r\n var ruleId = Rules.code(),\r\n options = {\r\n class1: Doc.savedDesignClass(),\r\n class2: ruleId\r\n },\r\n pages = doc.pages,\r\n fn$ = [];\r\n\r\n if (pages.length > 1) {\r\n // Save each page with figures as a 'SavedDesign'\r\n pages.forEach(function (page) {\r\n var fs = page.figures,\r\n cdl, tempDoc;\r\n\r\n if (fs.length > 0) {\r\n cdl = Cx.toXmlString(fs);\r\n tempDoc = Cx.Document.fromXmlString(cdl);\r\n tempDoc.name = doc.name;\r\n\r\n fn$.push(tempDoc.save$(options));\r\n }\r\n });\r\n }\r\n\r\n else {\r\n fn$.push(doc.save$(options));\r\n }\r\n\r\n return Cx.whenAll(fn$);\r\n }\r\n\r\n /**\r\n * @param {String} id A document id.\r\n */\r\n static removeSavedDesign$ (id) {\r\n return Cx.Core.Document.update$({ Archived: 1, Id: id });\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n * @param {String} layerName\r\n */\r\n static findLayer (doc, layerName) {\r\n var layers = doc.layers,\r\n len = layers.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (layers[i].id === layerName) {\r\n return layers[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @param {String} id\r\n * @param {Object} [options]\r\n */\r\n static loadProcesses$ (id, options) {\r\n return Cx.Document.load$(id, options).then(\r\n function (doc) {\r\n var layers = doc.releaseLayers(),\r\n fn = typeof Cx_.reduce === 'function' ? Cx_.reduce : _.reduce,\r\n figures = fn(layers, function (all, l) {\r\n return Cx.concat(all, l.release());\r\n }, []);\r\n\r\n return figures[0].processes.clear();\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param {String} id\r\n * @param {Object} [options]\r\n */\r\n static loadFigures$ (id, options) {\r\n return Doc.load$(id, options).then(\r\n function (doc) {\r\n return Doc.releaseFigures(doc);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n */\r\n static releaseFigures (doc) {\r\n var layers = doc.releaseLayers(),\r\n fn = typeof Cx_.reduce === 'function' ? Cx_.reduce : _.reduce;\r\n \r\n return fn(layers, function (all, l) {\r\n return Cx.concat(all, l.release());\r\n }, []);\r\n }\r\n\r\n /**\r\n * @param {String} id\r\n * @param {Object} [options]\r\n */\r\n static load$ (id, options) {\r\n return Cx.Document.load$(id, options).then(\r\n function (doc) {\r\n Doc.initMetadataOnDocLoad(doc);\r\n return Cx.resolve(doc);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Document} doc\r\n */\r\n static initMetadataOnDocLoad (doc) {\r\n var name = doc.name,\r\n figures = doc.figures;\r\n\r\n figures.forEach(function (f) {\r\n // Required (all modes)\r\n Meta.setFigureId(f);\r\n // Required (all modes)\r\n // Also allows CME to swap clipart (inverted, less detail, more detail)\r\n Meta.setOriginalDocName(f, name);\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Document} doc\r\n */\r\n static initMetadataOnTemplateLoad (doc) {\r\n var figures = doc.figures,\r\n name = doc.name;\r\n\r\n figures.forEach(function (f) {\r\n // Required (all modes)\r\n Meta.setFigureId(f);\r\n\r\n if (name) {\r\n Meta.setOriginalTemplateName(f, name);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @param {String} id\r\n */\r\n static openDesign$ (id) {\r\n return Cx.Document.load$(id).then(function (doc) {\r\n CmeFixDocument.fixDesign(doc);\r\n TxFixDocument.fixDesign(doc);\r\n\r\n // Ensure transfer groups names are set\r\n doc.figures.forEach(function (f) {\r\n var name = Meta.getTransferGroup(f);\r\n \r\n if (!name) {\r\n // If not part of a group, it is it's own group. Important for OrderService.\r\n name = TransferGroup.getNextGroupName();\r\n Meta.setTransferGroup(f, name);\r\n }\r\n });\r\n\r\n return Cx.resolve(doc);\r\n });\r\n }\r\n\r\n //\r\n // LOAD CLIP ART\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {String} id The document id.\r\n */\r\n static loadCmeClipArt$ (id) {\r\n return CmeAPI.loadDoc$(id).then(function (doc) {\r\n Doc.initMetadataOnDocLoad(doc);\r\n Meta.flagAsCme(doc.figures);\r\n Meta.flagAsClipArt(doc.figures);\r\n return CmeFixDocument.fixClipArt$(doc);\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id The document id.\r\n */\r\n static loadCadworxLiveClipArt$ (id) {\r\n return CadworxLiveAPI.loadDoc$(id).then(\r\n function (doc) {\r\n Doc.initMetadataOnDocLoad(doc);\r\n Meta.flagAsCadworxLive(doc.figures);\r\n Meta.flagAsClipArt(doc.figures);\r\n return Cx.resolve(doc.figures);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} name\r\n * @param {Object} options\r\n */\r\n static loadTransferExpressClipArt$ (name, options) {\r\n return TransferExpressAPI.loadClipArt$(name, options).then(function (doc) {\r\n return TxFixDocument.fix$(doc).then(function (fixedDoc) {\r\n Doc.initMetadataOnDocLoad(fixedDoc);\r\n Meta.flagAsTransferExpress(fixedDoc.figures);\r\n Meta.flagAsClipArt(fixedDoc.figures);\r\n return Cx.resolve(fixedDoc);\r\n });\r\n });\r\n }\r\n\r\n //\r\n // LOAD EFFECT\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {String} id The document id.\r\n */\r\n static loadCadworxLiveEffect$ (id) {\r\n return CadworxLiveAPI.loadDoc$(id).then(\r\n function (doc) {\r\n var layers = doc.releaseLayers(),\r\n fn = typeof Cx_.reduce === 'function' ? Cx_.reduce : _.reduce,\r\n figures = fn(layers, function (all, l) {\r\n return Cx.concat(all, l.release());\r\n }, []);\r\n\r\n return figures[0].processes.clear();\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n */\r\n static loadTransferExpressEffect$ (id) {\r\n return TransferExpressAPI.loadEffect$(id).then(\r\n function (doc) {\r\n var layers = doc.releaseLayers(),\r\n fn = typeof Cx_.reduce === 'function' ? Cx_.reduce : _.reduce,\r\n figures = fn(layers, function (all, l) {\r\n return Cx.concat(all, l.release());\r\n }, []);\r\n\r\n return figures[0].processes.clear();\r\n }\r\n );\r\n }\r\n\r\n //\r\n // LOAD MY FILE\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {String} id The document id.\r\n */\r\n static loadCadworxLiveMyFile$ (id) {\r\n return CadworxLiveAPI.loadDoc$(id).then(\r\n function (doc) {\r\n Doc.initMetadataOnDocLoad(doc);\r\n Meta.flagAsCadworxLive(doc.figures);\r\n return Cx.resolve(doc.figures);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id The document id.\r\n */\r\n static loadCmeMyFile$ (id) {\r\n return CmeAPI.loadDoc$(id).then(\r\n function (doc) {\r\n Doc.initMetadataOnDocLoad(doc);\r\n Meta.flagAsCme(doc.figures);\r\n return Cx.resolve(doc.figures);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id The document id.\r\n */\r\n static loadTransferExpressMyFile$ (id) {\r\n return TransferExpressAPI.loadMyFileDoc$(id).then(function (doc) {\r\n return TxFixDocument.fix$(doc).then(function (fixedDoc) {\r\n Doc.initMetadataOnDocLoad(fixedDoc);\r\n Meta.flagAsTransferExpress(fixedDoc.figures);\r\n return Cx.resolve(fixedDoc);\r\n });\r\n });\r\n }\r\n\r\n //\r\n // LOAD TEMPLATE\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {String} id The document id.\r\n */\r\n static loadCadworxLiveTemplate$ (id) {\r\n return CadworxLiveAPI.loadDoc$(id).then(\r\n function (doc) {\r\n Doc.initMetadataOnTemplateLoad(doc);\r\n Meta.flagAsCadworxLive(doc.figures);\r\n Meta.flagAsTemplate(doc.figures);\r\n return Cx.resolve(doc.figures);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id The document id.\r\n */\r\n static loadCmeTemplate$ (id) {\r\n return CmeAPI.loadDoc$(id).then(function (doc) {\r\n var figures = doc.figures;\r\n\r\n Doc.initMetadataOnTemplateLoad(doc);\r\n Meta.flagAsCme(doc.figures);\r\n Meta.flagAsTemplate(doc.figures);\r\n return CmeFixDocument.fixTemplate$(figures).then(function () {\r\n return Cx.resolve(figures);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} name\r\n * @param {Object} options\r\n */\r\n static loadTransferExpressTemplate$ (name, options) {\r\n return TransferExpressAPI.loadTemplate$(name, options).then(function (doc) {\r\n return TxFixDocument.fix$(doc).then(function (fixedDoc) {\r\n Tx.simplifyMultipartText(fixedDoc);\r\n Doc.initMetadataOnTemplateLoad(fixedDoc);\r\n Meta.flagAsTransferExpress(fixedDoc.figures);\r\n Meta.flagAsTemplate(fixedDoc.figures);\r\n return Cx.resolve(fixedDoc);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * @param {Object} data The document data.\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static getThumb (data, options) {\r\n var requestModel = Doc.buildThumbRequestModel(data, options);\r\n\r\n if (data.DocType && data.DocType === 'Doc3D') {\r\n return Cx.Core.Doc3D.thumbnailUrl(requestModel);\r\n }\r\n\r\n return Cx.Core.Document.thumbnailUrl(requestModel);\r\n }\r\n\r\n /**\r\n * @param {Object} data The document data.\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static buildThumbRequestModel (data, options) {\r\n options = options || {};\r\n\r\n var requestModel = {\r\n Doc: { Id: data.Id },\r\n Format: 'png',\r\n Height: options.height,\r\n Width: options.width\r\n };\r\n\r\n // 'BackgroundColorOnly' or 'NoBackground'\r\n if (options.background) {\r\n requestModel.Background = options.background;\r\n }\r\n\r\n if (options.noCache) {\r\n requestModel.Doc.cache = Doc._getNoCacheString();\r\n }\r\n\r\n if (options.page) {\r\n requestModel.Page = { Id: options.page };\r\n }\r\n\r\n return requestModel;\r\n }\r\n\r\n static _getNoCacheString () {\r\n var d = new Date();\r\n return ('0' + d.getDate()).slice(-2) + '-' + ('0'+(d.getMonth()+1)).slice(-2) + '-' + d.getFullYear() + 'T' + ('0' + d.getHours()).slice(-2) + ':' + ('0' + d.getMinutes()).slice(-2) + ':' + ('0' + d.getSeconds()).slice(-2);\r\n }\r\n\r\n}\r\n","import Meta from './Meta.js';\r\n\r\n/**\r\n * TODO:\r\n * document.metadata.set(., );\r\n */\r\nexport default class TransferGroup {\r\n\r\n static _prefix () {\r\n return 'TRANSFER_GROUP_';\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static createGroup (figures) {\r\n var name = TransferGroup.getNextGroupName();\r\n\r\n figures.forEach(function (f) {\r\n Meta.setTransferGroup(f, name);\r\n });\r\n\r\n return name;\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n * @param {String} groupId\r\n * @param {String} name\r\n */\r\n static nameGroup (doc, groupId, name) {\r\n var me = TransferGroup,\r\n data = me.getData(doc);\r\n\r\n if (!data[groupId]) {\r\n data[groupId] = {};\r\n }\r\n\r\n data[groupId].name = name;\r\n me.setData(doc, data);\r\n }\r\n\r\n /**\r\n * We store user defined names for transfer groups in the\r\n * document metadata.\r\n * @param {Cx.Document} doc\r\n */\r\n static getData (doc) {\r\n var json = doc.metadata.get('transferGroupData'),\r\n data = json ? JSON.parse(json) : {};\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n * @param {Object} data\r\n */\r\n static setData (doc, data) {\r\n var json = JSON.stringify(data);\r\n doc.metadata.set('transferGroupData', json);\r\n }\r\n\r\n /**\r\n * Call when figures have been removed to clean any group names\r\n * no longer in the document. \r\n * @param {Cx.Document} doc\r\n */\r\n static cleanGroupNames (doc) {\r\n var me = TransferGroup,\r\n groups = me.getDesignGroups(),\r\n data = me.getData(doc),\r\n groupIds = Object.keys(data),\r\n newData = {};\r\n\r\n groupIds.forEach(function (id) {\r\n if (groups[id]) {\r\n newData[id] = data[id];\r\n }\r\n });\r\n\r\n me.setData(doc, newData);\r\n }\r\n\r\n /**\r\n * Returns a map of pre defined group names to their user defined names.\r\n * If no user defined name exists we map back to the pre defined name.\r\n * @param {Cx.Document} doc\r\n */\r\n static getGroupNameMap (doc) {\r\n var me = TransferGroup,\r\n data = me.getData(doc),\r\n designGroups = me.getDesignGroups(),\r\n groupNames = {},\r\n groupId;\r\n\r\n for (groupId in designGroups) {\r\n groupNames[groupId] = data[groupId] && data[groupId].name.length > 0 ? data[groupId].name : groupId;\r\n }\r\n\r\n // Example response\r\n // {\r\n // TRANSFER_GROUP_0: 'TRANSFER_GROUP_0',\r\n // TRANSFER_GROUP_1: 'UserDefinedName'\r\n // }\r\n return groupNames;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static addToGroup (figures, name) {\r\n figures.forEach(function (f) {\r\n Meta.setTransferGroup(f, name);\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static addToFirstGroup (figures) {\r\n var me = TransferGroup,\r\n activeFigures = me._getActiveDesignFigures(),\r\n name = me.getFirstGroupName(activeFigures);\r\n\r\n me.addToGroup(figures, name);\r\n }\r\n\r\n static _getDesignFigures () {\r\n return Application.designService.getDesignFigures();\r\n }\r\n\r\n static _getActiveDesignFigures () {\r\n return Application.designService.getActiveDesignFigures();\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n */\r\n static getName (figure) {\r\n return Meta.getTransferGroup(figure);\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n */\r\n static inGroup (figure) {\r\n return TransferGroup.getName(figure) ? true : false;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static isGroup (figures) {\r\n var len = figures.length,\r\n i = 0,\r\n groups = [],\r\n firstGroup, isGroup, transferGroups;\r\n\r\n for (; i < len; i++) {\r\n groups.push(TransferGroup.getName(figures[i]));\r\n\r\n // Not in a transfer group?\r\n if (!groups[i]) {\r\n return false;\r\n }\r\n }\r\n\r\n // All tranfer groups are the same?\r\n firstGroup = groups[0];\r\n isGroup = groups.every(function (item) { \r\n return item === firstGroup;\r\n });\r\n\r\n // Are all figures in the Transfer group selected?\r\n if (!isGroup) {\r\n return false;\r\n }\r\n\r\n transferGroups = TransferGroup.getActiveDesignGroups();\r\n\r\n if (transferGroups[firstGroup]) {\r\n return transferGroups[firstGroup].length === groups.length ? true : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n static getDesignGroups () {\r\n var me = TransferGroup,\r\n figures = me._getDesignFigures();\r\n\r\n return me.getGroups(figures);\r\n }\r\n\r\n static getActiveDesignGroups () {\r\n var me = TransferGroup,\r\n figures = me._getActiveDesignFigures();\r\n\r\n return me.getGroups(figures);\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static getFirstGroupName (figures) {\r\n var me = TransferGroup,\r\n groups = me.getGroups(figures),\r\n prefix = me._prefix(),\r\n indexes, name;\r\n\r\n for (name in groups) {\r\n if (name && name.indexOf(prefix) === 0) {\r\n return name;\r\n }\r\n }\r\n\r\n indexes = TransferGroup._getGroupIndexes(groups);\r\n\r\n if (indexes.length > 0) {\r\n return prefix + Math.min(indexes)\r\n }\r\n\r\n return me.getNextGroupName();\r\n }\r\n\r\n static getNextGroupName () {\r\n // We need unique group names across all pages\r\n var me = TransferGroup,\r\n figures = me._getDesignFigures(),\r\n groups = me.getGroups(figures),\r\n indexes = me._getGroupIndexes(groups),\r\n prefix = me._prefix();\r\n\r\n // Increment group name?\r\n prefix += indexes.length > 0 ? (Math.max.apply(Math, indexes) + 1) : 0;\r\n\r\n return prefix;\r\n }\r\n\r\n static isDuplicateGroupName (groupId, name) {\r\n var doc = Application.designService.designDocument(),\r\n groupMap = TransferGroup.getGroupNameMap(doc),\r\n id;\r\n\r\n for (id in groupMap) {\r\n if (id !== groupId && groupMap[id] === name) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * @param {Object} groups The return value from getTransferGroups().\r\n */\r\n static _getGroupIndexes (groups) {\r\n var prefix = TransferGroup._prefix(),\r\n indexes = [],\r\n name;\r\n\r\n for (name in groups) {\r\n if (name.indexOf(prefix) === 0) {\r\n indexes.push(parseInt(name.replace(prefix, '')));\r\n }\r\n }\r\n\r\n return indexes;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static getGroups (figures) {\r\n var groups = {};\r\n\r\n figures.forEach(function (f) {\r\n var name = Meta.getTransferGroup(f);\r\n\r\n if (name) {\r\n if (!groups[name]) {\r\n groups[name] = [];\r\n }\r\n\r\n groups[name].push(f);\r\n }\r\n });\r\n\r\n return groups;\r\n }\r\n\r\n /**\r\n * Transfer groups can only be on top level figures.\r\n * If the user groups, then tg are blown away and a new tg is created for the newly created group.\r\n * If user ungroups, then a new tg is created for all the figures that were in that group.\r\n * Called from canvas 'figureschanged' event.\r\n * Passing the added figures as the arg.\r\n * @param {Cx.Figure[]} added\r\n */\r\n static cleanGroups$ (added) {\r\n var me = TransferGroup,\r\n ungrouped;\r\n\r\n if (added) {\r\n // User grouped?\r\n if (added.length === 1 && added[0].isGroup && !me.inGroup(added[0])) {\r\n me.createGroup(added);\r\n\r\n // Clear transfer groups\r\n added[0].figures.forEach(function (f) {\r\n Meta.deleteTransferGroup(f);\r\n });\r\n }\r\n\r\n else {\r\n // User ungrouped?\r\n ungrouped = added.filter(function (f) {\r\n return !me.inGroup(f);\r\n });\r\n\r\n if (ungrouped.length > 0) {\r\n me.createGroup(ungrouped);\r\n }\r\n }\r\n }\r\n\r\n return Cx.resolve();\r\n }\r\n\r\n}\r\n","import CadworxAPI from './CadworxAPI.js';\r\nimport ExternalAPI from './ExternalAPI.js';\r\nimport Doc from '../helper/Doc.js';\r\nimport Querystring from '../util/Querystring.js';\r\n\r\nexport default class CadworxLiveAPI {\r\n\r\n /**\r\n * Private.\r\n */\r\n static _config () {\r\n return 'CadworxLive';\r\n }\r\n\r\n /**\r\n * Private.\r\n * Falls back to the default when user has no account.\r\n */\r\n static _sessionId () {\r\n var me = CadworxLiveAPI;\r\n return me._userSessionId() || me._defaultSessionId();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _defaultSessionId () {\r\n return '3DFADCB7-065F-4225-A128-514B03F32B82';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _userSessionId () {\r\n return Querystring.cadworxliveToken();\r\n }\r\n\r\n //\r\n // CHECK SESSION SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n */\r\n static hasUserSession () {\r\n return CadworxLiveAPI._userSessionId() ? true : false;\r\n }\r\n\r\n //\r\n // THUMBNAIL SUPPORT\r\n //\r\n\r\n /**\r\n * @param {Object} data The document data.\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static getDocThumb (data, options) {\r\n return CadworxLiveAPI._getCdnUrl({\r\n path: Cx.Core.Document.Url.Thumbnail,\r\n requestModel: Doc.buildThumbRequestModel(data, options)\r\n });\r\n }\r\n\r\n /**\r\n * @param {Object} data The font data.\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static getFontThumb (data, options) {\r\n var font = data.Font,\r\n fontName = font.name.toLowerCase(),\r\n text = (options.text || font.name).replace(/[\"'()]/g, \"\"); // Quotes and parenthesis break the thumbnail\r\n\r\n // Number only font?\r\n if (fontName.indexOf('numbers') !== -1) {\r\n text = '1234567890';\r\n }\r\n\r\n return CadworxLiveAPI._getCdnUrl({\r\n path: Cx.Core.Font.Url.Thumbnail,\r\n requestModel: {\r\n color: options.color || 'F0F0F0',\r\n font: { id: font.id },\r\n format: 'png',\r\n height: options.height,\r\n text: text,\r\n width: options.width\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _getCdnUrl (config) {\r\n var me = CadworxLiveAPI,\r\n databaseConfig = me._config(),\r\n sessionId = me._sessionId();\r\n\r\n return CadworxAPI.getCdnUrl(databaseConfig, sessionId, config);\r\n }\r\n\r\n //\r\n // SEARCH SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {Object} searchModel\r\n * @param {Object} [options]\r\n */\r\n static searchColors$ (searchModel, options) {\r\n return CadworxLiveAPI._request$(Cx.Core.Color.Url.Search, searchModel, 'GET', null, options);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} searchModel\r\n * @param {Object} [options]\r\n */\r\n static searchDocs$ (searchModel, options) {\r\n return CadworxLiveAPI._request$(Cx.Core.Document.Url.Search, searchModel, 'GET', null, options);\r\n }\r\n\r\n /**\r\n * @param {Object} searchModel\r\n * @param {Object} [options]\r\n */\r\n static searchFonts$ (searchModel, options) {\r\n return CadworxLiveAPI._request$(Cx.Core.Font.Url.Search, searchModel, 'GET', null, options);\r\n }\r\n\r\n /**\r\n * @param {String} paletteName\r\n */\r\n static enumColors$ (paletteName) {\r\n var url = Cx.Network.getProtocol() + '//cxinterface-live.azurewebsites.net/Interface/Palette/EnumColors.ashx',\r\n sessionId = CadworxLiveAPI._sessionId(),\r\n options = {\r\n contentType: 'application/json; charset=utf-8',\r\n data: 'sessionid=' + sessionId + '&su=false&palette=' + paletteName,\r\n dataType: 'text', // Invalid JSON, so use 'text'\r\n type: 'GET',\r\n url: url\r\n };\r\n\r\n return ExternalAPI.request$(options).then(function (response) {\r\n // Invalid JSON, so can only eval it\r\n var decoded = eval(\"(\" + response + \")\");\r\n return Cx.resolve({ Items: decoded.Colors });\r\n });\r\n }\r\n\r\n static enumPalettes$ () {\r\n var url = Cx.Network.getProtocol() + '//cxinterface-live.azurewebsites.net/Interface/Palette/EnumPalettes.ashx',\r\n sessionId = CadworxLiveAPI._sessionId(),\r\n options = {\r\n contentType: 'application/json; charset=utf-8',\r\n data: 'sessionid=' + sessionId + '&su=false',\r\n dataType: 'text', // Invalid JSON, so use 'text'\r\n type: 'GET',\r\n url: url\r\n };\r\n\r\n return ExternalAPI.request$(options).then(function (response) {\r\n // Invalid JSON, so can only eval it\r\n var decoded = eval(\"(\" + response + \")\");\r\n return Cx.resolve({ Items: decoded.Palettes });\r\n });\r\n }\r\n\r\n /**\r\n * @param {Object} searchModel\r\n * @param {Object} [options]\r\n */\r\n static searchTags$ (searchModel, options) {\r\n return CadworxLiveAPI._request$(Cx.Core.Tag.Url.Search, searchModel, 'GET', null, options);\r\n }\r\n\r\n //\r\n // READ SUPPORT\r\n //\r\n\r\n /**\r\n * @param {String} id\r\n * @param {Object} [options]\r\n */\r\n static loadDoc$ (id, options) {\r\n var requestModel = { Id: id },\r\n url = Cx.Core.Document.Url.Read;\r\n\r\n return CadworxLiveAPI._request$(url, requestModel, 'GET', null, options).then(\r\n function (docModel) {\r\n var me = CadworxLiveAPI,\r\n databaseConfig = me._config(),\r\n sessionId = me._sessionId(),\r\n doc = Cx.Document.fromCore(docModel),\r\n figures = doc.figures;\r\n\r\n return CadworxAPI.moveFigures$(databaseConfig, sessionId, figures).then(\r\n function () {\r\n return Cx.resolve(doc);\r\n }\r\n );\r\n }\r\n );\r\n }\r\n\r\n //\r\n // RESOURCE MOVE SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Font} font\r\n */\r\n static moveFont$ (font) {\r\n var me = CadworxLiveAPI,\r\n config = me._config(),\r\n sessionId = me._sessionId();\r\n\r\n return CadworxAPI.moveFont$(config, sessionId, font);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _request$ (url, requestModel, method, responseType, options) {\r\n var me = CadworxLiveAPI,\r\n databaseConfig = me._config(),\r\n sessionId = me._sessionId();\r\n\r\n return CadworxAPI.request$(databaseConfig, sessionId, url, requestModel, method, responseType, options);\r\n }\r\n\r\n}\r\n","import TransferGroup from './TransferGroup.js';\r\n\r\nexport default class TxDistress {\r\n\r\n static distressLayerId () {\r\n return 'distress_area';\r\n }\r\n\r\n static distressLayerXType() {\r\n return 'System.Distress';\r\n }\r\n\r\n static nonDistressedLayerId () {\r\n return 'non_distressed_area';\r\n }\r\n\r\n static isDistressLayer (layer) {\r\n var xType = TxDistress.distressLayerXType();\r\n return layer.xType === xType;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figures[]} figures\r\n */\r\n static filterOutDistressFigures (figures) {\r\n var xType = TxDistress.distressLayerXType();\r\n\r\n return figures.filter(function (f) {\r\n return f.layer.xType !== xType;\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas/Cx.Document} v\r\n */\r\n static findActiveDistressLayer (v) {\r\n var xType = TxDistress.distressLayerXType(),\r\n layers = v.activePageLayers;\r\n\r\n return layers.find(function (layer) {\r\n return layer.xType === xType;\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas/Cx.Document} v\r\n */\r\n static findActiveDistressFigures (v) {\r\n var layer = TxDistress.findActiveDistressLayer(v);\r\n return layer ? layer.figures.toArray() : [];\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas/Cx.Document} v\r\n */\r\n static findNonDistressedLayer (v) {\r\n var id = TxDistress.nonDistressedLayerId(),\r\n layers = v.activePageLayers;\r\n\r\n return layers.find(function (layer) {\r\n return layer.id === id;\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas/Cx.Document} v\r\n */\r\n static findNonDistressedLayerFigures (v) {\r\n var layer = TxDistress.findNonDistressedLayer(v);\r\n return layer ? layer.figures.toArray() : [];\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n */\r\n static hasDistressFigures (doc) {\r\n var distressLayerId = TxDistress.distressLayerId();\r\n\r\n return doc.pages.find(function (page) {\r\n return page.layers.find(function (layer) {\r\n return layer.id === distressLayerId && layer.figures.length > 0;\r\n }) ? true : false;\r\n }) ? true : false;\r\n }\r\n\r\n /**\r\n * Use when opening a 'Layout' document that may have distress.\r\n * There are 3 layers:\r\n * Bottom layer are distressed figures\r\n * Middle layer is the distress layer, only supposed to have one figure, the distress\r\n * Top layer are non distressed figures\r\n * @param {Cx.Document} doc\r\n */\r\n static parseDistressLayers (doc) {\r\n var middle = TxDistress.findActiveDistressLayer(doc),\r\n bottom, i, layers, top;\r\n\r\n if (middle && middle.figures.length > 0) {\r\n layers = doc.activePageLayers;\r\n i = layers.indexOf(middle);\r\n top = layers[i + 1];\r\n bottom = layers[i - 1];\r\n\r\n // Distressed\r\n return {\r\n distressed: bottom,\r\n distress: middle,\r\n nonDistressed: top\r\n }\r\n }\r\n\r\n // Not distressed\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas} canvas\r\n * @param {Cx.Figure/Cx.Figure[]} v\r\n * @return {Cx.Figure[]}\r\n */\r\n static addToDistressLayer (canvas, v) {\r\n var layer = TxDistress.findActiveDistressLayer(canvas);\r\n\r\n if (!layer) {\r\n layer = new Cx.Layer({\r\n figures: v,\r\n id: TxDistress.distressLayerId(),\r\n xType: TxDistress.distressLayerXType()\r\n });\r\n\r\n canvas.activePageLayers.push(layer);\r\n\r\n return layer.figures.toArray();\r\n }\r\n\r\n else {\r\n return layer.add(v);\r\n }\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas} canvas\r\n * @param {Cx.Figure/Cx.Figure[]} v\r\n * @return {Cx.Figure[]}\r\n */\r\n static addToNonDistressedLayer (canvas, v) {\r\n var layer = TxDistress.findNonDistressedLayer(canvas);\r\n\r\n if (!layer) {\r\n layer = new Cx.Layer({\r\n figures: v,\r\n id: TxDistress.nonDistressedLayerId()\r\n });\r\n\r\n canvas.activePageLayers.push(layer);\r\n\r\n return layer.figures.toArray();\r\n }\r\n\r\n else {\r\n return layer.add(v);\r\n }\r\n }\r\n\r\n /**\r\n * Sync Distress with size of design.\r\n * @param {Cx.Document} doc\r\n */\r\n static updateDistress$ (doc) {\r\n var haveDistressedFs = false,\r\n groups = TxDistress._getActiveDistressTransferGroups(doc),\r\n fn$ = [],\r\n distressFs, distressedFs, layers, name, tmp;\r\n\r\n for (name in groups) {\r\n layers = groups[name];\r\n distressFs = layers.distress;\r\n distressedFs = layers.distressed;\r\n\r\n // Ensure one distress per transfer group\r\n if (distressFs.length > 1) {\r\n tmp = distressFs.shift();\r\n TxDistress._removeDistressFigures(doc, distressFs);\r\n distressFs = [tmp];\r\n }\r\n\r\n if (distressFs.length > 0) {\r\n if (distressedFs.length > 0) {\r\n haveDistressedFs = true;\r\n fn$.push(TxDistress._updateDistressFigure$(layers));\r\n }\r\n\r\n // Remove distress when no distressed figures exist\r\n else {\r\n doc.remove(distressFs);\r\n }\r\n }\r\n }\r\n\r\n if (!haveDistressedFs) {\r\n TxDistress._removeEmptyDistressLayers(doc);\r\n }\r\n\r\n if (fn$.length > 0) {\r\n return Cx.whenAll(fn$);\r\n } else {\r\n return Cx.resolve();\r\n }\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n */\r\n static _removeEmptyDistressLayers (doc) {\r\n var layer = TxDistress.findActiveDistressLayer(doc);\r\n\r\n if (layer && layer.figures.length === 0) {\r\n doc.activePageLayers.remove(layer);\r\n }\r\n\r\n layer = TxDistress.findNonDistressedLayer(doc);\r\n\r\n if (layer && layer.figures.length === 0) {\r\n doc.activePageLayers.remove(layer);\r\n }\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static _removeDistressFigures (doc, figures) {\r\n var layer = TxDistress.findActiveDistressLayer(doc);\r\n\r\n if (layer) {\r\n layer.remove(figures);\r\n }\r\n }\r\n\r\n /**\r\n * @return\r\n * {\r\n * : {\r\n * distressed: [{Cx.Figure}, ...],\r\n * distress: [{Cx.Figure}, ...],\r\n * nonDistresssed: [{Cx.Figure}, ...]\r\n * },\r\n * ...\r\n * }\r\n */\r\n static _getActiveDistressTransferGroups (doc) {\r\n var designFigures = Application.designService.getActiveDesignFigures(),\r\n distressFigures = TxDistress.findActiveDistressFigures(doc),\r\n transferGroups = TransferGroup.getGroups(designFigures.concat(distressFigures)),\r\n distressGroups = {},\r\n figures, layers, name;\r\n\r\n for (name in transferGroups) {\r\n figures = transferGroups[name];\r\n layers = { distressed: [], distress: [], nonDistressed: [] };\r\n\r\n figures.forEach(function (f) {\r\n var layerId = f.layer.id;\r\n\r\n if (layerId === Application.designService.designLayerId) {\r\n layers.distressed.push(f);\r\n }\r\n else if (layerId === TxDistress.distressLayerId()) {\r\n layers.distress.push(f);\r\n }\r\n else if (layerId === TxDistress.nonDistressedLayerId()) {\r\n layers.nonDistressed.push(f);\r\n }\r\n });\r\n\r\n distressGroups[name] = layers;\r\n }\r\n\r\n return distressGroups;\r\n }\r\n\r\n /**\r\n * @param {Object} layers\r\n */\r\n static _updateDistressFigure$ (layers) {\r\n var eps = 0.01,\r\n distressFigure = layers.distress[0];\r\n\r\n return Cx.whenAll([Cx.bounds$(layers.distressed), distressFigure.bounds$()]).then(\r\n function (values) {\r\n var bounds = values[0],\r\n oldBounds = values[1];\r\n\r\n if (oldBounds.isEqual(bounds)) {\r\n // Nothing to do here...\r\n return Cx.resolve();\r\n }\r\n\r\n else if (\r\n Math.abs(oldBounds.width - bounds.width) < eps &&\r\n Math.abs(oldBounds.height - bounds.height) < eps\r\n ) {\r\n // Just move the distress figure\r\n distressFigure.translate(Cx.Point.substract(bounds.lx_ly, oldBounds.lx_ly));\r\n return Cx.resolve();\r\n }\r\n\r\n else {\r\n // We need to redo the powerclip\r\n return TxDistress._changeDistressFigure$(distressFigure, bounds);\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} shape The distess figure.\r\n * @param {Cx.Bounds} bounds The bounds of the distressed figures.\r\n */\r\n static _changeDistressFigure$ (shape, bounds) {\r\n var pcc = shape.powerClipContents[0],\r\n raster = pcc.figures[0];\r\n\r\n return raster.untransformedVectorBounds$().then(\r\n function (r_bounds) {\r\n // Adjust polyregion rectangle\r\n shape.polyregions = [Cx.Polyregion.CreateRectangle({ bounds: bounds })];\r\n shape.polyregions[0].powerClipId = pcc.id;\r\n\r\n shape.anchor = Cx.AbsoluteAnchor(bounds.center);\r\n shape.anchor.matrix22 = Cx.Matrix();\r\n shape.pin = bounds.center;\r\n\r\n // Modify the powerclip contents to scale it up if needed\r\n raster.matrix22 = Cx.Matrix();\r\n\r\n var r_width = r_bounds.width, r_height = r_bounds.height;\r\n var b_width = bounds.width, b_height = bounds.height;\r\n\r\n var s_x = r_width < b_width ? b_width /r_width : 1.0;\r\n var s_y = r_height < b_height ? b_height/r_height : 1.0;\r\n\r\n raster.matrix22 = Cx.Matrix.scale(Math.max(s_x, s_y));\r\n raster.pin = new Cx.Point(0, 0);\r\n\r\n return Cx.resolve();\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import CmeAPI from '../api/CmeAPI.js';\r\nimport Meta from './Meta.js';\r\nimport Tag from './Tag.js';\r\n\r\nexport default class CmeClipArt {\r\n\r\n /**\r\n * Find the id of the clip art small version.\r\n * @param {Cx.Figure} figure\r\n */\r\n static getIdOfSmallVersion (figure) {\r\n var sizeRe = /(sml|small)$/i;\r\n return CmeClipArt._getIdOfVersionBySize(figure, sizeRe);\r\n }\r\n\r\n /**\r\n * Find the id of the clip art large version.\r\n * @param {Cx.Figure} figure\r\n */\r\n static getIdOfLargeVersion (figure) {\r\n var sizeRe = /(lrg|large)$/i;\r\n return CmeClipArt._getIdOfVersionBySize(figure, sizeRe);\r\n }\r\n\r\n static _getIdOfVersionBySize (figure, sizeRe) {\r\n var name = Meta.getOriginalDocName(figure),\r\n i, isNegative, items, itemIsNegative, itemName, itemNameOnly, len, nameOnly, startWithRe;\r\n\r\n if (name) {\r\n isNegative = CmeClipArt.isNegative(figure);\r\n nameOnly = CmeClipArt.nameOnly(name);\r\n startWithRe = new RegExp(`^${nameOnly}$`, 'i');\r\n items = CmeClipArt._getAlternateClipArt(nameOnly);\r\n len = items.length;\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n itemName = items[i].Name;\r\n itemNameOnly = CmeClipArt.nameOnly(itemName);\r\n itemIsNegative = CmeClipArt.isNegative(itemName);\r\n\r\n if (sizeRe.test(itemName) && startWithRe.test(itemNameOnly) && (isNegative === itemIsNegative)) {\r\n return items[i].Id;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * 'Wolf-2N-Lrg' => true\r\n * @param {Cx.Figure/String} name\r\n */\r\n static isLarge (name) {\r\n var regex = /(-lrg|-large)$/i;\r\n\r\n if (name instanceof Cx.Figure) {\r\n name = Meta.getOriginalDocName(name);\r\n }\r\n\r\n return name ? regex.test(name) : false;\r\n }\r\n\r\n /**\r\n * 'Wolf-2N-Sml' => true\r\n * @param {Cx.Figure/String} v\r\n */\r\n static isNegative (v) {\r\n var regex;\r\n\r\n if (v instanceof Cx.Figure) {\r\n v = Meta.getOriginalDocName(v);\r\n }\r\n\r\n regex = /(n-lrg|n-large|n-sml|n-small)$/i;\r\n return v ? regex.test(v) : false;\r\n }\r\n\r\n /**\r\n * 'Wolf-2N-Sml' => true\r\n * @param {Cx.Figure/String} name\r\n */\r\n static isSwappable (name) {\r\n var regex = /(-lrg|-large|-sml|-small)$/i;\r\n\r\n if (name instanceof Cx.Figure) {\r\n name = Meta.getOriginalDocName(name);\r\n }\r\n\r\n return name ? regex.test(name) : false;\r\n }\r\n\r\n /**\r\n * 'Wolf-2N-Sml' => 'Wolf-2'\r\n * @param {String} name The \r\n */\r\n static nameOnly (name) {\r\n var isNegative = CmeClipArt.isNegative(name),\r\n arr = name.split('-'),\r\n nameOnly;\r\n\r\n arr.pop(); // Remove size part\r\n nameOnly = arr.join('-');\r\n\r\n if (isNegative) {\r\n // Remove 'N' part\r\n nameOnly = nameOnly.slice(0, -1);\r\n }\r\n\r\n return nameOnly;\r\n }\r\n\r\n /**\r\n * 'Wolf-2-Sml' => 'Wolf-2N-Sml'\r\n * @param {String} name\r\n */\r\n static negativeName (name) {\r\n // TODO: check if it is elegible clipart or just a part of the template in a better way\r\n if( name.indexOf('-') > -1 ) {\r\n if( name[name.length - 5] == 'N') {\r\n return name.slice(0, name.length-5) + name.slice(name.length-4, name.length);\r\n } else {\r\n return name.slice(0, name.length-4) + 'N' + name.slice(name.length-4, name.length);\r\n }\r\n } else {\r\n return name;\r\n }\r\n }\r\n\r\n //\r\n // ALTERNATIVE CLIP ART\r\n //\r\n\r\n /**\r\n * When clip art is opened we search for and cache any alternates (small/large).\r\n * @param {String} name\r\n */\r\n static searchForAlternates$ (name) {\r\n var nameOnly = CmeClipArt.nameOnly(name),\r\n searchModel = searchModel = {\r\n Match: { Tags: [Tag.cmeClipArtStoreRoot()] },\r\n Text: nameOnly\r\n };\r\n\r\n return CmeAPI.searchDocuments$(searchModel).then(function (response) {\r\n var items = response.Items || [],\r\n filtered = [];\r\n\r\n // Need to filter by 'nameOnly'\r\n // Response will contain 'Wheelbarrow' when 'arrow' was search for.\r\n items.forEach(function (item) {\r\n if (nameOnly == CmeClipArt.nameOnly(item.Name)) {\r\n filtered.push(item);\r\n }\r\n });\r\n\r\n if (filtered.length > 0) {\r\n CmeClipArt._setAlternateClipArt(nameOnly, filtered);\r\n }\r\n\r\n return Cx.resolve();\r\n });\r\n }\r\n\r\n //\r\n // NEGATIVE CLIP ART\r\n //\r\n\r\n /**\r\n * Find the id of the clip art negative version.\r\n * @param {Cx.Figure/String} figure\r\n */\r\n static getIdOfNegativeVersion (figure) {\r\n var name = typeof figure === 'string' ? figure : Meta.getOriginalDocName(figure),\r\n i, items, len, nameOnly, negName;\r\n\r\n if (name) {\r\n nameOnly = CmeClipArt.nameOnly(name);\r\n negName = CmeClipArt.negativeName(name);\r\n items = CmeClipArt._getAlternateClipArt(nameOnly);\r\n len = items.length;\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (items[i].Name === negName) {\r\n return items[i].Id;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Called from the contructor of CmeClipArtsStore.\r\n * We preload and cache all negative clip art so the store can sync the thumbnails.\r\n * @param {Number} page Internal use only.\r\n */\r\n static searchForNegatives$ (page) {\r\n page = isNaN(page) ? 1 : page;\r\n\r\n var limit = 500,\r\n start = (page - 1) * limit,\r\n searchModel = searchModel = {\r\n Match: { Tags: [Tag.cmeDarkClipArtRoot()] },\r\n Limit: limit,\r\n Start: start\r\n };\r\n\r\n return CmeAPI.searchDocuments$(searchModel).then(function (response) {\r\n var items = response.Items || [],\r\n totalCount = response.TotalCount;\r\n\r\n items.forEach(function (item) {\r\n var nameOnly = CmeClipArt.nameOnly(item.Name);\r\n CmeClipArt._setAlternateClipArt(nameOnly, item);\r\n });\r\n\r\n if (page * limit < totalCount) {\r\n return CmeClipArt.searchForNegatives$(page + 1);\r\n } else {\r\n return Cx.resolve();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @param {String} nameOnly E.g. 'Wolf-2'\r\n * @param {Object/Object[]} data\r\n */\r\n static _setAlternateClipArt (nameOnly, data) {\r\n // Ensure cache is created\r\n CmeClipArt._getAlternateClipArt(nameOnly);\r\n\r\n if (Array.isArray(data)) {\r\n var unique = [];\r\n\r\n // In case of dublicates\r\n data.filter(function (item) {\r\n var i = unique.findIndex(x => x.Name == item.Name);\r\n if(i <= -1){\r\n unique.push(item);\r\n }\r\n return null;\r\n });\r\n\r\n CmeClipArt.ART_WORK[nameOnly] = unique;\r\n } else {\r\n CmeClipArt.ART_WORK[nameOnly].push(data);\r\n }\r\n }\r\n\r\n /**\r\n * Look in the cache for the clip art negative, less or more detail alternates.\r\n * @param {String} nameOnly E.g. 'Wolf-2'\r\n */\r\n static _getAlternateClipArt (nameOnly) {\r\n var lookup = CmeClipArt.ART_WORK;\r\n\r\n if (!lookup) {\r\n lookup = CmeClipArt.ART_WORK = {};\r\n }\r\n\r\n if (!lookup[nameOnly]) {\r\n lookup[nameOnly] = [];\r\n }\r\n\r\n return lookup[nameOnly];\r\n }\r\n\r\n}\r\n","import Figure from '../helper/Figure.js';\r\n\r\nexport default class CadworxAPI {\r\n\r\n //\r\n // CDN SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * From Cx.Core.getCdnUrl()\r\n * This fails for TransferExpressAPI.\r\n */\r\n static getCdnUrl (databaseConfig, sessionId, config) {\r\n config.path = Cx.Core.CdnMap[config.path];\r\n return CadworxAPI.cdnGetUrl(databaseConfig, sessionId, config);\r\n }\r\n\r\n /**\r\n * Public.\r\n * From Cx.Cdn.getUrl()\r\n * TransferExpressAPI needs this one.\r\n */\r\n static cdnGetUrl (databaseConfig, sessionId, config) {\r\n config = config || {};\r\n config = Cx.applyIf(config, {\r\n excludeIdent: true,\r\n excludeLog: true\r\n });\r\n\r\n var url = Cx.Cdn.getRequestUrl(config.path);\r\n var params = Cx.Core.buildRequestData(config.requestModel, config.optionsModel, config.exludeIdent, config.excludeLog);\r\n\r\n params.config = databaseConfig;\r\n params.ident = {\r\n SessionId: sessionId,\r\n SuperUser: false\r\n };\r\n\r\n // If the params object is not empty, encode the params and add to the URL query string\r\n // When encoding URL components, we need to use encodeURIComponent to make sure all characters are encoded.\r\n // http://stackoverflow.com/a/9247370/945875\r\n if (!Cx_.isEmpty(params))\r\n return url + '?' + encodeURIComponent(Cx.encode(params));\r\n\r\n return url;\r\n }\r\n\r\n //\r\n // RESOURCE MOVE SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {String} remoteConfig\r\n * @param {String} remoteSessionId\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static moveFigures$ (remoteConfig, remoteSessionId, figures) {\r\n figures = Figure.ignoreGroups(figures);\r\n figures = Figure.ignorePowerClips(figures);\r\n\r\n var resources = [];\r\n\r\n figures.forEach(function (f) {\r\n var imageLink, index;\r\n\r\n if (f.isRaster) {\r\n // TX 3D Clip Art can have '.bmp', '.tiff', ... on end of the imageLink\r\n imageLink = f.imageLink;\r\n index = imageLink.indexOf('.');\r\n\r\n if (index !== -1) {\r\n imageLink = imageLink.substring(0, index);\r\n }\r\n\r\n resources.push({ Id: imageLink, Type: 'Image' });\r\n }\r\n\r\n else if (f.isProxyGroup) {\r\n resources.push({ Id: f.link, Type: 'ProxyGroup' });\r\n }\r\n\r\n else if (f.isText) {\r\n if (Figure.isMonogram(f)) {\r\n resources.push({ FontMatch: { FullName: f.fontName }, Type: 'Font' });\r\n } else {\r\n resources.push({ FontMatch: f.font.toCore(), Type: 'Font' });\r\n }\r\n }\r\n });\r\n\r\n return CadworxAPI.moveResources$(remoteConfig, remoteSessionId, resources);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} remoteConfig\r\n * @param {String} remoteSessionId\r\n * @param {Cx.Font} font\r\n */\r\n static moveFont$ (remoteConfig, remoteSessionId, font) {\r\n var resources = [{ FontMatch: font.toCore(), Type: 'Font' }];\r\n return CadworxAPI.moveResources$(remoteConfig, remoteSessionId, resources);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} remoteConfig\r\n * @param {String} remoteSessionId\r\n * @param {Cx.TextureBrush} brush\r\n */\r\n static moveTextureBrush$ (remoteConfig, remoteSessionId, brush) {\r\n var resources = [{ Id: brush.imageLink, Type: 'Image' }];\r\n return CadworxAPI.moveResources$(remoteConfig, remoteSessionId, resources);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} remoteConfig\r\n * @param {String} remoteSessionId\r\n * @param {Object[]} resources\r\n */\r\n static moveResources$ (remoteConfig, remoteSessionId, resources) {\r\n var requestModel;\r\n\r\n if (resources.length > 0) {\r\n requestModel = {\r\n RemoteAuthToken: remoteSessionId,\r\n RemoteConfig: remoteConfig,\r\n RemoteResources: resources\r\n };\r\n\r\n return Cadx.Core.request$('Core2/Resource/Move', requestModel, 'POST', null);\r\n } else {\r\n return Cx.resolve();\r\n }\r\n }\r\n\r\n //\r\n // REQUEST SUPPORT\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {String} databaseConfig\r\n * @param {String} sessionId\r\n * @param {String} url\r\n * @param {Object} requestModel\r\n * @param {String} method\r\n * @param {String} responseType\r\n * @param {Object} options\r\n */\r\n static request$ (databaseConfig, sessionId, url, requestModel, method, responseType, options) {\r\n var coreUrl = Cx.Core.getUrl(url),\r\n excludeIdent = true,\r\n requestData = Cx.Core.buildRequestData(requestModel, options, excludeIdent),\r\n jsonText;\r\n\r\n requestData.config = databaseConfig;\r\n\r\n if (sessionId) {\r\n requestData.ident = {\r\n SessionId: sessionId,\r\n SuperUser: false\r\n };\r\n }\r\n\r\n jsonText = Cx.encode(requestData);\r\n\r\n return Cx.Network.request$(coreUrl, jsonText, method, responseType).then(\r\n function(response){\r\n return CadworxAPI._handleSearchResponse$(response, coreUrl, jsonText, responseType);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _handleSearchResponse$ (response, url, jsonText, responseType){\r\n if(responseType && responseType !== 'json'){\r\n return Cx.resolve(response);\r\n }\r\n\r\n if (response && response.Success !== undefined) {\r\n if (response.Success === false) {\r\n var error = response.Error || null;\r\n\r\n _logUnsuccessfulResponse({\r\n error: error,\r\n jsonText: jsonText,\r\n url: url\r\n });\r\n\r\n return Cx.reject(error);\r\n }\r\n else {\r\n return Cx.resolve(response.Model);\r\n }\r\n }\r\n\r\n Cx.warning('Unable to \"handle\" Core API response, Success undefined.');\r\n return response;\r\n }\r\n\r\n}","import Brush from './Brush.js';\r\n\r\nexport default class Color {\r\n\r\n /**\r\n * @param {Cx.Brush} brush\r\n */\r\n static fromBrush (brush) {\r\n // Preserve encoded name\r\n var c = brush.color;\r\n c.name = brush.name;\r\n return c;\r\n }\r\n\r\n /**\r\n * @param {Cx.Color/Object} data\r\n * @param {Object} options\r\n */\r\n static getThumbStyle (data, options) {\r\n options = options || {};\r\n\r\n var alpha, opacity, rgb, showThrough, str, style;\r\n\r\n if (data instanceof Cx.Color) {\r\n alpha = data.alpha;\r\n rgb = '#' + data.rgb;\r\n showThrough = data.showThrough;\r\n } else {\r\n alpha = data.Alpha;\r\n rgb = '#' + data.ARGB.substring(2, 8).toUpperCase();\r\n showThrough = data.ShowThrough;\r\n }\r\n\r\n opacity = alpha * 100;\r\n\r\n style = {\r\n 'background-color': rgb,\r\n 'background-image': 'none',\r\n 'opacity': alpha,\r\n '-webkit-opacity': alpha,\r\n '-moz-opacity': alpha,\r\n 'filter': 'alpha(opacity=' + opacity + ')'\r\n };\r\n\r\n if (showThrough) {\r\n style['background-color'] = 'transparent';\r\n style['background-image'] = '';\r\n }\r\n\r\n if (options.height) {\r\n style.height = options.height + 'px';\r\n }\r\n\r\n if (options.width) {\r\n style.width = options.width + 'px';\r\n }\r\n\r\n if (options.asString) {\r\n str = '';\r\n\r\n for (var key in style) {\r\n str += key + ':' + style[key] + ';';\r\n }\r\n\r\n return str;\r\n }\r\n\r\n return style;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figures} figures\r\n * @param {Object} options\r\n * @param {Boolean} ignoreShowThrough\r\n */\r\n static uniqueColorZones (figures, options, ignoreShowThrough) {\r\n var zones = Cx.uniqueColorZones(figures, Object.assign({ collapseTags: (figures.count != 1) }, options || {}));\r\n\r\n if (ignoreShowThrough) {\r\n // Filter out 'ShowThrough' colors\r\n zones = zones.filter(function (zone) { \r\n return !zone.value.showThrough;\r\n });\r\n }\r\n\r\n return zones;\r\n }\r\n\r\n /**\r\n * @param {Object} colorZones\r\n */\r\n static brushes (colorZones) {\r\n var brushes = [];\r\n\r\n colorZones.forEach(function (zone) {\r\n brushes.push(Brush.fromColor(zone.value));\r\n });\r\n\r\n return brushes;\r\n }\r\n\r\n}\r\n","/**\r\n * Allows us to call external API's.\r\n */\r\nexport default class ExternalAPI {\r\n\r\n static request$ (config) {\r\n config.handleNetworkError = function () {\r\n ExternalAPI._logNetworkError(Cx.Network.XMLHttpRequest.standardizeNetworkError.apply(this, arguments));\r\n }\r\n\r\n if (config.timeout === undefined) {\r\n config.timeout = 60000 // ms\r\n }\r\n\r\n return Cx.Network.XMLHttpRequest.request$(config);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} config\r\n */\r\n static _logNetworkError (config) {\r\n var dataSent = (!Cx_.isEmpty(config.jsonText)) ? Cx.decode(config.jsonText) : null;\r\n\r\n // Error message with error type\r\n var error = 'Network Error: \"' + ((config.errorType) ? config.errorType : '[unknown error type]');\r\n\r\n // If more specific error message, add\r\n if (config.errorDetail && config.errorDetail != config.errorType) error += ': ' + config.errorDetail;\r\n\r\n // Add url\r\n error += '\" for request to ' + config.url;\r\n\r\n // Send error with custom data (RequestId)\r\n if (dataSent) {\r\n var requestId = (dataSent.log) ? dataSent.log.RequestId : dataSent.RequestId;\r\n Cx.error(error, { RequestId: requestId, RequestJson: config.jsonText });\r\n } else {\r\n Cx.error(error);\r\n }\r\n }\r\n\r\n}\r\n","import Figure from './Figure.js';\r\nimport Meta from './Meta.js';\r\n\r\nexport default class Cme {\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static filterFigures (figures) {\r\n return figures.filter(function (f) {\r\n return (Meta.isCme(f));\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static getClipArtFigures (figures) {\r\n figures = Figure.ignoreGroups(figures);\r\n\r\n var found = [];\r\n\r\n figures.forEach(function (f) {\r\n if (f instanceof Cx.Shape) {\r\n found.push(f);\r\n }\r\n });\r\n\r\n return found;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static getTextFigures (figures) {\r\n figures = Figure.ignoreGroups(figures);\r\n\r\n var found = [];\r\n\r\n figures.forEach(function (f) {\r\n if (f.isText && !Figure.isMonogram(f)) {\r\n found.push(f);\r\n }\r\n });\r\n\r\n return found;\r\n }\r\n\r\n}","import Brush from './Brush.js';\r\nimport CmeClipArt from './CmeClipArt.js';\r\nimport CmeFixBrush from './CmeFixBrush.js';\r\nimport Meta from './Meta.js';\r\n\r\nexport default class CmeBrush {\r\n\r\n /**\r\n * CME requires this default black or pricing fails.\r\n * @param {Cx.Figure/Cx.Figure[]} target\r\n */\r\n static ensureDefaultBrush (target) {\r\n target = Array.isArray(target) ? target : [target];\r\n target.forEach(function (figure) {\r\n var isCme = Meta.areCme([figure]),\r\n zones;\r\n\r\n if (isCme) {\r\n zones = CmeBrush.uniqueBrushZones([figure]);\r\n zones.forEach(function (zone) {\r\n var material = Brush.cmeDecodeMaterial(zone.value),\r\n isNegative, color;\r\n\r\n if (material === undefined) {\r\n isNegative = CmeClipArt.isNegative(figure);\r\n\r\n if (isNegative) {\r\n color = { rgb: 'FFFFFF', name: 'FLM..Thermo-FILM..001..White' };\r\n } else {\r\n color = { rgb: '000000', name: 'FLM..Thermo-FILM..002..Black' };\r\n }\r\n\r\n CmeBrush.setBrush([figure], Brush.fromColor(color));\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure/Cx.Figure[]} target\r\n * @param {Cx.Brush} brush\r\n */\r\n static ensureSingleBrush (target, brush) {\r\n if (Meta.areCme(target)) {\r\n brush = brush || CmeBrush.firstBrush(target);\r\n\r\n if (brush) {\r\n CmeBrush.setBrush(target, brush);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure/Cx.Figure[]} target\r\n */\r\n static firstBrush (target) {\r\n target = Array.isArray(target) ? target : [target];\r\n\r\n var len = target.length,\r\n i = 0,\r\n brushes, figure, zones;\r\n\r\n for (; i < len; i++) {\r\n figure = target[i];\r\n\r\n if (Meta.isCme(figure)) {\r\n zones = CmeBrush.uniqueBrushZones([figure]),\r\n brushes = Brush.brushes(zones);\r\n\r\n if (brushes.length > 0) {\r\n return brushes[0];\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure/Cx.Figure[]} target\r\n * @param {Cx.Brush} brush\r\n */\r\n static setBrush (target, brush) {\r\n target = Array.isArray(target) ? target : [target];\r\n\r\n var zones = CmeBrush.uniqueBrushZones(target);\r\n\r\n // Ensure CME metadata is set\r\n CmeFixBrush.fix(target, brush);\r\n\r\n zones.forEach(function (zone) {\r\n Cx.changeBrushZone(target, zone, brush);\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Figures} figures\r\n * @param {Object} options\r\n */\r\n static uniqueBrushZones (figures, options) {\r\n var zones = Cx.uniqueBrushZones(figures, Object.assign({ collapseTags: (figures.count != 1) }, options || {}));\r\n\r\n // Filter out 'Empty' and 'ShowThrough' colors\r\n zones = zones.filter(function (zone) { \r\n var brush = zone.value,\r\n type = brush.getType(),\r\n isBrush = type === 'Brush',\r\n isEmpty = type === 'Empty',\r\n isShowThrough = isBrush && brush.color.showThrough;\r\n\r\n return !isEmpty && !isShowThrough;\r\n });\r\n\r\n return zones;\r\n }\r\n\r\n}","import Meta from './Meta.js';\r\n\r\n/**\r\n * When distressed, there are 3 layers.\r\n * Bottom layer are distressed figures.\r\n * Middle layer is the distress layer, only supposed to have one figure, the distress.\r\n * Top layer are non distressed figures.\r\n */\r\nexport default class Tx {\r\n\r\n static filterFigures (figures) {\r\n return figures.filter(function (f) {\r\n return (Meta.isTransferExpress(f));\r\n });\r\n }\r\n\r\n static isMultiPartText (figure) {\r\n return (figure instanceof Cx.Text && figure.isMultiPart);\r\n }\r\n\r\n static everyClipart (figures) {\r\n return Tx.recursiveCollect(figures, function (f) {\r\n // Only check for 'System.Clipart', txId may not be set yet\r\n return f.xType == 'System.Clipart' ? f : null;\r\n });\r\n }\r\n\r\n static everyTextBlock (figures) {\r\n return Tx.recursiveCollect(figures, function(f){\r\n return f instanceof Cx.Text ? f : null;\r\n });\r\n }\r\n\r\n static recursiveCollect (figures, func) {\r\n var r = [];\r\n Tx.recursiveForEach(figures, function(f){\r\n var cf = func(f);\r\n if (cf) {\r\n if (Cx_.isArray(cf)) {\r\n r = Cx_.union(r, cf);\r\n }\r\n else {\r\n r.push(cf);\r\n }\r\n }\r\n });\r\n return r;\r\n }\r\n\r\n static recursiveForEach (figures, func) {\r\n Cx_.forEach(figures, function(f){\r\n func(f);\r\n if (f instanceof Cx.Figure.Group) {\r\n Tx.recursiveForEach(f.figures, func); \r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n */\r\n static simplifyMultipartText (doc) {\r\n doc.figures.forEach(function (f) {\r\n if (f.isMultiPart && Cx.Figure.textPartsCanBeSimplified(f)) {\r\n var simplified = Cx.Figure.simplifyTextParts(f.clone());\r\n doc.replace(f, simplified);\r\n }\r\n });\r\n }\r\n\r\n}\r\n","export default class TxColor {\r\n\r\n static isCustomColor (color) {\r\n return (color.name && color.name.indexOf('PANTONE') !== -1);\r\n }\r\n\r\n /**\r\n * @param {Cx.Color} color\r\n */\r\n static isInvalid (color) {\r\n return !color.showThrough && color.alpha === 0;\r\n }\r\n\r\n /**\r\n * Data returned by TransferExpressAPI.loadColors$()\r\n * @param {Object} data\r\n * @returns {Object} txColor\r\n */\r\n static parseTxColorData (data) {\r\n return {\r\n Name: data.ColorName,\r\n CMYKHex: TxColor._toHex(data.CMYK),\r\n RGBHex: TxColor._toHex(data.RGB),\r\n Key: data.ColorKey,\r\n GroupKey: data.ColorGroupKey,\r\n GroupName: data.ColorGroupName,\r\n PMS: data.PMS,\r\n PMSName: data.PMSTxNameEquivalent,\r\n SpotColorName: data.corel_txname\r\n };\r\n }\r\n\r\n /**\r\n * The color data returned by parseTxColorData()\r\n * @param {Object} txColor\r\n */\r\n static toCxColor (txColor) {\r\n return Cx.Color({\r\n cmyk: txColor.CMYKHex,\r\n name: txColor.Name || 'No name',\r\n owner: {}, // Preserve ownership\r\n rgb: txColor.RGBHex,\r\n spotColorName: txColor.SpotColorName\r\n });\r\n }\r\n\r\n static _toHex (value) {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n // If no ',' then assume it is already formatted\r\n if (value.indexOf(',') == -1) {\r\n return value;\r\n }\r\n\r\n var result = '',\r\n split = value.split(',');\r\n\r\n split.forEach(function (item) {\r\n result += TxColor._decimalToHex(item);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n static _decimalToHex (n) {\r\n var HCHARS = '0123456789abcdef';\r\n n = parseInt(n, 10);\r\n n = (!isNaN(n)) ? n : 0;\r\n n = (n > 255 || n < 0) ? 0 : n;\r\n\r\n return HCHARS.charAt((n - n % 16) / 16) + HCHARS.charAt(n % 16);\r\n }\r\n\r\n}\r\n","/**\r\n * Running the following code before any other code will create the functions if\r\n * not natively available.\r\n */\r\n\r\n/**\r\n * Array.isArray()\r\n * If the object is an Array, true is returned, otherwise false is.\r\n * developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\r\n */\r\nif (!Array.isArray) {\r\n Array.isArray = function(arg) {\r\n return Object.prototype.toString.call(arg) === '[object Array]';\r\n };\r\n}\r\n\r\n/**\r\n * Array.forEach()\r\n * Production steps of ECMA-262, Edition 5, 15.4.4.18\r\n * Reference: http://es5.github.io/#x15.4.4.18\r\n */\r\nif (!Array.prototype.forEach) {\r\n\r\n Array.prototype.forEach = function(callback/*, thisArg*/) {\r\n\r\n var T, k;\r\n\r\n if (this == null) {\r\n throw new TypeError('this is null or not defined');\r\n }\r\n\r\n // 1. Let O be the result of calling toObject() passing the\r\n // |this| value as the argument.\r\n var O = Object(this);\r\n\r\n // 2. Let lenValue be the result of calling the Get() internal\r\n // method of O with the argument \"length\".\r\n // 3. Let len be toUint32(lenValue).\r\n var len = O.length >>> 0;\r\n\r\n // 4. If isCallable(callback) is false, throw a TypeError exception. \r\n // See: http://es5.github.com/#x9.11\r\n if (typeof callback !== 'function') {\r\n throw new TypeError(callback + ' is not a function');\r\n }\r\n\r\n // 5. If thisArg was supplied, let T be thisArg; else let\r\n // T be undefined.\r\n if (arguments.length > 1) {\r\n T = arguments[1];\r\n }\r\n\r\n // 6. Let k be 0.\r\n k = 0;\r\n\r\n // 7. Repeat while k < len.\r\n while (k < len) {\r\n\r\n var kValue;\r\n\r\n // a. Let Pk be ToString(k).\r\n // This is implicit for LHS operands of the in operator.\r\n // b. Let kPresent be the result of calling the HasProperty\r\n // internal method of O with argument Pk.\r\n // This step can be combined with c.\r\n // c. If kPresent is true, then\r\n if (k in O) {\r\n\r\n // i. Let kValue be the result of calling the Get internal\r\n // method of O with argument Pk.\r\n kValue = O[k];\r\n\r\n // ii. Call the Call internal method of callback with T as\r\n // the this value and argument list containing kValue, k, and O.\r\n callback.call(T, kValue, k, O);\r\n }\r\n // d. Increase k by 1.\r\n k++;\r\n }\r\n // 8. return undefined.\r\n };\r\n}\r\n\r\n/**\r\n * Array.some()\r\n * Production steps of ECMA-262, Edition 5, 15.4.4.17\r\n * Reference: http://es5.github.io/#x15.4.4.17\r\n */\r\nif (!Array.prototype.some) {\r\n Array.prototype.some = function(fun/*, thisArg*/) {\r\n 'use strict';\r\n\r\n if (this == null) {\r\n throw new TypeError('Array.prototype.some called on null or undefined');\r\n }\r\n\r\n if (typeof fun !== 'function') {\r\n throw new TypeError();\r\n }\r\n\r\n var t = Object(this);\r\n var len = t.length >>> 0;\r\n\r\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\r\n for (var i = 0; i < len; i++) {\r\n if (i in t && fun.call(thisArg, t[i], i, t)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n}\r\n\r\n/**\r\n * Array.filter()\r\n * Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\r\n */\r\nif (!Array.prototype.filter){\r\n Array.prototype.filter = function(func, thisArg) {\r\n 'use strict';\r\n if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) )\r\n throw new TypeError();\r\n \r\n var len = this.length >>> 0,\r\n res = new Array(len), // preallocate array\r\n t = this, c = 0, i = -1;\r\n if (thisArg === undefined){\r\n while (++i !== len){\r\n // checks to see if the key was set\r\n if (i in this){\r\n if (func(t[i], i, t)){\r\n res[c++] = t[i];\r\n }\r\n }\r\n }\r\n }\r\n else{\r\n while (++i !== len){\r\n // checks to see if the key was set\r\n if (i in this){\r\n if (func.call(thisArg, t[i], i, t)){\r\n res[c++] = t[i];\r\n }\r\n }\r\n }\r\n }\r\n \r\n res.length = c; // shrink down array to proper size\r\n return res;\r\n };\r\n}\r\n\r\n/**\r\n * Array.find()\r\n * Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\r\n * https://tc39.github.io/ecma262/#sec-array.prototype.find\r\n */\r\nif (!Array.prototype.find) {\r\n Object.defineProperty(Array.prototype, 'find', {\r\n value: function(predicate) {\r\n // 1. Let O be ? ToObject(this value).\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n var o = Object(this);\r\n\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n\r\n // 5. Let k be 0.\r\n var k = 0;\r\n\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return kValue.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return kValue;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n\r\n // 7. Return undefined.\r\n return undefined;\r\n },\r\n configurable: true,\r\n writable: true\r\n });\r\n}\r\n\r\n/**\r\n * Array.findIndex()\r\n * https://tc39.github.io/ecma262/#sec-array.prototype.findindex\r\n */\r\nif (!Array.prototype.findIndex) {\r\n Object.defineProperty(Array.prototype, 'findIndex', {\r\n value: function(predicate) {\r\n // 1. Let O be ? ToObject(this value).\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n var o = Object(this);\r\n\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n\r\n // 5. Let k be 0.\r\n var k = 0;\r\n\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return k.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return k;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n\r\n // 7. Return -1.\r\n return -1;\r\n },\r\n configurable: true,\r\n writable: true\r\n });\r\n}\r\n\r\n/**\r\n * Object.assign();\r\n * developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\r\n */\r\nif (typeof Object.assign != 'function') {\r\n Object.assign = function (target, varArgs) { // .length of function is 2\r\n 'use strict';\r\n if (target == null) { // TypeError if undefined or null\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n var to = Object(target);\r\n\r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n\r\n if (nextSource != null) { // Skip over if undefined or null\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n };\r\n}\r\n\r\n/**\r\n * ValidityState\r\n * css-tricks.com/form-validation-part-3-validity-state-api-polyfill\r\n * github.com/cferdinandi/validate\r\n */\r\n;(function (window, document, undefined) {\r\n\r\n\t'use strict';\r\n\r\n\t// Make sure that ValidityState is supported in full (all features)\r\n\tvar supported = function () {\r\n\t\tvar input = document.createElement('input');\r\n\t\treturn ('validity' in input && 'badInput' in input.validity && 'patternMismatch' in input.validity && 'rangeOverflow' in input.validity && 'rangeUnderflow' in input.validity && 'stepMismatch' in input.validity && 'tooLong' in input.validity && 'tooShort' in input.validity && 'typeMismatch' in input.validity && 'valid' in input.validity && 'valueMissing' in input.validity);\r\n\t};\r\n\r\n\t// Save browser's own implementation if available\r\n\tvar browserValidityFunctions = (function() {\r\n\t\tvar inputValidity = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'validity');\r\n\t\tvar buttonValidity = Object.getOwnPropertyDescriptor(HTMLButtonElement.prototype, 'validity');\r\n\t\tvar selectValidity = Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, 'validity');\r\n\t\tvar textareaValidity = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'validity');\r\n\r\n\t\tvar functions = {};\r\n\t\tif (inputValidity) {\r\n\t\t\tfunctions.input = inputValidity.get;\r\n\t\t}\r\n\t\tif (buttonValidity) {\r\n\t\t\tfunctions.button = buttonValidity.get;\r\n\t\t}\r\n\t\tif (selectValidity) {\r\n\t\t\tfunctions.select = selectValidity.get;\r\n\t\t}\r\n\t\tif (textareaValidity) {\r\n\t\t\tfunctions.textarea = textareaValidity.get;\r\n\t\t}\r\n\r\n\t\treturn functions;\r\n\t})();\r\n\r\n\t/**\r\n\t * Generate the field validity object\r\n\t * @param {Node]} field The field to validate\r\n\t * @return {Object} The validity object\r\n\t */\r\n\tvar getValidityState = function (field) {\r\n\r\n\t\t// Variables\r\n\t\tvar type = field.getAttribute('type') || field.nodeName.toLowerCase();\r\n\t\tvar isNum = type === 'number' || type === 'range';\r\n\t\tvar length = field.value.length;\r\n\t\tvar valid = true;\r\n\r\n\t\t// If radio group, get selected field\r\n\t\tif (field.type === 'radio' && field.name) {\r\n\t\t\tvar group = document.getElementsByName(field.name);\r\n\t\t\tif (group.length > 0) {\r\n\t\t\t\tfor (var i = 0; i < group.length; i++) {\r\n\t\t\t\t\tif (group[i].form === field.form && field.checked) {\r\n\t\t\t\t\t\tfield = group[i];\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Run validity checks\r\n\t\tvar checkValidity = {\r\n\t\t\tbadInput: (isNum && length > 0 && !/^[-+]?(?:\\d+|\\d*[.,]\\d+)$/.test(field.value)), // value of a number field is not a number\r\n\t\t\tpatternMismatch: (field.hasAttribute('pattern') && length > 0 && new RegExp(field.getAttribute('pattern')).test(field.value) === false), // value does not conform to the pattern\r\n\t\t\trangeOverflow: (field.hasAttribute('max') && isNum && field.value > 0 && Number(field.value) > Number(field.getAttribute('max'))), // value of a number field is higher than the max attribute\r\n\t\t\trangeUnderflow: (field.hasAttribute('min') && isNum && field.value > 0 && Number(field.value) < Number(field.getAttribute('min'))), // value of a number field is lower than the min attribute\r\n\t\t\tstepMismatch: (isNum && ((field.hasAttribute('step') && field.getAttribute('step') !== 'any' && Number(field.value) % Number(field.getAttribute('step')) !== 0) || (!field.hasAttribute('step') && Number(field.value) % 1 !== 0))), // value of a number field does not conform to the stepattribute\r\n\t\t\ttooLong: (field.hasAttribute('maxLength') && field.getAttribute('maxLength') > 0 && length > parseInt(field.getAttribute('maxLength'), 10)), // the user has edited a too-long value in a field with maxlength\r\n\t\t\ttooShort: (field.hasAttribute('minLength') && field.getAttribute('minLength') > 0 && length > 0 && length < parseInt(field.getAttribute('minLength'), 10)), // the user has edited a too-short value in a field with minlength\r\n\t\t\ttypeMismatch: (length > 0 && ((type === 'email' && !/^([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d))*$/.test(field.value)) || (type === 'url' && !/^(?:(?:https?|HTTPS?|ftp|FTP):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)*)(?::\\d{2,5})?(?:[\\/?#]\\S*)?$/.test(field.value)))), // value of a email or URL field is not an email address or URL\r\n\t\t\tvalueMissing: (field.hasAttribute('required') && (((type === 'checkbox' || type === 'radio') && !field.hasAttribute('checked')) || (type === 'select' && (field.selectedIndex === -1 || field.options[field.selectedIndex].value.length < 1)) || (type !== 'checkbox' && type !== 'radio' && type !=='select' && length < 1))) // required field without a value\r\n\t\t};\r\n\r\n\t\t// Run browser's own validation if available\r\n\t\tvar fieldTagName = field.tagName.toLowerCase();\r\n\t\tvar browserValidity = fieldTagName in browserValidityFunctions ? browserValidityFunctions[fieldTagName].call(field) : {};\r\n\r\n\t\t// Check if any errors\r\n\t\tfor (var key in checkValidity) {\r\n\t\t\tif (checkValidity.hasOwnProperty(key)) {\r\n\t\t\t\t// If browser has detected an error, adopt it to our validity object\r\n\t\t\t\tif (key in browserValidity && browserValidity[key]) {\r\n\t\t\t\t\tcheckValidity[key] = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If there's an error, change valid value\r\n\t\t\t\tif (checkValidity[key]) {\r\n\t\t\t\t\tvalid = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add valid property to validity object\r\n\t\tcheckValidity.valid = valid;\r\n\r\n\t\t// Return object\r\n\t\treturn checkValidity;\r\n\r\n\t};\r\n\r\n\t// If the full set of ValidityState features aren't supported, polyfill\r\n\tif (!supported()) {\r\n\t\tObject.defineProperty(HTMLInputElement.prototype, 'validity', {\r\n\t\t\tget: function ValidityState() {\r\n\t\t\t\treturn getValidityState(this);\r\n\t\t\t},\r\n\t\t\tconfigurable: true,\r\n\t\t});\r\n\t\tObject.defineProperty(HTMLButtonElement.prototype, 'validity', {\r\n\t\t\tget: function ValidityState() {\r\n\t\t\t\treturn getValidityState(this);\r\n\t\t\t},\r\n\t\t\tconfigurable: true,\r\n\t\t});\r\n\t\tObject.defineProperty(HTMLSelectElement.prototype, 'validity', {\r\n\t\t\tget: function ValidityState() {\r\n\t\t\t\treturn getValidityState(this);\r\n\t\t\t},\r\n\t\t\tconfigurable: true,\r\n\t\t});\r\n\t\tObject.defineProperty(HTMLTextAreaElement.prototype, 'validity', {\r\n\t\t\tget: function ValidityState() {\r\n\t\t\t\treturn getValidityState(this);\r\n\t\t\t},\r\n\t\t\tconfigurable: true,\r\n\t\t});\r\n\t}\r\n\r\n})(window, document);\r\n","import CmeAPI from '../api/CmeAPI';\r\n\r\n/**\r\n * This needs to load at start up so we can fix font source metadata before first commit\r\n */\r\nexport default class CmeFonts {\r\n\r\n static load$ () {\r\n var searchModel = {\r\n Match: {\r\n Archived: false,\r\n Owned: false,\r\n Shared: true,\r\n Tags: [{ Name:'/designer/v2/PUBLIC/Standard', Owned: false, Shared: true, Type: 'Font'}],\r\n Type: 'Font'\r\n },\r\n SortDir: 'ASC'\r\n };\r\n\r\n return CmeAPI.searchFonts$(searchModel).then(function (response) {\r\n var me = CmeFonts,\r\n items = response.Items,\r\n nameLookup = [];\r\n\r\n items.forEach(function (data) {\r\n var font = Cx.Font.fromCore(data);\r\n nameLookup.push(font.name);\r\n });\r\n\r\n me._nameLookup = nameLookup;\r\n me._fontData = items;\r\n\r\n return Cx.resolve(items);\r\n });\r\n }\r\n\r\n static fontData () {\r\n return CmeFonts._fontData || [];\r\n }\r\n\r\n /**\r\n * @param {String} name\r\n */\r\n static inNameLookup (name) {\r\n var lookup = CmeFonts._nameLookup || [];\r\n return lookup.indexOf(name) !== -1;\r\n }\r\n\r\n}\r\n","import Brush from './Brush.js';\r\nimport Meta from './Meta.js';\r\n\r\nexport default class CmeFixBrush {\r\n\r\n /**\r\n * Called from Brush.setBrush().\r\n * @param {Cx.Figure/Cx.Figure[]} target\r\n * @param {Cx.Brush} brush\r\n */\r\n static fix (target, brush) {\r\n target = Array.isArray(target) ? target : [target];\r\n\r\n if (Meta.areCme(target)) {\r\n var color = Brush.cmeDecodeColor(brush),\r\n material = Brush.cmeDecodeMaterial(brush);\r\n\r\n if (color) {\r\n target.forEach(function (f) {\r\n Meta.setMaterialColor(f, color);\r\n });\r\n }\r\n\r\n if (material) {\r\n target.forEach(function (f) {\r\n Meta.setMaterial(f, material);\r\n });\r\n }\r\n }\r\n }\r\n\r\n}\r\n","/**\r\n* Detect Element Resize.\r\n* Forked in order to guard against unsafe 'window' and 'document' references by react-virtualized project.\r\n* ES6ified and npmified by @noderaider.\r\n* https://github.com/noderaider/detect-resize\r\n*\r\n* https://github.com/sdecima/javascript-detect-element-resize\r\n* Sebastian Decima\r\n*\r\n* version: 0.5.3\r\n**/\r\n\r\n// Check `document` and `window` in case of server-side rendering\r\nconst IS_BROWSER = () => typeof window === 'object'\r\nconst _window = IS_BROWSER() ? window : global\r\n\r\nconst attachEvent = IS_BROWSER() ? document.attachEvent : false\r\nlet stylesCreated = false\r\nlet animationName = null\r\nlet animationKeyframes = null\r\nlet animationStyle = null\r\nlet animationstartevent = null\r\n\r\nconst resetTriggers = function(element) {\r\n let triggers = element.__resizeTriggers__\r\n let expand = triggers.firstElementChild\r\n let contract = triggers.lastElementChild\r\n let expandChild = expand.firstElementChild\r\n contract.scrollLeft = contract.scrollWidth\r\n contract.scrollTop = contract.scrollHeight\r\n expandChild.style.width = `${expand.offsetWidth + 1}px`\r\n expandChild.style.height = `${expand.offsetHeight + 1}px`\r\n expand.scrollLeft = expand.scrollWidth\r\n expand.scrollTop = expand.scrollHeight\r\n}\r\n\r\nconst requestFrame = (function() {\r\n let raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || (fn => setTimeout(fn, 20))\r\n return fn => raf(fn)\r\n})()\r\n\r\nconst cancelFrame = (function() {\r\n let cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout\r\n return id => cancel(id)\r\n})()\r\n\r\nconst checkTriggers = element => element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height\r\nconst scrollListener = function(e){\r\n let element = this\r\n resetTriggers(this)\r\n if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__)\r\n this.__resizeRAF__ = requestFrame(function(){\r\n if (checkTriggers(element)) {\r\n element.__resizeLast__.width = element.offsetWidth\r\n element.__resizeLast__.height = element.offsetHeight\r\n element.__resizeListeners__.forEach(function(fn){\r\n fn.call(element, e)\r\n })\r\n }\r\n })\r\n}\r\n\r\nif (IS_BROWSER() && !attachEvent) {\r\n\r\n /* Detect CSS Animations support to detect element display/re-attach */\r\n let animation = false\r\n let animationstring = 'animation'\r\n let keyframeprefix = ''\r\n animationstartevent = 'animationstart'\r\n let domPrefixes = 'Webkit Moz O ms'.split(' ')\r\n let startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' ')\r\n let pfx = ''\r\n const elm = document.createElement('fakeelement')\r\n if(typeof elm.style.animationName !== 'undefined') animation = true\r\n\r\n if(animation === false) {\r\n for( var i = 0; i < domPrefixes.length; i++ ) {\r\n if(typeof elm.style[ domPrefixes[i] + 'AnimationName' ] !== 'undefined') {\r\n pfx = domPrefixes[i]\r\n animationstring = pfx + 'Animation'\r\n keyframeprefix = '-' + pfx.toLowerCase() + '-'\r\n animationstartevent = startEvents[ i ]\r\n animation = true\r\n break\r\n }\r\n }\r\n }\r\n\r\n animationName = 'resizeanim'\r\n animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } '\r\n animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; '\r\n}\r\n\r\nconst createStyles = function() {\r\n if (!stylesCreated) {\r\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\r\n let css = `${(animationKeyframes ? animationKeyframes : '')}.resize-triggers { ${(animationStyle ? animationStyle : '')}visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \\\" \\\"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }`\r\n let head = document.head || document.getElementsByTagName('head')[0]\r\n let style = document.createElement('style')\r\n\r\n style.type = 'text/css'\r\n if (style.styleSheet) {\r\n style.styleSheet.cssText = css\r\n } else {\r\n style.appendChild(document.createTextNode(css))\r\n }\r\n\r\n head.appendChild(style)\r\n stylesCreated = true\r\n }\r\n}\r\n\r\nconst addResizeListener = function(element, fn){\r\n if (attachEvent) element.attachEvent('onresize', fn)\r\n else if(IS_BROWSER()) {\r\n if (!element.__resizeTriggers__) {\r\n if (getComputedStyle(element).position == 'static') element.style.position = 'relative'\r\n createStyles()\r\n element.__resizeLast__ = {}\r\n element.__resizeListeners__ = [];\r\n (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers'\r\n element.__resizeTriggers__.innerHTML = '
' +\r\n '
'\r\n element.appendChild(element.__resizeTriggers__)\r\n resetTriggers(element)\r\n element.addEventListener('scroll', scrollListener, true)\r\n\r\n /* Listen for a css animation to detect element display/re-attach */\r\n animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function(e) {\r\n if(e.animationName == animationName)\r\n resetTriggers(element)\r\n })\r\n }\r\n element.__resizeListeners__.push(fn)\r\n }\r\n}\r\n\r\nconst removeResizeListener = function(element, fn){\r\n if (attachEvent) element.detachEvent('onresize', fn)\r\n else if(IS_BROWSER()) {\r\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1)\r\n if (!element.__resizeListeners__.length) {\r\n element.removeEventListener('scroll', scrollListener, true)\r\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__)\r\n }\r\n }\r\n}\r\n\r\nexport { addResizeListener, removeResizeListener }\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","export default class Dom {\r\n\r\n /**\r\n * Public.\r\n * @param {Function} callback\r\n */\r\n static onReady (callback) {\r\n Dom.on(window, 'load', callback);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} el\r\n * @param {String} event\r\n * @param {Function} handler\r\n * @param {Boolean} useCapture Specify to use event bubbling or event capturing.\r\n */\r\n static on (el, event, handler, useCapture) {\r\n el.addEventListener(event, handler, useCapture);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} el\r\n * @param {String} event\r\n * @param {Function} handler\r\n */\r\n static un (el, event, handler) {\r\n el.removeEventListener(event, handler);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} html\r\n */\r\n static create (html) {\r\n var div = document.createElement('div');\r\n\r\n div.innerHTML = html;\r\n return div.firstChild;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} container\r\n * @param {HTMLElement} element\r\n * @param {String} [position] 'before' or 'after'\r\n */\r\n static insert (container, element, position) {\r\n if (position) {\r\n container.parentNode.insertBefore(element, position === 'before' ? container : container.nextSibling);\r\n } else {\r\n container.appendChild(element);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} container\r\n * @param {HTMLElement} element\r\n */\r\n static insertBefore (container, element) {\r\n container.parentNode.insertBefore(element, container);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} container\r\n * @param {HTMLElement} element\r\n */\r\n static insertAfter (container, element) {\r\n container.parentNode.insertBefore(element, container.nextSibling);\r\n }\r\n\r\n /**\r\n * Public.\r\n * Returns true if the container contains the element.\r\n * @param {HTMLElement} container\r\n * @param {HTMLElement} element\r\n */\r\n static contains (container, element) {\r\n return container.contains(element);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} element\r\n * @param {String} cls\r\n */\r\n static addCls (element, cls) {\r\n var split = cls.split(' ');\r\n\r\n if (split.length > 1) {\r\n split.forEach(function (item) {\r\n Dom.addCls(element, item);\r\n });\r\n\r\n return;\r\n }\r\n\r\n var cs = element.classList;\r\n\r\n if (!cs.contains(cls)) {\r\n cs.add(cls);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} element\r\n * @param {String} cls\r\n */\r\n static hasCls (element, cls) {\r\n var cs = element.classList;\r\n return cs.contains(cls);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} element\r\n * @param {String} cls\r\n */\r\n static removeCls (element, cls) {\r\n var split = cls.split(' ');\r\n\r\n if (split.length > 1) {\r\n split.forEach(function (item) {\r\n Dom.removeCls(element, item);\r\n });\r\n\r\n return;\r\n }\r\n\r\n var cs = element.classList;\r\n\r\n if (cs.contains(cls)) {\r\n cs.remove(cls);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * Toggles between a class name for an element.\r\n * @param {HTMLElement} element\r\n * @param {String} cls\r\n * @param {Boolean} v True to add the cls. False to remove the cls.\r\n */\r\n static toggleCls (element, cls, v) {\r\n var split = cls.split(' ');\r\n\r\n if (split.length > 1) {\r\n split.forEach(function (item) {\r\n Dom.toggleCls(element, item);\r\n });\r\n\r\n return;\r\n }\r\n\r\n element.classList.toggle(cls, v);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} element\r\n */\r\n static getBox (element) {\r\n return element.getBoundingClientRect();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static getViewportSize () {\r\n var el = document.documentElement;\r\n return { height: el.clientHeight, width: el.clientWidth };\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} element\r\n * @param {Number} [width]\r\n * @param {Number} [height]\r\n */\r\n static setSize (element, width, height) {\r\n var style = element.style;\r\n\r\n if (height) {\r\n if (!isNaN(height)) {\r\n height = height + 'px';\r\n }\r\n\r\n style.height = height;\r\n }\r\n\r\n if (width) {\r\n if (!isNaN(width)) {\r\n width = width + 'px';\r\n }\r\n\r\n style.width = width;\r\n }\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {HTMLElement} element\r\n * @param {String/Object} key\r\n * @param {String} value (Optional)\r\n */\r\n static setStyle (element, key, value) {\r\n if (typeof key === 'object') {\r\n for (var prop in key) {\r\n element.style[prop] = key[prop];\r\n }\r\n } else {\r\n element.style[key] = value;\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} element\r\n * @param {String} key\r\n */\r\n static getStyle (element, key) {\r\n return element.style[key];\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} element\r\n * @param {String} key\r\n */\r\n static getComputedStyle (element, property) {\r\n var value = '';\r\n\r\n if (window.getComputedStyle) {\r\n value = getComputedStyle(element).getPropertyValue(property);\r\n }\r\n\r\n // IE\r\n else if (element.currentStyle){\r\n try {\r\n value = element.currentStyle[property];\r\n } catch (e) {}\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * From: github.com/james2doyle/saltjs\r\n * @param {String} selector\r\n * @param {HTMLElement} context\r\n * @returns HTMLCollection/HTMLElement\r\n *\r\n * @usage\r\n // get by id\r\n Dom.select('#iddiv');\r\n\r\n // get by class name\r\n Dom.select('.classdiv');\r\n\r\n // get by element name\r\n Dom.select('@namediv');\r\n\r\n // get by element tag name\r\n Dom.select('=div');\r\n\r\n // get element by query selector\r\n Dom.select('*div div.inside');\r\n\r\n // get element by attribute value\r\n Dom.select('*[data-vtree-id=' + id + ']', context)\r\n\r\n // getAttribute of name\r\n Dom.select('#iddiv').getAttribute('name');\r\n\r\n // getAttribute of name from nodelist\r\n Dom.select('.classdiv')[0].getAttribute('name');\r\n */\r\n static select (selector, context) {\r\n // an object containing the matching keys and native get commands\r\n var matches = {\r\n '#': 'getElementById',\r\n '.': 'getElementsByClassName',\r\n '@': 'getElementsByName',\r\n '=': 'getElementsByTagName',\r\n '*': 'querySelectorAll'\r\n }[selector[0]]; // you can treat a string as an array of characters\r\n // now pass the selector without the key/first character\r\n var el = (((context === undefined) ? document : context)[matches](selector.slice(1)));\r\n // if there is one element than return the 0 element\r\n // return ((el.length < 2) ? el[0]: el);\r\n return el;\r\n }\r\n}\r\n\r\n// Dom.onReady(function () {\r\n// var body = document.getElementsByTagName('BODY')[0];\r\n// Dom.addCls(body, 'smp-' + Device.device());\r\n// });\r\n","import Meta from './Meta.js';\r\n\r\nexport default class TxPattern {\r\n\r\n /**\r\n * Sync Pattern with size of design.\r\n * @param {Cx.Document} doc\r\n */\r\n static updatePattern$ (doc) {\r\n var promises = [];\r\n\r\n doc.activePageFigures.forEach(function(figure) {\r\n if (figure instanceof Cx.Text) {\r\n var powerClip = figure.powerClip();\r\n\r\n if (powerClip) {\r\n var pcFigures = powerClip.figures;\r\n\r\n if (Meta.getTxId(pcFigures[0])) {\r\n promises.push(TxPattern._updateFigurePattern$(figure, pcFigures));\r\n }\r\n }\r\n }\r\n });\r\n\r\n return Cx.whenAll(promises);\r\n }\r\n\r\n static _updateFigurePattern$ (figure, pcFigures) {\r\n return Cx.bounds$(pcFigures).then(function( pcBounds ) {\r\n return figure.preVectorBounds$().then(function( bounds ) {\r\n if (bounds.width > pcBounds.width || bounds.height > pcBounds.height) {\r\n return figure.prePin$().then(function( prePin ) {\r\n figure.invalidate();\r\n // return Cx.setSize$( pcFigures, { pin: figure.prePin$(), width: bounds.width(), height: bounds.height(), locked: true, fit: 'Max' });\r\n return Cx.fit$(pcFigures, bounds.translated(Cx.Point.minus(prePin)), { fit: 'Max' });\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n","/**\r\n * @usage\r\n// Registor your Store.\r\n\r\nStoreManager.register(ContactsStore, 'Contacts');\r\n\r\n// Now create an instance.\r\nvar store = StoreManager.create('Contacts');\r\n\r\n// Or\r\nvar store = StoreManager.create({\r\n ...,\r\n type: 'ContactsStore'\r\n});\r\n */\r\nexport default class StoreManager {\r\n\r\n /**\r\n * Public\r\n */\r\n static id () {\r\n if (StoreManager._autoId === undefined) {\r\n StoreManager._autoId = 0;\r\n }\r\n\r\n return ++StoreManager._autoId;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Store} s\r\n * @param {String} type\r\n */\r\n static register (s, type) {\r\n var lookup = StoreManager.getStoreLookup();\r\n lookup[type] = s;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object/String} config\r\n */\r\n static create (config) {\r\n var lookup = StoreManager.getStoreLookup(),\r\n s, type;\r\n\r\n if (typeof config === 'string') {\r\n type = config;\r\n config = undefined;\r\n } else {\r\n type = config.type;\r\n }\r\n\r\n s = lookup[type];\r\n\r\n return new s(config);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Store} s\r\n */\r\n static registerInstance (s) {\r\n var lookup = StoreManager.getInstanceLookup(),\r\n id = s.getId();\r\n\r\n lookup[id] = s;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Store} s\r\n */\r\n static unregisterInstance (s) {\r\n var lookup = StoreManager.getInstanceLookup(),\r\n id = s.getId();\r\n\r\n delete lookup[id];\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n */\r\n static getStore (id) {\r\n return StoreManager._instances[id];\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static getStoreLookup () {\r\n var sm = StoreManager;\r\n\r\n if (!sm._stores) {\r\n sm._stores = {};\r\n }\r\n\r\n return sm._stores;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static getInstanceLookup () {\r\n var sm = StoreManager;\r\n\r\n if (!sm._instances) {\r\n sm._instances = {};\r\n }\r\n\r\n return sm._instances;\r\n }\r\n\r\n}","export default class Config {\r\n /**\r\n * @param {Object} config\r\n */\r\n constructor (config) {\r\n if (config) {\r\n this._initialConfig = config;\r\n\r\n for (var key in config) {\r\n this['_' + key] = config[key];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} key\r\n * @param {Mixed} value\r\n */\r\n set (key, value) {\r\n this['_' + key] = value;\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} key\r\n */\r\n get (key) {\r\n return this['_' + key];\r\n }\r\n\r\n /**\r\n * Public\r\n */\r\n getInitialConfig () {\r\n return this._initialConfig;\r\n }\r\n}","/**\r\n * datchley.name/es6-eventemitter/\r\n */\r\nexport default class Event {\r\n\r\n constructor () {\r\n this._listeners = new Map();\r\n }\r\n\r\n static preventDefault (event) {\r\n if (event.preventDefault) {\r\n event.preventDefault();\r\n } else {\r\n event.returnValue = false;\r\n }\r\n }\r\n\r\n static stopPropagation (event) {\r\n if (event.stopPropagation) {\r\n event.stopPropagation();\r\n } else {\r\n event.cancelBubble = true;\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} label\r\n * @param {Function} callback\r\n */\r\n on (label, callback) {\r\n this._listeners.has(label) || this._listeners.set(label, []);\r\n this._listeners.get(label).push(callback);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} label\r\n * @param {Function} callback\r\n */\r\n un (label, callback) { \r\n var listeners = this._listeners.get(label),\r\n index;\r\n\r\n if (listeners && listeners.length) {\r\n index = listeners.reduce((i, listener, index) => {\r\n return (typeof listener == 'function' && listener === callback) ? i = index : i;\r\n }, -1);\r\n\r\n if (index > -1) {\r\n listeners.splice(index, 1);\r\n this._listeners.set(label, listeners);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Public.\r\n * Allows for checking the result from event handlers.\r\n * For example, the following if block will be entered if a handler returns false.\r\n * if (this._emit('beforedestroy', this) !== false) {...}\r\n * \r\n * @param {String} label\r\n * @param {spread/rest} args\r\n */\r\n emit (label, ...args) { \r\n var listeners = this._listeners.get(label),\r\n result = true;\r\n\r\n if (listeners && listeners.length) {\r\n listeners.forEach((listener) => {\r\n if (listener(...args) === false) {\r\n result = false;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Function} cb \r\n */\r\n forEach (cb) {\r\n this._listeners.forEach(function (callbackItems, label) {\r\n callbackItems.forEach(function (callback) {\r\n cb(label, callback);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n destroy () {\r\n var me = this;\r\n\r\n me.forEach(function (label, callback) {\r\n me.un(label, callback);\r\n });\r\n\r\n me._listeners.clear();\r\n }\r\n\r\n}\r\n","export default class Model {\r\n\r\n /**\r\n * CONFIG\r\n * {Object} data\r\n * {Store} store\r\n */\r\n\r\n constructor (config) {\r\n this._store = config.store;\r\n this._data = this._processData(config.data);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} data\r\n */\r\n _processData (data) {\r\n return data;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getData () {\r\n var data = this._data,\r\n copy = {};\r\n\r\n for (var key in data) {\r\n copy[key] = data[key];\r\n }\r\n\r\n return copy;\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} key\r\n * @param {Mixed} value\r\n */\r\n set (key, value) {\r\n var oldValue = this.get(key);\r\n\r\n if (value !== oldValue) {\r\n this._data[key] = value;\r\n\r\n this._onChange({\r\n field: key,\r\n value: value,\r\n oldValue: oldValue\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} change\r\n */\r\n _onChange (change) {\r\n if (this._store) {\r\n this._store._onModelChange(this, change);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n get (key) {\r\n return this._data[key];\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getStore () {\r\n return this._store;\r\n }\r\n\r\n}\r\n","import '../Polyfills.js';\r\nimport StoreManager from '../StoreManager.js';\r\nimport Config from '../util/Config.js';\r\nimport Event from '../util/Event.js';\r\nimport Model from './Model.js';\r\n\r\nexport default class Store {\r\n\r\n /**\r\n * CONFIG\r\n * {Boolean} autoLoad\r\n * {Object} data\r\n * {String} dataRoot\r\n * {String} id\r\n * {Model} model\r\n */\r\n\r\n constructor (config) {\r\n var me = this;\r\n\r\n me.isStore = true;\r\n me._config = new Config(config);\r\n me._event = new Event();\r\n\r\n me._id = me.getConfig('id') || StoreManager.id();\r\n me._isLoaded;\r\n me._isLoading;\r\n me._model = me.getConfig('model') || Model;\r\n\r\n me._initData();\r\n StoreManager.registerInstance(me);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initData () {\r\n var data = this.getConfig('data');\r\n\r\n if (data) {\r\n this.loadData(data);\r\n }\r\n\r\n else {\r\n this._initLoad();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initLoad () {\r\n var autoLoad = this.getConfig('autoLoad');\r\n\r\n if (autoLoad) {\r\n this.load();\r\n }\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} key\r\n */\r\n getConfig (key) {\r\n return this._config.get(key);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getDataRoot () {\r\n return this.getConfig('dataRoot') || 'Items';\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getId () {\r\n return this._id;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getCount () {\r\n var records = this.getRecords();\r\n return Array.isArray(records) ? records.length : 0;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getModel () {\r\n return this._model;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getRecords () {\r\n var records = this._records;\r\n\r\n if (!records) {\r\n records = this._records = [];\r\n }\r\n\r\n return records.slice(0);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} data\r\n */\r\n add (data) {\r\n var me = this,\r\n records = me.getRecords(),\r\n record = me.createRecord(data);\r\n\r\n records.push(record);\r\n me._records = records;\r\n me._emit('add', me, record);\r\n\r\n return record;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} index\r\n * @param {Object} data\r\n */\r\n insertAt (index, data) {\r\n var me = this,\r\n records = me.getRecords(),\r\n record = me.createRecord(data);\r\n\r\n records.splice(index, 0, record);\r\n me._records = records;\r\n me._emit('add', me, record);\r\n\r\n return record;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} data\r\n */\r\n createRecord (data) {\r\n return new this._model({\r\n data: this._processResponseItem(data),\r\n store: this\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Model} record\r\n */\r\n remove (record) {\r\n var index = this.indexOf(record),\r\n records;\r\n\r\n if (index !== -1) {\r\n records = this.getRecords();\r\n records.splice(index, 1);\r\n this._records = records;\r\n this._emit('remove', this, record, index);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n removeAll () {\r\n var records = this.getRecords();\r\n this._records = undefined;\r\n this._emit('remove', this, records);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Model} record\r\n */\r\n indexOf (record) {\r\n var records = this.getRecords(),\r\n len = records.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (records[i] === record) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} index\r\n */\r\n getAt (index) {\r\n return this.getRecords()[index];\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n isLoaded () {\r\n return this._isLoaded;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n isLoading () {\r\n return this._isLoading;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} text\r\n */\r\n filter (text) {\r\n this.load({\r\n appendData: false,\r\n filter: text\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getFilter () {\r\n var options = this._currentLoadOptions || {};\r\n return options.filter;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n isFiltered () {\r\n var filter = this.getFilter();\r\n return filter !== undefined;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n clearFilter () {\r\n this.load({\r\n appendData: false\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} [options]\r\n */\r\n load (options) {\r\n options = options || {};\r\n\r\n var me = this;\r\n\r\n me._isLoading = true;\r\n me._currentLoadOptions = options;\r\n me._emitBeforeLoad();\r\n me._doLoad(options);\r\n }\r\n\r\n _emitBeforeLoad () {\r\n this._emit('beforeload', this);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Override to implement.\r\n * @param {Object} options\r\n */\r\n _doLoad (options) {\r\n if (options.filter) {\r\n // Apply filter\r\n }\r\n\r\n // Impliment ajax call\r\n\r\n // On load success\r\n // this._onLoadComplete(response);\r\n\r\n // On load fail\r\n // this._onLoadFailed();\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object[]} data\r\n * @param {Object} [options]\r\n */\r\n loadData (data, options) {\r\n var me = this,\r\n records = me._processResponse(me._prepareLoadData(data));\r\n\r\n me._currentLoadOptions = options || {};\r\n me._onLoad(records);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Obect} data\r\n */\r\n _prepareLoadData (data) {\r\n var dataRoot = this.getDataRoot(),\r\n json = {};\r\n\r\n json[dataRoot] = data;\r\n return json;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object[]} data\r\n */\r\n _onLoadComplete (response) {\r\n var records = this._processResponse(response);\r\n this._onLoad(records);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Model[]} records\r\n */\r\n _onLoad (records) {\r\n var me = this,\r\n loadOptions = me._currentLoadOptions,\r\n appendData = loadOptions ? loadOptions.appendData : false;\r\n\r\n if (appendData) {\r\n records.forEach(function (r) {\r\n me._records.push(r);\r\n });\r\n } else {\r\n me._records = records;\r\n }\r\n\r\n me._isLoading = undefined;\r\n me._isLoaded = true;\r\n me._emitLoad(records);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Model[]} records\r\n */\r\n _emitLoad (records) {\r\n var me = this;\r\n me._emit('load', me, records, me._currentLoadOptions);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} response\r\n * Example: { Items: [...] }\r\n */\r\n _processResponse (response) {\r\n var me = this,\r\n dataRoot = me.getDataRoot(),\r\n items = response[dataRoot] || response,\r\n records = [];\r\n\r\n items.forEach(function (item) {\r\n var record = me.createRecord(item);\r\n records.push(record);\r\n });\r\n\r\n return records;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} data\r\n */\r\n _processResponseItem (data) {\r\n return data;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onLoadFailed () {\r\n var me = this;\r\n\r\n me._isLoading = undefined;\r\n me._isLoaded = undefined;\r\n me._records = undefined;\r\n me._emitLoadFail();\r\n }\r\n\r\n _emitLoadFail () {\r\n this._emit('loadfail', this);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Called by Model.\r\n * @param {Model} record\r\n * @param {Object} change\r\n * Example:\r\n * {\r\n * field: key,\r\n * value: value,\r\n * oldValue: oldValue\r\n * }\r\n */\r\n _onModelChange (record, change) {\r\n this._emit('datachange', this, record, change);\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} label\r\n * @param {Function} callback\r\n */\r\n on (label, callback) {\r\n this._event.on(label, callback);\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} label\r\n * @param {Function} callback\r\n */\r\n un (label, callback) { \r\n return this._event.un(label, callback);\r\n }\r\n\r\n /**\r\n * Private\r\n * @param {String} label\r\n * @param {spread/rest} args\r\n */\r\n _emit (label, ...args) { \r\n return this._event.emit(label, ...args);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _beforeDestroy () {}\r\n\r\n /**\r\n * Private.\r\n */\r\n _afterDestroy () {\r\n this._event.destroy();\r\n StoreManager.unregisterInstance(this);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n destroy () {\r\n var me = this;\r\n\r\n me._beforeDestroy();\r\n me._emit('destroy', me);\r\n me._afterDestroy();\r\n }\r\n\r\n}\r\n","import '../Polyfills.js';\r\nimport Store from './Store.js';\r\n\r\n/**\r\n * To use with 'local' data simply call loadData(), this will set 'isLocal' = true.\r\n */\r\nexport default class PagingStore extends Store {\r\n\r\n /**\r\n * CONFIG\r\n * {Boolean} isLocal\r\n * {Number} pageSize\r\n * {String} totalProperty\r\n */\r\n\r\n constructor (config) {\r\n super(config);\r\n\r\n this.isPagingStore = true;\r\n this._page;\r\n this._totalCount;\r\n }\r\n\r\n /**\r\n * Override.\r\n * Private.\r\n */\r\n _initLoad () {\r\n var autoLoad = this.getConfig('autoLoad');\r\n\r\n if (autoLoad) {\r\n this.loadPage(1);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n isLocal (v) {\r\n var key = 'isLocal',\r\n value = this.getConfig(key) ? true : false;\r\n\r\n if (v === undefined) {\r\n return value;\r\n }\r\n\r\n else if (v !== value) {\r\n this._config.set(key, v);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * Returns the data for the current page.\r\n * @param {Model[]} records (Optional)\r\n */\r\n getPageRecords (records) {\r\n records = records || this.getRecords();\r\n\r\n var page = this.getPage(),\r\n pageSize = this.getPageSize(),\r\n begin, end;\r\n\r\n if (page === 1) { begin = 0; }\r\n else { begin = (page - 1) * pageSize; }\r\n end = begin + pageSize;\r\n\r\n return records.slice(begin, end);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getPage () {\r\n return this._page;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} v \r\n */\r\n setPageSize (v) {\r\n var oldValue = this.getPageSize();\r\n\r\n if (v !== oldValue) {\r\n this._config.set('pageSize', v);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getPageSize () {\r\n return this.getConfig('pageSize') || 100;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getTotalProperty () {\r\n return this.getConfig('totalProperty') || 'TotalCount';\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getTotalCount () {\r\n return this._totalCount;\r\n }\r\n\r\n /**\r\n * Override.\r\n * Public.\r\n * @param {String} text\r\n */\r\n filter (text) {\r\n this.loadPage(1, {\r\n appendData: false,\r\n filter: text\r\n });\r\n }\r\n\r\n /**\r\n * Override.\r\n * Public.\r\n */\r\n clearFilter () {\r\n this.loadPage(1, {\r\n appendData: false\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * Use this method to page local records.\r\n * @param {Object[]} data\r\n * @param {Object} options (Optional)\r\n */\r\n loadData (data, options) {\r\n options = options || {};\r\n\r\n var me = this,\r\n records = me._processResponse(me._prepareLoadData(data));\r\n\r\n me.isLocal(true);\r\n me._page = 1;\r\n me._totalCount = records.length;\r\n me._currentLoadOptions = options;\r\n me._localRecords = records;\r\n me._onLoad(me.getPageRecords(records));\r\n }\r\n\r\n getLocalRecords () {\r\n var records = this._localRecords;\r\n return records ? records.slice(0) : [];\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Obect} data\r\n */\r\n _prepareLoadData (data) {\r\n var json = super._prepareLoadData(data),\r\n totalProperty = this.getTotalProperty();\r\n\r\n json[totalProperty] = data.length;\r\n return json;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} [options]\r\n */\r\n nextPage (options) {\r\n var curOptions = this._currentLoadOptions;\r\n\r\n Object.assign(curOptions, options);\r\n this.loadPage(this.getPage() + 1, curOptions);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} page\r\n * @param {Object} [options]\r\n */\r\n loadPage (page, options) {\r\n options = options || {};\r\n\r\n var size = this.getPageSize();\r\n\r\n this._page = page;\r\n\r\n Object.assign(options, {\r\n limit: size,\r\n page: page,\r\n start: (page - 1) * size\r\n });\r\n\r\n this.load(options);\r\n }\r\n\r\n /**\r\n * Public.\r\n * Override.\r\n * @param {Object} [options]\r\n */\r\n load (options) {\r\n if (this.isLocal()) {\r\n this._localLoad(options);\r\n } else {\r\n super.load(options);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} options\r\n */\r\n _localLoad (options) {\r\n options = options || {};\r\n\r\n var me = this,\r\n filter = options.filter,\r\n records = me.getLocalRecords();\r\n\r\n me._emitBeforeLoad();\r\n\r\n if (filter) {\r\n records = me._localFilter(records, filter);\r\n }\r\n\r\n me._currentLoadOptions = options;\r\n me._onLoad(me.getPageRecords(records));\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Model[]} records\r\n * @param {String} text\r\n */\r\n _localFilter (records, text) {\r\n var filtered = [];\r\n\r\n text = text.toLowerCase();\r\n\r\n records.forEach(function (r) {\r\n var data = r._data,\r\n key, value;\r\n\r\n for (key in data) {\r\n value = data[key];\r\n\r\n if (typeof value === 'string' && value.toLowerCase().indexOf(text) !== -1) {\r\n filtered.push(r);\r\n }\r\n }\r\n });\r\n\r\n return filtered;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} response\r\n * Example: { Items: [...], TotalCount: 100 }\r\n */\r\n _onLoadComplete (response) {\r\n var totalProperty = this.getTotalProperty();\r\n\r\n this._totalCount = response[totalProperty];\r\n super._onLoadComplete(response);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onLoadFailed () {\r\n this._page = undefined;\r\n this._totalCount = 0;\r\n super._onLoadFailed();\r\n }\r\n\r\n}\r\n","import PagingStore from 'smp-simple-components/src/data/PagingStore.js';\r\nimport Tag from '../../helper/Tag.js';\r\n\r\n/**\r\n * @usage\r\nvar store = new ClipArts({\r\n searchTag: {\r\n Name: '/designer',\r\n Owned: true,\r\n Shared: false,\r\n Type: 'Doc'\r\n }\r\n});\r\n\r\nstore.on('load', function (store, data) {\r\n data.forEach(function (item) {\r\n // Do something\r\n });\r\n});\r\n\r\nstore.loadPage(1, { searchTag: ... });\r\n */\r\nexport default class CxPagingAssetsStore extends PagingStore {\r\n\r\n /**\r\n * CONFIG\r\n * {Object} rootTag\r\n * {Function} searchFn$\r\n * {Object} searchTag\r\n */\r\n\r\n /**\r\n * Public\r\n * @param {Object} tag\r\n * @param {Boolean} preventSearch (Optional)\r\n */\r\n setRootTag (tag, preventSearch) {\r\n if (this.isRootTag(tag)) {\r\n return;\r\n }\r\n\r\n this._config.set('rootTag', tag);\r\n\r\n if (!preventSearch) {\r\n this.load({ searchTag: tag });\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getRootTag () {\r\n return this.getConfig('rootTag');\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} tag\r\n */\r\n isRootTag (tag) {\r\n var rootTag = this.getRootTag();\r\n\r\n if (!rootTag) {\r\n return false;\r\n }\r\n\r\n return Tag.areEqual(rootTag, tag);\r\n }\r\n\r\n /**\r\n * Public override\r\n */\r\n load (options) {\r\n if (options && options.filter) {\r\n this._searchByText(options.filter, options);\r\n }\r\n\r\n else if (options && options.searchTag) {\r\n this._searchByTag(options.searchTag, options);\r\n }\r\n\r\n else {\r\n this._searchByTag(this.getRootTag(), options);\r\n }\r\n\r\n super.load(options);\r\n }\r\n\r\n /**\r\n * @param {Object} tag\r\n */\r\n _searchByTag (tag) {\r\n var match = {\r\n Archived: false\r\n };\r\n\r\n this.setSearchTag(tag);\r\n this._searchText = undefined;\r\n this._applyToSearch(this._applyTag(match, tag), undefined);\r\n }\r\n\r\n /**\r\n * @param {String} text\r\n */\r\n _searchByText (text) {\r\n var match = {\r\n Archived: false\r\n },\r\n rootTag = this.getRootTag(),\r\n isArray = Array.isArray(rootTag),\r\n // remove any '/**' string and any '*' chars\r\n name = isArray ? undefined : (rootTag.Name || '').replace('/**', '').replace(/[*]/g, ''),\r\n tag = isArray ? rootTag : {\r\n Name: name + '/**',\r\n Owned: rootTag.Owned,\r\n Shared: rootTag.Shared,\r\n Type: rootTag.Type\r\n };\r\n\r\n this._searchText = text;\r\n this._oldSearchTag = this.getSearchTag();\r\n this.setSearchTag(undefined);\r\n this._applyToSearch(this._applyTag(match, tag), text);\r\n }\r\n\r\n clearSearchText () {\r\n var tag = this._oldSearchTag;\r\n\r\n this._oldSearchTag = undefined;\r\n this._searchText = undefined;\r\n\r\n this.loadPage(1, {\r\n searchTag: tag\r\n });\r\n }\r\n\r\n setSearchTag (tag) {\r\n if (!this.isSearchTag(tag)) {\r\n this._config.set('searchTag', tag);\r\n }\r\n }\r\n\r\n getSearchTag () {\r\n return this.getConfig('searchTag');\r\n }\r\n\r\n /**\r\n * @param {Object} tag\r\n */\r\n isSearchTag (tag) {\r\n var searchTag = this.getSearchTag();\r\n\r\n if (!searchTag) {\r\n return false;\r\n }\r\n\r\n return Tag.areEqual(searchTag, tag);\r\n }\r\n\r\n getSearchText () {\r\n return this._searchText;\r\n }\r\n\r\n //\r\n // PRIVATE METHODS\r\n //\r\n\r\n constructor (config) {\r\n super(config);\r\n\r\n var rootTag = config.rootTag,\r\n type = rootTag ? rootTag.Type : undefined,\r\n sortBy = type === 'Doc' ? 'Modified' : undefined;\r\n\r\n this._searchText = undefined;\r\n\r\n this._requestModel = {\r\n // Limit: ...,\r\n Match: {},\r\n // Start: ...,\r\n SortBy: sortBy,\r\n SortDir: 'DESC',\r\n Text: undefined\r\n };\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} options\r\n */\r\n _doLoad (options) {\r\n var me = this,\r\n fn$ = this.getConfig('searchFn$');\r\n\r\n if (options && options.limit) {\r\n Object.assign(this._requestModel, {\r\n Limit: options.limit,\r\n Start: options.start\r\n });\r\n }\r\n\r\n fn$(this._requestModel).then(\r\n // Success\r\n function (responseModel) {\r\n me._onLoadComplete(responseModel);\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n }\r\n\r\n _applyTag (object, tag) {\r\n var isArray, tags;\r\n\r\n // TxEffectsStore has an array of tags as the root\r\n if (Array.isArray(tag)) {\r\n isArray = true;\r\n tags = tag;\r\n tag = tag[0];\r\n }\r\n\r\n var owned = typeof tag.Owned === 'boolean' ? tag.Owned : false,\r\n shared = typeof tag.Shared === 'boolean' ? tag.Shared : true;\r\n\r\n return Object.assign(object, {\r\n Owned: owned,\r\n Shared: shared,\r\n Tags: isArray ? tags : (tag.Name ? [tag] : undefined), // allow for tag like { Name: '', Owned: true, ... }\r\n Type: tag.Type\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} match\r\n * @param {String} text\r\n */\r\n _applyToSearch (match, text) {\r\n var currentMatch = this._requestModel.Match || {};\r\n\r\n this._requestModel.Match = Object.assign(currentMatch, match);\r\n this._requestModel.Text = text;\r\n }\r\n\r\n}\r\n","import CadworxLiveAPI from '../../api/CadworxLiveAPI.js';\r\nimport CxPagingAssetsStore from './CxPagingAssetsStore.js';\r\n\r\n/**\r\n * Searches Cadworx Live documents\r\n */\r\nexport default class CxArtsStore extends CxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: CadworxLiveAPI.searchDocs$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var size = 90;\r\n\r\n return {\r\n Id: item.Id,\r\n Name: item.Name,\r\n ThumbHeight: size,\r\n ThumbUrl: CadworxLiveAPI.getDocThumb(item, { height: size, width: size }),\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n}\r\n","import PagingStore from 'smp-simple-components/src/data/PagingStore.js';\r\nimport CadworxLiveAPI from '../../api/CadworxLiveAPI.js';\r\nimport Tag from '../../helper/Tag.js';\r\n\r\n/**\r\n * Defaults to CadworxLive tags.\r\n */\r\nexport default class CxTagsStore extends PagingStore {\r\n\r\n /**\r\n * CONFIG\r\n * {Object} rootTag\r\n * {Function} searchFn$\r\n * {Object} searchTag\r\n */\r\n\r\n /**\r\n * Public\r\n * @param {Object} tag\r\n * @param {Boolean} preventSearch (Optional)\r\n */\r\n setRootTag (tag, preventSearch) {\r\n if (this.isRootTag(tag)) {\r\n return;\r\n }\r\n\r\n this._config.set('rootTag', tag);\r\n\r\n if (!preventSearch) {\r\n this.searchByTag(tag);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getRootTag () {\r\n return this.getConfig('rootTag');\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} tag\r\n */\r\n isRootTag (tag) {\r\n var rootTag = this.getRootTag();\r\n\r\n if (!rootTag) {\r\n return false;\r\n }\r\n\r\n return Tag.areEqual(rootTag, tag);\r\n }\r\n\r\n /**\r\n * Public override\r\n */\r\n load (options) {\r\n if (options && options.searchTag) {\r\n this.searchByTag(options.searchTag, options);\r\n }\r\n\r\n else {\r\n this.searchByTag(this.getRootTag(), options);\r\n }\r\n }\r\n\r\n /**\r\n * @param {Object} tag\r\n */\r\n searchByTag (tag, options) {\r\n var match = {\r\n Archived: false\r\n },\r\n name = tag.Name,\r\n text = name ? (name + '/*') : '*';\r\n\r\n this.setSearchTag(tag);\r\n this._applyToSearch(this._applyTag(match, tag), text);\r\n this._doLoad(options)\r\n }\r\n\r\n setSearchTag (tag) {\r\n if (!this.isSearchTag(tag)) {\r\n this._config.set('searchTag', tag);\r\n }\r\n }\r\n\r\n getSearchTag () {\r\n return this.getConfig('searchTag');\r\n }\r\n\r\n /**\r\n * @param {Object} tag\r\n */\r\n isSearchTag (tag) {\r\n var searchTag = this.getSearchTag();\r\n\r\n if (!searchTag) {\r\n return false;\r\n }\r\n\r\n return Tag.areEqual(searchTag, tag);\r\n }\r\n\r\n // _searchTag: undefined,\r\n\r\n //\r\n // PRIVATE METHODS\r\n //\r\n\r\n constructor (config) {\r\n if (!config.searchFn$) {\r\n config.searchFn$ = CadworxLiveAPI.searchTags$;\r\n }\r\n\r\n super(config);\r\n\r\n this._requestModel = {\r\n // Limit: ...,\r\n Match: {},\r\n // Start: ...,\r\n SortBy: 'Name',\r\n SortDir: 'DESC',\r\n Text: undefined\r\n };\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} options\r\n */\r\n _doLoad (options) {\r\n var me = this,\r\n fn$ = this.getConfig('searchFn$');\r\n\r\n me._isLoading = true;\r\n me._currentLoadOptions = options;\r\n\r\n if (options && options.limit) {\r\n Object.assign(this._requestModel, {\r\n Limit: options.limit,\r\n Start: options.start\r\n });\r\n }\r\n\r\n me._emit('beforeload', this);\r\n\r\n fn$(this._requestModel).then(\r\n // Success\r\n function (responseModel) {\r\n me._onLoadComplete(responseModel);\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n return {\r\n DisplayName: item.DisplayName || this._getDisplayName(item),\r\n Id: item.Id,\r\n Name: item.Name,\r\n Owned: item.Owned,\r\n Shared: item.Shared,\r\n Tag: item\r\n };\r\n }\r\n\r\n /**\r\n * Private.\r\n * Helper to display tags in TagField.\r\n *\r\n * With a root tag of:\r\n * { Name: '/designer/clipart' }\r\n *\r\n * Passing in a tag like so:\r\n * { Name: '/designer/clipart/to/rescue/ems' }\r\n\r\n * Will return the following:\r\n * 'Rescue - Ems'\r\n */\r\n _getDisplayName (tag) {\r\n if (!tag) {\r\n return '';\r\n }\r\n\r\n var rootTag = this.getRootTag(),\r\n rootName = rootTag.Name ? rootTag.Name.replace('/**', '') : '',\r\n name = (typeof tag === 'string' ? tag : tag.Name ? tag.Name : '').replace(rootName, ''),\r\n split = name.split('/'),\r\n path = [];\r\n\r\n split.forEach(function (item) {\r\n path.push(item.charAt(0).toUpperCase() + item.slice(1));\r\n });\r\n\r\n if (!path[0]) {\r\n path.shift();\r\n }\r\n\r\n return path.join(' - ').replace('/**', '');\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _applyTag (object, tag) {\r\n var owned = typeof tag.Owned === 'boolean' ? tag.Owned : false,\r\n shared = typeof tag.Shared === 'boolean' ? tag.Shared : true;\r\n\r\n return Object.assign(object, {\r\n Owned: owned,\r\n Shared: shared,\r\n Tags: [tag],\r\n Type: tag.Type\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} match\r\n * @param {String} text\r\n */\r\n _applyToSearch (match, text) {\r\n var currentMatch = this._requestModel.Match || {};\r\n\r\n this._requestModel.Match = Object.assign(currentMatch, match);\r\n this._requestModel.Text = text;\r\n }\r\n\r\n}\r\n","import CmeAPI from '../../api/CmeAPI.js';\r\nimport CxPagingAssetsStore from '../../cadworx/store/CxPagingAssetsStore.js';\r\nimport Cme from '../../helper/Cme.js';\r\nimport CmeClipArt from '../../helper/CmeClipArt.js';\r\n\r\n/**\r\n * Searches CME Clip Art\r\n */\r\nexport default class CmeClipArtsStore extends CxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: CmeAPI.searchDocuments$\r\n });\r\n\r\n super(config);\r\n\r\n var me = this;\r\n\r\n me._thumbSize = 90;\r\n me._sml = '(S)';\r\n me._smlNeg = '(NS)';\r\n me._lrg = '(L)';\r\n me._lrgNeg = '(NL)';\r\n\r\n me._artFilterFn = me._isSmall;\r\n\r\n me._requestModel.SortBy = 'Name';\r\n me._requestModel.SortDir = 'ASC';\r\n\r\n CmeClipArt.searchForNegatives$();\r\n }\r\n\r\n /**\r\n * Public.\r\n * Now swapping the 'Id' and 'ThumbUrl' from the cached 'Raw' / 'RawNegative' data.\r\n * @param {Boolean} v\r\n */\r\n filterByNegative (v) {\r\n var records = this.getRecords();\r\n\r\n this._isNegative = v;\r\n this._syncWithNegativeFilter(records);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Ensure we have the 'Id' and 'ThumbUrl' synced based on the Negative filter.\r\n * @param {Model[]} records\r\n */\r\n _syncWithNegativeFilter (records) {\r\n var me = this,\r\n isNegative = me.isFilteredByNegative();\r\n\r\n records.forEach(function (r) {\r\n var data = isNegative ? data = r.get('RawNegative') : r.get('Raw'),\r\n id = data ? data.Id : null,\r\n thumbUrl = me._getThumbUrl(data);\r\n\r\n r.set('Id', id)\r\n r.set('ThumbUrl', thumbUrl);\r\n });\r\n }\r\n\r\n // filterByNegative (v) {\r\n // var me = this,\r\n // isSmall = me.isFilteredBySmall(),\r\n // fn;\r\n\r\n // if (v) {\r\n // if (isSmall) {\r\n // fn = me._isSmallNegative;\r\n // } else {\r\n // fn = me._isLargeNegative;\r\n // }\r\n // } else {\r\n // if (isSmall) {\r\n // fn = me._isSmall;\r\n // } else {\r\n // fn = me._isLarge;\r\n // }\r\n // }\r\n\r\n // me._loadByFilter(fn);\r\n // }\r\n\r\n /**\r\n * Public.\r\n */\r\n isFilteredByNegative () {\r\n return this._isNegative ? true : false;\r\n }\r\n\r\n // isFilteredByNegative () {\r\n // var me = this,\r\n // fn = me._artFilterFn;\r\n\r\n // return fn === me._isSmallNegative || fn === me._isLargeNegative;\r\n // }\r\n\r\n /**\r\n * Public.\r\n */\r\n filterBySmall () {\r\n var me = this,\r\n fn = /* me.isFilteredByNegative() ? me._isSmallNegative : */ me._isSmall;\r\n\r\n me._loadByFilter(fn);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n isFilteredBySmall () {\r\n var me = this,\r\n fn = me._artFilterFn;\r\n\r\n return fn === me._isSmall || fn === me._isSmallNegative;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n filterByLarge () {\r\n var me = this,\r\n fn = /* me.isFilteredByNegative() ? me._isLargeNegative : */ me._isLarge;\r\n\r\n me._loadByFilter(fn);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n isFilteredByLarge () {\r\n var me = this,\r\n fn = me._artFilterFn;\r\n\r\n return fn === me._isLarge || fn === me._isLargeNegative;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _loadByFilter (fn) {\r\n var me = this,\r\n options = me._currentLoadOptions || {},\r\n records = super.getRecords();\r\n\r\n options.appendData = false;\r\n me._artFilterFn = fn;\r\n me._syncWithNegativeFilter(records);\r\n // Pass unfiltered records, no need to filter them twice.\r\n me._emitLoad(records);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Override.\r\n */\r\n getRecords () {\r\n var records = super.getRecords();\r\n return this._filterClipArt(records);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Override.\r\n */\r\n _emitLoad (records) {\r\n var me = this;\r\n me._emit('load', me, me._filterClipArt(records), me._currentLoadOptions);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _filterClipArt (records) {\r\n var me = this,\r\n fn = me._artFilterFn;\r\n\r\n return records.filter(function (value) {\r\n return fn.call(me, value.get('Name'));\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _isSmall (name) {\r\n return name.indexOf(this._sml) !== -1 && name.indexOf(this._smlNeg) === -1;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _isSmallNegative (name) {\r\n return name.indexOf(this._smlNeg) !== -1;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _isLarge (name) {\r\n return name.indexOf(this._lrg) !== -1 && name.indexOf(this._lrgNeg) === -1;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _isLargeNegative (name) {\r\n return name.indexOf(this._lrgNeg) !== -1;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var me = this,\r\n isNegative = me.isFilteredByNegative(),\r\n size = me._thumbSize,\r\n name = me._parseName(item.Name),\r\n negId = CmeClipArt.getIdOfNegativeVersion(item.Name),\r\n negItem = negId ? { Id: negId } : undefined,\r\n thumbUrl = me._getThumbUrl(isNegative ? negItem : item);\r\n\r\n return {\r\n Id: isNegative ? (negItem ? negItem.Id : null) : item.Id,\r\n Name: name,\r\n Raw: item,\r\n RawNegative: negItem,\r\n ThumbHeight: size,\r\n ThumbUrl: thumbUrl,\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n _parseName (name) {\r\n name = name.replace(/n-lrg/gi, ' (NL)')\r\n name = name.replace(/-lrg/gi, ' (L)');\r\n name = name.replace(/n-sml/gi, ' (NS)')\r\n name = name.replace(/-sml/gi, ' (S)');\r\n return name.replace(/-/gi, ' ');\r\n }\r\n\r\n _getThumbUrl (item) {\r\n // No inverted option?\r\n if (!item) {\r\n // empty thumb, we use CSS to display a placeholder\r\n return 'data:,';\r\n }\r\n\r\n var size = this._thumbSize;\r\n return CmeAPI.getDocThumb(item, { height: size, width: size });\r\n }\r\n\r\n}\r\n","import CmeAPI from '../../api/CmeAPI.js';\r\nimport CxTagsStore from '../../cadworx/store/CxTagsStore';\r\nimport Tag from '../../helper/Tag.js';\r\n\r\nexport default class CmeTagsStore extends CxTagsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: CmeAPI.searchTags$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} options\r\n */\r\n _doLoad (options) {\r\n var me = this,\r\n fn = super._doLoad;\r\n\r\n me._loadTagThumbs$().then(function () {\r\n fn.call(me, options);\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * We need to filter unpublished categories.\r\n */\r\n _loadTagThumbs$ () {\r\n var me = this,\r\n tag = Tag.cmeClipartTagThumbsRoot(),\r\n owned = tag.Owned,\r\n shared = tag.Shared,\r\n requestModel = {\r\n Match: { Archived: false, Owned: owned, Shared: shared, Tags: [tag] },\r\n Owned: owned,\r\n Shared: shared,\r\n SortBy: 'Name',\r\n Type: 'Doc'\r\n };\r\n\r\n return CmeAPI.searchDocuments$(requestModel).then(function(resp){\r\n me._tagThumbsMap = {};\r\n \r\n resp.Items.forEach(function (catThumb) {\r\n me._tagThumbsMap[catThumb.Name] = catThumb.Id;\r\n });\r\n\r\n return Cx.resolve();\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} response\r\n * Example: { Items: [...] }\r\n */\r\n _processResponse (response) {\r\n var filtered = this._filterUnpublishedTags(response);\r\n return super._processResponse(filtered);\r\n }\r\n\r\n /**\r\n * Filters out tags that have not been published but have cliparts\r\n */\r\n _filterUnpublishedTags (categories) {\r\n var me = this,\r\n filtered = [];\r\n\r\n Cx_.forEach(categories, function(c) {\r\n if (me._tagThumbsMap[c.Name] !== undefined) {\r\n filtered.push(c);\r\n }\r\n });\r\n\r\n return filtered ;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n // Remove any number chars\r\n var data = super._processResponseItem(item);\r\n data.DisplayName = data.DisplayName.replace(/[0-9]/g, '');\r\n return data;\r\n }\r\n\r\n}\r\n","import PagingStore from 'smp-simple-components/src/data/PagingStore.js';\r\n\r\nexport default class TxPagingAssetsStore extends PagingStore {\r\n\r\n /**\r\n * CONFIGS\r\n * {Function} searchFn$\r\n */\r\n\r\n constructor (config) {\r\n super(config);\r\n\r\n this._searchText = undefined;\r\n\r\n this._requestModel = {\r\n ColorFlag: 'All',\r\n DeptID: undefined,\r\n Keyword: undefined,\r\n // Limit: ...,\r\n // Start: ...,\r\n Sort: 'Newest',\r\n Unique: 'Y'\r\n };\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getRootTag () {\r\n return this.getConfig('rootTag');\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} tag\r\n */\r\n isRootTag (tag) {\r\n var rootTag = this.getRootTag();\r\n\r\n if (!rootTag) {\r\n return false;\r\n }\r\n\r\n return rootTag.Id == tag.Id;\r\n }\r\n\r\n setSearchTag (tag) {\r\n if (!this.isSearchTag(tag)) {\r\n this._config.set('tag', tag);\r\n }\r\n }\r\n\r\n getSearchTag () {\r\n return this.getConfig('tag');\r\n }\r\n\r\n /**\r\n * @param {Object} tag\r\n */\r\n isSearchTag (tag) {\r\n var old = this.getSearchTag();\r\n\r\n if (!old) {\r\n return false;\r\n }\r\n\r\n return old == tag;\r\n}\r\n\r\n /**\r\n * Public override\r\n */\r\n load (options) {\r\n if (options && options.filter) {\r\n this._searchByText(options.filter, options);\r\n }\r\n\r\n else if (options && options.searchTag) {\r\n this._searchByTag(options.searchTag, options);\r\n }\r\n\r\n else {\r\n this._searchByTag(this.getRootTag(), options);\r\n }\r\n\r\n super.load(options);\r\n }\r\n\r\n /**\r\n * @param {Object} tag\r\n */\r\n _searchByTag (tag) {\r\n var me = this;\r\n\r\n me.setSearchTag(tag);\r\n me._searchText = undefined;\r\n me._applyToSearch(tag, undefined);\r\n }\r\n\r\n /**\r\n * @param {String} text\r\n */\r\n _searchByText (text) {\r\n var me = this;\r\n\r\n me._searchText = text;\r\n me._oldSearchTag = me.getSearchTag();\r\n me.setSearchTag(undefined);\r\n me._applyToSearch(undefined, text);\r\n }\r\n\r\n clearSearchText () {\r\n var me = this,\r\n tag = me._oldSearchTag;\r\n\r\n me._oldSearchTag = undefined;\r\n me._searchText = undefined;\r\n\r\n me.loadPage(1, {\r\n searchTag: tag\r\n });\r\n}\r\n\r\n /**\r\n * Private.\r\n * @param {Object} tag\r\n * @param {String} text\r\n */\r\n _applyToSearch (tag, text) {\r\n this._requestModel.DeptID = tag ? tag.Id : undefined;\r\n this._requestModel.Keyword = text;\r\n }\r\n\r\n\r\n /**\r\n * Private.\r\n * @param {Object} options\r\n */\r\n _doLoad (options) {\r\n var me = this,\r\n requestModel = me._requestModel,\r\n fn$ = me.getConfig('searchFn$');\r\n\r\n if (options && options.limit) {\r\n Object.assign(requestModel, {\r\n Limit: options.limit,\r\n Start: options.start\r\n });\r\n }\r\n\r\n fn$(requestModel).then(\r\n // Success\r\n function (responseModel) {\r\n me._onLoadComplete(responseModel);\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\nimport TxPagingAssetsStore from './TxPagingAssetsStore';\r\n\r\nexport default class TxClipArtsStore extends TxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: TransferExpressAPI.searchClipArts$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var name = item.Name,\r\n size = 90;\r\n\r\n return {\r\n Id: item.Id,\r\n Name: name,\r\n ThumbHeight: size,\r\n ThumbUrl: TransferExpressAPI.getClipArtThumb(name, { height: size, width: size }),\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nexport default class TxTagsStore extends Store {\r\n\r\n /**\r\n * Private.\r\n */\r\n _doLoad () {\r\n var me = this,\r\n apiFn$ = me.getConfig('apiFn$');\r\n\r\n apiFn$().then(\r\n // Success\r\n function (response) {\r\n if (response) {\r\n me._onLoadComplete(response);\r\n } else {\r\n me._onLoadFailed();\r\n }\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Private.\r\n * Made to work in TagField.\r\n */\r\n _processResponseItem (item) {\r\n var id = item.Id,\r\n name = item.Name;\r\n\r\n return {\r\n DisplayName: name,\r\n Id: id,\r\n Name: name,\r\n Tag: { Id: id, Name: name }\r\n };\r\n }\r\n\r\n}\r\n","import TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\nimport TxTagsStore from './TxTagsStore.js';\r\n\r\nexport default class TxClipArtTagsStore extends TxTagsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n apiFn$: TransferExpressAPI.loadClipArtCategories$,\r\n dataRoot: 'Items'\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n}\r\n","export default class OnReady {\r\n\r\n constructor () {\r\n this._handlers = [];\r\n this.isReady = false;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Function} handler\r\n */\r\n onReady (handler) {\r\n if (this.isReady) {\r\n handler.call();\r\n } else {\r\n this._handlers.push(handler);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n ready () {\r\n this.isReady = true;\r\n this._handlers.forEach(function (handler) {\r\n handler.call();\r\n });\r\n }\r\n\r\n}\r\n","import OnReady from '../util/OnReady.js';\r\n\r\nexport default class BaseService {\r\n\r\n //\r\n // PUBLIC METHODS\r\n //\r\n\r\n /**\r\n * Called by {ServiceUtil}\r\n * @param {Function} handler\r\n */\r\n register (handler) {\r\n this._handlers.push(handler);\r\n }\r\n\r\n /**\r\n * Called by {ServiceUtil}\r\n * @param {Function} handler\r\n */\r\n unRegister (handler) {\r\n this._remove(this._handlers, handler);\r\n }\r\n\r\n isReady () {\r\n return this._onReady.isReady;\r\n }\r\n\r\n /**\r\n * @param {Function} handler\r\n */\r\n onReady (handler) {\r\n this._onReady.onReady(handler);\r\n }\r\n\r\n //\r\n // PRIVATE METHODS\r\n //\r\n\r\n constructor () {\r\n this._handlers = [];\r\n this._onReady = new OnReady();\r\n }\r\n\r\n _onIsReady () {\r\n this._onReady.ready();\r\n }\r\n\r\n _onChange () {\r\n this._handlers.forEach(function (handler) {\r\n handler.call();\r\n });\r\n }\r\n\r\n _remove (items, item) {\r\n var len = items.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (items[i] === item) {\r\n items.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import Tag from '../helper/Tag.js';\r\nimport CxArtsStore from '../cadworx/store/CxArtsStore.js';\r\nimport CxTagsStore from '../cadworx/store/CxTagsStore.js';\r\nimport CmeClipArtsStore from '../cme/store/CmeClipArtsStore.js';\r\nimport CmeTagsStore from '../cme/store/CmeTagsStore.js';\r\nimport TxClipArtsStore from '../transferExpress/store/TxClipArtsStore.js';\r\nimport TxClipArtTagsStore from '../transferExpress/store/TxClipArtTagsStore.js';\r\nimport BaseService from './BaseService.js';\r\n\r\nexport default class ClipArtService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n Application.onReady(this._onApplicationReady.bind(this));\r\n }\r\n\r\n _onApplicationReady () {\r\n var me = this;\r\n\r\n me._initStores();\r\n me._initActiveStore();\r\n me._onIsReady();\r\n }\r\n\r\n _initStores () {\r\n var me = this;\r\n\r\n me._cadworxStore = new CxArtsStore({\r\n rootTag: Tag.cadworxClipArtsStoreRoot()\r\n });\r\n\r\n me._cadworxTagsStore = new CxTagsStore({\r\n rootTag: Tag.cadworxClipArtTagsStoreRoot()\r\n });\r\n\r\n me._cmeStore = new CmeClipArtsStore({\r\n rootTag: Tag.cmeClipArtStoreRoot()\r\n });\r\n\r\n me._cmeTagsStore = new CmeTagsStore({\r\n rootTag: Tag.cmeClipArtTagsStoreRoot()\r\n });\r\n\r\n me._txStore = new TxClipArtsStore({\r\n rootTag: { Id: 1011, Name: 'Promo Clipart' }\r\n });\r\n\r\n me._txTagsStore = new TxClipArtTagsStore();\r\n }\r\n\r\n _initActiveStore () {\r\n this.setCadworxActive();\r\n }\r\n\r\n //\r\n // PUBLIC METHODS\r\n //\r\n\r\n getSources () {\r\n return [\r\n { Id: 'cadworx', Name: 'Cadworx Live' },\r\n { Id: 'cme', Name: 'CAD-CUT Templates' },\r\n { Id: 'tx', Name: 'Transfer Express' }\r\n ];\r\n }\r\n\r\n getActiveSource () {\r\n var me = this;\r\n\r\n if (me.isCadworxActive()) {\r\n return 'cadworx';\r\n }\r\n\r\n if (me.isCmeActive()) {\r\n return 'cme';\r\n }\r\n\r\n if (me.isTransferExpressActive()) {\r\n return 'tx';\r\n }\r\n }\r\n\r\n setSource (id) {\r\n var me = this;\r\n\r\n if (id === 'cadworx') {\r\n me.setCadworxActive();\r\n } else if (id === 'cme') {\r\n me.setCmeActive();\r\n } else if (id === 'tx') {\r\n me.setTransferExpressActive();\r\n }\r\n }\r\n\r\n //\r\n // WHAT IS ACTIVE?\r\n //\r\n\r\n isCadworxActive () {\r\n return (this._activeStore === this._cadworxStore);\r\n }\r\n\r\n isCmeActive () {\r\n return (this._activeStore === this._cmeStore);\r\n }\r\n\r\n isImportedActive () {\r\n return false;\r\n }\r\n\r\n isTransferExpressActive () {\r\n return this._activeStore === this._txStore;\r\n }\r\n\r\n //\r\n // CHANGE WHAT IS ACTIVE\r\n //\r\n\r\n setCadworxActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._cadworxStore;\r\n me._activeTagsStore = me._cadworxTagsStore;\r\n me._onChange();\r\n }\r\n\r\n setCmeActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._cmeStore;\r\n me._activeTagsStore = me._cmeTagsStore;\r\n me._onChange();\r\n }\r\n\r\n setTransferExpressActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._txStore;\r\n me._activeTagsStore = me._txTagsStore;\r\n me._onChange();\r\n }\r\n\r\n //\r\n // ACTIVE STORE\r\n //\r\n\r\n store () {\r\n return this._activeStore;\r\n }\r\n\r\n tagsStore () {\r\n return this._activeTagsStore;\r\n }\r\n\r\n //\r\n // STORES\r\n //\r\n\r\n cadworxStore () {\r\n return this._cadworxStore;\r\n }\r\n\r\n cadworxTagsStore () {\r\n return this._cadworxTagsStore;\r\n }\r\n\r\n cmeStore () {\r\n return this._cmeStore;\r\n }\r\n\r\n cmeTagsStore () {\r\n return this._cmeTagsStore;\r\n }\r\n\r\n transferExpressStore () {\r\n return this._txStore;\r\n }\r\n\r\n}\r\n","import CmeAPI from '../../api/CmeAPI.js';\r\nimport CxPagingAssetsStore from '../../cadworx/store/CxPagingAssetsStore.js';\r\n\r\n/**\r\n * Searches CME Templates\r\n */\r\nexport default class CmeTemplatesStore extends CxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: CmeAPI.searchDocuments$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var size = 90;\r\n\r\n return {\r\n Id: item.Id,\r\n Name: item.Name,\r\n ThumbHeight: size,\r\n ThumbUrl: CmeAPI.getDocThumb(item, { height: size, width: size }),\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n}\r\n","import TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\nimport TxTagsStore from './TxTagsStore.js';\r\n\r\nexport default class TxLayoutTagsStore extends TxTagsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n apiFn$: TransferExpressAPI.loadLayoutCategories$,\r\n dataRoot: 'Items'\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n}\r\n","import TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\nimport TxPagingAssetsStore from './TxPagingAssetsStore';\r\n\r\nexport default class TxLayoutsStore extends TxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: TransferExpressAPI.searchLayouts$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var name = item.Name,\r\n size = 90;\r\n\r\n return {\r\n Id: item.Id,\r\n Name: name,\r\n ThumbHeight: size,\r\n ThumbUrl: TransferExpressAPI.getTemplateThumb(name, { height: size, width: size }),\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n}\r\n","import Tag from '../helper/Tag.js';\r\nimport CxArtsStore from '../cadworx/store/CxArtsStore.js';\r\nimport CxTagsStore from '../cadworx/store/CxTagsStore.js';\r\nimport CmeTemplatesStore from '../cme/store/CmeTemplatesStore.js';\r\nimport CmeTagsStore from '../cme/store/CmeTagsStore.js';\r\nimport TxLayoutTagsStore from '../transferExpress/store/TxLayoutTagsStore.js';\r\nimport TxLayoutsStore from '../transferExpress/store/TxLayoutsStore.js';\r\nimport BaseService from './BaseService.js';\r\n\r\nexport default class TemplateService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n Application.onReady(this._onApplicationReady.bind(this));\r\n }\r\n\r\n _onApplicationReady () {\r\n var me = this;\r\n\r\n me._initStores();\r\n me._initActiveStore();\r\n me._onIsReady();\r\n }\r\n\r\n _initStores () {\r\n var me = this;\r\n\r\n me._cadworxStore = new CxArtsStore({\r\n rootTag: Tag.cadworxTemplatesStoreRoot()\r\n });\r\n\r\n me._cadworxTagsStore = new CxTagsStore({\r\n rootTag: Tag.cadworxTemplateTagsStoreRoot()\r\n });\r\n\r\n me._cmeStore = new CmeTemplatesStore({\r\n rootTag: Tag.cmeTemplateStoreRoot()\r\n });\r\n\r\n me._cmeTagsStore = new CmeTagsStore({\r\n rootTag: Tag.cmeTemplateTagsStoreRoot()\r\n });\r\n\r\n me._txStore = new TxLayoutsStore({\r\n rootTag: { Id: 540, Name: 'Promo Layouts' }\r\n });\r\n\r\n me._txTagsStore = new TxLayoutTagsStore();\r\n }\r\n\r\n _initActiveStore () {\r\n this.setCadworxActive();\r\n }\r\n\r\n //\r\n // PUBLIC METHODS\r\n //\r\n\r\n getSources () {\r\n return [\r\n { Id: 'cadworx', Name: 'Cadworx Live' },\r\n { Id: 'cme', Name: 'CAD-CUT Templates' },\r\n { Id: 'tx', Name: 'Transfer Express' }\r\n ];\r\n }\r\n\r\n getActiveSource () {\r\n var me = this;\r\n\r\n if (me.isCadworxActive()) {\r\n return 'cadworx';\r\n }\r\n\r\n if (me.isCmeActive()) {\r\n return 'cme';\r\n }\r\n\r\n if (me.isTransferExpressActive()) {\r\n return 'tx';\r\n }\r\n }\r\n\r\n setSource (id) {\r\n var me = this;\r\n\r\n if (id === 'cadworx') {\r\n me.setCadworxActive();\r\n } else if (id === 'cme') {\r\n me.setCmeActive();\r\n } else if (id === 'tx') {\r\n me.setTransferExpressActive();\r\n }\r\n }\r\n\r\n //\r\n // WHAT IS ACTIVE?\r\n //\r\n\r\n isCadworxActive () {\r\n return (this._activeStore === this._cadworxStore);\r\n }\r\n\r\n isCmeActive () {\r\n return (this._activeStore === this._cmeStore);\r\n }\r\n\r\n isImportedActive () {\r\n return false;\r\n }\r\n\r\n isTransferExpressActive () {\r\n return this._activeStore === this._txStore;\r\n }\r\n\r\n //\r\n // CHANGE WHAT IS ACTIVE\r\n //\r\n\r\n setCadworxActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._cadworxStore;\r\n me._activeTagsStore = me._cadworxTagsStore;\r\n me._onChange();\r\n }\r\n\r\n setCmeActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._cmeStore;\r\n me._activeTagsStore = me._cmeTagsStore;\r\n me._onChange();\r\n }\r\n\r\n setTransferExpressActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._txStore;\r\n me._activeTagsStore = me._txTagsStore;\r\n me._onChange();\r\n }\r\n\r\n //\r\n // ACTIVE STORE\r\n //\r\n\r\n store () {\r\n return this._activeStore;\r\n }\r\n\r\n tagsStore () {\r\n return this._activeTagsStore;\r\n }\r\n\r\n //\r\n // STORES\r\n //\r\n\r\n cadworxStore () {\r\n return this._cadworxStore;\r\n }\r\n\r\n cadworxTagsStore () {\r\n return this._cadworxTagsStore;\r\n }\r\n\r\n cmeStore () {\r\n return this._cmeStore;\r\n }\r\n\r\n cmeTagsStore () {\r\n return this._cmeTagsStore;\r\n }\r\n\r\n transferExpressStore () {\r\n return this._txStore;\r\n }\r\n\r\n}\r\n","import Doc from './Doc.js';\r\n\r\nexport default class Background {\r\n\r\n static layerId () {\r\n return 'base_image';\r\n }\r\n\r\n static layerSelector () {\r\n return { id: Background.layerId() };\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas} canvas\r\n */\r\n static findLayer (canvas) {\r\n var doc = canvas.background;\r\n return Doc.findLayer(doc, Background.layerId());\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas} canvas\r\n */\r\n static findRaster (canvas) {\r\n // var layer = Background.findLayer(canvas),\r\n // figures = layer ? layer.figures.toArray() : [];\r\n\r\n // return Cx.findByType(figures, Cx.Raster);\r\n return canvas.background.activePage.figures[0];\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas} canvas\r\n */\r\n static findAllRasters (canvas) {\r\n var figures = canvas.background.figures;\r\n\r\n return figures.filter(function (f) {\r\n return f instanceof Cx.Raster;\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc The background document.\r\n */\r\n static lockFigures (doc) {\r\n doc.figures.forEach(function (f) {\r\n f.locked = true;\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas} canvas\r\n * @param {Boolean} hidden\r\n */\r\n static setHidden (canvas, hidden) {\r\n var layers = canvas.background.layers,\r\n len = layers.length,\r\n i = 0,\r\n change = false,\r\n layer;\r\n\r\n for (; i < len; i++) {\r\n layer = layers[i];\r\n\r\n if (layer.hidden != hidden) {\r\n change = true;\r\n layer.hidden = hidden;\r\n }\r\n }\r\n\r\n return change;\r\n }\r\n\r\n /**\r\n * @param {Cx.Canvas} canvas\r\n */\r\n static getBgColor$ (canvas) {\r\n var raster = Background.findRaster(canvas);\r\n\r\n if (raster) {\r\n return raster.center$().then(function (center) {\r\n return Cx.colorAt$(raster, center).then(function (color) {\r\n return Cx.resolve(color);\r\n });\r\n });\r\n } else {\r\n return Cx.resolve(undefined);\r\n }\r\n }\r\n\r\n /**\r\n * @param {String} id A document id.\r\n */\r\n static load$ (id) {\r\n return Cx.Document.load$(id).then(function (doc) {\r\n return Background.fixSize$(doc).then(function () {\r\n return Cx.resolve(doc);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n */\r\n static fixSize$ (doc) {\r\n var defer = Cx.Defer(),\r\n fn$ = [];\r\n\r\n doc.figures.forEach(function (figure) {\r\n var key = 'dxAutoSize',\r\n meta = figure.metadata,\r\n size = 36 * 25.4, // convert 36 inches to mm ( not professional at all, Clint ordered me to do this )\r\n sizeSet = meta.get(key);\r\n\r\n if (isNaN(sizeSet)) {\r\n fn$.push(Cx.setSize$([figure], {\r\n height: size,\r\n locked: true\r\n }));\r\n\r\n meta.set(key, size);\r\n }\r\n });\r\n\r\n if (fn$.length > 0) {\r\n return Cx.whenAll(fn$).then(\r\n function () {\r\n return defer.resolve();\r\n }\r\n );\r\n } else {\r\n return defer.resolve();\r\n }\r\n\r\n return defer;\r\n }\r\n\r\n}\r\n","import Background from '../helper/Background.js';\r\nimport Brush from '../helper/Brush.js';\r\nimport CmeBrush from '../helper/CmeBrush.js';\r\nimport Doc from '../helper/Doc.js';\r\nimport Figure from '../helper/Figure.js';\r\nimport Meta from '../helper/Meta.js';\r\nimport TransferGroup from '../helper/TransferGroup.js';\r\nimport TxDistress from '../helper/TxDistress.js';\r\nimport BaseService from './BaseService.js';\r\n\r\nexport default class DesignService extends BaseService {\r\n\r\n //\r\n // PUBLIC METHODS\r\n //\r\n\r\n /**\r\n * @param {Cx.Canvas} canvas\r\n */\r\n registerCanvas (canvas) {\r\n var me = this;\r\n\r\n me._canvas = canvas;\r\n me._onIsReady();\r\n\r\n canvas.on('duplicated', me._onCanvasDuplicated, me);\r\n canvas.on('change', me._onCanvasChange, me);\r\n canvas.on('figureschanged', me._onCanvasFiguresChanged, me)\r\n canvas.on('render', me._onCanvasChange, me);\r\n canvas.on('zoomupdated', me._onCanvasZoomUpdated, me);\r\n }\r\n\r\n canvas () {\r\n return this._canvas;\r\n }\r\n\r\n backgroundDocument () {\r\n return this._canvas.background;\r\n }\r\n\r\n /**\r\n * Use instead of canvas.document since canvas.document points to the active document\r\n * which can be the background document.\r\n */\r\n designDocument () {\r\n return this._canvas.mainDocument;\r\n }\r\n\r\n tool () {\r\n return this._canvas.tool;\r\n }\r\n\r\n toolIsSelect () {\r\n return (this.tool() instanceof Cx.Tool.Select);\r\n }\r\n\r\n newBackground$ () {\r\n var canvas = this.canvas();\r\n\r\n canvas.background = Cx.Document();\r\n return canvas.commit$();\r\n }\r\n\r\n /**\r\n * @param {Number} v\r\n */\r\n bumpBackgroundSize (v) {\r\n var me = this,\r\n canvas = me._canvas,\r\n bgRaster = Background.findRaster(canvas);\r\n\r\n me._bumpBackgroundSize$(bgRaster, v).then(canvas.commit$);\r\n }\r\n\r\n /**\r\n * @param {Number} v\r\n */\r\n bumpAllBackgroundsSize (v) {\r\n var me = this,\r\n canvas = me._canvas,\r\n bgRasters = Background.findAllRasters(canvas),\r\n fn$ = [];\r\n\r\n bgRasters.forEach(function (figure) {\r\n fn$.push(me._bumpBackgroundSize$(figure, v));\r\n });\r\n\r\n Cx.whenAll(fn$).then(canvas.commit$);\r\n }\r\n\r\n _bumpBackgroundSize$ (bgRaster, v) {\r\n return bgRaster.bounds$().then(\r\n function (bounds) {\r\n var w = bounds.width;\r\n\r\n return Cx.setSize$([bgRaster], {\r\n locked: true,\r\n width: v > 0 ? w + 10 : w - 10\r\n });\r\n }\r\n );\r\n }\r\n\r\n canBumpBackgroundSize () {\r\n return this._bumpBackgroundSizeCondition;\r\n }\r\n\r\n canBumpAllBackgroundsSize () {\r\n return this._bumpAllBackgroundsSizeCondition;\r\n }\r\n\r\n newDocument () {\r\n var canvas = this._canvas;\r\n\r\n canvas.document = Cx.Document();\r\n canvas.commit$();\r\n }\r\n\r\n canSave () {\r\n return this._saveCondition;\r\n }\r\n\r\n /**\r\n * @param {String} groupName\r\n */\r\n selectTransferGroup (groupName) {\r\n var groups = TransferGroup.getActiveDesignGroups(),\r\n figures = groups[groupName],\r\n canvas;\r\n\r\n if (figures) {\r\n canvas = this.canvas();\r\n canvas.selectedFigures = figures;\r\n canvas.render$();\r\n }\r\n }\r\n\r\n addCadworxLiveText (config, docPoint) {\r\n var me = this;\r\n\r\n me._createText$(config).then(function (figure) {\r\n Meta.flagFontAsCadworxLive([figure]);\r\n me._addText$(figure, docPoint).then(me._canvas.commit$);\r\n });\r\n }\r\n\r\n addCmeText (config, docPoint) {\r\n var me = this;\r\n\r\n me._createText$(config).then(function (figure) {\r\n Meta.flagFontAsCme([figure]);\r\n me._cmeAddTextOutline(figure);\r\n me._cmeFixBrush([figure]);\r\n me._addText$(figure, docPoint).then(me._canvas.commit$);\r\n });\r\n }\r\n\r\n _cmeFixBrush (figures) {\r\n var activeFigures = this.getActiveDesignFigures(),\r\n firstBrush = CmeBrush.firstBrush(activeFigures);\r\n\r\n CmeBrush.ensureDefaultBrush(figures);\r\n CmeBrush.ensureSingleBrush(figures, firstBrush);\r\n }\r\n\r\n _cmeAddTextOutline (figure) {\r\n var contour = Cx.Process.Contour({\r\n brush: Cx.Brush({\r\n color: Cx.Color({\r\n rgb: 'FFFFFF',\r\n showThrough: true,\r\n tag: 'ClippingContour'\r\n })\r\n }),\r\n offset: 0.08 * 25.4\r\n }),\r\n constrain = Cx.Process.Constrain( {\r\n maxWidth: 12 * 25.4\r\n });\r\n\r\n figure.processes.add(contour);\r\n figure.processes.add(constrain);\r\n }\r\n\r\n addImportedText (config, docPoint) {\r\n var me = this;\r\n\r\n me._createText$(config).then(function (figure) {\r\n Meta.flagFontAsUserImported([figure]);\r\n me._addText$(figure, docPoint).then(me._canvas.commit$);\r\n });\r\n }\r\n\r\n addTransferExpressText (config, docPoint) {\r\n var me = this;\r\n\r\n me._createText$(config).then(function (figure) {\r\n Meta.flagFontAsTransferExpress([figure]);\r\n me._addText$(figure, docPoint).then(me._canvas.commit$);\r\n });\r\n }\r\n\r\n _createText$ (config) {\r\n var me = this,\r\n canvas = me._canvas,\r\n bgRaster = Background.findRaster(canvas);\r\n\r\n if (!config.text) {\r\n config.text = 'New Text';\r\n }\r\n\r\n // Size based on the raster image on the background?\r\n if (bgRaster) {\r\n return bgRaster.bounds$().then(function (bounds) {\r\n if (!config.fontSize) {\r\n config.fontSize = bounds.height / 15;\r\n }\r\n\r\n return Cx.resolve(Cx.Text(config));\r\n });\r\n }\r\n\r\n return Cx.resolve(Cx.Text(config));\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} textFigure\r\n * @param {Cx.Point} [docPoint]\r\n */\r\n _addText$ (textFigure, docPoint) {\r\n var me = this,\r\n canvas = me._canvas;\r\n\r\n return me._centerAndAddToDesignArea$([textFigure], docPoint).then(function (figures) {\r\n TransferGroup.addToFirstGroup(figures);\r\n // Required (all modes)\r\n Meta.setFigureId(figures[0]);\r\n canvas.selectedFigures = figures;\r\n return Cx.resolve(figures);\r\n });\r\n }\r\n\r\n //\r\n // CADWORX LIVE\r\n //\r\n\r\n /**\r\n * @param {String} id A document id.\r\n * @param {Cx.Point} point\r\n */\r\n importCadworxLiveClipArt (id, point) {\r\n this._importCadworxLiveDocOnLoad(Doc.loadCadworxLiveClipArt$(id), point);\r\n }\r\n\r\n /**\r\n * @param {String} id A document id.\r\n * @param {Cx.Point} point\r\n */\r\n importCadworxLiveMyFile (id, point) {\r\n this._importCadworxLiveDocOnLoad(Doc.loadCadworxLiveMyFile$(id), point);\r\n }\r\n\r\n /**\r\n * @param {String} id A document id.\r\n * @param {Cx.Point} point\r\n */\r\n importCadworxLiveTemplate (id, point) {\r\n this._importCadworxLiveDocOnLoad(Doc.loadCadworxLiveTemplate$(id), point);\r\n }\r\n\r\n _importCadworxLiveDocOnLoad (loader$, point) {\r\n var me = this,\r\n app = Application,\r\n canvas = me._canvas;\r\n\r\n canvas.lock();\r\n app.wait();\r\n\r\n Cx.when(loader$).then(\r\n function (figures) { // Success\r\n app.hide();\r\n TransferGroup.addToFirstGroup(figures);\r\n me._centerAndAddToDesignArea$(figures, point).then(function (added) {\r\n canvas.selectedFigures = added;\r\n return canvas.commit$();\r\n });\r\n },\r\n function () { // Fail\r\n canvas.unlock();\r\n app.hide();\r\n }\r\n );\r\n }\r\n\r\n //\r\n // CME\r\n //\r\n\r\n /**\r\n * @param {String} id A document id.\r\n * @param {Cx.Point} point\r\n */\r\n importCmeClipArt (id, point) {\r\n this._importCmeDocOnLoad(Doc.loadCmeClipArt$(id), point);\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} oldFigures\r\n * @param {String} id\r\n */\r\n replaceCmeClipArt (oldFigures, id) {\r\n var me = this,\r\n app = Application,\r\n canvas = me._canvas;\r\n\r\n canvas.lock();\r\n app.wait();\r\n\r\n Doc.loadCmeClipArt$(id).then(\r\n // Success\r\n function (figures) {\r\n app.hide();\r\n // We need to preserve metadata\r\n var oldFigure = oldFigures[0],\r\n optional = Meta.getOptional(oldFigure),\r\n pricingLabel = Meta.getPricingLabel(oldFigure),\r\n transferGroupName = TransferGroup.getName(oldFigure);\r\n\r\n if (optional) {\r\n figures.forEach(function (f) {\r\n Meta.setOptional(f, optional);\r\n Meta.setPricingLabel(f, pricingLabel);\r\n });\r\n }\r\n\r\n if (transferGroupName) {\r\n TransferGroup.addToGroup(figures, transferGroupName);\r\n }\r\n\r\n me._cmeFixBrush(figures);\r\n canvas.replaceClipart$(oldFigures, figures).then(canvas.commit$);\r\n },\r\n // Fail\r\n function () {\r\n canvas.unlock();\r\n app.hide();\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param {String} id A document id.\r\n * @param {Cx.Point} point\r\n */\r\n importCmeMyFile (id, point) {\r\n this._importCmeDocOnLoad(Doc.loadCmeMyFile$(id), point);\r\n }\r\n\r\n /**\r\n * @param {String} id A document id.\r\n * @param {Cx.Point} point\r\n */\r\n importCmeTemplate (id, point) {\r\n this._importCmeDocOnLoad(Doc.loadCmeTemplate$(id), point);\r\n }\r\n\r\n _importCmeDocOnLoad (loader$, point) {\r\n var me = this,\r\n app = Application,\r\n canvas = me._canvas;\r\n\r\n canvas.lock();\r\n app.wait();\r\n\r\n Cx.when(loader$).then(\r\n function (figures) { // Success\r\n app.hide();\r\n me._cmeFixBrush(figures);\r\n TransferGroup.addToFirstGroup(figures);\r\n me._centerAndAddToDesignArea$(figures, point).then(function (added) {\r\n canvas.selectedFigures = added;\r\n return canvas.commit$();\r\n });\r\n },\r\n function () { // Fail\r\n canvas.unlock();\r\n app.hide();\r\n }\r\n );\r\n }\r\n\r\n //\r\n // TRANSFER EXPRESS\r\n //\r\n\r\n /**\r\n * @param {String} name\r\n * @param {Cx.Point} point\r\n */\r\n importTransferExpressClipArt (name, point) {\r\n this._importTransferExpressDocOnLoad(Doc.loadTransferExpressClipArt$(name), point);\r\n }\r\n\r\n /**\r\n * @param {String} id A document id.\r\n * @param {Cx.Point} point\r\n */\r\n importTransferExpressMyFile (id, point) {\r\n this._importTransferExpressDocOnLoad(Doc.loadTransferExpressMyFile$(id), point);\r\n }\r\n\r\n /**\r\n * @param {String} name\r\n * @param {Cx.Point} point\r\n */\r\n importTransferExpressTemplate (name, point) {\r\n this._importTransferExpressDocOnLoad(Doc.loadTransferExpressTemplate$(name), point, true);\r\n }\r\n\r\n /**\r\n * Helper for importing Transfer Express clip art, my file\r\n * and templates that could be distressed.\r\n */\r\n _importTransferExpressDocOnLoad (loader$, point, isTemplate) {\r\n var me = this,\r\n app = Application,\r\n canvas = me._canvas;\r\n\r\n canvas.lock();\r\n app.wait();\r\n\r\n Cx.when(loader$).then(\r\n // Success\r\n function (doc) {\r\n app.hide();\r\n\r\n var figures = doc.figures,\r\n layers = TxDistress.parseDistressLayers(doc),\r\n added = [];\r\n\r\n if (isTemplate) {\r\n TransferGroup.createGroup(figures);\r\n } else {\r\n TransferGroup.addToFirstGroup(figures);\r\n }\r\n\r\n // Distress layers?\r\n if (layers) {\r\n Cx.center$(figures, point || canvas).then(function () {\r\n TxDistress.addToDistressLayer(canvas, layers.distress.figures);\r\n\r\n if (layers.nonDistressed) {\r\n added = TxDistress.addToNonDistressedLayer(canvas, layers.nonDistressed.figures);\r\n }\r\n\r\n // Add distressed layer figures to the 'design_area' layer\r\n if (layers.distressed) {\r\n added = added.concat(me._addToDesignArea(layers.distressed.figures));\r\n }\r\n\r\n canvas.selectedFigures = added;\r\n canvas.commit$();\r\n });\r\n }\r\n\r\n else {\r\n me._centerAndAddToDesignArea$(figures, point).then(function (added) {\r\n canvas.selectedFigures = added;\r\n canvas.commit$();\r\n });\r\n }\r\n },\r\n // Fail\r\n function () {\r\n canvas.unlock();\r\n app.hide();\r\n }\r\n );\r\n }\r\n\r\n //\r\n // MY FILE\r\n //\r\n\r\n /**\r\n * Saved design being opened\r\n * @param {String} id A document id.\r\n * @param {Cx.Point} point\r\n */\r\n importMyFile (id, point) {\r\n var me = this,\r\n app = Application,\r\n canvas = me._canvas;\r\n\r\n canvas.lock();\r\n app.wait();\r\n\r\n Doc.loadFigures$(id).then(\r\n function (figures) { // Success\r\n app.hide();\r\n TransferGroup.addToFirstGroup(figures);\r\n me._centerAndAddToDesignArea$(figures, point).then(function (added) {\r\n canvas.selectedFigures = added;\r\n return canvas.commit$();\r\n });\r\n },\r\n function () { // Fail\r\n canvas.unlock();\r\n app.hide();\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n */\r\n importDocFromFile$ (doc) {\r\n var me = this,\r\n canvas = me._canvas,\r\n figures = doc.figures;\r\n\r\n // Required (all modes)\r\n figures.forEach(function (f) {\r\n Meta.setFigureId(f);\r\n });\r\n\r\n Meta.flagAsUserImported(figures);\r\n\r\n TransferGroup.addToFirstGroup(figures);\r\n return me._centerAndAddToDesignArea$(figures).then(function (added) {\r\n canvas.selectedFigures = added;\r\n return canvas.commit$();\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n * @param {Cx.Point} point\r\n */\r\n _centerAndAddToDesignArea$ (figures, point) {\r\n var me = this,\r\n canvas = me._canvas;\r\n\r\n return Cx.center$(figures, point || canvas).then(function () {\r\n return Cx.resolve(me._addToDesignArea(figures));\r\n });\r\n }\r\n\r\n _addToDesignArea (figures) {\r\n this._canvas.destinationLayerSelector = this.designLayerSelector;\r\n return this._canvas.add(figures);\r\n }\r\n\r\n /**\r\n * @param {String} id The designs background document id.\r\n * @param {Boolean} hideBackgroundFigures\r\n */\r\n openBackground$ (id, hideBackgroundFigures) {\r\n var me = this,\r\n app = Application,\r\n bg = Background,\r\n canvas = me.canvas();\r\n\r\n return bg.load$(id).then(function (doc) {\r\n // if (app.isFrontEnd()) {\r\n // bg.lockFigures(doc);\r\n // }\r\n\r\n if (hideBackgroundFigures) {\r\n doc.pages.forEach(function (page) {\r\n page.figures[0].hidden = true;\r\n });\r\n }\r\n\r\n app.decorationService.setHidden(false, doc);\r\n canvas.lock();\r\n canvas.background = doc;\r\n\r\n return canvas.commit$();\r\n });\r\n }\r\n\r\n /**\r\n * @param {Boolean} hidden\r\n */\r\n setBackgroundHidden$ (hidden) {\r\n var me = this,\r\n canvas = me.canvas();\r\n\r\n if (Background.setHidden(canvas, hidden)) {\r\n return canvas.render$().then(function () {\r\n return me.zoomToFitPages$(hidden ? 40 : 0);\r\n });\r\n } else {\r\n return Cx.resolve();\r\n }\r\n }\r\n\r\n /**\r\n * @param {String} id The design document id.\r\n */\r\n openDesign$ (id) {\r\n var me = this,\r\n app = Application,\r\n canvas = me.canvas();\r\n\r\n return Doc.openDesign$(id).then(\r\n function (doc) {\r\n canvas.lock();\r\n canvas.document = doc;\r\n\r\n return canvas.commit$().then(\r\n function () {\r\n app.decorationService.syncAnnotations()\r\n return Cx.resolve();\r\n }\r\n );\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param {Number} id\r\n */\r\n viewByFigureId (id) {\r\n var figures = this._canvas.figures.filter(function (obj) {\r\n return Meta.getFigureId(obj) == id;\r\n }),\r\n figure = figures[0];\r\n\r\n if (figure) {\r\n this.activePage(figure.page.id);\r\n }\r\n }\r\n\r\n /**\r\n * @param {String} id (Optional)\r\n */\r\n activePage (id) {\r\n var canvas = this.canvas(),\r\n value = canvas.activePage.id;\r\n\r\n if (id === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else if (id !== value) { // Set\r\n this.activePage$(id);\r\n }\r\n }\r\n\r\n activePage$ (id) {\r\n var canvas = this.canvas(),\r\n decorationService = Application.decorationService,\r\n page = canvas.pages.find((p) => p.id === id);\r\n\r\n if(!page)\r\n return Promise.reject(\"Page not found\");\r\n\r\n decorationService.clearAnnotations();\r\n\r\n // Figures will be added to previous page if selection is\r\n // not clear before setting the new 'active' page.\r\n canvas.clearSelection();\r\n\r\n canvas.activePage = page;\r\n decorationService.syncAnnotations();\r\n return canvas.render$();\r\n }\r\n\r\n //\r\n //\r\n //\r\n\r\n /**\r\n * @param {Object} [value] { items: [...], changes: { item: newBrush, index: atIndex }\r\n */\r\n brush (v) {\r\n var me = this,\r\n value = me._brush;\r\n\r\n // Get?\r\n if (v === undefined) {\r\n return value;\r\n }\r\n\r\n else if (me.canEditBrush()) { // Set\r\n if (v.changes) {\r\n Cx.changeBrushZone(me._brushTarget, me._brushZones[v.changes.index], v.changes.item);\r\n me._canvas.commit$();\r\n }\r\n }\r\n }\r\n\r\n canEditBrush () {\r\n var me = this;\r\n\r\n if (!me._brushCondition || !me.toolIsSelect()) {\r\n return false;\r\n }\r\n\r\n return me._brushZones.length > 0;\r\n }\r\n\r\n /**\r\n * @param {Object} [value]\r\n * Example value: { items: [...], changes: { item: newPen, index: atIndex }\r\n */\r\n pen (v) {\r\n var value = this._pen;\r\n\r\n // Get?\r\n if (v === undefined) {\r\n return value;\r\n }\r\n\r\n else if (this.canEditPen()) { // Set\r\n if (v.changes && !Cx.areEqual(v, value)) {\r\n value.items[v.changes.index].owner().pen = v.changes.item;\r\n this._canvas.render$();\r\n }\r\n }\r\n }\r\n\r\n canEditPen () {\r\n return this._penCondition && this.toolIsSelect();\r\n }\r\n\r\n /**\r\n * @param {Boolean} [v]\r\n */\r\n aspectRatioLocked (v) {\r\n var value = this._aspectRatioLocked;\r\n\r\n if (typeof value !== 'boolean') {\r\n value = true;\r\n }\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else if (this.canEditSize() && (v !== value)) { // Set\r\n this._aspectRatioLocked = v;\r\n }\r\n }\r\n\r\n height (v) {\r\n var value = this._height,\r\n units = Application.units();\r\n\r\n if (v === undefined) { // Get?\r\n return parseFloat(units.toUser(value));\r\n }\r\n\r\n else if (this.canEditSize()) { // Set\r\n if (this.ignoreHeightChange) {\r\n this.ignoreHeightChange = undefined;\r\n return;\r\n }\r\n\r\n v = units.toDocument(v);\r\n\r\n if (v !== value) {\r\n if (this.aspectRatioLocked()) {\r\n this.ignoreWidthChange = true;\r\n }\r\n\r\n Figure.setSize$(this._sizeTarget, {\r\n height: v,\r\n locked: this.aspectRatioLocked()\r\n }).then(this._canvas.commit$);\r\n }\r\n }\r\n }\r\n\r\n width (v) {\r\n var value = this._width,\r\n units = Application.units();\r\n\r\n if (v === undefined) { // Get?\r\n return parseFloat(units.toUser(value));\r\n }\r\n\r\n else if (this.canEditSize()) { // Set\r\n if (this.ignoreWidthChange) {\r\n this.ignoreWidthChange = undefined;\r\n return;\r\n }\r\n\r\n v = units.toDocument(v);\r\n\r\n if (v !== value) {\r\n if (this.aspectRatioLocked()) {\r\n this.ignoreHeightChange = true;\r\n }\r\n\r\n Figure.setSize$(this._sizeTarget, {\r\n locked: this.aspectRatioLocked(),\r\n width: v\r\n }).then(this._canvas.commit$);\r\n }\r\n }\r\n }\r\n\r\n canEditSize () {\r\n return this._sizeCondition && this.toolIsSelect();\r\n }\r\n\r\n designSizeHeight () {\r\n var value = this._designSizeHeight,\r\n units = Application.units();\r\n\r\n return units.toUser(value);\r\n }\r\n\r\n designSizeWidth () {\r\n var value = this._designSizeWidth,\r\n units = Application.units();\r\n\r\n return units.toUser(value);\r\n }\r\n\r\n canShowDesignSize () {\r\n return this._designSizeCondition;\r\n }\r\n\r\n /**\r\n * @param {String} [v]\r\n */\r\n text (v) {\r\n var value = this._text;\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else if (this.canEditText() && (v !== value)) { // Set\r\n this._textTarget.text = v;\r\n this._canvas.render$();\r\n }\r\n }\r\n\r\n canEditText (target) {\r\n return target ? this._canEditText(target) : this._textCondition;\r\n }\r\n\r\n _canEditText (target) {\r\n target = target.isArray ? target : [target];\r\n return this._canvas.are(target, '1', 'text', '!multiPartText', '!monogram');\r\n }\r\n\r\n /**\r\n * @param {String} id The 'localId' of the text figure.\r\n */\r\n getDynamicTextFigureById (id) {\r\n return this._canvas.figures.filter(function (f) {\r\n return Meta.getFigureId(f) == id;\r\n })[0];\r\n }\r\n\r\n getDynamicText () {\r\n var doc = this.designDocument(),\r\n data = {},\r\n isEmpty = true;\r\n\r\n doc.pages.forEach(function (page) {\r\n var pageData = [];\r\n\r\n if (page.id) {\r\n page.figures.forEach(function (figure, index) {\r\n var editable = Meta.getTextEditable(figure),\r\n optional = Meta.getOptional(figure);\r\n\r\n if (figure.isText) {\r\n pageData.push({\r\n editable: editable,\r\n figure_index: index,\r\n id: Meta.getFigureId(figure),\r\n optional: optional,\r\n pricingLabel: optional ? Meta.getPricingLabel(figure) : '',\r\n text: Figure.isMonogram(figure) ? figure.line : figure.text,\r\n type: 'text'\r\n });\r\n }\r\n\r\n else {\r\n pageData.push({\r\n figure_index: index,\r\n id: Meta.getFigureId(figure),\r\n optional: optional,\r\n pricingLabel: optional ? Meta.getPricingLabel(figure) : '',\r\n type: 'clipart'\r\n });\r\n }\r\n });\r\n\r\n isEmpty = false;\r\n data[page.id] = pageData;\r\n }\r\n });\r\n\r\n return isEmpty ? undefined : data;\r\n }\r\n\r\n setDynamicText$ (figure, text, hidden) {\r\n if (text !== undefined) {\r\n figure.text = text;\r\n }\r\n\r\n if (typeof hidden === 'boolean') {\r\n figure.hidden = hidden;\r\n }\r\n\r\n return this._canvas.commit$();\r\n }\r\n\r\n /**\r\n * @param {Percent} [v]\r\n */\r\n charSpacing (v) {\r\n var value = this._charSpacing;\r\n\r\n // Get?\r\n if (v === undefined) {\r\n return parseFloat(value);\r\n }\r\n\r\n else if (this.canEditCharSpacing() && (v !== value)) { // Set\r\n this._charSpacingTarget.forEach(function (t) {\r\n Figure.setCharSpacing(t, v);\r\n });\r\n\r\n this._canvas.render$();\r\n }\r\n }\r\n\r\n canEditCharSpacing () {\r\n return this._charSpacingCondition;\r\n }\r\n\r\n /**\r\n * @param {Cx.Font} [v]\r\n */\r\n font (v) {\r\n var value = this._font;\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else if (this.canEditFont() && (v !== value)) { // Set\r\n this._font$(v, this._getFontTarget());\r\n }\r\n }\r\n\r\n cadworxLiveFont$ (font, figure) {\r\n var target = this._getFontTarget(figure);\r\n Meta.flagFontAsCadworxLive(target);\r\n return this._font$(font, target);\r\n }\r\n\r\n cmeFont$ (font, figure) {\r\n var target = this._getFontTarget(figure);\r\n Meta.flagFontAsCme(target);\r\n return this._font$(font, target);\r\n }\r\n\r\n importedFont$ (font, figure) {\r\n var target = this._getFontTarget(figure);\r\n Meta.flagFontAsUserImported(target);\r\n return this._font$(font, target);\r\n }\r\n\r\n transferExpressFont$ (font, figure) {\r\n var target = this._getFontTarget(figure);\r\n Meta.flagFontAsTransferExpress(target);\r\n return this._font$(font, target);\r\n }\r\n\r\n /**\r\n * @param {Cx.Font} font\r\n * @param {Cx.Figure/Cx.Figure[]} figure\r\n */\r\n _font$ (font, target) {\r\n target.forEach(function (f) {\r\n f.font = font;\r\n });\r\n\r\n return this._canvas.render$();\r\n }\r\n\r\n _getFontTarget (figure) {\r\n if (figure === undefined) {\r\n return this._fontTarget;\r\n }\r\n\r\n if (!Array.isArray(figure)) {\r\n return [figure];\r\n }\r\n\r\n return figure;\r\n }\r\n\r\n fontName () {\r\n var f = this._font;\r\n\r\n if (f) {\r\n return Application.fontService.getFontDisplayName(f);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @param {Number} [v]\r\n */\r\n fontSize (v) {\r\n var value = parseFloat(this._fontSize);\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n } else if (this.canEditFont() && (v != value)) { // Set\r\n this._fontTarget.forEach(function (t) {\r\n t.fontSize = parseFloat(v);\r\n });\r\n\r\n this._canvas.render$();\r\n }\r\n }\r\n\r\n canEditFont () {\r\n return this._fontCondition;\r\n }\r\n\r\n /**\r\n * @param {Number} [v]\r\n */\r\n maxWidth (v) {\r\n var value = this._maxWidth,\r\n units = Application.units(),\r\n canvas, target;\r\n\r\n if (v === undefined) { // Get?\r\n return parseFloat(units.toUser(value));\r\n }\r\n\r\n else if (this.canEditMaxWidth() && v !== value) {\r\n v = parseFloat(units.toDocument(v));\r\n canvas = this._canvas;\r\n target = this._maxWidthTarget;\r\n\r\n Figure.setMaxWidth$(target, v).then(function () {\r\n canvas.render$();\r\n });\r\n }\r\n }\r\n\r\n canEditMaxWidth () {\r\n return this._maxWidthCondition;\r\n }\r\n\r\n setTextEditable (v) {\r\n Meta.setTextEditable(this._textEditableTarget, v);\r\n }\r\n\r\n getTextEditable () {\r\n return Meta.getTextEditable(this._textEditableTarget);\r\n }\r\n\r\n canSetTextEditable () {\r\n return this._textEditableCondition;\r\n }\r\n\r\n /**\r\n * @param {Number} [v]\r\n */\r\n lineDirection (v) {\r\n var value = this._lineDirection;\r\n\r\n // Get?\r\n if (v === undefined) {\r\n return parseInt(value);\r\n\r\n } else if (this.canEditLineDirection() && (v !== value)) { // Set\r\n this._lineDirectionTarget.forEach(function (t) {\r\n t.lineDirection = v;\r\n });\r\n\r\n this._canvas.render$();\r\n }\r\n }\r\n\r\n /**\r\n * @param {Number} bump\r\n */\r\n bumpLineDirection (bump) {\r\n var value = parseInt(this.lineDirection());\r\n this.lineDirection(value + bump);\r\n }\r\n\r\n canEditLineDirection () {\r\n return this._lineDirectionCondition;\r\n }\r\n\r\n addContents () {\r\n var canvas = this._canvas,\r\n target = this._addContentsTarget,\r\n doc = canvas.activeDocument,\r\n figure = target[0],\r\n content = target.slice(1);\r\n\r\n doc.addPowerClipContents(figure, content);\r\n doc.commit$();\r\n }\r\n\r\n canAddContents () {\r\n return this._addContentsCondition;\r\n }\r\n\r\n extractContents () {\r\n var canvas = this._canvas,\r\n target = this._extractContentsTarget,\r\n doc = canvas.activeDocument,\r\n figure = target[0];\r\n\r\n doc.extractPowerClipContents(figure);\r\n doc.commit$();\r\n }\r\n\r\n canExtractContents () {\r\n return this._extractContentsCondition;\r\n }\r\n\r\n /**\r\n * @param {String} direction Options are 'X', 'Y' or 'XY'\r\n */\r\n mirror (direction) {\r\n var canvas = this._canvas,\r\n target = this._mirrorTarget;\r\n\r\n direction = direction.toUpperCase();\r\n\r\n if (direction === 'XY') {\r\n Cx.mirrorX$(target);\r\n direction = 'Y';\r\n }\r\n\r\n Cx['mirror' + direction + '$'](target)\r\n .then(canvas.commit$);\r\n }\r\n\r\n canMirror () {\r\n return this._mirrorCondition;\r\n }\r\n\r\n /**\r\n * @param {String} action\r\n *\r\n * 'backMinusFront'\r\n * 'breakApart'\r\n * 'breakApartByColor'\r\n * 'breakApartRegions'\r\n * 'breakApartByChars'\r\n * 'combine'\r\n * 'condense'\r\n * 'frontMinusBack'\r\n * 'weld'\r\n */\r\n reshape$ (action) {\r\n var canvas = this._canvas,\r\n target = this._reshapeTarget;\r\n\r\n return canvas.reshape$(target, action).then(canvas.commit$);\r\n }\r\n\r\n canReshape () {\r\n return this._reshapeCondition;\r\n }\r\n\r\n canReshapeMulti () {\r\n return this._reshapeMultiCondition;\r\n }\r\n\r\n /**\r\n * @param {string} position\r\n *\r\n * 'backOne'\r\n * 'forwardOne'\r\n * 'toBack'\r\n * 'toFront'\r\n */\r\n order (position) {\r\n var canvas = this._canvas,\r\n doc = canvas.activeDocument,\r\n target = this._orderTarget;\r\n\r\n doc[position](target);\r\n canvas.commit$();\r\n }\r\n\r\n canOrder () {\r\n return this._orderCondition;\r\n }\r\n\r\n /**\r\n * @param {String} alignment\r\n *\r\n * 'left'\r\n * 'center'\r\n * 'centermiddle'\r\n * 'right'\r\n * 'bottom'\r\n * 'middle'\r\n * 'top'\r\n */\r\n align (alignment) {\r\n var canvas = this._canvas,\r\n target = this._alignTarget;\r\n\r\n Cx.align$(target, alignment).then(canvas.commit$);\r\n }\r\n\r\n canAlign () {\r\n return this._alignCondition;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n group () {\r\n var c = this._canvas;\r\n c.group(this._groupTarget);\r\n c.commit$();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n allowGroup () {\r\n return this._groupAllow;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n canGroup () {\r\n return this._groupCondition;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n ungroup () {\r\n var c = this._canvas;\r\n c.ungroup(this._ungroupTarget);\r\n c.commit$();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n canUngroup () {\r\n return this._ungroupCondition;\r\n }\r\n\r\n undo () {\r\n if (this.canUndo()) {\r\n this._canvas.undo();\r\n }\r\n }\r\n\r\n canUndo () {\r\n return this.isReady() ? this._canvas.canUndo() : false;\r\n }\r\n\r\n redo () {\r\n if (this.canRedo()) {\r\n this._canvas.redo();\r\n }\r\n }\r\n\r\n canRedo () {\r\n return this.isReady() ? this._canvas.canRedo() : false;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n duplicate () {\r\n var canvas = this._canvas,\r\n target = this._duplicateTarget;\r\n\r\n // _onCanvasDuplicated will give the cloned figures new ids\r\n // so we do not have duplicates\r\n canvas.duplicate(target);\r\n canvas.commit$();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n canDuplicate () {\r\n return this._duplicateCondition;\r\n }\r\n\r\n /**\r\n * @param {Number} v\r\n * Example:\r\n * zoom(4) // Set zoom to 400%\r\n * zoom() // Returns value of 400\r\n */\r\n zoom (v) {\r\n var c = this._canvas,\r\n value = this._zoomValue;\r\n\r\n if (isNaN(value)) {\r\n value = 100;\r\n }\r\n\r\n if (v === undefined) {\r\n return value;\r\n }\r\n\r\n else if (this.canZoom() && v !== value) {\r\n c.zoomPages(v);\r\n c.render$();\r\n }\r\n }\r\n\r\n canZoom () {\r\n return this._zoomCondition;\r\n }\r\n\r\n /**\r\n * @param {Number} v\r\n */\r\n zoomIn (v) {\r\n var c = this._canvas;\r\n c.zoomIn(v);\r\n c.render$();\r\n }\r\n\r\n zoomTo (v) {\r\n var c = this._canvas;\r\n c.zoomTo(v);\r\n c.render$();\r\n }\r\n\r\n /**\r\n * @param {Number} v\r\n */\r\n zoomOut (v) {\r\n var c = this._canvas;\r\n c.zoomOut(v);\r\n c.render$();\r\n }\r\n\r\n zoomToFitPages$ (margin) {\r\n var c = this._canvas;\r\n return c.zoomToFitPages$(margin || 0).then(c.render$);\r\n }\r\n\r\n zoomToFit () {\r\n if (this.canZoomToFit()) {\r\n var c = this._canvas;\r\n c.zoomToFit$(this._zoomTarget, 40).then(c.render$);\r\n }\r\n }\r\n\r\n canZoomToFit () {\r\n return this._zoomToFitCondition;\r\n }\r\n\r\n remove () {\r\n var me = this,\r\n canvas = me._canvas,\r\n target = me._removeTarget;\r\n\r\n if (target.length > 0) {\r\n canvas.remove(target);\r\n canvas.commit$();\r\n }\r\n }\r\n\r\n canRemove () {\r\n return this._removeCondition;\r\n }\r\n\r\n //\r\n // PRIVATE METHODS\r\n //\r\n\r\n constructor () {\r\n super();\r\n\r\n var me = this;\r\n\r\n me.designLayerId = 'design_area';\r\n me.designLayerSelector = { id: me.designLayerId };\r\n\r\n Cx.Figure.arrayCondition('alignable', '2+');\r\n Cx.Figure.arrayCondition('orderable', '1+');\r\n Cx.Figure.arrayCondition('zoomable', '1+');\r\n }\r\n\r\n _onCanvasChange () {\r\n var me = this,\r\n canvas = me.canvas(),\r\n doc = me.designDocument(),\r\n allBgRasters = Background.findAllRasters(canvas),\r\n bgRaster = Background.findRaster(canvas),\r\n pageFigures = canvas.activePageFigures,\r\n designFigures = me.getActiveDesignFigures(),\r\n selected = canvas.selectedFigures,\r\n hasSelected = selected.length > 0,\r\n sizeFigures = hasSelected ? selected : designFigures,\r\n brushTarget = !hasSelected ? pageFigures : selected;\r\n\r\n brushTarget = TxDistress.filterOutDistressFigures(brushTarget);\r\n\r\n me._bumpBackgroundSizeCondition = bgRaster ? true : false;\r\n me._bumpAllBackgroundsSizeCondition = allBgRasters.length > 0;\r\n\r\n me._removeCondition = hasSelected;\r\n me._removeTarget = selected;\r\n\r\n me._saveCondition = doc.id && doc.owned;\r\n\r\n me._addContentsCondition = Figure.canAddContents(selected);\r\n me._addContentsTarget = me._addContentsCondition ? selected : undefined;\r\n\r\n me._extractContentsCondition = Figure.canExtractContents(selected);\r\n me._extractContentsTarget = me._extractContentsCondition ? selected : undefined;\r\n\r\n me._alignCondition = canvas.are(selected, 'alignable');\r\n me._alignTarget = me._alignCondition ? selected : undefined;\r\n\r\n me._duplicateCondition = hasSelected;\r\n me._duplicateTarget = hasSelected ? selected : undefined;\r\n\r\n me._groupCondition = selected.length > 1 && Figure.inSameLayer(selected);\r\n me._groupTarget = me._groupCondition ? selected : undefined;\r\n if (me._groupTarget && Meta.areTransferExpress(me._groupTarget)) {\r\n me._groupAllow = me._groupCondition ? Figure.areColorsEqual(selected, true) : false;\r\n } else {\r\n me._groupAllow = me._groupCondition ? Figure.areBrushesEqual(selected) : false;\r\n }\r\n\r\n me._ungroupCondition = canvas.are(selected, '1', 'group');\r\n me._ungroupTarget = me._ungroupCondition ? selected[0] : undefined;\r\n\r\n me._orderCondition = canvas.are(selected, 'orderable');\r\n me._orderTarget = me._orderCondition ? selected : undefined;\r\n\r\n me._mirrorCondition = selected.length > 0;\r\n me._mirrorTarget = me._mirrorCondition ? selected : undefined;\r\n\r\n me._reshapeCondition = canvas.are(selected, '1', '!raster');\r\n me._reshapeMultiCondition = canvas.are(selected, '2+', '!raster');\r\n me._reshapeTarget = me._reshapeCondition || me._reshapeMultiCondition ? selected : undefined;\r\n\r\n me._zoomCondition = true;\r\n me._zoomToFitCondition = canvas.are(pageFigures, 'zoomable');\r\n me._zoomTarget = me._zoomToFitCondition ? pageFigures : undefined;\r\n\r\n me._textCondition = me._canEditText(selected);\r\n me._textTarget = me._textCondition ? selected[0] : undefined;\r\n me._text = me._textCondition ? me._textTarget.text : undefined;\r\n\r\n me._brushCondition = canvas.are(brushTarget, '!raster');\r\n me._brushTarget = me._brushCondition ? brushTarget : undefined;\r\n me._brushZones = me._brushCondition ? me._getBrushZones(brushTarget) : undefined;\r\n me._brush = me._brushCondition ? { items: Brush.brushes(me._brushZones) } : undefined;\r\n\r\n me._penCondition = canvas.are(selected, '1', '!raster', '!monogram', '!group');\r\n me._penTarget = me._penCondition ? selected[0] : undefined;\r\n me._pen = me._penCondition ? { items: me._getPens(me._penTarget) } : undefined;\r\n\r\n me._charSpacingCondition = canvas.are(selected, '1', 'text', '!multiPartText', '!monogram');\r\n me._charSpacingTarget = me._charSpacingCondition ? selected : undefined;\r\n me._charSpacing = me._charSpacingCondition ? Figure.getCharSpacing(me._charSpacingTarget[0]) : undefined;\r\n\r\n me._fontCondition = canvas.are(selected, 'text', '!multiPartText', '!monogram') && Figure.areFontsEqual(selected);\r\n me._fontTarget = me._fontCondition ? selected.toArray() : undefined;\r\n me._font = me._fontCondition ? me._fontTarget[0].font : undefined;\r\n me._fontSize = me._fontCondition ? me._fontTarget[0].fontSize : undefined;\r\n\r\n me._lineDirectionCondition = canvas.are(selected, '1', 'text', '!multiPartText', '!monogram');\r\n me._lineDirectionTarget = me._lineDirectionCondition ? selected : undefined;\r\n me._lineDirection = me._lineDirectionCondition ? selected[0].lineDirection : undefined;\r\n\r\n me._maxWidthCondition = canvas.are(selected, '1', 'text', '!multiPartText', '!monogram');\r\n me._maxWidthTarget = me._maxWidthCondition ? selected[0] : undefined;\r\n me._maxWidth = me._maxWidthCondition ? Figure.getMaxWidth(selected[0]) : undefined;\r\n\r\n me._textEditableCondition = canvas.are(selected, '1', 'text');\r\n me._textEditableTarget = me._textEditableCondition ? selected[0] : undefined;\r\n me._textEditable = me._textEditableCondition ? Meta.getTextEditable(selected[0]) : false;\r\n\r\n if (designFigures.length > 0) {\r\n Figure.bounds$(designFigures).then(\r\n function (bounds) {\r\n me._designSizeCondition = true;\r\n me._designSizeTarget = designFigures;\r\n me._designSizeHeight = bounds.height;\r\n me._designSizeWidth = bounds.width;\r\n\r\n me._onChange();\r\n }\r\n );\r\n }\r\n\r\n if (sizeFigures.length > 0) {\r\n Figure.bounds$(sizeFigures).then(\r\n function (bounds) {\r\n me._sizeCondition = true;\r\n me._sizeTarget = sizeFigures;\r\n me._height = bounds.height;\r\n me._width = bounds.width;\r\n\r\n me._onChange();\r\n }\r\n );\r\n } else {\r\n me._designSizeCondition = false;\r\n me._designSizeTarget = undefined;\r\n me._designSizeHeight = undefined;\r\n me._designSizeWidth = undefined;\r\n me._sizeCondition = false;\r\n me._sizeTarget = undefined;\r\n me._height = undefined;\r\n me._width = undefined;\r\n\r\n me._onChange();\r\n }\r\n }\r\n\r\n _onCanvasDuplicated (doc, clones) {\r\n clones.forEach(function (f) {\r\n // Required (all modes)\r\n // Ensure unique id\r\n Meta.setFigureId(f);\r\n });\r\n }\r\n\r\n /**\r\n * Required (all modes)\r\n * Clean figure id's in case of copy / paste\r\n */\r\n _onCanvasFiguresChanged (canvas, added, removed) {\r\n added = added || [];\r\n\r\n var me = this;\r\n\r\n added.forEach(function (addedFigure) {\r\n var id = Meta.getFigureId(addedFigure),\r\n isDuplicateId = me._isDuplicateId(addedFigure, id);\r\n\r\n if (isDuplicateId) {\r\n Meta.setFigureId(addedFigure);\r\n }\r\n });\r\n\r\n if (removed) {\r\n TransferGroup.cleanGroupNames(canvas.document);\r\n }\r\n }\r\n\r\n _getBrushZones (figures) {\r\n var brushZones = Brush.uniqueBrushZones(figures);\r\n return Brush.brushZonesExEmptyBrush(brushZones);\r\n }\r\n\r\n _getPens (target) {\r\n var pens = target.getPens();\r\n return pens.length > 0 ? pens : [target.pen];\r\n }\r\n\r\n _isDuplicateId (figure, figureId) {\r\n var fs = this.getActiveDesignFigures(),\r\n len = fs.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (fs[i] !== figure && Meta.getFigureId(fs[i]) === figureId) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n getActiveDesignFigures () {\r\n var doc = this.designDocument(),\r\n figures = doc.activePage.figures,\r\n filtered = TxDistress.filterOutDistressFigures(figures);\r\n\r\n return filtered;\r\n }\r\n\r\n getDesignFigures () {\r\n var doc = this.designDocument(),\r\n figures = [];\r\n\r\n doc.pages.forEach(function (page) {\r\n var filtered = TxDistress.filterOutDistressFigures(page.figures);\r\n\r\n filtered.forEach(function (f) {\r\n figures.push(f);\r\n });\r\n });\r\n\r\n return figures;\r\n }\r\n\r\n getDesignFiguresByPage () {\r\n var doc = this.designDocument(),\r\n pages = {};\r\n\r\n doc.pages.forEach(function (page) {\r\n var filtered = TxDistress.filterOutDistressFigures(page.figures);\r\n\r\n pages[page.id] = [];\r\n\r\n filtered.forEach(function (figure) {\r\n pages[page.id].push(figure);\r\n });\r\n });\r\n\r\n return pages;\r\n }\r\n\r\n getActiveCmeFigures () {\r\n var figures = this.getActiveDesignFigures();\r\n\r\n return figures.filter(function (f) {\r\n return (Meta.isCme(f));\r\n });\r\n }\r\n\r\n hasFiguresOtherThanCme () {\r\n return this._hasFigures(function (f) {\r\n return !(Meta.isCme(f));\r\n });\r\n }\r\n\r\n hasDesignFigures () {\r\n var figures = this.getDesignFigures();\r\n return figures.length > 0;\r\n }\r\n\r\n hasDistressFigures () {\r\n var doc = this.designDocument();\r\n return TxDistress.hasDistressFigures(doc);\r\n }\r\n\r\n hasProxyGroup () {\r\n var doc = this.designDocument();\r\n return Figure.hasProxyGroup(doc.figures);\r\n }\r\n\r\n hasTransferExpressFigures () {\r\n return this._hasFigures(function (f) {\r\n return (Meta.isTransferExpress(f));\r\n });\r\n }\r\n\r\n _hasFigures (predicate) {\r\n var figures = this.getDesignFigures();\r\n return figures.find(predicate) ? true : false;\r\n }\r\n\r\n hasVisibleFigures () {\r\n var doc = this.designDocument(),\r\n figures = [];\r\n\r\n doc.pages.forEach(function (page) {\r\n var filtered = TxDistress.filterOutDistressFigures(page.figures);\r\n\r\n filtered.forEach(function (figure) {\r\n if (!figure.hidden) {\r\n figures.push(figure);\r\n }\r\n });\r\n });\r\n\r\n return figures.length > 0;\r\n }\r\n\r\n _onCanvasZoomUpdated (canvas, zoom) {\r\n if (!isNaN(zoom)) {\r\n this._zoomValue = Math.round(zoom * 100);\r\n }\r\n }\r\n\r\n}\r\n","import BaseService from './BaseService.js';\r\n\r\nimport Doc from '../helper/Doc.js';\r\n\r\nexport default class DecorationService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n\r\n var me = this;\r\n\r\n me.decorationLayerId = 'decoration_area';\r\n me.decorationLayerSelector = { id: me.decorationLayerId };\r\n\r\n Application.designService.onReady(me._onDesignServiceReady.bind(me));\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onDesignServiceReady () {\r\n var me = this,\r\n canvas = me._canvas = Application.designService.canvas();\r\n\r\n canvas.on('change', me._onCanvasChange, me);\r\n canvas.on('figureschanged', me._onCanvasFiguresChanged, me);\r\n canvas.on('render', me._onCanvasChange, me);\r\n\r\n me._onIsReady();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addNew () {\r\n var canvas = this._canvas,\r\n layer = this._findLayer();\r\n\r\n if (layer) {\r\n var rectangle = Cx.Shape.CreateRectangle({\r\n center: new Cx.Point(0,0),\r\n height: 100,\r\n pen: Cx.Pen({\r\n color: { rgb: 'FFFFFF' },\r\n dashStyle: 'Dot',\r\n lineJoin: 'Round',\r\n width: 2\r\n }),\r\n width: 200\r\n });\r\n\r\n rectangle.name = 'Name here...';\r\n this._addNew(rectangle);\r\n canvas.commit$();\r\n }\r\n }\r\n\r\n canAddNew () {\r\n return this._addNewCondition;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Cx.Figure/Cx.Figure[]} v\r\n */\r\n _addNew (v) {\r\n var canvas = this._canvas,\r\n figures;\r\n\r\n canvas.destinationLayerSelector = this.decorationLayerSelector;\r\n figures = canvas.add(v);\r\n canvas.selectedFigures = figures;\r\n\r\n return figures;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n figures () {\r\n return this._figures;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n canEdit () {\r\n return this._editCondition;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Boolean} hidden\r\n * @param {Cx.Document} doc (Optional)\r\n */\r\n setHidden (hidden, doc) {\r\n doc = doc || this._canvas.background;\r\n\r\n var layer = this._findLayer(doc);\r\n\r\n if (layer) {\r\n layer.hidden = hidden;\r\n\r\n if (hidden) {\r\n this.clearAnnotations();\r\n } else {\r\n this.syncAnnotations();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n clearAnnotations () {\r\n this._canvas.clearAnnotations();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n syncAnnotations () {\r\n var canvas = this._canvas,\r\n layer = this._findLayer(),\r\n figures, i, len;\r\n\r\n if (layer) {\r\n figures = layer.figures;\r\n len = figures.length,\r\n i = 0;\r\n\r\n this.clearAnnotations();\r\n\r\n for (; i < len; i++) {\r\n canvas.annotate(figures[i], {\r\n text: figures[i].name,\r\n pen: Cx.Pen({ color: Cx.Color({ rgb:'F04111' }) })\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCanvasChange () {\r\n var me = this,\r\n layer = me._findLayer(),\r\n figures = layer ? layer.figures : [];\r\n\r\n me._addNewCondition = layer ? true : false;\r\n me._figures = figures;\r\n me._editCondition = figures.length > 0;\r\n me._layer = layer;\r\n\r\n me._onChange();\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Cx.Document} doc (Optional)\r\n */\r\n _findLayer (doc) {\r\n doc = doc || this._canvas.background;\r\n return Doc.findLayer(doc, this.decorationLayerId);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCanvasFiguresChanged () {\r\n this.syncAnnotations();\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nimport Tag from '../../helper/Tag.js';\r\n\r\nexport default class CxAssetsStore extends Store {\r\n\r\n /**\r\n * CONFIG\r\n * {Object} rootTag\r\n * {Function} searchFn$\r\n * {Object} searchTag\r\n */\r\n\r\n constructor (config) {\r\n super(config);\r\n\r\n var rootTag = config.rootTag,\r\n type = rootTag ? rootTag.Type : undefined,\r\n sortBy = type === 'Doc' ? 'Modified' : undefined;\r\n\r\n this._searchText = undefined;\r\n\r\n this._requestModel = {\r\n // Limit: ...,\r\n Match: {},\r\n // Start: ...,\r\n SortBy: sortBy,\r\n SortDir: 'DESC',\r\n Text: undefined\r\n };\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {Object} tag\r\n * @param {Boolean} preventSearch (Optional)\r\n */\r\n setRootTag (tag, preventSearch) {\r\n if (this.isRootTag(tag)) {\r\n return;\r\n }\r\n\r\n this._config.set('rootTag', tag);\r\n\r\n if (!preventSearch) {\r\n this.load({ searchTag: tag });\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getRootTag () {\r\n return this.getConfig('rootTag');\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} tag\r\n */\r\n isRootTag (tag) {\r\n var rootTag = this.getRootTag();\r\n\r\n if (!rootTag) {\r\n return false;\r\n }\r\n\r\n return Tag.areEqual(rootTag, tag);\r\n }\r\n\r\n /**\r\n * Public override\r\n */\r\n load (options) {\r\n if (options && options.filter) {\r\n this._searchByText(options.filter, options);\r\n }\r\n\r\n else if (options && options.searchTag) {\r\n this._searchByTag(options.searchTag, options);\r\n }\r\n\r\n else {\r\n this._searchByTag(this.getRootTag(), options);\r\n }\r\n\r\n super.load(options);\r\n }\r\n\r\n /**\r\n * @param {Object} tag\r\n */\r\n _searchByTag (tag) {\r\n var match = {\r\n Archived: false\r\n };\r\n\r\n this.setSearchTag(tag);\r\n this._searchText = undefined;\r\n this._applyToSearch(this._applyTag(match, tag), undefined);\r\n }\r\n\r\n /**\r\n * @param {String} text\r\n */\r\n _searchByText (text) {\r\n var match = {\r\n Archived: false\r\n },\r\n rootTag = this.getRootTag(),\r\n isArray = Array.isArray(rootTag),\r\n // remove any '/**' string and any '*' chars\r\n name = isArray ? undefined : (rootTag.Name || '').replace('/**', '').replace(/[*]/g, ''),\r\n tag = isArray ? rootTag : {\r\n Name: name + '/**',\r\n Owned: rootTag.Owned,\r\n Shared: rootTag.Shared,\r\n Type: rootTag.Type\r\n };\r\n\r\n this._searchText = text;\r\n this._oldSearchTag = this.getSearchTag();\r\n this.setSearchTag(undefined);\r\n this._applyToSearch(this._applyTag(match, tag), text);\r\n }\r\n\r\n clearSearchText () {\r\n var tag = this._oldSearchTag;\r\n\r\n this._oldSearchTag = undefined;\r\n this._searchText = undefined;\r\n\r\n this.loadPage(1, {\r\n searchTag: tag\r\n });\r\n }\r\n\r\n setSearchTag (tag) {\r\n if (!this.isSearchTag(tag)) {\r\n this._config.set('searchTag', tag);\r\n }\r\n }\r\n\r\n getSearchTag () {\r\n return this.getConfig('searchTag');\r\n }\r\n\r\n /**\r\n * @param {Object} tag\r\n */\r\n isSearchTag (tag) {\r\n var searchTag = this.getSearchTag();\r\n\r\n if (!searchTag) {\r\n return false;\r\n }\r\n\r\n return Tag.areEqual(searchTag, tag);\r\n }\r\n\r\n getSearchText () {\r\n return this._searchText;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _doLoad () {\r\n var me = this,\r\n fn$ = this.getConfig('searchFn$');\r\n\r\n fn$(this._requestModel).then(\r\n // Success\r\n function (responseModel) {\r\n me._onLoadComplete(responseModel);\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n }\r\n\r\n _applyTag (object, tag) {\r\n var isArray, tags;\r\n\r\n // TxEffectsStore has an array of tags as the root\r\n if (Array.isArray(tag)) {\r\n isArray = true;\r\n tags = tag;\r\n tag = tag[0];\r\n }\r\n\r\n var owned = typeof tag.Owned === 'boolean' ? tag.Owned : false,\r\n shared = typeof tag.Shared === 'boolean' ? tag.Shared : true;\r\n\r\n return Object.assign(object, {\r\n Owned: owned,\r\n Shared: shared,\r\n Tags: isArray ? tags : (tag.Name ? [tag] : undefined), // allow for tag like { Name: '', Owned: true, ... }\r\n Type: tag.Type\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} match\r\n * @param {String} text\r\n */\r\n _applyToSearch (match, text) {\r\n var currentMatch = this._requestModel.Match || {};\r\n\r\n this._requestModel.Match = Object.assign(currentMatch, match);\r\n this._requestModel.Text = text;\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nimport CadworxLiveAPI from '../../api/CadworxLiveAPI.js';\r\nimport Tag from '../../helper/Tag.js';\r\nimport CxAssetsStore from './CxAssetsStore.js';\r\n\r\n/**\r\n * Usage:\r\n * Once the store loads use effectsStores to get a lookup object like so.\r\n * { 'Arch': Store, ... }\r\n */\r\nexport default class CxEffectsStore extends CxAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n // Placeholder needed until tags load\r\n rootTag: { Owned: false, Shared: true, Type: 'Doc' },\r\n searchFn$: CadworxLiveAPI.searchDocs$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n effectStores () {\r\n var me = this,\r\n tagNames = me._getTagNames(),\r\n stores = {};\r\n\r\n tagNames.forEach(function (name) {\r\n var displayName = Tag.getDisplayName(name),\r\n docs = me._findDocs(name);\r\n\r\n if (docs.length > 0) {\r\n stores[displayName] = new Store({ data: docs });\r\n }\r\n });\r\n\r\n return stores;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getTagNames () {\r\n var me = this,\r\n names = [],\r\n root;\r\n\r\n if (me._tagsLoaded) {\r\n root = me.getRootTag();\r\n\r\n root.forEach(function (tag) {\r\n names.push(tag.Name);\r\n });\r\n }\r\n\r\n return names;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _findDocs (tagName) {\r\n var records = this.getRecords(),\r\n found = [];\r\n\r\n records.forEach(function (r) {\r\n var tags = r.get('Tags'),\r\n len = tags.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (tags[i].Name == tagName) {\r\n found.push(r.getData());\r\n break;\r\n }\r\n }\r\n });\r\n\r\n return found;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _doLoad () {\r\n var me = this;\r\n\r\n // Load the tags which will be set as the 'rootTag'\r\n me._loadTags$().then(function () {\r\n var fn$ = me.getConfig('searchFn$');\r\n\r\n fn$(me._requestModel).then(\r\n // Success\r\n function (responseModel) {\r\n me._onLoadComplete(responseModel);\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n });\r\n }\r\n\r\n _loadTags$ () {\r\n var me = this;\r\n\r\n if (me._tagsLoaded) {\r\n return Cx.resolve(this.getRootTag());\r\n } else {\r\n return me._doLoadTags$();\r\n }\r\n }\r\n\r\n _doLoadTags$ () {\r\n var me = this,\r\n requestModel = {\r\n Match: {\r\n Archived:false,\r\n Owned: false,\r\n Shared: true,\r\n Tags: [Tag.cadworxEffectTagsStoreRoot()],\r\n Type: 'Doc'\r\n },\r\n SortBy: 'Name',\r\n SortDir: 'DESC',\r\n Text: '/designer/effects/*'\r\n },\r\n tags = [];\r\n\r\n return CadworxLiveAPI.searchTags$(requestModel).then(function (items) {\r\n items.forEach(function (item) {\r\n tags.push({ Name: item.Name });\r\n });\r\n\r\n me._applyToSearch(me._applyTag({ Archived: false }, tags), undefined);\r\n me._config.set('rootTag', tags);\r\n me._tagsLoaded = true;\r\n return Cx.resolve(tags);\r\n });\r\n }\r\n\r\n _processResponseItem (item) {\r\n var size = 70;\r\n\r\n return {\r\n Id: item.Id,\r\n Name: item.Name,\r\n Tags: item.Tags,\r\n ThumbHeight: size,\r\n ThumbUrl: CadworxLiveAPI.getDocThumb({ Id: item.Id }, { height: size, width: size }),\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nimport TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\nimport Tag from '../../helper/Tag.js';\r\nimport CxAssetsStore from '../../cadworx/store/CxAssetsStore.js';\r\n\r\n/**\r\n * Usage:\r\n * Once the store loads use effectsStores to get a lookup object like so.\r\n * { 'Arch': Store, ... }\r\n */\r\nexport default class TxEffectsStore extends CxAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: TransferExpressAPI.searchDocs$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n effectStores () {\r\n var me = this,\r\n tagNames = me._getTagNames(),\r\n stores = {};\r\n\r\n tagNames.forEach(function (name) {\r\n var displayName = Tag.getDisplayName(name).replace(/[0-9]/g, ''),\r\n docs = me._findDocs(name);\r\n\r\n if (docs.length > 0) {\r\n stores[displayName] = new Store({ data: docs });\r\n }\r\n });\r\n\r\n return stores;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getTagNames () {\r\n var names = [],\r\n root = this.getRootTag();\r\n\r\n root.forEach(function (tag) {\r\n names.push(tag.Name);\r\n });\r\n\r\n return names;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _findDocs (tagName) {\r\n var records = this.getRecords(),\r\n found = [];\r\n\r\n records.forEach(function (r) {\r\n var tags = r.get('Tags'),\r\n len = tags.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (tags[i].Name == tagName) {\r\n found.push(r.getData());\r\n break;\r\n }\r\n }\r\n });\r\n\r\n return found;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var size = 70;\r\n\r\n return {\r\n Id: item.Id,\r\n Name: item.Name,\r\n Tags: item.Tags,\r\n ThumbHeight: size,\r\n ThumbUrl: TransferExpressAPI.getEffectThumb(item.Id, { height: size, width: size }),\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n}\r\n","import Doc from './Doc.js';\r\nimport Figure from './Figure.js';\r\n\r\nexport default class Effect {\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Figure} figure\r\n * @param {Object} options\r\n *\r\n * Required options:\r\n * - id ( A doc id to load the effect )\r\n * or\r\n * - effect ( A Cx.Process / Cx.Process[] )\r\n *\r\n * Optional option:\r\n * - keep ( 'nothing', 'bounds', 'center', 'width', 'frame', 'frameCenter', 'frameWidth' )\r\n *\r\n * Example:\r\n * add$(figure, { id: '...', keep: 'width' });\r\n */\r\n static add$ (figure, options) {\r\n var me = Effect,\r\n effect = options.effect,\r\n id = options.id,\r\n keep = options.keep || 'center';\r\n\r\n if (id) {\r\n return Doc.loadProcesses$(id).then(function (effects) {\r\n return me.addKeeping$(figure, keep, effects);\r\n });\r\n }\r\n\r\n else if (effect) {\r\n return me.addKeeping$(figure, keep, effect);\r\n }\r\n\r\n else {\r\n return Cx.reject();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Figure} figure\r\n * @param {String} prop ( 'nothing', 'bounds', 'center', 'width', 'frame', 'frameCenter', 'frameWidth' )\r\n * @param {Cx.Process/Cx.Process[]} effect\r\n */\r\n static addKeeping$ (figure, prop, effect) {\r\n if (!Array.isArray(effect)) {\r\n effect = [effect];\r\n }\r\n\r\n return figure.modifyKeeping$(prop, function () {\r\n figure.processes.add(effect);\r\n Figure.enforceGroupBrush(figure);\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Figure} figure\r\n * @param {Number} from \r\n * @param {Number} to \r\n */\r\n static move (figure, from, to) {\r\n var effects = figure.processes,\r\n effect;\r\n\r\n if (!isNaN(from) && !isNaN(to)) {\r\n effect = effects[from];\r\n\r\n effects.remove(effect);\r\n effects.insert(to, effect);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Figure} figure\r\n * @param {Object} options\r\n *\r\n * Required options:\r\n * - effect ( A Cx.Process / Cx.Process[] )\r\n *\r\n * Optional options:\r\n * - keep ( 'nothing', 'bounds', 'center', 'width', 'frame', 'frameCenter', 'frameWidth' )\r\n *\r\n * Example:\r\n * remove$(figure, { effect: myEffect, keep: 'width' });\r\n */\r\n static remove$ (figure, options) {\r\n var keep = options.keep || 'center';\r\n return Effect.removeKeeping$(figure, keep, options.effect);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Figure} figure\r\n * @param {String} prop\r\n * @param {Cx.Process/Cx.Process[]} effect\r\n */\r\n static removeKeeping$ (figure, prop, effect) {\r\n if (!Array.isArray(effect)) {\r\n effect = [effect];\r\n }\r\n\r\n return figure.modifyKeeping$(prop, function () {\r\n figure.processes.remove(effect);\r\n });\r\n }\r\n\r\n}\r\n","import BaseService from './BaseService.js';\r\nimport CxEffectsStore from '../cadworx/store/CxEffectsStore.js';\r\nimport TxEffectsStore from '../transferExpress/store/TxEffectsStore.js';\r\nimport Doc from '../helper/Doc.js';\r\nimport Effect from '../helper/Effect.js';\r\nimport Tag from '../helper/Tag.js';\r\nimport Meta from '../helper/Meta.js';\r\n\r\n\r\nexport default class EffectService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n Application.onReady(this._onApplicationReady.bind(this));\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onApplicationReady () {\r\n var me = this;\r\n\r\n me._initStores();\r\n me._initActiveStore();\r\n me._initCanvasEvents();\r\n me._onIsReady();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initStores () {\r\n this._initCadworxStores();\r\n this._initTxStores();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initCadworxStores () {\r\n var me = this,\r\n store = me._cadworxStore = new CxEffectsStore();\r\n\r\n store.on('load', me._onCadworxsStoreLoad.bind(me));\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCadworxsStoreLoad () {\r\n if (this.isCadworxActive()) {\r\n this._onChange();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initTxStores () {\r\n var me = this,\r\n store = me._txStore = new TxEffectsStore({\r\n rootTag: Tag.txEffectsStoreRoot()\r\n });\r\n\r\n store.on('load', me._onTxStoreLoad.bind(me));\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onTxStoreLoad () {\r\n if (this.isTransferExpressActive()) {\r\n this._onChange();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initActiveStore () {\r\n this.setCadworxActive();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initCanvasEvents () {\r\n var me = this,\r\n canvas = me._canvas = Application.canvas();\r\n\r\n canvas.on('change', me._onCanvasChange, me);\r\n canvas.on('render', me._onCanvasChange, me);\r\n }\r\n\r\n //\r\n // CANVAS METHODS\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {String} id A document id.\r\n */\r\n importEffect (id) {\r\n var me = this;\r\n\r\n if (me.isCadworxActive()) {\r\n me._importEffect(Doc.loadCadworxLiveEffect$(id));\r\n }\r\n\r\n else if (me.isTransferExpressActive()) {\r\n me._importEffect(Doc.loadTransferExpressEffect$(id));\r\n }\r\n }\r\n\r\n _importEffect (loader$) {\r\n var me = this;\r\n\r\n loader$.then(function (effects) {\r\n var figure = me._canvas.selectedFigures[0];\r\n\r\n if (figure) {\r\n me._addEffect(effects, figure);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Cx.Process[]} effects\r\n * @param {Cx.Figure} figure\r\n */\r\n _addEffect (effects, figure) {\r\n var app = Application,\r\n canvas = this._canvas;\r\n\r\n app.wait('Loading...');\r\n\r\n Effect.add$(figure, { effect: effects, keep: false }).then(\r\n function () { // Success\r\n app.hide();\r\n return canvas.commit$();\r\n },\r\n function () { // Fail\r\n app.hide();\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n allowedEffects () {\r\n return this._allowedEffects;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n effects () {\r\n return this._effects;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} from \r\n * @param {Number} to \r\n */\r\n move (from, to) {\r\n Effect.move(this._target, from, to);\r\n this._canvas.render$();\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} options\r\n *\r\n * Required options:\r\n * - effect ( A Cx.Process / Cx.Process[] )\r\n *\r\n * Optional options:\r\n * - keep ( 'nothing', 'bounds', 'center', 'width', 'frame', 'frameCenter', 'frameWidth' )\r\n *\r\n * Example:\r\n * remove$({ effect: myEffect, keep: 'width' });\r\n */\r\n remove$ (options) {\r\n var me = this,\r\n canvas = me._canvas;\r\n\r\n return Effect.remove$(me._target, options).then(\r\n function () {\r\n return canvas.render$();\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n canEditEffects () {\r\n return this._editCondition;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n canAddEffect () {\r\n return this._addCondition;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCanvasChange () {\r\n var me = this,\r\n canvas = me._canvas,\r\n selected = canvas.selectedFigures,\r\n figure = selected.length === 1 ? selected[0] : undefined,\r\n effects = figure ? figure.processes : [],\r\n isCadworxActive = figure ? Meta.isCadworxLive(figure) : false,\r\n isTxActive = figure ? Meta.isTransferExpress(figure) : false;\r\n\r\n // We are now setting the active store based on the asset type\r\n me._activeStore === isTxActive ? me._txStore : me._cadworxStore\r\n me._addCondition = figure && !figure.isRaster ? true : false;\r\n me._editCondition = effects.length > 0;\r\n me._allowedEffects = figure ? me._getAllowedEffects(figure, isCadworxActive, isTxActive) : [];\r\n me._effects = effects;\r\n me._target = figure;\r\n\r\n me._onChange();\r\n }\r\n\r\n /**\r\n * Private.\r\n * Returns the effect categories that are allowed.\r\n */\r\n _getAllowedEffects (figure, isCadworxActive, isTxActive) {\r\n if (figure.isText) {\r\n if (isCadworxActive) {\r\n return ['3d text', 'arch', 'border', 'book end', 'circle text', 'classic arc', 'contour', 'distress', 'envelope', 'shadow', 'split front'];\r\n }\r\n\r\n else if (isTxActive) {\r\n return ['arch', 'bookend', 'circle text', 'combo', 'outline', 'shadow', 'shape'];\r\n }\r\n }\r\n\r\n if (isCadworxActive) {\r\n return figure.isRaster ? [] : ['contour', 'shadow'];\r\n }\r\n\r\n else {\r\n return figure.isRaster ? [] : ['shadow'];\r\n }\r\n }\r\n\r\n //\r\n // STORE HELPERS\r\n //\r\n\r\n getSources () {\r\n return [\r\n { Id: 'cadworx', Name: 'Cadworx Live' },\r\n { Id: 'tx', Name: 'Transfer Express' }\r\n ];\r\n }\r\n\r\n getActiveSource () {\r\n if (this.isCadworxActive()) {\r\n return 'cadworx';\r\n }\r\n\r\n if (this.isTransferExpressActive()) {\r\n return 'tx';\r\n }\r\n }\r\n\r\n setSource (id) {\r\n var me = this;\r\n\r\n if (id === 'cadworx') {\r\n me.setCadworxActive();\r\n } else if (id === 'tx') {\r\n me.setTransferExpressActive();\r\n }\r\n }\r\n\r\n //\r\n // WHAT STORE IS ACTIVE?\r\n //\r\n\r\n isCadworxActive () {\r\n return (this._activeStore === this._cadworxStore);\r\n }\r\n\r\n isTransferExpressActive () {\r\n return this._activeStore === this._txStore;\r\n }\r\n\r\n //\r\n // CHANGE WHAT STORE IS ACTIVE\r\n //\r\n\r\n setCadworxActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._cadworxStore;\r\n me._onChange();\r\n }\r\n\r\n setTransferExpressActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._txStore;\r\n me._onChange();\r\n }\r\n\r\n //\r\n // ACTIVE STORE\r\n //\r\n\r\n store () {\r\n return this._activeStore;\r\n }\r\n\r\n //\r\n // STORES\r\n //\r\n\r\n cadworxStore () {\r\n return this._cadworxStore;\r\n }\r\n\r\n transferExpressStore () {\r\n return this._txStore;\r\n }\r\n\r\n}\r\n","import Model from 'smp-simple-components/src/data/Model';\r\nimport CadworxLiveAPI from '../../api/CadworxLiveAPI.js';\r\n\r\nexport default class CadworxFontModel extends Model {\r\n\r\n /**\r\n * Public.\r\n * Always call to ensure we move the resource.\r\n */\r\n getFont$ () {\r\n var me = this,\r\n moved = me._movedFont,\r\n font = me.get('Font');\r\n\r\n if (moved) {\r\n return Cx.resolve(font);\r\n }\r\n\r\n else {\r\n return CadworxLiveAPI.moveFont$(font).then(function () {\r\n me._movedFont = true;\r\n return Cx.resolve(font);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * Override.\r\n * @param {Object} data\r\n */\r\n _processData (data) {\r\n var font = Cx.Font.fromCore(data),\r\n height = 20,\r\n width = 200,\r\n text = font.familyName,\r\n options = { height: height, text: text, width: width },\r\n url = CadworxLiveAPI.getFontThumb({ Font: font }, options);\r\n\r\n return {\r\n Font: font,\r\n Id: data.Id,\r\n Name: data.Name || data.FamilyName || data.FullName,\r\n Tags: data.Tags,\r\n ThumbHeight: height,\r\n ThumbUrl: url,\r\n ThumbWidth: width\r\n };\r\n }\r\n\r\n}\r\n","import CadworxLiveAPI from '../../api/CadworxLiveAPI.js';\r\nimport CadworxFontModel from '../model/CadworxFontModel.js';\r\nimport CxPagingAssetsStore from './CxPagingAssetsStore.js';\r\n\r\n/**\r\n * Searches Cadworx Live fonts\r\n */\r\nexport default class CxFontsStore extends CxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n model: CadworxFontModel,\r\n searchFn$: CadworxLiveAPI.searchFonts$\r\n });\r\n\r\n super(config);\r\n\r\n this._requestModel.SortDir = 'ASC';\r\n }\r\n\r\n}\r\n","import Model from 'smp-simple-components/src/data/Model';\r\nimport CmeAPI from '../../api/CmeAPI.js';\r\n\r\nexport default class CmeFontModel extends Model {\r\n\r\n /**\r\n * Public.\r\n * Always call to ensure we move the resource.\r\n */\r\n getFont$ () {\r\n var me = this,\r\n moved = me._movedFont,\r\n font = me.get('Font');\r\n\r\n if (moved) {\r\n return Cx.resolve(font);\r\n }\r\n\r\n else {\r\n return CmeAPI.moveFont$(font).then(function () {\r\n me._movedFont = true;\r\n return Cx.resolve(font);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * Override.\r\n * @param {Object} data\r\n */\r\n _processData (data) {\r\n var font = Cx.Font.fromCore(data),\r\n height = 20,\r\n name = data.DisplayName,\r\n width = 200,\r\n text = name || font.familyName,\r\n options = { height: height, text: text, width: width },\r\n url = CmeAPI.getFontThumb({ Font: font }, options);\r\n\r\n return {\r\n Font: font,\r\n Id: data.Id,\r\n MinSize: data.MinSize,\r\n Name: name,\r\n Tags: data.Tags,\r\n ThumbHeight: height,\r\n ThumbUrl: url,\r\n ThumbWidth: width\r\n };\r\n }\r\n\r\n}\r\n","import CmeAPI from '../../api/CmeAPI.js';\r\nimport CmeFontModel from '../model/CmeFontModel.js';\r\nimport CxAssetsStore from '../../cadworx/store/CxAssetsStore.js';\r\n\r\n/**\r\n * Searches CME fonts\r\n */\r\nexport default class CmeFontsStore extends CxAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n model: CmeFontModel,\r\n searchFn$: CmeAPI.searchFonts$\r\n });\r\n\r\n super(config);\r\n\r\n this._requestModel.SortDir = 'ASC';\r\n }\r\n\r\n}\r\n","export default class Font {\r\n\r\n /**\r\n * @param {String} id\r\n */\r\n static read$ (id) {\r\n return Cx.Core.Font.read$({ Id: id }).then(function (model) {\r\n return Cx.Font.fromCore(model);\r\n });\r\n }\r\n\r\n /**\r\n * @param {Object} data The font data.\r\n * @param {Object} options The thumbnail options.\r\n */\r\n static getThumb (data, options) {\r\n var font = data.Font;\r\n\r\n if (font) {\r\n return font.thumbnailUrl({\r\n color: 'FFFFFF',\r\n text: options.text || font.name,\r\n height: options.height,\r\n width: options.width\r\n });\r\n }\r\n\r\n return Cx.Core.Font.thumbnailUrl({\r\n color: 'FFFFFF',\r\n font: { id: data.Id },\r\n format: 'png',\r\n height: options.height,\r\n text: options.text,\r\n width: options.width\r\n });\r\n }\r\n\r\n}\r\n","import Model from 'smp-simple-components/src/data/Model';\r\nimport Font from '../helper/Font.js';\r\n\r\n/**\r\n * Fonts are imported to the Commerce database.\r\n */\r\nexport default class ImportedFontModel extends Model {\r\n\r\n /**\r\n * Public.\r\n * Always call to ensure we move the resource.\r\n * Imported fonts do not need to move the font recource.\r\n */\r\n getFont$ () {\r\n var font = this.get('Font');\r\n return Cx.resolve(font);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Override.\r\n * @param {Object} data\r\n */\r\n _processData (data) {\r\n var font = Cx.Font.fromCore(data),\r\n height = 20,\r\n width = 200,\r\n url = Font.getThumb({ Font: font }, { height: height, width: width });\r\n\r\n return {\r\n Font: font,\r\n Id: data.Id,\r\n Name: data.Name || data.FamilyName || data.FullName,\r\n Tags: data.Tags,\r\n ThumbHeight: height,\r\n ThumbUrl: url,\r\n ThumbWidth: width\r\n };\r\n }\r\n\r\n}\r\n","import CxPagingAssetsStore from '../cadworx/store/CxPagingAssetsStore.js';\r\nimport ImportedFontModel from '../model/ImportedFontModel.js';\r\n\r\n/**\r\n * Fonts are imported to the Commerce database.\r\n */\r\nexport default class ImportedFontsStore extends CxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n model: ImportedFontModel,\r\n searchFn$: Cx.Core.Font.search$,\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n}\r\n","import StoreManager from 'smp-simple-components/src/StoreManager.js';\r\nimport Model from 'smp-simple-components/src/data/Model';\r\nimport TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\n\r\nexport default class TxFontModel extends Model {\r\n\r\n /**\r\n * Public.\r\n * Always call to ensure we move the resource.\r\n * TransferExpressAPI.font$ will move the font resource.\r\n */\r\n getFont$ () {\r\n var me = this,\r\n font = me.get('Font'),\r\n name, weight;\r\n\r\n if (font) {\r\n return Cx.resolve(font);\r\n }\r\n\r\n else {\r\n name = me.get('FamilyName');\r\n weight = me.get('Weight');\r\n\r\n return TransferExpressAPI.font$(name, weight).then(function (font) {\r\n me.set('Font', font);\r\n return Cx.resolve(font);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * Override.\r\n * @param {Object} data\r\n */\r\n _processData (data) {\r\n data = this._transformItem(data);\r\n\r\n var familyName = data.FamilyName,\r\n font = new Cx.Font({ familyName: familyName, weight: data.Weight }),\r\n height = 20,\r\n name = data.Name || familyName,\r\n width = 200,\r\n text = data.NumberOnly ? '123' : (data.UppercaseOnly ? name.toUpperCase() : name).replace(/(upper case only)/gi, ''),\r\n url = TransferExpressAPI.getFontThumb({ Font: font }, { height: height, text: text, width: width });\r\n\r\n return {\r\n Category: data.Category,\r\n FamilyName: familyName,\r\n Font: undefined, // font,\r\n Id: StoreManager.id(),\r\n Name: name,\r\n NumberOnly: data.NumberOnly,\r\n ThumbHeight: height,\r\n ThumbUrl: url,\r\n ThumbWidth: width,\r\n Weight: data.Weight\r\n };\r\n }\r\n\r\n _transformItem (item) {\r\n var caseFlag = item.CaseFlag ? item.CaseFlag.toLowerCase() : null,\r\n isNumberOnly = (caseFlag && caseFlag === '1'),\r\n uppercaseOnly = (caseFlag && caseFlag.toLowerCase() === 'u'),\r\n weight = (item.DefaultBold && item.DefaultBold.toLowerCase() === 'y') ? '700' : '400';\r\n\r\n return {\r\n Name: item.TypeFaceName,\r\n Category: item.CategoryName1,\r\n FamilyName: item.CorelFontName || item.TypeFaceName,\r\n Weight: weight,\r\n UppercaseOnly: uppercaseOnly,\r\n NumberOnly: isNumberOnly\r\n // TypeFaceKey: item.TypeFaceKey\r\n };\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nexport default class TxAssetsStore extends Store {\r\n\r\n /**\r\n * CONFIGS\r\n * @param {Function} searchFn$\r\n */\r\n\r\n /**\r\n * Private.\r\n * @param {Object} requestModel\r\n */\r\n _doLoad (requestModel) {\r\n var me = this,\r\n fn$ = me.getConfig('searchFn$');\r\n\r\n fn$(requestModel).then(\r\n // Success\r\n function (response) {\r\n if (response) {\r\n me._onLoadComplete(response);\r\n } else {\r\n me._onLoadFailed();\r\n }\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\nimport TxFontModel from '../model/TxFontModel.js';\r\nimport TxAssetsStore from './TxAssetsStore.js';\r\n\r\nexport default class TxFontsStore extends TxAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: TransferExpressAPI.loadFonts$,\r\n dataRoot: 'Fonts',\r\n model: TxFontModel\r\n });\r\n\r\n super(config);\r\n\r\n var all = this._allCategory = 'All';\r\n this._activeCategory = all;\r\n this._categories = [all];\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n activeCategory () {\r\n return this._activeCategory;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n categories () {\r\n return this._categories.sort();\r\n }\r\n\r\n /**\r\n * Public.\r\n * Override.\r\n */\r\n getRecords () {\r\n var records = super.getRecords(),\r\n v = this._activeCategory,\r\n filtered;\r\n\r\n if (v !== this._allCategory) {\r\n filtered = [];\r\n\r\n records.forEach(function (r) {\r\n if (r.get('Category') === v) {\r\n filtered.push(r);\r\n }\r\n });\r\n\r\n return filtered;\r\n }\r\n\r\n return records;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} v\r\n */\r\n searchByCategory (v) {\r\n this._activeCategory = v;\r\n this._emitLoad(this.getRecords());\r\n }\r\n\r\n /**\r\n * Public.\r\n * Fake 'loadPage()'. This is not a paging store like the other font stores.\r\n */\r\n loadPage () {\r\n this.load();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n this._addCategory(item.CategoryName1);\r\n return item;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _addCategory (category) {\r\n var list;\r\n\r\n if (category) {\r\n list = this._categories;\r\n\r\n if (list.indexOf(category) === -1) {\r\n list.push(category);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import CmeAPI from '../api/CmeAPI.js';\r\nimport CxFontsStore from '../cadworx/store/CxFontsStore.js';\r\nimport CxTagsStore from '../cadworx/store/CxTagsStore.js';\r\nimport CmeFonts from '../helper/CmeFonts.js';\r\nimport CmeFontsStore from '../cme/store/CmeFontsStore.js';\r\nimport Tag from '../helper/Tag.js';\r\nimport ImportedFontsStore from '../store/ImportedFontsStore.js';\r\nimport TxFontsStore from '../transferExpress/store/TxFontsStore.js';\r\nimport BaseService from './BaseService.js';\r\n\r\nexport default class FontService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n\r\n var me = this;\r\n\r\n // Pre-load CME so we can\r\n // 1. lookup font MinSize via getCmeFontMinSize()\r\n // 2. fix missing CME font source metadata\r\n CmeFonts.load$().then(function () {\r\n me._initStores();\r\n me._initActiveStore();\r\n me._onIsReady();\r\n });\r\n }\r\n\r\n _initStores () {\r\n var me = this;\r\n\r\n me._initCadworxStores();\r\n me._initImportedStores();\r\n me._initCmeStores();\r\n me._initTransferExpressStores();\r\n }\r\n\r\n _initCadworxStores () {\r\n var me = this;\r\n\r\n me._cxStore = new CxFontsStore({\r\n rootTag: Tag.cadworxFontStoreRoot()\r\n });\r\n\r\n me._cxTagsStore = new CxTagsStore({\r\n rootTag: Tag.cadworxFontTagsStoreRoot()\r\n });\r\n }\r\n\r\n _initCmeStores () {\r\n var data = CmeFonts.fontData();\r\n\r\n this._cmeStore = new CmeFontsStore({\r\n data: data,\r\n rootTag: Tag.cmeFontStoreRoot()\r\n });\r\n }\r\n\r\n _initImportedStores () {\r\n this._importedStore = new ImportedFontsStore({\r\n rootTag: Tag.myImportedFontsStoreRoot()\r\n });\r\n }\r\n\r\n _initTransferExpressStores () {\r\n this._txStore = new TxFontsStore();\r\n }\r\n\r\n _initActiveStore () {\r\n this.setCadworxActive();\r\n }\r\n\r\n //\r\n // PUBLIC METHODS\r\n //\r\n\r\n cmeStore () {\r\n return this._cmeStore;\r\n }\r\n\r\n getSources () {\r\n return [\r\n { Id: 'cadworx', Name: 'Cadworx Live' },\r\n { Id: 'cme', Name: 'CAD-CUT Templates' },\r\n { Id: 'tx', Name: 'Transfer Express' },\r\n { Id: 'imported', Name: 'My Imported Fonts' }\r\n ];\r\n }\r\n\r\n getActiveSource () {\r\n var me = this;\r\n\r\n if (me.isCadworxActive()) {\r\n return 'cadworx';\r\n }\r\n\r\n if (me.isCmeActive()) {\r\n return 'cme';\r\n }\r\n\r\n if (me.isTransferExpressActive()) {\r\n return 'tx';\r\n }\r\n\r\n if (me.isImportedActive()) {\r\n return 'imported';\r\n }\r\n }\r\n\r\n setSource (id) {\r\n var me = this;\r\n\r\n if (id === 'cadworx') {\r\n me.setCadworxActive();\r\n } else if (id === 'cme') {\r\n me.setCmeActive();\r\n } else if (id === 'imported') {\r\n me.setImportedActive();\r\n } else if (id === 'tx') {\r\n me.setTransferExpressActive();\r\n }\r\n }\r\n\r\n //\r\n // WHATS ACTIVE?\r\n //\r\n\r\n isCadworxActive () {\r\n return (this._activeStore === this._cxStore);\r\n }\r\n\r\n isCmeActive () {\r\n return (this._activeStore === this._cmeStore);\r\n }\r\n\r\n isImportedActive () {\r\n return this._activeStore === this._importedStore;\r\n }\r\n\r\n isTransferExpressActive () {\r\n return this._activeStore === this._txStore;\r\n }\r\n\r\n //\r\n // CHANGE WHATS ACTIVE\r\n //\r\n\r\n setCadworxActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._cxStore;\r\n me._onChange();\r\n }\r\n\r\n setCmeActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._cmeStore;\r\n me._onChange();\r\n }\r\n\r\n setImportedActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._importedStore;\r\n me._onChange();\r\n }\r\n\r\n setTransferExpressActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._txStore;\r\n me._onChange();\r\n }\r\n\r\n //\r\n // ACTIVE STORE\r\n //\r\n\r\n fontsStore () {\r\n return this._activeStore;\r\n }\r\n\r\n defaultFont () {\r\n var store = this._activeStore;\r\n return store ? store.getRecords()[0] : undefined;\r\n }\r\n\r\n //\r\n // STORES\r\n //\r\n\r\n cadworxStore () {\r\n return this._cxStore;\r\n }\r\n\r\n cadworxFontTagsStore () {\r\n return this._cxTagsStore;\r\n }\r\n\r\n importedFontsStore () {\r\n return this._importedStore;\r\n }\r\n\r\n transferExpressFontsStore () {\r\n return this._txStore;\r\n }\r\n\r\n //\r\n // GET FONT SUPPORT\r\n //\r\n\r\n /**\r\n * @param {Cx.Font} font\r\n */\r\n getFontDisplayName (font) {\r\n var name = CmeAPI.findFontDisplayName(font);\r\n return name || font.name || font.familyName;\r\n }\r\n\r\n getCadworxFont$ (id) {\r\n return this._getFont$(this._cxStore, id);\r\n }\r\n\r\n getCmeFont$ (id) {\r\n return this._getFont$(this._cmeStore, id);\r\n }\r\n\r\n getImportedFont$ (id) {\r\n return this._getFont$(this._importedStore, id);\r\n }\r\n\r\n getTransferExpressFont$ (id) {\r\n return this._getFont$(this._txStore, id);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getFont$ (store, id) {\r\n var records = store.getRecords(),\r\n len = records.length,\r\n i = 0,\r\n record;\r\n\r\n for (; i < len; i++) {\r\n if (records[i].get('Id') == id) {\r\n record = records[i];\r\n break;\r\n }\r\n }\r\n\r\n if (record) {\r\n return record.getFont$();\r\n } else {\r\n return Cx.reject();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * Default to Varsity\r\n * @param {Cx.Font} font\r\n */\r\n getCmeFontMinSize (font) {\r\n var lookup = this._cmeGetFontMinSizeLookup(),\r\n minSize = lookup ? lookup[font.name] : undefined;\r\n\r\n return minSize || 0.62;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _cmeGetFontMinSizeLookup () {\r\n var me = this,\r\n lookup = me._cmeFontMinSizeLookup,\r\n store = me._cmeStore,\r\n records;\r\n\r\n if (!lookup && store.isLoaded()) {\r\n lookup = me._cmeFontMinSizeLookup = {};\r\n records = store.getRecords();\r\n\r\n records.forEach(function (r) {\r\n lookup[r.get('Name')] = r.get('MinSize');\r\n });\r\n }\r\n\r\n return lookup;\r\n }\r\n\r\n}\r\n","import Tag from '../helper/Tag.js';\r\nimport BaseService from './BaseService.js';\r\n\r\nexport default class ImportService extends BaseService {\r\n\r\n //\r\n // PUBLIC METHODS\r\n //\r\n\r\n /**\r\n * @param {HTMLElement} file A file input field.\r\n */\r\n importFont$ (file) {\r\n var me = this,\r\n app = Application,\r\n progressHandler = {\r\n fn: me.setProgress,\r\n scope: me\r\n },\r\n requestModel;\r\n\r\n app.wait();\r\n\r\n return Cx.Core.Font.create$(file, requestModel, progressHandler).then(\r\n // Success\r\n function (responseModel) {\r\n app.hide();\r\n return Cx.resolve(responseModel);\r\n },\r\n // Fail\r\n function () {\r\n app.hide();\r\n app.alert('Import failed!');\r\n return Cx.reject(errorMsg);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param {HTMLElement} file A file input field.\r\n */\r\n importFile$ (file) {\r\n var me = this,\r\n app = Application,\r\n isCadworxFile = me.isCadworxFile(file),\r\n requestModel = {\r\n Tags: [Tag.myImportedFilesStoreRoot()]\r\n },\r\n progressHandler = {\r\n fn: me.setProgress,\r\n scope: me\r\n },\r\n url = me.getUrl(isCadworxFile);\r\n\r\n app.wait();\r\n\r\n return Cx.Core.fileUpload$(url, [file], requestModel, progressHandler).then(\r\n // Promise resolved\r\n function (responseModel) {\r\n app.hide();\r\n\r\n if (isCadworxFile) {\r\n return me.handleCadworxResponse$(responseModel);\r\n } else {\r\n return Cx.resolve(Cx.Document.fromXmlString(responseModel.Cdl));\r\n }\r\n },\r\n // Promise rejected\r\n function (errorMsg) {\r\n app.hide();\r\n app.alert('Import failed!');\r\n return Cx.reject(errorMsg);\r\n }\r\n );\r\n }\r\n\r\n handleCadworxResponse$ (model) {\r\n var id = model.Documents[0];\r\n\r\n if (id) {\r\n return Cx.Document.load$(id).then(function (doc) {\r\n return Cx.resolve(doc);\r\n });\r\n } else {\r\n return Cx.reject();\r\n }\r\n }\r\n\r\n //\r\n // PRIVATE METHODS\r\n //\r\n\r\n /**\r\n * @param {Boolean} isCadworxFile\r\n */\r\n getUrl (isCadworxFile) {\r\n if (isCadworxFile) {\r\n // Force url\r\n // Use handleCadworxResponse() to process response model\r\n return Cx.Core.Document.Url.Upload;\r\n }\r\n\r\n return Cx.Core.Document.Url.Import;\r\n }\r\n\r\n /**\r\n * @param {HTMLElement} file A file input field.\r\n */\r\n isCadworxFile (file) {\r\n var ext = this.getExtension(file);\r\n return (ext === 'cadx');\r\n }\r\n\r\n /**\r\n * Allow for filenames with more than one '.'\r\n * @param {HTMLElement} file A file input field.\r\n */\r\n getExtension (file) {\r\n var split = file.name.split('.'),\r\n ext = split[split.length - 1].toLowerCase();\r\n\r\n return ext;\r\n }\r\n\r\n setProgress (percent) {\r\n if (percent >= 0 && percent <= 100) {\r\n Application.setMessage('Importing (' + percent + '%)');\r\n }\r\n }\r\n\r\n}\r\n","import CxPagingAssetsStore from '../cadworx/store/CxPagingAssetsStore.js';\r\n\r\nexport default class MonogramFontsStore extends CxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: Cx.Core.Font.search$\r\n });\r\n\r\n super(config);\r\n\r\n this._requestModel = {\r\n // Limit: ...,\r\n Match: {},\r\n // Start: ...,\r\n // SortBy: 'Modified', // Causes font search to fail\r\n // SortDir: 'DESC',\r\n Text: undefined\r\n };\r\n }\r\n\r\n /**\r\n * @param {Number} v\r\n */\r\n filterChars (v) {\r\n var value = this._filterChars;\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else if (v !== value) {\r\n if (this._searchText === 'Circle') {\r\n this.searchByCircle(v);\r\n } else {\r\n this.searchByDiamond(v);\r\n }\r\n }\r\n }\r\n\r\n searchByCircle (chars) {\r\n this._filterChars = chars;\r\n this.filter('Circle');\r\n }\r\n\r\n searchByDiamond (chars) {\r\n this._filterChars = chars;\r\n this.filter('Diamond');\r\n }\r\n\r\n /**\r\n * Override.\r\n * Search under Monogram 'folder'.\r\n * @param {String} text\r\n * @param {Object} [options]\r\n */\r\n _searchByText (text, options) {\r\n var match = {\r\n Archived: false\r\n },\r\n rootTag = this.getRootTag(),\r\n // remove any '/**' string and any '*' chars\r\n name = (rootTag.Name || '').replace('/**', '').replace(/[*]/g, ''),\r\n tag = {\r\n Name: name + '**', // Search under Monogram 'folder'\r\n Owned: rootTag.Owned,\r\n Shared: rootTag.Shared,\r\n Type: rootTag.Type\r\n };\r\n\r\n this._searchText = text;\r\n this._oldSearchTag = this.getSearchTag();\r\n this.setSearchTag(undefined);\r\n this._applyToSearch(this._applyTag(match, tag), text);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Model[]} records\r\n */\r\n _onLoad (records) {\r\n var chars = this._filterChars,\r\n index;\r\n\r\n if (chars) {\r\n index = records.length - 1;\r\n\r\n for (; index >= 0; index--) {\r\n if (records[index].get('Chars') !== chars) {\r\n records.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n super._onLoad(records);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var id = item.Id,\r\n name = item.Name || item.FullName || item.FamilyName,\r\n chars = this._getChars(name),\r\n fontStyle = this._getFontStyle(name),\r\n frameSystem = this._getFrameSystem(name),\r\n size = 90,\r\n thumbUrl = Cx.Core.Monogram.thumbnailUrl({\r\n Line: chars === 3 ? 'ABC' : (chars === 2 ? 'AB' : 'A'),\r\n FontStyle: fontStyle,\r\n FrameSystem: frameSystem,\r\n Height: size,\r\n Width: size\r\n });\r\n\r\n return {\r\n Chars: chars,\r\n Font: undefined,\r\n FontStyle: fontStyle,\r\n FrameSystem: frameSystem,\r\n Id: id,\r\n Name: name,\r\n ThumbHeight: size,\r\n ThumbUrl: thumbUrl,\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n _getChars (name) {\r\n var split = name.split(''),\r\n len = split.length,\r\n i = 0,\r\n char;\r\n\r\n for (; i < len; i++) {\r\n char = split[i].trim('');\r\n\r\n if (char && !isNaN(char)) {\r\n return parseInt(char);\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n _getFrameSystem (name) {\r\n if (name.indexOf('Circle') !== -1) {\r\n return 'Circle';\r\n }\r\n\r\n if (name.indexOf('Diamond') !== -1) {\r\n return 'Diamond';\r\n }\r\n }\r\n\r\n _getFontStyle (name) {\r\n if (name.indexOf('Aviator') !== -1) {\r\n return 'Aviator';\r\n }\r\n\r\n if (name.indexOf('Facet') !== -1) {\r\n return 'Facet';\r\n }\r\n \r\n if (name.indexOf('Standard') !== -1) {\r\n return 'Standard';\r\n }\r\n }\r\n\r\n}\r\n","import BaseService from './BaseService.js';\r\n\r\nimport MonogramFontsStore from '../store/MonogramFontsStore.js';\r\nimport Tag from '../helper/Tag.js';\r\n\r\nexport default class MonogramService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n this._fontsStore = new MonogramFontsStore({\r\n rootTag: Tag.cmeMonogramFontsStoreRoot()\r\n });\r\n Application.onReady(this._onApplicationReady.bind(this));\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onApplicationReady () {\r\n var me = this,\r\n canvas = me._canvas = Application.canvas();\r\n\r\n canvas.on('change', me._onCanvasChange, me);\r\n canvas.on('render', me._onCanvasChange, me);\r\n\r\n me._onIsReady();\r\n }\r\n\r\n fontsStore () {\r\n return this._fontsStore;\r\n }\r\n\r\n /**\r\n * @param {Number} chars\r\n */\r\n searchByCircle (chars) {\r\n this._fontsStore.searchByCircle(chars);\r\n }\r\n\r\n /**\r\n * @param {Number} chars\r\n */\r\n searchByDiamond (chars) {\r\n this._fontsStore.searchByDiamond(chars);\r\n }\r\n\r\n /**\r\n * @param {String} [frameSystem]\r\n * @param {String} [fontStyle]\r\n */\r\n font (frameSystem, fontStyle) {\r\n if (frameSystem === undefined) { // Get?\r\n return {\r\n FrameSystem: this._frameSystem,\r\n FontStyle: this._fontStyle\r\n };\r\n }\r\n\r\n else if (frameSystem !== this._frameSystem || fontStyle !== this._fontStyle) {\r\n this.font$(frameSystem, fontStyle, this._fontTarget);\r\n }\r\n }\r\n\r\n /**\r\n * @param {String} frameSystem\r\n * @param {String} fontStyle\r\n * @param {Cx.Figure} figure\r\n */\r\n font$ (frameSystem, fontStyle, figure) {\r\n figure.frameSystem = frameSystem;\r\n figure.fontStyle = fontStyle;\r\n return this._canvas.render$();\r\n }\r\n\r\n frameSystemIsCircle () {\r\n var v = this._frameSystem;\r\n return v === 'Circle';\r\n }\r\n\r\n frameSystemIsDiamond () {\r\n var v = this._frameSystem;\r\n return v === 'Diamond';\r\n }\r\n\r\n /**\r\n * @param {Number} [v]\r\n */\r\n size (v) {\r\n var value = this._size;\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else if (this.canEditSize() && (v !== value)) { // Set\r\n this._sizeTarget.size = v;\r\n this._canvas.render$();\r\n }\r\n }\r\n\r\n canEditSize () {\r\n return this._sizeCondition;\r\n }\r\n\r\n /**\r\n * @param {String} [v]\r\n */\r\n text (v) {\r\n var value = this._text;\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else if (this.canEditText() && (v !== value)) { // Set\r\n this.setText(this._textTarget, v);\r\n this._canvas.render$();\r\n }\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n * @param {String} v\r\n */\r\n setText (figure, v) {\r\n v = v || '';\r\n v = v.length > 3 ? v.substring(0, 3) : v;\r\n\r\n if (v.length > 0) {\r\n figure.hidden = false;\r\n figure.line = v;\r\n } else {\r\n figure.hidden = true;\r\n }\r\n }\r\n\r\n canEditText (target) {\r\n return target ? this._canEditText(target) : this._textCondition;\r\n }\r\n\r\n _canEditText (target) {\r\n target = target.isArray ? target : [target];\r\n return this._canvas.are(target, '1', 'monogram');\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} figure\r\n * @param {String} text\r\n * @param {Boolean} hidden\r\n */\r\n setDynamicText$ (figure, text, hidden) {\r\n if (text !== undefined) {\r\n this.setText(figure, text);\r\n }\r\n\r\n if (typeof hidden === 'boolean') {\r\n figure.hidden = hidden;\r\n }\r\n\r\n return this._canvas.commit$();\r\n }\r\n\r\n _onCanvasChange () {\r\n var me = this,\r\n canvas = me._canvas,\r\n selected = canvas.selectedFigures,\r\n selectedIsMonogram = me._canEditText(selected),\r\n firstFigure = selected[0];\r\n\r\n me._fontCondition = selectedIsMonogram;\r\n me._fontTarget = selectedIsMonogram ? firstFigure : undefined;\r\n me._fontStyle = selectedIsMonogram ? firstFigure.fontStyle : undefined;\r\n me._frameSystem = selectedIsMonogram ? firstFigure.frameSystem : undefined;\r\n\r\n me._sizeCondition = selectedIsMonogram;\r\n me._sizeTarget = selectedIsMonogram ? firstFigure : undefined;\r\n me._size = selectedIsMonogram ? firstFigure.size : undefined;\r\n\r\n me._textCondition = selectedIsMonogram;\r\n me._textTarget = selectedIsMonogram ? firstFigure : undefined;\r\n me._text = selectedIsMonogram ? firstFigure.line : undefined;\r\n\r\n me._onChange();\r\n }\r\n\r\n}\r\n","import CmeAPI from '../../api/CmeAPI.js';\r\nimport CxPagingAssetsStore from '../../cadworx/store/CxPagingAssetsStore.js';\r\n\r\n/**\r\n * Searches CME Templates\r\n */\r\nexport default class CmeMyFilesStore extends CxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: CmeAPI.searchDocuments$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var size = 90;\r\n\r\n return {\r\n Id: item.Id,\r\n Name: item.Name,\r\n ThumbHeight: size,\r\n ThumbUrl: CmeAPI.getDocThumb(item, { height: size, width: size }),\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n}\r\n","import TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\nimport CxPagingAssetsStore from '../../cadworx/store/CxPagingAssetsStore.js';\r\n\r\nexport default class TxMyFilesStore extends CxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: TransferExpressAPI.searchDocs$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} options\r\n */\r\n _doLoad (options) {\r\n // This needs to be false to prevent slow calls caused by high overhead\r\n this._requestModel.NoDuplicateNames = false;\r\n super._doLoad(options);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var id = item.Id,\r\n name = item.Name,\r\n size = 90;\r\n\r\n return {\r\n Id: id,\r\n Name: name,\r\n ThumbHeight: size,\r\n ThumbUrl: TransferExpressAPI.getMyFileThumb(id, { height: size, width: size }),\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\nimport Tag from '../../helper/Tag.js';\r\n\r\nexport default class TxMyFileTagsStore extends Store {\r\n\r\n constructor () {\r\n super({\r\n data: [\r\n Tag.txSavedLayoutsRoot(),\r\n Tag.txOrdersRoot()\r\n ]\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var tag = Tag.txSavedLayoutsRoot(),\r\n displayName = item.Name === tag.Name ? 'All My Saved Layouts' : 'Previously Added to Cart';\r\n\r\n return {\r\n DisplayName: displayName,\r\n Id: item.Name,\r\n Name: item.Name,\r\n Owned: item.Owned,\r\n Shared: item.Shared,\r\n Tag: item\r\n };\r\n }\r\n\r\n}\r\n","import Doc from '../helper/Doc.js';\r\nimport Rules from '../Rules.js';\r\nimport Tag from '../helper/Tag.js';\r\nimport CxPagingAssetsStore from '../cadworx/store/CxPagingAssetsStore.js';\r\n\r\nexport default class SavedDesignsStore extends CxPagingAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n rootTag: Tag.myCadworxArtStoreRoot(),\r\n searchFn$: Cx.Core.Document.search$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Private. Override.\r\n * @param {Object} match\r\n * @param {String} text\r\n */\r\n _applyToSearch (match, text) {\r\n var model = this._requestModel,\r\n currentMatch = this._requestModel.Match || {},\r\n ruleId = Rules.code();\r\n\r\n model.Match = Object.assign(currentMatch, match);\r\n model.Match.Class1 = Doc.savedDesignClass();\r\n model.HasClass1 = true;\r\n model.Match.Class2 = ruleId ? ruleId : undefined;\r\n model.HasClass2 = ruleId ? true : undefined;\r\n model.Text = text;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var size = 90;\r\n\r\n return {\r\n Id: item.Id,\r\n Name: item.Name,\r\n ThumbHeight: size,\r\n ThumbUrl: Doc.getThumb(item, { height: size, width: size }),\r\n ThumbWidth: size\r\n };\r\n }\r\n\r\n}\r\n","import CadworxLiveAPI from '../api/CadworxLiveAPI.js'\r\nimport TransferExpressAPI from '../api/TransferExpressAPI.js';\r\nimport Tag from '../helper/Tag.js';\r\nimport CxArtsStore from '../cadworx/store/CxArtsStore.js';\r\nimport CxTagsStore from '../cadworx/store/CxTagsStore.js';\r\nimport CmeMyFilesStore from '../cme/store/CmeMyFilesStore.js';\r\nimport TxMyFilesStore from '../transferExpress/store/TxMyFilesStore.js';\r\nimport TxMyFileTagsStore from '../transferExpress/store/TxMyFileTagsStore.js';\r\nimport SavedDesignsStore from '../store/SavedDesignsStore.js';\r\nimport BaseService from './BaseService.js';\r\n\r\nexport default class MyFilesService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n Application.onReady(this._onApplicationReady.bind(this));\r\n }\r\n\r\n _onApplicationReady () {\r\n var me = this;\r\n\r\n me._initStores();\r\n me._initActiveStore();\r\n me._onIsReady();\r\n }\r\n\r\n _initStores () {\r\n var me = this;\r\n\r\n if (me.canAddCadworx()) {\r\n me._initCadworxStores();\r\n }\r\n\r\n if (me.canAddCme()) {\r\n me._initCmeStores();\r\n }\r\n\r\n if (me.canAddTransferExpress()) {\r\n me._initTransferExpressStores();\r\n }\r\n\r\n me._savedDesignsStore = new SavedDesignsStore();\r\n }\r\n\r\n _initCadworxStores () {\r\n var me = this;\r\n\r\n me._cadworxStore = new CxArtsStore({\r\n rootTag: Tag.myCadworxArtStoreRoot()\r\n });\r\n\r\n me._cadworxTagsStore = new CxTagsStore({\r\n rootTag: Tag.myCadworxArtTagsStoreRoot()\r\n });\r\n }\r\n\r\n _initCmeStores () {\r\n var me = this;\r\n\r\n me._cmeStore = new CmeMyFilesStore({\r\n rootTag: Tag.cmeMyFilesStoreRoot()\r\n });\r\n }\r\n\r\n _initTransferExpressStores () {\r\n var me = this;\r\n\r\n me._txStore = new TxMyFilesStore({\r\n rootTag: Tag.txSavedLayoutsRoot()\r\n });\r\n\r\n me._txTagsStore = new TxMyFileTagsStore();\r\n }\r\n\r\n _initActiveStore () {\r\n var me = this;\r\n\r\n if (me.canAddCadworx()) {\r\n me.setCadworxActive();\r\n }\r\n\r\n else if (me.canAddCme()) {\r\n me.setCmeActive();\r\n }\r\n\r\n else if (me.canAddTransferExpress()) {\r\n me.setTransferExpressActive();\r\n }\r\n\r\n else {\r\n me.setSavedDesignsActive();\r\n }\r\n }\r\n\r\n //\r\n // PUBLIC METHODS\r\n //\r\n\r\n getSources () {\r\n var me = this,\r\n sources = [];\r\n\r\n if (me.canAddCadworx()) {\r\n sources.push({ Id: 'cadworx', Name: 'Cadworx Live' });\r\n }\r\n\r\n if (me.canAddCme()) {\r\n sources.push({ Id: 'cme', Name: 'CAD-CUT Templates' });\r\n }\r\n\r\n if (me.canAddTransferExpress()) {\r\n sources.push({ Id: 'tx', Name: 'Transfer Express' });\r\n }\r\n\r\n sources.push({ Id: 'saved', Name: 'Saved Designs' });\r\n\r\n return sources;\r\n }\r\n\r\n getActiveSource () {\r\n var me = this;\r\n\r\n if (me.canAddCadworx() && me.isCadworxActive()) {\r\n return 'cadworx';\r\n }\r\n\r\n if (me.canAddCme() && me.isCmeActive()) {\r\n return 'cme';\r\n }\r\n\r\n if (me.canAddSavedDesign() && me.isSavedDesignActive()) {\r\n return 'saved';\r\n }\r\n\r\n if (me.canAddTransferExpress() && me.isTransferExpressActive()) {\r\n return 'tx';\r\n }\r\n }\r\n\r\n setSource (id) {\r\n var me = this;\r\n\r\n if (id === 'cadworx') {\r\n me.setCadworxActive();\r\n } else if (id === 'cme') {\r\n me.setCmeActive();\r\n } else if (id === 'tx') {\r\n me.setTransferExpressActive();\r\n } else if (id === 'saved') {\r\n me.setSavedDesignsActive();\r\n }\r\n }\r\n\r\n canAddCadworx () {\r\n // Ensure we have a user session id.\r\n return CadworxLiveAPI.hasUserSession();\r\n }\r\n\r\n canAddCme () {\r\n // We always have the Stahls shopper id to get the user session id.\r\n return true;\r\n }\r\n\r\n canAddSavedDesign () {\r\n return true;\r\n }\r\n\r\n canAddTransferExpress () {\r\n // Ensure we have a user session id.\r\n return TransferExpressAPI.hasUserSession();\r\n }\r\n\r\n //\r\n // WHAT IS ACTIVE?\r\n //\r\n\r\n isCadworxActive () {\r\n return (this._activeStore === this._cadworxStore);\r\n }\r\n\r\n isCmeActive () {\r\n return (this._activeStore === this._cmeStore);\r\n }\r\n\r\n isSavedDesignActive () {\r\n return (this._activeStore === this._savedDesignsStore);\r\n }\r\n\r\n isTransferExpressActive () {\r\n return this._activeStore === this._txStore;\r\n }\r\n\r\n //\r\n // CHANGE WHAT IS ACTIVE\r\n //\r\n\r\n setCadworxActive () {\r\n var me = this;\r\n\r\n if (me.canAddCadworx()) {\r\n me._activeStore = me._cadworxStore;\r\n me._activeTagsStore = me._cadworxTagsStore;\r\n me._onChange();\r\n }\r\n }\r\n\r\n setCmeActive () {\r\n var me = this;\r\n\r\n if (me.canAddCme()) {\r\n me._activeStore = me._cmeStore;\r\n me._activeTagsStore = undefined;\r\n me._onChange();\r\n }\r\n }\r\n\r\n setSavedDesignsActive () {\r\n var me = this;\r\n\r\n if (me.canAddSavedDesign()) {\r\n me._activeStore = me._savedDesignsStore;\r\n me._activeTagsStore = undefined;\r\n me._onChange();\r\n }\r\n }\r\n\r\n setTransferExpressActive () {\r\n var me = this;\r\n\r\n if (me.canAddTransferExpress()) {\r\n me._activeStore = me._txStore;\r\n me._activeTagsStore = me._txTagsStore;\r\n me._onChange();\r\n }\r\n }\r\n\r\n //\r\n // ACTIVE STORE\r\n //\r\n\r\n store () {\r\n return this._activeStore;\r\n }\r\n\r\n tagsStore () {\r\n return this._activeTagsStore;\r\n }\r\n\r\n //\r\n // STORES\r\n //\r\n\r\n cadworxStore () {\r\n return this._cadworxStore;\r\n }\r\n\r\n cadworxTagsStore () {\r\n return this._cadworxTagsStore;\r\n }\r\n\r\n cmeStore () {\r\n return this._cmeStore;\r\n }\r\n\r\n cmeTagsStore () {\r\n return this._cmeTagsStore;\r\n }\r\n\r\n transferExpressStore () {\r\n return this._txStore;\r\n }\r\n\r\n onDesignSaved () {\r\n var store = this._savedDesignsStore;\r\n\r\n if (store.isLoaded()) {\r\n store.loadPage(1);\r\n }\r\n }\r\n\r\n}\r\n","import ExternalAPI from './ExternalAPI.js';\r\nimport Querystring from '../util/Querystring.js';\r\n\r\nexport default class RailsAPI {\r\n\r\n static getCustomizations$ () {\r\n var id = Querystring.customizationId(),\r\n url;\r\n\r\n // If set, use the rules returned instead of product's customization rules\r\n if (id) {\r\n url = Querystring.apiEndpoint() + '/customizations/' + id;\r\n return RailsAPI.get$(url);\r\n } else {\r\n return Cx.resolve();\r\n }\r\n }\r\n\r\n static getPricing$ (data) {\r\n var apiKey = Querystring.apiKey(),\r\n endpoint = Querystring.apiEndpoint(),\r\n url = endpoint + '/pricing/cme';\r\n\r\n if (apiKey) {\r\n data.token = apiKey;\r\n }\r\n\r\n return RailsAPI.post$(url, data);\r\n }\r\n\r\n static getProduct$ (id) {\r\n var url = Querystring.apiEndpoint() + '/products/' + id;\r\n return RailsAPI.get$(url);\r\n }\r\n\r\n static get$ (url, data) {\r\n data = data || '';\r\n\r\n // Cache buster\r\n data += (data.length > 0 ? '&' : '') + 'cache_buster=' + new Date().getTime();\r\n\r\n return ExternalAPI.request$({\r\n contentType: 'text/plain; charset=utf-8',\r\n data: data,\r\n dataType: 'json',\r\n type: 'GET',\r\n url: url\r\n });\r\n }\r\n\r\n static post$ (url, data) {\r\n return ExternalAPI.request$({\r\n contentType: 'application/json',\r\n data: typeof data !== 'string' ? JSON.stringify(data) : data,\r\n dataType: 'json',\r\n type: 'POST',\r\n url: url\r\n });\r\n }\r\n\r\n}\r\n","import TransferGroup from './TransferGroup.js';\r\nimport TxDistress from './TxDistress.js';\r\n\r\nexport default class TxTransferGroup {\r\n\r\n /**\r\n * There is only 1 distress figure per transfer group.\r\n * If the user merges transfer groups, only 1 distress figure is kept.\r\n * If the user diverges transfer groups, the current distress figure is cloned and 1 each is assigned to the transfer groups.\r\n */\r\n static createGroup (canvas, target) {\r\n var TG = TransferGroup,\r\n groups = TG.getGroups(target),\r\n figure = TxTransferGroup._findDistressFigureForNewTransferGroup(canvas, groups),\r\n groupName = TG.createGroup(target);\r\n\r\n if (figure) {\r\n TG.addToGroup([figure], groupName);\r\n }\r\n }\r\n\r\n /**\r\n * Looks for a distress figure for each group.\r\n * Return the first one found.\r\n * @param {Object} groups\r\n */\r\n static _findDistressFigureForNewTransferGroup (canvas, groups) {\r\n var figures = TxDistress.findActiveDistressFigures(canvas),\r\n len = figures.length,\r\n i, isGroup, name;\r\n\r\n for (name in groups) {\r\n i = 0;\r\n isGroup = TransferGroup.isGroup(groups[name]);\r\n\r\n for (; i < len; i++) {\r\n if (TransferGroup.getName(figures[i]) == name) {\r\n // If we do not have all the figures of the group, clone the distress\r\n // for the new group and leave the distress for it's group.\r\n return isGroup ? figures[i] : TxTransferGroup._txCloneDistressFigure(canvas, figures[i]);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n static _txCloneDistressFigure (canvas, figure) {\r\n var clone = Cx.cloneDeep(figure);\r\n TxDistress.addToDistressLayer(canvas, clone);\r\n\r\n return clone;\r\n }\r\n\r\n}\r\n","/**\r\n * Returns new array of unique values.\r\n * @param {Array} arr\r\n */\r\nexport default function unique (arr) {\r\n return arr.filter(function (value, index, self) { \r\n return self.indexOf(value) === index;\r\n });\r\n}\r\n","import BaseService from './BaseService';\r\nimport RailsAPI from '../api/RailsAPI.js';\r\nimport Brush from '../helper/Brush.js';\r\nimport Figure from '../helper/Figure.js';\r\nimport Meta from '../helper/Meta.js';\r\nimport TransferGroup from '../helper/TransferGroup.js';\r\nimport TxTransferGroup from '../helper/TxTransferGroup';\r\nimport unique from '../helper/unique.js';\r\n\r\n/**\r\n * CME only.\r\n */\r\nexport default class OrderService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n this._quantity = 1;\r\n this._pricingFailed = false;\r\n\r\n Application.onReady(this._onApplicationReady.bind(this));\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n // clearTransferGroup () {\r\n // var me = this,\r\n // figures = me._getSelectedFigures();\r\n\r\n // figures.forEach(function (f) {\r\n // TransferGroup.createGroup([f]);\r\n // });\r\n\r\n // Application.commit$();\r\n // }\r\n\r\n /**\r\n * Public.\r\n */\r\n // canClearTransferGroup () {\r\n // return this._clearTransferGroupCondition;\r\n // }\r\n\r\n /**\r\n * Public.\r\n */\r\n createTransferGroup () {\r\n var me = this,\r\n target = me._getSelectedFigures();\r\n\r\n if (Meta.areTransferExpress(target)) {\r\n TxTransferGroup.createGroup(me._canvas, target);\r\n } else {\r\n TransferGroup.createGroup(target);\r\n }\r\n\r\n Application.commit$();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n canCreateTransferGroup () {\r\n return this._createTransferGroupCondition;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n removeFromTransferGroup () {\r\n var me = this,\r\n target = me._getSelectedFigures();\r\n\r\n if (Meta.areTransferExpress(target)) {\r\n TxTransferGroup.createGroup(me._canvas, target);\r\n } else {\r\n TransferGroup.createGroup(target);\r\n }\r\n\r\n Application.commit$();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n canRemoveFromTransferGroup () {\r\n return this._removeFromTransferGroupCondition;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n metadata () {\r\n return this._metadata;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n transferSizes (page) {\r\n page = page || this._canvas.activePage.id;\r\n\r\n var data = this.metadata(),\r\n i, item, len, sizes;\r\n\r\n if (data) {\r\n i = 0;\r\n len = data.length;\r\n sizes = [];\r\n\r\n for (; i < len; i++) {\r\n item = data[i];\r\n\r\n if (item.view_type === page) {\r\n sizes.push({\r\n groupName: item.transfer_group_name,\r\n height: item.metadata.height,\r\n width: item.metadata.width\r\n });\r\n }\r\n }\r\n }\r\n\r\n return sizes;\r\n } \r\n\r\n /**\r\n * Public.\r\n * @param {String} page (Optional)\r\n */\r\n pricing (page) {\r\n var value = this._pricing;\r\n\r\n if (value && page) {\r\n return value[page];\r\n }\r\n\r\n return value;\r\n }\r\n\r\n pricingFailed () {\r\n return this._pricingFailed;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} v Optional.\r\n */\r\n quantity (v) {\r\n var value = this._quantity;\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else { // Set\r\n v = parseInt(v);\r\n\r\n if (v !== value && !isNaN(v)) {\r\n this._quantity = v;\r\n this._onChange();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Boolean} v Optional.\r\n */\r\n optional (v) {\r\n var me = this,\r\n value = me._optional,\r\n target = me._optionalTarget;\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else if (v !== value) {\r\n Meta.setOptional(target, v);\r\n\r\n if (v && !Meta.getPricingLabel(target)) {\r\n Meta.setPricingLabel(target, me._getNextPricingLabel());\r\n }\r\n\r\n me._syncMetadata();\r\n me._onChange();\r\n }\r\n }\r\n\r\n _getNextPricingLabel () {\r\n var figuresByPage = this._getDesignFiguresByPage(),\r\n indexes = [],\r\n prefix = 'optional_',\r\n id;\r\n\r\n for (id in figuresByPage) {\r\n figuresByPage[id].forEach(function (f) {\r\n var label = Meta.getPricingLabel(f);\r\n\r\n if (label && label.indexOf(prefix) === 0) {\r\n indexes.push(parseInt(label.replace(prefix, '')));\r\n }\r\n });\r\n }\r\n\r\n // Increment?\r\n prefix += indexes.length > 0 ? (Math.max.apply(Math, indexes) + 1) : 0;\r\n\r\n return prefix;\r\n }\r\n\r\n canEditOptional () {\r\n return this._optionalCondition;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} v Optional.\r\n */\r\n pricingLabel (v) {\r\n var me = this,\r\n value = me._pricingLabel;\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else if (me.canEditPricingLabel() && v !== value) {\r\n Meta.setPricingLabel(me._pricingLabelTarget, v);\r\n me._syncMetadata();\r\n me._onChange();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * Called by the Application to build the save response.\r\n */\r\n pricingLabels () {\r\n var doc = Application.designService.designDocument(),\r\n data = [];\r\n\r\n doc.pages.forEach(function (page) {\r\n page.figures.forEach(function (figure, index) {\r\n var optional = Meta.getOptional(figure),\r\n label = optional ? Meta.getPricingLabel(figure) : undefined;\r\n\r\n if (label) {\r\n data.push(label);\r\n }\r\n });\r\n });\r\n\r\n return data;\r\n }\r\n\r\n canEditPricingLabel () {\r\n return this._pricingLabelCondition;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onApplicationReady () {\r\n var me = this,\r\n canvas = me._canvas = Application.canvas();\r\n\r\n me._initOrigCdlByPage();\r\n me._initOptional();\r\n me.buildMetadata();\r\n me._getPricing();\r\n\r\n canvas.on('activepagechanged', me._onCanvasActivePageChanged, me);\r\n canvas.on('commit', me._onCanvasCommit, me);\r\n canvas.on('newdocument', me._onCanvasNewDocument, me);\r\n canvas.on('change', me._onCanvasChange, me);\r\n canvas.on('render', me._onCanvasChange, me);\r\n\r\n me._onIsReady();\r\n }\r\n\r\n /**\r\n * Private.\r\n * Allow UI to show price for the active page.\r\n */\r\n _onCanvasActivePageChanged () {\r\n this._onChange();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCanvasChange () {\r\n var me = this;\r\n\r\n me._syncMetadata();\r\n me.buildMetadata();\r\n me._onChange();\r\n }\r\n\r\n _syncMetadata () {\r\n var me = this,\r\n selected = me._getSelectedFigures(),\r\n selectedCount = selected.length,\r\n firstFigure = selected[0],\r\n selectedIsGroup = selectedCount > 0 ? TransferGroup.isGroup(selected) : false;\r\n\r\n me._clearTransferGroupCondition = selectedIsGroup && selectedCount > 1;\r\n me._createTransferGroupCondition = !selectedIsGroup && selectedCount > 1;\r\n me._removeFromTransferGroupCondition = selectedCount === 1 && !selectedIsGroup ? TransferGroup.inGroup(selected[0]) : false;\r\n\r\n me._optionalCondition = selectedCount === 1;\r\n me._optionalTarget = me._optionalCondition ? firstFigure : undefined;\r\n me._optional = me._optionalCondition ? Meta.getOptional(firstFigure) : undefined;\r\n\r\n me._pricingLabelCondition = selectedCount === 1;\r\n me._pricingLabelTarget = me._pricingLabelCondition ? firstFigure : undefined;\r\n me._pricingLabel = me._pricingLabelCondition ? Meta.getPricingLabel(firstFigure) : undefined;\r\n }\r\n\r\n _getSelectedFigures () {\r\n return this._canvas.selectedFigures;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCanvasCommit () {\r\n this._getPricing();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCanvasNewDocument () {\r\n this._initOrigCdlByPage();\r\n this._initOptional();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initOrigCdlByPage () {\r\n this._origCdlByPage = this._getCdlByPage();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initOptional () {\r\n var app = Application,\r\n dirty, doc;\r\n\r\n // Only hide the optional figures for frontend when we have a product\r\n // So not when showing a customer quote\r\n if (app.isFrontEnd() && app.product()) {\r\n doc = app.designService.designDocument();\r\n\r\n doc.pages.forEach(function (page) {\r\n page.figures.forEach(function (figure) {\r\n if (Meta.getOptional(figure)) {\r\n figure.hidden = true;\r\n dirty = true;\r\n }\r\n });\r\n });\r\n\r\n if (dirty) {\r\n this._canvas.render$();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getCdlByPage () {\r\n var canvas = this._canvas,\r\n selector = Application.designService.designLayerSelector,\r\n pages = {};\r\n\r\n canvas.pages.forEach(function (page) {\r\n var layer = page.layerBy(selector),\r\n figures = layer ? layer.figures.toArray() : [];\r\n\r\n pages[page.id] = Cx.toXmlString(figures);\r\n });\r\n\r\n return pages;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getPricing () {\r\n if (!Application.canPrice()) {\r\n return false;\r\n }\r\n\r\n var me = this,\r\n pricingData = me.getPricingData(),\r\n havePricingData = pricingData.length > 0,\r\n stringified = JSON.stringify(pricingData),\r\n pricingDataChanged = stringified !== me._pricingCache;\r\n\r\n if (havePricingData) {\r\n if (pricingDataChanged) {\r\n me.getPricing$(pricingData).then(\r\n // Success\r\n function (data) {\r\n me._pricingCache = stringified;\r\n me._pricing = data;\r\n me._pricingFailed = false;\r\n me._onChange();\r\n },\r\n // Fail\r\n function () {\r\n me._pricing = undefined;\r\n me._pricingFailed = true;\r\n me._onChange();\r\n }\r\n );\r\n }\r\n }\r\n\r\n else { // Blank design\r\n me._pricing = undefined;\r\n me._pricingFailed = false;\r\n me._onChange();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * Allow application to call from canSaveToCart$() to determine\r\n * if add to cart is allowed.\r\n * @param {Object[]} pricingData (Optional)\r\n */\r\n getPricing$ (pricingData) {\r\n pricingData = pricingData || this.getPricingData();\r\n\r\n // Can price?\r\n if (pricingData.length > 0) {\r\n return RailsAPI.getPricing$({ transfers: pricingData }).then(\r\n // Success\r\n function (response) {\r\n if (Array.isArray(response)) {\r\n var data = {};\r\n\r\n response.forEach(function (item) {\r\n var page = item.jobData.cxPage,\r\n price = item.price;\r\n\r\n if (data[page]) {\r\n data[page] += price;\r\n } else {\r\n data[page] = price;\r\n }\r\n });\r\n\r\n return Cx.resolve(data);\r\n }\r\n\r\n else {\r\n return Cx.reject();\r\n }\r\n }\r\n );\r\n }\r\n\r\n else {\r\n return Cx.reject();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getPricingData () {\r\n var me = this,\r\n doc = Application.designDocument(),\r\n metadata = me.metadata(),\r\n quantity = me.quantity(),\r\n data = [];\r\n\r\n metadata.forEach(function (item) {\r\n var meta = item.metadata,\r\n sku = 'CCT' + meta.material;\r\n\r\n if (!meta.empty_design) {\r\n data.push({\r\n jobData: {\r\n cxJobType: 'CMETemplate',\r\n cxDocumentId: doc.id,\r\n cxPage: item.view_type,\r\n cxConfig: Cx.Core.getConfig(),\r\n cxEmptyDesign: meta.empty_design,\r\n cxQuantity: quantity,\r\n cxVariableData: [],\r\n description: {\r\n texts: meta.texts,\r\n cliparts: meta.cliparts,\r\n material: meta.material,\r\n materialDescription: meta.material_description,\r\n color: meta.color,\r\n colorDescription: meta.color_description,\r\n width: meta.width,\r\n height: meta.height,\r\n originalTemplate: meta.original_template,\r\n docName: doc.name\r\n }\r\n },\r\n items: [{ sku: sku, quantity: quantity }],\r\n sku: sku,\r\n quantity: quantity\r\n });\r\n }\r\n });\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Public.\r\n * We need to be able to call this on save / save to cart.\r\n * We had a timing issue that caused the wrong available_production_methods.\r\n */\r\n buildMetadata () {\r\n var me = this,\r\n groupNameMap = me._getGroupNameMap(),\r\n cdlByPage = me._getCdlByPage(),\r\n figuresByPage = me._getDesignFiguresByPage(),\r\n canvas = me._canvas,\r\n doc = canvas.doc,\r\n pages = doc.pages || [],\r\n data = [];\r\n\r\n pages.forEach(function (page) {\r\n var pageId = page.id,\r\n pageCdl = cdlByPage[pageId],\r\n origPageCdl = me._origCdlByPage[pageId],\r\n modifiedDesign = pageCdl !== origPageCdl,\r\n figures = figuresByPage[pageId],\r\n visibleFigures = me._getVisibleFigures(figures),\r\n transferGroups = TransferGroup.getGroups(visibleFigures),\r\n emptyDesign = visibleFigures.length === 0,\r\n transferGroupIndex = 0;\r\n\r\n for (var transferGroupName in transferGroups) {\r\n var fs = transferGroups[transferGroupName],\r\n colorData = me._getColorData(fs),\r\n productionMethods = me._getAvailableProductionMethods(transferGroupName),\r\n size = me._getDesignSize(fs),\r\n meta = {\r\n available_production_methods: productionMethods,\r\n cx_variable_data: [],\r\n cdl_hash: me._getCdlHash(fs),\r\n cliparts: me._getCliparts(fs),\r\n color: colorData.colors,\r\n color_description: colorData.colorDescriptions,\r\n doc_name: 'D4 Commerce',\r\n empty_design: emptyDesign,\r\n height: size.height,\r\n modified_design: modifiedDesign,\r\n original_template: me._getOriginalTemplate(fs),\r\n material: colorData.materials,\r\n material_description: colorData.materialDescriptions,\r\n texts: me._getText(fs),\r\n txArtOnly: Meta.areTransferExpress(fs),\r\n width: size.width\r\n };\r\n\r\n data.push({\r\n figure_index: transferGroupIndex,\r\n metadata: meta,\r\n transfer_group_name: transferGroupName,\r\n users_transfer_group_name: groupNameMap[transferGroupName],\r\n view_type: pageId\r\n });\r\n\r\n transferGroupIndex++;\r\n }\r\n });\r\n\r\n if (me._metadataChanged(data)) {\r\n Application.notifyOfUnsavedChanges(true);\r\n }\r\n\r\n me._metadata = data;\r\n\r\n return data;\r\n }\r\n\r\n _getGroupNameMap () {\r\n var doc = Application.designService.designDocument();\r\n return TransferGroup.getGroupNameMap(doc);\r\n }\r\n\r\n _getAvailableProductionMethods (groupName) {\r\n var service = Application.warningService,\r\n methods = [];\r\n\r\n if (service.isCmeValidForFulfillment(groupName)) {\r\n methods.push('cadcut');\r\n }\r\n\r\n if (service.isGeneralValid(groupName)) {\r\n methods.push('diy');\r\n }\r\n\r\n if (service.isTxValidForFulfillment(groupName)) {\r\n methods.push('tx');\r\n }\r\n\r\n return methods;\r\n }\r\n\r\n _metadataChanged (data) {\r\n var oldData = this._metadata,\r\n hash, i, len, oldHash;\r\n\r\n if (!oldData || oldData.length !== data.length) {\r\n return true;\r\n }\r\n\r\n len = oldData.length;\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n hash = data[i].metadata.cdl_hash;\r\n oldHash = oldData[i].metadata.cdl_hash;\r\n\r\n if (hash !== oldHash) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n _getVisibleFigures (figures) {\r\n var visible = [];\r\n\r\n figures.forEach(function (f) {\r\n if (!f.hidden) {\r\n visible.push(f);\r\n }\r\n });\r\n\r\n return visible;\r\n }\r\n\r\n _getDesignFiguresByPage () {\r\n return Application.designService.getDesignFiguresByPage();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getCdlHash (figures) {\r\n var cdl = Cx.toXmlString(figures),\r\n hash = 0, i, chr, cleanCdl;\r\n\r\n // Code url:\r\n // werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\r\n if (cdl.length === 0) {\r\n return hash;\r\n }\r\n\r\n // DxFigureId=\"...\" were breaking hash matching\r\n // remove all DxFigureId=\"...\" for consistent hashes\r\n cleanCdl = cdl.replace(/DxFigureId=\\\"\\S+\\\" */g, '');\r\n // Pin breaks hash matching\r\n cleanCdl = cleanCdl.replace(//g, '');\r\n\r\n for (i = 0; i < cleanCdl.length; i++) {\r\n chr = cleanCdl.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + chr;\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n\r\n return hash;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Cx.Figure[]} figures\r\n */\r\n _getCliparts (figures) {\r\n var names = [];\r\n\r\n figures.forEach(function (f) {\r\n var name = Meta.getOriginalClipartName(f);\r\n\r\n if (name) {\r\n names.push(name);\r\n }\r\n });\r\n\r\n return unique(names);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getColorData (figures) {\r\n var zones = Brush.uniqueBrushZones(figures),\r\n colors = [],\r\n colorDescriptions = [],\r\n materialDescriptions = [],\r\n materials = [];\r\n\r\n zones.forEach(function (z) {\r\n var data = Brush.decodeName(z.value);\r\n\r\n if (data) {\r\n colors.push(data.color);\r\n colorDescriptions.push(data.colorDescription);\r\n materials.push(data.material);\r\n materialDescriptions.push(data.materialDescription);\r\n }\r\n });\r\n\r\n return {\r\n colors: this._processColorDataArray(colors),\r\n colorDescriptions: this._processColorDataArray(colorDescriptions),\r\n materials: this._processColorDataArray(materials),\r\n materialDescriptions: this._processColorDataArray(materialDescriptions)\r\n };\r\n }\r\n\r\n _processColorDataArray (a) {\r\n var len = a.length;\r\n return len == 0 ? '' : (len == 1 ? a[0] : a);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getDesignSize (figures) {\r\n var size = Figure.getSize(figures);\r\n\r\n return {\r\n height: this._toInch(size.height),\r\n width: this._toInch(size.width)\r\n };\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _toInch (mmValue) {\r\n var value = mmValue / 25.4;\r\n return parseFloat(value.toFixed(2));\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getOriginalTemplate (figures) {\r\n var names = [];\r\n\r\n figures.forEach(function (f) {\r\n var name = Meta.getOriginalTemplateName(f);\r\n\r\n if (name) {\r\n names.push(name);\r\n }\r\n });\r\n\r\n names = unique(names);\r\n\r\n if (names.length > 0) {\r\n return names[0];\r\n }\r\n\r\n return 'Custom';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getText (figures) {\r\n var canvas = this._canvas,\r\n text = [];\r\n\r\n figures.forEach(function (f) {\r\n if (canvas.is(f, 'text', '!multiPartText')) {\r\n text.push(f.text);\r\n }\r\n\r\n else if (canvas.is(f, 'monogram')) {\r\n text.push(f.line);\r\n }\r\n });\r\n\r\n return text;\r\n }\r\n\r\n}\r\n","import StoreManager from 'smp-simple-components/src/StoreManager.js';\r\nimport Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nimport CadworxLiveAPI from '../../api/CadworxLiveAPI.js';\r\nimport Brush from '../../helper/Brush.js';\r\nimport Color from '../../helper/Color.js';\r\n\r\nexport default class CxBrushesStore extends Store {\r\n\r\n /**\r\n * Private.\r\n * @param {String} paletteName\r\n */\r\n _doLoad (paletteName) {\r\n var me = this;\r\n\r\n me._palettes = {};\r\n\r\n CadworxLiveAPI.enumColors$(paletteName).then(\r\n // Success\r\n function (response) {\r\n if (response) {\r\n me._onLoadComplete(response);\r\n } else {\r\n me._onLoadFailed();\r\n }\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n }\r\n\r\n _processResponseItem (item) {\r\n var argb = item.Value,\r\n alpha = +(parseInt(argb.substring(0, 2), 16) / 255).toFixed(2),\r\n rgb = argb.substring(2, 8).toUpperCase(),\r\n name = item.Name || 'No name',\r\n color = Cx.Color({\r\n alpha: alpha,\r\n cmyk: null,\r\n name: name,\r\n owner: {}, // Preserve ownership\r\n rgb: rgb\r\n }),\r\n size = 45;\r\n\r\n return {\r\n Brush: Brush.fromColor(color),\r\n Id: StoreManager.id(),\r\n Name: name,\r\n ThumbStyle: Color.getThumbStyle(color, {\r\n asString: true,\r\n height: size,\r\n width: size\r\n })\r\n };\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nimport CadworxLiveAPI from '../../api/CadworxLiveAPI.js';\r\nimport CxBrushesStore from './CxBrushesStore.js'\r\n\r\nexport default class CxPalettesStore extends Store {\r\n\r\n /**\r\n * Public.\r\n * Return clone so ViewModel binding works properly.\r\n * When ViewModel is passed 'this._palettes' the value never updates as value === oldValue.\r\n */\r\n palettes () {\r\n var p = this._palettes || {};\r\n return Object.assign({}, p);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n load () {\r\n if (!(this.isLoaded() || this.isLoading())) {\r\n super.load();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _doLoad () {\r\n var me = this;\r\n\r\n me._palettes = {};\r\n\r\n CadworxLiveAPI.enumPalettes$().then(\r\n // Success\r\n function (response) {\r\n if (response) {\r\n me._onLoadComplete(response);\r\n } else {\r\n me._onLoadFailed();\r\n }\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var name = item.Name,\r\n store = new CxBrushesStore();\r\n\r\n store.load(name);\r\n this._palettes[name] = store;\r\n\r\n return {\r\n Name: name\r\n };\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store';\r\nimport CmeAPI from '../../api/CmeAPI.js';\r\nimport Brush from '../../helper/Brush.js';\r\nimport Color from '../../helper/Color.js';\r\n\r\nexport default class CmePalettesStore extends Store {\r\n\r\n /**\r\n * Public.\r\n * Return clone so ViewModel binding works properly.\r\n * When ViewModel is passed 'this._palettes' the value never updates as value === oldValue.\r\n */\r\n palettes () {\r\n var p = this._palettes || {};\r\n return Object.assign({}, p);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n load () {\r\n // Only load once.\r\n if (!this.isLoaded()) {\r\n super.load();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _doLoad () {\r\n var me = this;\r\n\r\n me._palettes = {};\r\n\r\n CmeAPI.materials$().then(\r\n // Success\r\n function (response) {\r\n if (response) {\r\n me._onLoadComplete(response);\r\n } else {\r\n me._onLoadFailed();\r\n }\r\n },\r\n // Fail\r\n function () {\r\n me._onLoadFailed(arguments);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var material = item.material,\r\n materialDesc = item.materialDescription,\r\n colors = this._processMaterialColors(material, materialDesc, item.colors),\r\n store = new Store();\r\n\r\n store.loadData(colors);\r\n this._palettes[materialDesc] = store;\r\n\r\n return {\r\n Colors: colors,\r\n Material: material,\r\n Name: materialDesc,\r\n Width: item.width\r\n };\r\n }\r\n\r\n _processMaterialColors (material, materialDesc, colors) {\r\n var me = this,\r\n data = [];\r\n\r\n colors.forEach(function (item) {\r\n data.push(me._processMaterialColorItem(material, materialDesc, item));\r\n });\r\n\r\n return data;\r\n }\r\n\r\n _processMaterialColorItem (material, materialDesc, data) {\r\n var colorDesc = data.colorDescription,\r\n colorNumber = data.color,\r\n hex = data.hex,\r\n color = new Cx.Color({\r\n cmyk: null,\r\n name: colorDesc,\r\n owner: {}, // Preserve ownership\r\n rgb: hex\r\n });\r\n\r\n Brush.encodeName(color, material, materialDesc, colorNumber, colorDesc);\r\n\r\n return {\r\n Brush: Brush.fromColor(color),\r\n Id: colorNumber,\r\n Name: colorDesc,\r\n ThumbStyle: this._getThumbStyle(color)\r\n };\r\n }\r\n\r\n _getThumbStyle (color) {\r\n var size = 45,\r\n docId = Application.paletteService.cmeTextureId(color),\r\n url;\r\n\r\n if (docId) {\r\n url = CmeAPI.getDocThumb({ Id: docId }, { height: size, width: size });\r\n return 'background-image: url(' + url + '); height: ' + size + 'px; width: ' + size + 'px';\r\n }\r\n\r\n return Color.getThumbStyle(color, { asString: true, height: size, width: size });\r\n }\r\n\r\n}\r\n","import CmeAPI from '../api/CmeAPI.js';\r\nimport Brush from '../helper/Brush.js';\r\n\r\nexport default class CmeTextures {\r\n\r\n constructor () {\r\n this._loadedLookup = {};\r\n this._lookup = {};\r\n }\r\n\r\n /**\r\n * Public.\r\n * Call at start up.\r\n */\r\n load$ () {\r\n var me = this;\r\n\r\n return CmeAPI.searchTextures$().then(function (textures) {\r\n // textures => { 'Glitter Flake': { 'Red': {GUID}, ... }, ... }\r\n me._lookup = textures;\r\n return Cx.resolve(textures);\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Brush} brush\r\n * @return {Cx.TextureBrush} A texture brush if found.\r\n */\r\n texture$ (brush) {\r\n var me = this,\r\n textures = me._lookup,\r\n data = Brush.decodeName(brush),\r\n colorDesc = data ? data.colorDescription : undefined,\r\n materialDesc = data ? data.materialDescription : undefined,\r\n material = textures ? textures[materialDesc] : undefined,\r\n docId = material ? material[colorDesc] : undefined,\r\n textureBrush;\r\n\r\n if (docId && materialDesc && colorDesc) {\r\n textureBrush = me._findLoadedTexture(materialDesc, colorDesc);\r\n\r\n if (textureBrush) {\r\n return Cx.resolve(textureBrush);\r\n } else {\r\n return CmeAPI.loadTexture$(docId).then(function (textureBrush) {\r\n textureBrush.name = brush.name;\r\n me._saveLoadedTexture(materialDesc, colorDesc, textureBrush);\r\n return Cx.resolve(textureBrush);\r\n });\r\n }\r\n } else {\r\n return Cx.resolve(undefined);\r\n }\r\n }\r\n\r\n /**\r\n * @param {Cx.Brush} brush\r\n * @return {String} The texture brushes document id.\r\n */\r\n textureId (brush) {\r\n var textures = this._lookup,\r\n colorDesc, data, material, materialDesc;\r\n\r\n if (textures) {\r\n data = Brush.decodeName(brush);\r\n colorDesc = data ? data.colorDescription : undefined;\r\n materialDesc = data ? data.materialDescription : undefined;\r\n material = materialDesc ? textures[materialDesc] : undefined;\r\n }\r\n\r\n return colorDesc && material ? material[colorDesc] : undefined;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} materialDesc\r\n * @param {String} colorDesc\r\n * @param {Cx.Brush} brush\r\n */\r\n _saveLoadedTexture (materialDesc, colorDesc, brush) {\r\n var loaded = this._loadedLookup,\r\n materials;\r\n\r\n materials = loaded[materialDesc];\r\n\r\n if (!materials) {\r\n materials = loaded[materialDesc] = {};\r\n }\r\n\r\n // { 'Glitter Flake': { 'Red': {Cx.TextureBrush}, ... }, ... }\r\n materials[colorDesc] = brush;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} materialDesc\r\n * @param {String} colorDesc\r\n */\r\n _findLoadedTexture (materialDesc, colorDesc) {\r\n var loaded = this._loadedLookup,\r\n material = loaded ? loaded[materialDesc] : undefined;\r\n\r\n return material ? material[colorDesc] : undefined;\r\n }\r\n\r\n}\r\n","import StoreManager from 'smp-simple-components/src/StoreManager.js';\r\nimport Model from 'smp-simple-components/src/data/Model';\r\nimport Brush from '../../helper/Brush.js';\r\nimport Color from '../../helper/Color.js';\r\nimport TxColor from '../../helper/TxColor.js';\r\n\r\nexport default class TxBrushModel extends Model {\r\n\r\n /**\r\n * Private.\r\n * Override.\r\n * @param {Object} data\r\n */\r\n _processData (data) {\r\n var txColor = TxColor.parseTxColorData(data),\r\n color = TxColor.toCxColor(txColor),\r\n size = 45;\r\n\r\n return {\r\n Brush: Brush.fromColor(color),\r\n GroupKey: txColor.GroupKey,\r\n GroupName: txColor.GroupName,\r\n Id: StoreManager.id(),\r\n Name: name,\r\n ThumbStyle: Color.getThumbStyle(color, {\r\n asString: true,\r\n height: size,\r\n width: size\r\n })\r\n };\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nimport TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\nimport TxBrushModel from '../model/TxBrushModel.js';\r\nimport TxAssetsStore from './TxAssetsStore.js';\r\n\r\nexport default class TxPalettesStore extends TxAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n model: TxBrushModel,\r\n searchFn$: TransferExpressAPI.loadColors$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Public.\r\n * Return clone so ViewModel binding works properly.\r\n * When ViewModel is passed 'this._palettes' the value never updates as value === oldValue.\r\n */\r\n palettes () {\r\n var p = this._palettes || {};\r\n return Object.assign({}, p);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} options Ex: { Substrate: '...', TransferType: '...' }\r\n */\r\n load (options) {\r\n options = options || {};\r\n\r\n var me = this,\r\n currOpts = me._currentLoadOptions,\r\n substrate = options.Substrate,\r\n transferType = options.TransferType,\r\n alreadyLoaded;\r\n\r\n // Require a search option\r\n if (substrate || transferType) {\r\n alreadyLoaded = me.isLoaded() && currOpts.Substrate == substrate && currOpts.TransferType == transferType;\r\n\r\n // Already loaded?\r\n if (!alreadyLoaded) {\r\n me._isLoading = true;\r\n me._currentLoadOptions = options;\r\n me._emitBeforeLoad();\r\n me._palettes = {};\r\n me._doLoad(options);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} data\r\n */\r\n createRecord (data) {\r\n var record = super.createRecord(data);\r\n this._addToPalette(record);\r\n return record;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Model} record\r\n */\r\n _addToPalette (record) {\r\n var me = this,\r\n groupName = record.get('GroupName');\r\n\r\n if (!me._palettes[groupName]) {\r\n me._palettes[groupName] = new Store();\r\n }\r\n\r\n me._palettes[groupName].add(record.getData());\r\n }\r\n\r\n}\r\n","import TransferExpressAPI from '../../api/TransferExpressAPI.js';\r\nimport TxAssetsStore from './TxAssetsStore.js';\r\n\r\nexport default class TxProductTypesStore extends TxAssetsStore {\r\n\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n searchFn$: TransferExpressAPI.loadProductTypes$\r\n });\r\n\r\n super(config);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getDefault () {\r\n var me = this;\r\n\r\n if (me.isLoaded()) {\r\n return me._getDefault();\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getDefault () {\r\n return this._findRecord('IsDefault', true);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} property\r\n * @param {Mixed} value\r\n */\r\n _findRecord (property, value) {\r\n var records = this.getRecords(),\r\n len = records.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (records[i].get(property) == value) {\r\n return records[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} name\r\n */\r\n setActive (name) {\r\n var me = this,\r\n record = me._findRecord('Name', name);\r\n\r\n if (record) {\r\n me._activeRecord = record;\r\n me._activeTransferType = undefined;\r\n me._emit('activechange', me, record);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getActive () {\r\n return this._activeRecord || this.getDefault();\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Model[]} records\r\n */\r\n _emitLoad (records) {\r\n var me = this,\r\n record = me._getDefault(records);\r\n\r\n if (record) {\r\n me.setActive(record.get('Name'));\r\n }\r\n\r\n super._emitLoad(records);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var name = item.Name;\r\n\r\n return {\r\n Id: name,\r\n IsDefault: item.IsDefault,\r\n IsSubstrate: item.IsSubstrate,\r\n Name: name,\r\n TransferTypes: item.TransferTypes\r\n };\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nexport default class TxTransferTypesStore extends Store {\r\n\r\n /**\r\n * @param {TxProductTypesStore} productTypesStore\r\n */\r\n constructor (productTypesStore) {\r\n super();\r\n\r\n var me = this;\r\n\r\n me._productTypesStore = productTypesStore;\r\n me._bindProductTypesStore();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getDefault () {\r\n var me = this;\r\n\r\n if (me.isLoaded()) {\r\n return me._getDefault();\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Model[]} records\r\n */\r\n _getDefault (records) {\r\n return this._findRecord('IsDefault', true, records);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} property\r\n * @param {Mixed} value\r\n * @param {Model[]} records\r\n */\r\n _findRecord (property, value, records) {\r\n records = records || this.getRecords();\r\n\r\n var len = records.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (records[i].get(property) == value) {\r\n return records[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} name\r\n */\r\n setActive (name) {\r\n var me = this,\r\n record = me._findRecord('Name', name);\r\n\r\n if (record) {\r\n me._activeRecord = record;\r\n me._activeTransferType = undefined;\r\n }\r\n\r\n return record;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getActive () {\r\n return this._activeRecord || this.getDefault();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _bindProductTypesStore () {\r\n var me = this,\r\n store = me._productTypesStore;;\r\n\r\n me._boundOnProductTypeChange = me._onProductTypeChange.bind(me);\r\n store.on('activechange', me._boundOnProductTypeChange);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onProductTypeChange (store, record) {\r\n var me = this,\r\n transferTypes = record.get('TransferTypes');\r\n\r\n me.loadData(transferTypes);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Model[]} records\r\n */\r\n _emitLoad (records) {\r\n var me = this,\r\n record = me._getDefault(records);\r\n\r\n if (record) {\r\n me.setActive(record.get('Name'));\r\n }\r\n\r\n super._emitLoad(records);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _processResponseItem (item) {\r\n var name = item.Name;\r\n\r\n return {\r\n Id: name,\r\n IsDefault: item.IsDefault,\r\n IsSubstrate: item.IsSubstrate,\r\n Name: name\r\n };\r\n }\r\n\r\n}\r\n","import CxPalettesStore from '../cadworx/store/CxPalettesStore.js';\r\nimport CmePalettesStore from '../cme/store/CmePalettesStore.js';\r\nimport CmeTextures from '../cme/CmeTextures.js';\r\nimport TxPalettesStore from '../transferExpress/store/TxPalettesStore.js';\r\nimport TxProductTypesStore from '../transferExpress/store/TxProductTypesStore.js';\r\nimport TxTransferTypesStore from '../transferExpress/store/TxTransferTypesStore.js';\r\nimport BaseService from './BaseService.js';\r\n\r\nexport default class PaletteService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n\r\n Application.onReady(this._onApplicationReady.bind(this));\r\n }\r\n\r\n _onApplicationReady () {\r\n var me = this;\r\n\r\n me._initStores();\r\n me._initActiveStore();\r\n me._onIsReady();\r\n }\r\n\r\n _initStores () {\r\n var me = this;\r\n\r\n me._initCadworxStores();\r\n me._initCmeStores();\r\n me._initTxStores();\r\n }\r\n\r\n _initCadworxStores () {\r\n var me = this,\r\n store = me._cadworxStore = new CxPalettesStore();\r\n\r\n store.on('load', me._onCadworxsStoreLoad.bind(me));\r\n }\r\n\r\n _initCmeStores () {\r\n var me = this,\r\n store = me._cmeStore = new CmePalettesStore(),\r\n textures = me._cmeTextures = new CmeTextures();\r\n\r\n store.on('load', me._onCmeMaterialsStoreLoad.bind(me));\r\n // Ensure textures are loaded first\r\n textures.load$().then(function () {\r\n store.load();\r\n });\r\n }\r\n\r\n _initTxStores () {\r\n var me = this,\r\n store = me._txStore = new TxPalettesStore(),\r\n productTypesStore = me._txProductTypesStore = new TxProductTypesStore();\r\n\r\n store.on('load', me._onTxStoreLoad.bind(me));\r\n productTypesStore.load();\r\n me._txTransferTypesStore = new TxTransferTypesStore(productTypesStore);\r\n }\r\n\r\n _initActiveStore () {\r\n this.setCadworxActive();\r\n }\r\n\r\n //\r\n // PUBLIC METHODS\r\n //\r\n\r\n getSources () {\r\n return [\r\n { Id: 'cadworx', Name: 'Cadworx Live' },\r\n { Id: 'cme', Name: 'CAD-CUT Templates' },\r\n { Id: 'tx', Name: 'Transfer Express' }\r\n ];\r\n }\r\n\r\n getActiveSource () {\r\n var me = this;\r\n\r\n if (me.isCadworxActive()) {\r\n return 'cadworx';\r\n }\r\n\r\n if (me.isCmeActive()) {\r\n return 'cme';\r\n }\r\n\r\n if (me.isTransferExpressActive()) {\r\n return 'tx';\r\n }\r\n }\r\n\r\n setSource (id) {\r\n var me = this;\r\n\r\n if (id === 'cadworx') {\r\n me.setCadworxActive();\r\n } else if (id === 'cme') {\r\n me.setCmeActive();\r\n } else if (id === 'tx') {\r\n me.setTransferExpressActive();\r\n }\r\n }\r\n\r\n //\r\n // WHAT IS ACTIVE?\r\n //\r\n\r\n isCadworxActive () {\r\n return (this._activeStore === this._cadworxStore);\r\n }\r\n\r\n isCmeActive () {\r\n return (this._activeStore === this._cmeStore);\r\n }\r\n\r\n isImportedActive () {\r\n return false;\r\n }\r\n\r\n isTransferExpressActive () {\r\n return this._activeStore === this._txStore;\r\n }\r\n\r\n //\r\n // CHANGE WHAT IS ACTIVE\r\n //\r\n\r\n setCadworxActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._cadworxStore;\r\n me._onChange();\r\n }\r\n\r\n setCmeActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._cmeStore;\r\n me._onChange();\r\n }\r\n\r\n setTransferExpressActive () {\r\n var me = this;\r\n\r\n me._activeStore = me._txStore;\r\n me._onChange();\r\n }\r\n\r\n //\r\n // ACTIVE STORE\r\n //\r\n\r\n palettes () {\r\n var me = this;\r\n\r\n if (me.isCadworxActive()) {\r\n return me._cadworxStore.palettes();\r\n }\r\n\r\n if (me.isCmeActive()) {\r\n return me._cmeStore.palettes();\r\n }\r\n\r\n if (me.isTransferExpressActive()) {\r\n return me._txStore.palettes();\r\n }\r\n }\r\n\r\n store () {\r\n return this._activeStore;\r\n }\r\n\r\n //\r\n // STORES\r\n //\r\n\r\n cadworxStore () {\r\n return this._cadworxStore;\r\n }\r\n\r\n cmeStore () {\r\n return this._cmeStore;\r\n }\r\n\r\n /**\r\n * @param {Cx.Brush} brush\r\n */\r\n cmeTexture$ (brush) {\r\n return this._cmeTextures.texture$(brush);\r\n }\r\n\r\n cmeTextureId (brush) {\r\n return this._cmeTextures.textureId(brush);\r\n }\r\n\r\n transferExpressStore () {\r\n return this._txStore;\r\n }\r\n\r\n txProductTypesStore () {\r\n return this._txProductTypesStore;\r\n }\r\n\r\n txTransferTypesStore () {\r\n return this._txTransferTypesStore;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} name\r\n */\r\n txSetActiveTransferType (name) {\r\n var me = this,\r\n record = me._txTransferTypesStore.setActive(name),\r\n isSubstrate;\r\n\r\n if (record) {\r\n isSubstrate = record.get('IsSubstrate');\r\n\r\n me._txStore.load({\r\n TransferType: isSubstrate ? '' : name,\r\n Substrate: isSubstrate ? name : ''\r\n });\r\n }\r\n }\r\n\r\n //\r\n // STORE LOAD\r\n //\r\n\r\n /**\r\n * Public.\r\n */\r\n load () {\r\n var me = this;\r\n\r\n if (me.isCadworxActive()) {\r\n me._loadCadworx();\r\n }\r\n\r\n else if (me.isCmeActive()) {\r\n me._loadCme();\r\n }\r\n\r\n else if (me.isTransferExpressActive()) {\r\n // Do nothing.\r\n // Load happens via TxTransferTypesField calling txSetActiveTransferType().\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _loadCadworx () {\r\n this._cadworxStore.load();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _loadCme () {\r\n this._cmeStore.load();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCadworxsStoreLoad () {\r\n var me = this;\r\n\r\n if (me.isCadworxActive()) {\r\n me._onChange();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCmeMaterialsStoreLoad () {\r\n var me = this;\r\n\r\n if (me.isCmeActive()) {\r\n me._onChange();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onTxStoreLoad () {\r\n var me = this;\r\n\r\n if (me.isTransferExpressActive()) {\r\n me._onChange();\r\n }\r\n }\r\n\r\n}\r\n","export default class Product {\r\n\r\n /**\r\n * Public Properties\r\n * {Boolean} allowAllHexColors\r\n * {Object[]} artworkTags\r\n * {GUID} backgroundDocId\r\n * {Object[]} colors\r\n * {Object[]} colorTags\r\n * {GUID} designDocId\r\n * {Object[]} fontTags\r\n * {Boolean} hasMaxColors\r\n * {Number} maxColors\r\n * {Boolean} showColors\r\n * {Boolean} showSizes\r\n * {Object[]} sizes\r\n * {Object[]} textureTags\r\n * {Object[]} variants\r\n * {Object[]} views\r\n */\r\n\r\n /**\r\n * @param {Object} data\r\n * @param {Object} customizations Optional overide of the product's customizations.\r\n */\r\n constructor (data, customizations) {\r\n data = data || {};\r\n customizations = customizations || (data.customizations && data.customizations.length > 0 ? data.customizations[0] : {});\r\n\r\n var me = this;\r\n\r\n me._customizations = customizations;\r\n me._data = data;\r\n\r\n var maxColors = parseInt(customizations.max_layers),\r\n hasMaxColors = !isNaN(maxColors);\r\n\r\n me.allowAddingEffects = customizations.allow_adding_effects;\r\n me.allowAllHexColors = customizations.allow_all_hex_colors;\r\n // me.allowCadworxLiveLibrary = customizations.allow_cadworxlive_library;\r\n me.allowChangeableAspectRatio = customizations.allow_not_proportionally_resize;\r\n me.allowEditTextDirection = customizations.allow_edit_text_direction;\r\n me.allowEditTextPen = customizations.allow_edit_text_pen;\r\n me.allowEditTextSpacing = customizations.allow_edit_text_spacing;\r\n me.allowDraw = customizations.backend_allow_draw;\r\n me.allowShape = customizations.backend_allow_shape;\r\n // me.allowDynamicTexts = customizations.frontend_allow_dynamic_texts;\r\n me.allowPositionFigures = customizations.allow_position_figures;\r\n me.code = customizations.code;\r\n me.frontendAllowModifyDesign = customizations.frontend_allow_modify_design;\r\n me.frontEndAutoHideBottomToolbar = customizations.frontend_auto_hide_bottom_toolbar;\r\n me.frontEndAutoHideTopToolbar = customizations.frontend_auto_hide_top_toolbar;\r\n me.frontEndShowTopToolbar = customizations.frontend_show_top_toolbar;\r\n me.showObjectMenu = customizations.show_object_menu;\r\n\r\n // Will be null / empty string, or a number, if this is present,\r\n // we limit the amount of colors we allow the user to use in the\r\n // designer and show an error message to them if they want to use\r\n // more colors than the available in the variable.\r\n me.hasMaxColors = hasMaxColors;\r\n me.maxColors = me.hasMaxColors ? maxColors : undefined;\r\n\r\n me.backgroundDocId = data.cadx_background_document_id;\r\n me.designDocId = data.cadx_design_document_id;\r\n\r\n me.templateTags = me._parseTags(customizations.templates, 'Doc');\r\n me.artworkTags = me._parseTags(customizations.artworks, 'Doc');\r\n me.colorTags = me._parseTags(customizations.colors, 'Color');\r\n me.fontTags = me._parseTags(customizations.fonts, 'Font');\r\n me.textureTags = me._parseTextureTags(customizations.textures);\r\n\r\n me._parseOptionTypes();\r\n me._parseOptionValues();\r\n me._parseSelectedOptionTypes();\r\n me._parseViews();\r\n me._parseVariants();\r\n }\r\n\r\n _parseOptionTypes () {\r\n var me = this,\r\n types = me._data.option_types || [],\r\n data = [],\r\n itemData, name;\r\n\r\n types.forEach(function (item) {\r\n itemData = {\r\n DisplayName: item.presentation,\r\n Id: item.id,\r\n Name: item.name,\r\n Position: item.position\r\n };\r\n name = item.name.toLowerCase();\r\n\r\n data.push(itemData);\r\n\r\n if (name === 'color') {\r\n me._colorOptionType = itemData;\r\n }\r\n\r\n else if (name === 'size') {\r\n me._sizeOptionType = itemData;\r\n }\r\n });\r\n\r\n me._optionTypes = data;\r\n }\r\n\r\n _parseSelectedOptionTypes () {\r\n var me = this,\r\n colorType = me._colorOptionType,\r\n sizeType = me._sizeOptionType,\r\n selectedTypes = me._data.selected_option_types || [];\r\n\r\n me.showColors = false;\r\n me.showSizes = false;\r\n\r\n selectedTypes.forEach(function (id) {\r\n // Color?\r\n if (colorType && id === colorType.Id) {\r\n me.showColors = true;\r\n }\r\n\r\n // Size?\r\n else if (sizeType && id === sizeType.Id) {\r\n me.showSizes = true;\r\n }\r\n });\r\n }\r\n\r\n _parseOptionValues () {\r\n var me = this,\r\n values = me._data.option_values || [];\r\n\r\n me.colors = [];\r\n me.sizes = [];\r\n\r\n values.forEach(function (item) {\r\n // Color?\r\n if (me._colorOptionType && item.id === me._colorOptionType.Id) {\r\n me.colors = me._parseColorOptionValues(item.values);\r\n }\r\n\r\n // Size?\r\n else if (me._sizeOptionType && item.id === me._sizeOptionType.Id) {\r\n me.sizes = me._parseSizeOptionValues(item.values);\r\n }\r\n });\r\n }\r\n\r\n _parseColorOptionValues (values) {\r\n var me = this,\r\n data = [];\r\n\r\n values.forEach(function (item) {\r\n data.push(me._parseColorData(item));\r\n });\r\n\r\n return me.sortColorsByPosition(data);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Array} colors\r\n */\r\n sortColorsByPosition (colors) {\r\n if (colors.length > 0 && !isNaN(colors[0].Position)) {\r\n return colors.sort(function (a, b) {\r\n return a.Position - b.Position;\r\n });\r\n }\r\n\r\n return colors;\r\n }\r\n\r\n _parseColorData (data) {\r\n var name = data.name,\r\n presentation = data.presentation,\r\n isHex = presentation != null && presentation[0] == '#',\r\n hex = '',\r\n thumb = null;\r\n\r\n if (isHex) {\r\n hex = presentation.replace('#', '');\r\n thumb = 'background-color: #' + hex;\r\n } else {\r\n thumb = 'background-image: url(' + presentation + ')';\r\n }\r\n\r\n return {\r\n Hex: hex,\r\n Id: data.id,\r\n IsHex: isHex,\r\n Name: name,\r\n Position: data.position,\r\n Presentation: presentation,\r\n ThumbStyle: thumb\r\n }\r\n }\r\n\r\n _parseSizeOptionValues (values) {\r\n var data = [];\r\n\r\n values.forEach(function (item) {\r\n data.push({\r\n DisplayName: item.presentation,\r\n Id: item.id,\r\n Name: item.name\r\n });\r\n });\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object[]} tags\r\n * @param {String} type\r\n */\r\n _parseTags (tags, type) {\r\n tags = tags || [];\r\n\r\n var data = [];\r\n\r\n tags.forEach(function (item) {\r\n data.push({\r\n Id: item.id,\r\n Name: item.name,\r\n Type: type\r\n });\r\n });\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object[]} tags\r\n */\r\n _parseTextureTags (tags) {\r\n tags = tags || [];\r\n\r\n var data = [];\r\n\r\n tags.forEach(function (item) {\r\n data.push({\r\n Id: item.id,\r\n MaterialCode: item.material_code,\r\n Name: item.name,\r\n Type: 'Brush',\r\n Width: item.width\r\n });\r\n });\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} property\r\n * @param {Mixed} value\r\n */\r\n findTextureTag (property, value) {\r\n var tags = this.textureTags,\r\n len = tags.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (tags[i][property] == value) {\r\n return tags[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _parseViews () {\r\n var views = this._data.product_view_types || [],\r\n data = [];\r\n\r\n views.forEach(function (item) {\r\n data.push({\r\n Id: item.id,\r\n Name: item.view_type_name\r\n });\r\n });\r\n\r\n this.views = data;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _parseVariants () {\r\n var me = this,\r\n variants = me._data.variants || [],\r\n data = [],\r\n optionsValues;\r\n\r\n variants.forEach(function (item) {\r\n optionsValues = me._parseVariantOptionValues(item.option_values);\r\n\r\n data.push({\r\n Color: optionsValues.color,\r\n Designs: me._parseVariantDesigns(item.designs),\r\n Id: item.id,\r\n Images: me._parseVariantImages(item.images),\r\n Name: item.options_text,\r\n Size: optionsValues.size\r\n });\r\n });\r\n\r\n me.variants = data;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _parseVariantDesigns (designs) {\r\n designs = designs || [];\r\n\r\n var me = this,\r\n designDocId = me.designDocId,\r\n data = [];\r\n\r\n me._designsCache = me._designsCache || [me.originalDesign()];\r\n\r\n designs.forEach(function (item) {\r\n var docId = item.document_id,\r\n o = {\r\n DocId: docId,\r\n Id: item.id,\r\n IsOriginal: docId === designDocId,\r\n Name: item.label\r\n };\r\n\r\n data.push(o);\r\n\r\n if (!me._findItem(me._designsCache, 'DocId', docId)) {\r\n me._designsCache.push(o);\r\n }\r\n });\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n designs () {\r\n return this._designsCache;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n originalDesign () {\r\n return {\r\n DocId: this.designDocId,\r\n IsOriginal: true,\r\n Name: 'Original'\r\n };\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} docId\r\n */\r\n idsOfVariantsUsingDesign (docId) {\r\n var me = this,\r\n ids = [];\r\n\r\n me.variants.forEach(function (v) {\r\n v.Designs.forEach(function (d) {\r\n if (d.DocId === docId) {\r\n ids.push(v.Id);\r\n }\r\n });\r\n });\r\n\r\n return ids;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} variant\r\n * @param {Object} data\r\n */\r\n addDesign (variant, data) {\r\n var design = {\r\n DocId: data.DocId,\r\n Id: undefined,\r\n IsOriginal: data.IsOriginal,\r\n Name: data.Name\r\n };\r\n\r\n this._designsCache.push(data);\r\n this.updateDesign(variant, data.DocId);\r\n\r\n return design;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} variant\r\n * @param {String} docId\r\n */\r\n updateDesign (variant, docId) {\r\n var design = this.findDesign(docId);\r\n\r\n this.variants.forEach(function (v) {\r\n if (v.Color.Id === variant.Color.Id) {\r\n // Only one design is allowed.\r\n // It is considered the active design.\r\n v.Designs[0] = design;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} docId\r\n */\r\n removeDesign (docId) {\r\n var me = this,\r\n originalDesign = me.originalDesign(),\r\n index = me._findItemIndex(me._designsCache, 'DocId', docId);\r\n\r\n if (index !== -1) {\r\n // Remove alternative design from the variant.\r\n me._designsCache.splice(index, 1);\r\n }\r\n\r\n me.variants.forEach(function (v) {\r\n var index = me._findItemIndex(v.Designs, 'DocId', docId);\r\n\r\n if (index !== -1) {\r\n // Remove alternative design from the variant.\r\n v.Designs.splice(index, 1);\r\n // Revert to original design for the variant.\r\n v.Designs[0] = originalDesign;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _parseVariantImages (images) {\r\n images = images || [];\r\n\r\n var data = [];\r\n\r\n images.forEach(function (item) {\r\n data.push({\r\n DocId: item.cadx_document_id,\r\n Id: item.id,\r\n ImageId: item.cadx_asset_id,\r\n Name: item.view_type_name\r\n });\r\n });\r\n\r\n return data;\r\n }\r\n\r\n _parseVariantOptionValues (values) {\r\n values = values || [];\r\n\r\n var me = this,\r\n color, size;\r\n\r\n values.forEach(function (item) {\r\n if (me._colorOptionType && item.option_type_id === me._colorOptionType.Id) {\r\n // Find the order position of the color\r\n var colorWithPosition = me.colors.find(function (c) {\r\n return c.Id === item.id;\r\n });\r\n\r\n if (colorWithPosition) {\r\n item = Object.assign({}, item, { position: colorWithPosition.Position });\r\n }\r\n\r\n color = me._parseColorData(item);\r\n }\r\n\r\n else if (me._sizeOptionType && item.option_type_id === me._sizeOptionType.Id) {\r\n size = {\r\n DisplayName: item.presentation,\r\n Id: item.id,\r\n Name: item.name\r\n };\r\n }\r\n });\r\n\r\n return {\r\n color: color,\r\n size: size\r\n };\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} docId\r\n */\r\n findDesign (docId) {\r\n var designs = this.designs();\r\n return this._findItem(designs, 'DocId', docId);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} id\r\n */\r\n findVariant (id) {\r\n return this._findItem(this.variants, 'Id', id);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} variant\r\n * @param {String} id The view id. (e.g. 'front')\r\n */\r\n findVariantImage (variant, id) {\r\n return this._findItem(variant.Images, 'Name', id);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} variant\r\n * @param {String} id The view id. (e.g. 'front')\r\n */\r\n findVariantImageLink (variant, id) {\r\n var image = this.findVariantImage(variant, id);\r\n return image ? image.ImageId : undefined;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id The view id. (e.g. 'front')\r\n * @param {String} imageLink\r\n */\r\n findVariantWithImageLink (id, imageLink) {\r\n var len = this.variants.length,\r\n i = 0,\r\n item, itemImageLink;\r\n\r\n for (; i < len; i++) {\r\n item = this.variants[i];\r\n itemImageLink = this.findVariantImageLink(item, id);\r\n\r\n if (itemImageLink === imageLink) {\r\n return item;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findVariantOfFirstPositionedColor () {\r\n var colors = this.sortColorsByPosition(this.colors);\r\n var firstColor = colors[0];\r\n\r\n if (firstColor && !isNaN(firstColor.Position)) {\r\n return this.variants.find(function (item) {\r\n return item.Color.Id === firstColor.Id;\r\n });\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object[]} items\r\n * @param {String} property\r\n * @param {Mixed} value\r\n */\r\n _findItem (items, property, value) {\r\n var len = items.length,\r\n i = 0,\r\n item;\r\n\r\n for (; i < len; i++) {\r\n item = items[i];\r\n\r\n if (item[property] == value) {\r\n return item;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object[]} items\r\n * @param {String} property\r\n * @param {Mixed} value\r\n */\r\n _findItemIndex (items, property, value) {\r\n var len = items.length,\r\n i = 0,\r\n item;\r\n\r\n for (; i < len; i++) {\r\n item = items[i];\r\n\r\n if (item[property] === value) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n}\r\n","import Store from 'smp-simple-components/src/data/Store.js';\r\n\r\nimport BaseService from './BaseService.js';\r\nimport RailsAPI from '../api/RailsAPI.js';\r\n// import VariantsStore from '../store/VariantsStore.js';\r\nimport Querystring from '../util/Querystring.js';\r\nimport Product from '../Product.js';\r\nimport Rules from '../Rules.js';\r\n\r\n/**\r\n * Provides product state management.\r\n * To handle product state changes.\r\n *\r\nApplication.productService.register(function () {\r\n // Do something...\r\n});\r\n */\r\nexport default class ProductService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n\r\n var me = this;\r\n\r\n me._colorsStore = new Store();\r\n me._sizesStore = new Store();\r\n // me._variantsStore = new VariantsStore();\r\n me._variantViewsStore = new Store();\r\n\r\n me._initProduct$().then(\r\n function () {\r\n me._onIsReady();\r\n }\r\n );\r\n }\r\n\r\n _initProduct$ () {\r\n var me = this,\r\n id = Querystring.productId();\r\n\r\n if (id) {\r\n return RailsAPI.getProduct$(id).then(\r\n // Success\r\n function (response) {\r\n return RailsAPI.getCustomizations$().then(\r\n // Success\r\n function (customizations) {\r\n var product = me._product = new Product(response, customizations);\r\n\r\n me._colorsStore.loadData(product.sortColorsByPosition(product.colors));\r\n me._showColors = product.showColors;\r\n me._sizesStore.loadData(product.sizes);\r\n me._showSizes = product.showSizes;\r\n // me._variantsStore.loadData(product.variants);\r\n me._variantViewsStore.loadData(product.views);\r\n\r\n return Cx.resolve();\r\n },\r\n // Fail\r\n function () {\r\n return Cx.resolve();\r\n }\r\n );\r\n },\r\n // Fail\r\n function () {\r\n return Cx.resolve();\r\n }\r\n );\r\n }\r\n\r\n else {\r\n return Cx.resolve();\r\n }\r\n }\r\n\r\n product () {\r\n return this._product;\r\n }\r\n\r\n canEditProduct () {\r\n return this._product ? true : false;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} docId\r\n */\r\n design (docId) {\r\n var variant = this.variant(),\r\n value = this._designValue();\r\n\r\n if (docId === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n if (!value || value.DocId !== docId) { // Set\r\n this._product.updateDesign(variant, docId);\r\n this._onChange();\r\n }\r\n }\r\n\r\n _designValue () {\r\n var editingOrder = Rules.canEditOrder(),\r\n showingQuote = Rules.canShowCustomerQuote();\r\n\r\n if (editingOrder || showingQuote) {\r\n return {\r\n DocId: Querystring.designDocId(),\r\n IsOriginal: true,\r\n Name: 'Original'\r\n };\r\n }\r\n\r\n var variant = this.variant();\r\n return variant ? variant.Designs[0] : undefined;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} data Ex: { DocId: '...', IsOriginal: false, Name: '...' }\r\n */\r\n addDesign (data) {\r\n var variant = this.variant();\r\n\r\n if (variant) {\r\n this._product.addDesign(variant, data);\r\n this._onChange();\r\n }\r\n }\r\n\r\n /**\r\n * @param {Number} id\r\n */\r\n removeDesign (id) {\r\n this._product.removeDesign(id);\r\n this._onChange();\r\n }\r\n\r\n /**\r\n * @param {Number} id (Optional)\r\n */\r\n variant (id) {\r\n var value = this._variant;\r\n\r\n if (id === undefined) { // Get?\r\n return value;\r\n }\r\n\r\n else { // Set\r\n id = parseInt(id);\r\n\r\n if (!value || value.Id !== id) {\r\n value = this._product.findVariant(id);\r\n\r\n if (value) {\r\n this._variant = value;\r\n this._syncColors();\r\n // Allow view to react to change\r\n this._onChange();\r\n // Application front end needs to setDynamicFields\r\n // We only care about the variant change from this service\r\n Application.setDynamicFieldsForFrontEndOnly();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Let the variant size drive what colors are available in the store.\r\n */\r\n _syncColors () {\r\n var product = this.product(),\r\n showSizes = product.showSizes,\r\n variant = this.variant(),\r\n added, colorId, colors,i, item, len, sizeId, variants;\r\n\r\n if (variant && variant.Size) {\r\n variants = product.variants;\r\n len = variants.length;\r\n i = 0;\r\n sizeId = variant.Size.Id;\r\n added = [];\r\n colors = [];\r\n\r\n for (; i < len; i++) {\r\n item = variants[i];\r\n colorId = item.Color ? item.Color.Id : undefined;\r\n\r\n // If not showing sizes, then show all colors\r\n // Else show all colors for the current size\r\n if (added.indexOf(colorId) === -1 && (!showSizes || (colorId && item.Size.Id === sizeId))) {\r\n colors.push(item.Color);\r\n added.push(colorId);\r\n }\r\n }\r\n\r\n this._colorsStore.loadData(product.sortColorsByPosition(colors));\r\n }\r\n }\r\n\r\n colorsStore () {\r\n return this._colorsStore;\r\n }\r\n\r\n showColors () {\r\n var records = this._colorsStore.getRecords();\r\n return this._showColors && records.length > 0;\r\n }\r\n\r\n sizesStore () {\r\n return this._sizesStore;\r\n }\r\n\r\n showSizes () {\r\n var records = this._sizesStore.getRecords();\r\n return this._showSizes && records.length > 0;\r\n }\r\n\r\n // variantsStore () {\r\n // return this._variantsStore;\r\n // }\r\n\r\n variantViewsStore () {\r\n return this._variantViewsStore;\r\n }\r\n\r\n}\r\n","import Background from '../helper/Background.js';\r\n\r\n/**\r\n * IE backward compatibility\r\n * If IE is detected we will set the showThrough color like we used to\r\n */\r\nexport default class ShowThroughService {\r\n\r\n constructor () {\r\n Application.onReady(this._onApplicationReady.bind(this));\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onApplicationReady () {\r\n this._canvas = Application.canvas();\r\n\r\n if (this._isIE()) {\r\n this._initFallback();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _isIE () {\r\n return window.navigator.userAgent.match(/(MSIE|Trident)/);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initFallback () {\r\n var me = this,\r\n handler = me._boundOnProductServiceChange;\r\n\r\n if (!handler) {\r\n handler = me._boundOnProductServiceChange = me._onProductServiceChange.bind(me);\r\n Application.productService.register(handler);\r\n me._syncShowThroughColor$();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onProductServiceChange () {\r\n var me = this,\r\n service = Application.productService,\r\n variant = service.variant(),\r\n id = variant ? variant.Id : undefined,\r\n oldVariant = me._variant,\r\n oldId = oldVariant ? oldVariant.Id : undefined;\r\n\r\n if (id && id !== oldId) {\r\n me._syncShowThroughColor$();\r\n me._variant = variant;\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _syncShowThroughColor$ () {\r\n var me = this;\r\n\r\n return me._getBgColor$().then(function () {\r\n var color = me._bgColor || Cx.Color({ rgb: 'FFFFFF' });\r\n me._setColor(color)\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getBgColor$ () {\r\n var me = this,\r\n raster = Background.findRaster(me._canvas);\r\n\r\n if (raster) {\r\n return raster.center$().then(function (center) {\r\n return Cx.colorAt$(raster, center).then(function (color) {\r\n me._bgColor = color;\r\n return Cx.resolve(color);\r\n });\r\n });\r\n } else {\r\n me._bgColor = undefined;\r\n return Cx.resolve();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Cx.Color} color\r\n */\r\n _setColor (color) {\r\n var canvas = this._canvas,\r\n newColor = color.clone();\r\n\r\n newColor.showThrough = true;\r\n\r\n if (canvas.showThroughColor.rgb != newColor.rgb) {\r\n canvas.showThroughColor = newColor;\r\n }\r\n }\r\n\r\n}\r\n","import Event from 'smp-simple-components/src/util/Event.js';\r\n\r\nexport default class ToolManager {\r\n\r\n constructor () {\r\n this._event = new Event();\r\n this._defaultBrush = Cx.Brush({ color: { alpha: 1, rgb: '000000' } });\r\n this._defaultPen = Cx.Pen({ color: { alpha: 0, rgb: '000000' }, width: 0 });\r\n this._nodeEditAlphaValue = 1;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Canvas} canvas\r\n */\r\n initCanvas (canvas) {\r\n this._canvas = canvas;\r\n\r\n this._boundOnCanvasToolChanged = this._onCanvasToolChanged.bind(this);\r\n canvas.on('toolchanged', this._boundOnCanvasToolChanged);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Brush} v\r\n */\r\n setDefaultBrush (v) {\r\n this._defaultBrush = v;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Pen} v\r\n */\r\n setDefaultPen (v) {\r\n this._defaultPen = v;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n destroy () {\r\n this._canvas.un('toolchanged', this._boundOnCanvasToolChanged);\r\n this._event.destroy();\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} label\r\n * @param {Function/String} callback\r\n */\r\n on (label, callback) {\r\n this._event.on(label, callback);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} label\r\n * @param {Function} callback\r\n */\r\n un (label, callback) {\r\n return this._event.un(label, callback);\r\n }\r\n\r\n _onChange () {\r\n this._event.emit('change', this);\r\n }\r\n\r\n _onCanvasToolChanged () {\r\n var me = this,\r\n tool = me._canvas.tool;\r\n\r\n if (tool) {\r\n me._alphaCondition = tool instanceof Cx.Tool.NodeEdit;\r\n me._alphaTarget = me._alphaCondition ? tool : undefined;\r\n\r\n me._brushCondition = tool.brush || tool instanceof Cx.Tool.Text;\r\n me._brushTarget = me._brushCondition ? tool : undefined;\r\n\r\n me._detectCornersCondition = tool instanceof Cx.Tool.FreeDraw;\r\n me._detectCornersTarget = tool;\r\n\r\n me._penCondition = tool.pen || tool instanceof Cx.Tool.Text;\r\n me._penTarget = me._penCondition ? tool : undefined;\r\n\r\n this._onChange();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n canvas () {\r\n return this._canvas;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n tool () {\r\n return this._canvas.tool;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n toolIsSelect () {\r\n var c = this._canvas;\r\n return c ? c.tool instanceof Cx.Tool.Select : false;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n nodeEditAlpha (v) {\r\n var value = this._nodeEditAlphaValue;\r\n\r\n if (v === undefined) { // Get?\r\n return value * 100;\r\n }\r\n\r\n else if (value !== v) { // Set\r\n v = v > 0 ? v / 100 : v;\r\n\r\n this._nodeEditAlphaValue = v;\r\n\r\n if (this.alphaCondition()) {\r\n this._alphaTarget.alpha = v;\r\n this._canvas.commit$();\r\n }\r\n\r\n this._onChange();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n alphaCondition () {\r\n return this._alphaCondition;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} v\r\n */\r\n brush (v) {\r\n var value = this._brush();\r\n\r\n if (v === undefined) { // Get?\r\n return { items: [value] };\r\n } else { // Set\r\n if (v.changes) {\r\n this._brushValue = v.changes.item;\r\n\r\n if (this.brushCondition()) {\r\n this._brushTarget.brush = this._brushValue;\r\n }\r\n\r\n this._onChange();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n brushCondition () {\r\n return this._brushCondition;\r\n }\r\n\r\n _brush () {\r\n var value = this._brushValue;\r\n\r\n if (value) {\r\n return value.clone();\r\n }\r\n\r\n return this._defaultBrush.clone();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n detectCorners (v) {\r\n var value = this._detectCorners();\r\n\r\n if (v === undefined) { // Get?\r\n return value;\r\n } else if (v !== value) { // Set\r\n this._detectCornersValue = v;\r\n this._detectCornersTarget.detectCorners = v;\r\n this._onChange();\r\n }\r\n }\r\n\r\n canEditDetectCorners () {\r\n return this._detectCornersCondition;\r\n }\r\n\r\n _detectCorners () {\r\n var value = this._detectCornersValue;\r\n\r\n if (typeof value === 'boolean') {\r\n return value;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} v\r\n */\r\n pen (v) {\r\n var value = this._pen();\r\n\r\n if (v === undefined) { // Get?\r\n return { items: [value] };\r\n } else { // Set\r\n if (v.changes) {\r\n this._penValue = v.changes.item;\r\n\r\n if (this.penCondition()) {\r\n this._penTarget.pen = this._penValue;\r\n }\r\n\r\n this._onChange();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n penCondition () {\r\n return this._penCondition;\r\n }\r\n\r\n _pen () {\r\n var value = this._penValue;\r\n\r\n if (value) {\r\n return value.clone();\r\n }\r\n\r\n return this._defaultPen.clone();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addDrawTool () {\r\n this._setTool(Cx.Tool.Draw({\r\n brush: this._brush(),\r\n pen: this._pen()\r\n }));\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addFreeDrawTool () {\r\n this._setTool(Cx.Tool.FreeDraw({\r\n brush: this._brush(),\r\n detectCorners: this._detectCorners(),\r\n pen: this._pen()\r\n }));\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addDrawEllipseTool () {\r\n this._setTool(Cx.Tool.DrawEllipse({\r\n brush: this._brush(),\r\n pen: this._pen()\r\n }));\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addDrawRectangleTool () {\r\n this._setTool(Cx.Tool.DrawRectangle({\r\n brush: this._brush(),\r\n pen: this._pen()\r\n }));\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Cx.Figure} figure\r\n */\r\n addNodeEditTool (figure) {\r\n var canvas = this.canvas();\r\n\r\n figure = figure || canvas.selectedFigures[0];\r\n\r\n canvas.tool = Cx.Tool.NodeEdit(figure, {\r\n alpha: this._nodeEditAlphaValue\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addPanTool () {\r\n this._setTool(Cx.Tool.Pan());\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addPowerClipTool () {\r\n this._setTool(Cx.Tool.PowerClip());\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n isPowerClipActive () {\r\n return (this.canvas().tool instanceof Cx.Tool.PowerClip);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addSelectTool () {\r\n this._setTool('Select');\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addTextTool () {\r\n this._setTool(Cx.Tool.Text({\r\n brush: this._brush(),\r\n pen: this._pen()\r\n }));\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n addZoomTool () {\r\n this._setTool(Cx.Tool.Zoom());\r\n }\r\n\r\n _setTool (tool) {\r\n this.canvas().tool = tool;\r\n }\r\n\r\n}\r\n","import BaseService from './BaseService.js';\r\nimport ToolManager from '../ToolManager.js';\r\n\r\nexport default class ToolService extends BaseService {\r\n\r\n constructor () {\r\n super();\r\n\r\n var me = this;\r\n me._mgr = new ToolManager();\r\n Application.onReady(me._onApplicationReady.bind(me));\r\n }\r\n\r\n _onApplicationReady () {\r\n var canvas = Application.canvas(),\r\n mgr = this._mgr;\r\n\r\n mgr.initCanvas(canvas);\r\n mgr.on('change', this._onChange.bind(this));\r\n }\r\n\r\n canvas () {\r\n return this._mgr.canvas();\r\n }\r\n\r\n tool () {\r\n return this._mgr.tool();\r\n }\r\n\r\n toolIsSelect () {\r\n return this._mgr.toolIsSelect();\r\n }\r\n\r\n nodeEditAlpha (v) {\r\n return this._mgr.nodeEditAlpha(v);\r\n }\r\n\r\n alphaCondition () {\r\n return this._mgr.alphaCondition();\r\n }\r\n\r\n brush (v) {\r\n return this._mgr.brush(v);\r\n }\r\n\r\n brushCondition () {\r\n return this._mgr.brushCondition();\r\n }\r\n\r\n detectCorners (v) {\r\n return this._mgr.detectCorners(v);\r\n }\r\n\r\n canEditDetectCorners () {\r\n return this._mgr.detectCornersCondition();\r\n }\r\n\r\n pen (v) {\r\n return this._mgr.pen(v);\r\n }\r\n\r\n penCondition () {\r\n return this._mgr.penCondition();\r\n }\r\n\r\n addDrawTool () {\r\n this._mgr.addDrawTool();\r\n }\r\n \r\n addFreeDrawTool () {\r\n this._mgr.addFreeDrawTool();\r\n }\r\n\r\n addDrawEllipseTool () {\r\n this._mgr.addDrawEllipseTool();\r\n }\r\n\r\n addDrawRectangleTool () {\r\n this._mgr.addDrawRectangleTool();\r\n }\r\n\r\n addNodeEditTool (figure) {\r\n this._mgr.addNodeEditTool(figure);\r\n }\r\n\r\n addPanTool () {\r\n this._mgr.addPanTool();\r\n }\r\n\r\n addPowerClipTool () {\r\n this._mgr.addPowerClipTool();\r\n }\r\n\r\n isPowerClipActive () {\r\n return this._mgr.isPowerClipActive();\r\n }\r\n\r\n addSelectTool () {\r\n this._mgr.addSelectTool();\r\n }\r\n\r\n addTextTool () {\r\n this._mgr.addTextTool();\r\n }\r\n\r\n addZoomTool () {\r\n this._mgr.addZoomTool();\r\n }\r\n\r\n}\r\n","import Cme from './Cme.js';\r\nimport CmeBrush from './CmeBrush.js';\r\nimport CmeClipArt from './CmeClipArt.js';\r\nimport Meta from './Meta.js';\r\nimport Brush from './Brush.js';\r\nimport Color from './Color.js';\r\n\r\nexport default class CmeWarning {\r\n\r\n static isCmeType (type) {\r\n return type.indexOf('CME_') !== -1;\r\n }\r\n\r\n //\r\n // CME ASSETS ONLY\r\n //\r\n\r\n static areAllCmeResult (figures) {\r\n var type = 'CME_ASSETS_ONLY';\r\n\r\n if (!CmeWarning.areAllCme(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'All design elements must be from CAD-CUT Templates to send to Stahls\\' from Stahls\\' Spirit Sale. Consider downloading the design and uploading it to the Stahls\\' Artwork Uploader',\r\n preventFulfillment: true,\r\n preventSave: false,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static areAllCme (figures) {\r\n return figures.length === 0 ? true : Meta.areCme(figures);\r\n }\r\n\r\n //\r\n // SINGLE COLOR TRANSFER GROUPS\r\n //\r\n\r\n static areSingleColorResult (figures) {\r\n var type = 'CME_SINGLE_COLOR';\r\n\r\n if (!CmeWarning.areSingleColor(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'This transfer has multiple colors but only single-color transfers can be sent to Stahls\\' from Stahls\\' Spirit Sale. Consider creating transfers that contain only a single color by selecting the design elements for a single color and clicking “Create a New Transfer.” You can also download the design and upload it to the Stahls\\' Artwork Uploader without splitting up the transfer',\r\n preventFulfillment: true,\r\n preventSave: false,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static areSingleColor (figures) {\r\n var brushZones = CmeBrush.uniqueBrushZones(figures),\r\n colorZones = Color.uniqueColorZones(figures, undefined, true);\r\n\r\n // Also check for brush types other than 'Brush'\r\n return (colorZones.length > 1 || brushZones.length > 1) ? false : true;\r\n }\r\n\r\n //\r\n // COLORS MUST BE IN PALETTE\r\n //\r\n\r\n static colorsAreInPaletteResult (figures) {\r\n var type = 'CME_COLORS_ARE_IN_PALETTE';\r\n\r\n if (!CmeWarning._colorsAreInPalette(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'This transfer has art with colors that are not in the CAD-CUT Templates palette',\r\n preventFulfillment: true,\r\n preventSave: false,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static _colorsAreInPalette (figures) {\r\n var zones = CmeBrush.uniqueBrushZones(figures);\r\n\r\n if (zones.length === 0) {\r\n return true;\r\n }\r\n\r\n return zones.find(function (z) {\r\n var brush = z.value,\r\n color = Brush.cmeDecodeColor(brush),\r\n material = Brush.cmeDecodeMaterial(brush);\r\n\r\n return color || material ? true : false;\r\n }) ? true : false;\r\n }\r\n\r\n //\r\n // CLIP ART MUST HAVE SHOWTHROUGH\r\n //\r\n\r\n static clipArtHasShowThroughResult (figures) {\r\n var type = 'CME_CLIP_ART_HAS_SHOW_THROUGH';\r\n\r\n if (!CmeWarning._clipArtHasShowThrough(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'This transfer has art that is missing it\\'s \"No Ink\" outline',\r\n preventFulfillment: true,\r\n preventSave: false,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static _clipArtHasShowThrough (figures) {\r\n var filtered = Cme.filterFigures(figures),\r\n clipart = Cme.getClipArtFigures(filtered),\r\n zones = Brush.uniqueBrushZones(clipart);\r\n\r\n if (zones.length === 0) {\r\n return true;\r\n }\r\n\r\n return zones.find(function (z) {\r\n return z.value.getType() === 'Brush' && z.value.color.showThrough === true;\r\n }) ? true : false;\r\n }\r\n\r\n //\r\n // LOW CONTRAST\r\n //\r\n\r\n static lowContrastClipArtResult (figures, bgHex) {\r\n var type = 'CME_LOW_CONTRAST',\r\n lowContrastFigure = bgHex ? CmeWarning._firstLowContrastClipArt(figures, bgHex) : undefined;\r\n\r\n if (lowContrastFigure) {\r\n return {\r\n annotation: CmeWarning._lowContrastAnnotation,\r\n figure: lowContrastFigure,\r\n isValid: false,\r\n message: CmeWarning.lowContrastMessage(),\r\n preventFulfillment: false,\r\n preventSave: false,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static _lowContrastAnnotation () {\r\n return 'Try inverted art';\r\n }\r\n\r\n static lowContrastMessage () {\r\n return 'Object and apparel colors are very similar. Consider inverting the object or changing the color of the design';\r\n }\r\n\r\n /**\r\n * @param {String} v\r\n */\r\n static isLowContrastAnnotation (v) {\r\n return v === CmeWarning._lowContrastAnnotation();\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n * @param {String} bgHex\r\n */\r\n static _firstLowContrastClipArt (figures, bgHex) {\r\n var filtered = Cme.filterFigures(figures),\r\n clipart = Cme.getClipArtFigures(filtered);\r\n\r\n return clipart.find(function (f) {\r\n return !CmeClipArt.isNegative(f) && CmeWarning.isLowContrast(f, bgHex) && CmeClipArt.getIdOfNegativeVersion(f)\r\n });\r\n }\r\n\r\n /**\r\n * Returns true if Clip Art is low contrast.\r\n * @param {Cx.Figure} f A shape figure.\r\n * @param {String} bg The background hex color.\r\n */\r\n static isLowContrast (f, bg) {\r\n var ratio = CmeWarning.figureContrastRatio(f, bg);\r\n return ratio && ratio < 4.5 ? true : false;\r\n }\r\n\r\n /**\r\n * Returns contrast ratio of clip art color against the background color.\r\n * @param {Cx.Figure} f A shape figure.\r\n * @param {String} bg The background hex color.\r\n */\r\n static figureContrastRatio (f, bg) {\r\n var fg = CmeWarning.figureRgb(f);\r\n return fg ? CmeWarning.contrastRatio(fg, bg) : undefined;\r\n }\r\n\r\n /**\r\n * Helper for figureContrastRatio().\r\n * @param {Cx.Figure} f A shape figure.\r\n */\r\n static figureRgb (f) {\r\n var zones = CmeBrush.uniqueBrushZones([f]),\r\n brush = zones.length === 1 ? zones[0].value : undefined,\r\n isBrush = brush ? brush.type === 'Brush' : false;\r\n\r\n return isBrush ? brush.color.rgb: undefined;\r\n }\r\n\r\n /**\r\n * Helper for figureContrastRatio().\r\n * @param {String} fg The foreground hex color.\r\n * @param {String} bg The background hex color.\r\n */\r\n static contrastRatio (fg, bg) {\r\n var me = CmeWarning,\r\n l1 = me.getL(fg),\r\n l2 = me.getL(bg),\r\n ratio = (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);\r\n\r\n return ratio;\r\n }\r\n\r\n /**\r\n * Helper for figureContrastRatio().\r\n * @param {String} c A hex color.\r\n */\r\n static getL (c) {\r\n var me = CmeWarning;\r\n return (0.2126 * me.getsRGB(c.substr(0, 2)) + 0.7152 * me.getsRGB(c.substr(2, 2)) + 0.0722 * me.getsRGB(c.substr(-2)));\r\n }\r\n\r\n /**\r\n * Helper for figureContrastRatio().\r\n * @param {String} c A hex color portion (e.g. 'FF').\r\n */\r\n static getsRGB (c) {\r\n c = CmeWarning.getRGB(c) / 255;\r\n c = (c <= 0.03928) ? c / 12.92 : Math.pow(((c + 0.055) / 1.055), 2.4);\r\n return c;\r\n }\r\n\r\n /**\r\n * Helper for figureContrastRatio().\r\n * @param {String} c A hex color portion (e.g. 'FF').\r\n */\r\n static getRGB (c) {\r\n try {\r\n var c = parseInt(c, 16);\r\n } catch (err) {\r\n var c = false;\r\n }\r\n\r\n return c;\r\n }\r\n\r\n //\r\n // TOO LARGE CLIP ART\r\n //\r\n\r\n /**\r\n * The canvas annotation label for the clip art too small warning.\r\n */\r\n static tooLargeLabel () {\r\n return 'Too large';\r\n }\r\n\r\n /**\r\n * @param {String} v\r\n */\r\n static isTooLargeLabel (v) {\r\n return v === CmeWarning.tooLargeLabel();\r\n }\r\n\r\n static tooLargeMessage () {\r\n return 'This transfer size is too large to cut. Consider reducing the size or breaking it into separate transfers by selecting design elements and clicking Create a New Transfer';\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f A shape figure.\r\n */\r\n static isTooLarge (f) {\r\n var scaleFactor = CmeWarning._getScaleFactor(f);\r\n return (scaleFactor > 5);\r\n }\r\n\r\n //\r\n // TOO SMALL CLIP ART\r\n //\r\n\r\n static tooSmallClipArtResult (figures) {\r\n var type = 'CME_TOO_SMALL_CLIP_ART',\r\n tooSmallFigure = CmeWarning._firstClipArtTooSmall(figures);\r\n\r\n if (tooSmallFigure) {\r\n return {\r\n annotation: CmeWarning._tooSmallLabel(),\r\n figure: tooSmallFigure,\r\n isValid: false,\r\n message: 'Parts of this transfer are too small to cut. Consider increasing the size of the design elements. You can also download the design and upload it to the Stahls’ Artwork Uploader',\r\n preventFulfillment: true,\r\n preventSave: true,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n /**\r\n * The canvas annotation label for the clip art too small warning.\r\n */\r\n static _tooSmallLabel () {\r\n return 'Too small';\r\n }\r\n\r\n /**\r\n * @param {String} v\r\n */\r\n static isTooSmallLabel (v) {\r\n return v === CmeWarning._tooSmallLabel();\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure[]} figures\r\n */\r\n static _firstClipArtTooSmall (figures) {\r\n var filtered = Cme.filterFigures(figures),\r\n clipart = Cme.getClipArtFigures(filtered);\r\n\r\n return clipart.find(function (f) {\r\n return CmeWarning._isTooSmall(f);\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Figure} f A shape figure.\r\n */\r\n static _isTooSmall (f) {\r\n var minH = Meta.getMinHeight(f),\r\n minW = Meta.getMinWidth(f),\r\n bounds, h, round, scaleFactor, w;\r\n\r\n if (minH && minW) {\r\n bounds = f.bounds_();\r\n round = function (v) {\r\n // round to 2 decimals to avoid problems with limits\r\n return Math.round(Number(v) * 100 ) / 100;\r\n }\r\n\r\n // mm to in\r\n h = round(bounds.height / 25.4);\r\n w = round(bounds.width / 25.4);\r\n\r\n minH = round(minH);\r\n minW = round(minW);\r\n\r\n return (h < minH || w < minW) ;\r\n }\r\n\r\n scaleFactor = CmeWarning._getScaleFactor(f);\r\n return (scaleFactor < 1);\r\n }\r\n\r\n /**\r\n * When figure is inside of group its scaleFactor never changes.\r\n * @param {Cx.Figure} o\r\n */\r\n static _getScaleFactor (o) {\r\n var scaleFactor = o.matrix22.scaleFactor(),\r\n oo;\r\n\r\n while (o) {\r\n oo = o._owner;\r\n\r\n if (oo) {\r\n if (oo.matrix22) { \r\n scaleFactor = scaleFactor * oo.matrix22.scaleFactor();\r\n }\r\n\r\n if (oo.isLayer) {\r\n break;\r\n } \r\n }\r\n\r\n o = oo;\r\n }\r\n\r\n return scaleFactor;\r\n }\r\n\r\n //\r\n // TOO SMALL TEXT\r\n //\r\n\r\n static tooSmallTextResult (figures) {\r\n var type = 'CME_TEXT_TOO_SMALL',\r\n tooSmallFigure = CmeWarning._firstTextTooSmall(figures);\r\n\r\n if (tooSmallFigure) {\r\n return {\r\n annotation: CmeWarning._textTooSmallLabel(),\r\n figure: tooSmallFigure,\r\n isValid: false,\r\n message: 'This text is too small to cut. Consider increasing the size of the design or changing the font. You can also download the design and upload it to the Stahls\\' Artwork Uploader',\r\n preventFulfillment: true,\r\n preventSave: true,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n /**\r\n * The canvas annotation label for the clip art too small warning.\r\n */\r\n static _textTooSmallLabel () {\r\n return 'Issue';\r\n }\r\n\r\n static textTooSmallMessage () {\r\n return 'This text is too small to cut, please scale it up or change the font';\r\n }\r\n\r\n /**\r\n * @param {String} v\r\n */\r\n static isTextTooSmallLabel (v) {\r\n return v === CmeWarning._textTooSmallLabel();\r\n }\r\n\r\n static _firstTextTooSmall (figures) {\r\n var filtered = Cme.filterFigures(figures),\r\n textFigures = Cme.getTextFigures(filtered);\r\n\r\n return textFigures.find(function (f) {\r\n return CmeWarning.textIsTooSmall(f);\r\n });\r\n }\r\n\r\n static textIsTooSmall (f) {\r\n var font = f.font,\r\n minFontSize = CmeWarning.getMinFontSize(font),\r\n concreteSize = f.concreteFontSize_();\r\n\r\n if (concreteSize < minFontSize) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n static getMinFontSize (font) {\r\n var minSize;\r\n\r\n if (!font) {\r\n return 100; // TODO PATCH FOR MONOGRAMS, review\r\n }\r\n\r\n minSize = Application.fontService.getCmeFontMinSize(font);\r\n\r\n return minSize * 25.4; // Inch to Millimeter\r\n }\r\n\r\n}\r\n","import Brush from './Brush.js';\r\nimport Figure from './Figure.js';\r\nimport Tx from './Tx.js';\r\n\r\nexport default class TxWarning {\r\n\r\n static isTxType (type) {\r\n return type.indexOf('TX_') !== -1;\r\n }\r\n\r\n //\r\n // INVALID COLOR\r\n //\r\n\r\n // static hasInvalidColorResult () {\r\n // var type = 'TX_INVALID_COLOR',\r\n // annotationFigure;\r\n\r\n // if (TxWarning.hasInvalidColor()) {\r\n // // annotationFigure = TxWarning.annotationFigureForInvalidColor();\r\n\r\n // return {\r\n // // annotation: annotationFigure ? 'Invalid color' : undefined,\r\n // // figure: annotationFigure,\r\n // isValid: false,\r\n // message: 'Invalid color found',\r\n // type: type\r\n // };\r\n // }\r\n\r\n // return { isValid: true, type: type };\r\n // }\r\n\r\n // static hasInvalidColor () {\r\n // var figures = Application.designService.getDesignFigures();\r\n // return figures.length > 0 && TxWarning._hasInvalidColor(figures);\r\n // }\r\n\r\n // static annotationFigureForInvalidColor () {\r\n // var figures = Application.designService.getActiveDesignFigures();\r\n\r\n // return figures.find(function (f) {\r\n // return TxWarning._hasInvalidColor([f]);\r\n // });\r\n // }\r\n\r\n // static _hasInvalidColor (figures) {\r\n // var colorZones = Color.uniqueColorZones(figures);\r\n\r\n // return colorZones.find(function (zone) {\r\n // return TxColor.isInvalid(zone.value);\r\n // }) ? true : false;\r\n // }\r\n\r\n //\r\n // INVALID COLOR ALPHA\r\n //\r\n\r\n static areColorsValidResult (figures) {\r\n var type = 'TX_COLOR_ALPHA';\r\n\r\n if (!TxWarning.areColorsValid(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'Transfer Express prints at 100% opacity. Consider changing all colors to 100% opacity',\r\n preventFulfillment: false,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static areColorsValid (figures) {\r\n var zones = Brush.uniqueBrushZones(figures, undefined, true),\r\n invalidBrush = zones.find(function (z) {\r\n var brush = z.value,\r\n type = brush.getType(),\r\n isBrush = type === 'Brush';\r\n\r\n return isBrush && brush.color.alpha !== 1;\r\n }) ? true : false;\r\n\r\n if (invalidBrush) {\r\n return false;\r\n }\r\n\r\n // If we have a visible pen then ensure it's alpha is 1\r\n return TxWarning._findPen(figures, function (pen) {\r\n return pen.getType() !== 'Empty' &&\r\n (pen.width > 0 && pen.color.alpha !== 1);\r\n }) ? false : true;\r\n }\r\n\r\n //\r\n // INVALID PEN DASHSTYLE\r\n //\r\n\r\n static arePensSolidResult (figures) {\r\n var type = 'TX_PEN_SOLID';\r\n\r\n if (!TxWarning.arePensSolid(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'Some design elements contain lines that are not solid. Consider updating the artwork so the design elements are solid',\r\n preventFulfillment: true,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static arePensSolid (figures) {\r\n return TxWarning._findPen(figures, function (pen) {\r\n return pen.getType() !== 'Empty' && pen.dashStyle !== 'Solid';\r\n }) ? false : true;\r\n }\r\n\r\n //\r\n // INVALID PEN WIDTH\r\n //\r\n\r\n static arePensWidthValidResult (figures) {\r\n var type = 'TX_PEN_WIDTH';\r\n\r\n if (!TxWarning.arePensWidthValid(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'Some design elements do not meet the minimum line thickness requirements. Consider increasing line thickness to at least a width of 1.016 px',\r\n preventFulfillment: true,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static arePensWidthValid (figures) {\r\n return TxWarning._findPen(figures, function (pen) {\r\n return pen.getType() !== 'Empty' &&\r\n (pen.width > 0 && pen.width < 1.016); // 0.04 inch\r\n }) ? false : true;\r\n }\r\n\r\n static _findPen (figures, predicate) {\r\n figures = Figure.ignoreGroups(figures);\r\n\r\n var len = figures.length,\r\n i = 0,\r\n pen;\r\n\r\n for (; i < len; i++) {\r\n pen = figures[i].pen;\r\n\r\n if (pen && predicate(pen)) {\r\n return pen;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n //\r\n // TOO LARGE TRANSFER GROUP\r\n //\r\n\r\n static isTransferGroupTooLargeResult (figures) {\r\n var type = 'TX_TRANSFER_GROUP_SIZE';\r\n\r\n if (TxWarning.isTransferGroupTooLargeForUltraColorSoft(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'This transfer has exceeded the maximum transfer size of 11.5 x 18 for standard. Consider reducing the size of the transfer group or splitting the design into multiple transfer groups by selecting objects and clicking \"Create a New Transfer\"',\r\n preventFulfillment: true,\r\n preventSave: true,\r\n type: type\r\n };\r\n }\r\n\r\n if (TxWarning.isTransferGroupTooLarge(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'This transfer has exceeded the maximum transfer size of 11.25 x 14 for standard. Consider reducing the size of the transfer group or splitting the design into multiple transfer groups by selecting objects and clicking \"Create a New Transfer\"',\r\n preventFulfillment: true,\r\n preventSave: true,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type }\r\n }\r\n\r\n /**\r\n * No transfer group larger then 11.25 x 14 inches.\r\n */\r\n static isTransferGroupTooLarge (figures) {\r\n return TxWarning._isTransferGroupTooLarge(figures, 11.25, 14);\r\n }\r\n\r\n static isTransferGroupTooLargeForUltraColorSoft (figures) {\r\n return TxWarning._isTransferGroupTooLarge(figures, 11.5, 18);\r\n }\r\n\r\n static _isTransferGroupTooLarge (figures, width, height) {\r\n var txFigures = Tx.filterFigures(figures),\r\n h, size, w;\r\n\r\n if (txFigures.length > 0) {\r\n size = TxWarning._getDesignSize(txFigures);\r\n h = size.height;\r\n w = size.width;\r\n\r\n // If does not fit within rectangle\r\n if (! ((h < height && w < width) || (h < width && w < height))) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n static _getDesignSize (figures) {\r\n var size = Figure.getSize(figures);\r\n\r\n return {\r\n height: TxWarning._toInch(size.height),\r\n width: TxWarning._toInch(size.width)\r\n };\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n static _toInch (mmValue) {\r\n var value = mmValue / 25.4;\r\n return parseFloat(value.toFixed(2));\r\n }\r\n\r\n}\r\n","import Rules from '../Rules';\r\nimport Brush from './Brush';\r\nimport Meta from './Meta';\r\n\r\n// Pen can not be edited on grouped figures\r\n\r\nexport default class Warning {\r\n\r\n static isType (type) {\r\n return type.indexOf('GEN_') !== -1;\r\n }\r\n\r\n //\r\n // TRANSFER EXPRESS ASSETS PRESENT\r\n //\r\n\r\n static hasTransferExpressFigures (figures) {\r\n var type = 'GEN_HAS_TRANSFER_EPRESS_ASSETS';\r\n\r\n if (Warning._hasTransferExpressFigures(figures)) {\r\n return {\r\n isValid: false,\r\n message: 'This transfer group contains design elements from Stahls\\' Transfer Express and can only be produced by Stahls\\' Transfer Express',\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static _hasTransferExpressFigures (figures) {\r\n if (!figures || figures.length === 0) {\r\n return false;\r\n }\r\n\r\n // Any TX?\r\n return figures.find(function (f) {\r\n return (Meta.isTransferExpress(f));\r\n }) ? true : false;\r\n }\r\n\r\n //\r\n // COLOR COUNT\r\n //\r\n\r\n static overMaxColorCountResult (figures) {\r\n var type = 'GEN_COLOR_COUNT',\r\n max = Rules.maxColorsPerPage(),\r\n overMaxColorCount = !isNaN(max) ? Warning.overMaxColorCount(figures) : false;\r\n\r\n if (overMaxColorCount) {\r\n return {\r\n isValid: false,\r\n message: 'This transfer contains more colors than the number of colors (' + max + ') allowed. Consider reducing the number of colors or splitting the transfer by selecting design elements and clicking \"Create a New Transfer\"',\r\n preventSave: true,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static overMaxColorCount (figures, max) {\r\n var zones = Brush.uniqueBrushZones(figures);\r\n return zones.length > max;\r\n }\r\n\r\n /**\r\n * @param {Number} max\r\n * @returns {String} pageId\r\n */\r\n // static firstPageWithMaxColorCountExceeded (max) {\r\n // var colorsPerPage = Warning._getColorCountPerPage(),\r\n // count, id;\r\n\r\n // for (id in colorsPerPage) {\r\n // count = colorsPerPage[id];\r\n\r\n // if (count > max) {\r\n // return id;\r\n // }\r\n // }\r\n\r\n // return undefined;\r\n // }\r\n\r\n // static _getColorCountPerPage () {\r\n // var app = Application,\r\n // canvas = app.canvas(),\r\n // selector = app.designService.designLayerSelector,\r\n // pages = {};\r\n \r\n // canvas.pages.forEach(function (page, index) {\r\n // var id = page.id || 'Page ' + (index + 1),\r\n // layer = page.layerBy(selector),\r\n // max;\r\n\r\n // if (layer) {\r\n // max = 0;\r\n\r\n // layer.figures.forEach(function (figure) {\r\n // // Determine group with the most colors.\r\n // // Max colors is per group.\r\n // var fs = figure.isGroup ? figure.figures : [figure],\r\n // zones = Brush.uniqueBrushZones(fs),\r\n // zoneCount = zones.length;\r\n\r\n // if (zoneCount > max) {\r\n // pages[id] = zoneCount;\r\n // }\r\n // });\r\n // }\r\n // });\r\n\r\n // return pages;\r\n // }\r\n\r\n //\r\n // DUPLICATE PRICING LABELS\r\n //\r\n\r\n static duplicatePricingLabelsResult (figures) {\r\n var type = '',\r\n labels = Warning._duplicatePricingLabels(),\r\n figure;\r\n\r\n if (labels.length > 0) {\r\n figure = Warning._firstFigureWithDuplicatePricingLabel(figures, labels);\r\n\r\n return {\r\n annotation: figure ? 'Duplicate pricing label' : undefined,\r\n figure: figure,\r\n isValid: false,\r\n message: 'Two or more objects use the same label. Update the object labels so each label is unique',\r\n preventSave: true,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static _duplicatePricingLabels () {\r\n var labels = Application.orderService.pricingLabels();\r\n\r\n return labels.filter(function (label, pos) {\r\n return labels.indexOf(label) != pos;\r\n });\r\n }\r\n\r\n static _firstFigureWithDuplicatePricingLabel (figures, duplicateLabels) {\r\n return figures.find(function (f) {\r\n var label = Meta.getOptional(f) ? Meta.getPricingLabel(f) : undefined;\r\n return label && duplicateLabels.indexOf(label) !== -1;\r\n });\r\n }\r\n\r\n //\r\n // MISSING PRICING LABEL\r\n //\r\n\r\n static missingPricingLabelResult (figures) {\r\n var type = 'GEN_PRICING_LABEL',\r\n figure = Warning._firstFigureMissingPricingLabel(figures);\r\n\r\n if (figure) {\r\n return {\r\n annotation: 'Missing pricing label',\r\n figure: figure,\r\n isValid: false,\r\n message: 'One or more optional objects are missing a label. Assign a unique label to any object you have marked as optional',\r\n preventSave: true,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n /**\r\n * @returns {Cx.Figure} annotationFigure\r\n */\r\n static _firstFigureMissingPricingLabel (figures) {\r\n return figures.find(function (f) {\r\n return Meta.getOptional(f) && !Meta.getPricingLabel(f) ? true : false;\r\n });\r\n }\r\n\r\n //\r\n // EXCEEDS TEXTURE WIDTH\r\n //\r\n\r\n static exceedingTextureWidthResult (figures) {\r\n var type = 'GEN_TEXTURE_WIDTH',\r\n figure = Warning._firstFigureExceedingTextureWidth(figures);\r\n\r\n if (figure) {\r\n return {\r\n annotation: figure ? 'Too wide' : undefined,\r\n figure: figure,\r\n isValid: false,\r\n message: 'This transfer exceeds the material width. Consider reducing the size of the transfer or splitting it into two or more transfers by selecting design elements and clicking \"Create a New Transfer\"',\r\n preventSave: true,\r\n type: type\r\n };\r\n }\r\n\r\n return { isValid: true, type: type };\r\n }\r\n\r\n static _firstFigureExceedingTextureWidth (figures) {\r\n var product = Application.product();\r\n\r\n return figures.find(function (f) {\r\n return Warning._exceedsTextureWidth(product, f);\r\n });\r\n }\r\n\r\n static _exceedsTextureWidth (product, figure) {\r\n var width = Warning._findTextureWidth(product, figure);\r\n return (width && (figure.bounds_().width / 25.4) > width);\r\n }\r\n\r\n static _findTextureWidth (product, figure) {\r\n var code = Warning._findMaterialCode(figure),\r\n tag = product ? product.findTextureTag('MaterialCode', code) : undefined;\r\n\r\n return tag ? tag.Width : undefined; // in\r\n }\r\n\r\n static _findMaterialCode (figure) {\r\n var zones = Brush.uniqueBrushZones([figure]),\r\n len = zones.length,\r\n i = 0,\r\n brush, material;\r\n\r\n for (; i < len; i++) {\r\n brush = zones[i].value,\r\n material = Brush.cmeDecodeMaterial(brush);\r\n\r\n if (material) {\r\n return material;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n}\r\n","import BaseService from './BaseService.js';\r\nimport Background from '../helper/Background.js';\r\nimport CmeWarning from '../helper/CmeWarning.js';\r\nimport TransferGroup from '../helper/TransferGroup.js';\r\nimport TxWarning from '../helper/TxWarning.js';\r\nimport Warning from '../helper/Warning.js';\r\n\r\nexport default class WarningService extends BaseService {\r\n\r\n isValid (groupName) {\r\n return this._findWarning(function (result) {\r\n return !result.isValid;\r\n }, groupName) ? false : true;\r\n }\r\n\r\n isValidToSave (groupName) {\r\n return this._findWarning(function (result) {\r\n return !result.isValid && result.preventSave;\r\n }, groupName) ? false : true;\r\n }\r\n\r\n isCmeValid (groupName) {\r\n return this._findWarning(function (result) {\r\n return CmeWarning.isCmeType(result.type) && !result.isValid;\r\n }, groupName) ? false : true;\r\n }\r\n\r\n isCmeValidForFulfillment (groupName) {\r\n return this._findWarning(function (result) {\r\n return CmeWarning.isCmeType(result.type) && result.preventFulfillment && !result.isValid;\r\n }, groupName) ? false : true;\r\n }\r\n\r\n isGeneralValid (groupName) {\r\n return this._findWarning(function (result) {\r\n return Warning.isType(result.type) && !result.isValid;\r\n }, groupName) ? false : true;\r\n }\r\n\r\n isTxValid (groupName) {\r\n return this._findWarning(function (result) {\r\n return TxWarning.isTxType(result.type) && !result.isValid;\r\n }, groupName) ? false : true;\r\n }\r\n\r\n isTxValidForFulfillment (groupName) {\r\n return this._findWarning(function (result) {\r\n return TxWarning.isTxType(result.type) && result.preventFulfillment && !result.isValid;\r\n }, groupName) ? false : true;\r\n }\r\n\r\n _eachWarning (fn, groupName) {\r\n var warnings = this.warnings(groupName),\r\n result, type;\r\n\r\n if (groupName) {\r\n for (type in warnings) {\r\n result = warnings[type];\r\n\r\n fn(result);\r\n }\r\n }\r\n\r\n else {\r\n for (groupName in warnings) {\r\n this._eachWarning(fn, groupName);\r\n }\r\n }\r\n }\r\n\r\n _findWarning (predicate, groupName) {\r\n var warnings = this.warnings(groupName),\r\n result, type;\r\n\r\n if (groupName) {\r\n for (type in warnings) {\r\n result = warnings[type];\r\n\r\n if (predicate(result)) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n else {\r\n for (groupName in warnings) {\r\n result = this._findWarning(predicate, groupName);\r\n\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n messages () {\r\n var msgs = [];\r\n\r\n if (this.isValid()) {\r\n return msgs;\r\n }\r\n\r\n this._eachWarning(function (result) {\r\n if (!result.isValid && result.preventSave && result.message) {\r\n msgs.push(result.message);\r\n }\r\n });\r\n\r\n return msgs;\r\n }\r\n\r\n cmeMessages (groupName) {\r\n return this._filterWarningsByType(groupName, CmeWarning.isCmeType);\r\n }\r\n\r\n generalMessages (groupName) {\r\n return this._filterWarningsByType(groupName, Warning.isType);\r\n }\r\n\r\n txMessages (groupName) {\r\n return this._filterWarningsByType(groupName, TxWarning.isTxType);\r\n }\r\n\r\n _filterWarningsByType (groupName, predicate) {\r\n var msgs = [];\r\n\r\n this._eachWarning(function (result) {\r\n if (!result.isValid && result.message && predicate(result.type)) {\r\n msgs.push(result.message);\r\n }\r\n }, groupName);\r\n\r\n return msgs;\r\n }\r\n\r\n warnings (groupName) {\r\n var warnings = this._warnings || {};\r\n return groupName ? (warnings[groupName] || {}) : warnings;\r\n }\r\n\r\n constructor () {\r\n super();\r\n\r\n var me = this;\r\n\r\n me._warnings = {};\r\n Application.onReady(me._onApplicationReady.bind(me));\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onApplicationReady () {\r\n var me = this,\r\n canvas = Application.canvas();\r\n\r\n canvas.on('change', me._syncWarnings, me);\r\n canvas.on('render', me._syncWarnings, me);\r\n\r\n me._syncWarnings();\r\n me._onIsReady();\r\n }\r\n\r\n _syncWarnings () {\r\n var me = this,\r\n fnList = [\r\n // CME\r\n CmeWarning.areAllCmeResult,\r\n CmeWarning.colorsAreInPaletteResult,\r\n CmeWarning.clipArtHasShowThroughResult,\r\n CmeWarning.tooSmallClipArtResult,\r\n function (figures) {\r\n return CmeWarning.lowContrastClipArtResult(figures, me._bgHex)\r\n },\r\n CmeWarning.areSingleColorResult,\r\n CmeWarning.tooSmallTextResult,\r\n\r\n // TX\r\n TxWarning.areColorsValidResult,\r\n TxWarning.arePensSolidResult,\r\n TxWarning.arePensWidthValidResult,\r\n TxWarning.isTransferGroupTooLargeResult,\r\n\r\n // General\r\n Warning.hasTransferExpressFigures,\r\n Warning.overMaxColorCountResult,\r\n Warning.duplicatePricingLabelsResult,\r\n Warning.missingPricingLabelResult,\r\n Warning.exceedingTextureWidthResult\r\n ],\r\n warnings = {};\r\n\r\n me._forEachTransferGroup(function (groupName, groupFigures) {\r\n var groupWarnings = warnings[groupName] = {};\r\n\r\n fnList.forEach(function (fn) {\r\n var result = fn(groupFigures);\r\n\r\n if (!result.isValid) {\r\n groupWarnings[result.type] = result;\r\n }\r\n });\r\n });\r\n\r\n me._warnings = warnings;\r\n me._syncAnnotations();\r\n me._onChange();\r\n }\r\n\r\n _forEachTransferGroup (fn) {\r\n var groups = TransferGroup.getDesignGroups(),\r\n name, figures;\r\n\r\n for (name in groups) {\r\n figures = groups[name];\r\n fn(name, figures);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * Called by Application.\r\n */\r\n onVariantSet () {\r\n this._getBgColor();\r\n }\r\n\r\n _getBgColor () {\r\n var me = this,\r\n canvas = Application.canvas();\r\n\r\n Background.getBgColor$(canvas).then(function (color) {\r\n if (color) {\r\n me._bgHex = color.rgb;\r\n me._forEachTransferGroup(function (groupName, groupFigures) {\r\n var result = CmeWarning.lowContrastClipArtResult(groupFigures, me._bgHex)\r\n\r\n if (!result.isValid) {\r\n me._warnings[groupName][result.type] = result;\r\n }\r\n });\r\n\r\n me._syncWarnings();\r\n }\r\n });\r\n }\r\n\r\n _syncAnnotations () {\r\n if (Application.isFrontEnd()) {\r\n return;\r\n }\r\n\r\n var me = this,\r\n activePageId = Application.designService.activePage();\r\n\r\n me._clearAnnotations();\r\n me._eachWarning(function (result) {\r\n if (\r\n !result.isValid &&\r\n result.annotation &&\r\n result.figure.layer.page.id === activePageId\r\n ) {\r\n me._showAnnotation(result.figure, result.annotation);\r\n }\r\n });\r\n }\r\n\r\n _showAnnotation (figure, message) {\r\n var me = this,\r\n canvas = Application.canvas(),\r\n list = me._annotations,\r\n options = {\r\n boxStyle: 'Clean',\r\n pen: Cx.Pen({ color: Cx.Color({ rgb:'F04111' }) }),\r\n text: message\r\n };\r\n\r\n if (!list) {\r\n list = me._annotations = [];\r\n }\r\n\r\n list.push(canvas.annotate(figure, options));\r\n }\r\n\r\n _clearAnnotations () {\r\n var canvas = Application.canvas(),\r\n items = this._annotations,\r\n i;\r\n\r\n if (items) {\r\n i = items.length;\r\n\r\n for (; i >= 0; i--) {\r\n canvas.unannotate(items[i]);\r\n items.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","/**\r\n * @usage\r\n// Registor your component.\r\nComponentManager.register(ContactWindow, 'contactwindow');\r\n\r\n// Now create an instance.\r\nvar win = ComponentManager.create({\r\n type: 'contactwindow'\r\n});\r\n */\r\nexport default class ComponentManager {\r\n\r\n /**\r\n * Public\r\n */\r\n static id () {\r\n if (ComponentManager._autoId === undefined) {\r\n ComponentManager._autoId = 0;\r\n }\r\n\r\n return ++ComponentManager._autoId;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Component} c\r\n * @param {String} type\r\n */\r\n static register (c, type) {\r\n var lookup = ComponentManager.getComponentLookup();\r\n lookup[type] = c;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} config\r\n */\r\n static create (config) {\r\n var lookup = ComponentManager.getComponentLookup(),\r\n type = config.type,\r\n c = lookup[type];\r\n\r\n return new c(config);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Component} c\r\n */\r\n static registerInstance (c) {\r\n var lookup = ComponentManager.getInstanceLookup(),\r\n id = c.getId();\r\n\r\n lookup[id] = c;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Component} c\r\n */\r\n static unregisterInstance (c) {\r\n var lookup = ComponentManager.getInstanceLookup(),\r\n id = c.getId();\r\n\r\n delete lookup[id];\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n */\r\n static getComponent (id) {\r\n var lookup = ComponentManager.getInstanceLookup();\r\n return lookup[id];\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static getComponentLookup () {\r\n var cm = ComponentManager;\r\n\r\n if (!cm._components) {\r\n cm._components = {};\r\n }\r\n\r\n return cm._components;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static getInstanceLookup () {\r\n var cm = ComponentManager;\r\n\r\n if (!cm._instances) {\r\n cm._instances = {};\r\n }\r\n\r\n return cm._instances;\r\n }\r\n\r\n}","import Dom from './util/Dom.js';\r\nimport Event from './util/Event.js';\r\n\r\nexport default class Element {\r\n\r\n /**\r\n * @param {HTMLElement/String} html\r\n */\r\n constructor (html) {\r\n this.isElement = true;\r\n\r\n if (typeof html === 'string') {\r\n this.dom = Dom.create(html);\r\n }\r\n\r\n else {\r\n this.dom = html;\r\n }\r\n\r\n this._event = new Event();\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} html\r\n */\r\n update (html) {\r\n this.dom.innerHTML = html;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement/Element} dom\r\n */\r\n appendChild (dom) {\r\n dom = dom instanceof Element ? dom.dom : dom;\r\n this.dom.appendChild(dom);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement/Element} dom\r\n */\r\n removeChild (dom) {\r\n dom = dom instanceof Element ? dom.dom : dom;\r\n this.dom.removeChild(dom);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} dom\r\n */\r\n contains (dom) {\r\n return Dom.contains(this.dom, dom);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} cls\r\n */\r\n addCls (cls) {\r\n Dom.addCls(this.dom, cls);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} cls\r\n */\r\n hasCls (cls) {\r\n return Dom.hasCls(this.dom, cls);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} cls\r\n */\r\n removeCls (cls) {\r\n Dom.removeCls(this.dom, cls);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} cls\r\n * @param {Boolean} v True to add the cls. False to remove the cls.\r\n */\r\n toggleCls (cls, v) {\r\n Dom.toggleCls(this.dom, cls, v);\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {Number} [width]\r\n * @param {Number} [height]\r\n */\r\n setSize (width, height) {\r\n Dom.setSize(this.dom, width, height);\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String/Object} key\r\n * @param {String} value (Optional)\r\n */\r\n setStyle (key, value) {\r\n Dom.setStyle(this.dom, key, value);\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} key\r\n */\r\n getStyle (key) {\r\n return Dom.getStyle(this.dom, key);\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} key\r\n */\r\n getComputedStyle (key) {\r\n return Dom.getComputedStyle(this.dom, key);\r\n }\r\n\r\n /**\r\n * Public,\r\n */\r\n getBox () {\r\n return Dom.getBox(this.dom);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} label\r\n * @param {Function} callback\r\n */\r\n on (label, callback) {\r\n this._event.on(label, callback);\r\n\t\tthis.dom.addEventListener(label, callback, false);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} label\r\n * @param {Function} callback\r\n */\r\n un (label, callback) {\r\n if (this._event.un(label, callback)) {\r\n\t\t\tthis.dom.removeEventListener(label, callback);\r\n\t\t}\r\n }\r\n\r\n _beforeDestroy () {\r\n var me = this;\r\n\r\n me._event.emit('destroy', me);\r\n\r\n me._event.forEach(function (label, callback) {\r\n me.un(label, callback);\r\n });\r\n\r\n me._event.destroy();\r\n }\r\n\r\n destroy () {\r\n var dom = this.dom;\r\n\r\n this._beforeDestroy();\r\n\r\n if (!dom || dom === document || dom === document.body) {\r\n return;\r\n }\r\n\r\n var parent = dom.parentNode;\r\n\r\n if (parent) {\r\n parent.removeChild(dom);\r\n }\r\n\r\n this.dom = undefined;\r\n }\r\n\r\n}\r\n","// http://ejohn.org/blog/javascript-micro-templating/\r\n\r\n/**\r\n*\r\n
\" class=\"<%=(i % 2 == 1 ? \" even\" : \"\")%>\">\r\n
\r\n \"/>\r\n
\r\n
\r\n

\"><%=from_user%>: <%=text%>

\r\n
\r\n
\r\n\r\nvar results = document.getElementById(\"results\");\r\nresults.innerHTML = Template(\"item_Template\", dataObject);\r\n\r\n\r\n<% for ( var i = 0; i < users.length; i++ ) { %>\r\n
  • \"><%=users[i].name%>
  • \r\n<% } %>\r\n\r\nvar show_user = Template(\"item_Template\"), html = \"\";\r\nfor ( var i = 0; i < users.length; i++ ) {\r\n html += show_user( users[i] );\r\n}\r\n*\r\n*/\r\n\r\nexport default class Template {\r\n constructor () {\r\n this.cache = {};\r\n }\r\n\r\n apply (str, data) {\r\n // Hack\r\n // Input: '
    '\r\n // Output: '
    \" class=\"<%=cls%>\" style=\"<%=style%>\">
    '\r\n if (str.indexOf('<%') === -1) {\r\n str = str.replace(/[{]/g, '<%=').replace(/[}]/g, '%>');\r\n }\r\n\r\n // Figure out if we're getting a template, or if we need to\r\n // load the template - and be sure to cache the result.\r\n var fn = !/\\W/.test(str) ?\r\n this.cache[str] = this.cache[str] ||\r\n this.apply(document.getElementById(str).innerHTML) :\r\n\r\n // Generate a reusable function that will serve as a template\r\n // generator (and which will be cached).\r\n new Function(\"obj\",\r\n \"var p=[],print=function(){p.push.apply(p,arguments);};\" +\r\n\r\n // Introduce the data as local variables using with(){}\r\n \"with(obj){p.push('\" +\r\n\r\n // Convert the template into pure JavaScript\r\n str\r\n .replace(/[\\r\\t\\n]/g, \" \")\r\n .split(\"<%\").join(\"\\t\")\r\n .replace(/((^|%>)[^\\t]*)'/g, \"$1\\r\")\r\n .replace(/\\t=(.*?)%>/g, \"',$1,'\")\r\n .split(\"\\t\").join(\"');\")\r\n .split(\"%>\").join(\"p.push('\")\r\n .split(\"\\r\").join(\"\\\\'\") +\r\n \"');}return p.join('');\");\r\n\r\n // Provide some basic currying to the user\r\n return data ? fn(data) : fn;\r\n }\r\n}\r\n","import ComponentManager from './ComponentManager.js';\r\nimport Config from './util/Config.js';\r\nimport Dom from './util/Dom.js';\r\nimport Element from './Element.js';\r\nimport Event from './util/Event.js';\r\nimport Template from './util/Template.js';\r\n\r\nexport default class Box {\r\n\r\n /**\r\n * CONFIG\r\n * {String} cls\r\n * {Object} data\r\n * {Boolean} hidden\r\n * {String} html\r\n * {Boolean} fullscreen\r\n * {HTMLElement} renderTo\r\n * {String} tpl\r\n * {String} style\r\n */\r\n\r\n /**\r\n * Public\r\n * @param {String} key\r\n */\r\n getConfig (key) {\r\n return this._config.get(key);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getInitialConfig () {\r\n return this._config.getInitialConfig();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getBox () {\r\n return this._el.getBox();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getEl () {\r\n return this._el;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getId () {\r\n return this._getBaseCls() + '-' + this._id;\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} cls\r\n */\r\n addCls (cls) {\r\n if (this._rendered) {\r\n this._el.addCls(cls);\r\n } else {\r\n var c = this._config,\r\n v = c.get('cls');\r\n\r\n if (v) {\r\n cls = v + ' ' + cls;\r\n }\r\n\r\n c.set('cls', cls);\r\n }\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} cls\r\n */\r\n hasCls (cls) {\r\n return this._el.hasCls(cls);\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} cls\r\n */\r\n removeCls (cls) {\r\n this._el.removeCls(cls);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} cls\r\n * @param {Boolean} v True to add the cls. False to remove the cls.\r\n */\r\n toggleCls (cls, v) {\r\n this._el.toggleCls(cls, v);\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {Object} data\r\n */\r\n setData (data) {\r\n this._config.set('data', data);\r\n\r\n if (this._rendered) {\r\n var template = new Template(),\r\n tpl = this.getConfig('tpl'),\r\n html = template.apply(tpl, data);\r\n\r\n this.update(html);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getData () {\r\n return this.getConfig('data');\r\n }\r\n\r\n /**\r\n * Public.\r\n * {Boolean} hidden\r\n */\r\n setHidden (hidden) {\r\n var me = this,\r\n cls, el;\r\n\r\n me._config.set('hidden', hidden);\r\n\r\n if (me._rendered) {\r\n cls = 'smp-hidden';\r\n el = me._el;\r\n\r\n if (hidden) {\r\n el.addCls(cls);\r\n } else {\r\n el.removeCls(cls);\r\n }\r\n }\r\n }\r\n\r\n getHidden () {\r\n return this._config.get('hidden');\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} html\r\n */\r\n setHtml (html) {\r\n this._config.set('html', html);\r\n\r\n if (this._rendered) {\r\n this.update(html);\r\n }\r\n }\r\n\r\n getHtml () {\r\n return this.getConfig('html');\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {Number} [width]\r\n * @param {Number} [height]\r\n */\r\n setSize (width, height) {\r\n if (width || height) {\r\n this._el.setSize(width, height);\r\n this._onResize();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object/String} key\r\n * @param {String} value (Optional)\r\n */\r\n setStyle (key, value) {\r\n this._el.setStyle(key, value);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} key\r\n */\r\n getStyle (key) {\r\n return this._el.getStyle(key);\r\n }\r\n\r\n /**\r\n * Public\r\n * @param {String} key\r\n */\r\n getComputedStyle (key) {\r\n return this._el.getComputedStyle(key);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} config\r\n */\r\n constructor (config) {\r\n this._id = ComponentManager.id();\r\n\r\n config = this._initConfig(config);\r\n\r\n this._config = new Config(config);\r\n this._event = new Event();\r\n\r\n this.isBox = true;\r\n ComponentManager.registerInstance(this);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} config\r\n */\r\n _initConfig (config) {\r\n return config;\r\n }\r\n\r\n _getBaseCls () {\r\n return 'smp-box';\r\n }\r\n\r\n _getRenderTpl () {\r\n return '
    ';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getRenderData () {\r\n var cls = this._getBaseCls(),\r\n configCls = this.getConfig('cls'),\r\n configStyle = this.getConfig('style'),\r\n fullscreen = this.getConfig('fullscreen'),\r\n style = configStyle || '';\r\n\r\n cls += configCls ? ' ' + configCls : '';\r\n cls += fullscreen ? ' smp-fullscreen' : '';\r\n\r\n return {\r\n cls: cls,\r\n id: this.getId(),\r\n style: style\r\n };\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onResize () {\r\n this._emit('resize', this, this.getBox());\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} html\r\n */\r\n update (html) {\r\n this._el.update(html);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} [container]\r\n * @param {String} [position] 'before' or 'after'\r\n */\r\n render (container, position) {\r\n var el = this._createEl(),\r\n renderTo = container || this.getConfig('renderTo');\r\n\r\n Dom.insert(renderTo, el.dom, position);\r\n this._onElRender();\r\n\r\n return el;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {HTMLElement} container\r\n * @param {HTMLElement} child\r\n */\r\n replace (container, child) {\r\n var el = this._createEl();\r\n\r\n container.replaceChild(el.dom, child);\r\n this._onElRender();\r\n\r\n return el;\r\n }\r\n\r\n _createEl () {\r\n var template = new Template(),\r\n data = this._getRenderData(),\r\n html = template.apply(this._getRenderTpl(), data);\r\n\r\n return this._el = new Element(html);\r\n }\r\n\r\n _onElRender () {\r\n this._rendered = true;\r\n this._onRender();\r\n this._initEvents();\r\n this._emit('render', this);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onRender () {\r\n var data = this.getConfig('data'),\r\n hidden = this.getConfig('hidden'),\r\n html = this.getConfig('html'),\r\n height = this.getConfig('height'),\r\n width = this.getConfig('width');\r\n\r\n this.setSize(width, height);\r\n\r\n if (html) {\r\n this.update(html);\r\n }\r\n\r\n else if (data) {\r\n this.setData(data);\r\n }\r\n\r\n if (typeof hidden === 'boolean') {\r\n this.setHidden(hidden);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initEvents () {}\r\n\r\n /**\r\n * Public.\r\n * @param {String} label\r\n * @param {Function/String} callback\r\n */\r\n on (label, callback) {\r\n this._event.on(label, callback);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} label\r\n * @param {Function} callback\r\n */\r\n un (label, callback) { \r\n return this._event.un(label, callback);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} label\r\n * @param {spread/rest} args\r\n */\r\n _emit (label, ...args) { \r\n return this._event.emit(label, ...args);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _beforeDestroy () {}\r\n\r\n /**\r\n * Private.\r\n */\r\n _afterDestroy () {\r\n this._event.destroy();\r\n ComponentManager.unregisterInstance(this);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n destroy () {\r\n if (this._emit('beforedestroy', this) !== false) {\r\n this._beforeDestroy();\r\n this._emit('destroy', this);\r\n this._el.destroy();\r\n this._afterDestroy();\r\n }\r\n }\r\n\r\n}\r\n\r\nComponentManager.register(Box, 'box');","import Config from './Config.js';\r\n\r\nexport default class Binder {\r\n\r\n /**\r\n * CONFIG\r\n * view\r\n * viewController\r\n * viewModel\r\n */\r\n\r\n constructor (config) {\r\n this._config = new Config(config);\r\n this._init();\r\n this._initView();\r\n this._initViewModel();\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} key\r\n */\r\n getConfig (key) {\r\n return this._config.get(key);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Call setters\r\n */\r\n _init () {\r\n var controller = this.getConfig('viewController'),\r\n model = this.getConfig('viewModel'),\r\n view = this.getConfig('view');\r\n\r\n if (controller) {\r\n controller.setView(view);\r\n }\r\n\r\n if (model) {\r\n model.setView(view);\r\n }\r\n\r\n if (controller && model) {\r\n controller.setViewModel(model);\r\n model.setViewController(controller);\r\n }\r\n }\r\n\r\n //\r\n // Handler\r\n //\r\n\r\n /**\r\n * Public.\r\n * @param {Function/String} handler\r\n */\r\n getHandler (handler) {\r\n if (typeof handler === 'function') {\r\n return handler;\r\n }\r\n\r\n if (typeof handler === 'string') {\r\n return this._findHandler(handler, this.getConfig('view'));\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} handler\r\n * @param {Component} view\r\n */\r\n _findHandler (handler, view) {\r\n var controller,\r\n owner;\r\n\r\n if (view[handler]) {\r\n return view[handler].bind(view);\r\n }\r\n\r\n controller = view.getViewController();\r\n\r\n if (controller && controller[handler]) {\r\n return controller[handler].bind(controller);\r\n }\r\n\r\n owner = view._owner;\r\n\r\n if (owner) {\r\n return this._findHandler(handler, owner);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n //\r\n // View\r\n //\r\n\r\n /**\r\n * Private.\r\n */\r\n _initView () {\r\n var view = this.getConfig('view');\r\n\r\n view.on('render', this._onViewRender.bind(this));\r\n view.on('publish', this._onViewPublish.bind(this));\r\n }\r\n\r\n /**\r\n * Private.\r\n * View has 'bind' config. Sync the data on 'render'.\r\n * @param {Component} view\r\n */\r\n _onViewRender (view) {\r\n var bind = view.getConfig('bind'),\r\n viewController = view.getViewController(),\r\n value, viewKey, viewModel, viewModelKey;\r\n\r\n view.un('render', this._onViewRender);\r\n\r\n if (bind) {\r\n // View has 'bind' config. Sync the data on 'render'.\r\n for (viewKey in bind) {\r\n viewModelKey = this._getViewModelBindKey(viewKey);\r\n viewModel = this._findViewModel(view, viewModelKey);\r\n\r\n if (viewModel) {\r\n value = viewModel.get(viewModelKey);\r\n this._syncViews(viewModelKey, value, [{ view: view, setter: this._getViewSetter(view, viewModelKey) }]);\r\n }\r\n }\r\n }\r\n\r\n // Call init(), view is rendered and all bindings are initialized.\r\n if (viewController) {\r\n viewController.init(view);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * The view's 'publish' event was fired.\r\n * @param {Component} view\r\n * @param {String} key\r\n * @param {Mixed} value\r\n * @param {Mixed} oldValue\r\n */\r\n _onViewPublish (view, key, value, oldValue) {\r\n if (!this._ignoreViewChange) {\r\n this._syncViewModel(view, key, value);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Component} view\r\n * @param {String} viewKey\r\n * @param {Mixed} value\r\n */\r\n _syncViewModel (view, viewKey, value) {\r\n var viewModelKey = this._getViewModelBindKey(viewKey),\r\n viewModel = this._findViewModel(view, viewModelKey);\r\n\r\n if (viewModel && viewModelKey) {\r\n this._ignoreViewModelChange = true;\r\n viewModel.set(viewModelKey, value);\r\n this._ignoreViewModelChange = false;\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * The view's 'bind' config looks like so:\r\n * bind: { : }\r\n * @param {String} viewKey\r\n */\r\n _getViewModelBindKey (viewKey) {\r\n var view = this.getConfig('view'),\r\n bind = view.getConfig('bind')\r\n\r\n for (var key in bind) {\r\n if (key === viewKey) {\r\n return bind[key];\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Component} comp\r\n * @param {String} viewModelKey\r\n */\r\n _findViewModel (comp, viewModelKey) {\r\n var viewModel = comp.getViewModel(),\r\n data, key;\r\n\r\n if (viewModel) {\r\n data = viewModel.getData();\r\n\r\n for (key in data) {\r\n if (key == viewModelKey) {\r\n return viewModel;\r\n }\r\n }\r\n }\r\n\r\n if (comp._owner) {\r\n return this._findViewModel(comp._owner, viewModelKey);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n //\r\n // ViewModel\r\n //\r\n\r\n _initViewModel () {\r\n var viewModel = this.getConfig('viewModel');\r\n\r\n if (!viewModel) {\r\n return false;\r\n }\r\n\r\n viewModel.on('publish', this._onViewModelPublish.bind(this));\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Private.\r\n * The view model's 'publish' event was fired.\r\n * @param {String} viewModelKey\r\n * @param {Mixed} value\r\n */\r\n _onViewModelPublish (viewModel, key, value, oldValue) {\r\n if (!this._ignoreViewModelChange) {\r\n this._syncViews(key, value);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} viewModelKey\r\n * @param {Mixed} value\r\n * @param {Object[]} views\r\n */\r\n _syncViews (viewModelKey, value, views) {\r\n if (!views) {\r\n views = [];\r\n this._findViews(viewModelKey, this.getConfig('view'), views);\r\n }\r\n\r\n this._ignoreViewChange = true;\r\n\r\n views.forEach(function (item) {\r\n item.view[item.setter](value);\r\n });\r\n\r\n this._ignoreViewChange = undefined;\r\n }\r\n\r\n /**\r\n * The 'bind' config on the View looks like so:\r\n * bind: { : }\r\n * @param {Component} view\r\n * @param {String} viewModelKey\r\n */\r\n _getViewSetter (view, viewModelKey) {\r\n var bindKey = this._getViewBindKey(view, viewModelKey);\r\n\r\n if (bindKey) {\r\n return 'set' + bindKey.charAt(0).toUpperCase() + bindKey.slice(1);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * The 'bind' config on the View looks like so:\r\n * bind: { : }\r\n */\r\n _getViewBindKey (view, viewModelKey) {\r\n var bind = view.getConfig('bind'),\r\n value;\r\n\r\n for (var key in bind) {\r\n value = bind[key];\r\n\r\n if (value === viewModelKey) {\r\n return key;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * The 'bind' config on the View looks like so:\r\n * bind: { : }\r\n * Returns array of bound Views.\r\n * @param {String} viewModelKey\r\n * @param {Component} comp\r\n * @param {Component[]} views\r\n */\r\n _findViews (viewModelKey, comp, views) {\r\n var bind = comp.getConfig('bind'),\r\n i, items, len, viewKey;\r\n\r\n if (bind) {\r\n viewKey = this._getViewBindKey(comp, viewModelKey);\r\n\r\n if (viewKey) {\r\n views.push({ view: comp, setter: this._getViewSetter(comp, viewModelKey) });\r\n }\r\n }\r\n\r\n // Find in layout items\r\n if (comp.getLayoutItems && typeof comp.getLayoutItems === 'function') {\r\n items = comp.getLayoutItems();\r\n len = items.length;\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n this._findViews(viewModelKey, items[i], views);\r\n }\r\n }\r\n\r\n // Panels can optionally have a footer\r\n if (comp.getFooter && typeof comp.getFooter === 'function' && comp.getFooter()) {\r\n this._findViews(viewModelKey, comp.getFooter(), views);\r\n }\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n destroy () {\r\n var controller = this.getConfig('viewController'),\r\n model = this.getConfig('viewModel');\r\n\r\n if (controller) {\r\n controller.destroy();\r\n }\r\n\r\n if (model) {\r\n model.destroy()\r\n }\r\n }\r\n}","import ComponentManager from './ComponentManager.js';\r\nimport Box from './Box.js';\r\nimport Binder from './util/Binder.js';\r\n\r\n/**\r\n * @usage\r\n{\r\n bind: {\r\n data: 'compData'\r\n },\r\n tpl: '
    {Text}
    ',\r\n type: 'component',\r\n viewModel: new ViewModel({\r\n data: {\r\n compData: { Text: 'Hello' }\r\n }\r\n })\r\n}\r\n */\r\nexport default class Component extends Box {\r\n\r\n /**\r\n * CONFIG\r\n * {Object} bind\r\n * {Object} listeners\r\n * {ViewController} viewController\r\n * {ViewModel} viewModel\r\n */\r\n\r\n /**\r\n * Public\r\n */\r\n getViewController () {\r\n return this.getConfig('viewController');\r\n }\r\n\r\n /**\r\n * Public\r\n */\r\n getViewModel () {\r\n return this.getConfig('viewModel');\r\n }\r\n\r\n /**\r\n * Override.\r\n * Public.\r\n * {Boolean} hidden\r\n */\r\n setHidden (hidden) {\r\n var result = super.setHidden(hidden);\r\n\r\n if (result) {\r\n this._publish('hidden', hidden);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * @param {Object} config\r\n */\r\n constructor (config) {\r\n super(config);\r\n\r\n this._initBinder();\r\n this.isComponent = true;\r\n }\r\n\r\n _getBaseCls () {\r\n return 'smp-component';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initBinder () {\r\n var controller = this.getViewController(),\r\n model = this.getViewModel();\r\n\r\n this._binder = new Binder({\r\n view: this,\r\n viewController: controller,\r\n viewModel: model\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initEvents () {\r\n super._initEvents();\r\n this._initListeners();\r\n }\r\n\r\n _initListeners () {\r\n var listeners = this.getConfig('listeners'),\r\n handler, scope;\r\n\r\n if (listeners) {\r\n scope = listeners.scope;\r\n\r\n for (var key in listeners) {\r\n if (key === 'scope') {\r\n continue;\r\n }\r\n\r\n handler = listeners[key];\r\n\r\n if (scope) {\r\n if (typeof handler === 'function') {\r\n handler = handler.bind(scope);\r\n } else if (typeof handler === 'string') {\r\n handler = scope[handler].bind(scope);\r\n }\r\n } else {\r\n handler = this._getListenerHandler(handler);\r\n }\r\n\r\n this.on(key, handler);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} key\r\n * @param {Mixed} value\r\n */\r\n _publish (key, value) {\r\n this._emit('publish', this, key, value);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Function/String} handler\r\n */\r\n _getListenerHandler (handler) {\r\n return this._binder.getHandler(handler);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _beforeDestroy () {\r\n this._binder.destroy();\r\n super._beforeDestroy();\r\n }\r\n\r\n}\r\n\r\nComponentManager.register(Component, 'component');\r\n","/**\r\n * @usage\r\nif (!this.delayedSyncSize) {\r\n this.delayedSyncSize = new DelayedTask(someFn, this);\r\n}\r\n\r\nthis.delayedSyncSize.delay(250);\r\n */\r\nexport default class DelayedTask {\r\n \r\n /**\r\n * CONFIG\r\n * args\r\n * fn\r\n * scope\r\n */\r\n\r\n /**\r\n * @param {Function} fn\r\n * @param {Object} scope\r\n * @param {} [args]\r\n */\r\n constructor (fn, scope, args) {\r\n this.args = args;\r\n this.fn = fn;\r\n this.scope = scope;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Millisenconds} delay\r\n * @param {Function} [fn]\r\n * @param {Object} [scope]\r\n * @param {} [args]\r\n */\r\n delay (delay, fn, scope, args) {\r\n fn = fn || this.fn;\r\n scope = scope || this.scope;\r\n args = args || this.args;\r\n \r\n this.cancel();\r\n \r\n this.timeoutId = window.setTimeout(function () {\r\n fn.apply(scope, args);\r\n }, delay);\r\n }\r\n\r\n cancel () {\r\n if (this.timeoutId) {\r\n window.clearTimeout(this.timeoutId);\r\n }\r\n }\r\n}","import DelayedTask from './DelayedTask.js';\r\n\r\n/**\r\n * @usage\r\n *\r\nnew ClickHold({\r\n el: ...,\r\n onClick: function () {},\r\n onHold: function () {},\r\n onRepeat: function () {}\r\n});\r\n */\r\nexport default class ClickHold {\r\n\r\n /**\r\n * CONFIG\r\n * {Number} delay In milliseconds.\r\n * {Element} el\r\n * {Function} onClick\r\n * {Function} onContextMenu\r\n * {Function} onHold\r\n * {Function} onRepeat\r\n */\r\n\r\n constructor (config) {\r\n this._delayedTask = new DelayedTask(this._onDelay, this);\r\n this._delayingForHold = false;\r\n this._initConfig(config);\r\n this._initEvents();\r\n }\r\n\r\n _initConfig (config) {\r\n var delay = config.delay;\r\n \r\n if (isNaN(delay)) {\r\n delay = 500;\r\n }\r\n\r\n this.delay = delay;\r\n this.el = config.el;\r\n\r\n this.onClick = config.onClick;\r\n this.onContextMenu = config.onContextMenu;\r\n this.onHold = config.onHold;\r\n this.onRepeat = config.onRepeat;\r\n }\r\n\r\n _initEvents () {\r\n var me = this,\r\n el = me.el;\r\n\r\n if (this.onContextMenu) {\r\n el.on('contextmenu', me._onContextMenu.bind(me));\r\n }\r\n\r\n el.on('mouseup', me._onMouseUp.bind(me));\r\n el.on('mousedown', me._onMouseDown.bind(me));\r\n el.on('touchstart', me._onTouchStart.bind(me));\r\n el.on('touchend', function (event) {\r\n if (!me._swiping) {\r\n me._onMouseUp(event);\r\n }\r\n\r\n me._swiping = false;\r\n });\r\n el.on('touchmove', function (event) {\r\n me._swiping = me._detectSwipe(event.changedTouches[0]);\r\n });\r\n }\r\n\r\n _onContextMenu (event) {\r\n event.preventDefault();\r\n this._callHandler(this.onContextMenu);\r\n }\r\n\r\n _onMouseDown (event) {\r\n event.preventDefault();\r\n this._downEvent = event;\r\n this._startDelay(event);\r\n }\r\n\r\n _onTouchStart (event) {\r\n // 'preventDefault' prevents scrolling on mobile touch\r\n // e.g. interferes with scrollable menus\r\n // event.preventDefault();\r\n this._downEvent = event.changedTouches[0];\r\n this._startDelay(event.changedTouches[0]);\r\n }\r\n\r\n /**\r\n * Private\r\n * @param {MouseEvent} event\r\n */\r\n _detectSwipe (event) {\r\n var downEvent = this._downEvent,\r\n diffX, diffY;\r\n\r\n if (downEvent) {\r\n diffX = Math.abs(event.clientX - downEvent.clientX);\r\n diffY = Math.abs(event.clientY - downEvent.clientY);\r\n\r\n if (diffX > 20 || diffY > 20) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n _startDelay (event) {\r\n this._delayingForHold = true;\r\n this._event = event;\r\n this._delayedTask.delay(this.delay);\r\n }\r\n\r\n _onMouseUp (event) {\r\n var me = this;\r\n\r\n if (!me._swiping) {\r\n event.preventDefault();\r\n }\r\n\r\n // We haven't fired hold, just a regular click on mouse up\r\n if (me._delayingForHold) {\r\n me._onClick();\r\n }\r\n\r\n me._cancelDelay();\r\n }\r\n\r\n _cancelDelay () {\r\n this._delayingForHold = false;\r\n this._event = undefined;\r\n this._delayedTask.cancel();\r\n }\r\n\r\n _onClick () {\r\n this._callHandler(this.onClick);\r\n }\r\n\r\n _onDelay () {\r\n this._delayingForHold = false;\r\n this._callHandler(this.onHold);\r\n this._doRepeat();\r\n }\r\n\r\n _doRepeat () {\r\n var onRepeat = this.onRepeat;\r\n\r\n this._callHandler(onRepeat);\r\n\r\n if (onRepeat) {\r\n this._delayedTask.delay(50, this._doRepeat, this);\r\n }\r\n }\r\n\r\n _callHandler (handler) {\r\n if (handler) {\r\n handler(this._event);\r\n }\r\n }\r\n\r\n}\r\n","import '../../resources/css/button/Button.css';\r\nimport ComponentManager from '../ComponentManager.js';\r\nimport Component from '../Component.js';\r\nimport Dom from '../util/Dom.js';\r\nimport ClickHold from '../util/ClickHold.js';\r\nimport Element from '../Element.js';\r\n\r\nexport default class Button extends Component {\r\n\r\n /**\r\n * {Boolean} disabled\r\n * {Boolean} doRipple\r\n * {Boolean} enableHoldEvent True to emit a 'hold' event.\r\n * {Function} handler\r\n * {String} iconAlign Default to left.\r\n * {String} iconCls\r\n * {Boolean} repeat True to act as a repeater button.\r\n * {Object} scope\r\n * {String} title\r\n * {String} text\r\n */\r\n\r\n /**\r\n * Public.\r\n * @param {Boolean} disabled\r\n */\r\n setDisabled (disabled) {\r\n var me = this,\r\n oldValue = me.getConfig('disabled');\r\n\r\n if (disabled !== oldValue) {\r\n me._config.set('disabled', disabled);\r\n\r\n if (me._rendered) {\r\n me.toggleCls(me.disabledCls, disabled);\r\n }\r\n }\r\n }\r\n\r\n getDisabled () {\r\n return this.getConfig('disabled') || false;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} value\r\n */\r\n setIconAlign (value, forceValue) {\r\n var me = this,\r\n oldValue = me._config.get('iconCls');\r\n\r\n if (value !== oldValue || forceValue) {\r\n var el = me._el;\r\n\r\n me._config.set('iconAlign', value);\r\n\r\n if (me._rendered) {\r\n if (oldValue) {\r\n el.removeCls('icon-align-' + oldValue);\r\n }\r\n\r\n el.addCls('icon-align-' + value);\r\n }\r\n\r\n me._publish('iconAlign', value);\r\n }\r\n }\r\n\r\n getIconAlign () {\r\n return this._config.get('iconAlign');\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} value\r\n */\r\n setIconCls (value, forceValue) {\r\n var me = this,\r\n oldValue = me._config.get('iconCls');\r\n\r\n if (value !== oldValue || forceValue) {\r\n me._config.set('iconCls', value);\r\n me.setIconAlign(me.getConfig('iconAlign') || 'left', forceValue);\r\n\r\n if (me._rendered) {\r\n var dom = me.getIconDom(),\r\n elDom = me._el.dom;\r\n\r\n if (oldValue) {\r\n Dom.removeCls(dom, oldValue);\r\n Dom.removeCls(elDom, 'icon');\r\n }\r\n\r\n if (value) {\r\n Dom.addCls(dom, value);\r\n Dom.addCls(elDom, 'icon');\r\n }\r\n }\r\n\r\n me._publish('iconCls', value);\r\n }\r\n }\r\n\r\n getIconCls () {\r\n return this.getConfig('iconCls');\r\n }\r\n\r\n getIconDom () {\r\n return Dom.select('.icon', this._el.dom)[0];\r\n }\r\n\r\n getIconEl () {\r\n var me = this,\r\n el = me._iconEl;\r\n\r\n if (!el) {\r\n el = me._iconEl = new Element(me.getIconDom());\r\n }\r\n\r\n return el;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} value\r\n */\r\n setText (value, forceValue) {\r\n var me = this,\r\n oldValue = me._config.get('text');\r\n\r\n me._config.set('text', value);\r\n\r\n if (value !== oldValue || forceValue) {\r\n if (me._rendered) {\r\n var dom = me.getTextDom(),\r\n elDom = me._el.dom;\r\n\r\n if (oldValue) {\r\n Dom.removeCls(elDom, 'text');\r\n }\r\n\r\n dom.innerHTML = value;\r\n Dom.addCls(elDom, 'text');\r\n }\r\n\r\n me._publish('text', value);\r\n }\r\n }\r\n\r\n getTextDom () {\r\n return Dom.select('.text', this._el.dom)[0];\r\n }\r\n\r\n getTextEl () {\r\n var me = this,\r\n el = me._textEl;\r\n\r\n if (!el) {\r\n el = me._textEl = new Element(me.getTextDom());\r\n }\r\n\r\n return el;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} value\r\n */\r\n setTitle (value, forceValue) {\r\n var me = this,\r\n key = 'title',\r\n oldValue = me._config.get(key);\r\n\r\n me._config.set(key, value);\r\n\r\n if (value !== oldValue || forceValue) {\r\n if (me._rendered) {\r\n var el = me.getEl();\r\n el.dom.setAttribute(key, value);\r\n }\r\n\r\n me._publish(key, value);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} [config]\r\n */\r\n constructor (config) {\r\n super(config);\r\n\r\n this.isButton = true;\r\n this.disabledCls = 'smp-disabled';\r\n }\r\n\r\n _getBaseCls () {\r\n return 'smp-button';\r\n }\r\n\r\n _getRenderTpl () {\r\n var doRipple = this.getConfig('doRipple'),\r\n tpl = '';\r\n\r\n return tpl;\r\n }\r\n\r\n /**\r\n * Override.\r\n * Private.\r\n */\r\n _getRenderData () {\r\n var data = super._getRenderData(),\r\n disabled = this.getConfig('disabled');\r\n\r\n if (disabled) {\r\n data.cls += ' ' + this.disabledCls;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Override.\r\n * Private.\r\n */\r\n _onRender () {\r\n super._onRender();\r\n\r\n var me = this,\r\n iconCls = me.getConfig('iconCls'),\r\n text = me.getConfig('text'),\r\n title = me.getConfig('title');\r\n\r\n if (iconCls) {\r\n me.setIconCls(iconCls, true);\r\n }\r\n\r\n if (text) {\r\n me.setText(text, true);\r\n }\r\n\r\n if (title) {\r\n me.setTitle(title, true);\r\n }\r\n }\r\n\r\n /**\r\n * Override.\r\n * Private.\r\n */\r\n _initEvents () {\r\n super._initEvents();\r\n\r\n var enableHoldEvent = this.getConfig('enableHoldEvent'),\r\n repeat = this.getConfig('repeat'),\r\n onClick = this._onClick.bind(this);\r\n\r\n new ClickHold({\r\n el: this._el,\r\n onClick: onClick,\r\n onContextMenu: this._onContextMenu.bind(this),\r\n onHold: enableHoldEvent ? this._onHold.bind(this) : undefined,\r\n onRepeat: repeat ? onClick : undefined\r\n });\r\n }\r\n\r\n _onContextMenu (e) {\r\n this._emit('contextmenu', this, e);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onHold (e) {\r\n this._emit('hold', this, e);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onClick (e) {\r\n var me = this,\r\n fn;\r\n\r\n if (me.getDisabled()) {\r\n return;\r\n }\r\n\r\n fn = me._doClick.bind(me);\r\n\r\n if (me.getConfig('doRipple')) {\r\n me._doRipple(e);\r\n window.setTimeout(fn, 350);\r\n }\r\n\r\n else {\r\n fn();\r\n }\r\n\r\n me._emit('click', me, e);\r\n }\r\n\r\n _doClick () {\r\n this._fireHandler();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _fireHandler () {\r\n var handler = this.getConfig('handler');\r\n\r\n handler = this._binder.getHandler(handler);\r\n\r\n if (handler) {\r\n handler.call(this.getConfig('scope') || this, this);\r\n }\r\n }\r\n\r\n _doRipple (e) {\r\n var ink = Dom.select('.ink', this._el.dom)[0],\r\n box = this.getBox(),\r\n d, x, y;\r\n\r\n Dom.removeCls(ink, 'animate');\r\n\r\n d = Math.max(box.width, box.height);\r\n x = e.clientX - box.left - d / 2;\r\n y = e.clientY - box.top - d / 2;\r\n\r\n Dom.setStyle(ink, {\r\n height: d + 'px',\r\n left: x + 'px',\r\n top: y + 'px',\r\n width: d + 'px'\r\n });\r\n\r\n window.setTimeout(function () {\r\n Dom.addCls(ink, 'animate');\r\n }, 50);\r\n }\r\n\r\n}\r\n\r\nComponentManager.register(Button, 'button');\r\n","import '../../resources/css/field/Field.css';\r\nimport ComponentManager from '../ComponentManager.js';\r\nimport Dom from '../util/Dom.js';\r\nimport Component from '../Component.js';\r\nimport Element from '../Element.js';\r\n\r\n/**\r\n * quackit.com/html_5/tags/html_input_tag.cfm\r\n */\r\nexport default class Field extends Component {\r\n\r\n /**\r\n * CONFIG\r\n * {Boolean} autofocus\r\n * {Boolean} disabled\r\n * {String} inputType (mobileinputtypes.com) How input types modify a phones virtual keyboard.\r\n * {String} label\r\n * {String} name\r\n * {Regular Expression} pattern\r\n * {Number} maxlength\r\n * {String} placeholder\r\n * {Boolean} readonly\r\n * {Boolean} required\r\n * {String} title\r\n * {Mixed} value\r\n */\r\n\r\n /**\r\n * Public.\r\n * @param {Boolean} disabled\r\n */\r\n setDisabled (disabled) {\r\n var me = this,\r\n key = 'disabled',\r\n oldValue = me.getConfig(key);\r\n\r\n if (disabled !== oldValue) {\r\n me._config.set(key, disabled);\r\n\r\n if (me._rendered) {\r\n me.toggleCls(me.disabledCls, disabled);\r\n\r\n if (disabled) {\r\n me._setAttribute(key, key);\r\n me._inputEl.dom.blur();\r\n } else {\r\n me._removeAttribute(key);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} key\r\n * @param {String} value\r\n */\r\n _setAttribute (key, value) {\r\n this._inputEl.dom.setAttribute(key, value);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} key\r\n */\r\n _removeAttribute (key) {\r\n this._inputEl.dom.removeAttribute(key);\r\n }\r\n\r\n getDisabled () {\r\n return this.getConfig('disabled') || false;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} value\r\n */\r\n setLabel (value) {\r\n var me = this,\r\n oldValue = me.getConfig('label');\r\n\r\n me._config.set('label', value);\r\n\r\n if (value !== oldValue) {\r\n if (me._rendered) {\r\n me.toggleCls(me._noLabelCls, value ? false : true);\r\n me._labelEl.update(value);\r\n }\r\n\r\n me._publish('label', value);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Boolean} value\r\n */\r\n setPlaceholder (value) {\r\n var me = this,\r\n key = 'placeholder';\r\n\r\n me._config.set(key, value);\r\n\r\n if (me._rendered) {;\r\n if (value) {\r\n me._setAttribute(key, value);\r\n } else {\r\n me._removeAttribute(key);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Boolean} value\r\n */\r\n setRequired (required) {\r\n var me = this,\r\n key = 'required';\r\n\r\n me._config.set(key, required);\r\n\r\n if (me._rendered) {\r\n if (required) {\r\n me._setAttribute(key, key);\r\n } else {\r\n me._removeAttribute(key);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Mixed} value\r\n * @param {Boolean} forceValue (Optional) Internal use only.\r\n */\r\n setValue (value, forceValue) {\r\n var oldValue = this._getRawValue();\r\n\r\n if (forceValue || value !== oldValue) {\r\n this._setRawValue(value);\r\n this._publish('value', value);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Mixed} value \r\n */\r\n _setRawValue (value) {\r\n this._config.set('value', value);\r\n\r\n if (this._rendered) {\r\n this._inputEl.dom.value = value === undefined ? '' : value;\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getValue () {\r\n return this._getRawValue();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getRawValue () {\r\n return this._rendered ? this._inputEl.dom.value : this.getConfig('value');\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n copyToClipboard () {\r\n if (!this._rendered) {\r\n return false;\r\n }\r\n\r\n if (this.select()) {\r\n try {\r\n document.execCommand('copy');\r\n this.blur();\r\n return true;\r\n } catch (err) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n focus () {\r\n if (this._rendered) {\r\n this._inputEl.dom.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n blur () {\r\n if (this._rendered) {\r\n this._inputEl.dom.blur();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n select () {\r\n var dom;\r\n\r\n if (this._rendered) {\r\n dom = this._inputEl.dom;\r\n\r\n if (dom.select) {\r\n dom.select();\r\n dom.setSelectionRange(0, 99999); // For mobile devices\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n isValid () {\r\n if (this._rendered) {\r\n return this._inputEl.dom.validity.valid;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @param {Object} config\r\n */\r\n constructor (config) {\r\n super(config);\r\n\r\n this._noLabelCls = 'smp-field-no-label';\r\n this.disabledCls = 'smp-disabled';\r\n this.isField = true;\r\n }\r\n\r\n _getBaseCls () {\r\n return 'smp-field';\r\n }\r\n\r\n _getRenderTpl () {\r\n return '
    ' +\r\n '' +\r\n '' +\r\n '
    ';\r\n }\r\n\r\n _getInputAttributes () {\r\n var autofocus = this.getConfig('autofocus'),\r\n inputType = this.getConfig('inputType'),\r\n maxlength = this.getConfig('maxlength'),\r\n name = this.getConfig('name'),\r\n pattern = this.getConfig('pattern'),\r\n readonly = this.getConfig('readonly'),\r\n required = this.getConfig('required'),\r\n title = this.getConfig('title'),\r\n value = inputType ? 'type=\"' + inputType + '\"' : '';\r\n\r\n if (autofocus) {\r\n value += ' autofocus';\r\n }\r\n\r\n if (maxlength) {\r\n value += ' maxlength=\"' + maxlength + '\"';\r\n }\r\n\r\n if (name) {\r\n value += ' id=\"' + name + '\" name=\"' + name + '\"';\r\n }\r\n\r\n if (readonly) {\r\n value += ' readonly';\r\n }\r\n\r\n if (required) {\r\n value += ' required';\r\n }\r\n \r\n if (pattern) {\r\n value += ' pattern=\"' + pattern + '\"';\r\n }\r\n\r\n if (title) {\r\n value += ' title=\"' + title + '\"';\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getRenderData () {\r\n var data = super._getRenderData(),\r\n disabled = this.getConfig('disabled'),\r\n label = this.getConfig('label');\r\n\r\n if (typeof disabled === 'boolean') {\r\n this.setDisabled(disabled);\r\n }\r\n\r\n if (!label) {\r\n data.cls += ' ' + this._noLabelCls;\r\n }\r\n\r\n data.attributes = this._getInputAttributes();\r\n data.label = label;\r\n return data;\r\n }\r\n\r\n _onRender () {\r\n super._onRender();\r\n\r\n var labelDom = Dom.select('.label', this._el.dom)[0],\r\n inputDom = Dom.select('.input', this._el.dom)[0],\r\n placeholder = this.getConfig('placeholder'),\r\n value = this.getConfig('value');\r\n\r\n this._labelEl = new Element(labelDom);\r\n this._inputEl = new Element(inputDom);\r\n\r\n if (placeholder) {\r\n this.setPlaceholder(placeholder);\r\n }\r\n\r\n if (value != undefined) {\r\n this.setValue(value, true);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initEvents () {\r\n super._initEvents();\r\n this._inputEl.on('blur', this._onBlur.bind(this));\r\n this._inputEl.on('change', this._onChange.bind(this));\r\n this._inputEl.on('input', this._onInput.bind(this));\r\n this._inputEl.on('keyup', this._onKeyUp.bind(this));\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onBlur (event) {\r\n if (this.getDisabled()) {\r\n return;\r\n }\r\n\r\n this._emit('blur', this);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onChange (event) {\r\n if (this.getDisabled()) {\r\n return;\r\n }\r\n\r\n var input = event.target,\r\n value = input.value;\r\n\r\n this._emit('change', this, value, event);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onInput (event) {\r\n if (this.getDisabled()) {\r\n return;\r\n }\r\n\r\n var input = event.target,\r\n value = input.value;\r\n\r\n this._emit('input', this, value, event);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onKeyUp (event) {\r\n if (this.getDisabled()) {\r\n return;\r\n }\r\n\r\n this._emit('keyup', this, event);\r\n }\r\n\r\n _beforeDestroy () {\r\n super._beforeDestroy();\r\n this._labelEl.destroy();\r\n this._inputEl.destroy();\r\n }\r\n\r\n}\r\n\r\nComponentManager.register(Field, 'field');\r\n","import ComponentManager from '../ComponentManager.js';\r\nimport Field from './Field.js';\r\n\r\nimport '../../resources/css/field/TextAreaField.css';\r\n\r\nexport default class TextAreaField extends Field {\r\n\r\n /**\r\n * CONFIG\r\n * {Number} cols\r\n * {Number} rows\r\n */\r\n\r\n constructor (config) {\r\n super(config);\r\n this.addCls('smp-textareafield');\r\n this.isTextAreaField = true;\r\n }\r\n\r\n _getRenderTpl () {\r\n return '
    ' +\r\n '{label}' +\r\n '' +\r\n '
    ';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getRenderData () {\r\n var data = super._getRenderData();\r\n\r\n data.cols = this.getConfig('cols') || 20;\r\n data.rows = this.getConfig('rows') || 4;\r\n\r\n return data;\r\n }\r\n}\r\n\r\nComponentManager.register(TextAreaField, 'textareafield');","import ComponentManager from '../ComponentManager.js';\r\nimport Field from './Field.js';\r\n\r\nimport '../../resources/css/field/TextField.css';\r\n\r\n/**\r\n * quackit.com/html_5/tags/html_input_tag.cfm\r\n */\r\nexport default class TextField extends Field {\r\n\r\n /**\r\n * @param {Object} config\r\n */\r\n constructor (config) {\r\n config.inputType = 'text';\r\n super(config);\r\n this.addCls('smp-textfield');\r\n this.isTextField = true;\r\n }\r\n\r\n}\r\n\r\nComponentManager.register(TextField, 'textfield');\r\n","import '../../resources/css/layout/Layout.css';\r\nimport ComponentManager from '../ComponentManager.js';\r\nimport Config from '../util/Config.js';\r\n\r\nexport default class Layout {\r\n constructor (config) {\r\n this._config = new Config(config);\r\n this.isLayout = true;\r\n }\r\n\r\n init (owner) {\r\n this._owner = owner;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} key\r\n */\r\n getConfig (key) {\r\n return this._config.get(key);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n doLayout () {\r\n var owner = this._owner,\r\n layoutEl = owner.getLayoutEl(),\r\n items = owner.getLayoutItems() || [],\r\n len = items.length,\r\n i = 0;\r\n\r\n this._setLayoutElCls(layoutEl);\r\n\r\n for (; i < len; i++) {\r\n this._setItemCls(items[i], i);\r\n }\r\n }\r\n\r\n /**\r\n * Private. Override in extending class.\r\n * @param {HTMLElement} layoutEl\r\n */\r\n _setLayoutElCls (layoutEl) {}\r\n\r\n /**\r\n * Private. Override in extending class.\r\n * @param {Component} item\r\n */\r\n _setItemCls (item) {}\r\n\r\n}\r\n\r\nComponentManager.register(Layout, 'layout');\r\n","import ComponentManager from '../ComponentManager.js';\r\nimport Layout from './Layout.js';\r\n\r\nexport default class LayoutColumn extends Layout {\r\n\r\n /**\r\n * CONFIG\r\n * {String} align\r\n */\r\n\r\n constructor (config) {\r\n super(config);\r\n\r\n this._alignOptions = {\r\n baseline: 'baseline',\r\n center: 'center',\r\n end: 'flex-end',\r\n start: 'flex-start',\r\n stretch: 'stretch'\r\n };\r\n\r\n this.isLayoutColumn = true;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {HTMLElement} layoutEl\r\n */\r\n _setLayoutElCls (layoutEl) {\r\n var cls = 'smp-flex smp-flex-column',\r\n align = this.getConfig('align');\r\n\r\n if (align && this._alignOptions[align]) {\r\n cls += ' smp-flex-align-' + this._alignOptions[align];\r\n }\r\n\r\n layoutEl.addCls(cls);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Component} item\r\n */\r\n _setItemCls (item) {\r\n var flex = item.getInitialConfig().flex;\r\n\r\n item.addCls('smp-flex-column-item');\r\n\r\n if (flex) {\r\n item.setStyle({\r\n '-webkit-box-flex': flex,\r\n '-moz-box-flex': flex,\r\n '-webkit-flex': flex,\r\n '-ms-flex': flex,\r\n 'flex': flex\r\n });\r\n }\r\n }\r\n\r\n}\r\n\r\nComponentManager.register(LayoutColumn, 'column');\r\n","import ComponentManager from '../ComponentManager.js';\r\nimport Layout from './Layout.js';\r\n\r\nexport default class LayoutRow extends Layout {\r\n\r\n /**\r\n * CONFIG\r\n * {String} align\r\n */\r\n\r\n constructor (config) {\r\n super(config);\r\n\r\n this._alignOptions = {\r\n baseline: 'baseline',\r\n center: 'center',\r\n end: 'flex-end',\r\n start: 'flex-start',\r\n stretch: 'stretch'\r\n };\r\n\r\n this.isLayoutRow = true;\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {HTMLElement} layoutEl\r\n */\r\n _setLayoutElCls (layoutEl) {\r\n var cls = 'smp-flex smp-flex-row',\r\n align = this.getConfig('align');\r\n\r\n if (align && this._alignOptions[align]) {\r\n cls += ' smp-flex-align-' + align;\r\n }\r\n\r\n layoutEl.addCls(cls);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Component} item\r\n */\r\n _setItemCls (item) {\r\n var flex = item.getInitialConfig().flex;\r\n\r\n item.addCls('smp-flex-row-item');\r\n\r\n if (flex) {\r\n item.setStyle({\r\n '-webkit-box-flex': flex,\r\n '-moz-box-flex': flex,\r\n '-webkit-flex': flex,\r\n '-ms-flex': flex,\r\n 'flex': flex\r\n });\r\n }\r\n }\r\n\r\n}\r\n\r\nComponentManager.register(LayoutRow, 'row');\r\n","import ComponentManager from './ComponentManager.js';\r\nimport Component from './Component.js';\r\nimport Dom from './util/Dom.js';\r\nimport Element from './Element.js';\r\n\r\nimport '../resources/css/Header.css';\r\n\r\nexport default class Header extends Component {\r\n\r\n /**\r\n * CONFIG\r\n * {Boolean} closable\r\n * {String} closeIconCls\r\n * {String} iconCls\r\n * {Element} renderTo\r\n * {String} title\r\n * {Object[]} tools\r\n */\r\n\r\n /**\r\n * Override to implement the iconCls for the close button.\r\n * Example: Header.getCloseIconCls = function () { return '...'; }\r\n * @param {Header}\r\n */\r\n static getCloseIconCls (header) {\r\n return '';\r\n }\r\n\r\n constructor (config) {\r\n super(config);\r\n this.isHeader = true;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getTitleEl () {\r\n return this._titleEl;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} value\r\n */\r\n setIconCls (value) {\r\n var oldValue = this.getConfig('iconCls'),\r\n el;\r\n\r\n if (value !== oldValue) {\r\n this._config.set('iconCls', value);\r\n\r\n if (this._rendered) {\r\n el = this._iconEl;\r\n\r\n if (el) {\r\n if (oldValue) {\r\n el.removeCls(oldValue);\r\n }\r\n\r\n el.addCls(value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} title\r\n */\r\n setTitle (title) {\r\n this._config.set('title', title);\r\n\r\n if (this._rendered) {\r\n this._titleEl.update(title);\r\n }\r\n }\r\n\r\n _getBaseCls () {\r\n return 'smp-header';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getRenderTpl () {\r\n var closable = this.getConfig('closable'),\r\n iconCls = this.getConfig('iconCls');\r\n\r\n return '
    ' +\r\n (iconCls ? '
    ' : '') +\r\n '
    {title}
    ' +\r\n (closable ? '
    ' : '') +\r\n '
    ';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getRenderData () {\r\n var data = super._getRenderData();\r\n\r\n var closable = this.getConfig('closable'),\r\n iconCls = this.getConfig('iconCls');\r\n\r\n if (closable) {\r\n data.closeIconCls = this.getConfig('closeIconCls') || Header.getCloseIconCls(this);\r\n }\r\n\r\n if (iconCls) {\r\n data.iconCls = iconCls;\r\n }\r\n\r\n data.title = this.getConfig('title');\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onRender () {\r\n super._onRender();\r\n\r\n var el = this._el,\r\n dom = el.dom,\r\n closeDom = Dom.select('.smp-close', dom)[0],\r\n iconDom = Dom.select('.smp-icon', dom)[0],\r\n tools = this.getConfig('tools');\r\n\r\n this._titleEl = new Element(Dom.select('.smp-title', dom)[0]);\r\n \r\n if (closeDom) {\r\n this._closeEl = new Element(closeDom);\r\n }\r\n\r\n if (iconDom) {\r\n this._iconEl = new Element(iconDom);\r\n }\r\n\r\n if (tools) {\r\n this._initTools();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initTools () {\r\n var me = this,\r\n tools = me.getConfig('tools');\r\n\r\n tools.forEach(me.addTool.bind(me));\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} config\r\n */\r\n addTool (config) {\r\n var me = this,\r\n iconCls = config.iconCls,\r\n title = config.tooltip || '',\r\n el = new Element('
    '),\r\n toolEls = me._toolEls;\r\n\r\n if (!toolEls) {\r\n toolEls = me._toolEls = [];\r\n }\r\n\r\n el.on('click', me._onToolClick.bind(me, config));\r\n toolEls.push(el);\r\n Dom.insertAfter(me._titleEl.dom, el.dom);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {Object} tool The config object.\r\n * @param {MouseEvent} event\r\n */\r\n _onToolClick (tool, event) {\r\n tool.handler(this._owner, this, tool, event);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initEvents () {\r\n super._initEvents();\r\n\r\n var closeEl = this._closeEl;\r\n\r\n if (closeEl) {\r\n closeEl.on('click', this._onCloseClick.bind(this));\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCloseClick () {\r\n this._emit('closeclick', this);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n destroy () {\r\n var me = this,\r\n closeEl = me._closeEl,\r\n iconEl = me._iconEl,\r\n toolEls = me._toolEls;\r\n\r\n if (closeEl) {\r\n closeEl.destroy();\r\n }\r\n\r\n if (iconEl) {\r\n iconEl.destroy();\r\n }\r\n\r\n me._titleEl.destroy();\r\n\r\n if (toolEls) {\r\n toolEls.forEach(function (el) {\r\n el.destroy();\r\n });\r\n }\r\n\r\n super.destroy();\r\n }\r\n\r\n}\r\n\r\nComponentManager.register(Header, 'header');\r\n","import '../resources/css/Panel.css';\r\nimport './Polyfills.js';\r\nimport ComponentManager from './ComponentManager';\r\nimport Component from './Component.js';\r\nimport Element from './Element.js';\r\nimport Header from './Header.js';\r\nimport Template from './util/Template.js';\r\n\r\nexport default class Panel extends Component {\r\n\r\n /**\r\n * CONFIG\r\n * {String} bodyCls\r\n * {String} bodyStyle\r\n * {Boolean} closable\r\n * {Object} headerConfig\r\n * {Object} footerConfig\r\n * {String} iconCls\r\n * {Components[]} items\r\n * {Layout/Layout Config} layout\r\n * {String} title\r\n */\r\n\r\n /**\r\n * Public.\r\n */\r\n close () {\r\n this.destroy();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getFooter () {\r\n return this._footer;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getLayout () {\r\n return this._layout;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getLayoutEl () {\r\n return this._bodyEl;\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n getLayoutItems () {\r\n return this._items;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Object} config\r\n */\r\n addTool (config) {\r\n this._header.addTool(config);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n setIconCls (cls) {\r\n this._header.setIconCls(cls);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n setTitle (title) {\r\n this._header.setTitle(title);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n constructor (config) {\r\n config = config || {};\r\n\r\n Object.assign(config, {\r\n bodyHtml: config.html,\r\n data: undefined,\r\n html: undefined,\r\n tpl: undefined\r\n });\r\n\r\n super(config);\r\n\r\n this._initLayout();\r\n this.isPanel = true;\r\n }\r\n\r\n _getBaseCls () {\r\n return 'smp-panel';\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initLayout () {\r\n this._layout = ComponentManager.create(this.getConfig('layout') || { type: 'column' });\r\n this._layout.init(this);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onRender () {\r\n super._onRender();\r\n\r\n this._renderHeader();\r\n this._renderBody();\r\n this._renderFooter();\r\n\r\n this._renderHtml();\r\n this._renderItems();\r\n this._doLayout();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _renderHeader () {\r\n var closable = this.getConfig('closable'),\r\n cfg = this.getConfig('headerConfig') || {},\r\n header;\r\n\r\n if (!cfg.iconCls) {\r\n cfg.iconCls = this.getConfig('iconCls');\r\n }\r\n\r\n if (!cfg.title) {\r\n cfg.title = this.getConfig('title');\r\n }\r\n\r\n cfg.closable = closable;\r\n\r\n header = cfg.type ? ComponentManager.create(cfg) : new Header(cfg);\r\n header._owner = this;\r\n header.render(this._el.dom);\r\n\r\n if (closable) {\r\n header.on('closeclick', this._onCloseClick.bind(this));\r\n }\r\n\r\n this._header = header;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onCloseClick () {\r\n this.close();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _renderBody () {\r\n var template = new Template(),\r\n bodyCls = this.getConfig('bodyCls'),\r\n bodyStyle = this.getConfig('bodyStyle'),\r\n data = { style: bodyStyle },\r\n tpl = '
    ',\r\n html = template.apply(tpl, data),\r\n bodyEl = new Element(html);\r\n\r\n if (bodyCls) {\r\n bodyEl.addCls(bodyCls);\r\n }\r\n\r\n if (bodyStyle) {\r\n bodyEl.setStyle(bodyStyle);\r\n }\r\n\r\n this._el.appendChild(bodyEl);\r\n this._bodyEl = bodyEl;\r\n }\r\n\r\n _renderFooter () {\r\n var me = this,\r\n cfg = me.getConfig('footerConfig'),\r\n footer;\r\n\r\n if (cfg) {\r\n if (cfg.type) {\r\n footer = ComponentManager.create(cfg);\r\n } else {\r\n footer = cfg;\r\n }\r\n\r\n footer._owner = me;\r\n footer.addCls('smp-footer');\r\n footer.render(me._el.dom);\r\n }\r\n\r\n me._footer = footer;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _renderHtml () {\r\n var html = this.getConfig('bodyHtml');\r\n\r\n if (html) {\r\n this._bodyEl.update(html);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _renderItems () {\r\n var items = this.getConfig('items');\r\n\r\n if (items) {\r\n this.add(items);\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Component/Component[]/Object/Object[]} item \r\n */\r\n add (item) {\r\n var cmp, i, len;\r\n\r\n if (Array.isArray(item)) {\r\n var added = [];\r\n\r\n for (i = 0, len = item.length; i < len; i++) {\r\n added.push(this.add(item[i]));\r\n }\r\n\r\n return added;\r\n }\r\n\r\n if (!this._items) {\r\n this._items = [];\r\n }\r\n\r\n if (item.type) {\r\n cmp = ComponentManager.create(item);\r\n } else {\r\n cmp = item;\r\n }\r\n\r\n cmp._owner = this;\r\n cmp.render(this._bodyEl);\r\n this._items.push(cmp);\r\n this._onAdd(item);\r\n\r\n return cmp;\r\n }\r\n\r\n _onAdd (items) {\r\n this._doLayout();\r\n this._emit('add', this, items);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _doLayout () {\r\n if (this._items) {\r\n this._layout.doLayout();\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Component} comp\r\n */\r\n remove (comp) {\r\n var len = this._items.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (this._items[i] === comp) {\r\n this._items.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n comp.destroy();\r\n this._onRemove();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n removeAll () {\r\n var items = this._items || [],\r\n len = items.length,\r\n i;\r\n\r\n if (len > 0) {\r\n i = items.length - 1;\r\n\r\n for (; i >= 0; i--) {\r\n items[i].destroy();\r\n }\r\n }\r\n\r\n this._items = [];\r\n this._onRemove();\r\n }\r\n\r\n _onRemove () {\r\n this._emit('remove', this);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _beforeDestroy () {\r\n var footer = this._footer;\r\n\r\n if (footer) {\r\n footer.destroy();\r\n }\r\n\r\n this._header.destroy();\r\n super._beforeDestroy();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n destroy () {\r\n this.removeAll();\r\n super.destroy();\r\n }\r\n\r\n}\r\n\r\nComponentManager.register(Panel, 'panel');\r\n","import '../../resources/css/util/Modal.css';\r\nimport Dom from './Dom.js';\r\nimport Element from '../Element.js';\r\n\r\n/**\r\n * Usage:\r\n * \r\n_onRender () {\r\n ...\r\n\r\n this._modal = new Modal({\r\n onClick: function () {\r\n me.close();\r\n },\r\n target: me.getEl()\r\n });\r\n}\r\n */\r\nexport default class Modal {\r\n\r\n /**\r\n * CONFIGS:\r\n * {Function} onClick (Optional) Called on 'mousedown' event if configured.\r\n * {Element} target \r\n */\r\n\r\n constructor (config) {\r\n var me = this;\r\n\r\n me._onClick = config.onClick;\r\n me._target = config.target;\r\n\r\n me._createEl();\r\n me._initEvents();\r\n }\r\n\r\n _createEl () {\r\n var me = this,\r\n el = me._el = new Element('
    ');\r\n\r\n Dom.insert(me._target.dom, el.dom, 'before');\r\n }\r\n\r\n _initEvents () {\r\n var me = this;\r\n\r\n me._target.on('destroy', me._onTargetDestroy.bind(me));\r\n\r\n if (me._onClick) {\r\n me._el.on('mousedown', me._onMouseDown.bind(me));\r\n }\r\n }\r\n\r\n _onMouseDown (event) {\r\n this._onClick(event);\r\n }\r\n\r\n _onTargetDestroy () {\r\n this.destroy();\r\n }\r\n\r\n getEl() {\r\n return this._el;\r\n }\r\n\r\n destroy () {\r\n this._el.destroy();\r\n }\r\n\r\n}\r\n","import '../../resources/css/util/Dialog.css';\r\nimport ComponentManager from '../ComponentManager';\r\nimport Dom from './Dom.js';\r\nimport Modal from './Modal';\r\n\r\n/**\r\n * @usage\r\n * \r\nvar comp = {\r\n ...,\r\n type: 'component'\r\n },\r\n options = {\r\n closeOnMaskClick: true,\r\n side: 'left'\r\n };\r\n\r\nDialog.show(comp, options);\r\n *\r\n * Side options are 'bottom', 'center', 'left', 'right' and 'top'.\r\n * Optionally set side to a custom value and add responsive CSS.\r\n *\r\nDialog.show(comp, {\r\n side: 'responsive'\r\n});\r\n *\r\n * Example custom CSS to show responsively:\r\n * Bigger than 390 (side = right)\r\n * \r\n@media only screen and (min-width: 390px) {\r\n .smp-dialog-responsive {\r\n max-width: 240px;\r\n width: 90%;\r\n\r\n bottom: 0;\r\n height: 100%;\r\n right: 0;\r\n top: 0;\r\n }\r\n\r\n .smp-dialog-show-responsive {\r\n right: 0;\r\n }\r\n}\r\n *\r\n * Smaller than 390 (side = bottom )\r\n@media only screen and (max-width: 389px) and (orientation: portrait), (max-height: 389px) and (orientation: landscape) {\r\n .smp-dialog-responsive {\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n width: 100%;\r\n }\r\n\r\n .smp-dialog-show-responsive {\r\n bottom: 0;\r\n }\r\n}\r\n */\r\nexport default class Dialog {\r\n\r\n /**\r\n * OPTIONS\r\n * {Boolean} closeOnBlur\r\n * {Boolean} closeOnMaskClick\r\n * {Boolean} modal\r\n * {String} side\r\n */\r\n\r\n constructor () {\r\n this._closingLookup = {};\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Component/Object} comp\r\n * @param {Object} options\r\n */\r\n static show (comp, options) {\r\n var me = Dialog.getMe(),\r\n side = options.side;\r\n\r\n comp = me._createComponent(comp, side);\r\n me._initEvents(comp, options);\r\n comp.render(options.target || document.body);\r\n me._onShow(comp, options);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Component} comp\r\n */\r\n static close (comp) {\r\n var me = Dialog.getMe();\r\n me._onClose(comp);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static getMe () {\r\n var me = Dialog._instance;\r\n\r\n if (!me) {\r\n me = Dialog._instance = new Dialog();\r\n }\r\n\r\n return me;\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _createComponent (config, side) {\r\n var cmp;\r\n\r\n if (config.type) {\r\n cmp = ComponentManager.create(config);\r\n } else {\r\n cmp = config;\r\n }\r\n\r\n cmp.addCls('smp-dialog smp-dialog-' + side);\r\n\r\n return cmp;\r\n }\r\n\r\n /**\r\n * Private.\r\n * Waiting to init modal will prevent mobile double tap\r\n * issues with showing dialogs.\r\n */\r\n _onShow (comp, options) {\r\n var me = Dialog.getMe();\r\n me._initModal(comp, options);\r\n comp._emit('show', comp);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initEvents (comp, options) {\r\n var me = Dialog.getMe();\r\n\r\n comp.on('beforedestroy', me._onBeforeDestroy.bind(me, comp));\r\n comp.on('render', me._onRender.bind(me, comp, options));\r\n me._initCloseOnBlur(comp, options);\r\n }\r\n\r\n _onBeforeDestroy (comp) {\r\n var me = this,\r\n lookup = me._closingLookup,\r\n id = comp.getId();\r\n\r\n if (!lookup[id]) {\r\n lookup[id] = true;\r\n Dialog.close(comp);\r\n\r\n return false;\r\n } else {\r\n delete lookup[id];\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initCloseOnBlur (comp, options) {\r\n if (options.closeOnBlur) {\r\n var me = Dialog.getMe();\r\n\r\n comp._boundDialogOnMouseDown = me.onDocMouseDown.bind(me, comp);\r\n Dom.on(document.body, 'mousedown', comp._boundDialogOnMouseDown);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n onDocMouseDown (comp, event) {\r\n if (!comp._el.contains(event.target)) {\r\n comp.destroy();\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onRender (comp, options) {\r\n var me = Dialog.getMe();\r\n me._doLayout(comp, options);\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _doLayout (comp, options) {\r\n var side = options.side,\r\n box;\r\n\r\n if (side === 'center') {\r\n box = comp.getBox();\r\n comp._el.setStyle('left', 'calc(50% - ' + (box.width / 2) + 'px)');\r\n comp._el.setStyle('top', 'calc(50% - ' + (box.height / 2) + 'px)');\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _initModal (comp, options) {\r\n var me = Dialog.getMe(),\r\n modal = options.modal,\r\n closeOnMaskClick = options.closeOnMaskClick;\r\n\r\n if (modal || closeOnMaskClick) {\r\n new Modal({\r\n onClick: closeOnMaskClick ? me._onModalClick.bind(me, comp) : undefined,\r\n target: comp._el\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onModalClick (comp) {\r\n comp.destroy();\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _getSide (comp) {\r\n var cs = comp._el.dom.classList,\r\n sides = ['bottom', 'center', 'left', 'right', 'top'],\r\n len = sides.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (cs.contains('smp-dialog-' + sides[i])) {\r\n return sides[i];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n */\r\n _onClose (comp) {\r\n var boundOnDocClick = comp._boundDialogOnMouseDown;\r\n\r\n if (boundOnDocClick) {\r\n Dom.un(document.body, 'mousedown', boundOnDocClick);\r\n }\r\n\r\n comp._emit('close', comp);\r\n comp.destroy();\r\n }\r\n\r\n}\r\n","import Dialog from 'smp-simple-components/src/util/Dialog.js';\r\nimport Dom from 'smp-simple-components/src/util/Dom.js';\r\n\r\n/**\r\n * A helper to prevent multiple instances of a dialog from being shown.\r\n *\r\n * @usage\r\nvar id = 'FileSheet',\r\n mgr = DialogManager;\r\n\r\nif (!mgr.isShowing(id)) {\r\n mgr.show(id, new FileSheet());\r\n}\r\n */\r\nexport default class DialogManager {\r\n\r\n constructor () {\r\n this.dialogs = {};\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static getMe () {\r\n var me = DialogManager._instance;\r\n\r\n if (!me) {\r\n me = DialogManager._instance = new DialogManager();\r\n }\r\n\r\n return me;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n */\r\n static get (id) {\r\n return DialogManager.getMe().dialogs[id];\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n */\r\n static isShowing (id) {\r\n return DialogManager.get(id) !== undefined;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} id\r\n * @param {Component} comp\r\n * @param {Object} options\r\n */\r\n static show (id, comp, options) {\r\n options = options || {};\r\n\r\n var me = DialogManager.getMe(),\r\n closeAll = options.closeAll;\r\n\r\n if (DialogManager.isShowing(id)) {\r\n return false;\r\n }\r\n\r\n if (closeAll) {\r\n DialogManager.closeAll();\r\n }\r\n\r\n me.dialogs[id] = comp;\r\n\r\n comp.on('destroy', function () {\r\n me._onSheetDestroy(id);\r\n });\r\n\r\n Dialog.show(comp, {\r\n closeOnBlur: options.closeOnBlur,\r\n closeOnMaskClick: options.closeOnMaskClick,\r\n modal: options.modal,\r\n side: options.side,\r\n target: Dom.select('.dialog-target')[0]\r\n });\r\n\r\n return true;\r\n }\r\n\r\n static closeAll () {\r\n var dialogs = DialogManager.getMe().dialogs;\r\n\r\n for (var key in dialogs) {\r\n if (dialogs[key]) {\r\n dialogs[key].close();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String} id\r\n */\r\n _onSheetDestroy (id) {\r\n this.dialogs[id] = undefined;\r\n }\r\n\r\n}\r\n","import Box from 'smp-simple-components/src/Box.js';\r\nimport Button from 'smp-simple-components/src/button/Button.js';\r\nimport TextAreaField from 'smp-simple-components/src/field/TextAreaField.js';\r\nimport TextField from 'smp-simple-components/src/field/TextField.js';\r\nimport LayoutColumn from 'smp-simple-components/src/layout/LayoutColumn.js'\r\nimport LayoutRow from 'smp-simple-components/src/layout/LayoutRow.js';\r\nimport Panel from 'smp-simple-components/src/Panel.js';\r\nimport DialogManager from '../DialogManager.js';\r\n\r\nimport '../../resources/css/view/DebugPanel.css';\r\n\r\nexport default class DebugPanel extends Panel {\r\n\r\n static show () {\r\n var config = {},\r\n options = {};\r\n\r\n Object.assign(config, {\r\n closable: true\r\n });\r\n\r\n Object.assign(options, {\r\n closeOnMaskClick: true,\r\n side: 'right'\r\n });\r\n\r\n var comp = new DebugPanel(config);\r\n DialogManager.show('DebugPanel', comp, options);\r\n }\r\n\r\n constructor (config) {\r\n super(config);\r\n this.addCls('debug-panel ui-panel-primary');\r\n }\r\n\r\n _initConfig (config) {\r\n config = config || {};\r\n\r\n var me = this,\r\n search = decodeURIComponent(window.location.search),\r\n searchSplit = search.substr(1).split('&'),\r\n items = [\r\n {\r\n cls: 'ui-button-primary ui-item ui-item-with-note',\r\n handler: 'onOpenInDebugMode',\r\n hidden: Cx.Config.debug === true,\r\n iconCls: 'icomoon-wrench',\r\n text: 'Open in Debug Mode',\r\n type: 'button'\r\n },\r\n {\r\n cls: 'ui-note ui-item',\r\n hidden: Cx.Config.debug === true,\r\n html: 'Open the designer in a new tab.',\r\n type: 'box'\r\n },\r\n {\r\n cls: 'ui-button-primary ui-item ui-item-with-note',\r\n handler: 'onExportCadworxfileClick',\r\n iconCls: 'icomoon-file-download',\r\n text: 'Export to Cadxworx File',\r\n type: 'button'\r\n },\r\n {\r\n cls: 'ui-note ui-item',\r\n html: 'Exporting to a Cadworx file is useful when there is a possible Grafika bug.
    Please provide the file when reporting the bug.',\r\n type: 'box'\r\n },\r\n // {\r\n // cls: 'ui-button-primary ui-item',\r\n // handler: 'onSendToCadworxTestAccountClick',\r\n // iconCls: 'icomoon-cloud-upload',\r\n // text: 'Send to Cadworx Test Account',\r\n // type: 'button'\r\n // },\r\n me._configField('Designer URL', decodeURIComponent(window.location.href)),\r\n me._configField('CoreJs', debugInfo.coreJsVersion),\r\n me._configField('Grafika', debugInfo.grafikaVersion),\r\n {\r\n cls: 'ui-header ui-item',\r\n html: 'URL Parameters',\r\n type: 'box'\r\n }\r\n ];\r\n\r\n searchSplit.sort(function (a, b) {\r\n return a < b ? -1 : 1;\r\n });\r\n\r\n searchSplit.forEach(function (item) {\r\n var itemSplit = item.split('='),\r\n label = itemSplit[0],\r\n value = itemSplit[1];\r\n\r\n if (label) {\r\n items.push(me._configField(label, value));\r\n }\r\n });\r\n\r\n Object.assign(config, {\r\n iconCls: 'icomoon-wrench',\r\n items: items,\r\n layout: {\r\n type: 'column'\r\n },\r\n title: 'Debug'\r\n });\r\n\r\n return config;\r\n }\r\n\r\n _configField (label, value) {\r\n return {\r\n cls: 'field-wrap ui-item',\r\n items: [\r\n {\r\n cls: 'ui-field-primary',\r\n flex: 1,\r\n label: label,\r\n value: value,\r\n type: 'textfield'\r\n },\r\n {\r\n cls: 'ui-button-primary',\r\n handler: function (btn) {\r\n btn._owner.getLayoutItems()[0].copyToClipboard();\r\n },\r\n iconCls: 'icomoon-copy',\r\n type: 'button'\r\n }\r\n ],\r\n layout: {\r\n type: 'row'\r\n },\r\n type: 'container'\r\n };\r\n }\r\n\r\n onExportCadworxfileClick () {\r\n Application.debugUtil.exportToCadworx();\r\n }\r\n\r\n onOpenInDebugMode () {\r\n var url = window.location.href + '&cadx.debug=true';\r\n window.open(url, '_blank');\r\n }\r\n\r\n // onSendToCadworxTestAccountClick (btn) {\r\n // var iconCls = btn.getConfig('iconCls'),\r\n // text = btn.getConfig('text');\r\n\r\n // btn.setIconCls('icomoon-cog spin');\r\n // btn.setText('Sending...');\r\n\r\n // Application.debugUtil.sendToCadworxTestAccount$().then(\r\n // function () {\r\n // btn.setIconCls(iconCls);\r\n // btn.setText(text);\r\n // }\r\n // );\r\n // }\r\n\r\n}\r\n","import CadworxAPI from '../api/CadworxAPI';\r\nimport ExternalAPI from '../api/ExternalAPI';\r\nimport DebugPanel from '../view/DebugPanel'\r\n\r\nexport default class DebugUtil {\r\n\r\n static showDebugInfo () {\r\n DebugPanel.show();\r\n }\r\n\r\n /**\r\n * Public.\r\n * Allows us to hand .Cadx file to Grafika team.\r\n */\r\n static exportToCadworx () {\r\n var doc = Application.designDocument(),\r\n tempDoc = new Cx.Document(),\r\n dateString = DebugUtil._getDateString(),\r\n asRaster = false,\r\n fileName = 'Debug_' + dateString + '.Cadx',\r\n separateByColor = false,\r\n data;\r\n\r\n // Export only the active page\r\n tempDoc.pages = doc.pages[doc.activePageIndex];\r\n\r\n data = {\r\n AsRaster: asRaster,\r\n Doc: { Cdl: tempDoc.toXmlString() },\r\n FileName: fileName,\r\n SeparateColors: separateByColor === true ? 'Brush' : 'None'\r\n };\r\n\r\n Cx.Core.Document.download_(data);\r\n }\r\n\r\n static _getDateString () {\r\n var d = new Date();\r\n return (d.getMonth()+1) + '_' +\r\n d.getDate() + '_' +\r\n d.getFullYear() + '_' +\r\n d.getHours() + '_' +\r\n d.getMinutes();\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static sendToCadworxTestAccount$ () {\r\n return DebugUtil._moveResourcesToTestAccount$().then(function () {\r\n return DebugUtil._saveToTestAccount$().then(function (data) {\r\n var dynamicFields = Application.designService.getDynamicText(),\r\n info = Application.orderService.metadata(),\r\n pricingLabels = Application.orderService.pricingLabels(),\r\n postMessageData = {\r\n background_document_id: data.backgroundDocId,\r\n design_document_id: data.designDocId,\r\n dynamicFields: dynamicFields,\r\n info: info,\r\n pricingLabels: pricingLabels,\r\n test: true // Flag to create the product\r\n },\r\n json = {\r\n data: postMessageData,\r\n message: 'saveResponse'\r\n },\r\n trustedSource = DebugUtil._trustedSource();\r\n\r\n parent.postMessage(json, trustedSource);\r\n\r\n return Cx.resolve();\r\n });\r\n });\r\n }\r\n\r\n static _moveResourcesToTestAccount$ () {\r\n var remoteConfig = DebugUtil._remoteConfig(),\r\n remoteSessionId = DebugUtil._sessionId(),\r\n app = Application,\r\n bgDoc = app.backgroundDocument(),\r\n designDoc = app.designDocument(),\r\n figures = [];\r\n\r\n bgDoc.figures.forEach(function (f) {\r\n figures.push(f);\r\n });\r\n\r\n designDoc.figures.forEach(function (f) {\r\n figures.push(f);\r\n });\r\n\r\n return CadworxAPI.moveFigures$(remoteConfig, remoteSessionId, figures);\r\n }\r\n\r\n static _saveToTestAccount$ () {\r\n var app = Application,\r\n bgDoc = app.backgroundDocument();\r\n\r\n return DebugUtil._saveDocumentToTestAccount$(bgDoc).then(function (savedBgId) {\r\n var designDoc = app.designDocument();\r\n\r\n return DebugUtil._saveDocumentToTestAccount$(designDoc).then(function (savedDocId) {\r\n return Cx.resolve({\r\n backgroundDocId: savedBgId,\r\n designDocId: savedDocId\r\n });\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * @param {Cx.Document} doc\r\n */\r\n static _saveDocumentToTestAccount$ (doc) {\r\n var config = DebugUtil._remoteConfig(),\r\n sessionId = DebugUtil._sessionId(),\r\n server = DebugUtil._remoteServer(),\r\n options = {\r\n contentType: 'application/json; charset=utf-8',\r\n data: undefined,\r\n dataType: 'json',\r\n type: 'POST',\r\n url: server + Cx.Core.Document.Url.Create\r\n },\r\n data = {\r\n config: config,\r\n ident: { SessionId: sessionId, SuperUser: false },\r\n model: {\r\n Cdl: doc.toXmlString(),\r\n Class1: doc.class1,\r\n Class2: doc.class2,\r\n Class3: doc.class3,\r\n DocType: doc.docType,\r\n ExternalId: doc.externalId,\r\n Modified: doc.modified,\r\n Name: doc.name,\r\n Notes: doc.notes,\r\n Tags: []\r\n }\r\n };\r\n\r\n doc.tags.forEach(function (tag) {\r\n data.model.Tags.push({ Name: tag.name });\r\n });\r\n\r\n options.data = Cx.encode(data);\r\n\r\n return ExternalAPI.request$(options).then(function (responseModel) {\r\n return responseModel.Id\r\n });\r\n }\r\n\r\n static _remoteConfig () {\r\n return 'spiritsale';\r\n }\r\n\r\n static _remoteServer () {\r\n return '//cxcore-commerce.azurewebsites.net/';\r\n }\r\n\r\n static _sessionId () {\r\n return '539311b7-846f-47bd-8936-ebeccc07e933';\r\n }\r\n\r\n static _trustedSource () {\r\n return 'https://cadworx-test.spiritsale-qc.com';\r\n }\r\n\r\n}\r\n","import Querystring from './Querystring.js';\r\n\r\n/**\r\n * Cross-origin communication (postMessage).\r\n */\r\nexport default class PostMessage {\r\n\r\n /**\r\n * Public.\r\n * @param {Boolean} v\r\n */\r\n static enlargeToggle (v) {\r\n PostMessage.send('enlargeToggle', v);\r\n }\r\n\r\n /**\r\n * Public.\r\n */\r\n static setDesignerReady () {\r\n PostMessage.send('designerReady', true);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {object} data\r\n */\r\n static setDynamicFields (data) {\r\n PostMessage.send('setDynamicFields', data);\r\n }\r\n\r\n /**\r\n * Public.\r\n * The user clicked the 'Estimate Cost' button (CME only).\r\n * @param {object} data\r\n */\r\n static setEstimatePrice (data) {\r\n PostMessage.send('estimatePrice', data);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {object} data\r\n * @param {Boolean} success\r\n */\r\n static setSaveResponse (data, success) {\r\n PostMessage.send('saveResponse', data, success);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Boolean} v\r\n */\r\n static setUnsavedChanges (v) {\r\n PostMessage.send('unsavedChanges', v);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {object} data\r\n */\r\n static setUpCharges (data) {\r\n PostMessage.send('setUpCharges', data);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Boolean} v\r\n */\r\n static setVariantCompleted (v) {\r\n PostMessage.send('setVariantCompleted', {}, v);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {object} data\r\n */\r\n static removeDesign (data) {\r\n PostMessage.send('deleteAlternative', data);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} message\r\n * @param {Object} data\r\n * @param {Boolean} success\r\n */\r\n static send (message, data, success) {\r\n var trustedSource = Querystring.trustedSource(),\r\n json;\r\n\r\n if (trustedSource && message && (data != null)) {\r\n json = { message: message, data: data };\r\n\r\n if (typeof success === 'boolean') {\r\n json.success = success;\r\n }\r\n\r\n parent.postMessage(json, trustedSource);\r\n }\r\n }\r\n\r\n constructor () {\r\n if (window.addEventListener){\r\n addEventListener('message', this._onMessage.bind(this), false);\r\n } else {\r\n attachEvent('onmessage', this._onMessage.bind(this));\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {MessageEvent} event \r\n */\r\n _onMessage (event) {\r\n var trustedSource = Querystring.trustedSource(),\r\n message;\r\n\r\n if (event.origin !== trustedSource) {\r\n return;\r\n }\r\n\r\n message = event.data.message;\r\n\r\n if (message === 'deleteAlternativeResponse') {\r\n this._onDeleteAlternative(event);\r\n }\r\n else if (message === 'save') {\r\n this._onSave(event);\r\n }\r\n else if (message === 'setVariant') {\r\n this._onSetVariant(event);\r\n }\r\n else if (message === 'getView') {\r\n this._onGetView();\r\n }\r\n else if (message === 'setView') {\r\n this._onSetView(event);\r\n }\r\n else if (message === 'changedQty') {\r\n this._onChangedQty(event);\r\n }\r\n else if (message === 'setDynamicValue' ) {\r\n this._onSetDynamicValue(event);\r\n }\r\n else if (message === 'setViewByDynamicValue') {\r\n this._onSetViewByDynamicValue(event);\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {MessageEvent} event \r\n */\r\n _onDeleteAlternative (event) {\r\n Application.onDesignRemoved(event.data.data.document_id);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Save / Add to Cart\r\n * @param {MessageEvent} event \r\n */\r\n _onSave (event) {\r\n var me = this,\r\n app = Application;\r\n\r\n app.canSaveToCart$().then(\r\n function (result) {\r\n if (result.success === true) {\r\n app.saveToCart$().then(\r\n function (data) {\r\n me._onSaveSuccess(data, event);\r\n }\r\n );\r\n }\r\n\r\n else {\r\n me._onSaveError(result.errors, event);\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Private.\r\n * Send success message.\r\n * @param {Object} data\r\n * @param {MessageEvent} event \r\n */\r\n _onSaveSuccess (data, event) {\r\n var json = {\r\n data: data,\r\n message: 'saveResponse',\r\n success: true\r\n };\r\n\r\n event.source.postMessage(json, event.origin);\r\n }\r\n\r\n /**\r\n * Private.\r\n * Send error message.\r\n * @param {MessageEvent} event \r\n */\r\n _onSaveError (errors, event) {\r\n var json = {\r\n errors: errors,\r\n message: 'saveResponse',\r\n success: false\r\n };\r\n\r\n event.source.postMessage(json, event.origin);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {MessageEvent} event \r\n */\r\n _onSetVariant (event) {\r\n Application.variant(event.data.data.id);\r\n }\r\n\r\n _onGetView () {\r\n var data = {\r\n view: Application.designService.activePage()\r\n };\r\n\r\n PostMessage.send('getViewResponse', data);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {MessageEvent} event \r\n */\r\n _onSetView (event) {\r\n var id = event.data.data.view;\r\n var page = Application.designService.canvas().pages.find((p) => p.id === id);\r\n\r\n if (page) {\r\n try{\r\n Application.activePage(id);\r\n PostMessage.send('setViewResponse', { success: true });\r\n }\r\n catch(e){\r\n PostMessage.send('setViewResponse', { message: 'Error while setting page', success: false });\r\n }\r\n }\r\n else {\r\n PostMessage.send('setViewResponse', { message: 'Page not found', success: false });\r\n }\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {MessageEvent} event \r\n */\r\n _onChangedQty (event) {\r\n Application.quantity(event.data.data.qty);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {MessageEvent} event \r\n */\r\n _onSetDynamicValue (event) {\r\n var data = event.data.data;\r\n Application.setDynamicText$(data.id, data.text, data.hidden);\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {MessageEvent} event \r\n */\r\n _onSetViewByDynamicValue (event) {\r\n var id = event.data.data.id; // id => Meta.getFigureId(figure)\r\n Application.viewByFigureId(id);\r\n }\r\n\r\n}\r\n","export default class Units {\r\n\r\n /**\r\n * Public.\r\n * @param {Number} mmValue\r\n */\r\n toDisplayString (mmValue) {\r\n return this.toUser(mmValue) + ' ' + this.userUnit;\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} userValue\r\n * @param {String} unit\r\n */\r\n toDocument (userValue, unit) {\r\n var userUnit = (unit) ? unit : this.userUnit;\r\n var value;\r\n\r\n switch (userUnit) {\r\n case 'mm':\r\n value = userValue;\r\n break;\r\n case 'cm':\r\n value = userValue * 10;\r\n break;\r\n case 'in':\r\n value = userValue * 25.4;\r\n break;\r\n case 'pt':\r\n value = userValue * 25.4 / 72;\r\n break;\r\n }\r\n\r\n return parseFloat(value).toFixed(2);\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {Number} mmValue\r\n */\r\n toUser (mmValue) {\r\n var value;\r\n\r\n switch (this.userUnit) {\r\n case 'mm':\r\n value = mmValue;\r\n break;\r\n case 'cm':\r\n value = mmValue / 10;\r\n break;\r\n case 'in':\r\n value = mmValue / 25.4;\r\n break;\r\n case 'pt':\r\n value = mmValue / 25.4 * 72;\r\n break;\r\n }\r\n\r\n return parseFloat(value).toFixed(2);\r\n }\r\n\r\n /**\r\n * Public.\r\n * Register a class instance.\r\n * Requires onUnitChanged() method which accepts 'unit' and 'previousUnit' params.\r\n */\r\n register (o) {\r\n this.registeredItems.push(o);\r\n }\r\n\r\n /**\r\n * Public.\r\n * Unregister a class instance.\r\n */\r\n unRegister (o) {\r\n var items = this.registeredItems,\r\n len = items.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n if (items[i] === o) {\r\n items.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String} unit\r\n */\r\n setUnit (unit) {\r\n var previousUnit = this.userUnit;\r\n\r\n if (unit !== previousUnit) {\r\n this.userUnit = unit;\r\n\r\n for (var i = 0, len = this.registeredItems.length; i < len; i++) {\r\n this.registeredItems[i].onUnitChanged(unit, previousUnit);\r\n }\r\n }\r\n }\r\n\r\n constructor () {\r\n /**\r\n * An array of registered class instances.\r\n * The class to be registered is required to have onUnitChanged() method\r\n * which accepts 'unit' and 'previousUnit' params.\r\n */\r\n this.registeredItems = [];\r\n this.userUnit = 'in'; // options: 'mm', 'cm', 'in', 'pt'\r\n }\r\n\r\n}\r\n","import unique from './helper/unique.js';\r\n\r\nexport default class UseCase {\r\n\r\n constructor () {\r\n var app = Application,\r\n designService = app.designService,\r\n decorationService = app.decorationService,\r\n effectService = app.effectService,\r\n productService = app.productService,\r\n monogramService = app.monogramService,\r\n orderService = app.orderService,\r\n warningService = app.warningService;\r\n\r\n this._map = {\r\n 'allowModifyDesign': { services: [productService] },\r\n 'autoHideBottomToolbar': { services: [productService] },\r\n 'autoHideTopToolbar': { services: [productService] },\r\n 'canAddContents': { services: [designService] },\r\n 'canAddDecoration': { services: [decorationService] },\r\n 'canAddEffect': { services: [effectService, productService] },\r\n 'canAlign': { services: [designService] },\r\n 'canBumpBackgroundSize': { services: [designService] },\r\n 'canBumpAllBackgroundsSize': { services: [designService] },\r\n 'canChangeAspectRatio': { services: [productService] },\r\n // 'canClearTransferGroup': { services: [orderService] },\r\n 'canCreateTransferGroup': { services: [orderService] },\r\n 'canDraw': { services: [productService] },\r\n 'canDrawShape': { services: [productService] },\r\n 'canDuplicate': { services: [designService] },\r\n 'canEditBrush': { services: [designService] },\r\n 'canEditCharSpacing': { services: [designService, productService] },\r\n 'canEditDecorations': { services: [decorationService] },\r\n 'canEditEffects': { services: [effectService] },\r\n 'canEditFont': { services: [designService] },\r\n 'canEditLineDirection': { services: [designService, productService] },\r\n 'canEditMaxWidth': { services: [designService] },\r\n 'canEditMonogramText': { services: [monogramService] },\r\n 'canEditOptional': { services: [orderService] },\r\n 'canEditPen': { services: [designService, productService] },\r\n 'canEditPricingLabel': { services: [orderService] },\r\n 'canEditProduct': { services: [productService] },\r\n 'canEditSize': { services: [designService] },\r\n 'canEditText': { services: [designService] },\r\n 'canExtractContents': { services: [designService] },\r\n 'canGroup': { services: [designService] },\r\n 'canMirror': { services: [designService] },\r\n 'canOrder': { services: [designService] },\r\n 'canPositionFigures': { services: [productService] },\r\n 'canRedo': { services: [designService] },\r\n 'canRemove': { services: [designService] },\r\n 'canRemoveFromTransferGroup': { services: [orderService] },\r\n 'canReshape': { services: [designService] },\r\n 'canReshapeMulti': { services: [designService] },\r\n 'canSave': { services: [designService, orderService, warningService] },\r\n 'canSaveDesign': { services: [warningService] },\r\n 'canSetTextEditable': { services: [designService] },\r\n 'canUndo': { services: [designService] },\r\n 'canUngroup': { services: [designService] },\r\n 'canZoom': { services: [designService] },\r\n 'canZoomToBackground': { services: [designService] },\r\n 'canZoomToDesign': { services: [designService] },\r\n 'showObjectMenu': { services: [productService] },\r\n 'showTopToolbar': { services: [productService] }\r\n };\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String[]} useCases\r\n * @param {Function} handler\r\n */\r\n register (useCases, handler) {\r\n var services = this._getServices(useCases);\r\n\r\n services.forEach(function (s) {\r\n s.onReady(handler);\r\n s.register(handler);\r\n });\r\n }\r\n\r\n /**\r\n * Public.\r\n * @param {String[]} useCases\r\n * @param {Function} handler\r\n */\r\n unRegister (useCases, handler) {\r\n var services = this._getServices(useCases);\r\n\r\n services.forEach(function (s) {\r\n s.unRegister(handler);\r\n });\r\n }\r\n\r\n /**\r\n * Private.\r\n * @param {String[]} useCases\r\n */\r\n _getServices (useCases) {\r\n var map = this._map,\r\n services = [];\r\n\r\n useCases.forEach(function (useCase) {\r\n map[useCase].services.forEach(function (service) {\r\n services.push(service);\r\n });\r\n });\r\n\r\n return unique(services);\r\n }\r\n\r\n}\r\n","import '../../resources/css/field/SelectField.css';\r\nimport Dom from '../util/Dom.js';\r\nimport ComponentManager from '../ComponentManager.js';\r\nimport Element from '../Element.js';\r\nimport Field from './Field.js';\r\n\r\n/**\r\n * @usage\r\n * \r\n * Options, no grouping\r\n{\r\n label: '...',\r\n listeners: {\r\n change: function (field, value) { ... }\r\n },\r\n options: [\r\n {\r\n text: '...',\r\n value: '...'\r\n }\r\n ],\r\n type: 'selectfield'\r\n}\r\n *\r\n * Or, groups\r\n{\r\n label: '...',\r\n listeners: {\r\n change: function (field, value) { ... }\r\n },\r\n groups: [\r\n {\r\n label: '...',\r\n options: [\r\n {\r\n text: '...',\r\n value: '...'\r\n }\r\n ]\r\n }\r\n ],\r\n type: 'selectfield'\r\n}\r\n */\r\nexport default class SelectField extends Field {\r\n\r\n /**\r\n * CONFIG\r\n * {Boolean} editable\r\n * {Object[]} groups\r\n * {Boolean} multiple Specifies that multiple options can be selected at once.\r\n * {Object[]} options\r\n * {Number} size Defines the number of visible options in a drop-down list.\r\n */\r\n\r\n constructor (config) {\r\n super(config);\r\n this.addCls('smp-selectfield');\r\n this.isSelectField = true;\r\n }\r\n\r\n isEditable () {\r\n return this.getConfig('editable');\r\n }\r\n\r\n /**\r\n * @param {Object[]} groups\r\n * [\r\n * {\r\n * label: '...',\r\n * options: [...]\r\n * }\r\n * ]\r\n */\r\n setGroups (groups) {\r\n this._config.set('options', groups);\r\n \r\n if (this._rendered) {\r\n this._createGroups(groups, this._selectEl.dom);\r\n this._initValue();\r\n }\r\n }\r\n\r\n /**\r\n * @param {String[]} groups \r\n */\r\n _createGroups (groups) {\r\n var len = groups.length,\r\n i = 0;\r\n\r\n for (; i < len; i++) {\r\n this._selectEl.dom.appendChild(this._createGroup(groups[i]));\r\n }\r\n }\r\n\r\n _createGroup (config) {\r\n var group = document.createElement('optgroup');\r\n group.label = config.label;\r\n\r\n this._createOptions(config.options, group);\r\n\r\n return group;\r\n }\r\n\r\n /**\r\n * @param {Object[]} options\r\n * [\r\n * {\r\n * // A Boolean that sets the selected attribute value, i.e. so that this