{"version":3,"sources":["webpack:///../WCC.UI/App/extensions/knockout/bindings/animationComplete.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/appear.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/autoNumeric.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/autogrow.js","webpack:///../WCC.UI/App/extensions/knockout/bindings/centerNode.js","webpack:///../WCC.UI/App/extensions/knockout/bindings/customElement.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/dom.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/expand.js","webpack:///../WCC.UI/App/extensions/knockout/bindings/hideContext.js","webpack:///../WCC.UI/App/extensions/knockout/bindings/htmlWithComponents.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/iCheckNew.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/imageLoaded.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/inViewPortNew.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/kohtml.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/lock.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/log.js","webpack:///../WCC.UI/App/extensions/knockout/bindings/nodes.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/position.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/rangeSlider.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/safehtml.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/slideToggle.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/smartDropdown.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/tooltip.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/transitionComplete.js","webpack:///../WCC.UI/App/extensions/knockout/bindings/validationTooltip.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/videoStreamSrc.ts","webpack:///../WCC.UI/App/extensions/knockout/bindings/widgetsContainer.ts","webpack:///../WCC.UI/App/extensions/knockout/components/context.ts","webpack:///../WCC.UI/App/extensions/knockout/components/global.js","webpack:///../WCC.UI/App/extensions/knockout/constructors/disposableCollection.ts","webpack:///../WCC.UI/App/extensions/knockout/constructors/flattenComputed.ts","webpack:///../WCC.UI/App/extensions/knockout/constructors/fromPromise.ts","webpack:///../WCC.UI/App/extensions/knockout/constructors/multistreamComputed.ts","webpack:///../WCC.UI/App/extensions/knockout/constructors/observableMap.ts","webpack:///../WCC.UI/App/extensions/knockout/constructors/strictComputed.ts","webpack:///../WCC.UI/App/extensions/knockout/constructors/timeCondition.ts","webpack:///../WCC.UI/App/extensions/knockout/extended.js","webpack:///../WCC.UI/App/extensions/knockout/extenders/notifyIfChanged.ts","webpack:///../WCC.UI/App/extensions/knockout/extenders/validate.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/all.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/any.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/attachTo.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/average.js","webpack:///../WCC.UI/App/extensions/knockout/functions/cache.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/chainNotNull.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/concat.js","webpack:///../WCC.UI/App/extensions/knockout/functions/count.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/dec.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/default.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/difference.js","webpack:///../WCC.UI/App/extensions/knockout/functions/filter.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/find.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/first.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/flatten.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/groupBy.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/history.js","webpack:///../WCC.UI/App/extensions/knockout/functions/inc.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/includes.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/indexOf.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/intersection.js","webpack:///../WCC.UI/App/extensions/knockout/functions/invoke.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/invokeNotNull.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/is.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/isAwake.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/isEmpty.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/isNotNull.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/isNull.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/last.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/log.js","webpack:///../WCC.UI/App/extensions/knockout/functions/map2.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/mapNotNull.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/mapSingle.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/mergeWith.js","webpack:///../WCC.UI/App/extensions/knockout/functions/nullIfDefault.js","webpack:///../WCC.UI/App/extensions/knockout/functions/onArrayChange.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/pluck.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/prev.js","webpack:///../WCC.UI/App/extensions/knockout/functions/proxy.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/readOnly.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/reduce.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/select.js","webpack:///../WCC.UI/App/extensions/knockout/functions/selectNotNull.js","webpack:///../WCC.UI/App/extensions/knockout/functions/setIfDifferent.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/sort.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/sortBy.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/subscribeIf.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/tap.js","webpack:///../WCC.UI/App/extensions/knockout/functions/toDate.js","webpack:///../WCC.UI/App/extensions/knockout/functions/toEntity.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/toFlag.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/toLock.js","webpack:///../WCC.UI/App/extensions/knockout/functions/toNodes.js","webpack:///../WCC.UI/App/extensions/knockout/functions/toPrts.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/toPx.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/toRevertPrts.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/toggle.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/trackChanges.js","webpack:///../WCC.UI/App/extensions/knockout/functions/trim.js","webpack:///../WCC.UI/App/extensions/knockout/functions/uniq.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/unwrap.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/unwrapPromise.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/update.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/when.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/whenChanged.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/whenFalse.ts","webpack:///../WCC.UI/App/extensions/knockout/functions/whenNotNull.ts","webpack:///../WCC.UI/App/extensions/knockout/loaders/promise/loader.ts","webpack:///../WCC.UI/App/extensions/knockout/loaders/promise/master.ts","webpack:///../WCC.UI/App/extensions/knockout/loaders/promise/template.ts","webpack:///../WCC.UI/App/extensions/knockout/loaders/promise/vm.ts","webpack:///../WCC.UI/App/extensions/knockout/main.js","webpack:///../WCC.UI/App/extensions/underscore/generate.js","webpack:///../WCC.UI/App/extensions/underscore/sameAs.js","webpack:///../WCC.UI/App/extensions/underscore/takeWhile.js","webpack:///../WCC.UI/Scripts/WCC/CommonScripts/WCCKOCustomBindings.js"],"names":["ko","bindingHandlers","animationComplete","init","element","valueAccessor","action","effects","withEffects","_","isFunction","register","DOMHelpers","onAnimationComplete","utils","domNodeDisposal","addDisposeCallback","dispose","appear","data","pureComputed","unwrap","animationName","pluck","showAnimationName","mapSingle","name","isString","hideAnimationName","shouldAnimateInitialFrame","value","isBoolean","onStartWrapper","func","noop","onEndWrapper","isVisible","cDuration","isNumber","getAnimationDuration","style","display","animator","GenericAnimator","state","duration","frame","context","progress","isInitial","onStart","onEnd","classList","add","animationDuration","remove","autoNumeric","allBindingsAccessor","viewModel","bindingContext","formatOptions","$element","$","nOptions","decimalCharacter","digitGroupSeparator","minimumValue","_formatOptions$langOp","_formatOptions$decima","undefined","langOptions","decimalPlaces","digits","maximumValue","Math","pow","toString","flattenComputed","autonumericObj","AutoNumeric","length","setUnformatted","autonumeric","define","$item","$mirror","after","css","onChange","key","val","replace","html","height","onKeyDown","e","keydown","keyup","on","off","defer","trigger","autogrow","update","Disposables","centerNode","disposables","processor","computed","ignoreDependencies","$window","window","offset","observable","debounce","top","getBoundingClientRect","newOffset","innerHeight","scrollTop","ceil","MutationObserver","observer","observe","attributes","childList","subtree","disconnect","subscribe","forEach","s","virtualElements","allowedBindings","customElement","getCustomElement","model","ref","params","children","childNodes","buildParams","withEffect","root","setDomNodeChildren","map","node","cloneNode","applyBindings","createChildContext","dom","allBindings","requestAnimationFrame","isObservable","isArray","item","expand","excludedNodes","exclude","oShrinkBy","throttle","shrinkBy","reduce","result","outerHeight","document","body","sShrinkBy","hideContext","toContext","store","toStore","newContext","__proto__","chain","filter","each","applyBindingsToDescendants","controlsDescendantBindings","htmlWithComponents","innerHTML","iCheckNew","mutations","options","checkboxClass","iClass","radioClass","setValue","newValue","inc","iCheck","$iCheck","parent","isChecked","hasClass","addClass","removeClass","imageLoaded","config","oLoaded","oFailed","isWritableObservable","isObject","loaded","failed","HTMLImageElement","image","awaiter","async","system","getPromiseAwaiter","ImageHelpers","waitImage","ex","attributeFilter","inViewPortNew","_DOMHelpers$getScroll","oElement","default","oContainer","getScrollingContainer","oEnable","oIgnoreHeight","oValue","error","binding","container","enable","ignoreHeight","visibilityTracker","NodeVisibilityTracker","kohtml","nodes","parseHtmlFragment","timeout","stack","process","sortBy","priority","shift","push","lock","_ko$unwrap","executed","clone","emptyNode","target","closest","arrayRemoveItem","log","console","getCSSBinding","property","position","toPx","right","bottom","left","IonRangeSliderModel","constructor","isLabelVisible","this","label","originalItem","rangeSlider","_allBindings$rangeOpt","rangeOptions","sliderValues","values","sliderOptions","type","toValue","step","grid","hide_min_max","hide_from_to","skin","usesRangleSliderModel","i","prettify_enabled","prettify","num","obj","find","current_label","extend","min","max","from","from_min","to","to_max","onFinish","fromValToPush","toValToPush","from_value","toItem","to_value","Array","removeAll","ionRangeSlider","slider","destroy","selectedItem","indexOf","safehtml","slideToggle","isExpanded","doneCallback","get","show","hide","stop","slideDown","slideDuration","start","showOverflow","complete","slideUp","smartDropdown","optionsOrValue","_getElement","getElement","toggleClass","className","scope","documentElement","contains","updateLazy","toUICallback","_$dropdown$width","_$subMenu$width","device","isMobile","$dropdown","first","dropdownWidth","width","$subMenu","subMenuWidth","elementRect","containerRect","isDropdown","clientHeight","shouldPullRightDropdown","isSubmenuOverflowed","calcDropdownMaxWidth","dropdownMaxHeight","doNotRestrictWidth","dropdownMaxWidth","doNotRestrictHeight","onNodeEvent","onResize","tooltip","messageOrSettings","message","notify","settings","visible","placement","windowWidth","force","delay","scrollTo","isReady","title","deferred","newTooltip","updatePosition","_$item$offset$left","_$item$offset","_$window$width","_$item$offset$top","_$item$offset2","animate","Bluebird","domService","require","transitionComplete","callback","chilrenTransitions","onlyTargetEvents","subs","onTransitionComplete","documentTracker","NodeTracker","tooltips","observableArray","topTooltip","visibleTooltips","notifyIfChanged","scrollToDelayed","validationTooltip","_ko$bindingHandlers$t","field","fieldError","hasError","is","err","valueWrapper","_len","arguments","args","_key","streamSrc","srcObject","widgetsContainer","WidgetObserver","defaultViewModelFactory","DefaultViewModel","awaiters","activeAwaiters","ComponentsContext","components","vm","template","syncOnly","_vm","_template","toLowerCase","vmConfig","getViewModelConfig","templateConfig","getTemplateConfig","componentsLibrary","isRegistered","registerInKO","registerLocal","preload","nameOrNames","getAwaiter","_len2","names","_key2","promises","Promise","all","awaitAll","currentPromises","hasOneOwner","unregister","endsWith","substr","factory","getViewModel","resolve","finally","warn","promise","Error","dynamicView","elementId","synchronous","instance","globalComponents","disposablesCollection","source","Map","collection","has","set","keys","includes","delete","readOnly","defaultValue","isSubscribable","wrapper","_ko$unwrap2","fromPromise","deps","strictComputed","multistreamComputed","streams","stream","observableMap","valueWillMutate","valueHasMutated","entries","clear","unwrappedDeps","v","now","timeCondition","computedAfter","computedBefore","before","lastBefore","lastAfter","isAlwaysFalse","isAlwaysTrue","importAll","IsValidatableSubscribable","extenders","validate","predicate","isValid","not","equalityComparer","a","b","isDate","getTime","CollectionsHelpers","compareCollections","fn","subscribable","any","attachTo","sourceObservable","setIfDifferent","initialValue","average","cache","updateFunc","cloneFunc","_cloneFunc","map2Key","identity","map2","chainNotNull","mapper","isNotNull","hasValue","concat","list","defaultMapper","count","mapperOrDefault","dec","n","defaultValidator","Infinity","validator","read","write","difference","other","flatten","groupBy","idx","history","pushToQueue","queue","unshift","pop","sub","timestamp","Date","_dispose","bind","intersection","invoke","allArgs","apply","slice","call","invokeNotNull","some","predicateOrValue","isAwake","isPureComputed","getSubscriptionsCount","__isAwake","isEmpty","isNull","last","tap","items","mappedItem","mapNotNull","predicateOrConfig","acceser","getObservableAccesser","mergeWith","allowNull","nullIfDefault","onArrayChange","changes","added","removed","change","index","status","moved","move","addRange","removeRange","nameOrMapper","mappedObservable","prev","proxy","extractor","buffer","iteratee","memoFactory","select","selectNotNull","sort","compareFn","iterator","subscribeIf","event","subscribeNotNull","toDate","toEntity","entity","newEntity","toFlag","currentValue","rateLimit","reset","toLock","locked","toNodes","toArray","toPrts","allowNulls","toPercents","toRevertPrts","toggle","koServices","trackChanges","opts","array","s1","s2","onArrayChanged","trim","uniq","isSortedOrIteratee","isSorted","selfWriteOnly","unwrapped","unwrapPromise","then","funcOrValue","when","disposalPromise","finalPredicate","whenChanged","initial","whenFalse","whenNotNull","sectionPattern","WCCComponentLoader","viewModelLoader","ViewModelLoader","templateLoader","TemplateLoader","masterLoader","WCCComponentMasterLoader","loadComponent","getViewModelConstructor","processDynamicViews","updateConfigFromViewModelConstructor","ctor","load","createViewModel","defaultLoader","loadViewModel","loadTemplate","isInjectable","templateId","Reflect","getMetadata","componentTemplateMetadataKey","_Reflect$getMetadata","master","sections","componentSectionsMetadataKey","size","_document$getElementB","_document$getElementB2","getElementById","match","sectionName","sectionId","masterIDs","componentMasterMetadataKey","masterId","content","_ref","WCCTemplateLoader","viewName","loadView","WCCViewModelLoader","ViewModel","ViewModelFactory","componentInfo","getDefaultIfES6","loaders","PromiseLoader","definition","mixin","generate","startIdx","endIdx","range","sameAs","arr","arr2","zip","pair","takeWhile","take","transitions","onTransitionEnd","instances_by_id","init_id","useValue","isMultiple","iRadio","eObj","objVal","parseInt","oldVal","newVal","valueChanged","translate","x","y","lazyResize","r","child","offsetHeight","fullpage","valuesAccessor","$el","$w","$footer","topOffset","bottomOffset","m","slideToggleCSS","srcElement","eventName","t","scrollHeight","applyTransitions","one","wccAfterRender","animateObj","valueProperty","timeOuts","animationProperties","animatedProperties","animationOptions","easing","k","controlVisibility","propertyValues","startValue","endValue","animateFunc","trueTimeOut","setTimeout","falseTimeOut","videoLoaded","modalDialog","modal","selected","unwrapObservable","inViewPort","w","containerMode","containerBottom","containerTop","itemTop","itemBottom","self","onEvent","currentTarget","shiftUp","cropbox","setImageModified","scroll","updating","scrollableParent","findScrollableParent","props","scrollOptions","loadFunc","abs","lazyRender","Context","$prevContext","prototype","next","mirror","String","oldHeight","newHeight","spinner","WCC","System","initSpinner","smallSpinner","radius","spin","spectrum","rgbaMode","areButtonsShown","customClasses","onShow","onHide","onInit","color","showAlpha","showInput","showInitial","showPalette","showSelectionPalette","clickoutFiresChange","showButtons","maxPaletteSize","preferredFormat","localStorageKey","toRgbString","toHexString","format","palette","iCheckDynamic","modelItem","found","isExclusive","profileQuestionChoiceId","$data","selectedChoices","choice","prop","errorToggle","markControlAsValid","scrollContainer","markControlAsInvalid","trackErrors","hasErrors","reversibleObservable","_actualValue","_oldValue","commit","isChanged","previousValueObservable","_previousValue","_currentValue","dependentObservable","supportsPreviousValue","oIsEditing","updatePreviousValue","restorePreviousValue","previousValue","dragToggle","draggable","hideTemplate","clickSetValue","baseObj","baseObject","noPropagation","link","valueToSet","callBack","stopPropagation","cancelBubble","preventDefault","clickToggleValue","ace","aceOptions","id","editor","edit","theme","setTheme","mode","getSession","setMode","setReadOnly","wrap","setOption","hideGutter","hidePrintMargin","gotoLine","delta","isWriteableObservable","getValue","hasOwnProperty","aceEditors","resizeAll","resize","simpleMDE","editorOptions","initFunc","simpleMDEOptions","autoDownloadFontAwesome","placeholder","customToolbar","showOnlyMergedSymbols","toolbar","SimpleMDE","toggleBold","toggleItalic","toggleHeadingSmaller","toggleBlockquote","toggleUnorderedList","toggleOrderedList","drawLink","drawImage","togglePreview","toggleSideBySide","toggleFullScreen","codemirror","noMergedSymbols","getKOData","mergeSymbolsSelectId","mergeSymbolsSelectHtml","join","mergeSymbolsSelect","append","select2","thisRef","isNullOrEmpty","cm","text","getSelection","replaceSelection","toTextArea","delayInit","datePicker","datepickerOptions","inline","datetimepicker","widget","date","datePicker332","registerEventHandler","timeSelection","timeSelectionOptions","pOptions","mins","Labels","MinutesShort","hr","HourShort","hrs","HoursShort","show2400","minTime","maxTime","showDuration","timepicker","isNotNullOrEmpty","sparkline","build","initSparkline","deferredBuild","highcharts","highchartsOptions","chart","chartType","widthAdjust","xAxis","categories","yAxis","labels","overflow","plotOptions","bar","dataLabels","enabled","exporting","buttons","contextButton","align","legend","layout","verticalAlign","floating","borderWidth","backgroundColor","Highcharts","legendBackgroundColor","shadow","series","showInLegend","intlTelInput","telOptions","autoFormat","autoPlaceholder","numberType","initialCountry","preferredCountries","blur","numberChanged","ideationTopicCanvas","allBinding","object","newList","oldList","oldResult","newResult","splice","processChanges","compareArrays","toPOJO","groups","Group","guidRegex","isGuid","test","moment","current","valueToWrite","shortcut","hard","fullwords","TextHelpers","createIfNotExists","disposeGroup","group","_subscribe","toUrl","el","select2Events","elObj","defaultItems","Option","multiple","split","converted","selectedOptions","ChoiceQuestionOptions","processNewChoices","numberValuesNeeded","ret","bStart","bEnd","choiceImage","parts","sLower","choiceText","startsWithOldValueMatches","exec","oldValue","valueMatches","choiceValue","isNaN","isDefault","isHidden","isPinned","isNA","isOther","Tag","isAppliedOnThread","choiceTextParts","dataTag","TagValue","Visibility","Enums","ContentTagVisibilityType","AdministratorsOnly","SpecialType","ContentTagSpecialType","ChoiceTagForThread","None","generateStringWithBasicFormattingTags","showChoicesInTextArea","ChoicesError","processedChoices","oldChoices","choices","newChoices","iChoice","c","choiceOrder","originalChoice","grep","ApiProfileQuestionChoice","nextChoiceValue","newText","toUserEditString","limitCharacters","enterkey","keypress","which","keyCode","maskedInput","mask","maskOptions","inputmask","numeric","roundingMultiplier","precision","newValueAsNum","round","notifySubscribers","marked","markdownBinding","markdownData","attr","timeCircles","timerOptions","defaultOptions","count_past_zero","time","Days","Hours","Minutes","Seconds","TimeCircles"],"mappings":"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","file":"extensions~main.6f3d93ecaaafdc1c6f30.js","sourcesContent":["import { DOMHelpers } from 'helpers/dom';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\n/**\r\n* Executes function on animation completed event\r\n* {value} should be function.\r\n*/\r\nko.bindingHandlers.animationComplete = {\r\n init: function (element, valueAccessor) {\r\n const action = valueAccessor();\r\n const effects = withEffects();\r\n\r\n if (_.isFunction(action))\r\n effects.register(DOMHelpers.onAnimationComplete(element, action));\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\r\n }\r\n};","import ko, { SubscribableOrNullableValue } from 'knockout';\r\nimport { AnimationFrameContext, GenericAnimator } from \"managers/genericAnimator\";\r\n\r\nfunction getAnimationDuration(animationName?: string) {\r\n switch (animationName) {\r\n case 'zoom': return 250;\r\n case 'fade': return 650;\r\n default: return 1000;\r\n }\r\n}\r\n\r\nexport interface AppearBindingOptions {\r\n 'animation'?: SubscribableOrNullableValue\r\n 'show-animation'?: SubscribableOrNullableValue\r\n 'hide-animation'?: SubscribableOrNullableValue\r\n 'initial-animation'?: SubscribableOrNullableValue\r\n 'visible'?: SubscribableOrNullableValue\r\n 'duration'?: SubscribableOrNullableValue\r\n 'on-start'?: SubscribableOrNullableValue]>>\r\n 'on-end'?: SubscribableOrNullableValue]>>\r\n}\r\n\r\n/**\r\n * shows/hides node using animation\r\n */\r\nko.bindingHandlers.appear = {\r\n init: (element: HTMLElement, valueAccessor) => {\r\n var data = ko.pureComputed(() => ko.unwrap(valueAccessor())),\r\n animationName = data.pluck('animation'),\r\n showAnimationName = data.pluck('show-animation').mapSingle(name => _.isString(name) ? name : animationName() ? `${animationName()}In` : 'fadeIn'),\r\n hideAnimationName = data.pluck('hide-animation').mapSingle(name => _.isString(name) ? name : animationName() ? `${animationName()}Out` : 'fadeOut'),\r\n shouldAnimateInitialFrame = data.pluck('initial-animation').mapSingle(value => _.isBoolean(value) ? value : false),\r\n onStartWrapper = data.pluck('on-start').mapSingle(func => _.isFunction(func) ? func as Action<[context: AnimationFrameContext]> : _.noop),\r\n onEndWrapper = data.pluck('on-end').mapSingle(func => _.isFunction(func) ? func as Action<[context: AnimationFrameContext]> : _.noop),\r\n isVisible = data.pluck('visible').mapSingle(value => _.isBoolean(value) ? value : true),\r\n cDuration = data.pluck('duration').mapSingle(value => _.isNumber(value) ? value : getAnimationDuration(animationName()));\r\n\r\n element.style.display = 'none';\r\n\r\n var animator = new GenericAnimator({\r\n state: isVisible,\r\n duration: cDuration,\r\n\r\n frame: function (context) {\r\n var isVisible = context.state,\r\n progress = context.progress,\r\n isInitial = context.isInitial,\r\n onStart = onStartWrapper(),\r\n onEnd = onEndWrapper();\r\n\r\n if (isInitial && !shouldAnimateInitialFrame()) {\r\n if (isVisible) {\r\n element.style.display = '';\r\n } else {\r\n element.style.display = 'none';\r\n }\r\n\r\n onStart(context);\r\n onEnd(context);\r\n\r\n return true;\r\n } else {\r\n if (progress == 0) {\r\n element.classList.add('wcc-animated');\r\n element.style.animationDuration = cDuration() + 'ms';\r\n }\r\n\r\n if (isVisible) {\r\n if (progress === 0) {\r\n element.style.display = ''; \r\n element.classList.add(showAnimationName());\r\n }\r\n\r\n if (progress === 100)\r\n element.classList.remove(showAnimationName());\r\n } else {\r\n if (progress == 0) {\r\n element.classList.add(hideAnimationName());\r\n }\r\n\r\n if (progress === 100) {\r\n element.style.display = 'none';\r\n element.classList.remove(hideAnimationName());\r\n }\r\n }\r\n\r\n if (progress === 0)\r\n onStart(context);\r\n\r\n if (progress == 100)\r\n onEnd(context);\r\n }\r\n }\r\n });\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => animator.dispose());\r\n }\r\n}","import AutoNumeric from 'autonumeric';\r\nimport ko from 'knockout';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nexport interface AutoNumericFormatOptions {\r\n langOptions?: AutoNumericLanguageOptions\r\n decimalPlaces?: number\r\n digits?: number\r\n}\r\n\r\ninterface AutoNumericLanguageOptions {\r\n decimalCharacter?: string\r\n}\r\n\r\nko.bindingHandlers.autoNumeric = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n const effects = withEffects();\r\n const formatOptions = allBindingsAccessor().formatOptions;\r\n const $element = $(element);\r\n\r\n const nOptions = {\r\n decimalCharacter: '.',\r\n digitGroupSeparator: '',\r\n minimumValue: '0' \r\n }\r\n\r\n if (formatOptions != undefined) {\r\n if (formatOptions.langOptions?.decimalCharacter != undefined) nOptions.decimalCharacter = formatOptions.langOptions.decimalCharacter;\r\n if (formatOptions.decimalPlaces != undefined) nOptions.decimalPlaces = formatOptions.decimalPlaces;\r\n if (formatOptions.digits != undefined) nOptions.maximumValue = ((Math.pow(10, formatOptions.digits) - 1) / Math.pow(10, formatOptions.decimalPlaces ?? 0)).toString();\r\n }\r\n\r\n const value = ko.flattenComputed(valueAccessor());\r\n var autonumericObj = new AutoNumeric(element, undefined, nOptions);\r\n\r\n $element.data('autonumericobj', autonumericObj);\r\n\r\n effects.register(value => {\r\n if (_.isString(value) && value.length > 0)\r\n autonumericObj.setUnformatted(value);\r\n }, [value]);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n const autonumeric = $element.data('autonumericobj');\r\n\r\n if (autonumeric)\r\n autonumeric.remove();\r\n\r\n effects.dispose();\r\n });\r\n }\r\n};","define('extensions/knockout/bindings/autogrow', [], () => {\r\n let init = function (element) {\r\n let $item = $(element);\r\n\r\n let $mirror = $('
'),\r\n mirror = $mirror[0];\r\n\r\n $item.after($mirror);\r\n\r\n // Style the mirror\r\n $mirror.css('display', 'none');\r\n $mirror.css('wordWrap', $item.css('wordWrap'));\r\n $mirror.css('whiteSpace', $item.css('whiteSpace'));\r\n $mirror.css('padding', $item.css('padding'));\r\n $mirror.css('width', $item.css('width'));\r\n $mirror.css('fontFamily', $item.css('font-family'));\r\n $mirror.css('fontSize', $item.css('font-size'));\r\n $mirror.css('lineHeight', $item.css('line-height'));\r\n\r\n // Style the textarea\r\n $item.css('overflow', \"hidden\");\r\n\r\n let onChange = (key) => {\r\n if (!_(key).isString() || key.length > 1)\r\n key = '';\r\n\r\n let value = $item.val()\r\n .replace(/&/g, '&')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''')\r\n .replace(//g, '>')\r\n .replace(/\\n/g, '
') + key + '
';\r\n\r\n $mirror.html(value);\r\n $mirror.css('width', $item.css('width'));\r\n\r\n $item.height($mirror.height());\r\n };\r\n\r\n let onKeyDown = e => onChange(e.key);\r\n\r\n $item.keydown(onKeyDown);\r\n $item.keyup(onChange);\r\n $item.on('changed', onChange);\r\n\r\n $item.on('autogrow-dispose', function () {\r\n $item.off('keydown', onKeyDown);\r\n $item.off('keyup', onChange);\r\n $item.off('changed', onChange);\r\n\r\n $mirror.remove();\r\n });\r\n\r\n onChange();\r\n _.defer(() => onChange());\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => $item.trigger('autogrow-dispose'));\r\n };\r\n\r\n let dispose = function (element) {\r\n $(element).trigger('autogrow-dispose');\r\n };\r\n\r\n ko.bindingHandlers.autogrow = {\r\n init: function (element, valueAccessor) {\r\n var val = ko.unwrap(valueAccessor());\r\n\r\n if (val) init(element);\r\n },\r\n\r\n update: function (element, valueAccessor) {\r\n var val = ko.unwrap(valueAccessor());\r\n\r\n dispose(element);\r\n\r\n if (val) init(element);\r\n }\r\n };\r\n})","define('extensions/knockout/bindings/centerNode', [\r\n 'managers/disposables'\r\n], function (Disposables) {\r\n ko.bindingHandlers.centerNode = {\r\n init: function (element, valueAccessor) {\r\n let disposables = new Disposables(),\r\n value = valueAccessor();\r\n\r\n var processor = ko.computed(() => {\r\n disposables.dispose();\r\n disposables = new Disposables();\r\n\r\n if (ko.unwrap(value))\r\n ko.ignoreDependencies(() => {\r\n let $element = $(element),\r\n $window = $(window);\r\n\r\n let offset = ko.observable(0);\r\n\r\n let update = _.debounce(() => {\r\n let { top, height } = element.getBoundingClientRect();\r\n\r\n let newOffset = window.innerHeight / 2 - (top + $window.scrollTop() + height / 2) + offset();\r\n\r\n offset(newOffset > 0 ? Math.ceil(newOffset) : 0);\r\n }, 0);\r\n\r\n disposables.register(new MutationObserver(update),\r\n observer => observer.observe(element, { attributes: true, childList: true, subtree: true }),\r\n observer => observer.disconnect());\r\n\r\n disposables.register(\r\n () => $window.on('resize', update),\r\n () => $window.off('resize', update));\r\n\r\n disposables.register(\r\n _.noop,\r\n () => $element.css('margin-top', ''));\r\n\r\n [\r\n offset.subscribe(value => $element.css('margin-top', value))\r\n ].forEach(s => disposables.register(s));\r\n\r\n update();\r\n });\r\n });\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n processor.dispose();\r\n disposables.dispose();\r\n });\r\n }\r\n };\r\n});","import ko, { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { withEffect } from 'mixins/withEffect';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\nko.virtualElements.allowedBindings.customElement = true;\n\nfunction buildParams(params?: StringMap) {\n if (params == undefined)\n params = {}\n\n if (!('model' in params))\n params = { model: params };\n\n if (!('ref' in params))\n params = { ...params, ref: undefined }\r\n\r\n return params;\r\n}\n\nexport interface CustomElementConfig = StringMap, R = any> {\n name: SubscribableOrNullableValue\r\n params?: T | CustomElementExtendedParams\r\n}\n\nexport interface CustomElementExtendedParams = StringMap, R = any> {\n model: T,\r\n ref?: Subscribable\r\n}\n\nexport const getCustomElement = (name: string, model: T, ref?: Subscribable | Subscribable): CustomElementConfig => ({ name, params: { model, ref } });\n\nko.bindingHandlers.customElement = {\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\n const effects = withEffects();\n const value = ko.flattenComputed(>valueAccessor());\n\n const children = ko.virtualElements.childNodes(element);\n\n effects.register(value => {\n if (value != undefined) {\n const name = ko.flattenComputed(value.name);\n const params = buildParams(value.params);\r\n\r\n return withEffect(name => {\n if (name != undefined && name.length > 0) {\n const root = $('<' + name + ' params=\"model: model, ref: ref\"><' + name + '/>')[0]; \n\n ko.virtualElements.setDomNodeChildren(root, children.map(node => node.cloneNode(true)));\n ko.virtualElements.setDomNodeChildren(element, [root]);\n\n ko.applyBindings(bindingContext.createChildContext(params), root);\n } else {\n ko.virtualElements.setDomNodeChildren(element, []);\r\n }\r\n }, [name]);\r\n } else {\r\n ko.virtualElements.setDomNodeChildren(element, []);\r\n }\r\n }, [value]);\n\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\n\n return { 'controlsDescendantBindings': true };\n }\n}","import ko from 'knockout';\n\nko.bindingHandlers.dom = {\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n const value = valueAccessor();\n\n requestAnimationFrame(() => {\n if (ko.isObservable(value) || _.isFunction(value)) {\n value(element);\n\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\n if (value() == element)\n value(undefined);\n });\n } else if (_.isArray(value)) {\n value.forEach(item => item(element));\n\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\n value.forEach(item => {\n if (item() == element)\n item(undefined);\n });\n });\n }\r\n });\n }\n}","define('extensions/knockout/bindings/expand', [], function () {\r\n ko.bindingHandlers.expand = {\r\n\t\tinit: function (element, valueAccessor) {\r\n\t\t\tvar config = valueAccessor() || {},\r\n\t\t\t\texcludedNodes = config.exclude || [];\r\n\r\n\t\t\tvar oShrinkBy = ko.observable(0);\r\n\r\n\t\t\tvar update = _.throttle(function () {\r\n\t\t\t\trequestAnimationFrame(function () {\r\n\t\t\t\t\tvar shrinkBy = _(excludedNodes).reduce(function (result, node) {\r\n\t\t\t\t\t\treturn result + $(node).outerHeight();\r\n\t\t\t\t\t}, 0);\r\n\r\n\t\t\t\t\toShrinkBy(Math.ceil(shrinkBy));\r\n\t\t\t\t});\r\n\t\t\t}, 100);\r\n\r\n\t\t\tvar observer = new MutationObserver(update);\r\n\r\n\t\t\tobserver.observe(document.body, {\r\n\t\t\t\tattributes: true,\r\n\t\t\t\tsubtree: true,\r\n\t\t\t\tchildList: true\r\n\t\t\t});\r\n\r\n\t\t\tvar sShrinkBy = oShrinkBy.subscribe(function (value) {\r\n\t\t\t\t$(element).css({\r\n\t\t\t\t\t'min-height': 'calc(100vh - ' + value + 'px)'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treturn {\r\n\t\t\t\tdispose: function () {\r\n\t\t\t\t\tobserver.disconnect();\r\n\t\t\t\t\tsShrinkBy.dispose();\r\n\t\t\t\t}\r\n\t\t\t};\r\n }\r\n };\r\n});","define('extensions/knockout/bindings/hideContext', [], () => {\r\n ko.virtualElements.allowedBindings.hideContext = true;\r\n\r\n /**\r\n * hides current context by setting current context to the specified one\r\n * puts current context into speficied valiable('$hidden' is default)\r\n * {value} should be object { toContext: {KO Context}, into: {variable name: '$hidden'} }.\r\n */\r\n ko.bindingHandlers.hideContext = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n let value = valueAccessor();\r\n\r\n let { toContext: context, store: toStore = { '$hidden': bindingContext } } = value.toContext ? value : { toContext: value };\r\n let newContext = { __proto__: context };\r\n\r\n _(context)\r\n .chain()\r\n .map((value, key) => ({ key: key, value: value }))\r\n .filter(item => item.key[0] == '$')\r\n .each(item => newContext[item.key] = item.value);\r\n\r\n _(toStore).each((context, name) => newContext[name] = context);\r\n\r\n ko.applyBindingsToDescendants(newContext, element);\r\n\r\n return { controlsDescendantBindings: true }\r\n }\r\n };\r\n});","import ko from 'knockout';\r\n\r\nko.bindingHandlers.htmlWithComponents = {\r\n init: function() {\r\n return { controlsDescendantBindings: true };\r\n },\r\n update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n\r\n // Insert the HTML\r\n element.innerHTML = ko.unwrap(valueAccessor());\r\n\r\n // Now apply bindings to descendants\r\n ko.applyBindingsToDescendants(bindingContext, element);\r\n }\r\n};","import { Observable } from 'knockout';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nko.bindingHandlers.iCheckNew = {\r\n init: (element, valueAccessor, allBindings) => {\r\n const effects = withEffects();\r\n\r\n const $element = $(element);\r\n const value = >valueAccessor();\r\n\r\n const mutations = ko.observable(0);\r\n\r\n var options = {\r\n checkboxClass: 'icheckbox_' + (allBindings().iClass || 'flat-blue'),\r\n radioClass: 'iradio_' + (allBindings().iClass || 'flat-blue')\r\n }\r\n\r\n const setValue = (newValue: boolean) => {\r\n value(newValue);\r\n mutations.inc();\r\n }\r\n\r\n $element.iCheck(options)\r\n .on('ifChecked', () => setValue(true))\r\n .on('ifUnchecked', () => setValue(false));\r\n\r\n const $iCheck = $element.parent();\r\n const isChecked = () => $iCheck.hasClass('checked');\r\n\r\n effects.register(value => {\r\n if (value != isChecked()) {\r\n if (value)\r\n $element.iCheck('check');\r\n else\r\n $element.iCheck('uncheck');\r\n }\r\n\r\n //force sync with html(safari bug fix)\r\n if (value != isChecked()) {\r\n if (value)\r\n $iCheck.addClass('checked');\r\n else\r\n $iCheck.removeClass('checked');\r\n }\r\n }, [value, mutations]);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\r\n }\r\n}","import { ImageHelpers } from 'helpers/images';\r\nimport ko, { Observable } from 'knockout';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\nko.bindingHandlers.imageLoaded = {\n init: function (element: HTMLElement, valueAccessor) {\n const config = valueAccessor();\n\n let oLoaded: Observable = ko.observable(false as boolean),\n oFailed: Observable = ko.observable(false as boolean);\n\n if (ko.isWritableObservable(config)) {\n oLoaded = config;\n } else if (_.isObject(config)) {\n if (ko.isWritableObservable(config.value))\n oLoaded = config.value;\n else if (ko.isWritableObservable(config.loaded))\n oLoaded = config.loaded;\n\n if (ko.isWritableObservable(config.failed))\n oFailed = config.failed;\n }\n\n if (element instanceof HTMLImageElement) {\n const image = element as HTMLImageElement;\n const effects = withEffects();\n\n const awaiter: Observable | undefined> = ko.observable();\n const result = ko.pureComputed(() => ko.unwrap(awaiter()));\n\n async function update() {\n awaiter(system.getPromiseAwaiter(async () => {\n try {\n await ImageHelpers.waitImage(image);\n return true;\n } catch (ex) {\n return false;\r\n }\n }));\n }\n\n effects.register(result => {\n if (result != undefined) {\n oLoaded(result);\r\n oFailed(!result);\r\n } else {\n oLoaded(false);\r\n oFailed(false);\r\n }\n }, [result]);\n\n effects.register(() => {\n const observer = new MutationObserver(update);\n observer.observe(image, { attributes: true, attributeFilter: ['src'] });\r\n\r\n update();\r\n\r\n return () => observer.disconnect();\r\n });\n\n ko.utils.domNodeDisposal.addDisposeCallback(image, () => effects.dispose());\n } \n }\n};","import { DOMHelpers } from 'helpers/dom';\r\nimport { Observable, SubscribableOrNullableValue } from 'knockout';\r\nimport NodeVisibilityTracker from 'managers/nodes/visibilityTracker';\r\nimport { withEffect } from 'mixins/withEffect';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nexport interface inViewPortNewBindingConfig {\r\n value: SubscribableOrNullableValue\r\n element?: SubscribableOrNullableValue\r\n container?: SubscribableOrNullableValue\r\n enable?: SubscribableOrNullableValue\r\n ignoreHeight?: SubscribableOrNullableValue\r\n}\r\n\r\nko.bindingHandlers.inViewPortNew = {\r\n init: function (element: Node, valueAccessor) {\r\n const data: Observable | inViewPortNewBindingConfig = valueAccessor();\r\n const effects = withEffects();\r\n\r\n const oElement = ko.observable().unwrap().default(element);\r\n const oContainer = ko.observable().unwrap().default(DOMHelpers.getScrollingContainer(element) ?? document.body);\r\n const oEnable = ko.observable().unwrap().default(true);\r\n const oIgnoreHeight = ko.observable().unwrap().default(false);\r\n\r\n let oValue: Observable;\r\n\r\n if (ko.isWritableObservable(data)) {\r\n oValue = data;\r\n } else {\r\n const config = (data);\r\n\r\n if (ko.isWritableObservable(config.value)) {\r\n oValue = config.value;\r\n oElement(config.element);\r\n oContainer(config.container);\r\n oEnable(config.enable);\r\n oIgnoreHeight(config.ignoreHeight);\r\n } else {\r\n throw {\r\n error: 'you must provide writable observable',\r\n binding: 'inViewPortNew',\r\n element: element\r\n }\r\n }\r\n }\r\n\r\n effects.register(() => {\r\n const visibilityTracker = new NodeVisibilityTracker({ element: oElement, container: oContainer, enable: oEnable, ignoreHeight: oIgnoreHeight });\r\n\r\n return [\r\n withEffect(isVisible => oValue(isVisible), [visibilityTracker.isVisible]),\r\n () => visibilityTracker.dispose()\r\n ]\r\n });\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\r\n }\r\n}","import ko, { SubscribableOrNullableValue } from 'knockout';\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nexport interface KOHTMLBindingData {\r\n value?: SubscribableOrNullableValue\r\n data?: SubscribableOrNullableValue\r\n}\r\n\nko.virtualElements.allowedBindings.kohtml = true\n\nko.bindingHandlers.kohtml = {\n init: function (element, valueAccessor) {\n const data = valueAccessor();\n const effects = withEffects();\n\n let value, model;\n\n if (data != undefined && !_.isFunction(data) && data.value != undefined) {\n value = ko.flattenComputed(data.value, '');\n model = ko.flattenComputed(data.data, {});\n } else {\n value = ko.flattenComputed(data);\n model = ko.pureComputed(() => ({}));\n }\n\n effects.register((value, model) => {\n var nodes = ko.utils.parseHtmlFragment(value);\n\n ko.virtualElements.setDomNodeChildren(element, nodes);\n ko.applyBindingsToDescendants(model, element);\n }, [value, model]);\n\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\n\n return { controlsDescendantBindings: true };\n }\n}","import ko from 'knockout';\r\n\r\ninterface LockedItem {\r\n target: Node\r\n priority: number\r\n func: Action\r\n}\r\n\r\nlet stack: Array = [];\r\nlet timeout: number | undefined;\r\n\r\nfunction process () {\r\n if (stack.length > 0) {\r\n stack = _(stack).sortBy(item => item.priority);\r\n\r\n const item = stack.shift();\r\n item.func();\r\n\r\n timeout = requestAnimationFrame(process);\r\n } else {\r\n timeout = undefined;\r\n }\r\n}\r\n\r\nfunction start() {\r\n timeout = requestAnimationFrame(process);\r\n}\r\n\r\nfunction add(item: LockedItem) {\r\n stack.push(item);\r\n\r\n if (timeout == undefined)\r\n start();\r\n}\r\n\r\nko.virtualElements.allowedBindings.lock = true;\r\n\r\nko.bindingHandlers.lock = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n let executed = false;\r\n\r\n const priority = ko.unwrap(valueAccessor()) ?? 10000;\r\n const children = _.clone(ko.virtualElements.childNodes(element)); \r\n\r\n ko.virtualElements.emptyNode(element);\r\n\r\n var item = {\r\n target: element,\r\n priority: priority,\r\n\r\n func: () => {\r\n ko.virtualElements.setDomNodeChildren(element, children);\r\n ko.applyBindingsToDescendants(bindingContext, element);\r\n\r\n executed = true;\r\n $(element).closest('div').trigger('ko-lock-released');\r\n }\r\n }\r\n\r\n $(element).closest('div').trigger('ko-lock-init');\r\n\r\n add(item);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n if (!executed)\r\n ko.utils.arrayRemoveItem(stack, item);\r\n });\r\n\r\n return { controlsDescendantBindings: true }\r\n }\r\n}","define('extensions/knockout/bindings/log', [], () => {\r\n ko.virtualElements.allowedBindings.log = true;\r\n\r\n ko.bindingHandlers.log = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n _.defer(() => console.log(valueAccessor()));\r\n }\r\n };\r\n});","import ko, { SubscribableOrValue } from 'knockout';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nko.virtualElements.allowedBindings.nodes = true\r\n\r\nko.bindingHandlers.nodes = {\r\n init: function (element, valueAccessor) {\r\n const effects = withEffects();\r\n const nodes = ko.flattenComputed(>valueAccessor(), []);\r\n\r\n effects.register(nodes => {\r\n ko.virtualElements.setDomNodeChildren(element, nodes);\r\n }, [nodes]);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\r\n\r\n return { controlsDescendantBindings: true };\r\n }\r\n}","import ko, { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { withEffect } from 'mixins/withEffect';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nexport interface PositionBindingOptions {\r\n top?: SubscribableOrNullableValue\r\n right?: SubscribableOrNullableValue\r\n bottom?: SubscribableOrNullableValue\r\n left?: SubscribableOrNullableValue\r\n}\r\n\r\nfunction getCSSBinding($element: JQuery, property: string, value: Subscribable) {\r\n return withEffect(value => {\r\n $element.css(property, value);\r\n\r\n return () => $element.css(property, '');\r\n }, [value]); \r\n}\r\n\r\n/**\r\n* Sets position of element\r\n* if {value} is number then it will be converted to px\r\n*/\r\nko.bindingHandlers.position = {\r\n init: (element, valueAccessor) => {\r\n const $element = $(element);\r\n const effects = withEffects();\r\n\r\n const value = ko.flattenComputed(valueAccessor());\r\n const top = value.pluck(value => ko.unwrap(value.top)).toPx(true);\r\n const right = value.pluck(value => ko.unwrap(value.right)).toPx(true);\r\n const bottom = value.pluck(value => ko.unwrap(value.bottom)).toPx(true);\r\n const left = value.pluck(value => ko.unwrap(value.left)).toPx(true);\r\n\r\n effects.register([\r\n getCSSBinding($element, 'top', top),\r\n getCSSBinding($element, 'right', right),\r\n getCSSBinding($element, 'bottom', bottom),\r\n getCSSBinding($element, 'left', left)\r\n ]);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\r\n }\r\n}","import ko, { Observable } from 'knockout';\n\nexport interface IonRangeSliderModelConfig {\n label?: string\r\n value?: number\r\n originalItem: T\r\n}\n\nexport class IonRangeSliderModel {\n isLabelVisible = ko.observable(false);\n\n label: Observable\n value: Observable\n originalItem: Observable\n\n constructor(config: IonRangeSliderModelConfig) {\n this.label = ko.observable(config.label);\n this.value = ko.observable(config.value);\n this.originalItem = ko.observable(config.originalItem);\n }\n}\n\nko.bindingHandlers.rangeSlider = {\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n const $element = $(element);\n const options = allBindings().rangeOptions ?? {};\n const sliderValues = options.values;\n\n var sliderOptions = {\n type: options.toValue ? 'double' : 'single',\n step: options.step || 1,\n grid: options.grid === undefined ? true : options.grid,\n hide_min_max: options.hide_min_max || false,\n hide_from_to: options.hide_from_to || false\n }\n\n if (options.skin)\n (sliderOptions).skin = options.skin;\n\n if (sliderValues && sliderValues.length) { //we may add support for two sliders for WCCRangleSliderModel\n if (options.usesRangleSliderModel) {\n sliderOptions.values = sliderValues.map((i: IonRangeSliderModel) => i.value());\n sliderOptions.prettify_enabled = true;\n\n sliderOptions.prettify = num => {\n var obj = _.find(sliderValues, (e: IonRangeSliderModel) => e.value() == num);\n\n if (obj == null || !obj.isLabelVisible())\n return \"\";\n\n return obj.label();\n }\n\n (sliderOptions).current_label = (num: any) => {\n var obj = _.find(sliderValues, (e: IonRangeSliderModel) => e.value() == num);\n if (obj == null) {\n return \"\";\n }\n return obj.label();\n }\n }\n else {\n sliderOptions.values = sliderValues;\n }\n }\n else {\n $.extend(sliderOptions, {\n min: options.min || 0,\n max: options.max || 20,\n from: options.from,\n from_min: options.from_min || options.min\n });\n\n if (options.toValue) {\n $.extend(sliderOptions, {\n to: options.to,\n to_max: options.to_max || options.max\n });\n }\n }\n\n sliderOptions.onFinish = obj => {\n var value = valueAccessor(),\n fromValToPush = null,\n toValToPush = null;\n\n if (options.usesRangleSliderModel) {\n var item = _.find(sliderValues, function (e) { return e.value() == obj.from_value; });\n\n if (item != null) {\n fromValToPush = item.originalItem();\n }\n\n if (options.toValue) {\n var toItem = _.find(sliderValues, function (e) { return e.value() == obj.to_value; });\n\n if (toItem != null) {\n toValToPush = toItem.originalItem();\n }\n }\n }\n else {\n if (obj.from_value != null) {\n fromValToPush = obj.from_value;\n } else if (obj.from != null) {\n fromValToPush = obj.from;\n }\n\n if (options.toValue && obj.to_value != null) {\n toValToPush = obj.to_value;\n }\n }\n\n if (fromValToPush != null) {\n if (Array.isArray(value())) {\n value.removeAll();\n value.push(fromValToPush);\n }\n else {\n value(fromValToPush);\n }\n }\n if (toValToPush != null) {\n if (Array.isArray(options.toValue)) {\n options.toValue.removeAll();\n options.toValue.push(toValToPush);\n }\n else {\n options.toValue(toValToPush);\n }\n }\n }\n\n $element.ionRangeSlider(sliderOptions);\n\n const slider = $element.data(\"ionRangeSlider\");\n\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => slider.destroy());\n },\n\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n var eObj = $(element),\n slider = eObj.data(\"ionRangeSlider\"),\n options = allBindings().rangeOptions || {},\n value = valueAccessor(),\n sliderValues = options.values;\n\n if (sliderValues && sliderValues.length) {\n var selectedItem: any = null;\n\n if (options.usesRangleSliderModel) {\n selectedItem = _(sliderValues).find(function (i) { return i.originalItem() == (Array.isArray(value()) && value().length > 0 ? value()[0] : value); });\n }\n else {\n selectedItem = _(sliderValues).find(function (i) { return i == (Array.isArray(value()) && value().length > 0 ? value()[0] : value); });\n }\n if (selectedItem) {\n _.defer(function () {\n slider.update({\n from: sliderValues.indexOf(selectedItem)\n });\n });\n }\n }\n else {\n slider.update({\n from: ko.unwrap(value)\n });\n\n if (options.toValue) {\n slider.update({\n to: options.toValue()\n });\n }\n }\n }\n};","import ko from 'knockout';\nimport { withEffects } from 'mixins/withEffects';\r\n\nko.virtualElements.allowedBindings.safehtml = true;\n\nko.bindingHandlers.safehtml = {\n init: function (element, valueAccessor) {\n const html = valueAccessor();\n const effects = withEffects();\n\n effects.register(html => {\n ko.virtualElements.setDomNodeChildren(element, ko.utils.parseHtmlFragment(html));\n }, [html]);\n\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\n\n return { controlsDescendantBindings: true };\n }\n}","import ko, { SubscribableOrNullableValue } from 'knockout';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nko.bindingHandlers.slideToggle = {\r\n init: (element, valueAccessor, allBindings) => {\r\n const effects = withEffects();\r\n\r\n const $element = $(element); \r\n const isExpanded = ko.flattenComputed(>valueAccessor(), false);\r\n const doneCallback = allBindings.get('slideToggle-done');\r\n\r\n let isInitial = true;\r\n\r\n effects.register(isExpanded => {\r\n if (isInitial) {\r\n if (isExpanded) {\r\n $element.show();\r\n } else {\r\n $element.hide();\r\n }\r\n\r\n isInitial = false;\r\n } else {\r\n if (isExpanded) {\r\n $element.stop(true, true).slideDown({\r\n duration: allBindings().slideDuration,\r\n\r\n start: () => {\r\n if (allBindings().showOverflow)\r\n $element.css('overflow', 'visible');\r\n },\r\n\r\n complete: doneCallback\r\n });\r\n } else {\r\n $element.stop(true, true).slideUp({\r\n duration: allBindings().slideDuration,\r\n complete: doneCallback\r\n });\r\n }\r\n }\r\n }, [isExpanded], false);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\r\n }\r\n}","import { DOMHelpers } from 'helpers/dom';\r\nimport ko, { SubscribableOrNullableValue } from 'knockout';\r\nimport device from 'managers/device';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nconst windowOffset = 50;\r\nconst mobileWindowOffset = 10;\r\n\r\nconst maxWidthRestriction = 300;\r\n\r\nfunction getElement(root: HTMLElement, element?: string | HTMLElement): HTMLElement | undefined {\r\n if (_.isString(element))\r\n return root.closest(element);\r\n else\r\n return element;\r\n}\r\n\r\nexport interface SmartDropdownOptions {\r\n container?: SubscribableOrNullableValue\r\n}\r\n\r\nko.bindingHandlers.smartDropdown = {\n init: function (element: HTMLElement, valueAccessor, allBindings) {\n const optionsOrValue: SmartDropdownOptions | boolean = valueAccessor();\n const options: SmartDropdownOptions | undefined = _.isBoolean(optionsOrValue) ? undefined : optionsOrValue;\n\n const $element = $(element);\n const container = ko.pureComputed(() => getElement(element, ko.unwrap(options?.container)) ?? DOMHelpers.getScrollingContainer(element));\n const effects = withEffects();\n\n function toggleClass($element: JQuery, className: string, enable: boolean) {\n if (enable) {\r\n if (!$element.hasClass(className))\r\n $element.addClass(className);\r\n } else {\r\n if ($element.hasClass(className))\r\n $element.removeClass(className);\r\n }\r\n }\n\n function update(container: HTMLElement) {\n const offset = device.isMobile() ? mobileWindowOffset : windowOffset;\n\n const $dropdown = $element.children('ul').first();\n const dropdownWidth = $dropdown.width() ?? 0;\n\n const $subMenu = $dropdown.find('.dropdown-submenu .dropdown-menu');\n const subMenuWidth = $subMenu.width() ?? 0;\n\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const isDropdown = elementRect.top - containerRect.top < container.clientHeight / 2;\n const shouldPullRightDropdown = elementRect.left + dropdownWidth + offset > containerRect.right && elementRect.right - dropdownWidth > containerRect.left;\n const isSubmenuOverflowed = elementRect.left + subMenuWidth > containerRect.right;\n\n const calcDropdownMaxWidth = shouldPullRightDropdown ?\n elementRect.right - offset :\n containerRect.right - elementRect.left - offset;\n\n const dropdownMaxHeight = isDropdown ?\n containerRect.bottom - elementRect.bottom - offset :\n elementRect.top - containerRect.top - offset;\n\n toggleClass($element, 'dropdown', isDropdown);\n toggleClass($element, 'dropup', !isDropdown);\n toggleClass($dropdown, 'up', !isDropdown);\n\n if (!$dropdown.hasClass('wcc-pull-right-fixed')) {\n toggleClass($dropdown, 'pull-right', shouldPullRightDropdown);\n }\n\n if (allBindings().doNotRestrictWidth != true) {\n const dropdownMaxWidth = Math.min(calcDropdownMaxWidth, maxWidthRestriction);\n $dropdown.css({ 'max-width': dropdownMaxWidth });\n }\n\n if (allBindings().doNotRestrictHeight != true) {\n if ($subMenu.length == 0)\n $dropdown.css({ 'max-height': dropdownMaxHeight, 'overflow': 'auto' });\r\n }\n\n $subMenu.css({ 'left': isSubmenuOverflowed ? '-50%' : '' });\n }\n\n effects.scope((container, effects) => {\n if (document.documentElement.contains(element) && container != undefined) {\n const updateLazy = system.toUICallback(() => update(container));\n\n effects.register([\n DOMHelpers.onNodeEvent(element, 'click', updateLazy),\n DOMHelpers.onNodeEvent(element, 'hover', updateLazy),\n\n device.onResize(updateLazy)\n ]);\n\n updateLazy();\n }\r\n }, [container]);\n\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose()); \n }\n}","import Bluebird from 'bluebird';\r\nimport { DOMHelpers } from 'helpers/dom';\r\nimport ko, { SubscribableOrNullableValue } from 'knockout';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\ninterface Tooltip {\r\n show: Action\r\n hide: Action\r\n destroy: Action\r\n scrollTo: Action\r\n}\r\n\r\nexport interface TooltipConfig {\r\n message?: SubscribableOrNullableValue\r\n visible?: SubscribableOrNullableValue\r\n placement?: SubscribableOrNullableValue\r\n force?: SubscribableOrNullableValue\r\n delay?: SubscribableOrNullableValue\r\n container?: SubscribableOrNullableValue\r\n scrollTo?: SubscribableOrNullableValue\r\n}\r\n\r\nexport type TooltipPlacement = 'top' | 'right' | 'bottom' | 'left' | 'smart';\r\n\r\nko.bindingHandlers.tooltip = {\r\n init: function (element, valueAccessor) {\r\n const effects = withEffects();\r\n\r\n const getPlacement = (placement: TooltipPlacement) => {\r\n return placement === 'smart' ?\r\n (left() > windowWidth() / 2 ? 'left' : 'right') :\r\n placement;\r\n }\r\n\r\n const messageOrSettings = ko.flattenComputed(valueAccessor());\r\n const message = messageOrSettings.pluck(value => _.isString(value) ? value : ko.unwrap(value.message), '').extend({ notify: 'always' });\r\n const settings = messageOrSettings.pluck(value => _.isString(value) ? {} : value);\r\n const visible = settings.pluck(s => ko.unwrap(s.visible), true);\r\n const placement = settings.pluck(s => ko.unwrap(s.placement), 'top').mapSingle(getPlacement);\r\n const force = settings.pluck(s => ko.unwrap(s.force), false);\r\n const delay = settings.pluck(s => ko.unwrap(s.delay), 0);\r\n const container = settings.pluck(s => ko.unwrap(s.container));\r\n const scrollTo = settings.pluck(s => ko.unwrap(s.scrollTo), false);\r\n\r\n const $item = $(element);\r\n const $window = $(window);\r\n const left = ko.observable(0);\r\n const windowWidth = ko.observable(0);\r\n\r\n const isReady = ko.pureComputed(() => visible() && message().length > 0);\r\n\r\n const data = ko.pureComputed(() => {\r\n if (isReady())\r\n return {\r\n title: message(),\r\n delay: delay(),\r\n placement: placement(),\r\n container: container()\r\n };\r\n }).extend({ deferred: true });\r\n\r\n const tooltip = ko.observable();\r\n\r\n const updatePosition = () => {\r\n left($item.offset()?.left ?? 0);\r\n windowWidth($window.width() ?? 0);\r\n }\r\n\r\n effects.register(async data => {\r\n if (data != undefined) {\r\n const newTooltip = {\r\n show: () => {\r\n updatePosition();\r\n $item.tooltip('show');\r\n },\r\n hide: () => $item.tooltip('hide'),\r\n destroy: () => $item.tooltip('destroy'),\r\n\r\n scrollTo: () => $('html, body').animate({ scrollTop: $item.offset()?.top ?? 0 - 100 })\r\n }\r\n\r\n await Bluebird.delay(150);\r\n \r\n $item.tooltip(data);\r\n tooltip(newTooltip);\r\n\r\n return () => {\r\n newTooltip.hide();\r\n newTooltip.destroy();\r\n\r\n tooltip(undefined);\r\n }\r\n }\r\n }, [data]);\r\n\r\n effects.register((tooltip, force) => {\r\n if (tooltip != undefined && force)\r\n tooltip.show();\r\n }, [tooltip, force]);\r\n\r\n effects.register((tooltip, scrollTo) => {\r\n if (tooltip != undefined && scrollTo)\r\n tooltip.scrollTo();\r\n }, [tooltip, scrollTo]);\r\n\r\n effects.register(tooltip => {\r\n if (tooltip != undefined) {\r\n return [\r\n DOMHelpers.onNodeEvent(element, 'mouseenter', () => tooltip.show()),\r\n\r\n () => tooltip.destroy()\r\n ];\r\n }\r\n }, [tooltip]);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => effects.dispose());\r\n }\r\n}","define('extensions/knockout/bindings/transitionComplete', [], function () {\r\n const domService = require('helpers/dom').DOMHelpers;\r\n\r\n /**\r\n * Executes function on transition completed event\r\n * {value} should be function.\r\n */\r\n ko.bindingHandlers.transitionComplete = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var $element = $(element),\r\n callback = valueAccessor(),\r\n chilrenTransitions = allBindingsAccessor()['transition-children'],\r\n onlyTargetEvents = chilrenTransitions == null || chilrenTransitions == false;\r\n\r\n var subs = domService.onTransitionComplete(element, function (e) {\r\n if (!onlyTargetEvents || e.target == element) {\r\n callback();\r\n }\r\n });\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n if (subs) subs.dispose();\r\n });\r\n }\r\n };\r\n});","import { DOMHelpers } from 'helpers/dom';\r\nimport ko, { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { NodeTracker } from 'managers/nodes/tracker';\r\nimport { ValidatableSubscribable } from '../extenders/validate';\r\nimport { TooltipPlacement } from './tooltip';\r\n\r\ninterface Tooltip {\r\n visible: Subscribable\r\n element: HTMLElement\r\n}\r\n\r\nconst documentTracker = new NodeTracker({ node: document.body });\r\nconst tooltips = ko.observableArray();\r\n\r\nconst topTooltip = ko.pureComputed(() => {\r\n var visibleTooltips = tooltips().filter(tooltip => tooltip.visible());\r\n\r\n if (visibleTooltips.length > 0) {\r\n documentTracker.mutations();\r\n\r\n var result = visibleTooltips.reduce((result, tooltip) => {\r\n if (tooltip.visible()) {\r\n const { top, height } = tooltip.element.getBoundingClientRect();\r\n\r\n if (height > 0 && (result.top == undefined || top < result.top))\r\n return { tooltip, top };\r\n }\r\n\r\n return result;\r\n }, { tooltip: undefined, top: undefined });\r\n\r\n return result.tooltip;\r\n }\r\n}).extend({ notifyIfChanged: true });\r\n\r\nko.computed(() => {\r\n const tooltip = topTooltip();\r\n\r\n if (tooltip != undefined)\r\n DOMHelpers.scrollToDelayed(tooltip.element);\r\n});\r\n\r\nexport interface ValidationTooltipConfig {\r\n field?: ValidatableSubscribable\r\n error?: SubscribableOrNullableValue\r\n placement?: SubscribableOrNullableValue\r\n enable?: Subscribable\r\n container?: SubscribableOrNullableValue\r\n}\r\n\r\nko.bindingHandlers.validationTooltip = {\r\n init: function (element, valueAccessor, ...args) {\r\n const value = valueAccessor();\r\n const field = | undefined>value.field;\r\n const fieldError = ko.flattenComputed(field?.error, '');\r\n const error = ko.flattenComputed(value.error, fieldError);\r\n const hasError = error.is(err => err.length > 0);\r\n const enable = ko.flattenComputed(value.enable, true);\r\n const placement = ko.flattenComputed(value.placement);\r\n const container = ko.flattenComputed(value.container);\r\n\r\n const visible = ko.pureComputed(() => hasError() && enable());\r\n\r\n const tooltip = {\r\n visible: visible,\r\n element: element\r\n }\r\n\r\n tooltips.push(tooltip);\r\n\r\n const valueWrapper = ko.pureComputed(() => ({\r\n message: error,\r\n visible: visible,\r\n placement: placement,\r\n container: container,\r\n force: true\r\n }));\r\n\r\n ko.bindingHandlers.tooltip?.init?.(element, valueWrapper, ...args);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => tooltips.remove(tooltip));\r\n }\r\n}","import ko from 'knockout';\r\n\r\n/**\r\n * This binding is used to set video stream to the video element\r\n */\r\nko.bindingHandlers.streamSrc = {\r\n update: function(element, valueAccessor) {\r\n element.srcObject = ko.unwrap(valueAccessor());\r\n }\r\n}","import ko from 'knockout';\r\nimport WidgetObserver from 'managers/widgetObserver';\r\n\r\nko.bindingHandlers.widgetsContainer = {\r\n init: function (element, valueAccessor) {\r\n const observer = new WidgetObserver(element);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => observer.dispose());\r\n }\r\n};","import { globalComponents } from 'extensions/knockout/components/global';\r\nimport { componentsLibrary } from 'models/components/library';\r\nimport { DefaultViewModel } from 'viewmodels/default';\r\nimport { TemplateConfig, TemplateInfo, ViewModelConfig, ViewModelFactory } from '../types/componentDefinition';\r\n\nconst defaultViewModelFactory = () => DefaultViewModel;\nconst awaiters: { [id: string]: Promise } = {};\nconst activeAwaiters = ko.observableArray>();\n\ntype GlobalComponentsNames = keyof typeof globalComponents;\n\nexport class ComponentsContext {\n components: Array = []\r\n\r\n register(name: string, vm?: ViewModelFactory, template?: TemplateInfo, syncOnly = false) {\n name = name.toLowerCase();\n vm = vm ?? defaultViewModelFactory;\n template = template ?? 'wcc-components-' + name;\n\n let vmConfig = this.getViewModelConfig(vm),\n templateConfig = this.getTemplateConfig(name, template);\n\n this.components.push(name);\n\n if (componentsLibrary.isRegistered(name)) {\n componentsLibrary.register(name, vm);\n }\n else {\n this.registerInKO(name, vmConfig, templateConfig, syncOnly);\n componentsLibrary.register(name, vm);\n }\n\n return this;\n }\r\n\r\n registerLocal(name: string, vm?: ViewModelFactory, template?: TemplateInfo) {\r\n name = name.toLowerCase();\r\n\r\n return this.register(name, vm, template, true).preload(name as any);\r\n }\r\n\r\n preload(...nameOrNames: Array): ComponentsContext {\n nameOrNames.forEach(name => this.getAwaiter(name));\r\n return this;\r\n }\n\n async await(...names: Array): Promise\n async await(...names: Array): Promise\n async await(...names: Array) {\r\n const promises = names.map(name => this.getAwaiter(name));\r\n\r\n if (promises.length > 0)\r\n await Promise.all(promises);\r\n\r\n await this.awaitAll();\r\n }\n\n async awaitAll() {\n const promises = [...activeAwaiters()];\r\n\r\n if (promises.length > 0) {\r\n await Promise.all(promises);\r\n const currentPromises = [...activeAwaiters()];\r\n\r\n if (promises.length !== currentPromises.length)\r\n await this.awaitAll();\r\n }\r\n }\r\n\r\n dispose() {\n this.components.forEach(name => {\n if (componentsLibrary.hasOneOwner(name)) {\n ko.components.unregister(name);\n ko.components.unregister(name + '-sync');\n\n componentsLibrary.unregister(name);\n }\n });\n }\r\n\r\n private getAwaiter(name: string) {\r\n if (name.endsWith('-sync'))\r\n name = name.substr(0, name.length - 5);\r\n\r\n let awaiter = awaiters[name];\n\n if (awaiter == undefined) {\n const factory = componentsLibrary.getViewModel(name) as ViewModelFactory;\r\n\r\n if (factory) {\r\n awaiter = Promise.resolve(factory());\r\n awaiters[name] = awaiter;\r\n\r\n activeAwaiters.push(awaiter);\r\n\r\n awaiter.finally(() => activeAwaiters.remove(awaiter));\r\n } else {\r\n console.warn('component does not exist', name);\r\n }\r\n }\r\n\r\n return awaiter;\r\n }\r\n\r\n private getViewModelConfig(vm: ViewModelFactory): ViewModelConfig {\n if (!_(vm).isFunction())\n console.warn('components: you should provide a factory method');\n\n return { promise: vm };\n }\r\n\r\n private getTemplateConfig(name: string, template: TemplateInfo): TemplateConfig {\n if (typeof template === 'string') {\n if (template.length > 8 && template.substr(0, 8) === 'require:') {\r\n throw Error('unsupported template config');\r\n } else if (template === 'inline') {\r\n return '';\r\n } else {\r\n return { element: template };\r\n }\r\n } else if ('template' in template) {\n return template.template;\n } else if ('dynamicView' in template) {\n return { dynamicView: { name: template.dynamicView, elementId: 'wcc-components-' + name } }\n } else {\n return { element: template };\n }\n }\r\n\r\n private registerInKO(name: string, vmConfig: ViewModelConfig, templateConfig: TemplateConfig, syncOnly = false) {\n ko.components.register(name, {\n viewModel: vmConfig,\n template: templateConfig,\n synchronous: syncOnly\n });\n\n ko.components.register(name + '-sync', {\n viewModel: vmConfig,\n template: templateConfig,\n synchronous: true\n });\n };\r\n}\r\n\r\nexport var instance = new ComponentsContext();","export var globalComponents = {\r\n 'grid-new': { vm: () => import('components/grid/grid') },\r\n 'attachments-grid': { vm: () => import('components/attachments/grid/grid') },\r\n 'attachments-box': { vm: () => import('components/attachments/box/box') },\r\n 'photoset-new': { vm: () => import('components/photoset/photoset') },\r\n 'wcc-slider': { vm: () => import('components/slider/slider') },\r\n 'pinboard': { vm: () => import('components/pinboard/viewmodel') },\r\n 'overlay': { vm: () => import('components/overlay/overlay') },\r\n 'video-overlay-stage': { vm: () => import('components/videoOverlay/stage') },\r\n 'thread-editing-overlay-stage': { vm: () => import('components/threadEditingOverlay/stage') },\r\n 'dd-slider': { vm: () => import('components/ddSlider/ddSlider') },\r\n 'dd-stack': { vm: () => import('components/ddStack/ddStack') },\r\n 'range-slider': { vm: () => import('components/rangeSlider/rangeSlider') },\r\n 'wcc-dialog': { vm: () => import('components/dialog/dialog') },\r\n 'bootstrap-dialog': { vm: () => import('components/bootstrapDialog/bootstrapDialog') },\r\n 'expandable-control': { vm: () => import('components/expandableControl/expandableControl') },\r\n\r\n 'ace-editor': { vm: () => import('components/editors/ace/ace') },\r\n 'master-editor': { vm: () => import('components/editors/master/master') },\r\n 'master-editor-preview-inner': { vm: () => import('components/editors/master/preview/inner/viewmodel') },\r\n 'master-viewer': { vm: () => import('components/editors/master/viewer/viewer') },\r\n 'content-box': { vm: () => import('components/editors/content/box/box') },\r\n 'content-box-frame': { vm: () => import('components/editors/content/box/frame') },\r\n 'content-box-frame-inner': { vm: () => import('components/editors/content/box/frame-inner') },\r\n 'content-box-preview-inner': { vm: () => import('components/editors/content/box/preview-inner') },\r\n 'content-box-viewer': { vm: () => import('components/editors/content/box/viewer') },\r\n 'text-editor': { vm: () => import('components/editors/text/text') },\r\n 'number-editor': { vm: () => import('components/editors/number/number') },\r\n 'attachment-title-editor': { vm: () => import('components/editors/attachments/title/viewmodel') },\r\n 'chat-editor': { vm: () => import('components/editors/chat/chat') },\r\n 'thread-translation-editor': { vm: () => import('components/editors/threadTranslation/threadTranslation') },\r\n 'wcc-image-editor': { vm: () => import('components/editors/image/image') },\r\n 'blanks-editor': { vm: () => import('components/editors/blanks/blanks') },\r\n 'ranking-form': { vm: () => import('components/rankingForm/rankingForm') },\r\n 'wcc-html-editor': { vm: () => import('components/editors/html/html') },\r\n 'websites-editor': { vm: () => import('components/editors/websites/websites') },\r\n\r\n 'limitedinput': { vm: () => import('components/inputs/limited/viewmodel') },\r\n 'floatinginput': { vm: () => import('components/floatingInput/viewmodel') },\r\n 'phone-number-input': { vm: () => import('components/inputs/phoneNumber/viewmodel') },\r\n\r\n 'topic-statistics': { vm: () => import('components/statistics/topic/viewmodel') },\r\n 'survey-statistics': { vm: () => import('components/statistics/survey/survey') },\r\n 'topics-completion-statistics': { vm: () => import('components/statistics/topicsCompletion/viewmodel') },\r\n 'person-statistics': { vm: () => import('components/statistics/person/viewmodel') },\r\n 'wcs-topics-completion': { vm: () => import('components/people/topicCompletions/viewmodel') },\r\n\r\n 'pixabay-picker': { vm: () => import('components/imagepickers/external/pixabay') },\r\n 'unsplash-picker': { vm: () => import('components/imagepickers/external/unsplash') },\r\n 'composite-images-picker': { vm: () => import('components/imagepickers/composite/composite') },\r\n 'icons-picker': { vm: () => import('components/iconsPicker/iconsPicker') },\r\n 'wcc-avatar-picker': { vm: () => import('components/avatar/picker/picker') },\r\n 'emojis-picker': { vm: () => import('viewmodels/emojis/picker'), template: { dynamicView: '_emojisPicker' } },\r\n 'snapshots-picker': { vm: () => import('components/snapshotsPicker/snapshotsPicker') },\r\n 'wcc-colorpicker': { vm: () => import('components/colorPicker/viewmodel') },\r\n 'qualzy-color-picker-basic': { vm: () => import('components/colorPicker/basic/colorPickerBasic') },\r\n 'wcc-emojispicker': { vm: () => import('components/emojisPicker/emojisPicker') },\r\n\r\n 'tags-editor': { vm: () => import('components/tags/editor/editor') },\r\n 'tags-selector': { vm: () => import('components/tags/selector/selector') },\r\n 'tag-picker': { vm: () => import('components/tags/picker/picker') },\r\n 'tags-list': { vm: () => import('components/tags/list/list') },\r\n 'entity-tag': { vm: () => import('components/tags/entityTag/viewmodel') },\r\n 'tag': { vm: () => import('components/tags/tag/tag') },\r\n\r\n 'fancybox-image-new': { vm: () => import('components/fancybox/image') },\r\n 'fancybox-inline-new': { vm: () => import('components/fancybox/inline') },\r\n 'fancybox-inline': { vm: () => import('components/fancybox/inline'), template: 'wcc-components-fancybox-inline-new' },\r\n 'fancybox-iframe-new': { vm: () => import('components/fancybox/iframe') },\r\n 'fancybox-video-iframe-new': { vm: () => import('components/fancybox/videoIframe') },\r\n 'fancybox-youtube-new': { vm: () => import('components/fancybox/youtube') },\r\n 'fancybox-vimeo-new': { vm: () => import('components/fancybox/vimeo') },\r\n\r\n 'content-resizer': { vm: () => import('components/contentResizer/contentResizer') },\r\n 'content-frame': { vm: () => import('components/contentFrame/viewmodel') },\r\n 'content-block': { vm: () => import('components/contentBlock/contentBlock') },\r\n 'progress-multibar': { vm: () => import('components/progressMultibar/progressMultibar') },\r\n 'progress-cover': { vm: () => import('components/progressCover/viewmodel') },\r\n 'progress-ring': { vm: () => import('components/progressRing/progressRing') },\r\n 'wcc-droparea': { vm: () => import('components/droparea/droparea') },\r\n 'staging-tools': { vm: () => import('components/staging/tools/tools') },\r\n 'password-policy': { vm: () => import('components/passwordPolicy/viewmodel') },\r\n 'sortable-list': { vm: () => import('components/sortable/list/list') },\r\n 'sortable-grid': { vm: () => import('components/sortable/grid/grid') },\r\n 'sliding-container': { vm: () => import('components/slidingContainer/slidingContainer') },\r\n 'sliding-label': { vm: () => import('components/slidingLabel/slidingLabel') },\r\n 'infinite-list': { vm: () => import('components/infiniteList/infiniteList') },\r\n 'qr-code': { vm: () => import('components/qrcode/viewmodel') },\r\n 'wcc-alert': { vm: () => import('components/alert/alert') },\r\n 'vote-bubble': { vm: () => import('components/voteBubble/voteBubble') },\r\n 'ideation-vote-picker': { vm: () => import('components/ideationVotePicker/ideationVotePicker') },\r\n\r\n 'wcc-heatmap': { vm: () => import('components/heatmap/heatmap') },\r\n 'wcc-classic-survey': { vm: () => import('components/classicSurvey/classicSurvey') },\r\n 'wcc-password-reset': { vm: () => import('components/passwordReset/viewmodel') },\r\n 'cards-rating-matrix': { vm: () => import('components/cardsRatingMatrix/cardsRatingMatrix') },\r\n 'cards-sorter-desktop': { vm: () => import('components/cardsSorter/desktop/desktop') },\r\n 'cards-sorter-mobile': { vm: () => import('components/cardsSorter/mobile/mobile') },\r\n 'cards-scorer': { vm: () => import('components/cardsScorer/cardsScorer') },\r\n 'cards-score-answers': { vm: () => import('components/cardsScoreAnswers/cardsScoreAnswers') },\r\n 'topic-questions': { vm: () => import('components/topicQuestions/topicQuestions') },\r\n 'screen-recorder': { vm: () => import('components/screenRecorder/screenRecorder') },\r\n 'screen-recorder-s3': { vm: () => import('components/screenRecorder/screenRecorderS3') },\r\n 'audio-recorder': { vm: () => import('components/audioRecorder/audioRecorder') },\r\n 'wcc-video-recorder': { vm: () => import('components/videoRecorder/videoRecorder') },\r\n 'wcc-video-picker': { vm: () => import('components/wccVideoPicker/wccVideoPicker') },\r\n 'audio-picker': { vm: () => import('components/audioPicker/audioPicker') },\r\n 'media-picker-dialog': { vm: () => import('components/mediaPickerDialog/mediaPickerDialog') },\r\n 'media-picker-box': { vm: () => import('components/mediaPickerBox/mediaPickerBox') },\r\n 'video-presentation': { vm: () => import('components/videoPresentation/videoPresentation') },\r\n 'person-redemptions': { vm: () => import('components/redemptions/viewmodel') },\r\n 'sms-link-sender': { vm: () => import('components/sms/linkSender/viewmodel') },\r\n 'login': { vm: () => import('components/login/viewmodel') },\r\n 'data-grid': { vm: () => import('components/dataGrid/dataGrid') },\r\n 'words-cloud': { vm: () => import('components/wordsCloud/wordsCloud') },\r\n\r\n /// to remove once temporary CP coupling is over\r\n 'community-cp-widget-launcher': { vm: () => import('components/community/widgets/contactprofiler/cp-widget-launcher') },\r\n 'cp-redemptions': { vm: () => import('components/redemptions/cp/viewmodel') },\r\n 'cp-redemption-history': { vm: () => import('components/community/widgets/contactprofiler/redemptions/redemptionhistory') },\r\n 'cp-redemption-offers': { vm: () => import('components/community/widgets/contactprofiler/redemptions/redemptionoffers') },\r\n 'cp-participation-history': { vm: () => import('components/community/widgets/contactprofiler/activity/participationhistory') },\r\n 'cp-availablejobs': { vm: () => import('components/community/widgets/contactprofiler/jobs/availablejobs') },\r\n 'cp-referrerlink': { vm: () => import('components/community/widgets/contactprofiler/referral/referrerlink') },\r\n\r\n 'community-projects': { vm: () => import('components/community/widgets/projects/projects') },\r\n\r\n 'wcc-generic-attachment': { vm: () => import('components/attachments/generic/generic') },\r\n 'wcc-image': { vm: () => import('components/attachments/image/image') },\r\n 'wcc-video': { vm: () => import('components/attachments/video/video') },\r\n 'wcc-audio': { vm: () => import('components/attachments/audio/audio') },\r\n 'wcc-youtube-video': { vm: () => import('components/attachments/youtube/youtube') },\r\n 'wcc-vimeo-video': { vm: () => import('components/attachments/vimeo/vimeo') },\r\n 'wcc-file': { vm: () => import('components/attachments/file/file') },\r\n 'wcc-fluid-icon': { vm: () => import('components/attachments/fluidIcon/fluidIcon') },\r\n 'wcc-link': { vm: () => import('components/attachments/link/link') },\r\n 'wcc-upload': { vm: () => import('components/attachments/upload/upload') },\r\n \r\n 'wcc-attachment-box-layout': { vm: () => import('components/attachments/layouts/box/box') },\r\n 'wcc-attachment-panel-layout': { vm: () => import('components/attachments/layouts/panel/panel') },\r\n 'wcc-attachment-row-layout': { vm: () => import('components/attachments/layouts/row/row') },\r\n 'attachment-transcript': { vm: () => import('components/attachments/transcript/transcript') },\r\n 'attachment-caption': { vm: () => import('components/attachments/decorators/caption/caption') },\r\n 'attachment-controls': { vm: () => import('components/attachments/decorators/controls/controls') },\r\n\r\n 'wcc-player-youtube': { vm: () => import('components/players/youtubePlayer'), template: 'wcc-components-wcc-player' },\r\n 'wcc-player-vimeo': { vm: () => import('components/players/vimeoPlayer'), template: 'wcc-components-wcc-player' },\r\n 'wcc-player-s3': { vm: () => import('components/players/s3Player'), template: 'wcc-components-wcc-player-s3' },\r\n \r\n 'wcc-select': { vm: () => import('components/dropdowns/select/select') },\r\n 'wcc-multiselect': { vm: () => import('components/dropdowns/multiselect/multiselect') },\r\n 'wcc-list': { vm: () => import('components/dropdowns/list/list') },\r\n 'icheck-multiselect': { vm: () => import('components/icheck/multiselect/multiselect') },\r\n 'icheck-select': { vm: () => import('components/icheck/select/select') },\r\n 'icheck-item': { vm: () => import('components/icheck/item/item') },\r\n 'wcc-select-2': { vm: () => import('components/select2/select2') },\r\n 'translation-checkbox': { vm: () => import('components/controls/translationCheckbox/translationCheckbox') },\r\n 'wcc-timezone': { vm: () => import('components/controls/timezone/timezone') },\r\n 'wcc-sms-verification': { vm: () => import('components/smsverification/smsverification') }, \r\n 'wcc-two-factor-auth-setup': { vm: () => import('components/security/twofactorauth/twofactorauthsetup') },\r\n 'wcc-two-factor-auth-verify': { vm: () => import('components/security/twofactorauth/twofactorauthverify') },\r\n\r\n 'task-activity': { vm: () => import('components/task/activity/activity') },\r\n 'task-topics-slider': { vm: () => import('components/task/topics/slider/slider') },\r\n 'task-topics-indicators': { vm: () => import('components/task/topics/indicators/viewmodel') },\r\n 'task-topics-list': { vm: () => import('components/task/topics/list/list') },\r\n 'task-content-image': { vm: () => import('components/task/contentImage/contentImage') },\r\n 'task-image': { vm: () => import('components/task/image/image') },\r\n 'task-terms': { vm: () => import('components/task/terms/terms') },\r\n\r\n 'topic-image': { vm: () => import('components/topic/image/image') },\r\n 'topic-content-image': { vm: () => import('components/topic/contentImage/contentImage') },\r\n 'topic-box': { vm: () => import('components/topic/box/box') },\r\n 'topic-content': { vm: () => import('components/topic/content/content') },\r\n 'topic-summary': { vm: () => import('components/topic/summary/summary') },\r\n 'topic-summary-instructions-header': { vm: () => import('components/topic/summary/instructionsHeader/instructionsHeader') },\r\n 'topic-attachments': { vm: () => import('components/topic/attachments/attachments') },\r\n 'topic-comments': { vm: () => import('components/topic/comments/comments') },\r\n 'topic-comment': { vm: () => import('components/topic/comment/comment') },\r\n 'topic-heatmap': { vm: () => import('components/topic/heatmap/heatmap') },\r\n 'topic-card': { vm: () => import('components/topic/card/card') },\r\n 'topic-comments-filters': { vm: () => import('components/topic/commentsFilters/commentsFilters') },\r\n 'topic-usercontent-standalone': { vm: () => import('components/topic/userContent/standalone') },\r\n 'topic-usercontent-mobile': { vm: () => import('components/topic/userContent/mobile') },\r\n 'topic-usercontent-inline': { vm: () => import('components/topic/userContent/inline') },\r\n 'topic-comments-table': { vm: () => import('components/topic/commentsTable/commentsTable') },\r\n 'topic-desktop-menu': { vm: () => import('components/topic/menus/desktop/desktop') },\r\n 'topic-mobile-menu': { vm: () => import('components/topic/menus/mobile/mobile') },\r\n 'topic-classic-survey': { vm: () => import('components/topic/classicSurvey/classicSurvey') },\r\n\r\n 'thread-media': { vm: () => import('components/topic/threadMedia/threadMedia') },\r\n\r\n 'comment-editor-standalone': { vm: () => import('components/editors/thread/text/comment/standaloneComment') },\r\n 'comment-editor-mobile': { vm: () => import('components/editors/thread/text/comment/mobileComment') },\r\n 'comment-editor-inline': { vm: () => import('components/editors/thread/text/comment/inlineComment') },\r\n 'reply-editor-standalone': { vm: () => import('components/editors/thread/text/reply/standaloneReply') },\r\n 'reply-editor-inline': { vm: () => import('components/editors/thread/text/reply/inlineReply') },\r\n 'reply-suggestion': { vm: () => import('components/editors/thread/text/replySuggestion/replySuggestion') },\r\n 'open-ai-completion': { vm: () => import('components/openAiCompletion/openAiCompletion') },\r\n 'ideation-vote-editor-standalone': { vm: () => import('components/editors/thread/text/ideationVote/standaloneIdeationVote') },\r\n 'ideation-vote-editor-inline': { vm: () => import('components/editors/thread/text/ideationVote/inlineIdeationVote') },\r\n 'survey-editor-standalone': { vm: () => import('components/editors/thread/survey/standaloneSurvey') },\r\n 'survey-editor-mobile': { vm: () => import('components/editors/thread/survey/mobileSurvey') },\r\n 'info-thread-editor': { vm: () => import('components/editors/thread/info/info') },\r\n 'externalsurvey-editor-participant': { vm: () => import('components/editors/thread/externalSurvey/externalSurvey-participant') },\r\n 'externalsurvey-editor-mod': { vm: () => import('components/editors/thread/externalSurvey/externalSurvey-mod') },\r\n 'heatmap-editor-standalone': { vm: () => import('components/editors/thread/heatmap/standaloneHeatmap') },\r\n 'heatmap-editor-mobile': { vm: () => import('components/editors/thread/heatmap/mobileHeatmap') },\r\n 'cards-sort-editor-standalone': { vm: () => import('components/editors/thread/cardsSort/modernStandaloneCardsSort') },\r\n 'cards-sort-editor-mobile': { vm: () => import('components/editors/thread/cardsSort/modernMobileCardsSort') },\r\n 'cards-score-editor-standalone': { vm: () => import('components/editors/thread/cardsScore/standaloneCardsScore') },\r\n 'cards-score-editor-mobile': { vm: () => import('components/editors/thread/cardsScore/mobileCardsScore') },\r\n 'video-presentation-editor-standalone': { vm: () => import('components/editors/thread/videoPresentation/standaloneVideoPresentation') },\r\n 'video-presentation-editor-mobile': { vm: () => import('components/editors/thread/videoPresentation/mobileVideoPresentation') },\r\n 'pinboard-editor-standalone': { vm: () => import('components/editors/thread/pinboard/standalonePinboard') },\r\n 'pinboard-editor-mobile': { vm: () => import('components/editors/thread/pinboard/mobilePinboard') },\r\n 'multicomment-editor-standalone': { vm: () => import('components/editors/thread/multicomment/standaloneMulticomment') },\r\n 'multicomment-editor-mobile': { vm: () => import('components/editors/thread/multicomment/mobileMulticomment') },\r\n 'screenrecording-editor-standalone': { vm: () => import('components/editors/thread/screenRecording/standaloneScreenRecording') },\r\n 'screenrecording-editor-mobile': { vm: () => import('components/editors/thread/screenRecording/mobileScreenRecording') },\r\n 'audiorecording-editor-standalone': { vm: () => import('components/editors/thread/audioRecording/standaloneAudioRecording') },\r\n 'audiorecording-editor-mobile': { vm: () => import('components/editors/thread/audioRecording/mobileAudioRecording') },\r\n\r\n 'cb-video': { vm: () => import('components/contentBuilder/widgets/video/video') },\r\n 'cb-support-button': { vm: () => import('components/contentBuilder/widgets/supportButton/supportButton') },\r\n\r\n //'poll-anchor': { vm: () => import('components/polls/anchor/viewmodel') },\r\n 'mandatory-probes-anchor': { vm: () => import('components/mandatoryProbes/anchor/viewmodel') },\r\n\r\n 'current-user-avatar': { vm: () => import('components/avatar/currentUser/currentUser') },\r\n 'person-avatar': { vm: () => import('components/avatar/person/person') },\r\n 'wcc-avatar': { vm: () => import('components/avatar/avatar/avatar') },\r\n 'wcc-avatar-editor': { vm: () => import('components/avatar/editor/editor') },\r\n 'wcc-content': { vm: () => import('components/content/content') },\r\n 'wcc-loader': { vm: () => import('components/loader/loader') },\r\n 'spinner': { vm: () => import('viewmodels/spinner'), template: { dynamicView: '_spinner' } },\r\n 'spinner-new': { vm: () => import('components/spinner/viewmodel') },\r\n 'wcs-spinner': { vm: () => import('components/wcsSpinner/wcsSpinner') },\r\n 'component-awaiter': { vm: () => import('components/componentAwaiter/componentAwaiter') },\r\n 'controls-content-pickers': { vm: () => import('components/controls/contentPickers/contentPickers') },\r\n\r\n 'community-box': { vm: () => import('components/community/widgets/box/box') },\r\n 'community-todo': { vm: () => import('components/community/widgets/todo/viewmodel') },\r\n 'community-navigation': { vm: () => import('components/community/widgets/navigation/navigation') },\r\n 'community-avatar': { vm: () => import('components/community/widgets/avatar/avatar') },\r\n 'community-redemptions': { vm: () => import('components/community/widgets/redemptions/viewmodel') },\r\n 'community-redemptions-cp': { vm: () => import('components/community/widgets/redemptions/cp/viewmodel') },\r\n 'community-video': { vm: () => import('components/community/widgets/video/viewmodel') },\r\n 'community-widget-tools': { vm: () => import('components/community/widget/tools/viewmodel') },\r\n 'community-slider': { vm: () => import('components/community/widgets/slider/viewmodel') },\r\n 'community-topic-box': { vm: () => import('components/community/widgets/topicBox/topicBox') },\r\n 'community-activities': { vm: () => import('components/community/widgets/activities/viewmodel') },\r\n 'community-grid': { vm: () => import('components/community/widgets/grid/grid') },\r\n 'community-widget-template-editor': { vm: () => import('components/community/widget/templateEditor/templateEditor') },\r\n 'community-widget-templates-manager': { vm: () => import('components/community/widget/templatesManager/templatesManager') },\r\n 'community-templates-guard': { vm: () => import('components/community/templates/guard/guard') },\r\n 'community-templates-data-editor': { vm: () => import('components/community/templates/dataEditor/dataEditor') },\r\n // related to community (but accessed via ad-hoc project within community)\r\n 'discussion-community-menu': { vm: () => import('components/community/discussions/navigation/discussionCommunityMenu') },\r\n\r\n 'ecokit-community-order-button': { vm: () => import('components/community/widgets/ecokit/orderButton/orderButton') },\r\n 'ecokit-community-order-form': { vm: () => import('components/community/widgets/ecokit/orderForm/orderForm') },\r\n\r\n 'cookie-consent': { vm: () => import('components/cookieconsent/cookieconsent') },\r\n\r\n 'microphone-selector': { vm: () => import('components/controls/microphoneSelector/component') },\r\n 'camera-selector': { vm: () => import('components/controls/cameraSelector/cameraSelector') },\r\n \r\n 'qualzy-video-recorder': { vm: () => import('../../../components/controls/recorders/qualzyVideoRecorder/component') },\r\n 'qualzy-audio-recorder': { vm: () => import('../../../components/controls/recorders/qualzyAudioRecorder/component') },\r\n 'qualzy-screen-recorder': { vm: () => import('../../../components/controls/recorders/qualzyScreenRecorder/component') },\r\n 'qualzy-screen-video-recorder': { vm: () => import('../../../components/controls/recorders/qualzyScreenVideoRecorder/component') },\r\n \r\n 'qualzy-endpoint-file-uploader': { vm: () => import('../../../components/controls/uploaders/qualzyEndpointFileUploader/component') },\r\n 'qualzy-s3-file-uploader': { vm: () => import('../../../components/controls/uploaders/qualzyS3FileUploader/component') },\r\n\r\n 'simple-time-display': { vm: () => import('../../../components/controls/timeDisplay/simpleTimeDisplay') },\r\n}","import ko, { Subscribable } from 'knockout';\r\nimport { Func } from '../../../interfaces/func';\r\nimport { withEffects } from '../../../mixins/withEffects';\r\n\r\nexport interface DisposablesCollection {\r\n values: Subscribable\r\n dispose: Action\r\n}\r\n\r\nko.disposablesCollection = function (source: Subscribable, factory: Func, dispose: Action<[item: K]>) {\r\n const effects = withEffects();\r\n\r\n const map = new Map();\r\n const collection = ko.observableArray();\r\n\r\n effects.register(values => {\r\n values.forEach(value => {\r\n if (!map.has(value)) {\r\n const item = factory(value);\r\n\r\n if (item != undefined)\r\n map.set(value, item);\r\n }\r\n });\r\n\r\n [...map.keys()].forEach(key => {\r\n if (!values.includes(key)) {\r\n const item = map.get(key);\r\n\r\n if (item != undefined)\r\n dispose(item);\r\n\r\n map.delete(key);\r\n }\r\n });\r\n\r\n collection([...map.values()]);\r\n }, [source]);\r\n\r\n effects.register([\r\n () => {\r\n [...map.keys()].forEach(key => {\r\n const item = map.get(key);\r\n\r\n if (item != undefined)\r\n dispose(item);\r\n\r\n map.delete(key);\r\n });\r\n\r\n collection([]);\r\n }\r\n ]);\r\n\r\n return >{\r\n values: collection.readOnly(),\r\n dispose: () => effects.dispose()\r\n }\r\n}\r\n\r\ndeclare module 'knockout' {\r\n /**\r\n * Creates computed from subscribable or raw value.\r\n * @param value\r\n */\r\n export function disposablesCollection(source: Subscribable, factory: Func, dispose: Action<[item: K]>): DisposablesCollection\r\n}","import ko, { SubscribableOrNullableValue } from 'knockout';\nimport { Func } from '../../../interfaces/func';\r\n\nko.flattenComputed = function (value: SubscribableOrNullableValue | Func>, defaultValue: SubscribableOrNullableValue) {\n if (!ko.isSubscribable(value) && _.isFunction(value)) {\n const wrapper = ko.pureComputed(() => value());\n return ko.pureComputed(() => ko.unwrap(wrapper()) ?? ko.unwrap(defaultValue));\r\n } else {\r\n return ko.pureComputed(() => ko.unwrap(value) ?? ko.unwrap(defaultValue));\r\n }\r\n} as any\n\ndeclare module 'knockout' {\n /**\r\n * Creates computed from subscribable or raw value.\r\n * @param value\r\n */\n export function flattenComputed(value: SubscribableOrValue): Subscribable\n\n /**\r\n * Creates computed from subscribable or raw value.\r\n * @param value\r\n */\n export function flattenComputed(value: Func>): Subscribable\n\n /**\r\n * Creates computed from subscribable or nullable value\r\n * @param value\r\n */\n export function flattenComputed(value: SubscribableOrNullableValue): Subscribable\n\n /**\r\n * Creates computed from subscribable or nullable value\r\n * @param value\r\n */\n export function flattenComputed(value: Func>): Subscribable\n\n /**\r\n * Creates computed from subscribable or nullable value. allows to set default value\r\n * @param value\r\n * @param defaultValue\r\n */\n export function flattenComputed(value: SubscribableOrNullableValue, defaultValue: SubscribableOrValue>): Subscribable>\n\n /**\r\n * Creates computed from subscribable or nullable value. allows to set default value\r\n * @param value\r\n * @param defaultValue\r\n */\n export function flattenComputed(value: Func>, defaultValue: SubscribableOrValue>): Subscribable>\n\n /**\r\n * Creates computed from subscribable or nullable value. allows to set nullable default value\r\n * @param value\r\n * @param defaultValue\r\n */\n export function flattenComputed(value: SubscribableOrNullableValue, defaultValue: SubscribableOrNullableValue): Subscribable | undefined>\n\n /**\r\n * Creates computed from subscribable or nullable value. allows to set nullable default value\r\n * @param value\r\n * @param defaultValue\r\n */\n export function flattenComputed(value: Func>, defaultValue: SubscribableOrNullableValue): Subscribable | undefined>\n}","import { Func } from 'interfaces/func';\r\nimport ko, { UnwrappedTuple } from 'knockout';\r\n\nko.fromPromise = function , U>(factory: Func | U, UnwrappedTuple<[...T]>> | Func, deps: any[] = [], defaultValue?: U) {\n const awaiter = ko.strictComputed((...deps) => {\n const value = factory(...deps as any);\n\n if (_.isObject(value) && 'then' in value)\n return system.getPromiseAwaiter(value);\n else\n return value;\n }, deps);\n\n return ko.pureComputed(() => ko.unwrap(awaiter()) ?? defaultValue);\n}\n\ndeclare module 'knockout' {\n /**\r\n * Creates computed from promise\r\n * @param factory function which returns promise\r\n */\n export function fromPromise(factory: Func | U>): PureComputed\n\n /**\r\n * Creates computed from promise.\r\n * doesn't react to subscribables not specified in dependencies array\r\n * @param factory function which returns promise\r\n * @param deps dependencies array\r\n */\n export function fromPromise, U>(factory: Func | U, UnwrappedTuple<[...T]>>, deps: [...T]): PureComputed\n\n /**\r\n * Creates computed from promise.\r\n * doesn't react to subscribables not specified in dependencies array\r\n * allows to set default value\r\n * @param factory function which returns promise\r\n * @param deps dependencies array\r\n * @param defaultValue default value\r\n */\n export function fromPromise, U>(factory: Func | U, UnwrappedTuple<[...T]>>, deps: [...T], defaultValue: NonNullable): PureComputed>\n}","import ko, { SubscribableOrNullableValue } from 'knockout';\r\n\r\nko.multistreamComputed = function (...streams: SubscribableOrNullableValue[]) {\r\n const value = ko.observable();\r\n\r\n const result = ko.pureComputed(() => {\r\n const newValue = streams.reduce((result, stream) => {\r\n if (result == undefined)\r\n return ko.unwrap(stream);\r\n\r\n return result;\r\n }, undefined);\r\n\r\n if (newValue != undefined)\r\n value(newValue);\r\n\r\n return value();\r\n });\r\n\r\n return result;\r\n}\r\n\r\ndeclare module 'knockout' {\r\n /**\r\n * Creates computed which returns first non-null value from all streams or it's last value\r\n * in other words every stream can write it's value into inner cache only when it's not null and all streams before it are null\r\n * @param streams input streams of values\r\n */\r\n export function multistreamComputed(...streams: SubscribableOrNullableValue[]): Subscribable\r\n}","import ko from 'knockout';\r\n\r\nko.observableMap = function (source?: Map) {\r\n const observable = ko.observable(source ?? new Map());\r\n\r\n const has = (key: K): boolean => {\r\n return observable().has(key);\r\n }\r\n\r\n const get = (key: K): V | undefined => {\r\n return observable().get(key);\r\n }\r\n\r\n const set = (key: K, value: V): void => {\r\n observable.valueWillMutate();\r\n observable().set(key, value);\r\n observable.valueHasMutated();\r\n }\r\n\r\n const remove = (key: K): boolean => {\r\n return observable().delete(key);\r\n }\r\n\r\n const clear = () => {\r\n observable().clear();\r\n }\r\n\r\n const keys = () => ko.pureComputed(() => [...observable().keys()]);\r\n const values = () => ko.pureComputed(() => [...observable().values()]);\r\n const entries = () => ko.pureComputed(() => [...observable().entries()]);\r\n\r\n return >_(observable).extend({ has, get, set, keys, values, entries, delete: remove, clear });\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface ObservableMap extends Observable> {\r\n keys(): Subscribable\r\n values(): Subscribable\r\n entries(): Subscribable<[K,V][]>\r\n\r\n has(key: K): boolean\r\n get(key: K): V | undefined\r\n set(key: K, value: V): void\r\n delete(key: K): boolean\r\n clear(): void\r\n }\r\n\r\n /**\r\n * Creates computed from subscribable or raw value.\r\n * @param value\r\n */\r\n export function observableMap(source?: Map): ObservableMap\r\n}","import { Func } from 'interfaces/func';\r\nimport ko, { UnwrappedTuple } from 'knockout';\r\n\nko.strictComputed = function , U>(factory: Func>, deps: [...T], ignoreDependencies = true) {\n return ko.pureComputed(() => {\r\n const unwrappedDeps = deps.map(v => ko.unwrap(v));\r\n\r\n return ignoreDependencies ?\r\n ko.ignoreDependencies(factory, null, unwrappedDeps) :\r\n factory(...unwrappedDeps);\r\n });\r\n}\n\ndeclare module 'knockout' {\n /**\r\n * Creates pure computed from limited number of dependencies\r\n * no inner subscriptions calls will trigger reevaluation\r\n * @param factory function which generates new value\r\n * @param deps dependencies array\r\n */\n export function strictComputed, U>(factory: Func>, deps: [...T], ignoreDependencies?: boolean): PureComputed\n}","import ko, { SubscribableOrNullableValue } from 'knockout';\n\nconst { now } = settings;\n\ninterface TimeConditionOptions {\n after?: SubscribableOrNullableValue\n before?: SubscribableOrNullableValue \r\n}\n\nko.timeCondition = function (options: TimeConditionOptions) {\n const computedAfter = ko.flattenComputed(options.after);\n const computedBefore = ko.flattenComputed(options.before); \r\n\r\n let lastBefore: Date | undefined\r\n let lastAfter: Date | undefined\r\n\r\n let isAlwaysFalse = false;\r\n let isAlwaysTrue = false;\r\n\r\n return ko.pureComputed(() => {\r\n const after = computedAfter();\r\n const before = computedBefore();\r\n\r\n if (before != undefined) {\r\n //before condition is not changed and we gone outside of allowed boundary\r\n if (before === lastBefore && isAlwaysFalse)\r\n return false;\r\n\r\n lastBefore = before;\r\n isAlwaysFalse = now() > before;\r\n\r\n if (isAlwaysFalse)\r\n return false; \r\n }\r\n\r\n if (after != undefined) {\r\n if (after === lastAfter && isAlwaysTrue)\r\n return true;\r\n\r\n lastAfter = after;\r\n isAlwaysTrue = now() > after;\r\n\r\n if (isAlwaysTrue)\r\n return true;\r\n }\r\n\r\n //run regular checks\r\n if (after != undefined && before != undefined)\r\n return now() >= after && now() <= before;\r\n\r\n if (after != undefined)\r\n return now() >= after;\r\n\r\n if (before != undefined)\r\n return now() <= before;\r\n\r\n //invalid boundaries so return false\r\n return false;\r\n });\r\n}\n\ndeclare module 'knockout' {\n /**\r\n * creates special computed which returns true if current time is inside specified boundaries\r\n * it stops tracking current time once it goes outside of specified boundaries removing unnecessary evaluations\r\n * @param options\r\n */\n export function timeCondition(options: TimeConditionOptions): PureComputed\n}","import ko from 'knockout';\r\nimport 'CommonScripts/WCCKOCustomBindings';\r\n\r\nsystem.importAll(require.context('./constructors/', false, /\\.[jt]s$/));\r\nsystem.importAll(require.context('./functions/', false, /\\.[jt]s$/));\r\nsystem.importAll(require.context('./extenders/', false, /\\.[jt]s$/));\r\n\r\nexport default ko;","import ko, { Observable, Subscribable } from 'knockout';\r\nimport { CollectionsHelpers } from '../../../helpers/collections';\r\n\r\nexport interface ValidatableSubscribable extends Subscribable {\r\n error: Subscribable\r\n hasError: Subscribable\r\n isValid: Subscribable\r\n scrollTo: Observable\r\n}\r\n\r\nexport function IsValidatableSubscribable(value: any): value is ValidatableSubscribable {\r\n return ko.isSubscribable(value) && ko.isSubscribable((value).error);\r\n}\r\n\r\nko.extenders.validate = function (target: Subscribable, predicate: (value: T) => string | undefined) {\r\n const error = target.mapSingle(value => predicate(value));\r\n const hasError = error.mapSingle(err => _.isString(err) && err.length > 0);\r\n const isValid = hasError.not();\r\n const scrollTo = ko.observable(false);\r\n\r\n return >_(target).extend({ error, hasError, isValid, scrollTo });\r\n}\r\n\r\nko.extenders.notifyIfChanged = function (target: Subscribable, value: boolean) {\r\n if (value) {\r\n (target).equalityComparer = (a: T, b: T) => {\r\n if (_.isDate(a) && _.isDate(b))\r\n return a.getTime() === b.getTime();\r\n else if (_.isArray(a) && _.isArray(b))\r\n return CollectionsHelpers.compareCollections(a, b);\r\n else\r\n return a === b;\r\n }\r\n }\r\n else {\r\n (target).equalityComparer = ko.observable.fn.equalityComparer;\r\n }\r\n\r\n return target;\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface ExtendersOptions {\r\n validate: (value: T) => string | undefined\r\n }\r\n}","import ko, { Observable, Subscribable } from 'knockout';\n\nexport interface ValidatableSubscribable extends Subscribable {\n error: Subscribable\r\n hasError: Subscribable\r\n isValid: Subscribable\r\n scrollTo: Observable\r\n}\n\nexport function IsValidatableSubscribable(value: any): value is ValidatableSubscribable {\n return ko.isSubscribable(value) && ko.isSubscribable((value).error);\r\n}\n\nko.extenders.validate = function (target: Subscribable, predicate: (value: T) => string | undefined) {\n const error = target.mapSingle(value => predicate(value));\n const hasError = error.mapSingle(err => _.isString(err) && err.length > 0);\n const isValid = hasError.not();\n const scrollTo = ko.observable(false);\n\n return >_(target).extend({ error, hasError, isValid, scrollTo });\n}\n\ndeclare module 'knockout' {\n export interface ExtendersOptions {\r\n validate: (value: T) => string | undefined\r\n }\n}","import ko from 'knockout';\r\n\nko.subscribable.fn.all = function (...args: any[]) {\n return ko.pureComputed(() => _(this()).all(...args));\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * Returns computed which indicates if all inner array items match provided predicate\r\n * @param predicate\r\n */\r\n all(predicate?: (item: SimpleValue) => boolean): Subscribable\n }\n}","import ko from 'knockout';\r\n\nko.subscribable.fn.any = function(...args: any[]) {\n return ko.pureComputed(() => _(this()).any(...args));\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * Returns computed which indicates if inner array contains item which matches provided predicate\r\n * @param predicate\r\n */\r\n any(predicate?: (item: SimpleValue) => boolean): Subscribable\n }\n}","import { CollectionsHelpers } from 'helpers/collections';\r\nimport { Disposable } from 'interfaces/disposable';\r\nimport ko, { Subscribable } from 'knockout';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nko.subscribable.fn.attachTo = function (sourceObservable: Subscribable) {\r\n if (!ko.isWritableObservable(this))\r\n throw new Error('Observable is not writable');\r\n\r\n const observable = this;\r\n const effects = withEffects();\r\n\r\n const update = (value: T) => {\r\n //if it's an array we want to copy it to avoid reference issues\r\n if (_.isArray(value)) {\r\n if (!CollectionsHelpers.compareCollections(observable(), value))\r\n observable([...value]);\r\n } else {\r\n observable.setIfDifferent(value);\r\n }\r\n }\r\n\r\n effects.register(() => {\r\n const initialValue = observable(); //save observable value so we can restore it on dispose\r\n update(sourceObservable()); //write current source value\r\n\r\n return [\r\n sourceObservable.subscribe(value => update(value)), //write source value on change\r\n () => observable(initialValue) //set initial value as observable value on dispose\r\n ]\r\n });\r\n\r\n return effects;\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * links writable subscribable with any other subscribable. Every time source is changed it's value will be copied to current subscribable\r\n * @param source\r\n */\r\n attachTo(source: Subscribable): Disposable\r\n }\r\n}","define('extensions/knockout/functions/average', [\r\n 'knockout'\r\n], (ko) => {\r\n /**\r\n * decrements value if it's a number. throws exception otherwise;\r\n */\r\n ko.subscribable.fn.average = function () {\r\n return ko.pureComputed(() => _(this()).reduce((result, value) => result + value, 0) / (this().length || 1));\r\n };\r\n});","import { Func } from 'interfaces/func';\nimport ko, { SimpleValue, Subscribable } from 'knockout';\n\nko.subscribable.fn.cache = function (this: Subscribable, key: Func, SimpleValue]> | keyof SimpleValue, updateFunc?: Action<[SimpleValue, SimpleValue]>, cloneFunc?: Func, [SimpleValue, number]>) {\n const map2Key = _.isFunction(key) ? key : key;\n cloneFunc ??= _.identity;\n\n return this.map2(map2Key, cloneFunc, updateFunc);\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\r\n /**\r\n * return computed with cached internal collection. \r\n * allows to keep old items in dynamic collections. \r\n * requires stable {key}\r\n * @param key\r\n */\r\n cache(key: Func, SimpleValue]> | keyof SimpleValue): Subscribable>>\n\n /**\r\n * return computed with cached internal collection. \r\n * allows to keep old items in dynamic collections. \r\n * updates cached items using {updateFunc} and new items. \r\n * requires stable {key}\r\n * @param key\r\n * @param updateFunc\r\n */\n cache(key: Func, SimpleValue]> | keyof SimpleValue, updateFunc: Action<[existingItem: SimpleValue, newItem: SimpleValue]>): Subscribable>>\n\n /**\r\n * return computed with cached internal collection.\r\n * allows to keep old items in dynamic collections.\r\n * updates cached items using {updateFunc} and new items.\r\n * clones items before caching them using {cloneFunc}\r\n * requires stable {key}\r\n * @param key\r\n * @param updateFunc\r\n * @param cloneFunc\r\n */\n cache(key: Func, SimpleValue]> | keyof SimpleValue, updateFunc: Action<[existingItem: SimpleValue, newItem: SimpleValue]>, cloneFunc: Func, [SimpleValue, number]>): Subscribable>>\n }\n}","import { Func } from 'interfaces/func';\r\nimport ko, { Observable, Subscribable, SubscribableOrValue } from 'knockout';\r\n\r\nko.subscribable.fn.chainNotNull = function (this: Observable, mapper: Func, [value: Subscribable>]>) {\r\n const observable = this;\r\n const hasValue = observable.isNotNull();\r\n\r\n return hasValue.pluck(hasValue => {\r\n if (hasValue)\r\n return mapper(observable);\r\n });\r\n};\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * allows to work with nullable subscribable without worrying of null/undefined\r\n * internally we will have 2 streams: undefined and mapped subscribable\r\n * used in algorithms where we need undefined to indicate some internal processes are not finished yet like data loading\r\n * @param mapper function which applies all transformations we need on non-nullable version of original subscribable\r\n */\r\n chainNotNull(mapper: Func, [value: Subscribable>]>): Subscribable\r\n }\r\n}","define('extensions/knockout/functions/concat', [\r\n 'knockout'\r\n], (ko) => {\r\n ko.subscribable.fn.concat = function (list) {\r\n return ko.pureComputed(() => this().concat(ko.unwrap(list)));\r\n };\r\n});","import ko, { Observable, SimpleValue } from 'knockout';\r\nimport { Func } from '../../../interfaces/func';\r\n\r\nconst defaultMapper = () => true;\r\n\r\nko.subscribable.fn.count = function (this: Observable[]>, mapper?: Func]>) {\r\n const mapperOrDefault = mapper ?? defaultMapper;\r\n\r\n return this.reduce((result, item) => {\r\n const value = mapperOrDefault(item);\r\n\r\n if (_.isNumber(value))\r\n return result + value;\r\n else\r\n return value ? result + 1 : result;\r\n }, () => 0);\r\n};\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * reduces array into single number using mapper to get each item value\r\n */\r\n count(mapper?: Func]>): Subscribable\r\n }\r\n}","import ko from 'knockout';\r\n\nko.subscribable.fn.dec = function (n = 1) {\n const observable = this;\n const value = observable();\n\n if (_.isNumber(value))\n observable(value - n);\n else\n throw 'value is not a number';\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\n * decrements inner value by specified amount\n * @param amount\n */\n dec(amount?: number): void\n }\n}","import ko, { MaybeSubscribable, SubscribableOrNullableValue } from 'knockout';\r\n\r\ntype Validator = (item: T) => boolean\r\n\r\nfunction defaultValidator(value: any) {\r\n return !(value == null || value == -Infinity || value === '');\r\n}\r\n\r\nko.subscribable.fn.default = function (defaultValue: SubscribableOrNullableValue, validator: Validator = defaultValidator) {\r\n const observable = this;\r\n\r\n function get(value: T) {\r\n if (defaultValue !== undefined && !validator(value))\r\n return ko.unwrap(defaultValue as MaybeSubscribable);\r\n else\r\n return value;\r\n }\r\n\r\n return ko.pureComputed({\r\n read: () => get(observable()),\r\n write: value => observable(value)\r\n });\r\n};\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * Sets default value\r\n * @param defaultValue\r\n */\r\n default(defaultValue: SubscribableOrValue>, validator?: (item: T) => boolean): PureComputed>\r\n\r\n /**\r\n * Sets default value\r\n * @param defaultValue\r\n */\r\n default(defaultValue: SubscribableOrNullableValue, validator?: (item: T) => boolean): PureComputed | undefined>\r\n }\r\n}","define('extensions/knockout/functions/difference', [\r\n 'knockout'\r\n], (ko) => {\r\n /**\r\n * calls function with observable value as argument\r\n */\r\n ko.subscribable.fn.difference = function (other) {\r\n return ko.pureComputed(() => _(this()).difference(ko.unwrap(other)));\r\n } \r\n});","import { Func } from 'interfaces/func';\r\nimport ko, { SimpleValue } from 'knockout';\r\n\nko.subscribable.fn.filter = function (predicate?: Func, number]>, ...args: Array) {\n const observable = this;\n\n return ko.pureComputed(() => {\n const value = observable();\n\n if (_.isArray(value))\n return _(value).filter(predicate, ...args)\n });\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\n * Returns computed with filtered inner array based on provided predicate\n * @param predicate\n */\n filter> = SimpleValue>>(predicate?: Func>, number]>): Subscribable ? Array : T>\n }\n}","import ko, { SimpleValue } from 'knockout';\r\n\r\nko.subscribable.fn.find = function (predicate?: (item: NonNullable>) => boolean, ...args: Array) {\r\n const observable = this;\r\n\r\n return ko.pureComputed(() => _(observable()).find(predicate, ...args));\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * Returns first item matching predicated as computed\r\n * @param predicate\r\n */\r\n find = SimpleValue>(predicate?: (item: NonNullable>) => boolean): Subscribable\r\n }\r\n}","import ko from 'knockout';\r\n\nko.subscribable.fn.first = function (n?: number): any {\n const observable = this;\n\n return n == undefined ?\n ko.pureComputed(() => _(observable()).first()) :\n ko.pureComputed(() => _(observable()).first(n));\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\n * Returns computed with first element in collection\n */\n first(): T extends Array ? Subscribable : never\n\n /**\n * Returns computed with first n elements in collection\n */\n first(n: number): T extends Array ? Subscribable> : never\n }\n}","import ko from 'knockout';\r\nimport { DeepestListItemOrSelf, List, ListItemOrSelf, TypeOfList } from 'underscore';\r\n\r\nko.subscribable.fn.flatten = function (...args: any[]) {\r\n return ko.pureComputed(() => _(this()).flatten(...args));\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n flatten(shallow?: false): T extends List ? Subscribable>[]> : never;\r\n flatten(shallow: true): T extends List ? Subscribable>[]> : never;\r\n }\r\n}","import ko, { SimpleValue, Subscribable, SubscribableOrValue } from 'knockout';\r\nimport { CollectionKey } from 'underscore';\r\nimport { Func } from '../../../interfaces/func';\r\n\r\nko.subscribable.fn.groupBy = function (this: Subscribable, key: Func, [item: SimpleValue, idx: CollectionKey]>) {\r\n return ko.pureComputed(() => _(this()).groupBy((item, idx) => ko.unwrap(key(>item, idx))));\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * Returns computed with inner array transformed into dictionary using key func\r\n * @param key key extractor\r\n */\r\n groupBy(key: Func, [item: SimpleValue, idx: CollectionKey>]>): Subscribable[]>>\r\n }\r\n}","define('extensions/knockout/functions/history', [\r\n 'knockout'\r\n], (ko) => {\r\n let pushToQueue = (queue, length) => (item) => {\r\n queue.unshift(item);\r\n\r\n if (queue().length > length)\r\n queue.pop();\r\n };\r\n\r\n /**\r\n * creates computed which returns previous subscribable value\r\n */\r\n ko.subscribable.fn.history = function (length) {\r\n length = length || 1;\r\n\r\n let value = ko.observableArray([]),\r\n result = value.readOnly();\r\n\r\n let push = pushToQueue(value, length);\r\n\r\n var sub = this.subscribe(v => push({ value: v, timestamp: Date.now() }));\r\n\r\n var _dispose = result.dispose.bind(result);\r\n\r\n result.dispose = () => {\r\n _dispose();\r\n sub.dispose();\r\n };\r\n\r\n return result;\r\n };\r\n});","import ko from 'knockout';\r\n\r\nko.subscribable.fn.inc = function (n = 1) {\r\n const observable = this;\r\n const value = observable();\r\n\r\n if (_.isNumber(value))\r\n observable(value + n);\r\n else\r\n throw 'value is not a number';\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * increments inner value by specified amount\r\n * @param amount\r\n */\r\n inc(amount?: number): void\r\n }\r\n}","import ko, { SimpleValue, Subscribable } from 'knockout';\r\n\nko.subscribable.fn.includes = function (this: Subscribable, item: SimpleValue) {\n return this.is(value => {\n if (_.isArray(value))\r\n return value.includes(item);\r\n\r\n return false;\r\n });\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * Returns computed which indicates if inner array includes specified item\r\n * @param item item to check\r\n */\r\n includes(item: SimpleValue): Subscribable\n }\n}","import ko from 'knockout';\r\n\r\nko.subscribable.fn.indexOf = function(item: T) {\r\n const observable = this;\r\n\r\n return ko.pureComputed(() => _(observable()).indexOf(item));\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * Returns index of element in inner collection\r\n * @param predicate\r\n */\r\n indexOf(item: SimpleValue): Subscribable\r\n }\r\n}","define('extensions/knockout/functions/intersection', [\r\n 'knockout'\r\n], function (ko) {\r\n /**\r\n * calls function with observable value as argument\r\n */\r\n ko.subscribable.fn.intersection = function (other) {\r\n var observable = this;\r\n\r\n return ko.pureComputed(function () {\r\n return _(observable()).intersection(ko.unwrap(other));\r\n });\r\n };\r\n});","import * as ko from 'knockout';\r\n\r\nko.subscribable.fn.invoke = function(...args: Array) {\r\n var observable = this;\r\n\r\n if (_.isString(args[0])) {\r\n let field = args[0] as string,\r\n allArgs = args;\r\n\r\n let func = (value: any) => {\r\n var wrapper = _(value);\r\n\r\n if (wrapper.isArray()) {\r\n return wrapper.invoke.apply(wrapper, allArgs as any);\r\n } else if (_.isFunction(value[field])) {\r\n return value[field].apply(value, args.slice(1));\r\n } \r\n\r\n return undefined;\r\n }\r\n\r\n return func(observable());\r\n } else if (_.isFunction(args[0])) {\r\n let func = args[0] as (value: any) => any,\r\n context = args[1] as any,\r\n ignoreDependencies = args[2] as boolean | undefined;\r\n\r\n return ignoreDependencies ?\r\n ko.ignoreDependencies(func, context, [observable()]) :\r\n func.call(context, observable());\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * invokes functions against inner value\r\n * @param func function to call\r\n * @param context function context to be executed in(this)\r\n * @param ignoreDependencies calls function inside ignoreDependencies wrapper if true\r\n */\r\n invoke(func: (value: T) => K, context?: any, ignoreDependencies?: boolean): K\r\n\r\n /**\r\n * invokes inner object method with specified name\r\n * @param funcToCall function to call\r\n * @param args arguments to pass to function\r\n */\r\n invoke(funcToCall: string, args: any[]): any\r\n } \r\n}","import * as ko from 'knockout';\r\n\r\nko.subscribable.fn.invokeNotNull = function (...args: Array) {\r\n var observable = this,\r\n value = observable();\r\n\r\n if (value != undefined)\r\n return observable.invoke.apply(observable, args as any);\r\n\r\n return undefined;\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * invokes functions against inner value if inner value is not null\r\n * @param func function to call\r\n * @param context function context to be executed in(this)\r\n * @param ignoreDependencies calls function inside ignoreDependencies wrapper if true\r\n */\r\n invokeNotNull(func: (value: NonNullable) => K, context?: any, ignoreDependencies?: boolean): K | undefined\r\n\r\n /**\r\n * invokes inner object method with specified name if inner object is not null\r\n * @param funcToCall function to call\r\n * @param args arguments to pass to function\r\n */\r\n invokeNotNull(funcToCall: string, args: any[]): any\r\n }\r\n}","import { Func } from 'interfaces/func';\r\nimport ko, { Subscribable, SubscribableOrValue } from 'knockout';\r\n\nko.subscribable.fn.is = function (this: Subscribable, ...values: Array | Func>): Subscribable {\n const observable = this;\n\n if (values.length > 1) {\n return ko.pureComputed(() => values.some(value => observable() == ko.unwrap(>value)));\r\n } else if (values.length == 1) {\n const predicateOrValue = values[0];\r\n\r\n if (ko.isSubscribable(predicateOrValue))\n return ko.pureComputed(() => observable() === predicateOrValue());\n else if (_.isFunction(predicateOrValue))\n return ko.pureComputed(() => predicateOrValue(observable()));\n else\n return ko.pureComputed(() => observable() === predicateOrValue);\r\n } else {\n return ko.pureComputed(() => false);\r\n } \n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * Checks if inner value matches any provided value\r\n * @param values\r\n */\n is(...values: Array>): Subscribable\n\n /**\r\n * Checks if inner value matches provided predicate\r\n * @param value\r\n */\n is(predicate: Func): Subscribable\n }\n}","import ko, { Observable, PureComputed } from 'knockout';\r\n\r\ninterface StateTrackerOwner {\r\n __isAwake: Observable\r\n}\r\n\r\nfunction hasStateTracker(target: PureComputed): target is PureComputed & StateTrackerOwner {\r\n return '__isAwake' in target;\r\n}\r\n\nko.computed.fn.isAwake = function () {\n let observable = this;\n\n if (ko.isPureComputed(observable)) {\n if (!hasStateTracker(observable)) {\n const isAwake = ko.observable(observable.getSubscriptionsCount() > 0);\n\n observable.subscribe(() => isAwake(true), this, 'awake');\n observable.subscribe(() => isAwake(false), this, 'asleep');\n\n observable = _(observable).extend({ '__isAwake': isAwake }) as PureComputed & StateTrackerOwner;\n }\n\n return (observable).__isAwake;\n }\n\n return ko.observable(true as boolean);\n}\n\ndeclare module 'knockout' {\n export interface ComputedFunctions {\n /**\n * returns observable which indicates whatever original computed is awake(has subscriptions)\n */\n isAwake(): Subscribable\n }\n}","import ko, { Subscribable } from 'knockout';\r\n\r\nko.subscribable.fn.isEmpty = function (this: Subscribable) {\r\n return ko.pureComputed(() => _.isEmpty(this()));\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /** returns computed which indecates whatever inner collection is empty underscore isEmpty func to inner value and returns as computed */\r\n isEmpty(): Subscribable\r\n }\r\n}","import ko, { Subscribable } from 'knockout';\r\n\r\nko.subscribable.fn.isNotNull = function (this: Subscribable) {\r\n return this.is(value => value != undefined);\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * Returns new computed which indicates whatever inner value is not null\r\n * @param predicate\r\n */\r\n isNotNull(): Subscribable\r\n }\r\n}","import ko, { Subscribable } from 'knockout';\r\n\r\nko.subscribable.fn.isNull = function (this: Subscribable) {\r\n return this.is(value => value == undefined);\r\n};\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * Returns new computed which indicates whatever inner value is null\r\n * @param predicate\r\n */\r\n isNull(): Subscribable\r\n }\r\n}","import ko from 'knockout';\r\n\nko.subscribable.fn.last = function(n?: number): any {\n const observable = this;\n\n return n == undefined ?\n ko.pureComputed(() => _(observable()).last()) :\n ko.pureComputed(() => _(observable()).last(n));\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\n * Returns computed with last element in collection\n */\n last(): T extends Array ? Subscribable : never\n\n /**\n * Returns computed with last n elements in collection\n */\n last(n: number): T extends Array ? Subscribable> : never\n }\n}","define('extensions/knockout/functions/log', ['knockout'], function (ko) {\r\n ko.subscribable.fn.log = function (title, mapper) {\r\n mapper = mapper || _.identity;\r\n\r\n return this.tap(function (v) { console.log(title, mapper(v)) });\r\n };\r\n});","import { Func } from 'interfaces/func';\r\nimport ko, { SimpleValue, Subscribable } from 'knockout';\r\nimport { CollectionsHelpers } from '../../../helpers/collections';\r\n\nko.subscribable.fn.map2 = function (this: Subscribable, key: Func, K]> | string, factory: Func, number]>, updateFunc?: Action<[K, SimpleValue]>) {\n const items = this;\n let cache: Array = [];\n\n return items.mapSingle(items => {\n if (_.isArray(items)) {\n const predicate = _.isFunction(key) ?\n (left: SimpleValue, right: K) => key(left, right) :\n (left: SimpleValue, right: K) => ko.unwrap((left)[key]) === ko.unwrap((right)[key]);\n\n const state = items.map((data: SimpleValue, idx) => {\n const mappedItem = cache.find(mappedItem => predicate(data, mappedItem));\n\n if (mappedItem != undefined) {\n if (updateFunc != undefined)\n updateFunc(mappedItem, data);\n\n return mappedItem;\n } else {\n return factory(data, idx);\n }\n });\n\n if (!CollectionsHelpers.compareCollections(cache, state))\n cache = state;\n\n return cache;\r\n }\r\n\r\n return [];\r\n }).extend({ notifyIfChanged: true });\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * returns computed which maps collection into another collection using predicate\r\n * on change we look for mapped item in cache using {key} and update it with {updateFunc}. If item is not found then we map it using {factory}\r\n * @param key\r\n * @param factory\r\n * @param updateFunc\r\n */\r\n map2(key: Func, K]> | string, factory: Func, number]>, updateFunc?: Action<[mappedItem: K, data: SimpleValue]>): Subscribable>\n }\n}","import { getObservableAccesser } from 'helpers/knockout';\r\nimport { Func } from 'interfaces/func';\r\nimport ko, { Observable } from 'knockout';\r\nimport { ObservableMapping } from 'models/observableMapping';\r\n\nko.subscribable.fn.mapNotNull = function(this: Observable, predicateOrConfig: Func]> | ObservableMapping, K>, context?: any, ignoreDependencies?: boolean) {\n const observable = this;\n const acceser = getObservableAccesser(this, predicateOrConfig);\n\n return ko.pureComputed({\n read: () => {\n const val = observable();\n\n if (val == undefined) {\n return undefined;\n } else {\n return ignoreDependencies ?\n ko.ignoreDependencies(acceser.read, context, [val]) :\n acceser.read.call(context, val);\n }\n },\n\n write: (value) => ko.ignoreDependencies(() => acceser.write.call(context, observable(), value))\n });\n};\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * returns computed which maps current value into another value using predicate if current value is not null otherwise returns null\r\n * @param predicate\r\n * @param context\r\n * @param ignoreDependencies\r\n */\r\n mapNotNull(predicate: Func]>, context?: any, ignoreDependencies?: boolean): PureComputed\r\n\r\n /**\r\n * returns computed which maps current value into another value using config if current value is not null otherwise returns null\r\n * supports write operation if write func is provided inside config\r\n * @param config\r\n * @param context\r\n * @param ignoreDependencies\r\n */\r\n mapNotNull(config: ObservableMapping, K>, context?: any, ignoreDependencies?: boolean): PureComputed\n }\n}","import ko, { Observable } from \"knockout\";\r\nimport { getObservableAccesser } from \"../../../helpers/knockout\";\r\nimport { Func } from \"../../../interfaces/func\";\r\nimport { ObservableMapping } from \"../../../models/observableMapping\";\r\n\r\nfunction mapSingle(this: Observable, predicateOrConfig: Func]> | ObservableMapping, K>, context?: any, ignoreDependencies?: boolean) {\r\n const observable = this;\r\n const acceser = getObservableAccesser(this, predicateOrConfig);\r\n\r\n return ko.pureComputed({\r\n read: () => {\r\n return ignoreDependencies ?\r\n ko.ignoreDependencies(acceser.read, context, [observable()]) :\r\n acceser.read.call(context, observable());\r\n },\r\n\r\n write: function (value) {\r\n ko.ignoreDependencies(() => acceser.write.call(context, observable(), value));\r\n }\r\n });\r\n}\r\n\r\n(ko.observable.fn).map = mapSingle;\r\nko.subscribable.fn.mapSingle = mapSingle;\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * returns computed which maps current value into another value using predicate\r\n * @param predicate\r\n * @param context\r\n * @param ignoreDependencies\r\n */\r\n mapSingle(predicate: Func, context?: any, ignoreDependencies?: boolean): PureComputed\r\n\r\n /**\r\n * returns computed which maps current value into another value using config\r\n * supports write operation if write func is provided inside config\r\n * @param config\r\n * @param context\r\n * @param ignoreDependencies\r\n */\r\n mapSingle(config: ObservableMapping, context?: any, ignoreDependencies?: boolean): PureComputed\r\n }\r\n}","define('extensions/knockout/functions/mergeWith', [\r\n 'knockout'\r\n], function (ko) {\r\n /**\r\n * Merge 2 values into array\r\n * @param {observable} other observable to merge with\r\n * @param {bool} allowNull if null values are not allowed and any value is null then result will become null otherwise array with null items will be returned\r\n * @returns {computed} new pure computed\r\n */\r\n ko.subscribable.fn.mergeWith = function (other, allowNull) {\r\n var observable = this;\r\n\r\n return ko.pureComputed(function () {\r\n var left = observable(),\r\n right = other();\r\n\r\n if (!allowNull && (left == null || right == null))\r\n return null;\r\n\r\n return (_(left).isArray() ? left : [left]).concat(\r\n _(right).isArray() ? right : [right]);\r\n });\r\n };\r\n});","define('extensions/knockout/functions/nullIfDefault', [\r\n 'knockout'\r\n], (ko) => {\r\n ko.subscribable.fn.nullIfDefault = function (value) {\r\n return ko.pureComputed(() => this() == value ? null : this());\r\n };\r\n});","import ko, { Subscribable } from 'knockout';\r\n\r\nexport interface OnArrayChangeConfig {\r\n addRange?: Action<[items: Array]>\r\n removeRange?: Action<[items: Array]>\r\n\r\n add?: Action<[item: T, idx: number]>\r\n remove?: Action<[item: T, idx: number]>\r\n move?: Action<[item: T, to: number, from: number]>\r\n}\r\n\r\nko.subscribable.fn.onArrayChange = function (this: Subscribable>, config: OnArrayChangeConfig) {\r\n return this.subscribe(changes => {\r\n let offset = 0;\r\n\r\n const added = new Array();\r\n const removed = new Array();\r\n\r\n changes.forEach(change => {\r\n var idx = change.index + offset;\r\n\r\n if (change.status === 'added') {\r\n if (change.moved !== undefined) {\r\n config.move?.(change.value, change.index, change.moved);\r\n } else {\r\n if (config.addRange != undefined)\r\n added.push(change.value);\r\n\r\n config.add?.(change.value, idx);\r\n offset++;\r\n }\r\n } else if (change.status === 'deleted' && change.moved === undefined) {\r\n if (config.removeRange != undefined)\r\n removed.push(change.value);\r\n\r\n config.remove?.(change.value, idx);\r\n offset--;\r\n }\r\n });\r\n\r\n if (config.addRange != undefined && added.length > 0)\r\n config.addRange(added);\r\n\r\n if (config.removeRange != undefined && removed.length > 0)\r\n config.removeRange(removed);\r\n }, null, 'arrayChange');\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * Subscribes to array changes. subscribable should have array tracking enabled\r\n * @param config add, remove, update callbacks to call on array change\r\n */\r\n onArrayChange(config: OnArrayChangeConfig>): Subscription\r\n }\r\n}","import ko, { Subscribable, SubscribableOrNullableValue, SubscribableOrValue, WCCUnwrapped } from 'knockout';\r\n\r\ntype FieldMapper = (value: Field) => SubscribableOrValue\r\ntype NullableFieldMapper = (value: Field) => SubscribableOrValue | undefined\r\ntype Field = T extends Array ? R : NonNullable\r\n\r\ntype ElementOrArrayElementField = T extends Array ? ElementField : ElementField\r\ntype ElementField = K extends keyof T ? WCCUnwrapped : never\r\ntype Mapped = T extends Array ? Array : T extends null | undefined ? undefined : V\r\ntype Defaulted = T extends null | undefined ? D : T\r\n\r\nko.subscribable.fn.pluck = function (this: Subscribable, nameOrMapper: string | FieldMapper, defaultValue?: SubscribableOrNullableValue) {\r\n const observable = this;\r\n\r\n var mapper: (item: any) => any;\r\n\r\n if (_.isString(nameOrMapper))\r\n mapper = item => item[nameOrMapper];\r\n else\r\n mapper = item => nameOrMapper(item);\r\n\r\n const mappedObservable = ko.pureComputed(() => {\r\n const value = observable();\r\n\r\n if (_.isArray(value))\r\n return value.map(mapper);\r\n else if (value != undefined)\r\n return mapper(value);\r\n });\r\n\r\n return ko.pureComputed(() => {\r\n const value = mappedObservable();\r\n\r\n if (_.isArray(value))\r\n return value.map(item => ko.unwrap(item));\r\n else\r\n return ko.unwrap(value) ?? ko.unwrap(defaultValue);\r\n });\r\n};\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * returns inner object field as computed\r\n * example: observable({ a:1, b:2 }).pluck('a') => Computed(1);\r\n * @param name\r\n * @param defaultValue\r\n */\r\n pluck(name: K): Subscribable>>\r\n\r\n /**\r\n * returns inner object field as computed or default value if field is null or underfined\r\n * example: observable({ a:1, b:2 }).pluck('a') => Computed(1);\r\n * @param name\r\n * @param defaultValue\r\n */\r\n pluck(name: K, defaultValue: SubscribableOrValue>>): Subscribable>, NonNullable>>>\r\n\r\n /**\r\n * returns inner object field as computed or default value if field is null or underfined\r\n * example: observable({ a:1, b:2 }).pluck('a') => Computed(1);\r\n * @param name\r\n * @param defaultValue\r\n */\r\n pluck(name: K, defaultValue: SubscribableOrNullableValue>): Subscribable>, ElementOrArrayElementField | undefined>>\r\n\r\n /**\r\n * returns object field as computed\r\n * example: observable({ a:1, b:2 }).pluck(item => item.a) => Computed(1);\r\n * @param mapper\r\n * @param defaultValue\r\n */\r\n pluck(mapper: FieldMapper): Subscribable>\r\n pluck(mapper: NullableFieldMapper): Subscribable>\r\n\r\n /**\r\n * returns object field as computed or default value if field is null or underfined\r\n * example: observable({ a:1, b:2 }).pluck(item => item.a) => Computed(1);\r\n * @param mapper\r\n * @param defaultValue\r\n */\r\n pluck(mapper: FieldMapper, defaultValue: SubscribableOrValue>): Subscribable, NonNullable>>\r\n pluck(mapper: NullableFieldMapper, defaultValue: SubscribableOrValue>): Subscribable, NonNullable>>\r\n\r\n /**\r\n * returns object field as computed or default value if field is null or underfined\r\n * example: observable({ a:1, b:2 }).pluck(item => item.a) => Computed(1);\r\n * @param mapper\r\n * @param defaultValue\r\n */\r\n pluck(mapper: FieldMapper, defaultValue: SubscribableOrNullableValue): Subscribable, K | undefined>>\r\n pluck(mapper: NullableFieldMapper, defaultValue: SubscribableOrNullableValue): Subscribable, K | undefined>>\r\n }\r\n}","define('extensions/knockout/functions/prev', [\r\n 'knockout'\r\n], function (ko) {\r\n /**\r\n * creates computed which returns previous subscribable value\r\n */\r\n ko.subscribable.fn.prev = function () {\r\n var observable = this,\r\n value = ko.observable(null),\r\n result = value.readOnly();\r\n\r\n var sub = observable.subscribe(v => value(v), null, 'beforeChange');\r\n\r\n var _dispose = result.dispose.bind(result);\r\n\r\n result.dispose = function () {\r\n _dispose();\r\n sub.dispose();\r\n };\r\n\r\n return result;\r\n };\r\n});","import { Func } from 'interfaces/func';\r\nimport ko, { Observable, Subscribable } from 'knockout';\n\nko.subscribable.fn.proxy = function (this: Subscribable, extractor: Func, [NonNullable]>) {\n const buffer = ko.observable();\n\n return this.mapSingle({\n read: item => {\r\n if (item != undefined) {\r\n if (buffer() != undefined) {\r\n extractor(>item)(buffer());\r\n buffer(undefined);\r\n }\r\n\r\n return extractor(>item)();\r\n } else {\r\n return buffer();\r\n }\r\n },\r\n\r\n write: (item, value) => {\r\n if (item != undefined)\r\n extractor(>item)(value);\r\n else\r\n buffer(value);\r\n }\r\n })\n};\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n proxy(extractor: Func, [NonNullable]>): PureComputed\n }\n}","import ko from 'knockout';\r\n\nko.subscribable.fn.readOnly = function () {\n const observable = this;\n\n return ko.pureComputed(() => observable());\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /** converts subscribable into readonly computed */\n readOnly(): Subscribable\n }\n}","import { Func } from 'interfaces/func';\r\nimport ko from 'knockout';\r\nimport { MemoIterator, TypeOfList } from 'underscore';\r\n\r\nko.subscribable.fn.reduce = function (iteratee: MemoIterator, TResult, T>, memoFactory?: Func, context?: any) {\r\n return ko.pureComputed(() => memoFactory != undefined ? _(this()).reduce(iteratee, memoFactory(), context) : _(this()).reduce(iteratee));\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * Returns computed with value computed from inner array using provided reducer\r\n * @param iteratee reducer\r\n * @param memo inital value\r\n * @param context reducer this value\r\n */\r\n reduce(iteratee: MemoIterator, TResult, T>, memoFactory: Func, context?: any): Subscribable\r\n\r\n /**\r\n * Returns computed with value computed from inner array using provided reducer\r\n * @param iteratee reducer\r\n */\r\n reduce(iteratee: MemoIterator, TResult, T>): Subscribable\r\n }\r\n}","define('extensions/knockout/functions/select', [\r\n 'knockout'\r\n], function (ko) {\r\n /**\r\n * projects observable value using func\r\n */\r\n ko.subscribable.fn.select = function (func) {\r\n var observable = this;\r\n\r\n func = func || _.identity;\r\n\r\n return func(observable());\r\n };\r\n});","define('extensions/knockout/functions/selectNotNull', [\r\n 'knockout'\r\n], function (ko) {\r\n /**\r\n * projects observable value using func\r\n */\r\n ko.subscribable.fn.selectNotNull = function (func) {\r\n var observable = this,\r\n value = observable();\r\n\r\n func = func || _.identity;\r\n\r\n if (value != null) {\r\n return func(value);\r\n }\r\n\r\n return null;\r\n };\r\n});","import ko, { Observable, PureComputed } from 'knockout';\r\n\r\nconst setIfDifferent = (observable: Observable | PureComputed, value: T) => {\r\n if (observable() !== value)\r\n observable(value);\r\n}\r\n\r\nko.observable.fn.setIfDifferent = function (this: Observable, value: T) {\r\n setIfDifferent(this, value);\r\n}\r\n\r\nko.computed.fn.setIfDifferent = function (this: PureComputed, value: T) {\r\n setIfDifferent(this, value);\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface ObservableFunctions {\r\n /**\r\n * Updates inner observable value only if it is different from provided value\r\n * Allows to avoid unnecessary notifications \r\n * @param value\r\n */\r\n setIfDifferent(value: T): void\r\n }\r\n\r\n export interface ComputedFunctions {\r\n /**\r\n * Updates inner observable value only if it is different from provided value\r\n * Allows to avoid unnecessary notifications \r\n * @param value\r\n */\r\n setIfDifferent(value: T): void\r\n }\r\n}","import ko, { SimpleValue } from 'knockout';\r\n\r\nko.subscribable.fn.sort = function (compareFn?: (a: SimpleValue, b: SimpleValue) => number) {\r\n const observable = this;\r\n\r\n return ko.pureComputed(() => {\r\n const value = observable();\r\n\r\n if (_.isArray(value))\r\n return value.sort(compareFn);\r\n\r\n return [];\r\n });\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * sorts inner array using compare func\r\n * @param compareFn\r\n */\r\n sort(compareFn?: (a: SimpleValue, b: SimpleValue) => number): Subscribable>>\r\n }\r\n}","import ko, { SimpleValue } from 'knockout';\r\n\nko.subscribable.fn.sortBy = function (iterator?: _.ListIterator, TSort>) {\n const observable = this;\n\n return ko.pureComputed(() => _(observable()).sortBy(iterator));\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * sorts inner array using iterator\r\n * @param iterator\r\n */\n sortBy(iterator?: _.ListIterator, TSort>): Subscribable>>\n }\n}","import ko from 'knockout';\r\n\nko.subscribable.fn.subscribeIf = function (args: Array, predicate: (value: any) => boolean = _.identity) {\n let [func, target, event] = _(args).isArray() ? args : [args];\n\n return this.subscribe((value: any) => {\n if (predicate(value) == true)\n func.call(target, value);\n }, target, event);\n}\n\nko.subscribable.fn.subscribeNotNull = function(...args: Array) {\n return ko.subscribable.fn.subscribeIf.call(this, args as any, value => value != null);\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n subscribeIf(args: [SubscriptionCallback, TTarget, \"beforeChange\" | \"spectate\" | \"awake\"], predicate?: (value: T) => boolean): Subscription;\r\n subscribeIf(args: [SubscriptionCallback, TTarget, \"asleep\"], predicate?: (value: T) => boolean): Subscription;\r\n subscribeIf(args: [SubscriptionCallback, TTarget | undefined, \"change\" | undefined], predicate?: (value: T) => boolean): Subscription;\r\n subscribeIf(args: [SubscriptionCallback, TTarget, string], predicate?: (value: T) => boolean): Subscription;\r\n subscribeIf(args: [SubscriptionCallback, TTarget], predicate?: (value: T) => boolean): Subscription;\r\n subscribeIf(args: [SubscriptionCallback], predicate?: (value: T) => boolean): Subscription;\r\n\r\n subscribeNotNull(...args: [SubscriptionCallback, TTarget>, TTarget, \"beforeChange\" | \"spectate\" | \"awake\"]): Subscription;\r\n subscribeNotNull(...args: [SubscriptionCallback, TTarget, \"asleep\"]): Subscription;\r\n subscribeNotNull(...args: [SubscriptionCallback, TTarget>, TTarget | undefined, \"change\" | undefined]): Subscription;\r\n subscribeNotNull(...args: [SubscriptionCallback, TTarget>, TTarget, string]): Subscription;\r\n subscribeNotNull(...args: [SubscriptionCallback, TTarget>, TTarget]): Subscription;\r\n subscribeNotNull(...args: [SubscriptionCallback, void>]): Subscription;\r\n }\n}","define('extensions/knockout/functions/tap', ['knockout'], function (ko) {\r\n ko.subscribable.fn.tap = function (action) {\r\n var observable = this;\r\n\r\n return ko.pureComputed({\r\n read: function () {\r\n var value = observable();\r\n action(value);\r\n\r\n return value;\r\n },\r\n write: function (value) {\r\n observable(value);\r\n }\r\n });\r\n };\r\n});","define('extensions/knockout/functions/toDate', ['knockout'], function (ko) {\r\n ko.subscribable.fn.toDate = function () {\r\n return this.mapNotNull(function (value) { return new Date(value) });\r\n };\r\n});","import ko, { Observable } from 'knockout';\r\n\r\nko.subscribable.fn.toEntity = function (factory: (data: NonNullable) => K, update?: (entity: NonNullable, data: NonNullable) => void) {\r\n const observable = this;\r\n const result: Observable | undefined> = ko.observable();\r\n\r\n return ko.pureComputed({\r\n read: () => {\r\n var value = observable();\r\n\r\n return ko.ignoreDependencies(() => {\r\n if (value != undefined) {\r\n const entity = result();\r\n\r\n if (entity == undefined || update == undefined) {\r\n const newEntity = factory(value);\r\n result(newEntity != undefined ? newEntity as NonNullable : undefined);\r\n } else {\r\n update(entity as NonNullable, value);\r\n }\r\n } else {\r\n result(undefined);\r\n }\r\n\r\n return result();\r\n });\r\n },\r\n\r\n write: value => observable(value)\r\n }).extend({ notifyIfChanged: true });\r\n};\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * Creates entity and update it on observable change\r\n * @param {any} factory factory method\r\n * @param {any} update update func\r\n * @returns {computed} new computed with entity inside\r\n */\r\n toEntity(factory: (data: NonNullable) => K, update?: (entity: NonNullable, data: NonNullable) => void): PureComputed | undefined>\r\n }\r\n}","import ko, { ResetableComputed, Subscribable } from 'knockout';\n\nko.subscribable.fn.toFlag = function (this: Subscribable, delay?: number) {\n const observable = this;\n const value = ko.observable(false);\n\n function reset() {\n value(false);\n }\n\n const result = observable.mapSingle(currentValue => {\n if (currentValue)\n value(true);\n\n return value();\n }) as any as ResetableComputed;\n\n if (_.isNumber(delay))\n result.extend({ rateLimit: delay });\n\n result.reset = reset;\n\n return result;\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n\n /**\r\n * Creates computed which always returns true once source subscribable becomes true\r\n * In other words it creates one time gate which can be closed once opened. usually used for lazy rendering\r\n * @param delay\r\n */\n toFlag(delay?: number): ResetableComputed\n }\n}","define('extensions/knockout/functions/toLock', [\r\n 'knockout'\r\n], function (ko) {\r\n ko.subscribable.fn.toLock = function () {\r\n let locked = ko.observable(false);\r\n\r\n let result = ko.pureComputed({\r\n read: () => this(),\r\n write: value => {\r\n locked(true);\r\n this(value);\r\n locked(false);\r\n }\r\n });\r\n\r\n result.locked = locked;\r\n\r\n return result;\r\n };\r\n});","define('extensions/knockout/functions/toNodes', [\r\n 'knockout'\r\n], function (ko) {\r\n /**\r\n * creates computed which returns previous subscribable value\r\n */\r\n ko.subscribable.fn.toNodes = function () {\r\n let value = this();\r\n\r\n if (_(value).isString())\r\n return _($(value)).toArray();\r\n\r\n return [];\r\n };\r\n});","import * as ko from 'knockout';\r\n\nko.subscribable.fn.toPrts = function (allowNulls = false) {\n const observable = this;\n\n return ko.pureComputed(() => system.toPercents(observable(), allowNulls));\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\n * converts values into % form and returns as computed\n * ko.observable(1) => ko.observable(1%)\n * */\n toPrts(allowNulls?: boolean): Subscribable\n }\n}","import ko from 'knockout';\r\n\r\nko.subscribable.fn.toPx = function (allowNull) {\r\n const observable = this;\r\n\r\n return ko.pureComputed(() => {\r\n const value = observable();\r\n\r\n if (_.isNumber(value)) {\r\n return `${value}px`;\r\n } else if (_.isString(value)){\r\n return value;\r\n } else {\r\n return allowNull ? '' : 'auto';\r\n }\r\n });\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * converts inner value into px-form value and returns as computed\r\n * example: ko.observable(23) => ko.pureComputed('23px')\r\n * @param allowNull if false null value will be replaced with 'auto'\r\n */\r\n toPx(allowNull?: boolean): Subscribable\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nko.subscribable.fn.toRevertPrts = function (allowNulls = false) {\r\n const observable = this;\r\n\r\n return ko.pureComputed(() => system.toPercents(100 - observable(), allowNulls));\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * converts values into % form and returns as computed\r\n * ko.observable(1) => ko.observable(1%)\r\n * */\r\n toRevertPrts(allowNulls?: boolean): Subscribable\r\n }\r\n}","import ko from 'knockout';\r\n\r\nko.subscribable.fn.toggle = function () {\r\n this(!this());\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /** changes inner value from true to false and vice versa */\r\n toggle(): void\r\n }\r\n}","define('extensions/knockout/functions/trackChanges', [\r\n 'services/knockout',\r\n 'knockout'\r\n], function (koServices, ko) {\r\n ko.subscribable.fn.trackChanges = function (opts) {\r\n let array = ko.observableArray();\r\n\r\n let s1 = array.attachTo(this),\r\n s2 = array.subscribe(koServices.onArrayChanged(opts), null, 'arrayChange');\r\n\r\n return { dispose: () => [s1, s2].forEach(s => s.dispose()) };\r\n };\r\n});","define('extensions/knockout/functions/trim', ['knockout'], function (ko) {\r\n ko.subscribable.fn.trim = function () {\r\n return this.mapNotNull($.trim);\r\n };\r\n});","import ko, { SimpleValue } from 'knockout';\r\nimport { Func } from '../../../interfaces/func';\r\n\r\nko.subscribable.fn.uniq = function (isSortedOrIteratee?: boolean | Func]>, iteratee?: Func]>) {\r\n const observable = this;\r\n\r\n if (arguments.length == 0) {\r\n return ko.pureComputed(() => _.uniq(observable()));\r\n } else if (arguments.length == 1) {\r\n iteratee = ]> | undefined>isSortedOrIteratee;\r\n\r\n return ko.pureComputed(() => _.uniq(observable(), iteratee));\r\n } else {\r\n const isSorted = isSortedOrIteratee;\r\n\r\n return ko.pureComputed(() => _.uniq(observable(), isSorted, iteratee));\r\n }\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n uniq(): Subscribable[]>;\r\n uniq(iteratee?: Func]>): Subscribable[]>;\r\n uniq(isSorted?: boolean, iteratee?: Func]>): Subscribable[]>;\r\n \r\n }\r\n}","import ko from 'knockout';\r\n\r\nko.subscribable.fn.unwrap = function (selfWriteOnly = true) {\r\n const observable = this;\r\n\r\n return observable.mapSingle({\r\n read: item => ko.unwrap(item),\r\n write: (unwrapped, value) => {\r\n if (ko.isWritableObservable(unwrapped) && !selfWriteOnly)\r\n unwrapped(value);\r\n else\r\n observable(value);\r\n }\r\n });\r\n};\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * converts observable> into observable\r\n * with that func we can create fields which accepts raw values and observables at the same time\r\n * @param selfWriteOnly if false will try to write value changes into inner observable which allows to create proxy for another observable\r\n */\r\n unwrap(selfWriteOnly?: boolean): PureComputed>\r\n }\r\n}","import ko from 'knockout';\r\n\r\nko.subscribable.fn.unwrapPromise = function (defaultValue?: any) {\r\n const observable = this; \r\n\r\n let result = ko.pureComputed(() => {\r\n const result = ko.observable();\r\n const value = observable();\r\n\r\n if (value && value.then)\r\n (>value).then(val => result(val));\r\n else\r\n result(value);\r\n\r\n return result;\r\n }).unwrap();\r\n\r\n if (defaultValue != undefined)\r\n result = result.default(defaultValue);\r\n\r\n return result;\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * transforms Subscribable> into Subscribable\r\n * Subscribable will have underfined value until Promise is resolved\r\n */\r\n unwrapPromise(): Subscribable ? R | undefined : T>\r\n unwrapPromise(defaultValue: T extends Promise ? NonNullable : never): Subscribable ? NonNullable : T>\r\n }\r\n}","import * as ko from 'knockout';\n\nko.subscribable.fn.update = function (funcOrValue: any) {\n let newValue = _(funcOrValue).isFunction() ?\n funcOrValue(this()) :\n funcOrValue;\n\n if (newValue !== undefined)\n this(newValue);\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * updates observable only if new value is not undefined\r\n * @param func function to create new value from previous one\r\n */\n update(func: (value: T) => T): void\n\n /**\r\n * updates observable only if new value is not undefined\r\n * @param value new value\r\n */\n update(value: T | undefined): void\n }\n}","import * as ko from 'knockout';\n\nko.subscribable.fn.when = function (this: ko.Subscribable, predicate?: (item: T) => boolean, disposalPromise?: Promise) {\n const finalPredicate = predicate ?? (item => !!item);\n\n const observable = this;\n\n return new Promise(resolve => {\n const result = ko.pureComputed(() => finalPredicate(observable()) === true);\n\n if (result() === true) {\n resolve(observable());\n } else {\n const sub = result.subscribe(result => {\n if (result === true) {\n resolve(observable());\n sub.dispose();\n }\n });\n\n if (disposalPromise)\n disposalPromise.then(() => sub.dispose());\n }\n });\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * creates promise which is resolve when predicate is resolved to true\r\n * @param predicate Predicate we call agains subscribable value\r\n * @param disposalPromise if that promise is resolved then we stop tracking subscribable value\r\n */\n when(predicate?: (item: T) => boolean, disposalPromise?: Promise): Promise\n }\n}","import * as ko from 'knockout';\n\nko.subscribable.fn.whenChanged = function (this: ko.Subscribable, disposalPromise?: Promise) {\n const initial = this();\n return this.when(value => value !== initial, disposalPromise);\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * creates promise which is resolve when inner value is not equal to current one\r\n * @param disposalPromise if that promise is resolved then we stop tracking subscribable value\r\n */\n whenChanged(disposalPromise?: Promise): Promise\n }\n}","import ko from 'knockout';\r\n\r\nko.subscribable.fn.whenFalse = function (this: ko.Subscribable, disposalPromise?: Promise) {\r\n return this.when(value => !value, disposalPromise);\r\n}\r\n\r\ndeclare module 'knockout' {\r\n export interface SubscribableFunctions {\r\n /**\r\n * creates promise which is resolve when inner value is false\r\n * @param disposalPromise if that promise is resolved then we stop tracking subscribable value\r\n */\r\n whenFalse(disposalPromise?: Promise): Promise>\r\n }\r\n}","import * as ko from 'knockout';\n\nko.subscribable.fn.whenNotNull = function (this: ko.Subscribable, disposalPromise?: Promise) {\n return this.when(value => value != null, disposalPromise);\n}\n\ndeclare module 'knockout' {\n export interface SubscribableFunctions {\n /**\r\n * creates promise which is resolve when inner value is not null and is not undefined\r\n * @param disposalPromise if that promise is resolved then we stop tracking subscribable value\r\n */\n whenNotNull(disposalPromise?: Promise): Promise>\n }\n}","import { componentTemplateMetadataKey } from 'decorators/componentTemplate';\r\nimport TemplateLoader from 'extensions/knockout/loaders/promise/template';\r\nimport ViewModelLoader from 'extensions/knockout/loaders/promise/vm';\r\nimport { TemplateConfig, ViewModelConfig } from 'extensions/knockout/types/componentDefinition';\r\nimport { isInjectable } from 'interfaces/injectable';\r\nimport { componentSectionsMetadataKey } from '../../../../decorators/componentSection';\r\nimport WCCComponentMasterLoader from './master';\r\n\r\nconst sectionPattern = //gi;\r\n\r\nexport default class WCCComponentLoader {\r\n private viewModelLoader = new ViewModelLoader();\r\n private templateLoader = new TemplateLoader();\r\n private masterLoader = new WCCComponentMasterLoader();\r\n\r\n loadComponent(name: string, config: ko.components.Config, callback: (component: ko.components.Component) => void) {\r\n if (config) {\r\n this.viewModelLoader.getViewModelConstructor(config.viewModel).then(async ctor => {\r\n await this.processDynamicViews(name, config);\r\n this.updateConfigFromViewModelConstructor(ctor, config);\r\n\r\n this.viewModelLoader.load(name, config.viewModel, createViewModel =>\r\n this.templateLoader.load(name, config.template, template =>\r\n callback({ createViewModel, template })));\r\n });\r\n } else {\r\n ko.components.defaultLoader.loadComponent(name, config, callback);\r\n }\r\n }\r\n\r\n loadViewModel(name: string, config: ko.components.ViewModelConfig | ViewModelConfig, callback: (vm: ko.components.CreateViewModel) => void) {\r\n this.viewModelLoader.load(name, config, callback);\r\n }\r\n\r\n loadTemplate(name: string, config: ko.components.TemplateConfig | TemplateConfig, callback: (template: Node[]) => void) {\r\n this.templateLoader.load(name, config, callback);\r\n }\r\n\r\n private updateConfigFromViewModelConstructor(ctor: any, config: ko.components.Config) {\r\n if (isInjectable(ctor)) {\r\n const templateId: string | undefined = Reflect.getMetadata(componentTemplateMetadataKey, ctor);\r\n\r\n if (templateId != undefined)\r\n config.template = { element: templateId };\r\n\r\n if ('element' in config.template) {\r\n const master = this.masterLoader.load(ctor);\r\n const sections: Map = Reflect.getMetadata(componentSectionsMetadataKey, ctor) ?? new Map>();\r\n\r\n const templateId: string = config.template.element;\r\n\r\n if (master != undefined || sections.size > 0) {\r\n let template = document.getElementById(templateId)?.innerHTML ?? '';\r\n\r\n if (master != undefined)\r\n template = master.replace('', template);\r\n\r\n template = template.replace(sectionPattern, (match, sectionName) => {\r\n const sectionId = sections.get(sectionName);\r\n\r\n if (sectionId != undefined)\r\n return ``\r\n\r\n return '';\r\n });\r\n\r\n config.template = template;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private async processDynamicViews(name: string, config: ko.components.Config) {\r\n if (_.isObject(config.template) && 'dynamicView' in config.template) {\r\n //template loader will load dynamic view and we can just use templateId from now on\r\n await new Promise(resolve => this.templateLoader.load(name, config.template, () => resolve()));\r\n\r\n const { elementId } = config.template.dynamicView;\r\n config.template = { element: elementId };\r\n }\r\n }\r\n}","import { componentMasterMetadataKey } from 'decorators/componentMaster';\r\n\r\nexport default class WCCComponentMasterLoader {\r\n load(ctor: any) {\r\n const masterIDs: Array = Reflect.getMetadata(componentMasterMetadataKey, ctor) ?? [];\r\n\r\n if (masterIDs.length > 0) {\r\n const masters = masterIDs.map(masterId => ({ masterId, content: $(`#${masterId}`).html() }));\r\n\r\n return masters.reduce((result, { masterId, content }) => {\r\n if (result != undefined) {\r\n if (content != undefined) {\r\n return result.replace('', content);\r\n } else {\r\n console.error(`can't load master content from ${masterId}`);\r\n return undefined;\r\n }\r\n }\r\n\r\n return result;\r\n }, '');\r\n }\r\n }\r\n}","import { TemplateConfig } from 'extensions/knockout/types/componentDefinition';\r\nimport { loadView } from 'helpers/views';\r\n\nexport default class WCCTemplateLoader {\n async load(name: string, config: ko.components.TemplateConfig | TemplateConfig, callback: (template: Node[]) => void) {\r\n try {\r\n if (_.isObject(config) && 'dynamicView' in config) {\n const { name: viewName, elementId } = config.dynamicView;\n await loadView(viewName);\n\n ko.components.defaultLoader.loadTemplate(name, { element: elementId }, callback);\n } else {\n ko.components.defaultLoader.loadTemplate(name, config, callback);\n }\r\n } catch (ex) {\r\n console.error(name, config, ex);\r\n }\r\n }\r\n}","import { ViewModelConfig } from 'extensions/knockout/types/componentDefinition';\r\n\r\nexport default class WCCViewModelLoader {\n async load(name: string, config: ko.components.ViewModelConfig | ViewModelConfig, callback: (vm: ko.components.CreateViewModel) => void) {\r\n if (config && 'promise' in config) {\n try {\n const ViewModel = await this.getViewModelConstructor(config);\n await components.awaitAll();\n\n try {\n if (ViewModel == undefined)\r\n throw new Error(`components: invalid ViewModel for component: ${name}`);\r\n\r\n const { ViewModelFactory } = await import('extensions/knockout/factories/vm');\r\n const factory = new ViewModelFactory(ViewModel);\n\n callback((params, componentInfo) => factory.createViewModel(params, componentInfo)); \n } catch (ex) {\n console.error(ex);\r\n }\n } catch (ex) {\n console.error('components: invalidconfig', config);\r\n throw ex;\r\n }\n } else {\n ko.components.defaultLoader.loadViewModel(name, config, callback);\n }\r\n }\r\n\r\n async getViewModelConstructor(config: ko.components.ViewModelConfig | ViewModelConfig) {\r\n if (config && 'promise' in config) {\r\n const value = await Promise.resolve(config.promise());\n return system.getDefaultIfES6(value);\r\n }\r\n }\r\n}","import { globalComponents } from './components/global';\r\nimport PromiseLoader from './loaders/promise/loader';\r\n\r\nsystem.importAll(require.context('./bindings/', false, /\\.[jt]s$/));\r\n\r\nko.components.loaders.unshift(new PromiseLoader());\r\n\r\n_(globalComponents).each((definition, name) =>\r\n components.register(name, definition.vm, definition.template));\r\n\r\ncomponents.preload('spinner-new', 'wcc-loader', 'wcs-spinner', 'component-awaiter');","import _ from 'underscore/modules/index-default';\r\n\r\n_.mixin({\r\n generate: function () {\r\n let startIdx, endIdx, step, mapper;\r\n\r\n if (arguments.length == 2) {\r\n startIdx = 0;\r\n endIdx = arguments[0];\r\n step = 1;\r\n mapper = arguments[1];\r\n } else if (arguments.length == 3) {\r\n startIdx = arguments[0];\r\n endIdx = arguments[1];\r\n step = 1;\r\n mapper = arguments[2];\r\n } else if (arguments.length == 4) {\r\n startIdx = arguments[0];\r\n endIdx = arguments[1];\r\n step = arguments[2];\r\n mapper = arguments[3];\r\n } else {\r\n throw 'invalid arguments exception';\r\n }\r\n\r\n return _(_.range(startIdx, endIdx, step)).map(mapper);\r\n }\r\n});","import _ from 'underscore/modules/index-default';\r\n\r\n_.mixin({\r\n /**\r\n * @param {Array} arr\r\n * @param {Array} arr2\r\n */\r\n sameAs: function (arr, arr2) {\r\n if (arr != null && arr2 != null) {\r\n if (arr.length == arr2.length) {\r\n return _(arr)\r\n .chain()\r\n .zip(arr2)\r\n .map(pair => pair[0] == pair[1])\r\n .reduce((result, value) => result && value, true)\r\n .value();\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n});","import _ from 'underscore/modules/index-default';\r\n\r\n_.mixin({\r\n takeWhile: function (arr, predicate) {\r\n let count = 0;\r\n\r\n _(arr).all((item) => predicate(item) && ++count);\r\n\r\n return _(arr).take(count);\r\n }\r\n});","import { getObservableAccesser } from 'helpers/knockout';\r\nimport { TextHelpers } from 'helpers/text';\r\nimport ko from 'knockout';\r\nimport 'libraries/intlTelInput';\r\n\r\nko.bindingHandlers.iCheck = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var $element = $(element);\r\n\r\n $element.iCheck({\r\n checkboxClass: 'icheckbox_' + (allBindings().iClass || 'flat-blue'),\r\n radioClass: 'iradio_' + (allBindings().iClass || 'flat-blue')\r\n }).on('ifChecked', () => {\r\n let value = valueAccessor();\r\n\r\n if (allBindings().useValue) {\r\n if (allBindings().isMultiple) {\r\n if (value.indexOf($element.val()) == -1) {\r\n value.push($element.val());\r\n }\r\n } else {\r\n value($element.val());\r\n }\r\n }\r\n else {\r\n value(true);\r\n\r\n _.defer(() => {\r\n if (!value())\r\n ko.bindingHandlers.iCheck.update(element, valueAccessor, allBindings, viewModel, bindingContext);\r\n });\r\n }\r\n }).on('ifUnchecked', () => {\r\n let value = valueAccessor();\r\n\r\n if (allBindings().useValue) {\r\n if (allBindings().isMultiple) {\r\n value.remove($element.val());\r\n } else {\r\n value(null);\r\n }\r\n }\r\n else {\r\n value(false);\r\n\r\n _.defer(() => {\r\n if(value())\r\n ko.bindingHandlers.iCheck.update(element, valueAccessor, allBindings, viewModel, bindingContext)\r\n });\r\n }\r\n });\r\n },\r\n\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n let $element = $(element);\r\n let value = valueAccessor();\r\n\r\n if (allBindings().useValue) {\r\n if (allBindings().isMultiple && value.indexOf($element.val()) > -1 || !allBindings().isMultiple && value() == $element.val()) {\r\n $element.iCheck('check');\r\n } else {\r\n $element.iCheck('uncheck');\r\n }\r\n } else {\r\n if (value())\r\n $element.iCheck('check');\r\n else\r\n $element.iCheck('uncheck');\r\n }\r\n }\r\n}\r\n\r\nko.bindingHandlers.iRadio = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element);\r\n eObj.iCheck({\r\n checkboxClass: 'icheckbox_' + (allBindings().iClass || 'flat-blue'),\r\n radioClass: 'iradio_' + (allBindings().iClass || 'flat-blue')\r\n }).on('ifChecked', function (event) {\r\n var value = valueAccessor(),\r\n objVal = eObj.val();\r\n if (allBindings().isNumber) {\r\n objVal = parseInt(objVal);\r\n }\r\n var oldVal = value();\r\n\r\n if (allBindings().isMultiple) {\r\n value([objVal]);\r\n }\r\n else {\r\n value(objVal);\r\n }\r\n\r\n var newVal = value();\r\n\r\n if (allBindings().valueChanged && oldVal != newVal) {\r\n allBindings().valueChanged(oldVal, newVal);\r\n }\r\n }).on('ifUnchecked', function (event) {\r\n var value = valueAccessor();\r\n var oldVal = value();\r\n\r\n if (allBindings().isMultiple) {\r\n value([]);\r\n }\r\n else {\r\n value(null);\r\n }\r\n\r\n var newVal = value();\r\n if (allBindings().valueChanged && oldVal != newVal) {\r\n allBindings().valueChanged(oldVal, newVal);\r\n }\r\n });\r\n },\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n value = valueAccessor(),\r\n objVal = eObj.val();\r\n if (allBindings().isNumber) {\r\n objVal = parseInt(objVal);\r\n }\r\n if (allBindings().isMultiple && value.indexOf(objVal) > -1 || !allBindings().isMultiple && value() == objVal) {\r\n eObj.iCheck('check');\r\n }\r\n else {\r\n eObj.iCheck('uncheck');\r\n }\r\n }\r\n};\r\n\r\nko.bindingHandlers.translate = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var $item = $(element),\r\n value = ko.unwrap(valueAccessor()) || {},\r\n x = ko.unwrap(value.x) || 0,\r\n y = ko.unwrap(value.y) || 0,\r\n result = 'translate(' + x + 'px, ' + y + 'px)';\r\n\r\n $item.css('transform', result);\r\n },\r\n\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var $item = $(element),\r\n value = ko.unwrap(valueAccessor()) || {},\r\n x = ko.unwrap(value.x) || 0,\r\n y = ko.unwrap(value.y) || 0,\r\n result = 'translate(' + x + 'px, ' + y + 'px)';\r\n\r\n $item.css('transform', result);\r\n }\r\n}\r\n\r\nko.bindingHandlers.lazyResize = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var $element = $(element);\r\n\r\n var setHeight = function () {\r\n var height = _($element.children()).reduce(function (r, child) {\r\n return r + $(child).offsetHeight;\r\n }, 0);\r\n\r\n $element.css({ height: height });\r\n }\r\n\r\n var observer = new MutationObserver(setHeight);\r\n observer.observe(element, { attributes: true, childList: true, subtree: true });\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n observer.disconnect();\r\n });\r\n }\r\n}\r\n\r\nko.bindingHandlers.fullpage = {\r\n init: function (element, valuesAccessor, allBindings) {\r\n var $el = $(element),\r\n value = ko.unwrap(valuesAccessor()),\r\n $w = $(window),\r\n $footer = $(\"#footer\"),\r\n $header = $(\"#header\");\r\n\r\n var update = _.debounce(function () {\r\n var topOffset = $el.offset().top,\r\n bottomOffset = $footer.outerHeight();\r\n\r\n if (value) {\r\n $el.css({ 'min-height': window.innerHeight - topOffset - bottomOffset });\r\n }\r\n else {\r\n $el.css({ 'height': window.innerHeight - topOffset - bottomOffset });\r\n }\r\n }, 0);\r\n\r\n var observer = new MutationObserver(function (mutations) {\r\n var handle = _(mutations).any(function (m) { return m.target != element && $(m.target).closest(element).length == 0 });\r\n\r\n if (handle) update();\r\n });\r\n\r\n $w.on('resize', update);\r\n\r\n observer.observe($(\"body\")[0], { attributes: true, childList: true, subtree: true });\r\n\r\n update();\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n $w.off('resize', update);\r\n observer.disconnect();\r\n });\r\n }\r\n}\r\n\r\nko.bindingHandlers.slideToggleCSS = (function () {\r\n var applyTransitions = function ($item) {\r\n $item.css({\r\n '-webkit-transition': 'margin .4s ease-in-out',\r\n '-moz-transition': 'margin .4s ease-in-out',\r\n '-o-transition': 'margin .4s ease-in-out',\r\n 'transition': 'margin .4s ease-in-out'\r\n });\r\n }\r\n\r\n var transitions = {\r\n \"transition\": \"transitionend\",\r\n \"OTransition\": \"oTransitionEnd\",\r\n \"MozTransition\": \"transitionend\",\r\n \"WebkitTransition\": \"webkitTransitionEnd\",\r\n \"MSTransition\": \"MSTransitionEnd\"\r\n }\r\n\r\n var onTransitionEnd = function (e) {\r\n $(e.srcElement).parent().css({ 'overflow': 'visible' });\r\n };\r\n\r\n var func = function (element, valueAccessor) {\r\n var $item = $(element),\r\n value = valueAccessor();\r\n\r\n var eventName = _(transitions).find(function (t, key) {\r\n return element.style[key] !== undefined;\r\n });\r\n\r\n $item.off('resize');\r\n $item.off(eventName, onTransitionEnd);\r\n\r\n if (ko.unwrap(value)) {\r\n if ($item.is(':hidden')) {\r\n $item.show();\r\n $item.css({ 'margin-top': -element.scrollHeight + 'px' });\r\n\r\n _.defer(function () {\r\n applyTransitions($item);\r\n });\r\n }\r\n\r\n _.defer(function () {\r\n $item.css({ 'margin-top': 0 });\r\n\r\n $item.one(eventName, onTransitionEnd);\r\n });\r\n } else {\r\n $item.parent().css({ 'overflow': 'hidden' });\r\n $item.css({ 'margin-top': -element.scrollHeight + 'px' });\r\n\r\n $item.on('resize', function () {\r\n $item.css({ 'margin-top': -element.scrollHeight + 'px' });\r\n });\r\n }\r\n };\r\n\r\n return {\r\n init: function (element, valueAccessor) {\r\n var $item = $(element);\r\n\r\n $item.hide();\r\n func(element, valueAccessor);\r\n },\r\n\r\n update: func\r\n }\r\n})();\r\n\r\nko.virtualElements.allowedBindings.wccAfterRender = true;\r\nko.bindingHandlers.wccAfterRender = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var callback = valueAccessor();\r\n\r\n if (callback) {\r\n _.defer(function () {\r\n callback(element);\r\n });\r\n }\r\n }\r\n}\r\n\r\nko.bindingHandlers.animate = {\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n animateObj = valueAccessor(), //all binding properties are encapsulated inside one object for easy syntax\r\n value = animateObj.valueProperty, //The KO model property this binding is attached to. Must be boolean\r\n /* TimeOuts control the timing of the animation trigger. It has two fields:\r\n 1. trueTimeOut: The timeout for the animation when the value is true\r\n 2. falseTimeOut: The timeout for the animation when the value is false */\r\n timeOuts = animateObj.timeOuts || {},\r\n animationProperties = animateObj.animatedProperties,\r\n animationOptions = animateObj.animationOptions || {\r\n duration: 300,\r\n easing: 'swing'\r\n };\r\n\r\n /*The visibility control handles the visibility of the element. For instance, it is needed in cases where we run the animation over 'Opacity' css property. Any control takes full space on the page \r\n if the opacity is 0 and so hiding it is needed in most cases. This is just one example for which we can make another binding that can use jQuery's show/hide functions. But I am using it here for \r\n the same as it can also be used for other uses and I don't really see a good reason to add another binding unless any issues or seen. */\r\n if (animateObj.controlVisibility) {\r\n animationOptions.start = function () {\r\n if (value) {\r\n eObj.show();\r\n }\r\n };\r\n animationOptions.complete = function () {\r\n if (!value) {\r\n eObj.hide();\r\n }\r\n };\r\n }\r\n\r\n for (var k in animationProperties) { //set multiple properties here\r\n var propertyValues = animationProperties[k],\r\n startValue = 0,\r\n endValue = 0;\r\n\r\n if (typeof propertyValues.endValue == 'function') {\r\n endValue = propertyValues.endValue();\r\n }\r\n else {\r\n endValue = propertyValues.endValue;\r\n }\r\n\r\n if (typeof propertyValues.startValue == 'function') {\r\n startValue = propertyValues.startValue();\r\n }\r\n else {\r\n startValue = propertyValues.startValue;\r\n }\r\n\r\n if (value) {\r\n animationProperties[k] = startValue;\r\n }\r\n else {\r\n animationProperties[k] = endValue;\r\n }\r\n }\r\n\r\n //Assign the main caller function to a variable so it can be called at multiple places without duplicating the code\r\n var animateFunc = function () { eObj.stop(true, true).animate(animationProperties, animationOptions); };\r\n\r\n if (value) {\r\n if (timeOuts.trueTimeOut) { //if true timeOut is set, delay the animation\r\n setTimeout(animateFunc, timeOuts.trueTimeOut);\r\n }\r\n else {\r\n animateFunc();\r\n }\r\n }\r\n else {\r\n if (timeOuts.falseTimeOut) { //if false timeOut is set, delay the animation\r\n setTimeout(animateFunc, timeOuts.falseTimeOut);\r\n }\r\n else {\r\n animateFunc();\r\n }\r\n }\r\n }\r\n};\r\n\r\nko.bindingHandlers.loaded = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var $el = $(element),\r\n value = valueAccessor();\r\n\r\n if (ko.isObservable(value)) {\r\n $el.load(function () {\r\n value(true);\r\n });\r\n }\r\n }\r\n}\r\n\r\nko.bindingHandlers.videoLoaded = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var $el = $(element),\r\n value = valueAccessor();\r\n\r\n if (ko.isObservable(value)) {\r\n var action = function () {\r\n value(true);\r\n\r\n $el.off('loadeddata', action);\r\n }\r\n\r\n $el.on('loadeddata', action);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n $el.off('loadeddata', action);\r\n });\r\n }\r\n }\r\n}\r\n\r\nko.bindingHandlers.modalDialog = {\r\n update: function (element, valueAccessor, allBindingsAccessor) {\r\n var $el = $(element),\r\n value = valueAccessor();\r\n\r\n $el.modal(value() ? 'show' : 'hide');\r\n $el.on('hidden.bs.modal', function (e) {\r\n value(false);\r\n })\r\n }\r\n};\r\n\r\nko.bindingHandlers.selected = {\r\n update: function (element, valueAccessor, allBindingsAccessor) {\r\n var selected = ko.utils.unwrapObservable(valueAccessor());\r\n if (selected) element.select();\r\n }\r\n};\r\n\r\nko.bindingHandlers.inViewPort = {\r\n isVisible: function (container, element) {\r\n if (element == null) return false;\r\n\r\n var w = $(container),\r\n containerMode = container != window,\r\n item = $(element);\r\n\r\n var containerBottom = item.is(':last-child') ? w.scrollTop() + w.height() : w.scrollTop() + w.height() - 50,\r\n containerTop = item.is(':first-child') ? w.scrollTop() : w.scrollTop() + 50,\r\n itemTop = containerMode ? item.position().top : item.offset().top,\r\n itemBottom = containerMode ? item.position().top + item.height() : item.offset().top + item.height();\r\n\r\n return itemTop <= containerBottom && itemBottom >= containerTop;\r\n },\r\n\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var self = ko.bindingHandlers.inViewPort,\r\n item = ko.unwrap(allBindingsAccessor.get('inViewPort-element')) || $(element),\r\n container = ko.unwrap(allBindingsAccessor.get('inViewPort-container')),\r\n w = container != null ? container : window,\r\n $w = $(w),\r\n value = valueAccessor();\r\n\r\n if (ko.observable(value)) {\r\n const action = system.toUICallback(() => {\r\n if (self.isVisible(w, item))\r\n value(true);\r\n else\r\n value(false);\r\n });\r\n\r\n $w.on('scroll', action);\r\n action();\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => $w.off(\"scroll\", action));\r\n }\r\n }\r\n};\r\n\r\nko.bindingHandlers.animationComplete = {\r\n init: function (element, valueAccessor) {\r\n var item = $(element),\r\n callback = valueAccessor();\r\n\r\n var animations = {\r\n \"animation\": \"animationend\",\r\n \"OAnimation\": \"oAnimationEnd\",\r\n \"MozAnimation\": \"animationend\",\r\n \"WebkitAnimation\": \"webkitAnimationEnd\",\r\n \"MSAnimation\": \"MSAnimationEnd\"\r\n }\r\n\r\n var eventName = _(animations).find(function (a, key) {\r\n return element.style[key] !== undefined;\r\n });\r\n\r\n if (_(callback).isFunction() && eventName != null) {\r\n item.on(eventName, callback);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n item.off(eventName, callback);\r\n });\r\n }\r\n }\r\n}\r\n\r\nko.bindingHandlers.transitionComplete = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var item = $(element),\r\n callback = valueAccessor(),\r\n chilrenTransitions = allBindingsAccessor()['transition-children'],\r\n onlyTargetEvents = chilrenTransitions == null || chilrenTransitions == false;\r\n\r\n var transitions = {\r\n \"transition\": \"transitionend\",\r\n \"OTransition\": \"oTransitionEnd\",\r\n \"MozTransition\": \"transitionend\",\r\n \"WebkitTransition\": \"webkitTransitionEnd\",\r\n \"MSTransition\": \"MSTransitionEnd\"\r\n }\r\n\r\n var eventName = _(transitions).find(function (t, key) {\r\n return element.style[key] !== undefined;\r\n });\r\n\r\n var onEvent = function (e) {\r\n if (!onlyTargetEvents || e.currentTarget == element) {\r\n callback();\r\n }\r\n }\r\n\r\n if (_(callback).isFunction() && eventName != null) {\r\n item.on(eventName, onEvent);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n item.off(eventName, onEvent);\r\n });\r\n }\r\n }\r\n}\r\n\r\nko.bindingHandlers.shiftUp = {\r\n init: function (element, valueAccessor) {\r\n var item = $(element),\r\n w = $(window),\r\n value = valueAccessor(),\r\n height = item.outerHeight(true);\r\n\r\n if (ko.unwrap(value) && w.scrollTop() > 0) {\r\n w.scrollTop(w.scrollTop() + height);\r\n\r\n _.defer(function () {\r\n w.scrollTop(w.scrollTop() + item.outerHeight(true) - height);\r\n });\r\n }\r\n }\r\n}\r\n\r\nko.bindingHandlers.cropbox = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var value = valueAccessor(),\r\n options = ko.unwrap(value);\r\n\r\n value.cropbox = ko.observable(null);\r\n\r\n if (options) {\r\n value.cropbox($(element).cropbox(options));\r\n }\r\n },\r\n update: function (element, valueAccessor, allBindingsAccessor) {\r\n var value = valueAccessor(),\r\n options = ko.unwrap(value),\r\n cropbox = value.cropbox();\r\n\r\n if (cropbox) {\r\n cropbox.dispose();\r\n }\r\n\r\n if (options) {\r\n cropbox = $(element).cropbox(options);\r\n\r\n cropbox.setImageModified(true);\r\n value.cropbox(cropbox);\r\n }\r\n }\r\n}\r\n\r\nko.bindingHandlers.scroll = {\r\n updating: true,\r\n\r\n init: (element, valueAccessor, allBindingsAccessor) => {\r\n ko.bindingHandlers.scroll.updating = true;\r\n \r\n const scrollableParent = system.findScrollableParent(element);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n $(window).off(\"scroll.ko.scrollHandler\");\r\n scrollableParent.off(\"scroll.ko.scrollHandler\");\r\n ko.bindingHandlers.scroll.updating = false;\r\n });\r\n },\r\n\r\n update: (element, valueAccessor, allBindingsAccessor) => {\r\n const props = allBindingsAccessor().scrollOptions;\r\n const offset = 200;//props.offset ? props.offset : 100;\r\n const loadFunc = props.loadFunc;\r\n const load = ko.utils.unwrapObservable(valueAccessor());\r\n\r\n const scrollableParent = system.findScrollableParent(element);\r\n\r\n if (load) {\r\n element.style.display = \"\";\r\n scrollableParent.on(\"scroll.ko.scrollHandler\", function () {\r\n const scrollValue = scrollableParent[0].scrollHeight != undefined ?\r\n Math.abs(scrollableParent[0].scrollHeight - scrollableParent[0].scrollTop - scrollableParent[0].clientHeight) : // some DOM element has scroll bars \r\n Math.abs($(document).height() - scrollableParent.scrollTop() - scrollableParent.height()); // in case if scroll parent is window itself\r\n\r\n if (scrollValue < offset) {\r\n if (self.updating) {\r\n loadFunc()\r\n self.updating = false;\r\n }\r\n }\r\n else {\r\n self.updating = true;\r\n }\r\n });\r\n }\r\n else {\r\n element.style.display = \"none\";\r\n $(window).off(\"scroll.ko.scrollHandler\")\r\n scrollableParent.off(\"scroll.ko.scrollHandler\")\r\n ko.bindingHandlers.scroll.updating = false;\r\n }\r\n }\r\n}\r\n\r\nko.virtualElements.allowedBindings.lazyRender = true;\r\nko.bindingHandlers.lazyRender = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var children = _(ko.virtualElements.childNodes(element)).clone();\r\n\r\n var val = ko.pureComputed(function () {\r\n return !!ko.unwrap(valueAccessor());\r\n });\r\n\r\n ko.virtualElements.emptyNode(element);\r\n\r\n val\r\n .when()\r\n .then(function () {\r\n ko.virtualElements.setDomNodeChildren(element, children);\r\n ko.applyBindingsToDescendants(bindingContext, element);\r\n }, new Promise(function (resolve) { ko.utils.domNodeDisposal.addDisposeCallback(element, function () { resolve() }) }));\r\n\r\n return { controlsDescendantBindings: true }\r\n }\r\n}\r\n\r\nko.virtualElements.allowedBindings.toContext = true;\r\nko.bindingHandlers.toContext = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n function Context() {\r\n this.$prevContext = bindingContext;\r\n }\r\n\r\n Context.prototype = valueAccessor();\r\n\r\n var context = new Context();\r\n\r\n ko.applyBindingsToDescendants(context, element);\r\n\r\n return { controlsDescendantBindings: true }\r\n }\r\n}\r\n\r\nko.bindingHandlers.autogrow = (function () {\r\n var init = function (element) {\r\n var $item = $(element);\r\n\r\n if ($item.next(\".autogrow-textarea-mirror\").length != 0) return;\r\n\r\n $(element).after('
');\r\n\r\n var $mirror = $item.next(\".autogrow-textarea-mirror\"),\r\n mirror = $mirror[0];\r\n\r\n // Style the mirror\r\n $mirror.css('display', 'none');\r\n $mirror.css('wordWrap', 'normal');\r\n $mirror.css('whiteSpace', 'normal');\r\n $mirror.css('padding', $item.css('padding'));\r\n $mirror.css('width', $item.css('width'));\r\n $mirror.css('fontFamily', $item.css('font-family'));\r\n $mirror.css('fontSize', $item.css('font-size'));\r\n $mirror.css('lineHeight', $item.css('line-height'));\r\n\r\n // Style the textarea\r\n $item.css('overflow', \"hidden\");\r\n\r\n var onChange = function () {\r\n mirror.innerHTML = String($item.val()).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>').replace(/\\n/g, '
') + \".\";\r\n $mirror.css('width', $item.css('width'));\r\n\r\n var oldHeight = $item.height(),\r\n newHeight = Math.ceil($mirror.height());\r\n\r\n if (newHeight != oldHeight)\r\n $item.height(newHeight);\r\n };\r\n\r\n $item.keydown(onChange);\r\n $item.keyup(onChange);\r\n $item.on('changed', onChange);\r\n\r\n $item.on('autogrow-dispose', function () {\r\n $item.off('keydown', onChange);\r\n $item.off('keyup', onChange);\r\n $item.off('changed', onChange);\r\n\r\n $mirror.remove();\r\n });\r\n\r\n onChange();\r\n _.defer(function () {\r\n onChange();\r\n });\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n $mirror.remove();\r\n });\r\n }\r\n\r\n var dispose = function (element) {\r\n var $item = $(element);\r\n\r\n $item.trigger('autogrow-dispose');\r\n }\r\n\r\n return {\r\n init: function (element, valueAccessor) {\r\n var val = ko.unwrap(valueAccessor());\r\n\r\n if (val) {\r\n init(element);\r\n }\r\n },\r\n\r\n update: function (element, valueAccessor) {\r\n var val = ko.unwrap(valueAccessor());\r\n\r\n if (val) {\r\n init(element);\r\n } else {\r\n dispose(element);\r\n }\r\n }\r\n }\r\n})();\r\n\r\nko.bindingHandlers.spinner = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var value = ko.unwrap(valueAccessor()),\r\n spinner = WCC.System.initSpinner(element, allBindingsAccessor().smallSpinner ? { radius: 15, length: 0, width: 3 } : null);\r\n if (!value) {\r\n spinner.stop();\r\n }\r\n $(element).data('spinner', spinner);\r\n },\r\n update: function (element, valueAccessor, allBindingsAccessor) {\r\n var value = ko.unwrap(valueAccessor());\r\n if (value) {\r\n $(element).data('spinner').spin(element);\r\n }\r\n else {\r\n $(element).data('spinner').stop();\r\n }\r\n }\r\n};\r\nko.bindingHandlers.log = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n console.log(valueAccessor());\r\n }\r\n};\r\nko.bindingHandlers.spectrum = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var value = valueAccessor(),\r\n allBindings = allBindingsAccessor(),\r\n rgbaMode = allBindings['spectrum-rgba'] || false,\r\n areButtonsShown = allBindings['spectrum-buttons'] === undefined ? true : allBindings['spectrum-buttons'],\r\n customClasses = allBindings['spectrum-classes'] || '',\r\n onShow = allBindings['spectrum-show'] || _.noop,\r\n onHide = allBindings['spectrum-hide'] || _.noop,\r\n onInit = allBindings['spectrum-init'] || _.noop;\r\n\r\n\r\n var format = function (color) { return rgbaMode ? color.toRgbString() : color.toHexString() };\r\n\r\n $(element).spectrum({\r\n color: \"#000\",\r\n showAlpha: rgbaMode,\r\n showInput: true,\r\n className: \"full-spectrum \" + customClasses,\r\n showInitial: true,\r\n showPalette: true,\r\n showSelectionPalette: true,\r\n clickoutFiresChange: false,\r\n showButtons: areButtonsShown,\r\n maxPaletteSize: 10,\r\n preferredFormat: \"hex\",\r\n localStorageKey: \"spectrum.demo\",\r\n\r\n show: onShow,\r\n\r\n hide: function (color) {\r\n value(format(color));\r\n onHide();\r\n },\r\n\r\n palette: [\r\n [\"rgb(0, 0, 0)\", \"rgb(67, 67, 67)\", \"rgb(102, 102, 102)\",\r\n \"rgb(204, 204, 204)\", \"rgb(217, 217, 217)\", \"rgb(255, 255, 255)\"],\r\n [\"rgb(152, 0, 0)\", \"rgb(255, 0, 0)\", \"rgb(255, 153, 0)\", \"rgb(255, 255, 0)\", \"rgb(0, 255, 0)\",\r\n \"rgb(0, 255, 255)\", \"rgb(74, 134, 232)\", \"rgb(0, 0, 255)\", \"rgb(153, 0, 255)\", \"rgb(255, 0, 255)\"],\r\n [\"rgb(230, 184, 175)\", \"rgb(244, 204, 204)\", \"rgb(252, 229, 205)\", \"rgb(255, 242, 204)\", \"rgb(217, 234, 211)\",\r\n \"rgb(208, 224, 227)\", \"rgb(201, 218, 248)\", \"rgb(207, 226, 243)\", \"rgb(217, 210, 233)\", \"rgb(234, 209, 220)\",\r\n \"rgb(221, 126, 107)\", \"rgb(234, 153, 153)\", \"rgb(249, 203, 156)\", \"rgb(255, 229, 153)\", \"rgb(182, 215, 168)\",\r\n \"rgb(162, 196, 201)\", \"rgb(164, 194, 244)\", \"rgb(159, 197, 232)\", \"rgb(180, 167, 214)\", \"rgb(213, 166, 189)\",\r\n \"rgb(204, 65, 37)\", \"rgb(224, 102, 102)\", \"rgb(246, 178, 107)\", \"rgb(255, 217, 102)\", \"rgb(147, 196, 125)\",\r\n \"rgb(118, 165, 175)\", \"rgb(109, 158, 235)\", \"rgb(111, 168, 220)\", \"rgb(142, 124, 195)\", \"rgb(194, 123, 160)\",\r\n \"rgb(166, 28, 0)\", \"rgb(204, 0, 0)\", \"rgb(230, 145, 56)\", \"rgb(241, 194, 50)\", \"rgb(106, 168, 79)\",\r\n \"rgb(69, 129, 142)\", \"rgb(60, 120, 216)\", \"rgb(61, 133, 198)\", \"rgb(103, 78, 167)\", \"rgb(166, 77, 121)\",\r\n \"rgb(91, 15, 0)\", \"rgb(102, 0, 0)\", \"rgb(120, 63, 4)\", \"rgb(127, 96, 0)\", \"rgb(39, 78, 19)\",\r\n \"rgb(12, 52, 61)\", \"rgb(28, 69, 135)\", \"rgb(7, 55, 99)\", \"rgb(32, 18, 77)\", \"rgb(76, 17, 48)\"]\r\n ]\r\n });\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n $(element).spectrum(\"destroy\");\r\n });\r\n\r\n onInit(element);\r\n },\r\n update: function (element, valueAccessor, allBindingsAccessor) {\r\n $(element).spectrum(\"set\", valueAccessor()());\r\n }\r\n};\r\nko.bindingHandlers.iCheckDynamic = {\r\n init: function (element, valueAccessor, allBindings, bindingContext) {\r\n var eObj = $(element),\r\n modelItem = bindingContext;\r\n eObj.on('change', function (event) {\r\n var thisCheck = $(this);\r\n if (thisCheck.is(':checked')) {\r\n var value = valueAccessor(),\r\n found = false;\r\n if (!allBindings().isMultiple || allBindings().isExclusive)\r\n value.removeAll();\r\n $.each(value(), function (i, v) {\r\n if (v.profileQuestionChoiceId == modelItem.profileQuestionChoiceId) {\r\n found = true;\r\n return false;\r\n }\r\n });\r\n if (!found) {\r\n value.push(modelItem);\r\n }\r\n }\r\n else {\r\n var value = valueAccessor();\r\n value.remove(modelItem);\r\n }\r\n });\r\n },\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n modelItem = bindingContext.$data,\r\n selectedChoices = valueAccessor();\r\n\r\n var found = false;\r\n if (selectedChoices().length > 0) {\r\n $.each(selectedChoices(), function (i, choice) {\r\n if (choice != null) {\r\n if (choice.profileQuestionChoiceId == modelItem.profileQuestionChoiceId) {\r\n eObj.prop('checked', true);\r\n found = true;\r\n return false;\r\n }\r\n }\r\n });\r\n }\r\n if (!found) {\r\n eObj.prop('checked', false)\r\n }\r\n }\r\n};\r\n\r\nko.bindingHandlers.errorToggle = (function () {\r\n var process = function (element, valueAccessor) {\r\n if (!document.body.contains(element))\r\n return;\r\n\r\n var eObj = $(element),\r\n value = valueAccessor();\r\n\r\n if (eObj.hasClass('select2')) {\r\n eObj = eObj.next('.select2-container');\r\n }\r\n\r\n if (value.error()) {\r\n var scroll = false;\r\n\r\n if (typeof value.scrollTo != \"undefined\")\r\n scroll = value.scrollTo();\r\n\r\n var scrollContainer = ko.unwrap(value.scrollContainer);\r\n\r\n if (scrollContainer != null)\r\n scrollContainer = $(scrollContainer);\r\n\r\n WCC.System.markControlAsInvalid(eObj, value.error(), scroll, ko.unwrap(value.container), scrollContainer);\r\n }\r\n else {\r\n WCC.System.markControlAsValid(eObj);\r\n }\r\n };\r\n\r\n return {\r\n init: function (element, valueAccessor) {\r\n var $element = $(element);\r\n\r\n process(element, valueAccessor);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n WCC.System.markControlAsValid($element);\r\n });\r\n },\r\n\r\n update: process\r\n };\r\n})();\r\n\r\nko.subscribable.fn.trackErrors = function () {\r\n var self = this;\r\n\r\n this.error = ko.observable('');\r\n this.scrollTo = ko.observable(false).extend({ notify: 'always' });\r\n this.hasErrors = ko.pureComputed(function () { return self.error() && self.error().trim() != '' });\r\n\r\n return this;\r\n};\r\n\r\n//ko extensions\r\n//wrapper to an observable that requires accept/cancel\r\nko.reversibleObservable = function (initialValue) {\r\n //private variables\r\n var _actualValue = ko.observable(initialValue),\r\n _oldValue = initialValue;\r\n\r\n //computed observable that we will return\r\n var result = ko.computed({\r\n read: function () {\r\n return _actualValue();\r\n },\r\n write: function (newValue) {\r\n _actualValue(newValue);\r\n }\r\n }).extend({ notify: \"always\" });\r\n\r\n //update old value to latest\r\n result.commit = function () {\r\n _oldValue = _actualValue();\r\n };\r\n\r\n //force to take original\r\n result.reset = function () {\r\n _actualValue(_oldValue);\r\n };\r\n\r\n //check if the value is changed\r\n result.isChanged = function () {\r\n return _oldValue != _actualValue();\r\n };\r\n\r\n result.trackErrors = ko.observable.fn.trackErrors;\r\n return result;\r\n};\r\n\r\n//wrapper for an observable that remembers its previous value\r\nko.previousValueObservable = function (initialValue) {\r\n //private variables\r\n var _previousValue = ko.observable(initialValue);\r\n var _currentValue = ko.observable(initialValue);\r\n var result = ko.dependentObservable({\r\n read: _currentValue,\r\n write: function (newValue) {\r\n _currentValue(newValue);\r\n }\r\n });\r\n\r\n result.supportsPreviousValue = true;\r\n result.oIsEditing = ko.observable(false);\r\n\r\n //update previousValue value to our observable, if it is different\r\n result.updatePreviousValue = function () {\r\n if (_previousValue() !== _currentValue()) {\r\n _previousValue(_currentValue());\r\n }\r\n };\r\n\r\n //restore previous value to the current value\r\n result.restorePreviousValue = function () {\r\n _currentValue.valueHasMutated();\r\n _currentValue(_previousValue());\r\n };\r\n\r\n result.previousValue = _previousValue;\r\n return result;\r\n};\r\n\r\nko.bindingHandlers.dragToggle = {\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n value = valueAccessor();\r\n try {\r\n if (ko.unwrap(value)) {\r\n eObj.draggable('disable');\r\n }\r\n else {\r\n eObj.draggable('enable');\r\n }\r\n }\r\n catch (ex) { }\r\n }\r\n};\r\n\r\nko.virtualElements.allowedBindings.hideTemplate = true;\r\nko.bindingHandlers.hideTemplate = {\r\n init: function () {\r\n return { controlsDescendantBindings: true }\r\n }\r\n}\r\n\r\n//This binding is used when we want to set a value on the click of an arbitrary HTML element. Used especially in smart dropdowns\r\nko.bindingHandlers.clickSetValue = {\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n value = valueAccessor(),\r\n baseObj = value.baseObject == null ? viewModel : value.baseObject,\r\n noPropagation = value.noPropagation;\r\n\r\n var link = $(eObj);\r\n setTimeout(function () {\r\n link.on('click', function (e) {\r\n var oldVal;\r\n\r\n if (typeof (baseObj[value.property]) == \"function\") {//if we have a function then its a ko observable\r\n oldVal = baseObj[value.property]();\r\n baseObj[value.property](value.valueToSet);//pass it the data value\r\n }\r\n else {//if its not a function its just a normal property\r\n oldVal = baseObj[value.property];\r\n baseObj[value.property] = value.valueToSet;//set the value\r\n }\r\n\r\n if (value.callBack) {\r\n baseObj[value.callBack](oldVal, value.valueToSet);\r\n }\r\n\r\n // if we don't need bubble efect of this click\r\n if (noPropagation === true) {\r\n // Normal browsers\r\n if (e.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n //IE8 and Lower\r\n else {\r\n e.cancelBubble = true;\r\n }\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n }, 500);\r\n }\r\n};\r\nko.bindingHandlers.clickToggleValue = {\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n value = valueAccessor(),\r\n baseObj = value.baseObject == null ? viewModel : value.baseObject,\r\n noPropagation = value.noPropagation;\r\n\r\n var link = $(eObj);\r\n setTimeout(function () {\r\n link.on('click', function (e) {\r\n var oldVal, val;\r\n\r\n if (typeof (baseObj[value.property]) == \"function\") {//if we have a function then its a ko observable\r\n oldVal = baseObj[value.property]();\r\n baseObj[value.property](!baseObj[value.property]());//pass it the data value\r\n val = baseObj[value.property]();\r\n }\r\n else {//if its not a function its just a normal property\r\n oldVal = baseObj[value.property];\r\n baseObj[value.property] = !baseObj[value.property];//set the value\r\n val = baseObj[value.property];\r\n }\r\n\r\n if (value.callBack) {\r\n baseObj[value.callBack](oldVal, val);\r\n }\r\n\r\n // if we don't need bubble efect of this click\r\n if (noPropagation === true) {\r\n // Normal browsers\r\n if (e.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n //IE8 and Lower\r\n else {\r\n e.cancelBubble = true;\r\n }\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n }, 500);\r\n }\r\n};\r\n\r\n(function () {//binding handler for the ACE Editor. more info: https://github.com/probonogeek/knockout-ace/blob/master/knockout-ace.js\r\n var instances_by_id = {} // needed for referencing instances during updates.\r\n , init_id = 0; // generated id increment storage\r\n\r\n ko.bindingHandlers.ace = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n\r\n var options = allBindingsAccessor().aceOptions || {};\r\n var value = ko.utils.unwrapObservable(valueAccessor());\r\n\r\n // Ace attaches to the element by DOM id, so we need to make one for the element if it doesn't have one already.\r\n if (!element.id) {\r\n element.id = 'knockout-ace-' + init_id;\r\n init_id = init_id + 1;\r\n }\r\n\r\n var editor = ace.edit(element.id);\r\n\r\n if (options.theme) editor.setTheme(\"ace/theme/\" + options.theme);\r\n if (options.mode) editor.getSession().setMode(\"ace/mode/\" + options.mode);\r\n if (options.readOnly) editor.setReadOnly(true);\r\n if (options.wrap) editor.setOption('wrap', options.wrap);\r\n if (options.hideGutter) editor.setOption('showGutter', false);\r\n if (options.hidePrintMargin) editor.setOption('showPrintMargin', false)\r\n\r\n editor.setValue(value);\r\n editor.gotoLine(0);\r\n\r\n editor.getSession().on(\"change\", function (delta) {\r\n if (ko.isWriteableObservable(valueAccessor())) {\r\n valueAccessor()(editor.getValue());\r\n }\r\n });\r\n\r\n instances_by_id[element.id] = editor;\r\n\r\n // destroy the editor instance when the element is removed\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n editor.destroy();\r\n delete instances_by_id[element.id];\r\n });\r\n },\r\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var value = ko.utils.unwrapObservable(valueAccessor());\r\n var id = element.id;\r\n\r\n //handle programmatic updates to the observable\r\n // also makes sure it doesn't update it if it's the same.\r\n // otherwise, it will reload the instance, causing the cursor to jump.\r\n if (id !== undefined && id !== '' && instances_by_id.hasOwnProperty(id)) {\r\n var editor = instances_by_id[id];\r\n var content = editor.getValue();\r\n if (content !== value) {\r\n editor.setValue(value);\r\n editor.gotoLine(0);\r\n }\r\n }\r\n }\r\n };\r\n\r\n ko.aceEditors = {\r\n resizeAll: function () {\r\n for (var id in instances_by_id) {\r\n if (!instances_by_id.hasOwnProperty(id)) continue;\r\n var editor = instances_by_id[id];\r\n editor.resize();\r\n }\r\n },\r\n get: function (id) {\r\n return instances_by_id[id];\r\n }\r\n };\r\n}());\r\n\r\n(function () {//binding handler for the SimpleMDE Editor. more info: https://simplemde.com/\r\n var instances_by_id = {} // needed for referencing instances during updates.\r\n , init_id = 0; // generated id increment storage\r\n\r\n ko.bindingHandlers.simpleMDE = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n\r\n var options = allBindingsAccessor().editorOptions || {};\r\n var value = ko.utils.unwrapObservable(valueAccessor());\r\n\r\n // Ace attaches to the element by DOM id, so we need to make one for the element if it doesn't have one already.\r\n if (!element.id) {\r\n element.id = 'knockout-simpleIDE-' + init_id;\r\n init_id = init_id + 1;\r\n }\r\n\r\n var initFunc = function () {\r\n var simpleMDEOptions = {\r\n element: document.getElementById(element.id),\r\n autoDownloadFontAwesome: false,\r\n status: [\"lines\", \"words\"]\r\n };\r\n\r\n if (options.placeholder) {\r\n simpleMDEOptions.placeholder = options.placeholder;\r\n }\r\n\r\n if (options.status === false) {\r\n simpleMDEOptions.status = options.status;\r\n }\r\n\r\n if (options.customToolbar !== true && options.showOnlyMergedSymbols != null && options.showOnlyMergedSymbols == true) {\r\n simpleMDEOptions.toolbar = ['|'];\r\n }\r\n else {\r\n if (options.customToolbar === true && options.toolbar) {\r\n simpleMDEOptions.toolbar = options.toolbar;\r\n }\r\n else {\r\n //default toolbar\r\n //we are customising this because SimpleMDE guys have not upgraded their plugin since 7 years\r\n //And font-awesome guys have changed some of their icon names foolishly\r\n simpleMDEOptions.toolbar = [\r\n {\r\n name: \"bold\",\r\n action: SimpleMDE.toggleBold,\r\n className: \"fa fa-bold\",\r\n title: \"Bold\"\r\n },\r\n {\r\n name: \"italic\",\r\n action: SimpleMDE.toggleItalic,\r\n className: \"fa fa-italic\",\r\n title: \"Italic\"\r\n },\r\n {\r\n name: \"heading\",\r\n action: SimpleMDE.toggleHeadingSmaller,\r\n className: \"fa fa-header\",\r\n title: \"Heading\"\r\n },\r\n \"|\",\r\n {\r\n name: \"quote\",\r\n action: SimpleMDE.toggleBlockquote,\r\n className: \"fa fa-quote-left\",\r\n title: \"Quote\"\r\n },\r\n {\r\n name: \"unordered-list\",\r\n action: SimpleMDE.toggleUnorderedList,\r\n className: \"fa fa-list-ul\",\r\n title: \"Generic List\"\r\n },\r\n {\r\n name: \"ordered-list\",\r\n action: SimpleMDE.toggleOrderedList,\r\n className: \"fa fa-list-ol\",\r\n title: \"Numbered List\"\r\n },\r\n \"|\",\r\n {\r\n name: \"link\",\r\n action: SimpleMDE.drawLink,\r\n className: \"fa fa-link\",\r\n title: \"Create Link\"\r\n },\r\n {\r\n name: \"image\",\r\n action: SimpleMDE.drawImage,\r\n className: \"fa fa-image\",\r\n title: \"Insert Image\"\r\n },\r\n \"|\",\r\n {\r\n name: \"preview\",\r\n action: SimpleMDE.togglePreview,\r\n className: \"fa fa-eye no-disable\",\r\n title: \"Toggle Preview\"\r\n },\r\n {\r\n name: \"side-by-side\",\r\n action: SimpleMDE.toggleSideBySide,\r\n className: \"fa fa-columns no-disable no-mobile\",\r\n title: \"Toggle Side by Side\"\r\n },\r\n {\r\n name: \"fullscreen\",\r\n action: SimpleMDE.toggleFullScreen,\r\n className: \"fa fa-arrows-alt no-disable no-mobile\",\r\n title: \"Toggle Fullscreen\"\r\n },\r\n \"|\",\r\n {\r\n name: \"guide\",\r\n action: \"https://simplemde.com/markdown-guide\",\r\n className: \"fa fa-question-circle\",\r\n title: \"Markdown Guide\"\r\n },\r\n ];\r\n }\r\n }\r\n\r\n var simpleMDE = new SimpleMDE(simpleMDEOptions);\r\n simpleMDE.value(value);\r\n\r\n simpleMDE.codemirror.on(\"change\", function () {\r\n if (ko.isWriteableObservable(valueAccessor())) {\r\n valueAccessor()(simpleMDE.value());\r\n }\r\n });\r\n\r\n instances_by_id[element.id] = simpleMDE;\r\n\r\n if (options.customToolbar !== true && options.noMergedSymbols !== true) {\r\n\r\n if (WCC.getKOData(\"MergeSymbols\") != null && WCC.getKOData(\"MergeSymbols\").length) { //Render out the merge symbol dropdown\r\n var mergeSymbolsSelectId = element.id + '-merge-symbols-select',\r\n mergeSymbolsSelectHtml = '';\r\n\r\n mergeSymbolsSelectHtml = mergeSymbolsSelectHtml.replace(\"{MERGESYMBOLS}\", WCC.getKOData(\"MergeSymbols\").map(function (m) { return \"\"; }).join(''));\r\n var mergeSymbolsSelect = $(mergeSymbolsSelectHtml);\r\n $(element).next('.editor-toolbar').append(mergeSymbolsSelect);\r\n\r\n $('#' + mergeSymbolsSelectId).select2().on('change', function () {\r\n var thisRef = $(this);\r\n\r\n if (WCC.isNullOrEmpty(thisRef.val())) {\r\n return;\r\n }\r\n var cm = simpleMDE.codemirror,\r\n selectedText = cm.getSelection(),\r\n text = selectedText || thisRef.val();\r\n\r\n cm.replaceSelection(text);\r\n });\r\n }\r\n }\r\n\r\n // destroy the editor instance when the element is removed\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n simpleMDE.toTextArea();\r\n simpleMDE = null;\r\n delete instances_by_id[element.id];\r\n });\r\n };\r\n\r\n if (options.delayInit) {\r\n setTimeout(function () {\r\n initFunc();\r\n }, options.delayInit);\r\n }\r\n else {\r\n initFunc();\r\n }\r\n },\r\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var value = ko.utils.unwrapObservable(valueAccessor());\r\n var id = element.id;\r\n\r\n //handle programmatic updates to the observable\r\n // also makes sure it doesn't update it if it's the same.\r\n // otherwise, it will reload the instance, causing the cursor to jump.\r\n if (id !== undefined && id !== '' && instances_by_id.hasOwnProperty(id)) {\r\n var simpleMDE = instances_by_id[id];\r\n var content = simpleMDE.value();\r\n if (content !== value) {\r\n simpleMDE.value(value);\r\n }\r\n }\r\n }\r\n }\r\n}());\r\n\r\nko.bindingHandlers.datePicker = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n //initialize datepicker with some optional options\r\n var options = allBindingsAccessor().datepickerOptions || { format: 'mm/dd/yyyy', inline: false };\r\n\r\n //options.autoclose = true;\r\n\r\n //if (allBindingsAccessor().noMonths) {\r\n // options.minView = 4;\r\n //}\r\n //else if (allBindingsAccessor().noDays) {\r\n // options.minView = 3;\r\n //}\r\n //else {\r\n // options.minView = 2;\r\n //}\r\n //options.startView = options.minView;\r\n\r\n $(element).datetimepicker(options);\r\n\r\n //when a user changes the date, update the view model\r\n //ko.utils.registerEventHandler(element, \"dp.change\", function (event) {\r\n // var value = valueAccessor();\r\n // if (ko.isObservable(value)) {\r\n // value(event.date);\r\n // }\r\n //});\r\n },\r\n update: function (element, valueAccessor) {\r\n var widget = $(element).data(\"DateTimePicker\");\r\n //when the view model is updated, update the widget\r\n if (widget) {\r\n var date = ko.utils.unwrapObservable(valueAccessor());\r\n widget.date(date);\r\n }\r\n }\r\n};\r\n\r\nko.bindingHandlers.datePicker332 = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n //initialize datepicker with some optional options\r\n var options = allBindingsAccessor().datepickerOptions || { format: 'DD/MM/YYYY HH:mm', inline: false };\r\n $(element).datetimepicker(options);\r\n\r\n //when a user changes the date, update the view model\r\n ko.utils.registerEventHandler(element, \"dp.change\", function (event) {\r\n var value = valueAccessor();\r\n if (ko.isObservable(value)) {\r\n if (event.date) {\r\n value(event.date.toDate());\r\n }\r\n else {\r\n value(null);\r\n }\r\n }\r\n });\r\n },\r\n update: function (element, valueAccessor) {\r\n var widget = $(element).data(\"DateTimePicker\");\r\n //when the view model is updated, update the widget\r\n if (widget) {\r\n var date = ko.utils.unwrapObservable(valueAccessor());\r\n widget.date(date);\r\n }\r\n }\r\n};\r\n\r\n//This binding is used with time selection control\r\nko.bindingHandlers.timeSelection = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var timeSelectionOptions = allBindingsAccessor().timeSelectionOptions,\r\n value = ko.utils.unwrapObservable(valueAccessor()),\r\n pOptions = {\r\n 'timeFormat': 'H:i',\r\n 'lang': {\r\n mins: WCC.Labels.MinutesShort,\r\n hr: WCC.Labels.HourShort,\r\n hrs: WCC.Labels.HoursShort\r\n }\r\n };\r\n\r\n if (timeSelectionOptions != null) {\r\n if (timeSelectionOptions.show2400) {\r\n pOptions.show2400 = true;\r\n }\r\n if (timeSelectionOptions.step) { //Time selection control doesn't work well with null values, hence copy the attributes if not null\r\n pOptions.step = timeSelectionOptions.step;\r\n }\r\n if (timeSelectionOptions.minTime) {\r\n pOptions.minTime = timeSelectionOptions.minTime\r\n }\r\n if (timeSelectionOptions.maxTime) {\r\n pOptions.maxTime = timeSelectionOptions.maxTime\r\n }\r\n else {\r\n if (pOptions.show2400) {\r\n pOptions.maxTime = \"24:00\";\r\n }\r\n else {\r\n pOptions.maxTime = \"23:59\"; //This will automatically round off to the nearest time depending on the allowed range\r\n }\r\n }\r\n if (timeSelectionOptions.showDuration) {\r\n pOptions.showDuration = timeSelectionOptions.showDuration;\r\n }\r\n }\r\n\r\n $(element).timepicker(pOptions);\r\n\r\n if (WCC.isNotNullOrEmpty(value)) {\r\n $(element).timepicker('setTime', value);\r\n }\r\n\r\n $(element).on('change', function () {\r\n valueAccessor()($(this).val());\r\n });\r\n\r\n $(element).on('changeTime', function () {\r\n valueAccessor()($(this).val());\r\n });\r\n },\r\n update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var value = ko.utils.unwrapObservable(valueAccessor());\r\n\r\n if (WCC.isNotNullOrEmpty(value)) {\r\n $(element).timepicker('setTime', value);\r\n }\r\n else {\r\n $(element).timepicker('setTime', null);\r\n }\r\n }\r\n}\r\n\r\nko.bindingHandlers.sparkline = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var $element = $(element),\r\n $window = $(window);\r\n\r\n var value = valueAccessor(),\r\n options = allBindingsAccessor()['sparkline-options'] || {};\r\n\r\n var build = function () {\r\n WCC.System.initSparkline($element, ko.unwrap(value), ko.unwrap(options));\r\n };\r\n\r\n var deferredBuild = _.debounce(build, 250);\r\n\r\n var processor = ko.computed(build).extend({ rateLimit: 250 });\r\n\r\n $window.on('resize', deferredBuild);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n processor.dispose();\r\n $window.off('resize', deferredBuild);\r\n });\r\n }\r\n};\r\n\r\n//This binding is used with time selection control\r\nko.bindingHandlers.highcharts = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var value = valueAccessor(),\r\n config = value.highchartsOptions;\r\n\r\n var processor = ko.computed(function () {\r\n var options = {\r\n chart: {\r\n type: ko.unwrap(config.chartType)\r\n },\r\n title: {\r\n text: ko.unwrap(config.title),\r\n y: 25,\r\n widthAdjust: -60\r\n },\r\n xAxis: {\r\n categories: ko.unwrap(config.categories)\r\n },\r\n yAxis: {\r\n min: 0,\r\n labels: {\r\n overflow: 'justify'\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n dataLabels: {\r\n enabled: true\r\n }\r\n }\r\n },\r\n exporting: {\r\n buttons: {\r\n contextButton: {\r\n align: 'left'\r\n }\r\n }\r\n },\r\n legend: {\r\n layout: 'vertical',\r\n align: 'right',\r\n verticalAlign: 'top',\r\n x: -40,\r\n y: 80,\r\n floating: true,\r\n borderWidth: 1,\r\n backgroundColor: Highcharts.theme && Highcharts.theme.legendBackgroundColor || '#FFFFFF',\r\n shadow: true\r\n },\r\n series: [{\r\n showInLegend: false,\r\n data: ko.unwrap(config.data)\r\n }],\r\n tooltip: ko.unwrap(config.tooltip) || {}\r\n };\r\n\r\n $(function () {\r\n $(element).highcharts(options);\r\n });\r\n });\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n processor.dispose();\r\n });\r\n }\r\n};\r\n\r\n//This binding is used with IntlTelInput\r\nko.bindingHandlers.intlTelInput = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n value = valueAccessor();\r\n\r\n var telOptions = {\r\n autoFormat: true,\r\n autoPlaceholder: false,\r\n numberType: 'MOBILE',\r\n initialCountry: 'auto',\r\n preferredCountries: ['au', 'gb', 'us']\r\n };\r\n\r\n $.extend(telOptions, value.options || {});\r\n\r\n eObj.intlTelInput(telOptions);\r\n \r\n var currentValue = viewModel[value.value]();\r\n\r\n if (WCC.isNotNullOrEmpty(currentValue)) {\r\n eObj.intlTelInput('setNumber', currentValue);\r\n if (viewModel != null && value.isValid != null) {\r\n viewModel[value.isValid] = eObj.intlTelInput(\"isValidNumber\"); \r\n }\r\n }\r\n },\r\n\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n value = valueAccessor();\r\n \r\n eObj.blur(function () {\r\n if ($.trim(eObj.val())) { \r\n viewModel[value.isValid] = eObj.intlTelInput(\"isValidNumber\");\r\n viewModel[value.value](eObj.intlTelInput(\"getNumber\"));\r\n \r\n if (value.numberChanged != null) {\r\n viewModel[value.numberChanged]();\r\n }\r\n }\r\n else {\r\n viewModel[value.value]('');\r\n }\r\n });\r\n }\r\n};\r\n\r\n//the binding handler for our Ideation Topic \r\nko.bindingHandlers.ideationTopicCanvas = {\r\n init: function (element, valueAccessor, allBinding, viewModel, bindingContext) {\r\n //var data = valueAccessor()\r\n\r\n\r\n\r\n //var drawIdeationData = function () {\r\n // if (element != null && element.getContext) {\r\n // //numeric seconds since midnight 1970 (UNIX timestamps)\r\n // var ideaCreationRangeAfter = data.ideaCreationRangeAfter().getTime();\r\n // var ideaCreationRangeBefore = data.ideaCreationRangeBefore().getTime();\r\n // var ideaRankingRangeAfter = data.ideaRankingRangeAfter().getTime();\r\n // var ideaRankingRangeBefore = data.ideaRankingRangeBefore().getTime();\r\n\r\n // element.width = element.clientWidth;\r\n // element.height = element.clientHeight;\r\n\r\n // if (element.clientWidth < 50) return;//less than 50px wide don't draw the chart thing\r\n\r\n // var ctx = element.getContext('2d');\r\n // var radius = 6;\r\n // var h = 20;//height of all our lines and center of all the circles\r\n // var c1 = 10;//position of circle 1 - 10px in from the left edge\r\n // var c2 = element.clientWidth / 2;//position of circle 2 - centre of the box\r\n // var c3 = element.clientWidth - 10;//position of circle 3 - 10 px in from the right edge\r\n // var line1Length = c2 - c1 - radius - radius;\r\n // var line2Length = c3 - c2 - radius - radius;\r\n // var fullCircle = 2 * Math.PI;\r\n // var creationText = WCC.getSetting('IdeaCreationText'); //'Idea Creation';\r\n // var rankingText = WCC.getSetting('IdeaRankingText');//'Idea Ranking';\r\n // var reviewText = WCC.getSetting('IdeaReviewText');//Idea Review\r\n // var resultsText = WCC.getSetting('IdeaResultsText'); //Idea Results\r\n // var textToDraw = 0;//0-Creation, 1-Review, 2-Review\r\n\r\n // //draw black background\r\n // ctx.beginPath();//start drawing\r\n // ctx.lineWidth = 3;//make it a fat line\r\n // ctx.strokeStyle = '#BFBFBF';\r\n // ctx.arc(c1, h, radius, 0, fullCircle, false);//start with a full circle, leaves cursor 10+radius,10\r\n // ctx.lineTo(c2 - radius, h);//draw a straight line from the right edge of circle 1 to the left edge of circle 2\r\n // ctx.moveTo(c2 + radius, h);//move over the circle so we don't fill in the middle with a line\r\n // ctx.arc(c2, h, radius, 0, fullCircle, false);//draw circle 2, start and finish at 3 o'clock\r\n // ctx.lineTo(c3 - radius, h);//draw a straight line from the right edge of circle 2 to the left edge of circle 3\r\n // ctx.moveTo(c3 + radius, h);//move over circle 3 to start drawing at the right edge\r\n // ctx.arc(c3, h, radius, 0, fullCircle, false);//draw circle 3\r\n // ctx.stroke();//commit\r\n\r\n // //now we can kick off some kind of animation or something for drawing where we are up to\r\n // //for now we just draw it out\r\n // var now = new Date().getTime();\r\n\r\n // if (now > ideaCreationRangeAfter) {//we are after the create start idea - draw our first circle all green\r\n // ctx.beginPath();//start drawing coloured stuff\r\n // ctx.lineWidth = 3;//make it a fat line\r\n // ctx.strokeStyle = '#00F81D';//use our green colour\r\n\r\n // ctx.moveTo(c1 + radius, h);//move to first circle\r\n // ctx.arc(c1, h, radius, 0, fullCircle, false);//draw it in full in green\r\n\r\n // if (ideaCreationRangeBefore > now) {//we are in the Creation period so we just want to draw our line\r\n // //work out how far we are in\r\n // var range = ideaCreationRangeBefore - ideaCreationRangeAfter;\r\n // var nowRange = now - ideaCreationRangeAfter;\r\n\r\n // var percent = (nowRange / range);\r\n\r\n // ctx.moveTo(c1 + radius, h);\r\n // ctx.lineTo(c1 + radius + (line1Length * percent), h);\r\n // textToDraw = 0;//creation stage\r\n // }\r\n // else {//we are past the close of the Create period\r\n // //just because we are past the Create Before date doesn't mean we are into the ranking stage.\r\n // //draw our first line in full in green. we definitely need the full first line in green\r\n // ctx.moveTo(c1 + radius, h);//first circle, right edge\r\n // ctx.lineTo(c1 + radius + line1Length, h);\r\n // textToDraw = 1;//review stage\r\n\r\n // if (now > ideaRankingRangeAfter) {//we are into the ranking stage \r\n // //middle circle is green\r\n // ctx.moveTo(c2 + radius, h);//move so we don't draw\r\n // ctx.arc(c2, h, radius, 0, fullCircle, false);//draw circle 2 fully in green\r\n\r\n // if (now > ideaRankingRangeBefore) {//we are done: \r\n // textToDraw = 3;//ranking stage\r\n // //second line fully in green\r\n // ctx.moveTo(c2 + radius, h);\r\n // ctx.lineTo(c3 - radius, h);\r\n\r\n // //draw the last circle green as well.\r\n // ctx.moveTo(c3 + radius, h);\r\n // ctx.arc(c3, h, radius, 0, fullCircle, false);\r\n // }\r\n // else {//we are in the middle of the ranking stage\r\n // //work out how far to draw the line\r\n // textToDraw = 2;//ranking stage\r\n // var range = ideaRankingRangeBefore - ideaRankingRangeAfter;\r\n // var nowRange = now - ideaRankingRangeAfter;\r\n\r\n // var percent = (nowRange / range);\r\n\r\n // ctx.moveTo(c2 + radius, h);\r\n // ctx.lineTo(c2 + radius + (line2Length * percent), h);\r\n // }\r\n // }\r\n // }\r\n\r\n // ctx.stroke();//commit coloured line\r\n\r\n // //now draw our text, we only draw one text string and position it over the stage\r\n // ctx.font = \"14px Helvetica Neue\";\r\n // ctx.fillStyle = '#000000;';\r\n // ctx.shadowOffsetX = 0;\r\n // ctx.shadowOffsetY = 0;\r\n // ctx.shadowBlur = 0;\r\n\r\n // if (textToDraw == 0) {//draw 'Idea Creation' on the left line\r\n // var textWidth = ctx.measureText(creationText).width;\r\n // ctx.fillText(creationText, c1 + (line1Length / 2) - (textWidth / 2), 10);\r\n // } else if (textToDraw == 1) {//draw 'Idea Review' over the middle circle\r\n // var textWidth = ctx.measureText(reviewText).width;\r\n // ctx.fillText(reviewText, (element.clientWidth / 2) - (textWidth / 2), 10);\r\n // } else if (textToDraw == 2) {//draw 'Idea Ranking' over the right line\r\n // var textWidth = ctx.measureText(rankingText).width;\r\n // ctx.fillText(rankingText, c2 + (line2Length / 2) - (textWidth / 2), 10);\r\n // } else if (textToDraw == 3) {\r\n // var textWidth = ctx.measureText(resultsText).width;\r\n // ctx.fillText(resultsText, c2 + (line2Length / 2) - (textWidth / 2), 10);\r\n // }\r\n // }\r\n\r\n // window.setTimeout(drawIdeationData, 1000);//draw every second\r\n // }//if the element is null we drop out and don't add the timeout again\r\n //};\r\n\r\n //drawIdeationData();//start it off\r\n\r\n //$(window).on('resize', function () {//also add an on-resize handle\r\n // drawIdeationData();\r\n //});\r\n }\r\n};\r\n\r\n//Extend ko objects with underscore functions\r\n_.extend(ko.subscribable.fn, _.chain(_.prototype).keys().filter(function (key) {\r\n //add function only if key in fn array is free\r\n //fn - array of ko objec methods\r\n return ko.subscribable.fn[key] == null;\r\n}).map(function (key) {\r\n var func = function () {\r\n var observable = this;\r\n\r\n var args = _(arguments).toArray();\r\n\r\n var result = ko.pureComputed(function () {\r\n var w = _(observable());\r\n return w[key].apply(w, args);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return [key, func];\r\n}).object().value());\r\n\r\nvar map = function (predicate, context) {\r\n predicate = predicate || _.identity;\r\n\r\n //var id = _.uniqueId('map-');\r\n\r\n var observable = this,\r\n buffer = ko.observableArray([]),\r\n result = ko.observableArray([]).extend({ deferred: true });\r\n\r\n var processChanges = function (changes) {\r\n //console.log(id, 'changes', changes);\r\n\r\n var oldResult = _.clone(result()),\r\n newResult = _.clone(result()),\r\n added = [],\r\n removed = [];\r\n\r\n _(changes).each(function (change) {\r\n if (change.status === 'added') {\r\n if (change.moved !== undefined) {\r\n added.push({ index: change.index, value: oldResult[change.moved] });\r\n removed.push({ index: change.moved });\r\n } else {\r\n added.push({ index: change.index, value: predicate.call(context, change.value, change.index) });\r\n }\r\n } else if (change.status === 'deleted' && change.moved === undefined) {\r\n removed.push({ index: change.index });\r\n }\r\n });\r\n\r\n _.chain(removed)\r\n .sortBy(function (change) { return -change.index })\r\n .each(function (change) { newResult.splice(change.index, 1) });\r\n\r\n _.chain(added)\r\n .sortBy('index')\r\n .each(function (change) { newResult.splice(change.index, 0, change.value) });\r\n\r\n result(newResult);\r\n\r\n //console.log('final result', result());\r\n //console.log('isValid', buffer().length === result().length);\r\n };\r\n\r\n return ko.pureComputed(function () {\r\n ko.ignoreDependencies(function (newList) {\r\n var oldList = buffer();\r\n\r\n buffer(_(newList).clone());\r\n\r\n //console.log('old', oldList);\r\n //console.log('new', newList);\r\n //console.log('result', result());\r\n\r\n var changes = ko.utils.compareArrays(oldList, newList, { 'sparse': true });\r\n processChanges(changes);\r\n }, null, [observable()]);\r\n\r\n return ko.ignoreDependencies(function () {\r\n return _.clone(result());\r\n });\r\n }, this);\r\n};\r\n\r\n\r\n\r\nvar not = function () {\r\n var observable = this;\r\n\r\n return ko.pureComputed(function () { return !observable() });\r\n};\r\n\r\nko.subscribable.fn.map = map;\r\n\r\nko.observableArray.fn.map = map;\r\nko.subscribable.fn.not = not;\r\n\r\nko.observableArray.fn.concat = function (arr) {\r\n var observable = this;\r\n\r\n return ko.pureComputed(function () {\r\n return _(observable()).concat(ko.unwrap(arr));\r\n });\r\n};\r\n\r\nko.subscribable.fn.each = function () {\r\n var observable = this,\r\n args = _(arguments).toArray();\r\n\r\n var result = ko.computed(function () {\r\n var w = _(observable());\r\n return w.each.apply(w, args);\r\n });\r\n\r\n return result;\r\n};\r\n\r\nko.subscribable.fn.toPOJO = function () {\r\n return ko.unwrap(this);\r\n}\r\n\r\nvar guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\r\nko.subscribable.fn.isGuid = function () {\r\n var observable = this;\r\n\r\n return ko.pureComputed(function () {\r\n var v = observable();\r\n\r\n return _(v).isString() && guidRegex.test(v);\r\n });\r\n}\r\n\r\nko.extenders.hasErrors = function (target) {\r\n target.error = ko.observable(null);\r\n target.isValid = target.error.mapSingle(function (err) { return err == null });\r\n target.hasError = target.isValid.not();\r\n target.scrollTo = ko.observable(false);\r\n}\r\n\r\nko.extenders.moment = function (target) {\r\n //create a writable computed observable to intercept writes to our observable\r\n var result = ko.pureComputed({\r\n read: target, //always return the original observables value\r\n write: function (newValue) {\r\n var current = target(),\r\n valueToWrite = moment(newValue);\r\n\r\n //only write if it changed\r\n if (valueToWrite !== current) {\r\n target(valueToWrite);\r\n }\r\n }\r\n }).extend({ notify: 'always' });\r\n\r\n //initialize with current value to make sure it is rounded appropriately\r\n result(target());\r\n\r\n //return the new computed observable\r\n return result;\r\n};\r\n\r\nko.subscribable.fn.shortcut = function (length, hard, fullwords) {\r\n const observable = this;\r\n\r\n return ko.pureComputed(() => {\r\n const content = observable();\r\n\r\n if (_.isString(content))\r\n return TextHelpers.shortcut(content, length, hard, fullwords);\r\n else\r\n return '';\r\n });\r\n}\r\n\r\nko.groups = function () {\r\n var groups = {}\r\n\r\n var Group = function (name) {\r\n var self = this,\r\n items = [];\r\n\r\n self.items = function () {\r\n var addItem = function (item) {\r\n if (!_(items).contains(item)) {\r\n items.push(item);\r\n }\r\n }\r\n\r\n return {\r\n add: addItem\r\n }\r\n }();\r\n\r\n self.dispose = function () {\r\n _(items).each(function (i) {\r\n if (i.dispose != null) { i.dispose(); }\r\n });\r\n\r\n items = [];\r\n }\r\n }\r\n\r\n var getGroup = function (name, createIfNotExists) {\r\n var createIfNotExists = createIfNotExists != null ? createIfNotExists : true;\r\n\r\n if (groups[name] == null && createIfNotExists) {\r\n groups[name] = new Group(name);\r\n }\r\n\r\n return groups[name];\r\n }\r\n\r\n return {\r\n get: getGroup\r\n }\r\n}();\r\n\r\nko.utils.disposeGroup = function (name) {\r\n var group = ko.groups.get(name, false);\r\n\r\n if (group != null) {\r\n group.dispose();\r\n }\r\n}\r\n\r\nvar _subscribe = ko.subscribable.fn.subscribe;\r\nko.subscribable.fn.subscribe = function () {\r\n var s = _subscribe.apply(this, arguments);\r\n\r\n s.register = function (name) {\r\n if (_(name).isArray()) {\r\n name.push(s);\r\n } else {\r\n ko.groups.get(name).items.add(s);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nko.subscribable.fn.register = function (name) {\r\n if (_(name).isArray()) {\r\n name.push(this);\r\n } else {\r\n ko.groups.get(name).items.add(this);\r\n }\r\n\r\n return this;\r\n}\r\n\r\nko.subscribable.fn.toUrl = function () {\r\n var observable = this;\r\n\r\n return ko.pureComputed(function () {\r\n var val = observable();\r\n\r\n return val ? 'url(\"' + val + '\")' : '';\r\n });\r\n}\r\n\r\nko.bindingHandlers.select2 = {\r\n //\r\n // NOTE: you must use at least select2-4.0.5 for this binding\r\n //\r\n init: function (el, valueAccessor, allBindingsAccessor, viewModel) {\r\n ko.utils.domNodeDisposal.addDisposeCallback(el, function () {\r\n $(el).select2('destroy');\r\n });\r\n\r\n var allBindings = allBindingsAccessor(),\r\n select2 = ko.utils.unwrapObservable(allBindings.select2),\r\n select2Events = ko.utils.unwrapObservable(allBindings.select2Events);\r\n\r\n var elObj = $(el);\r\n\r\n if (allBindings.defaultItems && allBindings.defaultItems.length > 0) {\r\n //console.log(allBindings.defaultItems);\r\n _.each(allBindings.defaultItems, function (data) {\r\n elObj.append(new Option(data, data, true, true));\r\n });\r\n //elObj.trigger('change');\r\n }\r\n\r\n elObj.select2(select2).on('select2:unselecting', e => {\r\n //e.preventDefault();\r\n _.defer(() => elObj.select2('close'))\r\n });\r\n \r\n if (select2Events != null) {\r\n for (const event in select2Events) {\r\n elObj.on(event, select2Events[event]); \r\n }\r\n }\r\n },\r\n update: function (el, valueAccessor, allBindingsAccessor, viewModel) {\r\n var allBindings = allBindingsAccessor();\r\n\r\n if (\"value\" in allBindings) {\r\n if (allBindings.select2.multiple && allBindings.value() && allBindings.value().constructor != Array) {\r\n $(el).val(allBindings.value().split(\",\"));\r\n }\r\n else {\r\n $(el).val(allBindings.value());\r\n }\r\n $(el).trigger('change');\r\n } else if (\"selectedOptions\" in allBindings) {\r\n var converted = [];\r\n //var textAccessor = function (value) { return value; };\r\n //if (\"optionsText\" in allBindings) {\r\n // textAccessor = function (value) {\r\n // var valueAccessor = function (item) { return item; }\r\n // if (\"optionsValue\" in allBindings) {\r\n // valueAccessor = function (item) { return item[allBindings.optionsValue]; }\r\n // }\r\n // var items = $.grep(allBindings.options(), function (e) { return valueAccessor(e) == value });\r\n // if (items.length == 0 || items.length > 1) {\r\n // return \"UNKNOWN\";\r\n // }\r\n // return items[0][allBindings.optionsText];\r\n // }\r\n //}\r\n $.each(allBindings.selectedOptions(), function (key, value) {\r\n converted.push(value);\r\n });\r\n\r\n $(el).val(converted);\r\n $(el).trigger('change');\r\n }\r\n }\r\n};\r\n\r\nko.bindingHandlers.ChoiceQuestionOptions = {\r\n processNewChoices: function (value) {\r\n //new magic now supports inserting choices.\r\n var numberValuesNeeded = false;\r\n\r\n return value.split('\\n').map(function (s, i) {\r\n\r\n if (!s || s.length <= 0) {\r\n return null;\r\n }\r\n\r\n var ret = {};\r\n\r\n if (s.indexOf('[') > -1 && s.indexOf(']') > -1) {\r\n var bStart = s.indexOf('['),\r\n bEnd = s.indexOf(']');\r\n if (bEnd - bStart > 1) {\r\n ret.choiceImage = s.substr(bStart + 1, bEnd - bStart - 1);\r\n s = s.replace('[' + ret.choiceImage + ']', '');\r\n }\r\n }\r\n\r\n var parts = s.split('||');\r\n var sLower = s.toLowerCase();\r\n\r\n //these two should really always be there and they MUST be first\r\n if (parts.length == 1) {\r\n ret.choiceText = parts[0];\r\n }\r\n else if (parts.length > 1) {\r\n var startsWithOldValueMatches = /^[\\d]+\\|\\|/.exec(s); //if we are editing choices, the old value must be there in the beginning\r\n\r\n if (startsWithOldValueMatches != null && startsWithOldValueMatches.length >= 1) {\r\n ret.oldValue = parts[0];\r\n ret.choiceText = parts[1];\r\n }\r\n else {\r\n ret.choiceText = parts[0];\r\n }\r\n }\r\n else {\r\n ret.choiceText = '';\r\n }\r\n\r\n var valueMatches = /\\(?(\\d+)\\)/g.exec(ret.choiceText);\r\n\r\n if (valueMatches != null && valueMatches.length >= 2) {\r\n ret.choiceValue = valueMatches[1];\r\n\r\n if (isNaN(ret.choiceValue)) {\r\n throw \"The data contains invalid choice values. Choices values must be numeric\";\r\n return;\r\n }\r\n\r\n ret.choiceText = ret.choiceText.replace(\"(\" + ret.choiceValue + \")\", \"\"); //strip number value\r\n\r\n if (i == 0) { //if it's first value, set validNumberValues to true\r\n numberValuesNeeded = true;\r\n }\r\n }\r\n else {\r\n ret.choiceValue = i + 1;\r\n\r\n if (i == 0) { //if it's first value, set validNumberValues to true\r\n numberValuesNeeded = false;\r\n }\r\n }\r\n\r\n if (i > 0) {\r\n if ((numberValuesNeeded == true && (valueMatches == null || valueMatches.length == 0)) || (numberValuesNeeded == false && (valueMatches != null && valueMatches.length > 0))) {\r\n throw \"You can't have some choices with values and some without values\";\r\n return;\r\n }\r\n }\r\n\r\n //now check the other options\r\n ret.isExclusive = /((?!\\d+)[^||]+)\\|\\|exclusive/.test(sLower); //Make sure that \"3||Exclusive choice' is not treated as an exclusive type and only '3||Exclusive choice||exclusive' is treated as an exclusive choice\r\n ret.isDefault = /((?!\\d+)[^||]+)\\|\\|default/.test(sLower); //Make sure that \"3||Default choice' is not treated as default choice type and only '3||Default choice||default' is treated as a default choice\r\n ret.isHidden = /((?!\\d+)[^||]+)\\|\\|hidden/.test(sLower); //Make sure that \"3||Hidden choice' is not treated as hidden choice type and only '3||Hidden choice||other' is treated as a hidden choice\r\n ret.isPinned = /((?!\\d+)[^||]+)\\|\\|pinned/.test(sLower); //Make sure that \"3||Pinned choice' is not treated as pinned choice type and only '3||Pinned choice||pinned' is treated as pinned choice\r\n ret.isNA = /((?!\\d+)[^||]+)\\|\\|notapplicable/.test(sLower); //Make sure that \"3||Choice Text' is not treated as na choice type and only '3||Choice Text||NotApplicable' is treated as na choice\r\n ret.isOther = /((?!\\d+)[^||]+)\\|\\|other/.test(sLower); //Make sure that \"3||other choice' is not treated as other choice type and only '3||other choice||other' is treated as other choice\r\n\r\n if (ret.choiceText.indexOf('::') != -1 && WCC.Tag) { //we have tag here\r\n var isAppliedOnThread = ret.choiceText.indexOf(':::') != -1; //':::' means the tag is applied both on person as well as thread\r\n\r\n var choiceTextParts = ret.choiceText.split(isAppliedOnThread ? ':::' : '::');\r\n ret.choiceText = choiceTextParts.length >= 1 ? choiceTextParts[0] : '';\r\n ret.dataTag = {\r\n TagValue: choiceTextParts[1],\r\n Visibility: WCC.Enums.ContentTagVisibilityType.AdministratorsOnly.value,\r\n SpecialType: isAppliedOnThread ? WCC.Enums.ContentTagSpecialType.ChoiceTagForThread.value : WCC.Enums.ContentTagSpecialType.None.value\r\n };\r\n }\r\n ret.choiceText = WCC.System.generateStringWithBasicFormattingTags(ret.choiceText); //strip html other than bold, italics and underlines\r\n return ret;\r\n }).filter(function (i) { return i != null; });//clean out any blank lines\r\n },\r\n\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {\r\n $(element).on('blur', function () {\r\n var allBindings = allBindingsAccessor();\r\n if (viewModel.showChoicesInTextArea != null) {\r\n viewModel.showChoicesInTextArea = false;\r\n }\r\n allBindings.ChoicesError(false);\r\n allBindings.ChoicesError.error('');\r\n\r\n var processedChoices = [];//these are the new choices in order that have been processed and should replace whatever we originally had in our question choices array\r\n\r\n //old/original choices as an array:\r\n var oldChoices = context.$data.choices();\r\n\r\n try {\r\n //turn whatever they typed in into a nice object \r\n var newChoices = ko.bindingHandlers.ChoiceQuestionOptions.processNewChoices(element.value);\r\n }\r\n catch (err) {\r\n allBindings.ChoicesError(true);\r\n allBindings.ChoicesError.error(err);\r\n return;\r\n }\r\n\r\n //go through everything they entered in one by one and match it up with what we used to have OR create a new one\r\n for (var iChoice = 0; iChoice < newChoices.length; iChoice++) {\r\n var c = newChoices[iChoice];\r\n\r\n //update their choice order to their new index/position\r\n c.choiceOrder = iChoice;//keep this starting at 0 cause you always send them all, no need to be tricky\r\n\r\n //check to see if there was already a choice with a matching value (compare against my old choice value in case it is being changed now)\r\n var originalChoice = $.grep(oldChoices, function (e) { return e.choiceValue == c.oldValue; });\r\n\r\n if (originalChoice && originalChoice.length == 1) {//we found one that matches\r\n originalChoice = originalChoice[0];//get our choice out. we really only want this for its id because we are updating it.\r\n\r\n c.profileQuestionChoiceId = originalChoice.profileQuestionChoiceId;//steal its id\r\n }\r\n\r\n c = new ApiProfileQuestionChoice(c, context.$data);\r\n\r\n if (c.choiceValue === null) {//no choice value, make sure this stays NULL after \r\n c.choiceValue = null;\r\n }\r\n\r\n processedChoices.push(c);\r\n }\r\n\r\n if (processedChoices && processedChoices.length > 0) {\r\n //now process any NEW choice values if they have not been set somehow (either by the user or by linking to existing choices as an update)\r\n\r\n //first get the biggest numeric value we have\r\n var nextChoiceValue = processedChoices.map(function (c) { return parseInt(c.choiceValue, 10); }).filter(function (c) { return !isNaN(parseInt(c, 10)); }).sort();\r\n\r\n if (nextChoiceValue && nextChoiceValue.length > 0) {//we found at least one value that is real\r\n nextChoiceValue = nextChoiceValue[nextChoiceValue.length - 1] + 1;\r\n }\r\n else {\r\n nextChoiceValue = 1;//we didnt find any values, they must ALL be new, start our values at 1\r\n }\r\n\r\n //now go through each question and set their value if they dont have one\r\n for (var iChoice = 0; iChoice < processedChoices.length; iChoice++) {\r\n var c = processedChoices[iChoice];\r\n\r\n if (c.choiceValue === null) {//choice value SHOULD be a number, if it is empty string then then are trying to add a new choice and didnt give it a value, fix it\r\n c.choiceValue = nextChoiceValue;\r\n nextChoiceValue++;\r\n }\r\n }\r\n }\r\n\r\n //now replace the choices array with this new processed one and we are done.\r\n context.$data.choices(processedChoices);//pass this new value (array) into the observable array to swap all its elements \r\n });\r\n },\r\n update: function (element, valueAccessor, allBindingsAccessor, viewModel) {\r\n if (viewModel.showChoicesInTextArea != null && viewModel.showChoicesInTextArea == false) { //don't update choices live in the editor\r\n viewModel.showChoicesInTextArea = true;\r\n }\r\n else {\r\n var choices = ko.unwrap(valueAccessor());//get our data (get the value not the observable)\r\n\r\n //process each choice turning it into a line of text.\r\n //add them all up\r\n //stuff them in the text box (element)\r\n if ($.isArray(choices)) {\r\n var newText = choices.map(function (i) {\r\n return i.toUserEditString();\r\n }).join('\\n');\r\n\r\n $(element).val(newText);\r\n }\r\n }\r\n }\r\n};\r\n\r\nko.bindingHandlers.limitCharacters = {\r\n update: function (element, valueAccessor, allBindingsAccessor, viewModel) {\r\n element.value = element.value.substr(0, valueAccessor());\r\n allBindingsAccessor().value(element.value.substr(0, valueAccessor()));\r\n }\r\n};\r\n\r\nko.bindingHandlers.enterkey = {\r\n init: function (element, valueAccessor, allBindings, viewModel) {\r\n var callback = valueAccessor();\r\n $(element).keypress(function (event) {\r\n var keyCode = (event.which ? event.which : event.keyCode);\r\n if (keyCode === 13) {\r\n callback.call(viewModel);\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n};\r\n\r\nko.bindingHandlers.maskedInput = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n options = allBindings().maskOptions || {},\r\n mask = options.mask || '';\r\n\r\n eObj.on('blur', function (event) {\r\n valueAccessor()(eObj.val()/*.replace('$ ', '')*/);\r\n });\r\n eObj.inputmask(mask);\r\n },\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n value = valueAccessor();\r\n eObj.val(value());\r\n }\r\n};\r\n\r\nko.extenders.numeric = function (target, options) {\r\n //create a writable computed observable to intercept writes to our observable\r\n var result = ko.pureComputed({\r\n read: target, //always return the original observables value\r\n write: function (newValue) {\r\n var current = target(),\r\n roundingMultiplier = Math.pow(10, options.precision),\r\n newValueAsNum = isNaN(newValue) ? 0 : +newValue,\r\n valueToWrite = Math.round(newValueAsNum * roundingMultiplier) / roundingMultiplier;\r\n\r\n if (typeof options.min != 'undefined' && valueToWrite < options.min) {\r\n valueToWrite = options.min;\r\n }\r\n if (typeof options.max != 'undefined' && valueToWrite > options.max) {\r\n valueToWrite = options.max;\r\n }\r\n\r\n //only write if it changed\r\n if (valueToWrite !== current) {\r\n target(valueToWrite);\r\n } else {\r\n //if the rounded value is the same, but a different value was written, force a notification for the current field\r\n if (newValue !== current) {\r\n target.notifySubscribers(valueToWrite);\r\n }\r\n }\r\n }\r\n }).extend({ notify: 'always' });\r\n\r\n //initialize with current value to make sure it is rounded appropriately\r\n result(target());\r\n\r\n //return the new computed observable\r\n return result;\r\n};\r\n\r\nko.bindingHandlers.marked = {\r\n update: function (element, valueAccessor, allBindingsAccessor) {\r\n var allBindings = allBindingsAccessor();\r\n var markdownBinding = allBindings.marked;\r\n\r\n var markdownData = ko.unwrap(markdownBinding);\r\n element.innerHTML = marked(markdownData);\r\n\r\n $(element).find('a').attr({ 'target': '_blank' });\r\n }\r\n};\r\n\r\nko.bindingHandlers.timeCircles = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var eObj = $(element),\r\n options = allBindings().timeCircles.timerOptions || {}\r\n\r\n var defaultOptions = {\r\n count_past_zero: false,\r\n time: {\r\n Days: { show: false },\r\n Hours: { show: false },\r\n Minutes: { show: false },\r\n Seconds: {\r\n show: true,\r\n text: \"\"\r\n }\r\n }\r\n };\r\n\r\n $.extend(defaultOptions, options);\r\n eObj.TimeCircles(defaultOptions);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n eObj.TimeCircles().destroy();\r\n });\r\n }\r\n};"],"sourceRoot":""}