{"version":3,"sources":["scripts/app.js"],"names":["angular","module","service","$q","$timeout","$injector","SignalRService","this","request","methodName","params","timeout","_","isString","reject","overrideService","isFunction","config","defaultMethod","hub","defaultEndpoint","requests","flushCache","serviceName","dfd","defer","promise","setup","args","copy","override","get","init","signalr","queueAction","action","options","method","endpoint","connect","directive","$rootScope","restrict","templateUrl","replace","scope","close","canvas","library","controller","$scope","$log","$filter","filterFilter","deselect","each","applets","a","selected","setCategories","categories","without","searchedCategories","sort","includes","category","applySearch","search","searchText","toLowerCase","searchedApplets","value","name","isDefined","description","reduce","result","applet","appletCategories","map","cat","find","id","union","getFilters","filter","indexOf","isUndefined","used","getApplets","duplicate","filterAll","filters","hashCode","str","hash","length","i","char","charCodeAt","setFallbackImages","fb","fallbackImages","index","Math","abs","count","fallbackImage","path","pattern","extension","info","arguments","open","mode","showApplets","$watchCollection","newValue","groupBy","$watch","setMode","setCategory","range","min","max","step","input","push","add","col","s","instance","prepareApplet","merge","ceil","random","o","layout","auto","select","toggle","link","element","resizable","minWidth","handles","startX","startY","dragThreshold","dropEnabled","onDragStart","useDragDrop","event","clientX","clientY","onDragMove","movement","effect","duration","easing","complete","show","$broadcast","onDragStop","attrs","bind","attr","fallbackSrc","isDisabled","onSave","froalaOptions","key","toolbarInline","toolbarVisibleWithoutSelection","charCounterCount","placeholderText","height","initialHeight","toolbarButtons","imageUploadParam","imageUploadURL","imageUploadParams","imageUploadMethod","imageMaxSize","imageDefaultWidth","imageManagerLoadUrl","imageManagerLoadParams","imageManagerDeleteUrl","imageManagerDeleteParams","editor","froalaEditor","editorData","data","save","html","callback","on","$on","off","log","newVal","resize","opts","$compile","template","context","canvasInstance","snakeCase","separator","SNAKE_CASE_REGEXP","letter","pos","findApplet","build","cmds","layoutSize","appletLookup","keyBy","c","cmd","width","style","error","compiled","join","empty","prepend","showMore","n","isObject","directiveName","replaceWith","factory","constructor","lastState","self","childScopes","addAppletScope","removeAppletScope","splice","reset","forEach","$destroy","store","items","item","originalItem","x","y","getResizedGridstackNodes","cached","some","notifyResized","nodes","node","_resizeApplet","onChange","configValues","$window","PositionTracker","SdkService","setConfig","extend","cellHeight","cellWidth","verticalMargin","extraWidth","notifyOnSave","notifyOnChange","autoSaver","beginSave","safeRemoveStyleOverride","styleOverrideTag","remove","applyCssOverride","elementId","horizontalMargin","createCssStyleOverride","appendTo","templateString","styleText","seMargin","runSuppressed","suppressToken","suppressChange","grid","batch_update","commit","presortApplets","layoutData","GridStackUI","Utils","sortedApplets","w","createAppletElement","appletData","childScope","isInGrid","container","suppressWatchApplets","performRemove","handle","remove_widget","tracker","then","filterClick","isSeamless","hideChrome","addClass","isBoolean","canResize","canMove","isFinite","maxWidth","minHeight","maxHeight","showFilterLink","checkSize","safeGetInnerSelector","innerSelector","outer","inner","updatedHeight","adjustHeight","countHandle","handleHeight","outerHeight","totalHeight","innerHeight","currentHeight","differenceHeight","transformHeight","updatedWidth","adjustWidth","outerWidth","widths","innerWidth","currentWidth","differenceWidth","transformWidth","_syncDataToApplet","h","handleMarkup","append","setLayout","addApplets","v","addApplet","$new","appletElement","add_widget","oldValue","manualResize","$apply","bindWatchApplets","appletsWatcher","oldVal","added","difference","removed","load","equals","val","controlId","tidyUp","_float","elements","get_dirty_nodes","trigger","isMobile","test","navigator","userAgent","vendor","opera","$watchGroup","configNull","canvasNull","disabled","disable","enable","getTimeout","defaultTimeout","configTimeout","parseInt","autoSaveTimeout","Number","isNaN","autoSave","token","cancelSave","cancel","containerElementId","gridStackOptions","cell_width","cell_height","vertical_margin","animate","float","draggable","scroll","always_show_resize_handle","$grid","gridstack","e","target","isNumber","clear","remove_all","onDropSuccess","obj","uniqueId","gridStackElement","$http","SignalRHub","hubs","signalRConfig","promises","attachHub","all","getName","warn","$cookies","$cacheFactory","loadScript","scriptLoaded","resolve","$","getScript","scriptUrl","done","registerHandlers","proxy","connection","reconnecting","_reconnect","reconnected","disconnected","reconnect","parameters","_argumentsAreValid","_generateCancellableDfd","cacheKey","objectHash","ServiceName","Parameters","cachedResponse","_loadLocalCachedData","servicePromise","server","message","__proto__","MessageId","Success","Cause","Value","CacheId","_loadServerCachedData","requestId","Date","now","hasTimeout","_requestPool","timeoutRequest","errorDetails","Timeout","RequestId","_cacheServerResponse","$$state","status","_cacheList","keys","cache","cacheId","url","cacheUrl","headers","Authorization","response","put","Error","isConnected","client","domainResult","$emit","calcResult","start","fail","when","requestDfdPromises","requestDfd","errors","currentRequests","removeAll","offset","cmsConfig","closest","size","run","$templateCache"],"mappings":"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","file":"scripts/app.js","sourcesContent":["angular.module('icSdkWeb', [\r\n 'ui.bootstrap',\r\n 'ngTouch',\r\n 'ngDragDrop',\r\n 'ngCookies',\r\n 'ngSanitize',\r\n 'dx'\r\n]);\r\n\n'use strict';\r\n\r\nangular.module('icSdkWeb').service('SdkService', function ($q, $timeout, $injector, SignalRService) {\r\n\r\n this.request = function (methodName, params, timeout) {\r\n \r\n if (!_.isString(methodName)) {\r\n return $q.reject('Method name is required and must be a string (SdkService.request)');\r\n }\r\n\r\n if (overrideService) {\r\n\r\n if (_.isFunction(overrideService[methodName])) {\r\n return overrideService[methodName](params);\r\n }\r\n\r\n if (_.isFunction(overrideService.request)) {\r\n return overrideService.request(methodName, params, timeout);\r\n }\r\n }\r\n\r\n if (config.defaultMethod === 'signalr') {\r\n return SignalRService.hub(config.defaultEndpoint).request(methodName, params, timeout); \r\n } else {\r\n return $q.reject('Not Implemented');\r\n }\r\n };\r\n\r\n this.requests = function (requests, timeout) {\r\n if (overrideService && _.isFunction(overrideService.requests)) {\r\n return overrideService.requests(requests, timeout);\r\n }\r\n\r\n if (config.defaultMethod === 'signalr') {\r\n return SignalRService.hub(config.defaultEndpoint).requests(requests, timeout);\r\n } else {\r\n return $q.reject('Not Implemented');\r\n }\r\n };\r\n\r\n this.flushCache = function (serviceName) {\r\n if (overrideService && _.isFunction(overrideService.flushCache)) {\r\n return overrideService.flushCache(serviceName);\r\n }\r\n\r\n if (config.defaultMethod === 'signalr') {\r\n return SignalRService.hub(config.defaultEndpoint).flushCache(serviceName);\r\n } else {\r\n var dfd = $q.defer();\r\n dfd.reject('Not Implemented');\r\n return dfd.promise;\r\n }\r\n };\r\n\r\n var overrideService = null,\r\n config;\r\n\r\n this.setup = function (args) {\r\n if (!args) {\r\n return;\r\n }\r\n\r\n config = angular.copy(args);\r\n\r\n if (_.isString(args.override)) {\r\n overrideService = $injector.get(args.override);\r\n }\r\n\r\n return SignalRService.init(args.signalr);\r\n };\r\n\r\n /**\r\n * Queued Action function\r\n *\r\n * @description\r\n * Waits for connection to complete, or executes immediately on the default method and endpoint\r\n *\r\n *\r\n * @param {action} a function representing the action to beform after connected\r\n * @param {options} specify method (signalR) and endpoint (navy/pwp).\r\n * @return {promise} Returns a promise that will complete once the endpoint is connected.\r\n */\r\n this.queueAction = function (action, options) {\r\n\r\n var method = (options && options.method) \r\n ? options.method \r\n : config.defaultMethod;\r\n\r\n var endpoint = (options && options.endpoint)\r\n ? options.endpoint\r\n : config.defaultEndpoint;\r\n\r\n if (method === 'signalr') {\r\n return SignalRService.hub(endpoint)\r\n .queueAction(action);\r\n }\r\n\r\n return $q.reject('Only SignalR is currently support for queueAction');\r\n };\r\n\r\n this.connect = function () {\r\n return SignalRService.connect();\r\n }\r\n});\n'use strict';\r\n\r\nangular.module('icSdkWeb').directive('appletlibrary', function ($rootScope, $timeout) {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/library/library.html',\r\n replace: true,\r\n scope: {\r\n close: '&onClose',\r\n canvas: '=',\r\n library: '='\r\n },\r\n controller: function ($scope, $log, $filter, filterFilter) {\r\n $log.info('controller', arguments);\r\n\r\n $scope.library = $scope.library || { categories: [], applets: [], used: {}, fallbackImages: {} };\r\n $scope.searchedApplets = null;\r\n $scope.searchedCategories = null;\r\n $scope.searchText = '';\r\n $scope.open = false;\r\n $scope.mode = 'applets';\r\n $scope.showApplets = true;\r\n\r\n function deselect() {\r\n _.each($scope.library.applets, function (a) {\r\n a.selected = false;\r\n });\r\n }\r\n\r\n function setCategories() {\r\n $scope.categories = _.without($scope.searchedCategories || $scope.library.categories, 'Filter').sort();\r\n if (!_.includes($scope.categories, $scope.category)) {\r\n $scope.category = $scope.categories[0];\r\n }\r\n }\r\n\r\n function applySearch() {\r\n var search = $scope.searchText || $scope.searchText.toLowerCase();\r\n\r\n // If no longer searching clear collections\r\n if (search === '') {\r\n $scope.searchedApplets = null;\r\n $scope.searchedCategories = null;\r\n return;\r\n }\r\n\r\n $scope.searchedApplets = filterFilter($scope.library.applets, function (value) {\r\n return _.includes(value.name.toLowerCase(), search) ||\r\n (angular.isDefined(value.description) ? _.includes(value.description.toLowerCase(), search) : false);\r\n });\r\n\r\n $scope.searchedCategories = _.reduce($scope.searchedApplets, function (result, applet) {\r\n\r\n var appletCategories = _.map(applet.categories, function (cat) {\r\n return _.find($scope.library.categories, { id: cat });\r\n });\r\n\r\n return _.union(result, appletCategories);\r\n }, []);\r\n }\r\n\r\n function getFilters() {\r\n return _.filter($scope.searchedApplets || $scope.library.applets, function (a) {\r\n return _.indexOf(a.categories, 'filter') !== -1 && (angular.isUndefined($scope.library.used[a.id]));\r\n });\r\n }\r\n\r\n function getApplets() {\r\n return _.filter($scope.searchedApplets || $scope.library.applets, function (a) {\r\n return _.indexOf(a.categories, 'filter') === -1 && \r\n (_.indexOf(a.categories, $scope.category.id) !== -1) && \r\n (angular.isUndefined($scope.library.used[a.id]) || a.duplicate);\r\n });\r\n }\r\n\r\n function filterAll() {\r\n $scope.applets = getApplets();\r\n $scope.filters = getFilters();\r\n }\r\n\r\n function hashCode(str) {\r\n var hash = 0;\r\n if (str.length === 0) {\r\n return hash;\r\n }\r\n\r\n for (var i = 0; i < str.length; i++) {\r\n var char = str.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + char;\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n return hash;\r\n }\r\n\r\n function setFallbackImages() {\r\n var fb = $scope.library.fallbackImages;\r\n if (angular.isUndefined(fb)) {\r\n return;\r\n }\r\n\r\n _.each($scope.library.applets, function (a) {\r\n var index = Math.abs(hashCode(a.name)) % fb.count;\r\n a.fallbackImage = fb.path + \"/\" + fb.pattern + index + \".\" + fb.extension;\r\n });\r\n }\r\n\r\n $scope.$watchCollection('canvas.applets', function (newValue) {\r\n $scope.library.used = _.groupBy(newValue, 'id');\r\n filterAll();\r\n });\r\n\r\n $scope.$watch('library', function (newValue) {\r\n if (typeof newValue === 'undefined') {\r\n return;\r\n }\r\n\r\n setFallbackImages();\r\n setCategories();\r\n filterAll();\r\n });\r\n\r\n $scope.$watch('searchText', function () {\r\n applySearch();\r\n\r\n setCategories();\r\n filterAll();\r\n });\r\n\r\n deselect();\r\n setCategories();\r\n\r\n $scope.setMode = function (mode) {\r\n $scope.mode = mode;\r\n\r\n if (mode === 'filters') {\r\n $scope.showApplets = false;\r\n } else if (mode === 'applets') {\r\n $scope.showApplets = true;\r\n }\r\n };\r\n\r\n $scope.setCategory = function (cat) {\r\n $scope.category = cat;\r\n filterAll();\r\n };\r\n\r\n $scope.range = function (min, max, step) {\r\n step = step || 1;\r\n var input = [];\r\n for (var i = min; i <= max; i += step) {\r\n input.push(i);\r\n }\r\n return input;\r\n };\r\n\r\n $scope.add = function () {\r\n var col = $scope.mode === 'applets' ? $scope.applets : $scope.filters;\r\n var selected = _.filter(col, 'selected', true);\r\n\r\n _.each(selected, function (s) {\r\n var instance = $scope.prepareApplet(s);\r\n $scope.canvas.applets.push(instance);\r\n });\r\n\r\n deselect();\r\n };\r\n\r\n $scope.prepareApplet = function (s) {\r\n var instance = angular.merge({}, s);\r\n if (s.duplicate) {\r\n instance.id = Math.ceil(Math.random() * 10000);\r\n }\r\n\r\n // Strip tags that should not be part of the instance\r\n _.each(['image', 'description', 'category', 'duplicate', 'fallbackImage', 'selected'], function (o) {\r\n delete instance[o];\r\n });\r\n\r\n instance.layout.auto = true;\r\n\r\n return instance;\r\n };\r\n\r\n $scope.select = function (a) {\r\n a.selected = !a.selected;\r\n };\r\n\r\n $scope.toggle = function () {\r\n $scope.open = !$scope.open;\r\n };\r\n },\r\n link: function ($scope, element) {\r\n\r\n element.find('.right').resizable({\r\n minWidth: 260,\r\n handles: 'e'\r\n });\r\n\r\n // used to determine if element moved past a given amount\r\n var startX = null;\r\n var startY = null;\r\n\r\n //# of pixels the item must move before applet library hides.\r\n var dragThreshold = 100;\r\n\r\n // After hiding element, set to prevent move event from many slide operations.\r\n // Drop is only enabled after moving past threshold\r\n // Is it disabled again after a drop.\r\n var dropEnabled = false;\r\n\r\n $scope.onDragStart = function () {\r\n if ($scope.library.config.useDragDrop) {\r\n startX = event.clientX;\r\n startY = event.clientY;\r\n }\r\n };\r\n\r\n $scope.onDragMove = function (event) {\r\n if ($scope.library.config.useDragDrop) {\r\n\r\n if (dropEnabled) {\r\n return;\r\n }\r\n\r\n var movement = Math.max(\r\n Math.abs(event.clientX - startX),\r\n Math.abs(event.clientY - startY)\r\n );\r\n\r\n if (movement > dragThreshold) {\r\n dropEnabled = true; \r\n element.toggle({ \r\n effect: 'slide', \r\n duration: 400,\r\n easing: 'swing',\r\n complete: function () {\r\n // If they complete drag while library is sliding out, we may need to \r\n // show again right away.\r\n if (!dropEnabled) {\r\n element.show();\r\n }\r\n }\r\n });\r\n\r\n $rootScope.$broadcast('appletlibrary:enableDrop');\r\n }\r\n }\r\n };\r\n\r\n $scope.onDragStop = function () {\r\n if ($scope.library.config.useDragDrop) {\r\n element.show();\r\n dropEnabled = false;\r\n\r\n // Give success a chance to fire, then disable right away.\r\n $timeout(function () {\r\n $rootScope.$broadcast('appletlibrary:disableDrop');\r\n }, 0);\r\n }\r\n };\r\n }\r\n };\r\n});\n'use strict';\r\n\r\nangular.module('icSdkWeb').directive('fallbackSrc', function () {\r\n return {\r\n link: function postLink(scope, element, attrs) {\r\n element.bind('error', function () {\r\n if (element.attr('src') !== attrs.fallbackSrc) {\r\n element.attr('src', attrs.fallbackSrc);\r\n }\r\n });\r\n }\r\n };\r\n});\n'use strict';\r\n\r\nangular.module('icSdkWeb').directive('icCms', function ($timeout, $log) {\r\n return {\r\n templateUrl: 'app/components/cms/cms.html',\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n isDisabled: '=',\r\n onSave: '&',\r\n config: '=?'\r\n },\r\n link: function postLink($scope, element) {\r\n\r\n $scope.config = $scope.config || {};\r\n\r\n $scope.froalaOptions = {\r\n\t\t\t\tkey: 'lJCJWECHICc2JOZWJ==',\r\n\r\n // Inline toolbar so it appears on click only\r\n toolbarInline: true,\r\n\r\n // Allow toolbar to show when clicking and not selecting text.\r\n toolbarVisibleWithoutSelection: true,\r\n\r\n // Disable character counter\r\n charCounterCount: false,\r\n\r\n placeholderText: 'Please enter your text here...',\r\n\r\n // Initial height\r\n height: $scope.config.initialHeight,\r\n\r\n toolbarButtons: ['bold', 'italic', 'strikeThrough', 'underline', '-',\r\n 'fontFamily', 'paragraphFormat', 'align', 'formatOL', 'formatUL', 'indent', 'outdent', '-',\r\n 'insertImage', 'insertLink', 'insertVideo', 'html'],\r\n\r\n // Set the image upload parameter.\r\n imageUploadParam: 'file',\r\n\r\n // Set the image upload URL.\r\n imageUploadURL: $scope.config.imageUploadURL,\r\n\r\n // Additional upload params.\r\n imageUploadParams: $scope.config.imageUploadParams,\r\n\r\n // Set request type.\r\n imageUploadMethod: 'POST',\r\n\r\n // Set max image size to 5MB.\r\n imageMaxSize: 5 * 1024 * 1024,\r\n\r\n // Not set any width by default\r\n imageDefaultWidth: 0,\r\n\r\n // Load URL for the gallery\r\n imageManagerLoadUrl: $scope.config.imageManagerLoadUrl,\r\n imageManagerLoadParams: $scope.config.imageManagerLoadParams,\r\n imageManagerDeleteUrl: $scope.config.imageManagerDeleteUrl,\r\n imageManagerDeleteParams: $scope.config.imageManagerDeleteParams\r\n };\r\n\r\n var editor = element.find('textarea').froalaEditor($scope.froalaOptions);\r\n var editorData = editor.data('froala.editor');\r\n\r\n var save = function () {\r\n var html = editor.froalaEditor('html.get');\r\n\r\n if (html == $scope.config.html) {\r\n $log.info(\"no change in html\");\r\n return;\r\n }\r\n\r\n $scope.config.html = html;\r\n var callback = $scope.onSave();\r\n\r\n if (_.isFunction(callback)) {\r\n callback(html);\r\n }\r\n };\r\n\r\n editor.on('froalaEditor.blur', function () {\r\n save();\r\n });\r\n\r\n editor.on('froalaEditor.image.inserted', function () {\r\n save();\r\n });\r\n\r\n $scope.$on('$destroy', function () {\r\n element.off(['blur', 'focus']);\r\n element.froalaEditor('destroy');\r\n });\r\n\r\n $scope.$watch('isDisabled', function () {\r\n\r\n if (_.isUndefined($scope.isDisabled)) {\r\n return;\r\n }\r\n\r\n $log.log('disabled editor', $scope.isDisabled);\r\n\r\n\t\t\t\tif ($scope.isDisabled) {\r\n\t\t\t\t\teditor.froalaEditor('edit.off');\r\n\t\t\t\t\teditor.froalaEditor('placeholder.hide');\r\n\t\t\t\t} else {\r\n\t\t\t\t\teditor.froalaEditor('edit.on');\r\n\t\t\t\t\tif ($scope.config.html == '') {\r\n\t\t\t\t\t\teditor.froalaEditor('placeholder.show');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n });\r\n\r\n $scope.$watch('config.html', function (newVal) {\r\n editor.froalaEditor('html.set', newVal || '');\r\n });\r\n\r\n $scope.config.resize = function (height) {\r\n editorData.opts.height = height;\r\n editor.froalaEditor('size.refresh');\r\n }\r\n }\r\n };\r\n});\r\n\r\n\r\n\n'use strict';\r\n\r\nangular.module('icSdkWeb')\r\n.directive('icCanvasNatural', function ($log, $compile) {\r\n return {\r\n template: '
',\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n canvas: '=',\r\n context: '=',\r\n canvasInstance: '=?'\r\n },\r\n controller: function () {\r\n },\r\n link: function ($scope, element) {\r\n $scope.showMore = false;\r\n $scope.toggle = function () {\r\n $scope.showMore = !$scope.showMore;\r\n }\r\n\r\n var SNAKE_CASE_REGEXP = /[A-Z]/g;\r\n function snakeCase(name) {\r\n var separator = '-';\r\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n function findApplet(id) {\r\n return _.find($scope.canvas.applets, { id: id });\r\n }\r\n\r\n $scope.findApplet = findApplet;\r\n\r\n function build() {\r\n var html = [];\r\n var config = $scope.canvas.config;\r\n var cmds = $scope.canvas.layout[config.layout];\r\n if (config.layout == 'responsive') {\r\n cmds = cmds[config.layoutSize];\r\n }\r\n //var cmds = $scope.canvas.layout.natural;\r\n $scope.appletLookup = _.keyBy($scope.canvas.applets, 'id');\r\n for (var i = 0; i < cmds.length; i++) {\r\n var c = cmds[i];\r\n switch (c.cmd) {\r\n case 'colStart':\r\n html.push('
');\r\n break;\r\n case 'colEnd':\r\n html.push('
');\r\n break;\r\n case 'applet':\r\n var a = findApplet(c.id);\r\n html.push('
')\r\n break;\r\n default:\r\n $log.error('Unknown layout command', c);\r\n break;\r\n }\r\n\r\n }\r\n var compiled = $compile(html.join(''))($scope);\r\n element.empty().prepend(compiled);\r\n }\r\n\r\n $scope.$watch('canvas', function (n, o) {\r\n if (n !== o) {\r\n build();\r\n }\r\n });\r\n\r\n $scope.$watch('canvas.config.layoutSize', function (n, o) {\r\n if (n !== o) {\r\n build();\r\n }\r\n });\r\n\r\n if (_.isObject($scope.canvasInstance)) {\r\n $scope.canvasInstance = $scope;\r\n }\r\n\r\n build();\r\n }\r\n }\r\n});\r\n\r\n\n'use strict';\r\n\r\nangular.module('icSdkWeb').directive('applettemplate', function ($compile) {\r\n\r\n var SNAKE_CASE_REGEXP = /[A-Z]/g;\r\n function snakeCase(name) {\r\n var separator = '-';\r\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n return {\r\n template: '
',\r\n restrict: 'E',\r\n replace: true,\r\n scope: false,\r\n link: function ($scope, element) {\r\n\r\n if (!$scope.applet || !$scope.applet.template) {\r\n return;\r\n }\r\n\r\n var directiveName = 'applet-' + snakeCase($scope.applet.template);\r\n var template = '<' + directiveName + ' applet=\"applet\" context=\"context\" on=\"on\" check-size=\"checkSize\" class=\"applet-innercontainer\" is-disabled=\"isDisabled\" />';\r\n var compiled = $compile(template)($scope);\r\n\r\n element.replaceWith(compiled);\r\n }\r\n };\r\n});\r\n\n'use strict';\r\n\r\n// Constructor that instantiates an object matching the correct interface for applets.\r\nangular.module('icSdkWeb').factory('PositionTracker', function () {\r\n var constructor = function () {\r\n var self = this,\r\n lastState,\r\n childScopes = [];\r\n\r\n this.addAppletScope = function (scope) {\r\n childScopes.push(scope);\r\n };\r\n\r\n this.removeAppletScope = function (scope) {\r\n childScopes.splice(childScopes.indexOf(scope), 1);\r\n };\r\n\r\n // Only call this if the corresponding elements are also being REMOVED from the grid\r\n // or else all the scopes will be destroyed!\r\n this.reset = function () {\r\n _.forEach(childScopes, function (scope) {\r\n scope.$destroy();\r\n });\r\n\r\n childScopes = [];\r\n lastState = null;\r\n };\r\n\r\n this.store = function (items) {\r\n if (!items) {\r\n return;\r\n }\r\n\r\n lastState = _.map(items, function (item) {\r\n return {\r\n originalItem: item,\r\n x: item.x,\r\n y: item.y,\r\n height: item.height,\r\n width: item.width\r\n };\r\n });\r\n };\r\n\r\n this.getResizedGridstackNodes = function (items) {\r\n if (!lastState) {\r\n return [];\r\n }\r\n\r\n return _(lastState).filter(function (cached) {\r\n return _.some(items, function (item) {\r\n return (item === cached.originalItem) && ((cached.height !== item.height) || (cached.width !== item.width));\r\n });\r\n })\r\n .map(function (cached) {\r\n return cached.originalItem;\r\n })\r\n .value();\r\n };\r\n\r\n this.notifyResized = function (items) {\r\n var nodes = self.getResizedGridstackNodes(items);\r\n\r\n _.forEach(nodes, function (node) {\r\n node._resizeApplet();\r\n });\r\n };\r\n };\r\n\r\n return constructor;\r\n});\r\n\n'use strict';\r\n\r\nangular.module('icSdkWeb').directive('appletcontent', function () {\r\n return {\r\n templateUrl: 'app/components/canvas/interactive/content/content.html',\r\n restrict: 'E',\r\n replace: true,\r\n scope: false,\r\n link: function () {\r\n\r\n }\r\n };\r\n});\r\n\n'use strict';\r\n\r\nangular.module('icSdkWeb')\r\n.directive('icCanvasInteractive', function () {\r\n return {\r\n templateUrl: 'app/components/canvas/interactive/canvas-interactive.html',\r\n restrict: 'E',\r\n replace: true,\r\n scope: {\r\n canvas: '=',\r\n context: '=',\r\n onSave: '&', // deprecated\r\n onChange: '&',\r\n configValues: '=?config', // Alias to use $scope.config internally, allowing override without affecting object passed\r\n canvasInstance: '=?'\r\n },\r\n controller: function ($scope, $compile, $timeout, $log, $window, PositionTracker, SdkService) {\r\n\r\n var suppressChange = [], // If any suppress call is running, gridstack.change will not notify or fire save.\r\n grid; // Gridstack object\r\n\r\n var tracker = new PositionTracker();\r\n\r\n function setConfig() {\r\n $scope.config = angular.extend({\r\n cellHeight: 40,\r\n cellWidth: 40,\r\n verticalMargin: 20,\r\n extraWidth: 20\r\n }, $scope.configValues || {});\r\n }\r\n\r\n // Apply some default values to config.\r\n setConfig();\r\n\r\n $log.info('config', $scope.config);\r\n\r\n $scope.$watch('configValues', function (newVal, oldVal) {\r\n\r\n if (angular.equals(newVal, oldVal)) {\r\n return;\r\n }\r\n\r\n $log.info('configValues changed');\r\n setConfig();\r\n }, true);\r\n\r\n $scope.$on('canvas:tidyUp', function (event, val) {\r\n\r\n // If value was provided, only respond if it matches a control Id.\r\n if (!val || (!!val && (val === $scope.config.controlId))) {\r\n $scope.tidyUp();\r\n }\r\n\r\n });\r\n $scope.tidyUp = function () {\r\n\r\n if (!$scope.config || !$scope.config.float) {\r\n return;\r\n }\r\n\r\n grid.batch_update();\r\n grid.opts.float = false;\r\n grid.grid._float = false;\r\n grid.commit();\r\n grid.batch_update();\r\n grid.opts.float = true;\r\n grid.grid._float = true;\r\n grid.commit();\r\n var elements = grid.grid.get_dirty_nodes();\r\n if (elements && elements.length) {\r\n grid.container.trigger('change', [elements]);\r\n }\r\n };\r\n\r\n var isMobile = function () {\r\n return (/Android|iPhone|iPad|iPod|BlackBerry/i).test(navigator.userAgent || navigator.vendor || $window.opera);\r\n };\r\n\r\n // places 'is-mobile' class on grid-stack element.\r\n $scope.isMobile = isMobile();\r\n\r\n // three way Boolean\r\n $scope.isDisabled = null;\r\n\r\n // $scope.config.isDisabled is set on the directive\r\n // canvas.config.isDisabled is data passed in\r\n // If Either is disabled, the entire canvas is disabled and children should propogate\r\n $scope.$watchGroup(['config.isDisabled', 'canvas.config.isDisabled'], function () {\r\n\r\n // If none are \"set\" leave null\r\n var configNull = !$scope.config || !_.isBoolean($scope.config.isDisabled);\r\n var canvasNull = !$scope.canvas || !$scope.canvas.config || !_.isBoolean($scope.canvas.config.isDisabled);\r\n\r\n if (canvasNull && configNull) {\r\n $scope.isDisabled = null;\r\n return;\r\n }\r\n\r\n // If either is true, set true\r\n $scope.isDisabled = $scope.config.isDisabled || ($scope.canvas && $scope.canvas.config && $scope.canvas.config.isDisabled);\r\n });\r\n\r\n $scope.$watch('isDisabled', function (disabled) {\r\n if (disabled) {\r\n grid.disable();\r\n } else {\r\n grid.enable();\r\n }\r\n });\r\n\r\n /// Deprecated. called at same time as onChange for compatibility.\r\n function notifyOnSave() {\r\n var callback = $scope.onSave();\r\n if (_.isFunction(callback)) {\r\n $log.info('onSave deprecated: Use onAutoSave for saves, or onChange for every change. onChange and onSave are currently equivalent');\r\n callback($scope.canvas);\r\n }\r\n }\r\n\r\n function notifyOnChange() {\r\n // Maintain compatibility for now.\r\n notifyOnSave();\r\n var callback = $scope.onChange();\r\n if (_.isFunction(callback)) {\r\n callback($scope.canvas);\r\n }\r\n\r\n autoSaver.beginSave();\r\n }\r\n\r\n // TODO: refactor into factory\r\n var autoSaver = (function() {\r\n\r\n var token;\r\n\r\n function getTimeout() {\r\n var defaultTimeout = 5000;\r\n var configTimeout = parseInt($scope.config.autoSaveTimeout, 10);\r\n\r\n return Number.isNaN(configTimeout)\r\n ? defaultTimeout\r\n : configTimeout;\r\n }\r\n\r\n function beginSave() {\r\n\r\n // check if enable and prevent multiple saves building up.\r\n if (!$scope.config.autoSave || token) {\r\n return;\r\n }\r\n\r\n\r\n\r\n token = $timeout(function () {\r\n SdkService.request('saveCanvas', $scope.canvas);\r\n token = null;\r\n }, getTimeout());\r\n }\r\n\r\n function cancelSave() {\r\n $timeout.cancel(token);\r\n }\r\n\r\n return {\r\n beginSave: beginSave,\r\n cancelSave: cancelSave\r\n };\r\n\r\n }());\r\n\r\n var styleOverrideTag = null;\r\n\r\n $scope.$on('$destroy', function () {\r\n safeRemoveStyleOverride();\r\n });\r\n\r\n function safeRemoveStyleOverride() {\r\n if (styleOverrideTag) {\r\n styleOverrideTag.remove();\r\n styleOverrideTag = null;\r\n }\r\n }\r\n\r\n function applyCssOverride(elementId, horizontalMargin) {\r\n\r\n safeRemoveStyleOverride();\r\n\r\n styleOverrideTag = createCssStyleOverride(elementId, horizontalMargin);\r\n\r\n styleOverrideTag.appendTo('head');\r\n }\r\n\r\n function createCssStyleOverride(elementId, horizontalMargin) {\r\n\r\n var templateString = '';\r\n\r\n templateString += '#<%= elementId %> .grid-stack .grid-stack-item .grid-stack-item-content {';\r\n templateString += ' margin: 0 <%= horizontalMargin %>px;';\r\n templateString += '}';\r\n templateString += '#<%= elementId %> .grid-stack .grid-stack-item .ui-resizable-e {';\r\n templateString += ' right: <%= horizontalMargin %>px;';\r\n templateString += '}';\r\n templateString += '#<%= elementId %> .grid-stack .grid-stack-item .ui-resizable-se {';\r\n templateString += ' right: <%= seMargin %>px;';\r\n templateString += '}';\r\n templateString += '#<%= elementId %> .grid-stack .grid-stack-item .ui-resizable-sw {';\r\n templateString += ' left: <%= horizontalMargin %>px;';\r\n templateString += '}';\r\n templateString += '#<%= elementId %> .grid-stack .grid-stack-item .ui-resizable-w {';\r\n templateString += ' left: <%= horizontalMargin %>px;';\r\n templateString += '}';\r\n templateString += '#<%= elementId %> .grid-stack-item-handle {';\r\n templateString += ' left: <%= horizontalMargin %>px;';\r\n templateString += ' right: <%= horizontalMargin %>px;';\r\n templateString += '}';\r\n\r\n var styleText = _.template(templateString)({\r\n elementId: elementId,\r\n horizontalMargin: horizontalMargin,\r\n seMargin: horizontalMargin + 5\r\n });\r\n\r\n return angular.element('