From a23fe283fa93cf3e8676e739b53cf1e97732280b Mon Sep 17 00:00:00 2001 From: Philip Diffenderfer Date: Thu, 22 Sep 2016 01:59:58 -0400 Subject: [PATCH] Missing visible set onShow modal (resolves #11) --- angular-semantic-ui.js | 2060 ++++++++++++++++---------------- angular-semantic-ui.min.js | 7 +- angular-semantic-ui.min.js.map | 4 +- bower.json | 2 +- package.json | 2 +- src/modal/sm-modal.js | 6 + 6 files changed, 1046 insertions(+), 1035 deletions(-) diff --git a/angular-semantic-ui.js b/angular-semantic-ui.js index ca91614..f9f5440 100644 --- a/angular-semantic-ui.js +++ b/angular-semantic-ui.js @@ -1,5 +1,5 @@ /** - * semantic-ui-angular-jquery - 0.2.0 + * semantic-ui-angular-jquery - 0.2.1 * Angular Directives for Semantic UI * * https://github.com/ClickerMonkey/SemanticUI-Angular @@ -400,33 +400,35 @@ angular.module('semantic-ui', [ { app - .factory('SemanticAccordionLink', ['SemanticUI', SemanticAccordionLink]) - .directive('smAccordionBind', ['SemanticUI', SemanticAccordionBind]) - .directive('smAccordion', ['SemanticAccordionLink', SemanticAccordion]) - .directive('smAccordionGroup', SemanticAccordionGroup) + .factory('SemanticCheckboxLink', ['SemanticUI', SemanticCheckboxLink]) + .directive('smCheckboxBind', ['SemanticUI', SemanticCheckboxBind]) + .directive('smCheckbox', ['SemanticCheckboxLink', SemanticCheckbox]) ; var BEHAVIORS = { - smAccordionOpen: 'open', - smAccordionCloseOthers: 'close others', - smAccordionClose: 'close', - smAccordionToggle: 'toggle' + smCheckboxToggle: 'toggle', + smCheckboxCheck: 'check', + smCheckboxUncheck: 'uncheck', + smCheckboxIndeterminate: 'indeterminate', + smCheckboxDeterminate: 'determinate', + smCheckboxEnable: 'enable', + smCheckboxDisable: 'disable' }; angular.forEach( BEHAVIORS, function(method, directive) { app.directive( directive, ['SemanticUI', function(SemanticUI) { - return SemanticUI.createBehavior( directive, 'accordion', method ); + return SemanticUI.createBehavior( directive, 'checkbox', method ); }]); }); - function SemanticAccordionBind(SemanticUI) + function SemanticCheckboxBind(SemanticUI) { - return SemanticUI.createBind( 'smAccordionBind', 'accordion' ); + return SemanticUI.createBind( 'smCheckboxBind', 'checkbox' ); } - function SemanticAccordion(SemanticAccordionLink) + function SemanticCheckbox(SemanticCheckboxLink) { return { @@ -437,24 +439,39 @@ angular.module('semantic-ui', [ transclude: true, scope: { + /* Required */ + model: '=', + label: '@', /* Optional */ settings: '=', + enabled: '=', + indeterminateValue: '=', + checkedValue: '=', + uncheckedValue: '=', + children: '@', onInit: '=', /* Events */ - onOpening: '=', - onOpen: '=', - onClosing: '=', - onClose: '=', - onChange: '=' + onChange: '=', + onChecked: '=', + onIndeterminate: '=', + onDeterminate: '=', + onUnchecked: '=', + onEnable: '=', + onDisable: '=' }, - template: '
', + template: [ + '
', + ' ', + ' ', + '
' + ].join('\n'), - link: SemanticAccordionLink + link: SemanticCheckboxLink }; } - function SemanticAccordionLink(SemanticUI) + function SemanticCheckboxLink(SemanticUI) { return function(scope, element, attributes) { @@ -462,60 +479,184 @@ angular.module('semantic-ui', [ { var settings = scope.settings || {}; - SemanticUI.linkSettings( scope, element, attributes, 'accordion', true ); + SemanticUI.linkSettings( scope, element, attributes, 'checkbox', true ); - SemanticUI.linkEvents( scope, settings, $.fn.accordion.settings, { - onOpening: 'onOpening', - onOpen: 'onOpen', - onClosing: 'onClosing', - onClose: 'onClose', - onChange: 'onChange' + SemanticUI.triggerChange( scope, 'model', element, true ); + + var checkedValue = function() { + return angular.isDefined( scope.checkedValue ) ? scope.checkedValue : true; + }; + var uncheckedValue = function() { + return angular.isDefined( scope.uncheckedValue ) ? scope.uncheckedValue : false; + }; + var indeterminateValue = function() { + return angular.isDefined( scope.indeterminateValue ) ? scope.indeterminateValue : void 0; + }; + + if ( attributes.enabled ) + { + var enabledWatcher = SemanticUI.watcher( scope, 'enabled', + function(updated) { + if ( angular.isDefined( updated ) ) { + element.checkbox( updated ? 'set enabled' : 'set disabled' ); + } + } + ); + + SemanticUI.onEvent( settings, 'onEnable', + function(value) { + enabledWatcher.set( true ); + } + ); + + SemanticUI.onEvent( settings, 'onDisable', + function(value) { + enabledWatcher.set( false ); + } + ); + } + + var modelWatcher = SemanticUI.watcher( scope, 'model', + function(updated) { + if ( angular.isDefined( updated ) ) { + element.checkbox( updated ? 'set checked' : 'set unchecked' ); + } + } + ); + + SemanticUI.onEvent( settings, 'onChecked', + function() { + modelWatcher.set( checkedValue() ); + } + ); + + SemanticUI.onEvent( settings, 'onUnchecked', + function() { + modelWatcher.set( uncheckedValue() ); + } + ); + + SemanticUI.onEvent( settings, 'onIndeterminate', + function() { + modelWatcher.set( indeterminateValue() ); + } + ); + + SemanticUI.linkEvents( scope, settings, $.fn.checkbox.settings, { + onChange: 'onChange', + onChecked: 'onChecked', + onIndeterminate: 'onIndeterminate', + onDeterminate: 'onDeterminate', + onUnchecked: 'onUnchecked', + onEnable: 'onEnable', + onDisable: 'onDisable' }); - element.accordion( settings ); + // If the checkbox has children, link the value of this checkbox to the children + if ( scope.children ) + { + var $children = $( scope.children ); + var settingChildren = false; - if ( angular.isFunction( scope.onInit ) ) + SemanticUI.onEvent( settings, 'onChecked', + function() { + settingChildren = true; + $children.checkbox( 'check' ); + settingChildren = false; + } + ); + SemanticUI.onEvent( settings, 'onUnchecked', + function() { + settingChildren = true; + $children.checkbox( 'uncheck' ); + settingChildren = false; + } + ); + + $children.children('input[type=checkbox], input[type=radio]') + .change(function() { + + if ( settingChildren ) { + return; + } + + var checked = 0; + + $children.each(function(i, child) { + if ( $( child ).checkbox( 'is checked') ) { + checked++; + } + }); + + if ( checked === 0 ) { + element.checkbox( 'uncheck' ); + } + else if ( checked === $children.length ) { + element.checkbox( 'check' ); + } + else { + element.checkbox( 'indeterminate' ); + } + }) + ; + } + + // Initialize the element with the given settings. + element.checkbox( settings ); + + // Set initial state of the checkbox + if ( scope.model == checkedValue() ) + { + element.checkbox( 'set checked' ); + } + else if ( scope.model === indeterminateValue() ) + { + element.checkbox( 'set indeterminate' ); + } + + if ( angular.isDefined( scope.enabled ) && !scope.enabled ) { + element.checkbox( 'set disabled' ); + } + + if ( angular.isFunction( scope.onInit ) ) { scope.onInit( element ); } }); }; } - function SemanticAccordionGroup() - { - return { - restrict: 'E', - required: 'title', - transclude: true, - scope: { - /* Required */ - title: '=', - /* Optional */ - active: '=' - }, - template: [ - '
', - ' ', - ' {{ title }}', - '
', - '
', - '
' - ].join('\n') - } - } - -})( angular.module('semantic-ui-accordion', ['semantic-ui-core']) ); +})( angular.module('semantic-ui-checkbox', ['semantic-ui-core']) ); (function(app) { app - .controller('SemanticCommentsController', ['$scope', SemanticCommentsController]) - .directive('smComments', ['SemanticUI', SemanticComments]) + .factory('SemanticRadioLink', ['SemanticUI', SemanticRadioLink]) + .directive('smRadioBind', ['SemanticUI', SemanticRadioBind]) + .directive('smRadio', ['SemanticRadioLink', SemanticRadio]) ; - function SemanticComments(SemanticUI) + var BEHAVIORS = { + smRadioCheck: 'check', + smRadioEnable: 'enable', + smRadioDisable: 'disable' + }; + + angular.forEach( BEHAVIORS, function(method, directive) + { + app.directive( directive, ['SemanticUI', function(SemanticUI) + { + return SemanticUI.createBehavior( directive, 'checkbox', method ); + }]); + }); + + function SemanticRadioBind(SemanticUI) + { + return SemanticUI.createBind( 'smRadioBind', 'checkbox' ); + } + + function SemanticRadio(SemanticRadioLink) { return { @@ -523,11 +664,255 @@ angular.module('semantic-ui', [ replace: true, - // transclude: true, + transclude: true, scope: { /* Required */ - comments: '=', + model: '=', + label: '@', + name: '@', + value: '=', + /* Optional */ + settings: '=', + enabled: '=', + onInit: '=', + /* Events */ + onChange: '=', + onChecked: '=', + onUnchecked: '=', + onEnable: '=', + onDisable: '=' + }, + + template: [ + '
', + ' ', + ' ', + '
' + ].join('\n'), + + link: SemanticRadioLink + }; + } + + function SemanticRadioLink(SemanticUI) + { + return function(scope, element, attributes) + { + element.ready(function() + { + var settings = scope.settings || {}; + + SemanticUI.linkSettings( scope, element, attributes, 'checkbox', true ); + + SemanticUI.triggerChange( scope, 'model', element, true ); + + if ( attributes.enabled ) + { + var enabledWatcher = SemanticUI.watcher( scope, 'enabled', + function(updated) { + if ( angular.isDefined( updated ) ) { + element.checkbox( updated ? 'set enabled' : 'set disabled' ); + } + } + ); + + SemanticUI.onEvent( settings, 'onEnable', + function(value) { + enabledWatcher.set( true ); + } + ); + + SemanticUI.onEvent( settings, 'onDisable', + function(value) { + enabledWatcher.set( false ); + } + ); + } + + var modelWatcher = SemanticUI.watcher( scope, 'model', + function(updated) { + if ( updated === scope.value ) { + element.checkbox( 'set checked' ); + } + } + ); + + SemanticUI.onEvent( settings, 'onChecked', + function() { + modelWatcher.set( scope.value ); + } + ); + + SemanticUI.linkEvents( scope, settings, $.fn.checkbox.settings, { + onChange: 'onChange', + onChecked: 'onChecked', + onUnchecked: 'onUnchecked', + onEnable: 'onEnable', + onDisable: 'onDisable' + }); + + // Initialize the element with the given settings. + element.checkbox( settings ); + + // Set initial state of the radio + if ( scope.model === scope.value ) + { + element.checkbox( 'set checked' ); + } + + // If the radio is a slider, remove the radio class + if ( element.hasClass( 'slider' ) ) + { + element.removeClass( 'radio' ); + } + + if ( angular.isDefined( scope.enabled ) && !scope.enabled ) + { + element.checkbox( 'set disabled' ); + } + + if ( angular.isFunction( scope.onInit ) ) { + scope.onInit( element ); + } + }); + }; + } + +})( angular.module('semantic-ui-radio', ['semantic-ui-core']) ); + +(function(app) +{ + + app + .factory('SemanticAccordionLink', ['SemanticUI', SemanticAccordionLink]) + .directive('smAccordionBind', ['SemanticUI', SemanticAccordionBind]) + .directive('smAccordion', ['SemanticAccordionLink', SemanticAccordion]) + .directive('smAccordionGroup', SemanticAccordionGroup) + ; + + var BEHAVIORS = { + smAccordionOpen: 'open', + smAccordionCloseOthers: 'close others', + smAccordionClose: 'close', + smAccordionToggle: 'toggle' + }; + + angular.forEach( BEHAVIORS, function(method, directive) + { + app.directive( directive, ['SemanticUI', function(SemanticUI) + { + return SemanticUI.createBehavior( directive, 'accordion', method ); + }]); + }); + + function SemanticAccordionBind(SemanticUI) + { + return SemanticUI.createBind( 'smAccordionBind', 'accordion' ); + } + + function SemanticAccordion(SemanticAccordionLink) + { + return { + + restrict: 'E', + + replace: true, + + transclude: true, + + scope: { + /* Optional */ + settings: '=', + onInit: '=', + /* Events */ + onOpening: '=', + onOpen: '=', + onClosing: '=', + onClose: '=', + onChange: '=' + }, + + template: '
', + + link: SemanticAccordionLink + }; + } + + function SemanticAccordionLink(SemanticUI) + { + return function(scope, element, attributes) + { + element.ready(function() + { + var settings = scope.settings || {}; + + SemanticUI.linkSettings( scope, element, attributes, 'accordion', true ); + + SemanticUI.linkEvents( scope, settings, $.fn.accordion.settings, { + onOpening: 'onOpening', + onOpen: 'onOpen', + onClosing: 'onClosing', + onClose: 'onClose', + onChange: 'onChange' + }); + + element.accordion( settings ); + + if ( angular.isFunction( scope.onInit ) ) + { + scope.onInit( element ); + } + }); + }; + } + + function SemanticAccordionGroup() + { + return { + restrict: 'E', + required: 'title', + transclude: true, + scope: { + /* Required */ + title: '=', + /* Optional */ + active: '=' + }, + template: [ + '
', + ' ', + ' {{ title }}', + '
', + '
', + '
' + ].join('\n') + } + } + +})( angular.module('semantic-ui-accordion', ['semantic-ui-core']) ); + +(function(app) +{ + + app + .controller('SemanticCommentsController', ['$scope', SemanticCommentsController]) + .directive('smComments', ['SemanticUI', SemanticComments]) + ; + + function SemanticComments(SemanticUI) + { + return { + + restrict: 'E', + + replace: true, + + // transclude: true, + + scope: { + /* Required */ + comments: '=', content: '&', /* Optional */ avatar: '&', @@ -638,7 +1023,7 @@ angular.module('semantic-ui', [ }; } -})( angular.module('semantic-ui-comment', ['semantic-ui-core']) ); +})( angular.module('semantic-ui-comment', ['semantic-ui-core', 'semantic-ui-timeago']) ); (function(app) { @@ -745,35 +1130,49 @@ angular.module('semantic-ui', [ { app - .factory('SemanticCheckboxLink', ['SemanticUI', SemanticCheckboxLink]) - .directive('smCheckboxBind', ['SemanticUI', SemanticCheckboxBind]) - .directive('smCheckbox', ['SemanticCheckboxLink', SemanticCheckbox]) + .controller('SemanticDropdownController', ['$scope', SemanticDropdownController]) + .factory('SemanticDropdownLink', ['SemanticUI', '$timeout', SemanticDropdownLink]) + .directive('smDropdownBind', ['SemanticUI', SemanticDropdownBind]) + .directive('smDropdown', ['SemanticDropdownLink', SemanticDropdown]) ; var BEHAVIORS = { - smCheckboxToggle: 'toggle', - smCheckboxCheck: 'check', - smCheckboxUncheck: 'uncheck', - smCheckboxIndeterminate: 'indeterminate', - smCheckboxDeterminate: 'determinate', - smCheckboxEnable: 'enable', - smCheckboxDisable: 'disable' + smDropdownToggle: 'toggle', + smDropdownShow: 'show', + smDropdownHide: 'hide', + smDropdownClear: 'clear', + smDropdownHideOthers: 'hide others', + smDropdownRestoreDefaults: 'restore defaults', + smDropdownRestoreDefaultText: 'restore default text', + smDropdownRestoreDefaultValue: 'restore default value', + smDropdownSaveDefaults: 'save defaults', + smDropdownSetSelected: 'set selected', + smDropdownSetText: 'set text', + smDropdownSetValue: 'set value', + smDropdownBindTouchEvents: 'bind touch events', + smDropdownMouseEvents: 'mouse events', + smDropdownBindIntent: 'bind intent', + smDropdownUnbindIntent: 'unbind intent', + smDropdownSetActive: 'set active', + smDropdownSetVisible: 'set visible', + smDropdownRemoveActive: 'remove active', + smDropdownRemoveVisible: 'remove visible' }; angular.forEach( BEHAVIORS, function(method, directive) { app.directive( directive, ['SemanticUI', function(SemanticUI) { - return SemanticUI.createBehavior( directive, 'checkbox', method ); + return SemanticUI.createBehavior( directive, 'dropdown', method ); }]); }); - function SemanticCheckboxBind(SemanticUI) + function SemanticDropdownBind(SemanticUI) { - return SemanticUI.createBind( 'smCheckboxBind', 'checkbox' ); + return SemanticUI.createBind( 'smDropdownBind', 'dropdown' ); } - function SemanticCheckbox(SemanticCheckboxLink) + function SemanticDropdown(SemanticDropdownLink) { return { @@ -786,222 +1185,300 @@ angular.module('semantic-ui', [ scope: { /* Required */ model: '=', - label: '@', + items: '=', + label: '&', + value: '&', /* Optional */ settings: '=', - enabled: '=', - indeterminateValue: '=', - checkedValue: '=', - uncheckedValue: '=', - children: '@', + defaultText: '=', onInit: '=', + emptyValue: '=', /* Events */ - onChange: '=', - onChecked: '=', - onIndeterminate: '=', - onDeterminate: '=', - onUnchecked: '=', - onEnable: '=', - onDisable: '=' + onChange: '=', + onAdd: '=', + onRemove: '=', + onLabelCreate: '=', + onLabelSelect: '=', + onNoResults: '=', + onShow: '=', + onHide: '=' }, template: [ - '
', - ' ', - ' ', + '' ].join('\n'), - link: SemanticCheckboxLink + controller: 'SemanticDropdownController', + + link: SemanticDropdownLink }; } - function SemanticCheckboxLink(SemanticUI) + function SemanticDropdownController($scope) { - return function(scope, element, attributes) + var hashMap = {}; + + // Returns the value to be placed in the data-value attribute. If the computed value has a $$hashKey, + // then return the hashKey. This enables the exact instance of the item to be set to the model. + $scope.getValue = function(item) { - element.ready(function() + // Computes the value given the expression in the 'value' attribute + return $scope.getKey( $scope.value( {item: item} ) ); + }; + + $scope.getKey = function(value) + { + return (value ? value.$$hashKey || value : value) + ''; + }; + + $scope.isEmpty = function() + { + return !$scope.model || $scope.model.length === 0; + }; + + // Translates the value (the model, an item of the model, or a variable + // created from the value function) into the key that's stored on the dropdown. + $scope.translateValue = function(value) + { + var translated = $scope.getKey( value ); + var matching = $scope.findMatchingItem( translated ); + + if ( angular.isDefined( matching ) ) { - var settings = scope.settings || {}; + return $scope.getValue( matching ); + } + }; - SemanticUI.linkSettings( scope, element, attributes, 'checkbox', true ); + // Determines whether this dropdown should currently display the default text. + $scope.hasDefault = function() + { + return ( $scope.defaultText && $scope.isEmpty() ); + }; - SemanticUI.triggerChange( scope, 'model', element, true ); + // Gets the current text for the drop down. If the current model has a value which is found + // in the items, the appropriate item's label is displayed. Otherwise return the default text. + $scope.getDefaultText = function() + { + return ( $scope.isEmpty() ? $scope.defaultText : '' ); + }; - var checkedValue = function() { - return angular.isDefined( scope.checkedValue ) ? scope.checkedValue : true; - }; - var uncheckedValue = function() { - return angular.isDefined( scope.uncheckedValue ) ? scope.uncheckedValue : false; - }; - var indeterminateValue = function() { - return angular.isDefined( scope.indeterminateValue ) ? scope.indeterminateValue : void 0; - }; + // Finds an item instance that has the exact same value as the given value. + $scope.findMatchingItem = function(value) + { + return hashMap[ value ]; + }; - if ( attributes.enabled ) - { - var enabledWatcher = SemanticUI.watcher( scope, 'enabled', - function(updated) { - if ( angular.isDefined( updated ) ) { - element.checkbox( updated ? 'set enabled' : 'set disabled' ); + // Updates the hash map providing a mapping from values to items. + $scope.updateHashMap = function( items ) + { + hashMap = {}; + + angular.forEach( items, function(item) + { + hashMap[ $scope.getValue( item ) ] = item; + }); + }; + } + + function SemanticDropdownLink(SemanticUI, $timeout) + { + return function (scope, element, attributes) { + var applyValue = function (value) { + $timeout(function () { + if (element.dropdown('is multiple')) { + if (value instanceof Array) { + var translatedValue = []; + + for (var i = 0; i < value.length; i++) { + var translated = scope.translateValue(value[ i ]); + + if (angular.isDefined(translated)) { + translatedValue.push(translated); + } } - } - ); - SemanticUI.onEvent( settings, 'onEnable', - function(value) { - enabledWatcher.set( true ); + element.dropdown('set exactly', translatedValue); } - ); + } + else { + element.dropdown('set selected', scope.translateValue(value)); + } + }, 0); + }; - SemanticUI.onEvent( settings, 'onDisable', - function(value) { - enabledWatcher.set( false ); - } - ); - } + SemanticUI.setDefaultFunction( scope, 'label', attributes, function(locals){return locals.item} ); + SemanticUI.setDefaultFunction( scope, 'value', attributes, function(locals){return locals.item} ); - var modelWatcher = SemanticUI.watcher( scope, 'model', - function(updated) { - if ( angular.isDefined( updated ) ) { - element.checkbox( updated ? 'set checked' : 'set unchecked' ); - } + element.ready(function() + { + var settings = scope.settings || {}; + var ignoreChange = true; + + SemanticUI.linkSettings( scope, element, attributes, 'dropdown', true ); + + SemanticUI.triggerChange( scope, 'model', element, true ); + + // Returns the model on the scope, converting it to an array if it's not one. + var modelArray = function() { + if ( !(scope.model instanceof Array) ) { + scope.model = scope.model ? [ scope.model ] : []; } - ); + return scope.model; + }; - SemanticUI.onEvent( settings, 'onChecked', - function() { - modelWatcher.set( checkedValue() ); + // When the model changes, set the value on the drop down + var modelWatcher = SemanticUI.watcher( scope, 'model', + function(updated) { + applyValue( updated ); } - ); + , null, true, true ); - SemanticUI.onEvent( settings, 'onUnchecked', - function() { - modelWatcher.set( uncheckedValue() ); + // Inject an onChange function into the settings which sets the model value + // and causes the scope to be updated. + SemanticUI.onEvent( settings, 'onChange', + function(value) { + if ( ignoreChange ) { + return; + } + if ( !element.dropdown('is multiple') ) { + var mapped = scope.findMatchingItem( value ); + if (angular.isDefined(mapped)) { + var mappedValue = scope.value({item: mapped}); + modelWatcher.set( mappedValue ); + } else if ( element.dropdown('setting', 'allowAdditions') ) { + modelWatcher.set( value ); + } else { + modelWatcher.set( scope.emptyValue ); + } + } } ); - SemanticUI.onEvent( settings, 'onIndeterminate', - function() { - modelWatcher.set( indeterminateValue() ); + // When a new item is selected for multiple selection dropdowns, add it to the model. + SemanticUI.onEvent( settings, 'onAdd', + function(value) { + if ( ignoreChange ) { + return; + } + var mapped = scope.findMatchingItem( value ); + if (angular.isDefined(mapped)) { + var mappedValue = scope.value({item: mapped}); + var indexOf = $.inArray( mappedValue, modelArray() ); + if ( indexOf === -1 ) { + scope.model.push( mappedValue ); + modelWatcher.update(); + } + } else if ( element.dropdown('setting', 'allowAdditions') ) { + scope.model.push( value ); + modelWatcher.update(); + } } ); - SemanticUI.linkEvents( scope, settings, $.fn.checkbox.settings, { - onChange: 'onChange', - onChecked: 'onChecked', - onIndeterminate: 'onIndeterminate', - onDeterminate: 'onDeterminate', - onUnchecked: 'onUnchecked', - onEnable: 'onEnable', - onDisable: 'onDisable' - }); - - // If the checkbox has children, link the value of this checkbox to the children - if ( scope.children ) - { - var $children = $( scope.children ); - var settingChildren = false; - - SemanticUI.onEvent( settings, 'onChecked', - function() { - settingChildren = true; - $children.checkbox( 'check' ); - settingChildren = false; + // When an item is deselected for multiple selection dropdowns, remove it from the model. + SemanticUI.onEvent( settings, 'onRemove', + function(value) { + if ( ignoreChange ) { + return; } - ); - SemanticUI.onEvent( settings, 'onUnchecked', - function() { - settingChildren = true; - $children.checkbox( 'uncheck' ); - settingChildren = false; + var mapped = scope.findMatchingItem( value ); + if (angular.isDefined(mapped)) { + var mappedValue = scope.value({item: mapped}); + var indexOf = $.inArray( mappedValue, modelArray() ); + if ( indexOf !== -1 ) { + scope.model.splice( indexOf, 1 ); + modelWatcher.update(); + } + } else { + var indexOf = $.inArray( value, modelArray() ); + if ( indexOf !== -1 ) { + scope.model.splice( indexOf, 1 ); + modelWatcher.update(); + } } - ); + } + ); - $children.children('input[type=checkbox], input[type=radio]') - .change(function() { + SemanticUI.linkEvents( scope, settings, $.fn.dropdown.settings, { + onChange: 'onChange', + onAdd: 'onAdd', + onRemove: 'onRemove', + onLabelCreate: 'onLabelCreate', + onLabelSelect: 'onLabelSelect', + onNoResults: 'onNoResults', + onShow: 'onShow', + onHide: 'onHide' + }); - if ( settingChildren ) { - return; - } + // When items changes, rebuild the hashMap & reapply the values. + scope.$watch( 'items', function( updated ) + { + scope.updateHashMap( scope.items ); + applyValue( scope.model ); - var checked = 0; + }, true ); - $children.each(function(i, child) { - if ( $( child ).checkbox( 'is checked') ) { - checked++; - } - }); + // Initialize the element with the given settings. + element.dropdown( settings ); - if ( checked === 0 ) { - element.checkbox( 'uncheck' ); - } - else if ( checked === $children.length ) { - element.checkbox( 'check' ); - } - else { - element.checkbox( 'indeterminate' ); - } - }) - ; - } + // Update the hashmap with items + scope.updateHashMap( scope.items ); - // Initialize the element with the given settings. - element.checkbox( settings ); + // Apply current value + applyValue( scope.model ); - // Set initial state of the checkbox - if ( scope.model == checkedValue() ) - { - element.checkbox( 'set checked' ); - } - else if ( scope.model === indeterminateValue() ) - { - element.checkbox( 'set indeterminate' ); - } + // Save defaults + element.dropdown( 'save defaults' ); - if ( angular.isDefined( scope.enabled ) && !scope.enabled ) - { - element.checkbox( 'set disabled' ); - } + // Stop ignoring changes! + ignoreChange = false; - if ( angular.isFunction( scope.onInit ) ) { + // Notify initialized callback. + if ( angular.isFunction( scope.onInit ) ) + { scope.onInit( element ); } + }); }; } -})( angular.module('semantic-ui-checkbox', ['semantic-ui-core']) ); +})( angular.module('semantic-ui-dropdown', ['semantic-ui-core']) ); (function(app) { app - .factory('SemanticRadioLink', ['SemanticUI', SemanticRadioLink]) - .directive('smRadioBind', ['SemanticUI', SemanticRadioBind]) - .directive('smRadio', ['SemanticRadioLink', SemanticRadio]) + .factory('SemanticEmbedLink', ['SemanticUI', SemanticEmbedLink]) + .directive('smEmbedBind', ['SemanticUI', SemanticEmbedBind]) + .directive('smEmbed', ['SemanticEmbedLink', SemanticEmbed]) ; var BEHAVIORS = { - smRadioCheck: 'check', - smRadioEnable: 'enable', - smRadioDisable: 'disable' + smEmbedReset: 'reset', + smEmbedShow: 'show', + smEmbedHide: 'hide', + smEmbedDestroy: 'destroy' }; angular.forEach( BEHAVIORS, function(method, directive) { app.directive( directive, ['SemanticUI', function(SemanticUI) { - return SemanticUI.createBehavior( directive, 'checkbox', method ); + return SemanticUI.createBehavior( directive, 'embed', method ); }]); }); - function SemanticRadioBind(SemanticUI) + function SemanticEmbedBind(SemanticUI) { - return SemanticUI.createBind( 'smRadioBind', 'checkbox' ); + return SemanticUI.createBind( 'smEmbedBind', 'embed' ); } - function SemanticRadio(SemanticRadioLink) + function SemanticEmbed(SemanticEmbedLink) { return { @@ -1012,212 +1489,214 @@ angular.module('semantic-ui', [ transclude: true, scope: { - /* Required */ - model: '=', - label: '@', - name: '@', - value: '=', /* Optional */ + source: '@', + sourceId: '@', + url: '@', + placeholder: '@', + icon: '@', settings: '=', - enabled: '=', onInit: '=', /* Events */ - onChange: '=', - onChecked: '=', - onUnchecked: '=', - onEnable: '=', - onDisable: '=' + onCreate: '=', + onDisplay: '=', + onPlaceholderDisplay: '=', + onEmbed: '=' }, - template: [ - '
', - ' ', - ' ', - '
' - ].join('\n'), + template: '
', - link: SemanticRadioLink + link: SemanticEmbedLink }; } - function SemanticRadioLink(SemanticUI) + function SemanticEmbedLink(SemanticUI) { return function(scope, element, attributes) { - element.ready(function() - { - var settings = scope.settings || {}; + var settings = scope.settings || {}; - SemanticUI.linkSettings( scope, element, attributes, 'checkbox', true ); + SemanticUI.linkSettings( scope, element, attributes, 'embed' ); - SemanticUI.triggerChange( scope, 'model', element, true ); + if ( scope.source ) settings.source = scope.source; + if ( scope.sourceId ) settings.id = scope.sourceId; + if ( scope.placeholder ) settings.placeholder = scope.placeholder; + if ( scope.icon ) settings.icon = scope.icon; + if ( scope.url ) settings.url = scope.url; - if ( attributes.enabled ) - { - var enabledWatcher = SemanticUI.watcher( scope, 'enabled', - function(updated) { - if ( angular.isDefined( updated ) ) { - element.checkbox( updated ? 'set enabled' : 'set disabled' ); - } - } - ); + SemanticUI.linkEvents( scope, settings, $.fn.embed.settings, { + onCreate: 'onCreate', + onDisplay: 'onDisplay', + onPlaceholderDisplay: 'onPlaceholderDisplay', + onEmbed: 'onEmbed' + }); - SemanticUI.onEvent( settings, 'onEnable', - function(value) { - enabledWatcher.set( true ); - } - ); + element.embed( settings ); - SemanticUI.onEvent( settings, 'onDisable', - function(value) { - enabledWatcher.set( false ); - } - ); - } + if ( angular.isFunction( scope.onInit ) ) { + scope.onInit( element ); + } + }; + } - var modelWatcher = SemanticUI.watcher( scope, 'model', - function(updated) { - if ( updated === scope.value ) { - element.checkbox( 'set checked' ); - } - } - ); - SemanticUI.onEvent( settings, 'onChecked', - function() { - modelWatcher.set( scope.value ); - } - ); +})( angular.module('semantic-ui-embed', ['semantic-ui-core']) ); - SemanticUI.linkEvents( scope, settings, $.fn.checkbox.settings, { - onChange: 'onChange', - onChecked: 'onChecked', - onUnchecked: 'onUnchecked', - onEnable: 'onEnable', - onDisable: 'onDisable' - }); +(function(app) +{ - // Initialize the element with the given settings. - element.checkbox( settings ); + app + .factory('SemanticListLink', ['SemanticUI', SemanticListLink]) + .directive('smList', ['SemanticUI', 'SemanticListLink', SemanticList]) + ; - // Set initial state of the radio - if ( scope.model === scope.value ) - { - element.checkbox( 'set checked' ); - } + function SemanticList(SemanticUI, SemanticListLink) + { + return { - // If the radio is a slider, remove the radio class - if ( element.hasClass( 'slider' ) ) - { - element.removeClass( 'radio' ); - } + restrict: 'E', - if ( angular.isDefined( scope.enabled ) && !scope.enabled ) - { - element.checkbox( 'set disabled' ); - } + replace: true, - if ( angular.isFunction( scope.onInit ) ) { - scope.onInit( element ); - } - }); + scope: + { + /* Required */ + items: '=', + /* Optional */ + description: '&', + icon: '&', + image: '&', + header: '&', + headerHref: '&', + children: '&', + onHeader: '&', + /* Private */ + has: '=?' + }, + + template: [ + '
', + '
', + ' ', + ' ', + '
', + '
', + ' ', + '
', + ' ', + '
', + '
', + '
', + '
' + ].join('\n'), + + compile: SemanticUI.RecursiveCompiler(SemanticListLink) + } + } + + function SemanticListLink(SemanticUI) + { + return function(scope, element, attributes) + { + if ( !scope.has ) + { + scope.has = { + icon: !!attributes.icon, + image: !!attributes.image, + header: !!attributes.header, + headerLink: !!attributes.headerHref, + description: !!attributes.description, + children: !!attributes.children + }; + } + + scope.getChildCount = function($) + { + var children = scope.children($); + + return children ? children.length : 0; + }; + + SemanticUI.setDefaultFunction( scope, 'description', attributes, function(locals){return locals.item} ); + SemanticUI.setDefaultFunction( scope, 'icon', attributes, function(locals){return locals.item.icon} ); + SemanticUI.setDefaultFunction( scope, 'header', attributes, function(locals){return locals.item.header} ); + SemanticUI.setDefaultFunction( scope, 'children', attributes, function(locals){return locals.item.children} ); }; } -})( angular.module('semantic-ui-radio', ['semantic-ui-core']) ); +})( angular.module('semantic-ui-list', ['semantic-ui-core']) ); (function(app) { app - .factory('SemanticEmbedLink', ['SemanticUI', SemanticEmbedLink]) - .directive('smEmbedBind', ['SemanticUI', SemanticEmbedBind]) - .directive('smEmbed', ['SemanticEmbedLink', SemanticEmbed]) + .controller('SemanticMenuController', ['$scope', SemanticMenuController]) + .directive('smMenu', ['SemanticUI', SemanticMenu]) ; - var BEHAVIORS = { - smEmbedReset: 'reset', - smEmbedShow: 'show', - smEmbedHide: 'hide', - smEmbedDestroy: 'destroy' - }; - - angular.forEach( BEHAVIORS, function(method, directive) - { - app.directive( directive, ['SemanticUI', function(SemanticUI) - { - return SemanticUI.createBehavior( directive, 'embed', method ); - }]); - }); - - function SemanticEmbedBind(SemanticUI) - { - return SemanticUI.createBind( 'smEmbedBind', 'embed' ); - } - - function SemanticEmbed(SemanticEmbedLink) + function SemanticMenu(SemanticUI) { return { - restrict: 'E', - replace: true, - - transclude: true, - scope: { + /* Required */ + items: '=', + label: '&', /* Optional */ - source: '@', - sourceId: '@', - url: '@', - placeholder: '@', - icon: '@', - settings: '=', - onInit: '=', - /* Events */ - onCreate: '=', - onDisplay: '=', - onPlaceholderDisplay: '=', - onEmbed: '=' + onClick: '&', + children: '&', + description: '&', + icon: '&', + hidden: '&', + divider: '&' }, + template: [ + '' + ].join('\n'), - template: '
', + controller: 'SemanticMenuController', - link: SemanticEmbedLink + compile: SemanticUI.RecursiveCompiler() }; } - function SemanticEmbedLink(SemanticUI) + function SemanticMenuController($scope) { - return function(scope, element, attributes) - { - var settings = scope.settings || {}; - - SemanticUI.linkSettings( scope, element, attributes, 'embed' ); - - if ( scope.source ) settings.source = scope.source; - if ( scope.sourceId ) settings.id = scope.sourceId; - if ( scope.placeholder ) settings.placeholder = scope.placeholder; - if ( scope.icon ) settings.icon = scope.icon; - if ( scope.url ) settings.url = scope.url; - - SemanticUI.linkEvents( scope, settings, $.fn.embed.settings, { - onCreate: 'onCreate', - onDisplay: 'onDisplay', - onPlaceholderDisplay: 'onPlaceholderDisplay', - onEmbed: 'onEmbed' - }); - - element.embed( settings ); + $scope.hasChildren = function(item) { + var children = $scope.children({item: item}); + return children && children.length; + }; + $scope.getChildren = function(item) { + return $scope.children({item: item}); + }; - if ( angular.isFunction( scope.onInit ) ) { - scope.onInit( element ); - } + $scope.getLabel = function(item) { + return $scope.label({item: item}); + }; + $scope.getIcon = function(item) { + return $scope.icon({item: item}); + } + $scope.getDescription = function(item) { + return $scope.description({item: item}); + }; + $scope.isHidden = function(item) { + return $scope.hidden({item: item}); + }; + $scope.isDivider = function(item) { + return $scope.divider({item: item}); }; } -})( angular.module('semantic-ui-embed', ['semantic-ui-core']) ); +})( angular.module('semantic-ui-menu', ['semantic-ui-core']) ); (function(app) { @@ -1306,6 +1785,12 @@ angular.module('semantic-ui', [ visibleWatcher.set( false ); } ); + + SemanticUI.onEvent( settings, 'onShow', + function() { + visibleWatcher.set( true ); + } + ); } SemanticUI.linkEvents( scope, settings, $.fn.modal.settings, { @@ -1332,205 +1817,49 @@ angular.module('semantic-ui', [ { app - .factory('SemanticListLink', ['SemanticUI', SemanticListLink]) - .directive('smList', ['SemanticUI', 'SemanticListLink', SemanticList]) + .factory('SemanticPopupLink', ['SemanticUI', SemanticPopupLink]) + .factory('SemanticPopupInlineLink', ['SemanticUI', SemanticPopupInlineLink]) + .factory('SemanticPopupDisplayLink', ['SemanticUI', SemanticPopupDisplayLink]) + .directive('smPopupBind', ['SemanticUI', SemanticModalBind]) + .directive('smPopup', ['SemanticPopupLink', SemanticPopup]) + .directive('smPopupInline', ['SemanticPopupInlineLink', SemanticPopupInline]) + .directive('smPopupDisplay', ['SemanticPopupDisplayLink', SemanticPopupDisplay]) + .directive('smPopupDetached', [SemanticPopupDetached]) ; - function SemanticList(SemanticUI, SemanticListLink) + var BEHAVIORS = { + smPopupShow: 'show', + smPopupHide: 'hide', + smPopupHideAll: 'hide all', + smPopupToggle: 'toggle', + smPopupReposition: 'reposition', + smPopupDestroy: 'destroy', + smPopupRemove: 'remove popup' + }; + + angular.forEach( BEHAVIORS, function(method, directive) { - return { + app.directive( directive, ['SemanticUI', function(SemanticUI) + { + return SemanticUI.createBehavior( directive, 'popup', method ); + }]); + }); - restrict: 'E', + function SemanticModalBind(SemanticUI) + { + return SemanticUI.createBind( 'smPopupBind', 'popup' ); + } - replace: true, + // An attribute directive which displays a popup for this element. + function SemanticPopup(SemanticPopupLink) + { + return { - scope: - { + restrict: 'A', + + scope: { /* Required */ - items: '=', - /* Optional */ - description: '&', - icon: '&', - image: '&', - header: '&', - headerHref: '&', - children: '&', - onHeader: '&', - /* Private */ - has: '=?' - }, - - template: [ - '
', - '
', - ' ', - ' ', - '
', - '
', - ' ', - '
', - ' ', - '
', - '
', - '
', - '
' - ].join('\n'), - - compile: SemanticUI.RecursiveCompiler(SemanticListLink) - } - } - - function SemanticListLink(SemanticUI) - { - return function(scope, element, attributes) - { - if ( !scope.has ) - { - scope.has = { - icon: !!attributes.icon, - image: !!attributes.image, - header: !!attributes.header, - headerLink: !!attributes.headerHref, - description: !!attributes.description, - children: !!attributes.children - }; - } - - scope.getChildCount = function($) - { - var children = scope.children($); - - return children ? children.length : 0; - }; - - SemanticUI.setDefaultFunction( scope, 'description', attributes, function(locals){return locals.item} ); - SemanticUI.setDefaultFunction( scope, 'icon', attributes, function(locals){return locals.item.icon} ); - SemanticUI.setDefaultFunction( scope, 'header', attributes, function(locals){return locals.item.header} ); - SemanticUI.setDefaultFunction( scope, 'children', attributes, function(locals){return locals.item.children} ); - }; - } - -})( angular.module('semantic-ui-list', ['semantic-ui-core']) ); - -(function(app) -{ - - app - .controller('SemanticMenuController', ['$scope', SemanticMenuController]) - .directive('smMenu', ['SemanticUI', SemanticMenu]) - ; - - function SemanticMenu(SemanticUI) - { - return { - restrict: 'E', - replace: true, - scope: { - /* Required */ - items: '=', - label: '&', - /* Optional */ - onClick: '&', - children: '&', - description: '&', - icon: '&', - hidden: '&', - divider: '&' - }, - template: [ - '' - ].join('\n'), - - controller: 'SemanticMenuController', - - compile: SemanticUI.RecursiveCompiler() - }; - } - - function SemanticMenuController($scope) - { - $scope.hasChildren = function(item) { - var children = $scope.children({item: item}); - return children && children.length; - }; - $scope.getChildren = function(item) { - return $scope.children({item: item}); - }; - - $scope.getLabel = function(item) { - return $scope.label({item: item}); - }; - $scope.getIcon = function(item) { - return $scope.icon({item: item}); - } - $scope.getDescription = function(item) { - return $scope.description({item: item}); - }; - $scope.isHidden = function(item) { - return $scope.hidden({item: item}); - }; - $scope.isDivider = function(item) { - return $scope.divider({item: item}); - }; - } - - -})( angular.module('semantic-ui-menu', ['semantic-ui-core']) ); - -(function(app) -{ - - app - .factory('SemanticPopupLink', ['SemanticUI', SemanticPopupLink]) - .factory('SemanticPopupInlineLink', ['SemanticUI', SemanticPopupInlineLink]) - .factory('SemanticPopupDisplayLink', ['SemanticUI', SemanticPopupDisplayLink]) - .directive('smPopupBind', ['SemanticUI', SemanticModalBind]) - .directive('smPopup', ['SemanticPopupLink', SemanticPopup]) - .directive('smPopupInline', ['SemanticPopupInlineLink', SemanticPopupInline]) - .directive('smPopupDisplay', ['SemanticPopupDisplayLink', SemanticPopupDisplay]) - .directive('smPopupDetached', [SemanticPopupDetached]) - ; - - var BEHAVIORS = { - smPopupShow: 'show', - smPopupHide: 'hide', - smPopupHideAll: 'hide all', - smPopupToggle: 'toggle', - smPopupReposition: 'reposition', - smPopupDestroy: 'destroy', - smPopupRemove: 'remove popup' - }; - - angular.forEach( BEHAVIORS, function(method, directive) - { - app.directive( directive, ['SemanticUI', function(SemanticUI) - { - return SemanticUI.createBehavior( directive, 'popup', method ); - }]); - }); - - function SemanticModalBind(SemanticUI) - { - return SemanticUI.createBind( 'smPopupBind', 'popup' ); - } - - // An attribute directive which displays a popup for this element. - function SemanticPopup(SemanticPopupLink) - { - return { - - restrict: 'A', - - scope: { - /* Required */ - smPopup: '=', + smPopup: '=', /* Optional */ smPopupTitle: '=', smPopupHtml: '=', @@ -1802,392 +2131,69 @@ angular.module('semantic-ui', [ onWarning: 'onWarning' }); - if ( !angular.isDefined( settings.showActivity ) ) - { - settings.showActivity = false; - } - - if ( angular.isDefined( attributes.label ) ) - { - settings.label = scope.label; - } - - if ( angular.isDefined( attributes.total ) ) - { - settings.total = scope.total; - } - else - { - settings.total = 100; - } - - if ( angular.isDefined( attributes.model ) ) - { - settings.value = scope.model; - } - - addText( scope, attributes, settings, 'activeText', 'active' ); - addText( scope, attributes, settings, 'successText', 'success' ); - addText( scope, attributes, settings, 'errorText', 'error' ); - addText( scope, attributes, settings, 'warningText', 'warning' ); - - element.progress( settings ); - - SemanticUI.watcher( scope, 'model', function(value) - { - var total = element.progress( 'get total' ) || 100; - - element.progress( 'set percent', value * 100 / total ); - element.progress( 'set value', value ); - }); - - if ( angular.isDefined( attributes.duration ) ) - { - SemanticUI.watcher( scope, 'duration', function(duration) - { - element.progress( 'set duration', duration ); - }); - } - - if ( angular.isDefined( attributes.total ) ) - { - SemanticUI.watcher( scope, 'total', function(total) - { - element.progress( 'set total', total ); - }); - } - - if ( angular.isFunction( scope.onInit ) ) - { - scope.onInit( element ); - } - }; - } - -})( angular.module('semantic-ui-progress', ['semantic-ui-core']) ); - -(function(app) -{ - - app - .controller('SemanticDropdownController', ['$scope', SemanticDropdownController]) - .factory('SemanticDropdownLink', ['SemanticUI', '$timeout', SemanticDropdownLink]) - .directive('smDropdownBind', ['SemanticUI', SemanticDropdownBind]) - .directive('smDropdown', ['SemanticDropdownLink', SemanticDropdown]) - ; - - var BEHAVIORS = { - smDropdownToggle: 'toggle', - smDropdownShow: 'show', - smDropdownHide: 'hide', - smDropdownClear: 'clear', - smDropdownHideOthers: 'hide others', - smDropdownRestoreDefaults: 'restore defaults', - smDropdownRestoreDefaultText: 'restore default text', - smDropdownRestoreDefaultValue: 'restore default value', - smDropdownSaveDefaults: 'save defaults', - smDropdownSetSelected: 'set selected', - smDropdownSetText: 'set text', - smDropdownSetValue: 'set value', - smDropdownBindTouchEvents: 'bind touch events', - smDropdownMouseEvents: 'mouse events', - smDropdownBindIntent: 'bind intent', - smDropdownUnbindIntent: 'unbind intent', - smDropdownSetActive: 'set active', - smDropdownSetVisible: 'set visible', - smDropdownRemoveActive: 'remove active', - smDropdownRemoveVisible: 'remove visible' - }; - - angular.forEach( BEHAVIORS, function(method, directive) - { - app.directive( directive, ['SemanticUI', function(SemanticUI) - { - return SemanticUI.createBehavior( directive, 'dropdown', method ); - }]); - }); - - function SemanticDropdownBind(SemanticUI) - { - return SemanticUI.createBind( 'smDropdownBind', 'dropdown' ); - } - - function SemanticDropdown(SemanticDropdownLink) - { - return { - - restrict: 'E', - - replace: true, - - transclude: true, - - scope: { - /* Required */ - model: '=', - items: '=', - label: '&', - value: '&', - /* Optional */ - settings: '=', - defaultText: '=', - onInit: '=', - emptyValue: '=', - /* Events */ - onChange: '=', - onAdd: '=', - onRemove: '=', - onLabelCreate: '=', - onLabelSelect: '=', - onNoResults: '=', - onShow: '=', - onHide: '=' - }, - - template: [ - '' - ].join('\n'), - - controller: 'SemanticDropdownController', - - link: SemanticDropdownLink - }; - } - - function SemanticDropdownController($scope) - { - var hashMap = {}; - - // Returns the value to be placed in the data-value attribute. If the computed value has a $$hashKey, - // then return the hashKey. This enables the exact instance of the item to be set to the model. - $scope.getValue = function(item) - { - // Computes the value given the expression in the 'value' attribute - return $scope.getKey( $scope.value( {item: item} ) ); - }; - - $scope.getKey = function(value) - { - return (value ? value.$$hashKey || value : value) + ''; - }; - - $scope.isEmpty = function() - { - return !$scope.model || $scope.model.length === 0; - }; - - // Translates the value (the model, an item of the model, or a variable - // created from the value function) into the key that's stored on the dropdown. - $scope.translateValue = function(value) - { - var translated = $scope.getKey( value ); - var matching = $scope.findMatchingItem( translated ); - - if ( angular.isDefined( matching ) ) - { - return $scope.getValue( matching ); - } - }; - - // Determines whether this dropdown should currently display the default text. - $scope.hasDefault = function() - { - return ( $scope.defaultText && $scope.isEmpty() ); - }; - - // Gets the current text for the drop down. If the current model has a value which is found - // in the items, the appropriate item's label is displayed. Otherwise return the default text. - $scope.getDefaultText = function() - { - return ( $scope.isEmpty() ? $scope.defaultText : '' ); - }; - - // Finds an item instance that has the exact same value as the given value. - $scope.findMatchingItem = function(value) - { - return hashMap[ value ]; - }; - - // Updates the hash map providing a mapping from values to items. - $scope.updateHashMap = function( items ) - { - hashMap = {}; - - angular.forEach( items, function(item) - { - hashMap[ $scope.getValue( item ) ] = item; - }); - }; - } - - function SemanticDropdownLink(SemanticUI, $timeout) - { - return function (scope, element, attributes) { - var applyValue = function (value) { - $timeout(function () { - if (element.dropdown('is multiple')) { - if (value instanceof Array) { - var translatedValue = []; - - for (var i = 0; i < value.length; i++) { - var translated = scope.translateValue(value[ i ]); - - if (angular.isDefined(translated)) { - translatedValue.push(translated); - } - } - - element.dropdown('set exactly', translatedValue); - } - } - else { - element.dropdown('set selected', scope.translateValue(value)); - } - }, 0); - }; - - SemanticUI.setDefaultFunction( scope, 'label', attributes, function(locals){return locals.item} ); - SemanticUI.setDefaultFunction( scope, 'value', attributes, function(locals){return locals.item} ); - - element.ready(function() - { - var settings = scope.settings || {}; - var ignoreChange = true; - - SemanticUI.linkSettings( scope, element, attributes, 'dropdown', true ); - - SemanticUI.triggerChange( scope, 'model', element, true ); - - // Returns the model on the scope, converting it to an array if it's not one. - var modelArray = function() { - if ( !(scope.model instanceof Array) ) { - scope.model = scope.model ? [ scope.model ] : []; - } - return scope.model; - }; - - // When the model changes, set the value on the drop down - var modelWatcher = SemanticUI.watcher( scope, 'model', - function(updated) { - applyValue( updated ); - } - , null, true, true ); - - // Inject an onChange function into the settings which sets the model value - // and causes the scope to be updated. - SemanticUI.onEvent( settings, 'onChange', - function(value) { - if ( ignoreChange ) { - return; - } - if ( !element.dropdown('is multiple') ) { - var mapped = scope.findMatchingItem( value ); - if (angular.isDefined(mapped)) { - var mappedValue = scope.value({item: mapped}); - modelWatcher.set( mappedValue ); - } else if ( element.dropdown('setting', 'allowAdditions') ) { - modelWatcher.set( value ); - } else { - modelWatcher.set( scope.emptyValue ); - } - } - } - ); - - // When a new item is selected for multiple selection dropdowns, add it to the model. - SemanticUI.onEvent( settings, 'onAdd', - function(value) { - if ( ignoreChange ) { - return; - } - var mapped = scope.findMatchingItem( value ); - if (angular.isDefined(mapped)) { - var mappedValue = scope.value({item: mapped}); - var indexOf = $.inArray( mappedValue, modelArray() ); - if ( indexOf === -1 ) { - scope.model.push( mappedValue ); - modelWatcher.update(); - } - } else if ( element.dropdown('setting', 'allowAdditions') ) { - scope.model.push( value ); - modelWatcher.update(); - } - } - ); - - // When an item is deselected for multiple selection dropdowns, remove it from the model. - SemanticUI.onEvent( settings, 'onRemove', - function(value) { - if ( ignoreChange ) { - return; - } - var mapped = scope.findMatchingItem( value ); - if (angular.isDefined(mapped)) { - var mappedValue = scope.value({item: mapped}); - var indexOf = $.inArray( mappedValue, modelArray() ); - if ( indexOf !== -1 ) { - scope.model.splice( indexOf, 1 ); - modelWatcher.update(); - } - } else { - var indexOf = $.inArray( value, modelArray() ); - if ( indexOf !== -1 ) { - scope.model.splice( indexOf, 1 ); - modelWatcher.update(); - } - } - } - ); - - SemanticUI.linkEvents( scope, settings, $.fn.dropdown.settings, { - onChange: 'onChange', - onAdd: 'onAdd', - onRemove: 'onRemove', - onLabelCreate: 'onLabelCreate', - onLabelSelect: 'onLabelSelect', - onNoResults: 'onNoResults', - onShow: 'onShow', - onHide: 'onHide' - }); + if ( !angular.isDefined( settings.showActivity ) ) + { + settings.showActivity = false; + } - // When items changes, rebuild the hashMap & reapply the values. - scope.$watch( 'items', function( updated ) - { - scope.updateHashMap( scope.items ); - applyValue( scope.model ); + if ( angular.isDefined( attributes.label ) ) + { + settings.label = scope.label; + } - }, true ); + if ( angular.isDefined( attributes.total ) ) + { + settings.total = scope.total; + } + else + { + settings.total = 100; + } - // Initialize the element with the given settings. - element.dropdown( settings ); + if ( angular.isDefined( attributes.model ) ) + { + settings.value = scope.model; + } - // Update the hashmap with items - scope.updateHashMap( scope.items ); + addText( scope, attributes, settings, 'activeText', 'active' ); + addText( scope, attributes, settings, 'successText', 'success' ); + addText( scope, attributes, settings, 'errorText', 'error' ); + addText( scope, attributes, settings, 'warningText', 'warning' ); - // Apply current value - applyValue( scope.model ); + element.progress( settings ); - // Save defaults - element.dropdown( 'save defaults' ); + SemanticUI.watcher( scope, 'model', function(value) + { + var total = element.progress( 'get total' ) || 100; - // Stop ignoring changes! - ignoreChange = false; + element.progress( 'set percent', value * 100 / total ); + element.progress( 'set value', value ); + }); - // Notify initialized callback. - if ( angular.isFunction( scope.onInit ) ) + if ( angular.isDefined( attributes.duration ) ) + { + SemanticUI.watcher( scope, 'duration', function(duration) { - scope.onInit( element ); - } + element.progress( 'set duration', duration ); + }); + } - }); + if ( angular.isDefined( attributes.total ) ) + { + SemanticUI.watcher( scope, 'total', function(total) + { + element.progress( 'set total', total ); + }); + } + + if ( angular.isFunction( scope.onInit ) ) + { + scope.onInit( element ); + } }; } -})( angular.module('semantic-ui-dropdown', ['semantic-ui-core']) ); +})( angular.module('semantic-ui-progress', ['semantic-ui-core']) ); (function(app) { @@ -2429,98 +2435,6 @@ angular.module('semantic-ui', [ })( angular.module('semantic-ui-search', ['semantic-ui-core']) ); -(function(app) -{ - - app - .factory('SemanticShapeLink', ['SemanticUI', SemanticShapeLink]) - .directive('smShapeBind', ['SemanticUI', SemanticShapeBind]) - .directive('smShape', ['SemanticShapeLink', SemanticShape]) - ; - - var BEHAVIORS = { - smShapeFlipUp: 'flip up', - smShapeFlipDown: 'flip down', - smShapeFlipLeft: 'flip left', - smShapeFlipRight: 'flip right', - smShapeFlipOver: 'flip over', - smShapeFlipBack: 'flip back', - smShapeSetNextSide: 'set next side', - smShapeReset: 'reset', - smShapeQueue: 'queue', - smShapeRepaint: 'repaint', - smShapeSetDefaultSide: 'set default side', - smShapeSetStageSize: 'set stage size', - smShapeRefresh: 'refresh' - }; - - angular.forEach( BEHAVIORS, function(method, directive) - { - app.directive( directive, ['SemanticUI', function(SemanticUI) - { - return SemanticUI.createBehavior( directive, 'shape', method ); - }]); - }); - - function SemanticShapeBind(SemanticUI) - { - return SemanticUI.createBind( 'smShapeBind', 'shape' ); - } - - function SemanticShape(SemanticShapeLink) - { - return { - - restrict: 'E', - - replace: true, - - transclude: true, - - scope: { - - settings: '=', - onInit: '=', - /* Events */ - onBeforeChange: '=', - onChange: '=', - }, - - template: [ - '
', - '
', - '
', - '
' - ].join('\n'), - - link: SemanticShapeLink - - }; - } - - function SemanticShapeLink(SemanticUI) - { - return function(scope, element, attributes) - { - var settings = scope.settings || {}; - - SemanticUI.linkSettings( scope, element, attributes, 'shape' ); - - SemanticUI.linkEvents( scope, settings, $.fn.shape.settings, { - onBeforeChange: 'onBeforeChange', - onChange: 'onChange' - }); - - element.shape( settings ); - - if ( angular.isFunction( scope.onInit ) ) { - scope.onInit( element ); - } - }; - } - -})( angular.module('semantic-ui-shape', ['semantic-ui-core']) ); - (function(app) { @@ -2651,6 +2565,98 @@ angular.module('semantic-ui', [ })( angular.module('semantic-ui-sidebar', ['semantic-ui-core']) ); +(function(app) +{ + + app + .factory('SemanticShapeLink', ['SemanticUI', SemanticShapeLink]) + .directive('smShapeBind', ['SemanticUI', SemanticShapeBind]) + .directive('smShape', ['SemanticShapeLink', SemanticShape]) + ; + + var BEHAVIORS = { + smShapeFlipUp: 'flip up', + smShapeFlipDown: 'flip down', + smShapeFlipLeft: 'flip left', + smShapeFlipRight: 'flip right', + smShapeFlipOver: 'flip over', + smShapeFlipBack: 'flip back', + smShapeSetNextSide: 'set next side', + smShapeReset: 'reset', + smShapeQueue: 'queue', + smShapeRepaint: 'repaint', + smShapeSetDefaultSide: 'set default side', + smShapeSetStageSize: 'set stage size', + smShapeRefresh: 'refresh' + }; + + angular.forEach( BEHAVIORS, function(method, directive) + { + app.directive( directive, ['SemanticUI', function(SemanticUI) + { + return SemanticUI.createBehavior( directive, 'shape', method ); + }]); + }); + + function SemanticShapeBind(SemanticUI) + { + return SemanticUI.createBind( 'smShapeBind', 'shape' ); + } + + function SemanticShape(SemanticShapeLink) + { + return { + + restrict: 'E', + + replace: true, + + transclude: true, + + scope: { + + settings: '=', + onInit: '=', + /* Events */ + onBeforeChange: '=', + onChange: '=', + }, + + template: [ + '
', + '
', + '
', + '
' + ].join('\n'), + + link: SemanticShapeLink + + }; + } + + function SemanticShapeLink(SemanticUI) + { + return function(scope, element, attributes) + { + var settings = scope.settings || {}; + + SemanticUI.linkSettings( scope, element, attributes, 'shape' ); + + SemanticUI.linkEvents( scope, settings, $.fn.shape.settings, { + onBeforeChange: 'onBeforeChange', + onChange: 'onChange' + }); + + element.shape( settings ); + + if ( angular.isFunction( scope.onInit ) ) { + scope.onInit( element ); + } + }; + } + +})( angular.module('semantic-ui-shape', ['semantic-ui-core']) ); + (function(app) { diff --git a/angular-semantic-ui.min.js b/angular-semantic-ui.min.js index 36c1630..64fa265 100644 --- a/angular-semantic-ui.min.js +++ b/angular-semantic-ui.min.js @@ -1,12 +1,11 @@ /** - * semantic-ui-angular-jquery - 0.2.0 + * semantic-ui-angular-jquery - 0.2.1 * Angular Directives for Semantic UI * * https://github.com/ClickerMonkey/SemanticUI-Angular * Released under the MIT license. * Copyright 2016 Philip Diffenderfer and contributors. */ -angular.module("semantic-ui",["semantic-ui-core","semantic-ui-accordion","semantic-ui-checkbox","semantic-ui-radio","semantic-ui-comment","semantic-ui-dimmer","semantic-ui-dropdown","semantic-ui-embed","semantic-ui-list","semantic-ui-menu","semantic-ui-modal","semantic-ui-popup","semantic-ui-progress","semantic-ui-rating","semantic-ui-search","semantic-ui-shape","semantic-ui-sidebar","semantic-ui-sticky","semantic-ui-tab","semantic-ui-transition","semantic-ui-timeago"]),function(e){function n(e){var n={setDefaultFunction:function(e,n,i,t){i[n]||(e[n]=t)},triggerChange:function(e,n,i,t){e.$watch(n,function(n){t&&e.$evalAsync(function(){i.trigger("change")}),t=!0})},bindAttribute:function(e,n,i,t){e.$watch(n,function(e){i.attr(t,e)})},onEvent:function(e,n,i){e[n]=function(e,n){return function(){var t=n;angular.isFunction(e)&&(t=e.apply(this,arguments));var o=i.apply(this,arguments);return t!==n?t:o}}(e[n])},linkEvents:function(e,i,t,o){for(var a in o)!function(o,a){n.onEvent(i,a,function(){var n=e[o];return angular.isFunction(n)?n.apply(this,arguments):angular.isFunction(t[a])?t[a].apply(this,arguments):void 0})}(o[a],a)},linkSettings:function(e,n,i,t,o,a){var c=a||"settings";c in i&&e.$watch(c,function(e){o&&angular.forEach(e,function(e,i){n[t]("setting",i,e)}),o=!0},!0)},createBind:function(e,i){return{restrict:"A",link:function(t,o,a){n.linkSettings(t,o,a,i,!1,e),n.initBind(t,o,a,e,i)}}},initBind:function(e,n,i,t,o){n.ready(function(){var a={},c=i[t];c&&(a=e.$eval(c)),n[o](a)})},createBehavior:function(e,i,t){return{restrict:"A",link:function(o,a,c){n.initBehavior(o,c,e,a,i,t)}}},initBehavior:function(e,n,i,t,o,a){var c={$:void 0,evt:"click",enabled:!0,value:void 0},s=function(){c.enabled&&$(c.$)[o](a,c.value)},r=!1;e.$watch(n[i],function(e){angular.isString(e)?c.$=e:angular.isObject(e)&&(angular.isString(e.evt)||(e.evt=c.evt),angular.isDefined(e.enabled)||(e.enabled=c.enabled),c=e),r&&t.off(r,s),t.on(r=c.evt,s)},!0)},watcher:function(e,n,i,t,o,a){var c=!1;return e.$watch(n,function(e){c||i.call(t,e),c=!1},a),{set:function(i){(e[n]!=i||o)&&e.$evalAsync(function(){e[n]=i,c=!0})},update:function(){e.$evalAsync(function(){c=!0})}}},RecursiveCompiler:function(n){return function(i,t){angular.isFunction(t)&&(t={post:t});var o,a=i.contents().remove();return{pre:t&&t.pre?t.pre:null,post:function(i,c){o||(o=e(a)),o(i,function(e){c.append(e)}),t&&t.post&&t.post.apply(null,arguments),angular.isFunction(n)&&n.apply(null,arguments)}}}}};return n}function i(){return{restrict:"E",replace:!0,transclude:!0,template:''}}function t(){return{restrict:"E",replace:!0,transclude:!0,scope:{icon:"@"},template:''}}function o(){return{restrict:"E",replace:!0,template:['"].join("\n")}}function a(e){var n=function(e){return e};try{$sce=e.get("$sce"),n=function(e){return $sce.getTrustedHtml($sce.trustAsHtml(e))}}catch(i){}return function(e,i,t){e.$watch(t.smHtml,function(e){i.html(n(e||""))})}}e.factory("SemanticUI",["$compile",n]).directive("smButton",i).directive("smMenuItem",t).directive("smFlatMenu",o).directive("smHtml",["$injector",a])}(angular.module("semantic-ui-core",[])),function(e){function n(e){return e.createBind("smAccordionBind","accordion")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{settings:"=",onInit:"=",onOpening:"=",onOpen:"=",onClosing:"=",onClose:"=",onChange:"="},template:'
',link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};e.linkSettings(n,i,t,"accordion",!0),e.linkEvents(n,o,$.fn.accordion.settings,{onOpening:"onOpening",onOpen:"onOpen",onClosing:"onClosing",onClose:"onClose",onChange:"onChange"}),i.accordion(o),angular.isFunction(n.onInit)&&n.onInit(i)})}}function o(){return{restrict:"E",required:"title",transclude:!0,scope:{title:"=",active:"="},template:['
',' '," {{ title }}","
",'
',"
"].join("\n")}}e.factory("SemanticAccordionLink",["SemanticUI",t]).directive("smAccordionBind",["SemanticUI",n]).directive("smAccordion",["SemanticAccordionLink",i]).directive("smAccordionGroup",o);var a={smAccordionOpen:"open",smAccordionCloseOthers:"close others",smAccordionClose:"close",smAccordionToggle:"toggle"};angular.forEach(a,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"accordion",n)}])})}(angular.module("semantic-ui-accordion",["semantic-ui-core"])),function(e){function n(e){return{restrict:"E",replace:!0,scope:{comments:"=",content:"&",avatar:"&",author:"&",date:"&",replies:"&",reply:"=",collapsible:"=",onAuthor:"&",onReply:"&",onShowReplies:"&",onHideReplies:"&"},template:['
','
',' ',' '," ",'
',' ',' ",'
','
',' Reply',' ',' ',"
","
",' ',"
","
"].join("\n"),controller:"SemanticCommentsController",compile:e.RecursiveCompiler()}}function i(e){e.setCollapsed=function(n,i,t){var o={comment:n,$event:i};n.$isCollapsed!=t&&(n.$isCollapsed?e.onShowReplies(o)!==!1&&(n.$isCollapsed=!1):e.onHideReplies(o)!==!1&&(n.$isCollapsed=!0))},e.hasReplies=function(n){if(!e.reply)return!1;var i=e.replies(n);return i&&i.length},e.getReplyCount=function(n){if(!e.reply)return!1;var i=e.replies(n);return i?i.length:0},e.getShowRepliesText=function(n){var i=e.getReplyCount(n);return 0===i?"":1===i?"Show Reply":"Show Replies ("+i+")"},e.getHideRepliesText=function(n){var i=e.getReplyCount(n);return 0===i?"":1===i?"Hide Reply":"Hide Replies ("+i+")"}}e.controller("SemanticCommentsController",["$scope",i]).directive("smComments",["SemanticUI",n])}(angular.module("semantic-ui-comment",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smDimmerBind","dimmer")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{visible:"=",settings:"=",onInit:"=",onShow:"=",onHide:"=",onChange:"="},template:'
',link:e}}function t(e){return function(n,i,t){var o=n.settings||{};if(e.linkSettings(n,i,t,"dimmer"),t.visible){var a=e.watcher(n,"visible",function(e){i.dimmer(e?"show":"hide")});e.onEvent(o,"onShow",function(e){a.set(!0)}),e.onEvent(o,"onHide",function(e){a.set(!1)})}e.linkEvents(n,o,$.fn.dimmer.settings,{onShow:"onShow",onHide:"onHide",onChange:"onChange"}),i.dimmer(o),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticDimmerLink",["SemanticUI",t]).directive("smDimmerBind",["SemanticUI",n]).directive("smDimmer",["SemanticDimmerLink",i]);var o={smDimmerShow:"show",smDimmerHide:"hide",smDimmerToggle:"toggle"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"dimmer",n)}])})}(angular.module("semantic-ui-dimmer",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smCheckboxBind","checkbox")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{model:"=",label:"@",settings:"=",enabled:"=",indeterminateValue:"=",checkedValue:"=",uncheckedValue:"=",children:"@",onInit:"=",onChange:"=",onChecked:"=",onIndeterminate:"=",onDeterminate:"=",onUnchecked:"=",onEnable:"=",onDisable:"="},template:['
',' '," ","
"].join("\n"),link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};e.linkSettings(n,i,t,"checkbox",!0),e.triggerChange(n,"model",i,!0);var a=function(){return angular.isDefined(n.checkedValue)?n.checkedValue:!0},c=function(){return angular.isDefined(n.uncheckedValue)?n.uncheckedValue:!1},s=function(){return angular.isDefined(n.indeterminateValue)?n.indeterminateValue:void 0};if(t.enabled){var r=e.watcher(n,"enabled",function(e){angular.isDefined(e)&&i.checkbox(e?"set enabled":"set disabled")});e.onEvent(o,"onEnable",function(e){r.set(!0)}),e.onEvent(o,"onDisable",function(e){r.set(!1)})}var l=e.watcher(n,"model",function(e){angular.isDefined(e)&&i.checkbox(e?"set checked":"set unchecked")});if(e.onEvent(o,"onChecked",function(){l.set(a())}),e.onEvent(o,"onUnchecked",function(){l.set(c())}),e.onEvent(o,"onIndeterminate",function(){l.set(s())}),e.linkEvents(n,o,$.fn.checkbox.settings,{onChange:"onChange",onChecked:"onChecked",onIndeterminate:"onIndeterminate",onDeterminate:"onDeterminate",onUnchecked:"onUnchecked",onEnable:"onEnable",onDisable:"onDisable"}),n.children){var u=$(n.children),d=!1;e.onEvent(o,"onChecked",function(){d=!0,u.checkbox("check"),d=!1}),e.onEvent(o,"onUnchecked",function(){d=!0,u.checkbox("uncheck"),d=!1}),u.children("input[type=checkbox], input[type=radio]").change(function(){if(!d){var e=0;u.each(function(n,i){$(i).checkbox("is checked")&&e++}),i.checkbox(0===e?"uncheck":e===u.length?"check":"indeterminate")}})}i.checkbox(o),n.model==a()?i.checkbox("set checked"):n.model===s()&&i.checkbox("set indeterminate"),angular.isDefined(n.enabled)&&!n.enabled&&i.checkbox("set disabled"),angular.isFunction(n.onInit)&&n.onInit(i)})}}e.factory("SemanticCheckboxLink",["SemanticUI",t]).directive("smCheckboxBind",["SemanticUI",n]).directive("smCheckbox",["SemanticCheckboxLink",i]);var o={smCheckboxToggle:"toggle",smCheckboxCheck:"check",smCheckboxUncheck:"uncheck",smCheckboxIndeterminate:"indeterminate",smCheckboxDeterminate:"determinate",smCheckboxEnable:"enable",smCheckboxDisable:"disable"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"checkbox",n)}])})}(angular.module("semantic-ui-checkbox",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smRadioBind","checkbox")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{model:"=",label:"@",name:"@",value:"=",settings:"=",enabled:"=",onInit:"=",onChange:"=",onChecked:"=",onUnchecked:"=",onEnable:"=",onDisable:"="},template:['
',' '," ","
"].join("\n"),link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};if(e.linkSettings(n,i,t,"checkbox",!0),e.triggerChange(n,"model",i,!0),t.enabled){var a=e.watcher(n,"enabled",function(e){angular.isDefined(e)&&i.checkbox(e?"set enabled":"set disabled")});e.onEvent(o,"onEnable",function(e){a.set(!0)}),e.onEvent(o,"onDisable",function(e){a.set(!1)})}var c=e.watcher(n,"model",function(e){e===n.value&&i.checkbox("set checked")});e.onEvent(o,"onChecked",function(){c.set(n.value)}),e.linkEvents(n,o,$.fn.checkbox.settings,{onChange:"onChange",onChecked:"onChecked",onUnchecked:"onUnchecked",onEnable:"onEnable",onDisable:"onDisable"}),i.checkbox(o),n.model===n.value&&i.checkbox("set checked"),i.hasClass("slider")&&i.removeClass("radio"),angular.isDefined(n.enabled)&&!n.enabled&&i.checkbox("set disabled"),angular.isFunction(n.onInit)&&n.onInit(i)})}}e.factory("SemanticRadioLink",["SemanticUI",t]).directive("smRadioBind",["SemanticUI",n]).directive("smRadio",["SemanticRadioLink",i]);var o={smRadioCheck:"check",smRadioEnable:"enable",smRadioDisable:"disable"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"checkbox",n)}])})}(angular.module("semantic-ui-radio",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smEmbedBind","embed")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{source:"@",sourceId:"@",url:"@",placeholder:"@",icon:"@",settings:"=",onInit:"=",onCreate:"=",onDisplay:"=",onPlaceholderDisplay:"=",onEmbed:"="},template:'
',link:e}}function t(e){return function(n,i,t){var o=n.settings||{};e.linkSettings(n,i,t,"embed"),n.source&&(o.source=n.source),n.sourceId&&(o.id=n.sourceId),n.placeholder&&(o.placeholder=n.placeholder),n.icon&&(o.icon=n.icon),n.url&&(o.url=n.url),e.linkEvents(n,o,$.fn.embed.settings,{onCreate:"onCreate",onDisplay:"onDisplay",onPlaceholderDisplay:"onPlaceholderDisplay",onEmbed:"onEmbed"}),i.embed(o),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticEmbedLink",["SemanticUI",t]).directive("smEmbedBind",["SemanticUI",n]).directive("smEmbed",["SemanticEmbedLink",i]);var o={smEmbedReset:"reset",smEmbedShow:"show",smEmbedHide:"hide",smEmbedDestroy:"destroy"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"embed",n)}])})}(angular.module("semantic-ui-embed",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smModalBind","modal")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{visible:"=",settings:"=",onInit:"=",onShow:"=",onVisible:"=",onHide:"=",onHidden:"=",onApprove:"=",onDeny:"="},template:'',link:e}}function t(e){return function(n,i,t){var o=n.settings||{};if(e.linkSettings(n,i,t,"modal"),t.visible){var a=e.watcher(n,"visible",function(e){i.modal(e?"show":"hide")});e.onEvent(o,"onHide",function(){a.set(!1)})}e.linkEvents(n,o,$.fn.modal.settings,{onShow:"onShow",onVisible:"onVisible",onHide:"onHide",onHidden:"onHidden",onApprove:"onApprove",onDeny:"onDeny"}),i.modal(o),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticModalLink",["SemanticUI",t]).directive("smModalBind",["SemanticUI",n]).directive("smModal",["SemanticModalLink",i]);var o={smModalShow:"show",smModalHide:"hide",smModalToggle:"toggle",smModalRefresh:"refresh",smModalShowDimmer:"show dimmer",smModalHideDimmer:"hide dimmer",smModalHideOthers:"hide others",smModalHideAll:"hide all",smModalCacheSizes:"cache sizes",smModalSetActive:"set active"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"modal",n)}])})}(angular.module("semantic-ui-modal",["semantic-ui-core"])),function(e){function n(e,n){return{restrict:"E",replace:!0,scope:{items:"=",description:"&",icon:"&",image:"&",header:"&",headerHref:"&",children:"&",onHeader:"&",has:"=?"},template:['
','
',' ',' ','
','
',' ','
',' ',"
",'
',"
","
"].join("\n"),compile:e.RecursiveCompiler(n)}}function i(e){return function(n,i,t){n.has||(n.has={icon:!!t.icon,image:!!t.image,header:!!t.header,headerLink:!!t.headerHref,description:!!t.description,children:!!t.children}),n.getChildCount=function(e){var i=n.children(e);return i?i.length:0},e.setDefaultFunction(n,"description",t,function(e){return e.item}),e.setDefaultFunction(n,"icon",t,function(e){return e.item.icon}),e.setDefaultFunction(n,"header",t,function(e){return e.item.header}),e.setDefaultFunction(n,"children",t,function(e){return e.item.children})}}e.factory("SemanticListLink",["SemanticUI",i]).directive("smList",["SemanticUI","SemanticListLink",n])}(angular.module("semantic-ui-list",["semantic-ui-core"])),function(e){function n(e){return{restrict:"E",replace:!0,scope:{items:"=",label:"&",onClick:"&",children:"&",description:"&",icon:"&",hidden:"&",divider:"&"},template:['"].join("\n"),controller:"SemanticMenuController",compile:e.RecursiveCompiler()}}function i(e){e.hasChildren=function(n){var i=e.children({item:n});return i&&i.length},e.getChildren=function(n){return e.children({item:n})},e.getLabel=function(n){return e.label({item:n})},e.getIcon=function(n){return e.icon({item:n})},e.getDescription=function(n){return e.description({item:n})},e.isHidden=function(n){return e.hidden({item:n})},e.isDivider=function(n){return e.divider({item:n})}}e.controller("SemanticMenuController",["$scope",i]).directive("smMenu",["SemanticUI",n])}(angular.module("semantic-ui-menu",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smPopupBind","popup")}function i(e){return{restrict:"A",scope:{smPopup:"=",smPopupTitle:"=",smPopupHtml:"=",smPopupPosition:"@",smPopupVariation:"@",smPopupSettings:"=",smPopupOnInit:"=",smPopupOnCreate:"=",smPopupOnRemove:"=",smPopupOnShow:"=",smPopupOnVisible:"=",smPopupOnHide:"=",smPopupOnHidden:"="},link:e}}function t(e){return function(n,i,t){var o=n.smPopupSettings||{};e.linkSettings(n,i,t,"popup",!1,"smPopupSettings"),e.bindAttribute(n,"smPopup",i,"data-content"),e.bindAttribute(n,"smPopupTitle",i,"data-title"),e.bindAttribute(n,"smPopupHtml",i,"data-html"),e.bindAttribute(n,"smPopupPosition",i,"data-position"),e.bindAttribute(n,"smPopupVariation",i,"data-variation"),e.linkEvents(n,o,{onCreate:"smPopupOnCreate",onRemove:"smPopupOnRemove",onShow:"smPopupOnShow",onVisible:"smPopupOnVisible",onHide:"smPopupOnHide",onHidden:"smPopupOnHidden"}),i.popup(o),angular.isFunction(n.smPopupOnInit)&&n.smPopupOnInit(i)}}function o(e){return{restrict:"A",scope:{smPopupInline:"=",smPopupInlineOnInit:"=",smPopupInlineOnCreate:"=",smPopupInlineOnRemove:"=",smPopupInlineOnShow:"=",smPopupInlineOnVisible:"=",smPopupInlineOnHide:"=",smPopupInlineOnHidden:"="},link:e}}function a(e){return function(n,i,t){var o=n.smPopupInline||{};e.linkSettings(n,i,t,"popup",!1,"smPopupInline"),e.linkEvents(n,o,{onCreate:"smPopupInlineOnCreate",onRemove:"smPopupInlineOnRemove",onShow:"smPopupInlineOnShow",onVisible:"smPopupInlineOnVisible",onHide:"smPopupInlineOnHide",onHidden:"smPopupInlineOnHidden"}),o.inline=!0,i.popup(o),angular.isFunction(n.smPopupInlineOnInit)&&n.smPopupInlineOnInit(i)}}function c(e){return{restrict:"A",scope:{smPopupDisplay:"@",smPopupDisplaySettings:"=",smPopupDisplayOnInit:"=",smPopupDisplayOnCreate:"=",smPopupDisplayOnRemove:"=",smPopupDisplayOnShow:"=",smPopupDisplayOnVisible:"=",smPopupDisplayOnHide:"=",smPopupDisplayOnHidden:"="},link:e}}function s(e){return function(n,i,t){var o=n.smPopupDisplaySettings||{};e.linkSettings(n,i,t,"popup",!1,"smPopupDisplaySettings"),e.linkEvents(n,o,$.fn.popup.settings,{onCreate:"smPopupDisplayOnCreate",onRemove:"smPopupDisplayOnRemove",onShow:"smPopupDisplayOnShow",onVisible:"smPopupDisplayOnVisible",onHide:"smPopupDisplayOnHide",onHidden:"smPopupDisplayOnHidden"}),o.popup='[data-popup-named="'+t.smPopupDisplay+'"]',i.popup(o),angular.isFunction(n.smPopupDisplayOnInit)&&n.smPopupDisplayOnInit(i)}}function r(){return{restrict:"E",replace:!0,transclude:!0,scope:{name:"@"},template:''}}e.factory("SemanticPopupLink",["SemanticUI",t]).factory("SemanticPopupInlineLink",["SemanticUI",a]).factory("SemanticPopupDisplayLink",["SemanticUI",s]).directive("smPopupBind",["SemanticUI",n]).directive("smPopup",["SemanticPopupLink",i]).directive("smPopupInline",["SemanticPopupInlineLink",o]).directive("smPopupDisplay",["SemanticPopupDisplayLink",c]).directive("smPopupDetached",[r]);var l={smPopupShow:"show",smPopupHide:"hide",smPopupHideAll:"hide all",smPopupToggle:"toggle",smPopupReposition:"reposition",smPopupDestroy:"destroy",smPopupRemove:"remove popup"};angular.forEach(l,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"popup",n)}])})}(angular.module("semantic-ui-popup",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smProgressBind","progress")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{model:"=",total:"=",label:"@",activeText:"@",successText:"@",errorText:"@",warningText:"@",duration:"@",onInit:"=",onChange:"=",onSuccess:"=",onActive:"=",onError:"=",onWarning:"="},template:['
','
','
',"
",'
',"
"].join("\n"),link:e}}function t(e){var n=function(e,n,i,t,o){angular.isDefined(n[t])&&(i.text=i.text||{},i.text[o]=e[t])};return function(i,t,o){var a=i.settings||{};e.linkSettings(i,t,o,"progress"),e.linkEvents(i,a,$.fn.progress.settings,{onChange:"onChange",onSuccess:"onSuccess",onActive:"onActive",onError:"onError",onWarning:"onWarning"}),angular.isDefined(a.showActivity)||(a.showActivity=!1),angular.isDefined(o.label)&&(a.label=i.label),a.total=angular.isDefined(o.total)?i.total:100,angular.isDefined(o.model)&&(a.value=i.model),n(i,o,a,"activeText","active"),n(i,o,a,"successText","success"),n(i,o,a,"errorText","error"),n(i,o,a,"warningText","warning"),t.progress(a),e.watcher(i,"model",function(e){var n=t.progress("get total")||100;t.progress("set percent",100*e/n),t.progress("set value",e)}),angular.isDefined(o.duration)&&e.watcher(i,"duration",function(e){t.progress("set duration",e)}),angular.isDefined(o.total)&&e.watcher(i,"total",function(e){t.progress("set total",e)}),angular.isFunction(i.onInit)&&i.onInit(t)}}e.factory("SemanticProgressLink",["SemanticUI",t]).directive("smProgressBind",["SemanticUI",n]).directive("smProgress",["SemanticProgressLink",i]);var o={smProgressIncrement:"increment"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"progress",n)}])})}(angular.module("semantic-ui-progress",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smDropdownBind","dropdown")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{model:"=",items:"=",label:"&",value:"&",settings:"=",defaultText:"=",onInit:"=",emptyValue:"=",onChange:"=",onAdd:"=",onRemove:"=",onLabelCreate:"=",onLabelSelect:"=",onNoResults:"=",onShow:"=",onHide:"="},template:['"].join("\n"),controller:"SemanticDropdownController",link:e}}function t(e){var n={};e.getValue=function(n){return e.getKey(e.value({item:n}))},e.getKey=function(e){return(e?e.$$hashKey||e:e)+""},e.isEmpty=function(){return!e.model||0===e.model.length},e.translateValue=function(n){var i=e.getKey(n),t=e.findMatchingItem(i);return angular.isDefined(t)?e.getValue(t):void 0},e.hasDefault=function(){return e.defaultText&&e.isEmpty()},e.getDefaultText=function(){return e.isEmpty()?e.defaultText:""},e.findMatchingItem=function(e){return n[e]},e.updateHashMap=function(i){n={},angular.forEach(i,function(i){n[e.getValue(i)]=i})}}function o(e,n){return function(i,t,o){var a=function(e){n(function(){if(t.dropdown("is multiple")){if(e instanceof Array){for(var n=[],o=0;o
',link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};if(e.linkSettings(n,i,t,"rating",!0),e.triggerChange(n,"model",i,!0),t.disabled){e.watcher(n,"disabled",function(e){i.rating(e?"disable":"enable")})}var a=e.watcher(n,"model",function(e){i.rating("set rating",e)});e.onEvent(o,"onRate",function(e){a.set(e)}),e.linkEvents(n,o,$.fn.rating.settings,{onRate:"onRate"}),i.rating(o),n.disabled&&i.rating("disable"),angular.isFunction(n.onInit)&&n.onInit(i)})}}e.factory("SemanticRatingLink",["SemanticUI",t]).directive("smRatingBind",["SemanticUI",n]).directive("smRating",["SemanticRatingLink",i]);var o={smRatingSet:"set rating",smRatingDisable:"disable",smRatingEnable:"enable",smRatingClear:"clear rating"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"rating",n)}])})}(angular.module("semantic-ui-rating",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smSearchBind","search")}function i(e){return{restrict:"E",replace:!0,scope:{model:"=",text:"=?",icon:"@",placeholder:"@",category:"@",local:"=",remote:"@",settings:"=",onInit:"=",onSelect:"=",onResultsAdd:"=",onSearchQuery:"=",onResults:"=",onResultsOpen:"=",onResultsClose:"="},template:['"].join("\n"),link:e}}function t(e){var n=$.fn.search&&$.fn.search.settings&&$.fn.search.settings.fields?$.fn.search.settings.fields.title:"";return function(i,t,o){var a=i.settings||{},c=a.fields&&a.fields.title?a.fields.title:n;e.linkSettings(i,t,o,"search"),i.local&&(a.source=i.local),i.remote&&(a.apiSettings={url:i.remote}),i.category&&(a.type="category");var s=e.watcher(i,"model",function(e){t.search("set value",e&&c in e?e[c]:e)});e.onEvent(a,"onSelect",function(e,n){s.set(e),o.text&&i.$evalAsync(function(){i.text=e[c]})}),e.linkEvents(i,a,$.fn.search.settings,{onSelect:"onSelect",onResultsAdd:"onResultsAdd",onSearchQuery:"onSearchQuery",onResults:"onResults",onResultsOpen:"onResultsOpen",onResultsClose:"onResultsClose"}),t.search(a),angular.isFunction(i.onInit)&&i.onInit(t),i.model&&o.text&&c in i.model&&(i.text=i.model[c])}}e.factory("SemanticSearchLink",["SemanticUI",t]).directive("smSearchBind",["SemanticUI",n]).directive("smSearch",["SemanticSearchLink",i]);var o={smSearchQuery:"query",smSearchCancelQuery:"cancel query",smSearchSearchLocal:"search local",smSearchSearchRemote:"search remote",smSearchSet:"set value",smSearchShowResults:"show results",smSearchHideResults:"hide results",smSearchDestroy:"destroy"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"search",n)}])})}(angular.module("semantic-ui-search",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smShapeBind","shape")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{settings:"=",onInit:"=",onBeforeChange:"=",onChange:"="},template:['
','
',"
","
"].join("\n"),link:e}}function t(e){return function(n,i,t){var o=n.settings||{};e.linkSettings(n,i,t,"shape"),e.linkEvents(n,o,$.fn.shape.settings,{onBeforeChange:"onBeforeChange",onChange:"onChange"}),i.shape(o),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticShapeLink",["SemanticUI",t]).directive("smShapeBind",["SemanticUI",n]).directive("smShape",["SemanticShapeLink",i]); - -var o={smShapeFlipUp:"flip up",smShapeFlipDown:"flip down",smShapeFlipLeft:"flip left",smShapeFlipRight:"flip right",smShapeFlipOver:"flip over",smShapeFlipBack:"flip back",smShapeSetNextSide:"set next side",smShapeReset:"reset",smShapeQueue:"queue",smShapeRepaint:"repaint",smShapeSetDefaultSide:"set default side",smShapeSetStageSize:"set stage size",smShapeRefresh:"refresh"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"shape",n)}])})}(angular.module("semantic-ui-shape",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smSidebarBind","sidebar")}function i(e){return{restrict:"E",replace:!0,scope:{items:"=",label:"&",onClick:"&",visible:"=",settings:"=",onInit:"=",onVisible:"=",onShow:"=",onChange:"=",onHide:"=",onHidden:"="},template:['"].join("\n"),link:e}}function t(e){return function(n,i,t){var o=n.settings||{};if(e.setDefaultFunction(n,"label",t,function(e){return e.item}),e.linkSettings(n,i,t,"sidebar"),t.visible){var a=e.watcher(n,"visible",function(e){i.sidebar(e?"show":"hide")});e.onEvent(o,"onHide",function(){a.set(!1)}),e.onEvent(o,"onShow",function(){a.set(!0)})}e.linkEvents(n,o,$.fn.sidebar.settings,{onVisible:"onVisible",onShow:"onShow",onChange:"onChange",onHide:"onHide",onHidden:"onHidden"});var c=$(".pusher");c.length&&i.insertBefore(c),i.sidebar(o),n.visible&&i.sidebar("show"),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticSidebarLink",["SemanticUI",t]).directive("smSidebarBind",["SemanticUI",n]).directive("smSidebar",["SemanticSidebarLink",i]);var o={smSidebarShow:"show",smSidebarHide:"hide",smSidebarToggle:"toggle",smSidebarPushPage:"push page",smSidebarPullPage:"pull page",smSidebarAddBodyCss:"add body css",smSidebarRemoveBodyCss:"remove body css"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"sidebar",n)}])})}(angular.module("semantic-ui-sidebar",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smStickyBind","sticky")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{context:"@",settings:"=",onInit:"=",onReposition:"=",onScroll:"=",onStick:"=",onUnstick:"=",onTop:"=",onBottom:"="},template:'
',link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};e.linkSettings(n,i,t,"sticky",!0),e.linkEvents(n,o,$.fn.sticky.settings,{onReposition:"onReposition",onScroll:"onScroll",onStick:"onStick",onStick:"onStick",onTop:"onTop",onBottom:"onBottom"}),o.context||(o.context=n.context),i.sticky(o),angular.isFunction(n.onInit)&&n.onInit(i)})}}e.factory("SemanticStickyLink",["SemanticUI",t]).directive("smStickyBind",["SemanticUI",n]).directive("smSticky",["SemanticStickyLink",i]);var o={smStickyRefresh:"refresh"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"sticky",n)}])})}(angular.module("semantic-ui-sticky",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smTabBind","tab")}function i(e){return{restrict:"E",replace:!0,scope:{tabs:"=",active:"=?",settings:"="},template:['"].join("\n"),link:e}}function t(e,n){return function(i,t,o){var a=function(e){e&&t.tab("change tab",e)};n(function(){var n=i.settings||{},c=t.children(".item"),s=!!o.active;if(e.linkSettings(i,c,o,"tab",!0),s){var r=e.watcher(i,"active",function(e){a(e)});e.onEvent(n,"onVisible",function(e){r.set(e)})}c.tab(n),s&&a(i.active)})}}function o(e){return{restrict:"E",replace:!0,transclude:!0,scope:{name:"@"},template:'
'}}e.factory("SemanticTabMenuLink",["SemanticUI","$timeout",t]).directive("smTabBind",["SemanticUI",n]).directive("smTabMenu",["SemanticTabMenuLink",i]).directive("smTab",["SemanticUI",o]);var a={smTabSet:"change tab"};angular.forEach(a,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"tab",n)}])})}(angular.module("semantic-ui-tab",["semantic-ui-core"])),function(e){function n(){function e(e){var n=e.getHours(),i=e.getMinutes(),t=10>i?"0"+i:i;return a[n%a.length]+":"+t+(12>n?"AM":"PM")}function n(e){return e>=11&&13>=e?e+"th":e+o[e%o.length]}function i(e){return Math.ceil(((new Date).getTime()-e.getTime())/864e5)}var t=["January","February","March","April","May","June","July","August","September","October","November","December"],o=["th","st","nd","rd","th","th","th","th","th","th"],a=["12","1","2","3","4","5","6","7","8","9","10","11"];return{restrict:"A",link:function(o,a,c){var s=!1,r=!1,l=function(){var o=new Date,c=new Date(o.getFullYear(),o.getMonth(),o.getDate()),u=new Date(o.getFullYear(),o.getMonth(),o.getDate()-1),d=o.getTime()-r.getTime(),m="",p=!1;if(6e4>d)m="Just now",p=6e4-d;else if(36e5>d){var h=Math.floor(d/6e4);m=1===h?"1 minute ago":h+" minutes ago",p=d%6e4}else if(r.getTime()>c.getTime())m="Today at "+e(r),p=d%36e5;else if(r.getTime()>u.getTime())m="Yesterday at "+e(r),p=d%36e5;else if(r.getMonth()===o.getMonth()&&r.getFullYear()===o.getFullYear())m+="The "+n(r.getDate()),m+=" at "+e(r),m+=" ("+i(r)+" days ago)",p=864e5;else{m+=t[r.getMonth()]+" "+n(r.getDate()),r.getFullYear()!==o.getFullYear()&&(m+=" "+r.getFullYear()),m+=" at "+e(r);var g=i(r);60>=g&&(m+=" ("+i(r)+" days ago)")}a.text(m),s&&(clearTimeout(s),s=!1),p&&(s=setTimeout(function(){s=!1,l()},p))};o.$watch(c.smTimeAgo,function(e){r=new Date(e),l()})}}}e.directive("smTimeAgo",n)}(angular.module("semantic-ui-timeago",["semantic-ui-core"])),function(e){function n(e){return{restrict:"A",scope:{smTransition:"@",smTransitionEvents:"@",smTransitionOther:"@"},link:e}}function i(e){return function(e,n,i){e.smTransitionEvents=e.smTransitionEvents||"click",n.on(e.smTransitionEvents,function(){(e.smTransitionOther?$(e.smTransitionOther):n).transition(e.smTransition)})}}e.factory("SemanticTransitionLink",["SemanticUI",i]).directive("smTransition",["SemanticTransitionLink",n])}(angular.module("semantic-ui-transition",["semantic-ui-core"])); +angular.module("semantic-ui",["semantic-ui-core","semantic-ui-accordion","semantic-ui-checkbox","semantic-ui-radio","semantic-ui-comment","semantic-ui-dimmer","semantic-ui-dropdown","semantic-ui-embed","semantic-ui-list","semantic-ui-menu","semantic-ui-modal","semantic-ui-popup","semantic-ui-progress","semantic-ui-rating","semantic-ui-search","semantic-ui-shape","semantic-ui-sidebar","semantic-ui-sticky","semantic-ui-tab","semantic-ui-transition","semantic-ui-timeago"]),function(e){function n(e){var n={setDefaultFunction:function(e,n,i,t){i[n]||(e[n]=t)},triggerChange:function(e,n,i,t){e.$watch(n,function(n){t&&e.$evalAsync(function(){i.trigger("change")}),t=!0})},bindAttribute:function(e,n,i,t){e.$watch(n,function(e){i.attr(t,e)})},onEvent:function(e,n,i){e[n]=function(e,n){return function(){var t=n;angular.isFunction(e)&&(t=e.apply(this,arguments));var o=i.apply(this,arguments);return t!==n?t:o}}(e[n])},linkEvents:function(e,i,t,o){for(var a in o)!function(o,a){n.onEvent(i,a,function(){var n=e[o];return angular.isFunction(n)?n.apply(this,arguments):angular.isFunction(t[a])?t[a].apply(this,arguments):void 0})}(o[a],a)},linkSettings:function(e,n,i,t,o,a){var c=a||"settings";c in i&&e.$watch(c,function(e){o&&angular.forEach(e,function(e,i){n[t]("setting",i,e)}),o=!0},!0)},createBind:function(e,i){return{restrict:"A",link:function(t,o,a){n.linkSettings(t,o,a,i,!1,e),n.initBind(t,o,a,e,i)}}},initBind:function(e,n,i,t,o){n.ready(function(){var a={},c=i[t];c&&(a=e.$eval(c)),n[o](a)})},createBehavior:function(e,i,t){return{restrict:"A",link:function(o,a,c){n.initBehavior(o,c,e,a,i,t)}}},initBehavior:function(e,n,i,t,o,a){var c={$:void 0,evt:"click",enabled:!0,value:void 0},s=function(){c.enabled&&$(c.$)[o](a,c.value)},r=!1;e.$watch(n[i],function(e){angular.isString(e)?c.$=e:angular.isObject(e)&&(angular.isString(e.evt)||(e.evt=c.evt),angular.isDefined(e.enabled)||(e.enabled=c.enabled),c=e),r&&t.off(r,s),t.on(r=c.evt,s)},!0)},watcher:function(e,n,i,t,o,a){var c=!1;return e.$watch(n,function(e){c||i.call(t,e),c=!1},a),{set:function(i){(e[n]!=i||o)&&e.$evalAsync(function(){e[n]=i,c=!0})},update:function(){e.$evalAsync(function(){c=!0})}}},RecursiveCompiler:function(n){return function(i,t){angular.isFunction(t)&&(t={post:t});var o,a=i.contents().remove();return{pre:t&&t.pre?t.pre:null,post:function(i,c){o||(o=e(a)),o(i,function(e){c.append(e)}),t&&t.post&&t.post.apply(null,arguments),angular.isFunction(n)&&n.apply(null,arguments)}}}}};return n}function i(){return{restrict:"E",replace:!0,transclude:!0,template:''}}function t(){return{restrict:"E",replace:!0,transclude:!0,scope:{icon:"@"},template:''}}function o(){return{restrict:"E",replace:!0,template:['"].join("\n")}}function a(e){var n=function(e){return e};try{$sce=e.get("$sce"),n=function(e){return $sce.getTrustedHtml($sce.trustAsHtml(e))}}catch(i){}return function(e,i,t){e.$watch(t.smHtml,function(e){i.html(n(e||""))})}}e.factory("SemanticUI",["$compile",n]).directive("smButton",i).directive("smMenuItem",t).directive("smFlatMenu",o).directive("smHtml",["$injector",a])}(angular.module("semantic-ui-core",[])),function(e){function n(e){return e.createBind("smCheckboxBind","checkbox")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{model:"=",label:"@",settings:"=",enabled:"=",indeterminateValue:"=",checkedValue:"=",uncheckedValue:"=",children:"@",onInit:"=",onChange:"=",onChecked:"=",onIndeterminate:"=",onDeterminate:"=",onUnchecked:"=",onEnable:"=",onDisable:"="},template:['
',' '," ","
"].join("\n"),link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};e.linkSettings(n,i,t,"checkbox",!0),e.triggerChange(n,"model",i,!0);var a=function(){return angular.isDefined(n.checkedValue)?n.checkedValue:!0},c=function(){return angular.isDefined(n.uncheckedValue)?n.uncheckedValue:!1},s=function(){return angular.isDefined(n.indeterminateValue)?n.indeterminateValue:void 0};if(t.enabled){var r=e.watcher(n,"enabled",function(e){angular.isDefined(e)&&i.checkbox(e?"set enabled":"set disabled")});e.onEvent(o,"onEnable",function(e){r.set(!0)}),e.onEvent(o,"onDisable",function(e){r.set(!1)})}var l=e.watcher(n,"model",function(e){angular.isDefined(e)&&i.checkbox(e?"set checked":"set unchecked")});if(e.onEvent(o,"onChecked",function(){l.set(a())}),e.onEvent(o,"onUnchecked",function(){l.set(c())}),e.onEvent(o,"onIndeterminate",function(){l.set(s())}),e.linkEvents(n,o,$.fn.checkbox.settings,{onChange:"onChange",onChecked:"onChecked",onIndeterminate:"onIndeterminate",onDeterminate:"onDeterminate",onUnchecked:"onUnchecked",onEnable:"onEnable",onDisable:"onDisable"}),n.children){var u=$(n.children),d=!1;e.onEvent(o,"onChecked",function(){d=!0,u.checkbox("check"),d=!1}),e.onEvent(o,"onUnchecked",function(){d=!0,u.checkbox("uncheck"),d=!1}),u.children("input[type=checkbox], input[type=radio]").change(function(){if(!d){var e=0;u.each(function(n,i){$(i).checkbox("is checked")&&e++}),i.checkbox(0===e?"uncheck":e===u.length?"check":"indeterminate")}})}i.checkbox(o),n.model==a()?i.checkbox("set checked"):n.model===s()&&i.checkbox("set indeterminate"),angular.isDefined(n.enabled)&&!n.enabled&&i.checkbox("set disabled"),angular.isFunction(n.onInit)&&n.onInit(i)})}}e.factory("SemanticCheckboxLink",["SemanticUI",t]).directive("smCheckboxBind",["SemanticUI",n]).directive("smCheckbox",["SemanticCheckboxLink",i]);var o={smCheckboxToggle:"toggle",smCheckboxCheck:"check",smCheckboxUncheck:"uncheck",smCheckboxIndeterminate:"indeterminate",smCheckboxDeterminate:"determinate",smCheckboxEnable:"enable",smCheckboxDisable:"disable"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"checkbox",n)}])})}(angular.module("semantic-ui-checkbox",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smRadioBind","checkbox")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{model:"=",label:"@",name:"@",value:"=",settings:"=",enabled:"=",onInit:"=",onChange:"=",onChecked:"=",onUnchecked:"=",onEnable:"=",onDisable:"="},template:['
',' '," ","
"].join("\n"),link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};if(e.linkSettings(n,i,t,"checkbox",!0),e.triggerChange(n,"model",i,!0),t.enabled){var a=e.watcher(n,"enabled",function(e){angular.isDefined(e)&&i.checkbox(e?"set enabled":"set disabled")});e.onEvent(o,"onEnable",function(e){a.set(!0)}),e.onEvent(o,"onDisable",function(e){a.set(!1)})}var c=e.watcher(n,"model",function(e){e===n.value&&i.checkbox("set checked")});e.onEvent(o,"onChecked",function(){c.set(n.value)}),e.linkEvents(n,o,$.fn.checkbox.settings,{onChange:"onChange",onChecked:"onChecked",onUnchecked:"onUnchecked",onEnable:"onEnable",onDisable:"onDisable"}),i.checkbox(o),n.model===n.value&&i.checkbox("set checked"),i.hasClass("slider")&&i.removeClass("radio"),angular.isDefined(n.enabled)&&!n.enabled&&i.checkbox("set disabled"),angular.isFunction(n.onInit)&&n.onInit(i)})}}e.factory("SemanticRadioLink",["SemanticUI",t]).directive("smRadioBind",["SemanticUI",n]).directive("smRadio",["SemanticRadioLink",i]);var o={smRadioCheck:"check",smRadioEnable:"enable",smRadioDisable:"disable"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"checkbox",n)}])})}(angular.module("semantic-ui-radio",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smAccordionBind","accordion")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{settings:"=",onInit:"=",onOpening:"=",onOpen:"=",onClosing:"=",onClose:"=",onChange:"="},template:'
',link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};e.linkSettings(n,i,t,"accordion",!0),e.linkEvents(n,o,$.fn.accordion.settings,{onOpening:"onOpening",onOpen:"onOpen",onClosing:"onClosing",onClose:"onClose",onChange:"onChange"}),i.accordion(o),angular.isFunction(n.onInit)&&n.onInit(i)})}}function o(){return{restrict:"E",required:"title",transclude:!0,scope:{title:"=",active:"="},template:['
',' '," {{ title }}","
",'
',"
"].join("\n")}}e.factory("SemanticAccordionLink",["SemanticUI",t]).directive("smAccordionBind",["SemanticUI",n]).directive("smAccordion",["SemanticAccordionLink",i]).directive("smAccordionGroup",o);var a={smAccordionOpen:"open",smAccordionCloseOthers:"close others",smAccordionClose:"close",smAccordionToggle:"toggle"};angular.forEach(a,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"accordion",n)}])})}(angular.module("semantic-ui-accordion",["semantic-ui-core"])),function(e){function n(e){return{restrict:"E",replace:!0,scope:{comments:"=",content:"&",avatar:"&",author:"&",date:"&",replies:"&",reply:"=",collapsible:"=",onAuthor:"&",onReply:"&",onShowReplies:"&",onHideReplies:"&"},template:['
','
',' ',' '," ",'
',' ',' ",'
','
',' Reply',' ',' ',"
","
",' ',"
","
"].join("\n"),controller:"SemanticCommentsController",compile:e.RecursiveCompiler()}}function i(e){e.setCollapsed=function(n,i,t){var o={comment:n,$event:i};n.$isCollapsed!=t&&(n.$isCollapsed?e.onShowReplies(o)!==!1&&(n.$isCollapsed=!1):e.onHideReplies(o)!==!1&&(n.$isCollapsed=!0))},e.hasReplies=function(n){if(!e.reply)return!1;var i=e.replies(n);return i&&i.length},e.getReplyCount=function(n){if(!e.reply)return!1;var i=e.replies(n);return i?i.length:0},e.getShowRepliesText=function(n){var i=e.getReplyCount(n);return 0===i?"":1===i?"Show Reply":"Show Replies ("+i+")"},e.getHideRepliesText=function(n){var i=e.getReplyCount(n);return 0===i?"":1===i?"Hide Reply":"Hide Replies ("+i+")"}}e.controller("SemanticCommentsController",["$scope",i]).directive("smComments",["SemanticUI",n])}(angular.module("semantic-ui-comment",["semantic-ui-core","semantic-ui-timeago"])),function(e){function n(e){return e.createBind("smDimmerBind","dimmer")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{visible:"=",settings:"=",onInit:"=",onShow:"=",onHide:"=",onChange:"="},template:'
',link:e}}function t(e){return function(n,i,t){var o=n.settings||{};if(e.linkSettings(n,i,t,"dimmer"),t.visible){var a=e.watcher(n,"visible",function(e){i.dimmer(e?"show":"hide")});e.onEvent(o,"onShow",function(e){a.set(!0)}),e.onEvent(o,"onHide",function(e){a.set(!1)})}e.linkEvents(n,o,$.fn.dimmer.settings,{onShow:"onShow",onHide:"onHide",onChange:"onChange"}),i.dimmer(o),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticDimmerLink",["SemanticUI",t]).directive("smDimmerBind",["SemanticUI",n]).directive("smDimmer",["SemanticDimmerLink",i]);var o={smDimmerShow:"show",smDimmerHide:"hide",smDimmerToggle:"toggle"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"dimmer",n)}])})}(angular.module("semantic-ui-dimmer",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smDropdownBind","dropdown")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{model:"=",items:"=",label:"&",value:"&",settings:"=",defaultText:"=",onInit:"=",emptyValue:"=",onChange:"=",onAdd:"=",onRemove:"=",onLabelCreate:"=",onLabelSelect:"=",onNoResults:"=",onShow:"=",onHide:"="},template:['"].join("\n"),controller:"SemanticDropdownController",link:e}}function t(e){var n={};e.getValue=function(n){return e.getKey(e.value({item:n}))},e.getKey=function(e){return(e?e.$$hashKey||e:e)+""},e.isEmpty=function(){return!e.model||0===e.model.length},e.translateValue=function(n){var i=e.getKey(n),t=e.findMatchingItem(i);return angular.isDefined(t)?e.getValue(t):void 0},e.hasDefault=function(){return e.defaultText&&e.isEmpty()},e.getDefaultText=function(){return e.isEmpty()?e.defaultText:""},e.findMatchingItem=function(e){return n[e]},e.updateHashMap=function(i){n={},angular.forEach(i,function(i){n[e.getValue(i)]=i})}}function o(e,n){return function(i,t,o){var a=function(e){n(function(){if(t.dropdown("is multiple")){if(e instanceof Array){for(var n=[],o=0;o',link:e}}function t(e){return function(n,i,t){var o=n.settings||{};e.linkSettings(n,i,t,"embed"),n.source&&(o.source=n.source),n.sourceId&&(o.id=n.sourceId),n.placeholder&&(o.placeholder=n.placeholder),n.icon&&(o.icon=n.icon),n.url&&(o.url=n.url),e.linkEvents(n,o,$.fn.embed.settings,{onCreate:"onCreate",onDisplay:"onDisplay",onPlaceholderDisplay:"onPlaceholderDisplay",onEmbed:"onEmbed"}),i.embed(o),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticEmbedLink",["SemanticUI",t]).directive("smEmbedBind",["SemanticUI",n]).directive("smEmbed",["SemanticEmbedLink",i]);var o={smEmbedReset:"reset",smEmbedShow:"show",smEmbedHide:"hide",smEmbedDestroy:"destroy"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"embed",n)}])})}(angular.module("semantic-ui-embed",["semantic-ui-core"])),function(e){function n(e,n){return{restrict:"E",replace:!0,scope:{items:"=",description:"&",icon:"&",image:"&",header:"&",headerHref:"&",children:"&",onHeader:"&",has:"=?"},template:['
','
',' ',' ','
','
',' ','
',' ',"
",'
',"
","
"].join("\n"),compile:e.RecursiveCompiler(n)}}function i(e){return function(n,i,t){n.has||(n.has={icon:!!t.icon,image:!!t.image,header:!!t.header,headerLink:!!t.headerHref,description:!!t.description,children:!!t.children}),n.getChildCount=function(e){var i=n.children(e);return i?i.length:0},e.setDefaultFunction(n,"description",t,function(e){return e.item}),e.setDefaultFunction(n,"icon",t,function(e){return e.item.icon}),e.setDefaultFunction(n,"header",t,function(e){return e.item.header}),e.setDefaultFunction(n,"children",t,function(e){return e.item.children})}}e.factory("SemanticListLink",["SemanticUI",i]).directive("smList",["SemanticUI","SemanticListLink",n])}(angular.module("semantic-ui-list",["semantic-ui-core"])),function(e){function n(e){return{restrict:"E",replace:!0,scope:{items:"=",label:"&",onClick:"&",children:"&",description:"&",icon:"&",hidden:"&",divider:"&"},template:['"].join("\n"),controller:"SemanticMenuController",compile:e.RecursiveCompiler()}}function i(e){e.hasChildren=function(n){var i=e.children({item:n});return i&&i.length},e.getChildren=function(n){return e.children({item:n})},e.getLabel=function(n){return e.label({item:n})},e.getIcon=function(n){return e.icon({item:n})},e.getDescription=function(n){return e.description({item:n})},e.isHidden=function(n){return e.hidden({item:n})},e.isDivider=function(n){return e.divider({item:n})}}e.controller("SemanticMenuController",["$scope",i]).directive("smMenu",["SemanticUI",n])}(angular.module("semantic-ui-menu",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smModalBind","modal")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{visible:"=",settings:"=",onInit:"=",onShow:"=",onVisible:"=",onHide:"=",onHidden:"=",onApprove:"=",onDeny:"="},template:'',link:e}}function t(e){return function(n,i,t){var o=n.settings||{};if(e.linkSettings(n,i,t,"modal"),t.visible){var a=e.watcher(n,"visible",function(e){i.modal(e?"show":"hide")});e.onEvent(o,"onHide",function(){a.set(!1)}),e.onEvent(o,"onShow",function(){a.set(!0)})}e.linkEvents(n,o,$.fn.modal.settings,{onShow:"onShow",onVisible:"onVisible",onHide:"onHide",onHidden:"onHidden",onApprove:"onApprove",onDeny:"onDeny"}),i.modal(o),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticModalLink",["SemanticUI",t]).directive("smModalBind",["SemanticUI",n]).directive("smModal",["SemanticModalLink",i]);var o={smModalShow:"show",smModalHide:"hide",smModalToggle:"toggle",smModalRefresh:"refresh",smModalShowDimmer:"show dimmer",smModalHideDimmer:"hide dimmer",smModalHideOthers:"hide others",smModalHideAll:"hide all",smModalCacheSizes:"cache sizes",smModalSetActive:"set active"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"modal",n)}])})}(angular.module("semantic-ui-modal",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smPopupBind","popup")}function i(e){return{restrict:"A",scope:{smPopup:"=",smPopupTitle:"=",smPopupHtml:"=",smPopupPosition:"@",smPopupVariation:"@",smPopupSettings:"=",smPopupOnInit:"=",smPopupOnCreate:"=",smPopupOnRemove:"=",smPopupOnShow:"=",smPopupOnVisible:"=",smPopupOnHide:"=",smPopupOnHidden:"="},link:e}}function t(e){return function(n,i,t){var o=n.smPopupSettings||{};e.linkSettings(n,i,t,"popup",!1,"smPopupSettings"),e.bindAttribute(n,"smPopup",i,"data-content"),e.bindAttribute(n,"smPopupTitle",i,"data-title"),e.bindAttribute(n,"smPopupHtml",i,"data-html"),e.bindAttribute(n,"smPopupPosition",i,"data-position"),e.bindAttribute(n,"smPopupVariation",i,"data-variation"),e.linkEvents(n,o,{onCreate:"smPopupOnCreate",onRemove:"smPopupOnRemove",onShow:"smPopupOnShow",onVisible:"smPopupOnVisible",onHide:"smPopupOnHide",onHidden:"smPopupOnHidden"}),i.popup(o),angular.isFunction(n.smPopupOnInit)&&n.smPopupOnInit(i)}}function o(e){return{restrict:"A",scope:{smPopupInline:"=",smPopupInlineOnInit:"=",smPopupInlineOnCreate:"=",smPopupInlineOnRemove:"=",smPopupInlineOnShow:"=",smPopupInlineOnVisible:"=",smPopupInlineOnHide:"=",smPopupInlineOnHidden:"="},link:e}}function a(e){return function(n,i,t){var o=n.smPopupInline||{};e.linkSettings(n,i,t,"popup",!1,"smPopupInline"),e.linkEvents(n,o,{onCreate:"smPopupInlineOnCreate",onRemove:"smPopupInlineOnRemove",onShow:"smPopupInlineOnShow",onVisible:"smPopupInlineOnVisible",onHide:"smPopupInlineOnHide",onHidden:"smPopupInlineOnHidden"}),o.inline=!0,i.popup(o),angular.isFunction(n.smPopupInlineOnInit)&&n.smPopupInlineOnInit(i)}}function c(e){return{restrict:"A",scope:{smPopupDisplay:"@",smPopupDisplaySettings:"=",smPopupDisplayOnInit:"=",smPopupDisplayOnCreate:"=",smPopupDisplayOnRemove:"=",smPopupDisplayOnShow:"=",smPopupDisplayOnVisible:"=",smPopupDisplayOnHide:"=",smPopupDisplayOnHidden:"="},link:e}}function s(e){return function(n,i,t){var o=n.smPopupDisplaySettings||{};e.linkSettings(n,i,t,"popup",!1,"smPopupDisplaySettings"),e.linkEvents(n,o,$.fn.popup.settings,{onCreate:"smPopupDisplayOnCreate",onRemove:"smPopupDisplayOnRemove",onShow:"smPopupDisplayOnShow",onVisible:"smPopupDisplayOnVisible",onHide:"smPopupDisplayOnHide",onHidden:"smPopupDisplayOnHidden"}),o.popup='[data-popup-named="'+t.smPopupDisplay+'"]',i.popup(o),angular.isFunction(n.smPopupDisplayOnInit)&&n.smPopupDisplayOnInit(i)}}function r(){return{restrict:"E",replace:!0,transclude:!0,scope:{name:"@"},template:''}}e.factory("SemanticPopupLink",["SemanticUI",t]).factory("SemanticPopupInlineLink",["SemanticUI",a]).factory("SemanticPopupDisplayLink",["SemanticUI",s]).directive("smPopupBind",["SemanticUI",n]).directive("smPopup",["SemanticPopupLink",i]).directive("smPopupInline",["SemanticPopupInlineLink",o]).directive("smPopupDisplay",["SemanticPopupDisplayLink",c]).directive("smPopupDetached",[r]);var l={smPopupShow:"show",smPopupHide:"hide",smPopupHideAll:"hide all",smPopupToggle:"toggle",smPopupReposition:"reposition",smPopupDestroy:"destroy",smPopupRemove:"remove popup"};angular.forEach(l,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"popup",n)}])})}(angular.module("semantic-ui-popup",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smProgressBind","progress")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{model:"=",total:"=",label:"@",activeText:"@",successText:"@",errorText:"@",warningText:"@",duration:"@",onInit:"=",onChange:"=",onSuccess:"=",onActive:"=",onError:"=",onWarning:"="},template:['
','
','
',"
",'
',"
"].join("\n"),link:e}}function t(e){var n=function(e,n,i,t,o){angular.isDefined(n[t])&&(i.text=i.text||{},i.text[o]=e[t])};return function(i,t,o){var a=i.settings||{};e.linkSettings(i,t,o,"progress"),e.linkEvents(i,a,$.fn.progress.settings,{onChange:"onChange",onSuccess:"onSuccess",onActive:"onActive",onError:"onError",onWarning:"onWarning"}),angular.isDefined(a.showActivity)||(a.showActivity=!1),angular.isDefined(o.label)&&(a.label=i.label),a.total=angular.isDefined(o.total)?i.total:100,angular.isDefined(o.model)&&(a.value=i.model),n(i,o,a,"activeText","active"),n(i,o,a,"successText","success"),n(i,o,a,"errorText","error"),n(i,o,a,"warningText","warning"),t.progress(a),e.watcher(i,"model",function(e){var n=t.progress("get total")||100;t.progress("set percent",100*e/n),t.progress("set value",e)}),angular.isDefined(o.duration)&&e.watcher(i,"duration",function(e){t.progress("set duration",e)}),angular.isDefined(o.total)&&e.watcher(i,"total",function(e){t.progress("set total",e)}),angular.isFunction(i.onInit)&&i.onInit(t)}}e.factory("SemanticProgressLink",["SemanticUI",t]).directive("smProgressBind",["SemanticUI",n]).directive("smProgress",["SemanticProgressLink",i]);var o={smProgressIncrement:"increment"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"progress",n)}])})}(angular.module("semantic-ui-progress",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smRatingBind","rating")}function i(e){return{restrict:"E",replace:!0,scope:{model:"=",total:"=",type:"@",disabled:"=",settings:"=",onInit:"=",onRate:"="},template:'
',link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};if(e.linkSettings(n,i,t,"rating",!0),e.triggerChange(n,"model",i,!0),t.disabled){e.watcher(n,"disabled",function(e){i.rating(e?"disable":"enable")})}var a=e.watcher(n,"model",function(e){i.rating("set rating",e)});e.onEvent(o,"onRate",function(e){a.set(e)}),e.linkEvents(n,o,$.fn.rating.settings,{onRate:"onRate"}),i.rating(o),n.disabled&&i.rating("disable"),angular.isFunction(n.onInit)&&n.onInit(i)})}}e.factory("SemanticRatingLink",["SemanticUI",t]).directive("smRatingBind",["SemanticUI",n]).directive("smRating",["SemanticRatingLink",i]);var o={smRatingSet:"set rating",smRatingDisable:"disable",smRatingEnable:"enable",smRatingClear:"clear rating"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"rating",n)}])})}(angular.module("semantic-ui-rating",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smSearchBind","search")}function i(e){return{restrict:"E",replace:!0,scope:{model:"=",text:"=?",icon:"@",placeholder:"@",category:"@",local:"=",remote:"@",settings:"=",onInit:"=",onSelect:"=",onResultsAdd:"=",onSearchQuery:"=",onResults:"=",onResultsOpen:"=",onResultsClose:"="},template:['"].join("\n"),link:e}}function t(e){var n=$.fn.search&&$.fn.search.settings&&$.fn.search.settings.fields?$.fn.search.settings.fields.title:"";return function(i,t,o){var a=i.settings||{},c=a.fields&&a.fields.title?a.fields.title:n;e.linkSettings(i,t,o,"search"),i.local&&(a.source=i.local),i.remote&&(a.apiSettings={url:i.remote}),i.category&&(a.type="category");var s=e.watcher(i,"model",function(e){t.search("set value",e&&c in e?e[c]:e)});e.onEvent(a,"onSelect",function(e,n){s.set(e),o.text&&i.$evalAsync(function(){i.text=e[c]})}),e.linkEvents(i,a,$.fn.search.settings,{onSelect:"onSelect",onResultsAdd:"onResultsAdd",onSearchQuery:"onSearchQuery",onResults:"onResults",onResultsOpen:"onResultsOpen",onResultsClose:"onResultsClose"}),t.search(a),angular.isFunction(i.onInit)&&i.onInit(t),i.model&&o.text&&c in i.model&&(i.text=i.model[c])}}e.factory("SemanticSearchLink",["SemanticUI",t]).directive("smSearchBind",["SemanticUI",n]).directive("smSearch",["SemanticSearchLink",i]);var o={smSearchQuery:"query",smSearchCancelQuery:"cancel query",smSearchSearchLocal:"search local",smSearchSearchRemote:"search remote",smSearchSet:"set value",smSearchShowResults:"show results",smSearchHideResults:"hide results",smSearchDestroy:"destroy"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"search",n)}])})}(angular.module("semantic-ui-search",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smSidebarBind","sidebar")}function i(e){return{restrict:"E",replace:!0,scope:{items:"=",label:"&",onClick:"&",visible:"=",settings:"=",onInit:"=",onVisible:"=",onShow:"=",onChange:"=",onHide:"=",onHidden:"="},template:['"].join("\n"),link:e}}function t(e){return function(n,i,t){var o=n.settings||{};if(e.setDefaultFunction(n,"label",t,function(e){ +return e.item}),e.linkSettings(n,i,t,"sidebar"),t.visible){var a=e.watcher(n,"visible",function(e){i.sidebar(e?"show":"hide")});e.onEvent(o,"onHide",function(){a.set(!1)}),e.onEvent(o,"onShow",function(){a.set(!0)})}e.linkEvents(n,o,$.fn.sidebar.settings,{onVisible:"onVisible",onShow:"onShow",onChange:"onChange",onHide:"onHide",onHidden:"onHidden"});var c=$(".pusher");c.length&&i.insertBefore(c),i.sidebar(o),n.visible&&i.sidebar("show"),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticSidebarLink",["SemanticUI",t]).directive("smSidebarBind",["SemanticUI",n]).directive("smSidebar",["SemanticSidebarLink",i]);var o={smSidebarShow:"show",smSidebarHide:"hide",smSidebarToggle:"toggle",smSidebarPushPage:"push page",smSidebarPullPage:"pull page",smSidebarAddBodyCss:"add body css",smSidebarRemoveBodyCss:"remove body css"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"sidebar",n)}])})}(angular.module("semantic-ui-sidebar",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smShapeBind","shape")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{settings:"=",onInit:"=",onBeforeChange:"=",onChange:"="},template:['
','
',"
","
"].join("\n"),link:e}}function t(e){return function(n,i,t){var o=n.settings||{};e.linkSettings(n,i,t,"shape"),e.linkEvents(n,o,$.fn.shape.settings,{onBeforeChange:"onBeforeChange",onChange:"onChange"}),i.shape(o),angular.isFunction(n.onInit)&&n.onInit(i)}}e.factory("SemanticShapeLink",["SemanticUI",t]).directive("smShapeBind",["SemanticUI",n]).directive("smShape",["SemanticShapeLink",i]);var o={smShapeFlipUp:"flip up",smShapeFlipDown:"flip down",smShapeFlipLeft:"flip left",smShapeFlipRight:"flip right",smShapeFlipOver:"flip over",smShapeFlipBack:"flip back",smShapeSetNextSide:"set next side",smShapeReset:"reset",smShapeQueue:"queue",smShapeRepaint:"repaint",smShapeSetDefaultSide:"set default side",smShapeSetStageSize:"set stage size",smShapeRefresh:"refresh"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"shape",n)}])})}(angular.module("semantic-ui-shape",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smStickyBind","sticky")}function i(e){return{restrict:"E",replace:!0,transclude:!0,scope:{context:"@",settings:"=",onInit:"=",onReposition:"=",onScroll:"=",onStick:"=",onUnstick:"=",onTop:"=",onBottom:"="},template:'
',link:e}}function t(e){return function(n,i,t){i.ready(function(){var o=n.settings||{};e.linkSettings(n,i,t,"sticky",!0),e.linkEvents(n,o,$.fn.sticky.settings,{onReposition:"onReposition",onScroll:"onScroll",onStick:"onStick",onStick:"onStick",onTop:"onTop",onBottom:"onBottom"}),o.context||(o.context=n.context),i.sticky(o),angular.isFunction(n.onInit)&&n.onInit(i)})}}e.factory("SemanticStickyLink",["SemanticUI",t]).directive("smStickyBind",["SemanticUI",n]).directive("smSticky",["SemanticStickyLink",i]);var o={smStickyRefresh:"refresh"};angular.forEach(o,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"sticky",n)}])})}(angular.module("semantic-ui-sticky",["semantic-ui-core"])),function(e){function n(e){return e.createBind("smTabBind","tab")}function i(e){return{restrict:"E",replace:!0,scope:{tabs:"=",active:"=?",settings:"="},template:['"].join("\n"),link:e}}function t(e,n){return function(i,t,o){var a=function(e){e&&t.tab("change tab",e)};n(function(){var n=i.settings||{},c=t.children(".item"),s=!!o.active;if(e.linkSettings(i,c,o,"tab",!0),s){var r=e.watcher(i,"active",function(e){a(e)});e.onEvent(n,"onVisible",function(e){r.set(e)})}c.tab(n),s&&a(i.active)})}}function o(e){return{restrict:"E",replace:!0,transclude:!0,scope:{name:"@"},template:'
'}}e.factory("SemanticTabMenuLink",["SemanticUI","$timeout",t]).directive("smTabBind",["SemanticUI",n]).directive("smTabMenu",["SemanticTabMenuLink",i]).directive("smTab",["SemanticUI",o]);var a={smTabSet:"change tab"};angular.forEach(a,function(n,i){e.directive(i,["SemanticUI",function(e){return e.createBehavior(i,"tab",n)}])})}(angular.module("semantic-ui-tab",["semantic-ui-core"])),function(e){function n(){function e(e){var n=e.getHours(),i=e.getMinutes(),t=10>i?"0"+i:i;return a[n%a.length]+":"+t+(12>n?"AM":"PM")}function n(e){return e>=11&&13>=e?e+"th":e+o[e%o.length]}function i(e){return Math.ceil(((new Date).getTime()-e.getTime())/864e5)}var t=["January","February","March","April","May","June","July","August","September","October","November","December"],o=["th","st","nd","rd","th","th","th","th","th","th"],a=["12","1","2","3","4","5","6","7","8","9","10","11"];return{restrict:"A",link:function(o,a,c){var s=!1,r=!1,l=function(){var o=new Date,c=new Date(o.getFullYear(),o.getMonth(),o.getDate()),u=new Date(o.getFullYear(),o.getMonth(),o.getDate()-1),d=o.getTime()-r.getTime(),m="",p=!1;if(6e4>d)m="Just now",p=6e4-d;else if(36e5>d){var h=Math.floor(d/6e4);m=1===h?"1 minute ago":h+" minutes ago",p=d%6e4}else if(r.getTime()>c.getTime())m="Today at "+e(r),p=d%36e5;else if(r.getTime()>u.getTime())m="Yesterday at "+e(r),p=d%36e5;else if(r.getMonth()===o.getMonth()&&r.getFullYear()===o.getFullYear())m+="The "+n(r.getDate()),m+=" at "+e(r),m+=" ("+i(r)+" days ago)",p=864e5;else{m+=t[r.getMonth()]+" "+n(r.getDate()),r.getFullYear()!==o.getFullYear()&&(m+=" "+r.getFullYear()),m+=" at "+e(r);var g=i(r);60>=g&&(m+=" ("+i(r)+" days ago)")}a.text(m),s&&(clearTimeout(s),s=!1),p&&(s=setTimeout(function(){s=!1,l()},p))};o.$watch(c.smTimeAgo,function(e){r=new Date(e),l()})}}}e.directive("smTimeAgo",n)}(angular.module("semantic-ui-timeago",["semantic-ui-core"])),function(e){function n(e){return{restrict:"A",scope:{smTransition:"@",smTransitionEvents:"@",smTransitionOther:"@"},link:e}}function i(e){return function(e,n,i){e.smTransitionEvents=e.smTransitionEvents||"click",n.on(e.smTransitionEvents,function(){(e.smTransitionOther?$(e.smTransitionOther):n).transition(e.smTransition)})}}e.factory("SemanticTransitionLink",["SemanticUI",i]).directive("smTransition",["SemanticTransitionLink",n])}(angular.module("semantic-ui-transition",["semantic-ui-core"])); //# sourceMappingURL=angular-semantic-ui.min.js.map \ No newline at end of file diff --git a/angular-semantic-ui.min.js.map b/angular-semantic-ui.min.js.map index 5f737c3..a19a956 100644 --- a/angular-semantic-ui.min.js.map +++ b/angular-semantic-ui.min.js.map @@ -1,9 +1,9 @@ /** - * semantic-ui-angular-jquery - 0.2.0 + * semantic-ui-angular-jquery - 0.2.1 * Angular Directives for Semantic UI * * https://github.com/ClickerMonkey/SemanticUI-Angular * Released under the MIT license. * Copyright 2016 Philip Diffenderfer and contributors. */ -{"version":3,"sources":["sm.js","sm-core.js","accordion/sm-accordion.js","comment/sm-comment.js","dimmer/sm-dimmer.js","checkbox/sm-checkbox.js","checkbox/sm-radio.js","embed/sm-embed.js","modal/sm-modal.js","list/sm-list.js","menu/sm-menu.js","popup/sm-popup.js","progress/sm-progress.js","dropdown/sm-dropdown.js","rating/sm-rating.js","search/sm-search.js","shape/sm-shape.js","sidebar/sm-sidebar.js","sticky/sm-sticky.js","tab/sm-tab.js","timeago/sm-timeago.js","transition/sm-transition.js"],"names":["angular","module","app","SemanticUIFactory","$compile","SemanticUI","setDefaultFunction","scope","variable","attributes","func","triggerChange","element","initialized","$watch","updated","$evalAsync","trigger","bindAttribute","attribute","attr","onEvent","settings","evt","existing","undefined","result0","isFunction","apply","this","arguments","result1","linkEvents","defaults","linkings","scopeValue","linkSettings","settingsAttribute","forEach","value","key","createBind","restrict","link","initBind","ready","input","$eval","createBehavior","method","initBehavior","$","enabled","previousEvent","isString","isObject","isDefined","off","on","watcher","expression","context","force","equals","ignoreUpdate","call","set","update","RecursiveCompiler","postLink","post","compiledContents","contents","remove","pre","clone","append","SemanticButton","replace","transclude","template","SemanticItem","icon","SemanticFlatMenu","join","SemanticHtml","$injector","sanitize","$sce","get","getTrustedHtml","trustAsHtml","e","attrs","smHtml","html","factory","directive","SemanticAccordionBind","SemanticAccordion","SemanticAccordionLink","onInit","onOpening","onOpen","onClosing","onClose","onChange","fn","accordion","SemanticAccordionGroup","required","title","active","BEHAVIORS","smAccordionOpen","smAccordionCloseOthers","smAccordionClose","smAccordionToggle","SemanticComments","comments","content","avatar","author","date","replies","reply","collapsible","onAuthor","onReply","onShowReplies","onHideReplies","controller","compile","SemanticCommentsController","$scope","setCollapsed","comment","$event","collapse","$isCollapsed","hasReplies","length","getReplyCount","getShowRepliesText","count","getHideRepliesText","SemanticDimmerBind","SemanticDimmer","SemanticDimmerLink","visible","onShow","onHide","visibleWatcher","dimmer","smDimmerShow","smDimmerHide","smDimmerToggle","SemanticCheckboxBind","SemanticCheckbox","SemanticCheckboxLink","model","label","indeterminateValue","checkedValue","uncheckedValue","children","onChecked","onIndeterminate","onDeterminate","onUnchecked","onEnable","onDisable","enabledWatcher","checkbox","modelWatcher","$children","settingChildren","change","checked","each","i","child","smCheckboxToggle","smCheckboxCheck","smCheckboxUncheck","smCheckboxIndeterminate","smCheckboxDeterminate","smCheckboxEnable","smCheckboxDisable","SemanticRadioBind","SemanticRadio","SemanticRadioLink","name","hasClass","removeClass","smRadioCheck","smRadioEnable","smRadioDisable","SemanticEmbedBind","SemanticEmbed","SemanticEmbedLink","source","sourceId","url","placeholder","onCreate","onDisplay","onPlaceholderDisplay","onEmbed","id","embed","smEmbedReset","smEmbedShow","smEmbedHide","smEmbedDestroy","SemanticModalBind","SemanticModal","SemanticModalLink","onVisible","onHidden","onApprove","onDeny","modal","smModalShow","smModalHide","smModalToggle","smModalRefresh","smModalShowDimmer","smModalHideDimmer","smModalHideOthers","smModalHideAll","smModalCacheSizes","smModalSetActive","SemanticList","SemanticListLink","items","description","image","header","headerHref","onHeader","has","headerLink","getChildCount","locals","item","SemanticMenu","onClick","hidden","divider","SemanticMenuController","hasChildren","getChildren","getLabel","getIcon","getDescription","isHidden","isDivider","SemanticPopup","SemanticPopupLink","smPopup","smPopupTitle","smPopupHtml","smPopupPosition","smPopupVariation","smPopupSettings","smPopupOnInit","smPopupOnCreate","smPopupOnRemove","smPopupOnShow","smPopupOnVisible","smPopupOnHide","smPopupOnHidden","onRemove","popup","SemanticPopupInline","SemanticPopupInlineLink","smPopupInline","smPopupInlineOnInit","smPopupInlineOnCreate","smPopupInlineOnRemove","smPopupInlineOnShow","smPopupInlineOnVisible","smPopupInlineOnHide","smPopupInlineOnHidden","inline","SemanticPopupDisplay","SemanticPopupDisplayLink","smPopupDisplay","smPopupDisplaySettings","smPopupDisplayOnInit","smPopupDisplayOnCreate","smPopupDisplayOnRemove","smPopupDisplayOnShow","smPopupDisplayOnVisible","smPopupDisplayOnHide","smPopupDisplayOnHidden","SemanticPopupDetached","smPopupShow","smPopupHide","smPopupHideAll","smPopupToggle","smPopupReposition","smPopupDestroy","smPopupRemove","SemanticProgress","SemanticProgressLink","total","activeText","successText","errorText","warningText","duration","onSuccess","onActive","onError","onWarning","addText","property","text","progress","showActivity","smProgressIncrement","SemanticDropdownBind","SemanticDropdown","SemanticDropdownLink","defaultText","emptyValue","onAdd","onLabelCreate","onLabelSelect","onNoResults","SemanticDropdownController","hashMap","getValue","getKey","$$hashKey","isEmpty","translateValue","translated","matching","findMatchingItem","hasDefault","getDefaultText","updateHashMap","$timeout","applyValue","dropdown","Array","translatedValue","push","ignoreChange","modelArray","mapped","mappedValue","indexOf","inArray","splice","smDropdownToggle","smDropdownShow","smDropdownHide","smDropdownClear","smDropdownHideOthers","smDropdownRestoreDefaults","smDropdownRestoreDefaultText","smDropdownRestoreDefaultValue","smDropdownSaveDefaults","smDropdownSetSelected","smDropdownSetText","smDropdownSetValue","smDropdownBindTouchEvents","smDropdownMouseEvents","smDropdownBindIntent","smDropdownUnbindIntent","smDropdownSetActive","smDropdownSetVisible","smDropdownRemoveActive","smDropdownRemoveVisible","SemanticRatingBind","SemanticRating","SemanticRatingLink","type","disabled","onRate","rating","valueWatcher","smRatingSet","smRatingDisable","smRatingEnable","smRatingClear","SemanticSearchBind","SemanticSearch","SemanticSearchLink","category","local","remote","onSelect","onResultsAdd","onSearchQuery","onResults","onResultsOpen","onResultsClose","defaultTitle","search","fields","textProperty","apiSettings","result","response","smSearchQuery","smSearchCancelQuery","smSearchSearchLocal","smSearchSearchRemote","smSearchSet","smSearchShowResults","smSearchHideResults","smSearchDestroy","SemanticShapeBind","SemanticShape","SemanticShapeLink","onBeforeChange","shape","smShapeFlipUp","smShapeFlipDown","smShapeFlipLeft","smShapeFlipRight","smShapeFlipOver","smShapeFlipBack","smShapeSetNextSide","smShapeReset","smShapeQueue","smShapeRepaint","smShapeSetDefaultSide","smShapeSetStageSize","smShapeRefresh","SemanticSidebarBind","SemanticSidebar","SemanticSidebarLink","sidebar","pusher","insertBefore","smSidebarShow","smSidebarHide","smSidebarToggle","smSidebarPushPage","smSidebarPullPage","smSidebarAddBodyCss","smSidebarRemoveBodyCss","SemanticStickyBind","SemanticSticky","SemanticStickyLink","onReposition","onScroll","onStick","onUnstick","onTop","onBottom","sticky","smStickyRefresh","SemanticTabBind","SemanticTabMenu","SemanticTabMenuLink","tabs","setActiveTab","tab","elements","hasActive","activeWatcher","SemanticTab","smTabSet","SemanticTimeAgo","getTime","hours","getHours","minutes","getMinutes","minutesPadded","HOURS","getTh","x","THS","getDaysAgo","Math","ceil","Date","MONTHS","timeout","updateText","now","today","getFullYear","getMonth","getDate","yesterday","elapsed","updateIn","minutesAgo","floor","daysAgo","clearTimeout","setTimeout","smTimeAgo","SemanticTransition","SemanticTransitionLink","smTransition","smTransitionEvents","smTransitionOther","transition"],"mappings":"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","file":"angular-semantic-ui.min.js","sourcesContent":["\nangular.module('semantic-ui', [\n 'semantic-ui-core',\n 'semantic-ui-accordion',\n 'semantic-ui-checkbox',\n 'semantic-ui-radio',\n 'semantic-ui-comment',\n 'semantic-ui-dimmer',\n 'semantic-ui-dropdown',\n 'semantic-ui-embed',\n 'semantic-ui-list',\n 'semantic-ui-menu',\n 'semantic-ui-modal',\n 'semantic-ui-popup',\n 'semantic-ui-progress',\n 'semantic-ui-rating',\n 'semantic-ui-search',\n 'semantic-ui-shape',\n 'semantic-ui-sidebar',\n 'semantic-ui-sticky',\n 'semantic-ui-tab',\n 'semantic-ui-transition',\n 'semantic-ui-timeago'\n]);\n","(function(app)\n{\n\n app\n .factory('SemanticUI', ['$compile', SemanticUIFactory])\n .directive('smButton', SemanticButton)\n .directive('smMenuItem', SemanticItem)\n .directive('smFlatMenu', SemanticFlatMenu)\n .directive('smHtml', ['$injector', SemanticHtml])\n ;\n\n function SemanticUIFactory($compile)\n {\n var SemanticUI =\n {\n setDefaultFunction: function(scope, variable, attributes, func)\n {\n if ( !attributes[ variable ] )\n {\n scope[ variable ] = func;\n }\n },\n triggerChange: function(scope, variable, element, initialized)\n {\n scope.$watch( variable, function(updated)\n {\n // Don't trigger the change event if the element hasn't been initialized.\n if ( initialized )\n {\n // Trigger the change event during a digest cycle so any other\n // variables that are changing this current digest cycle can finish.\n scope.$evalAsync(function()\n {\n element.trigger('change');\n });\n }\n\n initialized = true;\n })\n },\n bindAttribute: function(scope, variable, element, attribute)\n {\n scope.$watch( variable, function(updated)\n {\n element.attr( attribute, updated );\n });\n },\n onEvent: function(settings, evt, func)\n {\n settings[ evt ] = (function(existing, undefined)\n {\n return function EventHandler()\n {\n var result0 = undefined;\n\n if ( angular.isFunction( existing ) )\n {\n result0 = existing.apply( this, arguments );\n }\n\n var result1 = func.apply( this, arguments );\n\n return ( result0 !== undefined ? result0 : result1 );\n }\n })( settings[ evt ] );\n },\n linkEvents: function(scope, settings, defaults, linkings)\n {\n for (var evt in linkings)\n {\n (function(variable, evt)\n {\n SemanticUI.onEvent( settings, evt, function()\n {\n var scopeValue = scope[ variable ];\n\n if ( angular.isFunction( scopeValue ) )\n {\n return scopeValue.apply( this, arguments );\n }\n else if ( angular.isFunction( defaults[ evt ] ) )\n {\n return defaults[ evt ].apply( this, arguments );\n }\n });\n\n })( linkings[ evt ], evt );\n }\n },\n linkSettings: function(scope, element, attributes, module, initialized, settingsAttribute)\n {\n var settings = settingsAttribute || 'settings';\n\n if ( settings in attributes )\n {\n scope.$watch( settings, function( updated )\n {\n if ( initialized )\n {\n angular.forEach( updated, function(value, key)\n {\n element[ module ]( 'setting', key, value );\n });\n }\n\n initialized = true;\n\n }, true );\n }\n },\n createBind: function(attribute, module)\n {\n return {\n\n restrict: 'A',\n\n link: function(scope, element, attributes)\n {\n SemanticUI.linkSettings( scope, element, attributes, module, false, attribute );\n SemanticUI.initBind( scope, element, attributes, attribute, module );\n }\n };\n },\n initBind: function(scope, element, attributes, attribute, module)\n {\n element.ready(function()\n {\n var settings = {};\n var input = attributes[ attribute ];\n\n if ( input )\n {\n settings = scope.$eval( input );\n }\n\n element[ module ]( settings );\n });\n },\n createBehavior: function(attribute, module, method)\n {\n return {\n\n restrict: 'A',\n\n link: function(scope, element, attributes)\n {\n SemanticUI.initBehavior( scope, attributes, attribute, element, module, method );\n }\n };\n },\n initBehavior: function(scope, attributes, attribute, element, module, method)\n {\n // Default settings on the attribute.\n var settings = {\n $: undefined,\n evt: 'click',\n enabled: true,\n value: undefined\n };\n\n var onEvent = function()\n {\n // If the trigger is currently enabled...\n if ( settings.enabled )\n {\n // Call the method on the module.\n $( settings.$ )[ module ]( method, settings.value );\n }\n };\n\n var previousEvent = false;\n\n scope.$watch( attributes[ attribute ], function(input)\n {\n // If the attribute value is a string, take it as the selector\n if ( angular.isString( input ) )\n {\n settings.$ = input;\n }\n // If the attribute value is an object, overwrite the defaults.\n else if ( angular.isObject( input ) )\n {\n if ( !angular.isString( input.evt ) ) input.evt = settings.evt;\n if ( !angular.isDefined( input.enabled ) ) input.enabled = settings.enabled;\n\n settings = input;\n }\n\n if ( previousEvent )\n {\n element.off( previousEvent, onEvent );\n }\n\n element.on( previousEvent = settings.evt, onEvent );\n\n }, true );\n },\n watcher: function(scope, expression, func, context, force, equals)\n {\n var ignoreUpdate = false;\n\n scope.$watch( expression, function( updated )\n {\n if ( !ignoreUpdate )\n {\n func.call( context, updated );\n }\n\n ignoreUpdate = false;\n\n }, equals );\n\n return {\n set: function(value)\n {\n if ( scope[ expression ] != value || force )\n {\n scope.$evalAsync(function()\n {\n scope[ expression ] = value;\n ignoreUpdate = true;\n });\n }\n },\n update: function()\n {\n scope.$evalAsync(function()\n {\n ignoreUpdate = true;\n });\n }\n }\n },\n RecursiveCompiler: function(postLink)\n {\n return function(element, link)\n {\n // Normalize the link parameter\n if( angular.isFunction( link ) )\n {\n link = { post: link };\n }\n\n // Break the recursion loop by removing the contents\n var contents = element.contents().remove();\n var compiledContents;\n\n return {\n pre: (link && link.pre) ? link.pre : null,\n /**\n * Compiles and re-adds the contents\n */\n post: function(scope, element)\n {\n // Compile the contents\n if( !compiledContents )\n {\n compiledContents = $compile(contents);\n }\n\n // Re-add the compiled contents to the element\n compiledContents( scope, function(clone)\n {\n element.append(clone);\n });\n\n // Call the post-linking function, if any\n if ( link && link.post )\n {\n link.post.apply( null, arguments );\n }\n\n if ( angular.isFunction( postLink ) )\n {\n postLink.apply( null, arguments );\n }\n }\n };\n };\n }\n };\n\n return SemanticUI;\n }\n\n function SemanticButton()\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n template: ''\n };\n }\n\n function SemanticItem()\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n icon: '@'\n },\n\n template: ''\n }\n }\n\n function SemanticFlatMenu()\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n template: [\n '
',\n '
',\n '
'\n ].join('\\n')\n }\n }\n\n function SemanticHtml($injector)\n {\n var sanitize = function(value)\n {\n return value;\n };\n\n try\n {\n $sce = $injector.get('$sce');\n\n sanitize = function(value)\n {\n return $sce.getTrustedHtml( $sce.trustAsHtml( value ) );\n };\n }\n catch (e)\n {\n // ignore\n }\n\n return function(scope, element, attrs)\n {\n scope.$watch( attrs.smHtml, function(value)\n {\n element.html( sanitize( value || '' ) );\n });\n };\n }\n\n})( angular.module('semantic-ui-core', []) );\n","(function(app)\n{\n\n app\n .factory('SemanticAccordionLink', ['SemanticUI', SemanticAccordionLink])\n .directive('smAccordionBind', ['SemanticUI', SemanticAccordionBind])\n .directive('smAccordion', ['SemanticAccordionLink', SemanticAccordion])\n .directive('smAccordionGroup', SemanticAccordionGroup)\n ;\n\n var BEHAVIORS = {\n smAccordionOpen: 'open',\n smAccordionCloseOthers: 'close others',\n smAccordionClose: 'close',\n smAccordionToggle: 'toggle'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'accordion', method );\n }]);\n });\n\n function SemanticAccordionBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smAccordionBind', 'accordion' );\n }\n\n function SemanticAccordion(SemanticAccordionLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n settings: '=',\n onInit: '=',\n /* Events */\n onOpening: '=',\n onOpen: '=',\n onClosing: '=',\n onClose: '=',\n onChange: '='\n },\n\n template: '
',\n\n link: SemanticAccordionLink\n };\n }\n\n function SemanticAccordionLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'accordion', true );\n\n SemanticUI.linkEvents( scope, settings, $.fn.accordion.settings, {\n onOpening: 'onOpening',\n onOpen: 'onOpen',\n onClosing: 'onClosing',\n onClose: 'onClose',\n onChange: 'onChange'\n });\n\n element.accordion( settings );\n\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n });\n };\n }\n\n function SemanticAccordionGroup()\n {\n return {\n restrict: 'E',\n required: 'title',\n transclude: true,\n scope: {\n /* Required */\n title: '=',\n /* Optional */\n active: '='\n },\n template: [\n '
',\n ' ',\n ' {{ title }}',\n '
',\n '
',\n '
'\n ].join('\\n')\n }\n }\n\n})( angular.module('semantic-ui-accordion', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .controller('SemanticCommentsController', ['$scope', SemanticCommentsController])\n .directive('smComments', ['SemanticUI', SemanticComments])\n ;\n\n function SemanticComments(SemanticUI)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n // transclude: true,\n\n scope: {\n /* Required */\n comments: '=',\n content: '&',\n /* Optional */\n avatar: '&',\n author: '&',\n date: '&',\n replies: '&',\n reply: '=',\n collapsible: '=',\n\n onAuthor: '&',\n onReply: '&',\n onShowReplies: '&',\n onHideReplies: '&'\n },\n\n template: [\n '
',\n '
',\n ' ',\n ' ',\n ' ',\n '
',\n ' ',\n '
',\n ' ',\n '
',\n '
',\n '
',\n ' Reply',\n ' ',\n ' ',\n '
',\n '
',\n ' ',\n '
',\n '
'\n ].join('\\n'),\n\n controller: 'SemanticCommentsController',\n\n compile: SemanticUI.RecursiveCompiler()\n\n };\n }\n\n function SemanticCommentsController($scope)\n {\n $scope.setCollapsed = function(comment, $event, collapse)\n {\n var $ = {comment: comment, $event: $event};\n\n if ( comment.$isCollapsed != collapse )\n {\n if ( comment.$isCollapsed )\n {\n if ( $scope.onShowReplies($) !== false )\n {\n comment.$isCollapsed = false;\n }\n }\n else\n {\n if ( $scope.onHideReplies($) !== false )\n {\n comment.$isCollapsed = true;\n }\n }\n }\n };\n\n $scope.hasReplies = function($)\n {\n if ( !$scope.reply )\n {\n return false;\n }\n\n var replies = $scope.replies($);\n\n return replies && replies.length;\n };\n\n $scope.getReplyCount = function($)\n {\n if ( !$scope.reply )\n {\n return false;\n }\n\n var replies = $scope.replies($);\n\n return replies ? replies.length : 0;\n };\n\n $scope.getShowRepliesText = function($)\n {\n var count = $scope.getReplyCount($);\n\n return count === 0 ? '' : (count === 1 ? 'Show Reply' : 'Show Replies (' + count + ')');\n };\n\n $scope.getHideRepliesText = function($)\n {\n var count = $scope.getReplyCount($);\n\n return count === 0 ? '' : (count === 1 ? 'Hide Reply' : 'Hide Replies (' + count + ')');\n };\n }\n\n})( angular.module('semantic-ui-comment', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticDimmerLink', ['SemanticUI', SemanticDimmerLink])\n .directive('smDimmerBind', ['SemanticUI', SemanticDimmerBind])\n .directive('smDimmer', ['SemanticDimmerLink', SemanticDimmer])\n ;\n\n var BEHAVIORS = {\n smDimmerShow: 'show',\n smDimmerHide: 'hide',\n smDimmerToggle: 'toggle'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'dimmer', method );\n }]);\n });\n\n function SemanticDimmerBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smDimmerBind', 'dimmer' );\n }\n\n function SemanticDimmer(SemanticDimmerLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n visible: '=',\n settings: '=',\n onInit: '=',\n /* Events */\n onShow: '=',\n onHide: '=',\n onChange: '='\n },\n\n template: '
',\n\n link: SemanticDimmerLink\n };\n }\n\n function SemanticDimmerLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'dimmer' );\n\n // If the visible attribute is specified, listen to onHide and update modal when variable changes.\n if ( attributes.visible )\n {\n var visibleWatcher = SemanticUI.watcher( scope, 'visible',\n function(updated) {\n element.dimmer( updated ? 'show' : 'hide' );\n }\n );\n\n SemanticUI.onEvent( settings, 'onShow',\n function(value) {\n visibleWatcher.set( true );\n }\n );\n\n SemanticUI.onEvent( settings, 'onHide',\n function(value) {\n visibleWatcher.set( false );\n }\n );\n }\n\n SemanticUI.linkEvents( scope, settings, $.fn.dimmer.settings, {\n onShow: 'onShow',\n onHide: 'onHide',\n onChange: 'onChange'\n });\n\n element.dimmer( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-dimmer', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticCheckboxLink', ['SemanticUI', SemanticCheckboxLink])\n .directive('smCheckboxBind', ['SemanticUI', SemanticCheckboxBind])\n .directive('smCheckbox', ['SemanticCheckboxLink', SemanticCheckbox])\n ;\n\n var BEHAVIORS = {\n smCheckboxToggle: 'toggle',\n smCheckboxCheck: 'check',\n smCheckboxUncheck: 'uncheck',\n smCheckboxIndeterminate: 'indeterminate',\n smCheckboxDeterminate: 'determinate',\n smCheckboxEnable: 'enable',\n smCheckboxDisable: 'disable'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'checkbox', method );\n }]);\n });\n\n function SemanticCheckboxBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smCheckboxBind', 'checkbox' );\n }\n\n function SemanticCheckbox(SemanticCheckboxLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Required */\n model: '=',\n label: '@',\n /* Optional */\n settings: '=',\n enabled: '=',\n indeterminateValue: '=',\n checkedValue: '=',\n uncheckedValue: '=',\n children: '@',\n onInit: '=',\n /* Events */\n onChange: '=',\n onChecked: '=',\n onIndeterminate: '=',\n onDeterminate: '=',\n onUnchecked: '=',\n onEnable: '=',\n onDisable: '='\n },\n\n template: [\n '
',\n ' ',\n ' ',\n '
'\n ].join('\\n'),\n\n link: SemanticCheckboxLink\n };\n }\n\n function SemanticCheckboxLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'checkbox', true );\n\n SemanticUI.triggerChange( scope, 'model', element, true );\n\n var checkedValue = function() {\n return angular.isDefined( scope.checkedValue ) ? scope.checkedValue : true;\n };\n var uncheckedValue = function() {\n return angular.isDefined( scope.uncheckedValue ) ? scope.uncheckedValue : false;\n };\n var indeterminateValue = function() {\n return angular.isDefined( scope.indeterminateValue ) ? scope.indeterminateValue : void 0;\n };\n\n if ( attributes.enabled )\n {\n var enabledWatcher = SemanticUI.watcher( scope, 'enabled',\n function(updated) {\n if ( angular.isDefined( updated ) ) {\n element.checkbox( updated ? 'set enabled' : 'set disabled' );\n }\n }\n );\n\n SemanticUI.onEvent( settings, 'onEnable',\n function(value) {\n enabledWatcher.set( true );\n }\n );\n\n SemanticUI.onEvent( settings, 'onDisable',\n function(value) {\n enabledWatcher.set( false );\n }\n );\n }\n\n var modelWatcher = SemanticUI.watcher( scope, 'model',\n function(updated) {\n if ( angular.isDefined( updated ) ) {\n element.checkbox( updated ? 'set checked' : 'set unchecked' );\n }\n }\n );\n\n SemanticUI.onEvent( settings, 'onChecked',\n function() {\n modelWatcher.set( checkedValue() );\n }\n );\n\n SemanticUI.onEvent( settings, 'onUnchecked',\n function() {\n modelWatcher.set( uncheckedValue() );\n }\n );\n\n SemanticUI.onEvent( settings, 'onIndeterminate',\n function() {\n modelWatcher.set( indeterminateValue() );\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.checkbox.settings, {\n onChange: 'onChange',\n onChecked: 'onChecked',\n onIndeterminate: 'onIndeterminate',\n onDeterminate: 'onDeterminate',\n onUnchecked: 'onUnchecked',\n onEnable: 'onEnable',\n onDisable: 'onDisable'\n });\n\n // If the checkbox has children, link the value of this checkbox to the children\n if ( scope.children )\n {\n var $children = $( scope.children );\n var settingChildren = false;\n\n SemanticUI.onEvent( settings, 'onChecked',\n function() {\n settingChildren = true;\n $children.checkbox( 'check' );\n settingChildren = false;\n }\n );\n SemanticUI.onEvent( settings, 'onUnchecked',\n function() {\n settingChildren = true;\n $children.checkbox( 'uncheck' );\n settingChildren = false;\n }\n );\n\n $children.children('input[type=checkbox], input[type=radio]')\n .change(function() {\n\n if ( settingChildren ) {\n return;\n }\n\n var checked = 0;\n\n $children.each(function(i, child) {\n if ( $( child ).checkbox( 'is checked') ) {\n checked++;\n }\n });\n\n if ( checked === 0 ) {\n element.checkbox( 'uncheck' );\n }\n else if ( checked === $children.length ) {\n element.checkbox( 'check' );\n }\n else {\n element.checkbox( 'indeterminate' );\n }\n })\n ;\n }\n\n // Initialize the element with the given settings.\n element.checkbox( settings );\n\n // Set initial state of the checkbox\n if ( scope.model == checkedValue() )\n {\n element.checkbox( 'set checked' );\n }\n else if ( scope.model === indeterminateValue() )\n {\n element.checkbox( 'set indeterminate' );\n }\n\n if ( angular.isDefined( scope.enabled ) && !scope.enabled )\n {\n element.checkbox( 'set disabled' );\n }\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n });\n };\n }\n\n})( angular.module('semantic-ui-checkbox', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticRadioLink', ['SemanticUI', SemanticRadioLink])\n .directive('smRadioBind', ['SemanticUI', SemanticRadioBind])\n .directive('smRadio', ['SemanticRadioLink', SemanticRadio])\n ;\n\n var BEHAVIORS = {\n smRadioCheck: 'check',\n smRadioEnable: 'enable',\n smRadioDisable: 'disable'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'checkbox', method );\n }]);\n });\n\n function SemanticRadioBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smRadioBind', 'checkbox' );\n }\n\n function SemanticRadio(SemanticRadioLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Required */\n model: '=',\n label: '@',\n name: '@',\n value: '=',\n /* Optional */\n settings: '=',\n enabled: '=',\n onInit: '=',\n /* Events */\n onChange: '=',\n onChecked: '=',\n onUnchecked: '=',\n onEnable: '=',\n onDisable: '='\n },\n\n template: [\n '
',\n ' ',\n ' ',\n '
'\n ].join('\\n'),\n\n link: SemanticRadioLink\n };\n }\n\n function SemanticRadioLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'checkbox', true );\n\n SemanticUI.triggerChange( scope, 'model', element, true );\n\n if ( attributes.enabled )\n {\n var enabledWatcher = SemanticUI.watcher( scope, 'enabled',\n function(updated) {\n if ( angular.isDefined( updated ) ) {\n element.checkbox( updated ? 'set enabled' : 'set disabled' );\n }\n }\n );\n\n SemanticUI.onEvent( settings, 'onEnable',\n function(value) {\n enabledWatcher.set( true );\n }\n );\n\n SemanticUI.onEvent( settings, 'onDisable',\n function(value) {\n enabledWatcher.set( false );\n }\n );\n }\n\n var modelWatcher = SemanticUI.watcher( scope, 'model',\n function(updated) {\n if ( updated === scope.value ) {\n element.checkbox( 'set checked' );\n }\n }\n );\n\n SemanticUI.onEvent( settings, 'onChecked',\n function() {\n modelWatcher.set( scope.value );\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.checkbox.settings, {\n onChange: 'onChange',\n onChecked: 'onChecked',\n onUnchecked: 'onUnchecked',\n onEnable: 'onEnable',\n onDisable: 'onDisable'\n });\n\n // Initialize the element with the given settings.\n element.checkbox( settings );\n\n // Set initial state of the radio\n if ( scope.model === scope.value )\n {\n element.checkbox( 'set checked' );\n }\n\n // If the radio is a slider, remove the radio class\n if ( element.hasClass( 'slider' ) )\n {\n element.removeClass( 'radio' );\n }\n\n if ( angular.isDefined( scope.enabled ) && !scope.enabled )\n {\n element.checkbox( 'set disabled' );\n }\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n });\n };\n }\n\n})( angular.module('semantic-ui-radio', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticEmbedLink', ['SemanticUI', SemanticEmbedLink])\n .directive('smEmbedBind', ['SemanticUI', SemanticEmbedBind])\n .directive('smEmbed', ['SemanticEmbedLink', SemanticEmbed])\n ;\n\n var BEHAVIORS = {\n smEmbedReset: 'reset',\n smEmbedShow: 'show',\n smEmbedHide: 'hide',\n smEmbedDestroy: 'destroy'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'embed', method );\n }]);\n });\n\n function SemanticEmbedBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smEmbedBind', 'embed' );\n }\n\n function SemanticEmbed(SemanticEmbedLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n source: '@',\n sourceId: '@',\n url: '@',\n placeholder: '@',\n icon: '@',\n settings: '=',\n onInit: '=',\n /* Events */\n onCreate: '=',\n onDisplay: '=',\n onPlaceholderDisplay: '=',\n onEmbed: '='\n },\n\n template: '
',\n\n link: SemanticEmbedLink\n };\n }\n\n function SemanticEmbedLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'embed' );\n\n if ( scope.source ) settings.source = scope.source;\n if ( scope.sourceId ) settings.id = scope.sourceId;\n if ( scope.placeholder ) settings.placeholder = scope.placeholder;\n if ( scope.icon ) settings.icon = scope.icon;\n if ( scope.url ) settings.url = scope.url;\n\n SemanticUI.linkEvents( scope, settings, $.fn.embed.settings, {\n onCreate: 'onCreate',\n onDisplay: 'onDisplay',\n onPlaceholderDisplay: 'onPlaceholderDisplay',\n onEmbed: 'onEmbed'\n });\n\n element.embed( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n };\n }\n\n\n})( angular.module('semantic-ui-embed', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticModalLink', ['SemanticUI', SemanticModalLink])\n .directive('smModalBind', ['SemanticUI', SemanticModalBind])\n .directive('smModal', ['SemanticModalLink', SemanticModal])\n ;\n\n var BEHAVIORS = {\n smModalShow: 'show',\n smModalHide: 'hide',\n smModalToggle: 'toggle',\n smModalRefresh: 'refresh',\n smModalShowDimmer: 'show dimmer',\n smModalHideDimmer: 'hide dimmer',\n smModalHideOthers: 'hide others',\n smModalHideAll: 'hide all',\n smModalCacheSizes: 'cache sizes',\n smModalSetActive: 'set active'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'modal', method );\n }]);\n });\n\n function SemanticModalBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smModalBind', 'modal' );\n }\n\n function SemanticModal(SemanticModalLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n visible: '=',\n settings: '=',\n onInit: '=',\n /* Events */\n onShow: '=',\n onVisible: '=',\n onHide: '=',\n onHidden: '=',\n onApprove: '=',\n onDeny: '='\n },\n\n template: '
',\n\n link: SemanticModalLink\n }\n }\n\n function SemanticModalLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'modal' );\n\n // If the visible attribute is specified, listen to onHide and update modal when variable changes.\n if ( attributes.visible )\n {\n var visibleWatcher = SemanticUI.watcher( scope, 'visible',\n function(updated) {\n element.modal( updated ? 'show' : 'hide' );\n }\n );\n\n SemanticUI.onEvent( settings, 'onHide',\n function() {\n visibleWatcher.set( false );\n }\n );\n }\n\n SemanticUI.linkEvents( scope, settings, $.fn.modal.settings, {\n onShow: 'onShow',\n onVisible: 'onVisible',\n onHide: 'onHide',\n onHidden: 'onHidden',\n onApprove: 'onApprove',\n onDeny: 'onDeny'\n });\n\n // Initialize the element with the given settings.\n element.modal( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-modal', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticListLink', ['SemanticUI', SemanticListLink])\n .directive('smList', ['SemanticUI', 'SemanticListLink', SemanticList])\n ;\n\n function SemanticList(SemanticUI, SemanticListLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope:\n {\n /* Required */\n items: '=',\n /* Optional */\n description: '&',\n icon: '&',\n image: '&',\n header: '&',\n headerHref: '&',\n children: '&',\n onHeader: '&',\n /* Private */\n has: '=?'\n },\n\n template: [\n '
',\n '
',\n ' ',\n ' ',\n '
',\n '
',\n ' ',\n '
',\n ' ',\n '
',\n '
',\n '
',\n '
'\n ].join('\\n'),\n\n compile: SemanticUI.RecursiveCompiler(SemanticListLink)\n }\n }\n\n function SemanticListLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n if ( !scope.has )\n {\n scope.has = {\n icon: !!attributes.icon,\n image: !!attributes.image,\n header: !!attributes.header,\n headerLink: !!attributes.headerHref,\n description: !!attributes.description,\n children: !!attributes.children\n };\n }\n\n scope.getChildCount = function($)\n {\n var children = scope.children($);\n\n return children ? children.length : 0;\n };\n\n SemanticUI.setDefaultFunction( scope, 'description', attributes, function(locals){return locals.item} );\n SemanticUI.setDefaultFunction( scope, 'icon', attributes, function(locals){return locals.item.icon} );\n SemanticUI.setDefaultFunction( scope, 'header', attributes, function(locals){return locals.item.header} );\n SemanticUI.setDefaultFunction( scope, 'children', attributes, function(locals){return locals.item.children} );\n };\n }\n\n})( angular.module('semantic-ui-list', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .controller('SemanticMenuController', ['$scope', SemanticMenuController])\n .directive('smMenu', ['SemanticUI', SemanticMenu])\n ;\n\n function SemanticMenu(SemanticUI)\n {\n return {\n restrict: 'E',\n replace: true,\n scope: {\n /* Required */\n items: '=',\n label: '&',\n /* Optional */\n onClick: '&',\n children: '&',\n description: '&',\n icon: '&',\n hidden: '&',\n divider: '&'\n },\n template: [\n '
',\n '
',\n '',\n '{{ getDescription( i ) }}',\n '{{ getLabel( i ) }}',\n '',\n '
',\n '
'\n ].join('\\n'),\n\n controller: 'SemanticMenuController',\n\n compile: SemanticUI.RecursiveCompiler()\n };\n }\n\n function SemanticMenuController($scope)\n {\n $scope.hasChildren = function(item) {\n var children = $scope.children({item: item});\n return children && children.length;\n };\n $scope.getChildren = function(item) {\n return $scope.children({item: item});\n };\n\n $scope.getLabel = function(item) {\n return $scope.label({item: item});\n };\n $scope.getIcon = function(item) {\n return $scope.icon({item: item});\n }\n $scope.getDescription = function(item) {\n return $scope.description({item: item});\n };\n $scope.isHidden = function(item) {\n return $scope.hidden({item: item});\n };\n $scope.isDivider = function(item) {\n return $scope.divider({item: item});\n };\n }\n\n\n})( angular.module('semantic-ui-menu', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticPopupLink', ['SemanticUI', SemanticPopupLink])\n .factory('SemanticPopupInlineLink', ['SemanticUI', SemanticPopupInlineLink])\n .factory('SemanticPopupDisplayLink', ['SemanticUI', SemanticPopupDisplayLink])\n .directive('smPopupBind', ['SemanticUI', SemanticModalBind])\n .directive('smPopup', ['SemanticPopupLink', SemanticPopup])\n .directive('smPopupInline', ['SemanticPopupInlineLink', SemanticPopupInline])\n .directive('smPopupDisplay', ['SemanticPopupDisplayLink', SemanticPopupDisplay])\n .directive('smPopupDetached', [SemanticPopupDetached])\n ;\n\n var BEHAVIORS = {\n smPopupShow: 'show',\n smPopupHide: 'hide',\n smPopupHideAll: 'hide all',\n smPopupToggle: 'toggle',\n smPopupReposition: 'reposition',\n smPopupDestroy: 'destroy',\n smPopupRemove: 'remove popup'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'popup', method );\n }]);\n });\n\n function SemanticModalBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smPopupBind', 'popup' );\n }\n\n // An attribute directive which displays a popup for this element.\n function SemanticPopup(SemanticPopupLink)\n {\n return {\n\n restrict: 'A',\n\n scope: {\n /* Required */\n smPopup: '=',\n /* Optional */\n smPopupTitle: '=',\n smPopupHtml: '=',\n smPopupPosition: '@',\n smPopupVariation: '@',\n smPopupSettings: '=',\n smPopupOnInit: '=',\n /* Events */\n smPopupOnCreate: '=',\n smPopupOnRemove: '=',\n smPopupOnShow: '=',\n smPopupOnVisible: '=',\n smPopupOnHide: '=',\n smPopupOnHidden: '='\n },\n\n link: SemanticPopupLink\n };\n }\n\n function SemanticPopupLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.smPopupSettings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'popup', false, 'smPopupSettings' );\n\n SemanticUI.bindAttribute( scope, 'smPopup', element, 'data-content' );\n SemanticUI.bindAttribute( scope, 'smPopupTitle', element, 'data-title' );\n SemanticUI.bindAttribute( scope, 'smPopupHtml', element, 'data-html' );\n SemanticUI.bindAttribute( scope, 'smPopupPosition', element, 'data-position' );\n SemanticUI.bindAttribute( scope, 'smPopupVariation', element, 'data-variation' );\n\n SemanticUI.linkEvents( scope, settings, {\n onCreate: 'smPopupOnCreate',\n onRemove: 'smPopupOnRemove',\n onShow: 'smPopupOnShow',\n onVisible: 'smPopupOnVisible',\n onHide: 'smPopupOnHide',\n onHidden: 'smPopupOnHidden'\n });\n\n element.popup( settings );\n\n if ( angular.isFunction( scope.smPopupOnInit ) )\n {\n scope.smPopupOnInit( element );\n }\n };\n }\n\n // An attribute directive to show the detached popup which follows this element.\n function SemanticPopupInline(SemanticPopupInlineLink)\n {\n return {\n\n restrict: 'A',\n\n scope: {\n /* Optional */\n smPopupInline: '=',\n smPopupInlineOnInit: '=',\n /* Events */\n smPopupInlineOnCreate: '=',\n smPopupInlineOnRemove: '=',\n smPopupInlineOnShow: '=',\n smPopupInlineOnVisible: '=',\n smPopupInlineOnHide: '=',\n smPopupInlineOnHidden: '='\n },\n\n link: SemanticPopupInlineLink\n };\n }\n\n function SemanticPopupInlineLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.smPopupInline || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'popup', false, 'smPopupInline' );\n\n SemanticUI.linkEvents( scope, settings, {\n onCreate: 'smPopupInlineOnCreate',\n onRemove: 'smPopupInlineOnRemove',\n onShow: 'smPopupInlineOnShow',\n onVisible: 'smPopupInlineOnVisible',\n onHide: 'smPopupInlineOnHide',\n onHidden: 'smPopupInlineOnHidden'\n });\n\n settings.inline = true;\n\n element.popup( settings );\n\n if ( angular.isFunction( scope.smPopupInlineOnInit ) ) {\n scope.smPopupInlineOnInit( element );\n }\n };\n }\n\n // An attribute directive to show a detached popup over this element given it's name.\n function SemanticPopupDisplay(SemanticPopupDisplayLink)\n {\n return {\n\n restrict: 'A',\n\n scope: {\n /* Required */\n smPopupDisplay: '@',\n /* Optional */\n smPopupDisplaySettings: '=',\n smPopupDisplayOnInit: '=',\n /* Events */\n smPopupDisplayOnCreate: '=',\n smPopupDisplayOnRemove: '=',\n smPopupDisplayOnShow: '=',\n smPopupDisplayOnVisible: '=',\n smPopupDisplayOnHide: '=',\n smPopupDisplayOnHidden: '='\n },\n\n link: SemanticPopupDisplayLink\n };\n }\n\n function SemanticPopupDisplayLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.smPopupDisplaySettings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'popup', false, 'smPopupDisplaySettings' );\n\n SemanticUI.linkEvents( scope, settings, $.fn.popup.settings, {\n onCreate: 'smPopupDisplayOnCreate',\n onRemove: 'smPopupDisplayOnRemove',\n onShow: 'smPopupDisplayOnShow',\n onVisible: 'smPopupDisplayOnVisible',\n onHide: 'smPopupDisplayOnHide',\n onHidden: 'smPopupDisplayOnHidden'\n });\n\n settings.popup = '[data-popup-named=\"' + attributes.smPopupDisplay + '\"]';\n\n element.popup( settings );\n\n if ( angular.isFunction( scope.smPopupDisplayOnInit ) ) {\n scope.smPopupDisplayOnInit( element );\n }\n };\n }\n\n // An element directive for a popup, can be used after an element or can be named and used with sm-popup-display.\n function SemanticPopupDetached()\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n name: '@'\n },\n\n template: '
'\n };\n }\n\n})( angular.module('semantic-ui-popup', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticProgressLink', ['SemanticUI', SemanticProgressLink])\n .directive('smProgressBind', ['SemanticUI', SemanticModalBind])\n .directive('smProgress', ['SemanticProgressLink', SemanticProgress])\n ;\n\n var BEHAVIORS = {\n 'smProgressIncrement': 'increment'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'progress', method );\n }]);\n });\n\n function SemanticModalBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smProgressBind', 'progress' );\n }\n\n function SemanticProgress(SemanticProgressLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Required */\n model: '=',\n /* Optional */\n total: '=',\n label: '@',\n activeText: '@',\n successText: '@',\n errorText: '@',\n warningText: '@',\n duration: '@',\n onInit: '=',\n /* Events */\n onChange: '=',\n onSuccess: '=',\n onActive: '=',\n onError: '=',\n onWarning: '='\n },\n\n template: [\n '
',\n '
',\n '
',\n '
',\n '
',\n '
'\n ].join('\\n'),\n\n link: SemanticProgressLink\n };\n }\n\n function SemanticProgressLink(SemanticUI)\n {\n var addText = function( scope, attributes, settings, attribute, property )\n {\n if ( angular.isDefined( attributes[ attribute ] ) )\n {\n settings.text = settings.text || {};\n settings.text[ property ] = scope[ attribute ];\n }\n };\n\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'progress' );\n\n SemanticUI.linkEvents( scope, settings, $.fn.progress.settings, {\n onChange: 'onChange',\n onSuccess: 'onSuccess',\n onActive: 'onActive',\n onError: 'onError',\n onWarning: 'onWarning'\n });\n\n if ( !angular.isDefined( settings.showActivity ) )\n {\n settings.showActivity = false;\n }\n\n if ( angular.isDefined( attributes.label ) )\n {\n settings.label = scope.label;\n }\n\n if ( angular.isDefined( attributes.total ) )\n {\n settings.total = scope.total;\n }\n else\n {\n settings.total = 100;\n }\n\n if ( angular.isDefined( attributes.model ) )\n {\n settings.value = scope.model;\n }\n\n addText( scope, attributes, settings, 'activeText', 'active' );\n addText( scope, attributes, settings, 'successText', 'success' );\n addText( scope, attributes, settings, 'errorText', 'error' );\n addText( scope, attributes, settings, 'warningText', 'warning' );\n\n element.progress( settings );\n\n SemanticUI.watcher( scope, 'model', function(value)\n {\n var total = element.progress( 'get total' ) || 100;\n\n element.progress( 'set percent', value * 100 / total );\n element.progress( 'set value', value );\n });\n\n if ( angular.isDefined( attributes.duration ) )\n {\n SemanticUI.watcher( scope, 'duration', function(duration)\n {\n element.progress( 'set duration', duration );\n });\n }\n\n if ( angular.isDefined( attributes.total ) )\n {\n SemanticUI.watcher( scope, 'total', function(total)\n {\n element.progress( 'set total', total );\n });\n }\n\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-progress', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .controller('SemanticDropdownController', ['$scope', SemanticDropdownController])\n .factory('SemanticDropdownLink', ['SemanticUI', '$timeout', SemanticDropdownLink])\n .directive('smDropdownBind', ['SemanticUI', SemanticDropdownBind])\n .directive('smDropdown', ['SemanticDropdownLink', SemanticDropdown])\n ;\n\n var BEHAVIORS = {\n smDropdownToggle: 'toggle',\n smDropdownShow: 'show',\n smDropdownHide: 'hide',\n smDropdownClear: 'clear',\n smDropdownHideOthers: 'hide others',\n smDropdownRestoreDefaults: 'restore defaults',\n smDropdownRestoreDefaultText: 'restore default text',\n smDropdownRestoreDefaultValue: 'restore default value',\n smDropdownSaveDefaults: 'save defaults',\n smDropdownSetSelected: 'set selected',\n smDropdownSetText: 'set text',\n smDropdownSetValue: 'set value',\n smDropdownBindTouchEvents: 'bind touch events',\n smDropdownMouseEvents: 'mouse events',\n smDropdownBindIntent: 'bind intent',\n smDropdownUnbindIntent: 'unbind intent',\n smDropdownSetActive: 'set active',\n smDropdownSetVisible: 'set visible',\n smDropdownRemoveActive: 'remove active',\n smDropdownRemoveVisible: 'remove visible'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'dropdown', method );\n }]);\n });\n\n function SemanticDropdownBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smDropdownBind', 'dropdown' );\n }\n\n function SemanticDropdown(SemanticDropdownLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Required */\n model: '=',\n items: '=',\n label: '&',\n value: '&',\n /* Optional */\n settings: '=',\n defaultText: '=',\n onInit: '=',\n emptyValue: '=',\n /* Events */\n onChange: '=',\n onAdd: '=',\n onRemove: '=',\n onLabelCreate: '=',\n onLabelSelect: '=',\n onNoResults: '=',\n onShow: '=',\n onHide: '='\n },\n\n template: [\n '
',\n '',\n '
',\n '',\n '
'\n ].join('\\n'),\n\n controller: 'SemanticDropdownController',\n\n link: SemanticDropdownLink\n };\n }\n\n function SemanticDropdownController($scope)\n {\n var hashMap = {};\n\n // Returns the value to be placed in the data-value attribute. If the computed value has a $$hashKey,\n // then return the hashKey. This enables the exact instance of the item to be set to the model.\n $scope.getValue = function(item)\n {\n // Computes the value given the expression in the 'value' attribute\n return $scope.getKey( $scope.value( {item: item} ) );\n };\n\n $scope.getKey = function(value)\n {\n return (value ? value.$$hashKey || value : value) + '';\n };\n\n $scope.isEmpty = function()\n {\n return !$scope.model || $scope.model.length === 0;\n };\n\n // Translates the value (the model, an item of the model, or a variable\n // created from the value function) into the key that's stored on the dropdown.\n $scope.translateValue = function(value)\n {\n var translated = $scope.getKey( value );\n var matching = $scope.findMatchingItem( translated );\n\n if ( angular.isDefined( matching ) )\n {\n return $scope.getValue( matching );\n }\n };\n\n // Determines whether this dropdown should currently display the default text.\n $scope.hasDefault = function()\n {\n return ( $scope.defaultText && $scope.isEmpty() );\n };\n\n // Gets the current text for the drop down. If the current model has a value which is found\n // in the items, the appropriate item's label is displayed. Otherwise return the default text.\n $scope.getDefaultText = function()\n {\n return ( $scope.isEmpty() ? $scope.defaultText : '' );\n };\n\n // Finds an item instance that has the exact same value as the given value.\n $scope.findMatchingItem = function(value)\n {\n return hashMap[ value ];\n };\n\n // Updates the hash map providing a mapping from values to items.\n $scope.updateHashMap = function( items )\n {\n hashMap = {};\n\n angular.forEach( items, function(item)\n {\n hashMap[ $scope.getValue( item ) ] = item;\n });\n };\n }\n\n function SemanticDropdownLink(SemanticUI, $timeout)\n {\n return function (scope, element, attributes) {\n var applyValue = function (value) {\n $timeout(function () {\n if (element.dropdown('is multiple')) {\n if (value instanceof Array) {\n var translatedValue = [];\n\n for (var i = 0; i < value.length; i++) {\n var translated = scope.translateValue(value[ i ]);\n\n if (angular.isDefined(translated)) {\n translatedValue.push(translated);\n }\n }\n\n element.dropdown('set exactly', translatedValue);\n }\n }\n else {\n element.dropdown('set selected', scope.translateValue(value));\n }\n }, 0);\n };\n\n SemanticUI.setDefaultFunction( scope, 'label', attributes, function(locals){return locals.item} );\n SemanticUI.setDefaultFunction( scope, 'value', attributes, function(locals){return locals.item} );\n\n element.ready(function()\n {\n var settings = scope.settings || {};\n var ignoreChange = true;\n\n SemanticUI.linkSettings( scope, element, attributes, 'dropdown', true );\n\n SemanticUI.triggerChange( scope, 'model', element, true );\n\n // Returns the model on the scope, converting it to an array if it's not one.\n var modelArray = function() {\n if ( !(scope.model instanceof Array) ) {\n scope.model = scope.model ? [ scope.model ] : [];\n }\n return scope.model;\n };\n\n // When the model changes, set the value on the drop down\n var modelWatcher = SemanticUI.watcher( scope, 'model',\n function(updated) {\n applyValue( updated );\n }\n , null, true, true );\n\n // Inject an onChange function into the settings which sets the model value\n // and causes the scope to be updated.\n SemanticUI.onEvent( settings, 'onChange',\n function(value) {\n if ( ignoreChange ) {\n return;\n }\n if ( !element.dropdown('is multiple') ) {\n var mapped = scope.findMatchingItem( value );\n if (angular.isDefined(mapped)) {\n var mappedValue = scope.value({item: mapped});\n modelWatcher.set( mappedValue );\n } else if ( element.dropdown('setting', 'allowAdditions') ) {\n modelWatcher.set( value );\n } else {\n modelWatcher.set( scope.emptyValue );\n }\n }\n }\n );\n\n // When a new item is selected for multiple selection dropdowns, add it to the model.\n SemanticUI.onEvent( settings, 'onAdd',\n function(value) {\n if ( ignoreChange ) {\n return;\n }\n var mapped = scope.findMatchingItem( value );\n if (angular.isDefined(mapped)) {\n var mappedValue = scope.value({item: mapped});\n var indexOf = $.inArray( mappedValue, modelArray() );\n if ( indexOf === -1 ) {\n scope.model.push( mappedValue );\n modelWatcher.update();\n }\n } else if ( element.dropdown('setting', 'allowAdditions') ) {\n scope.model.push( value );\n modelWatcher.update();\n }\n }\n );\n\n // When an item is deselected for multiple selection dropdowns, remove it from the model.\n SemanticUI.onEvent( settings, 'onRemove',\n function(value) {\n if ( ignoreChange ) {\n return;\n }\n var mapped = scope.findMatchingItem( value );\n if (angular.isDefined(mapped)) {\n var mappedValue = scope.value({item: mapped});\n var indexOf = $.inArray( mappedValue, modelArray() );\n if ( indexOf !== -1 ) {\n scope.model.splice( indexOf, 1 );\n modelWatcher.update();\n }\n } else {\n var indexOf = $.inArray( value, modelArray() );\n if ( indexOf !== -1 ) {\n scope.model.splice( indexOf, 1 );\n modelWatcher.update();\n }\n }\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.dropdown.settings, {\n onChange: 'onChange',\n onAdd: 'onAdd',\n onRemove: 'onRemove',\n onLabelCreate: 'onLabelCreate',\n onLabelSelect: 'onLabelSelect',\n onNoResults: 'onNoResults',\n onShow: 'onShow',\n onHide: 'onHide'\n });\n\n // When items changes, rebuild the hashMap & reapply the values.\n scope.$watch( 'items', function( updated )\n {\n scope.updateHashMap( scope.items );\n applyValue( scope.model );\n\n }, true );\n\n // Initialize the element with the given settings.\n element.dropdown( settings );\n\n // Update the hashmap with items\n scope.updateHashMap( scope.items );\n\n // Apply current value\n applyValue( scope.model );\n\n // Save defaults\n element.dropdown( 'save defaults' );\n\n // Stop ignoring changes!\n ignoreChange = false;\n\n // Notify initialized callback.\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n\n });\n };\n }\n\n})( angular.module('semantic-ui-dropdown', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticRatingLink', ['SemanticUI', SemanticRatingLink])\n .directive('smRatingBind', ['SemanticUI', SemanticRatingBind])\n .directive('smRating', ['SemanticRatingLink', SemanticRating])\n ;\n\n var BEHAVIORS = {\n smRatingSet: 'set rating',\n smRatingDisable: 'disable',\n smRatingEnable: 'enable',\n smRatingClear: 'clear rating'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'rating', method );\n }]);\n });\n\n function SemanticRatingBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smRatingBind', 'rating' );\n }\n\n function SemanticRating(SemanticRatingLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope: {\n /* Required */\n model: '=',\n total: '=',\n /* Optional */\n type: '@',\n disabled: '=',\n settings: '=',\n onInit: '=',\n /* Events */\n onRate: '='\n },\n\n template: '
',\n\n link: SemanticRatingLink\n };\n }\n\n function SemanticRatingLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'rating', true );\n\n SemanticUI.triggerChange( scope, 'model', element, true );\n\n if ( attributes.disabled )\n {\n var disabledWatcher = SemanticUI.watcher( scope, 'disabled',\n function(updated) {\n element.rating( updated ? 'disable' : 'enable' );\n }\n );\n }\n\n var valueWatcher = SemanticUI.watcher( scope, 'model',\n function(updated) {\n element.rating( 'set rating', updated );\n }\n );\n\n SemanticUI.onEvent( settings, 'onRate',\n function(value) {\n valueWatcher.set( value );\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.rating.settings, {\n onRate: 'onRate'\n });\n\n element.rating( settings );\n\n if ( scope.disabled )\n {\n element.rating( 'disable' );\n }\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n });\n };\n }\n\n})( angular.module('semantic-ui-rating', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticSearchLink', ['SemanticUI', SemanticSearchLink])\n .directive('smSearchBind', ['SemanticUI', SemanticSearchBind])\n .directive('smSearch', ['SemanticSearchLink', SemanticSearch])\n ;\n\n var BEHAVIORS = {\n smSearchQuery: 'query',\n smSearchCancelQuery: 'cancel query',\n smSearchSearchLocal: 'search local',\n smSearchSearchRemote: 'search remote',\n smSearchSet: 'set value',\n smSearchShowResults: 'show results',\n smSearchHideResults: 'hide results',\n smSearchDestroy: 'destroy'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'search', method );\n }]);\n });\n\n function SemanticSearchBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smSearchBind', 'search' );\n }\n\n function SemanticSearch(SemanticSearchLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope: {\n /* Required */\n model: '=',\n /* Optional */\n text: '=?',\n icon: '@',\n placeholder: '@',\n category: '@',\n local: '=',\n remote: '@',\n settings: '=',\n onInit: '=',\n /* Events */\n onSelect: '=',\n onResultsAdd: '=',\n onSearchQuery: '=',\n onResults: '=',\n onResultsOpen: '=',\n onResultsClose: '='\n },\n\n template: [\n '
',\n '
',\n ' ',\n ' ',\n '
',\n '
',\n '
'\n ].join('\\n'),\n\n link: SemanticSearchLink\n };\n }\n\n function SemanticSearchLink(SemanticUI)\n {\n var defaultTitle = $.fn.search && $.fn.search.settings && $.fn.search.settings.fields ? $.fn.search.settings.fields.title : '';\n\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n var textProperty = settings.fields && settings.fields.title ? settings.fields.title : defaultTitle;\n\n SemanticUI.linkSettings( scope, element, attributes, 'search' );\n\n if ( scope.local ) settings.source = scope.local;\n if ( scope.remote ) settings.apiSettings = { url: scope.remote };\n if ( scope.category ) settings.type = 'category';\n\n var modelWatcher = SemanticUI.watcher( scope, 'model',\n function(value) {\n element.search( 'set value', value && (textProperty in value) ? value[ textProperty ] : value );\n }\n );\n\n SemanticUI.onEvent( settings, 'onSelect',\n function(result, response) {\n modelWatcher.set( result );\n if ( attributes.text ) {\n scope.$evalAsync(function() {\n scope.text = result[ textProperty ];\n });\n }\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.search.settings, {\n onSelect: 'onSelect',\n onResultsAdd: 'onResultsAdd',\n onSearchQuery: 'onSearchQuery',\n onResults: 'onResults',\n onResultsOpen: 'onResultsOpen',\n onResultsClose: 'onResultsClose'\n });\n\n element.search( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n\n if ( scope.model && attributes.text && textProperty in scope.model ) {\n scope.text = scope.model[ textProperty ];\n }\n };\n }\n\n})( angular.module('semantic-ui-search', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticShapeLink', ['SemanticUI', SemanticShapeLink])\n .directive('smShapeBind', ['SemanticUI', SemanticShapeBind])\n .directive('smShape', ['SemanticShapeLink', SemanticShape])\n ;\n\n var BEHAVIORS = {\n smShapeFlipUp: 'flip up',\n smShapeFlipDown: 'flip down',\n smShapeFlipLeft: 'flip left',\n smShapeFlipRight: 'flip right',\n smShapeFlipOver: 'flip over',\n smShapeFlipBack: 'flip back',\n smShapeSetNextSide: 'set next side',\n smShapeReset: 'reset',\n smShapeQueue: 'queue',\n smShapeRepaint: 'repaint',\n smShapeSetDefaultSide: 'set default side',\n smShapeSetStageSize: 'set stage size',\n smShapeRefresh: 'refresh'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'shape', method );\n }]);\n });\n\n function SemanticShapeBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smShapeBind', 'shape' );\n }\n\n function SemanticShape(SemanticShapeLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n\n settings: '=',\n onInit: '=',\n /* Events */\n onBeforeChange: '=',\n onChange: '=',\n },\n\n template: [\n '
',\n '
',\n '
',\n '
'\n ].join('\\n'),\n\n link: SemanticShapeLink\n\n };\n }\n\n function SemanticShapeLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'shape' );\n\n SemanticUI.linkEvents( scope, settings, $.fn.shape.settings, {\n onBeforeChange: 'onBeforeChange',\n onChange: 'onChange'\n });\n\n element.shape( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-shape', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticSidebarLink', ['SemanticUI', SemanticSidebarLink])\n .directive('smSidebarBind', ['SemanticUI', SemanticSidebarBind])\n .directive('smSidebar', ['SemanticSidebarLink', SemanticSidebar])\n ;\n\n var BEHAVIORS = {\n smSidebarShow: 'show',\n smSidebarHide: 'hide',\n smSidebarToggle: 'toggle',\n smSidebarPushPage: 'push page',\n smSidebarPullPage: 'pull page',\n smSidebarAddBodyCss: 'add body css',\n smSidebarRemoveBodyCss: 'remove body css'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'sidebar', method );\n }]);\n });\n\n function SemanticSidebarBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smSidebarBind', 'sidebar' );\n }\n\n function SemanticSidebar(SemanticSidebarLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope: {\n /* Required */\n items: '=',\n label: '&',\n /* Optional */\n onClick: '&',\n visible: '=',\n settings: '=',\n onInit: '=',\n /* Events */\n onVisible: '=',\n onShow: '=',\n onChange: '=',\n onHide: '=',\n onHidden: '='\n },\n\n template: [\n '
',\n ' ',\n '
'\n ].join('\\n'),\n\n link: SemanticSidebarLink\n };\n }\n\n function SemanticSidebarLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.setDefaultFunction( scope, 'label', attributes, function(locals){return locals.item} );\n\n SemanticUI.linkSettings( scope, element, attributes, 'sidebar' );\n\n if ( attributes.visible )\n {\n var visibleWatcher = SemanticUI.watcher( scope, 'visible',\n function(updated) {\n element.sidebar( updated ? 'show' : 'hide' );\n }\n );\n\n SemanticUI.onEvent( settings, 'onHide',\n function() {\n visibleWatcher.set( false );\n }\n );\n\n SemanticUI.onEvent( settings, 'onShow',\n function() {\n visibleWatcher.set( true );\n }\n );\n }\n\n SemanticUI.linkEvents( scope, settings, $.fn.sidebar.settings, {\n onVisible: 'onVisible',\n onShow: 'onShow',\n onChange: 'onChange',\n onHide: 'onHide',\n onHidden: 'onHidden'\n });\n\n var pusher = $('.pusher');\n\n if ( pusher.length )\n {\n element.insertBefore( pusher );\n }\n\n // Initialize the element with the given settings.\n element.sidebar( settings );\n\n if ( scope.visible )\n {\n element.sidebar( 'show' );\n }\n\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-sidebar', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticStickyLink', ['SemanticUI', SemanticStickyLink])\n .directive('smStickyBind', ['SemanticUI', SemanticStickyBind])\n .directive('smSticky', ['SemanticStickyLink', SemanticSticky])\n ;\n\n var BEHAVIORS = {\n smStickyRefresh: 'refresh'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'sticky', method );\n }]);\n });\n\n function SemanticStickyBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smStickyBind', 'sticky' );\n }\n\n function SemanticSticky(SemanticStickyLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n context: '@',\n settings: '=',\n onInit: '=',\n /* Events */\n onReposition: '=',\n onScroll: '=',\n onStick: '=',\n onUnstick: '=',\n onTop: '=',\n onBottom: '='\n },\n\n template: '
',\n\n link: SemanticStickyLink\n };\n }\n\n function SemanticStickyLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'sticky', true );\n\n SemanticUI.linkEvents( scope, settings, $.fn.sticky.settings, {\n onReposition: 'onReposition',\n onScroll: 'onScroll',\n onStick: 'onStick',\n onStick: 'onStick',\n onTop: 'onTop',\n onBottom: 'onBottom'\n });\n\n if ( !settings.context )\n {\n settings.context = scope.context;\n }\n\n element.sticky( settings );\n\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n });\n };\n }\n\n})( angular.module('semantic-ui-sticky', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticTabMenuLink', ['SemanticUI', '$timeout', SemanticTabMenuLink])\n .directive('smTabBind', ['SemanticUI', SemanticTabBind])\n .directive('smTabMenu', ['SemanticTabMenuLink', SemanticTabMenu])\n .directive('smTab', ['SemanticUI', SemanticTab])\n ;\n\n var BEHAVIORS = {\n smTabSet: 'change tab'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'tab', method );\n }]);\n });\n\n function SemanticTabBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smTabBind', 'tab' );\n }\n\n function SemanticTabMenu(SemanticTabMenuLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope: {\n /* Required */\n tabs: '=',\n /* Optional */\n active: '=?',\n settings: '='\n },\n\n template: [\n '
',\n ' ',\n '
'\n ].join('\\n'),\n\n link: SemanticTabMenuLink\n }\n }\n\n function SemanticTabMenuLink(SemanticUI, $timeout)\n {\n return function(scope, element, attributes)\n {\n var setActiveTab = function( tab )\n {\n if ( tab )\n {\n element.tab( 'change tab', tab );\n }\n };\n\n $timeout(function()\n {\n var settings = scope.settings || {};\n var elements = element.children('.item');\n var hasActive = !!attributes.active;\n\n SemanticUI.linkSettings( scope, elements, attributes, 'tab', true );\n\n if ( hasActive )\n {\n var activeWatcher = SemanticUI.watcher( scope, 'active',\n function( tab ) {\n setActiveTab( tab );\n }\n );\n\n SemanticUI.onEvent( settings, 'onVisible',\n function(tab) {\n activeWatcher.set( tab );\n }\n );\n }\n\n elements.tab( settings );\n\n if ( hasActive )\n {\n setActiveTab( scope.active );\n }\n });\n };\n }\n\n function SemanticTab(SemanticUI)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n name: '@'\n },\n\n template: '
'\n };\n }\n\n})( angular.module('semantic-ui-tab', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .directive('smTimeAgo', SemanticTimeAgo)\n ;\n\n function SemanticTimeAgo()\n {\n var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var THS = ['th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th'];\n var HOURS = ['12', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'];\n\n function getTime(date)\n {\n var hours = date.getHours();\n var minutes = date.getMinutes();\n var minutesPadded = minutes < 10 ? '0' + minutes : minutes;\n\n return HOURS[ hours % HOURS.length ] + ':' + minutesPadded + ( hours < 12 ? 'AM' : 'PM' );\n }\n\n function getTh(x)\n {\n return (x >= 11 && x <= 13) ? (x + 'th') : x + THS[ x % THS.length ];\n }\n\n function getDaysAgo(date)\n {\n return Math.ceil( ( new Date().getTime() - date.getTime() ) / 86400000 );\n }\n\n return {\n\n restrict: 'A',\n\n link: function(scope, element, attributes)\n {\n var timeout = false;\n var value = false;\n var fuzzy = false;\n\n var updateText = function()\n {\n var now = new Date();\n var today = new Date( now.getFullYear(), now.getMonth(), now.getDate() );\n var yesterday = new Date( now.getFullYear(), now.getMonth(), now.getDate() - 1 );\n\n var elapsed = now.getTime() - value.getTime();\n\n var text = '';\n var updateIn = false;\n\n if ( elapsed < 60000 )\n { // 1 minute\n text = 'Just now';\n updateIn = 60000 - elapsed;\n }\n else if ( elapsed < 3600000 )\n { // 1 hour\n var minutesAgo = Math.floor( elapsed / 60000 );\n text = minutesAgo === 1 ? '1 minute ago' : minutesAgo + ' minutes ago';\n updateIn = elapsed % 60000;\n }\n else if ( value.getTime() > today.getTime() )\n { // today\n text = 'Today at ' + getTime( value );\n updateIn = elapsed % 3600000;\n }\n else if ( value.getTime() > yesterday.getTime() )\n { // yesterday\n text = 'Yesterday at ' + getTime( value );\n updateIn = elapsed % 3600000;\n }\n else if ( value.getMonth() === now.getMonth() && value.getFullYear() === now.getFullYear() )\n { // this month\n text += 'The ' + getTh( value.getDate() );\n text +=' at ' + getTime( value );\n text += ' (' + getDaysAgo( value ) + ' days ago)';\n updateIn = 86400000;\n }\n else\n { // before the current month\n text += MONTHS[ value.getMonth() ] + ' ' + getTh( value.getDate() );\n if ( value.getFullYear() !== now.getFullYear() ) {\n text += ' ' + value.getFullYear();\n }\n text += ' at ' + getTime( value );\n var daysAgo = getDaysAgo( value );\n if ( daysAgo <= 60 ) {\n text += ' (' + getDaysAgo( value ) + ' days ago)'\n }\n }\n\n element.text( text );\n\n if ( timeout )\n {\n clearTimeout( timeout );\n timeout = false;\n }\n\n if ( updateIn )\n {\n timeout = setTimeout(function()\n {\n timeout = false;\n updateText();\n\n }, updateIn);\n }\n };\n\n scope.$watch( attributes.smTimeAgo, function(updated)\n {\n value = new Date( updated );\n updateText();\n });\n }\n }\n }\n\n})( angular.module('semantic-ui-timeago', ['semantic-ui-core']) );\n","(function(app)\n{\n\n // Transitions: scale, fade, flip, drop, fly, swing, browse, slide, jiggle, flash, shake, pulse, tada, bounce\n\n app\n .factory('SemanticTransitionLink', ['SemanticUI', SemanticTransitionLink])\n .directive('smTransition', ['SemanticTransitionLink', SemanticTransition])\n ;\n\n function SemanticTransition(SemanticTransitionLink)\n {\n return {\n\n restrict: 'A',\n\n scope: {\n smTransition: '@',\n smTransitionEvents: '@',\n smTransitionOther: '@'\n },\n\n link: SemanticTransitionLink\n };\n }\n\n function SemanticTransitionLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n scope.smTransitionEvents = scope.smTransitionEvents || 'click';\n\n element.on( scope.smTransitionEvents, function()\n {\n ( scope.smTransitionOther ? $( scope.smTransitionOther ) : element ).transition( scope.smTransition );\n });\n };\n }\n\n})( angular.module('semantic-ui-transition', ['semantic-ui-core']) );\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["sm.js","sm-core.js","checkbox/sm-checkbox.js","checkbox/sm-radio.js","accordion/sm-accordion.js","comment/sm-comment.js","dimmer/sm-dimmer.js","dropdown/sm-dropdown.js","embed/sm-embed.js","list/sm-list.js","menu/sm-menu.js","modal/sm-modal.js","popup/sm-popup.js","progress/sm-progress.js","rating/sm-rating.js","search/sm-search.js","sidebar/sm-sidebar.js","shape/sm-shape.js","sticky/sm-sticky.js","tab/sm-tab.js","timeago/sm-timeago.js","transition/sm-transition.js"],"names":["angular","module","app","SemanticUIFactory","$compile","SemanticUI","setDefaultFunction","scope","variable","attributes","func","triggerChange","element","initialized","$watch","updated","$evalAsync","trigger","bindAttribute","attribute","attr","onEvent","settings","evt","existing","undefined","result0","isFunction","apply","this","arguments","result1","linkEvents","defaults","linkings","scopeValue","linkSettings","settingsAttribute","forEach","value","key","createBind","restrict","link","initBind","ready","input","$eval","createBehavior","method","initBehavior","$","enabled","previousEvent","isString","isObject","isDefined","off","on","watcher","expression","context","force","equals","ignoreUpdate","call","set","update","RecursiveCompiler","postLink","post","compiledContents","contents","remove","pre","clone","append","SemanticButton","replace","transclude","template","SemanticItem","icon","SemanticFlatMenu","join","SemanticHtml","$injector","sanitize","$sce","get","getTrustedHtml","trustAsHtml","e","attrs","smHtml","html","factory","directive","SemanticCheckboxBind","SemanticCheckbox","SemanticCheckboxLink","model","label","indeterminateValue","checkedValue","uncheckedValue","children","onInit","onChange","onChecked","onIndeterminate","onDeterminate","onUnchecked","onEnable","onDisable","enabledWatcher","checkbox","modelWatcher","fn","$children","settingChildren","change","checked","each","i","child","length","BEHAVIORS","smCheckboxToggle","smCheckboxCheck","smCheckboxUncheck","smCheckboxIndeterminate","smCheckboxDeterminate","smCheckboxEnable","smCheckboxDisable","SemanticRadioBind","SemanticRadio","SemanticRadioLink","name","hasClass","removeClass","smRadioCheck","smRadioEnable","smRadioDisable","SemanticAccordionBind","SemanticAccordion","SemanticAccordionLink","onOpening","onOpen","onClosing","onClose","accordion","SemanticAccordionGroup","required","title","active","smAccordionOpen","smAccordionCloseOthers","smAccordionClose","smAccordionToggle","SemanticComments","comments","content","avatar","author","date","replies","reply","collapsible","onAuthor","onReply","onShowReplies","onHideReplies","controller","compile","SemanticCommentsController","$scope","setCollapsed","comment","$event","collapse","$isCollapsed","hasReplies","getReplyCount","getShowRepliesText","count","getHideRepliesText","SemanticDimmerBind","SemanticDimmer","SemanticDimmerLink","visible","onShow","onHide","visibleWatcher","dimmer","smDimmerShow","smDimmerHide","smDimmerToggle","SemanticDropdownBind","SemanticDropdown","SemanticDropdownLink","items","defaultText","emptyValue","onAdd","onRemove","onLabelCreate","onLabelSelect","onNoResults","SemanticDropdownController","hashMap","getValue","item","getKey","$$hashKey","isEmpty","translateValue","translated","matching","findMatchingItem","hasDefault","getDefaultText","updateHashMap","$timeout","applyValue","dropdown","Array","translatedValue","push","locals","ignoreChange","modelArray","mapped","mappedValue","indexOf","inArray","splice","smDropdownToggle","smDropdownShow","smDropdownHide","smDropdownClear","smDropdownHideOthers","smDropdownRestoreDefaults","smDropdownRestoreDefaultText","smDropdownRestoreDefaultValue","smDropdownSaveDefaults","smDropdownSetSelected","smDropdownSetText","smDropdownSetValue","smDropdownBindTouchEvents","smDropdownMouseEvents","smDropdownBindIntent","smDropdownUnbindIntent","smDropdownSetActive","smDropdownSetVisible","smDropdownRemoveActive","smDropdownRemoveVisible","SemanticEmbedBind","SemanticEmbed","SemanticEmbedLink","source","sourceId","url","placeholder","onCreate","onDisplay","onPlaceholderDisplay","onEmbed","id","embed","smEmbedReset","smEmbedShow","smEmbedHide","smEmbedDestroy","SemanticList","SemanticListLink","description","image","header","headerHref","onHeader","has","headerLink","getChildCount","SemanticMenu","onClick","hidden","divider","SemanticMenuController","hasChildren","getChildren","getLabel","getIcon","getDescription","isHidden","isDivider","SemanticModalBind","SemanticModal","SemanticModalLink","onVisible","onHidden","onApprove","onDeny","modal","smModalShow","smModalHide","smModalToggle","smModalRefresh","smModalShowDimmer","smModalHideDimmer","smModalHideOthers","smModalHideAll","smModalCacheSizes","smModalSetActive","SemanticPopup","SemanticPopupLink","smPopup","smPopupTitle","smPopupHtml","smPopupPosition","smPopupVariation","smPopupSettings","smPopupOnInit","smPopupOnCreate","smPopupOnRemove","smPopupOnShow","smPopupOnVisible","smPopupOnHide","smPopupOnHidden","popup","SemanticPopupInline","SemanticPopupInlineLink","smPopupInline","smPopupInlineOnInit","smPopupInlineOnCreate","smPopupInlineOnRemove","smPopupInlineOnShow","smPopupInlineOnVisible","smPopupInlineOnHide","smPopupInlineOnHidden","inline","SemanticPopupDisplay","SemanticPopupDisplayLink","smPopupDisplay","smPopupDisplaySettings","smPopupDisplayOnInit","smPopupDisplayOnCreate","smPopupDisplayOnRemove","smPopupDisplayOnShow","smPopupDisplayOnVisible","smPopupDisplayOnHide","smPopupDisplayOnHidden","SemanticPopupDetached","smPopupShow","smPopupHide","smPopupHideAll","smPopupToggle","smPopupReposition","smPopupDestroy","smPopupRemove","SemanticProgress","SemanticProgressLink","total","activeText","successText","errorText","warningText","duration","onSuccess","onActive","onError","onWarning","addText","property","text","progress","showActivity","smProgressIncrement","SemanticRatingBind","SemanticRating","SemanticRatingLink","type","disabled","onRate","rating","valueWatcher","smRatingSet","smRatingDisable","smRatingEnable","smRatingClear","SemanticSearchBind","SemanticSearch","SemanticSearchLink","category","local","remote","onSelect","onResultsAdd","onSearchQuery","onResults","onResultsOpen","onResultsClose","defaultTitle","search","fields","textProperty","apiSettings","result","response","smSearchQuery","smSearchCancelQuery","smSearchSearchLocal","smSearchSearchRemote","smSearchSet","smSearchShowResults","smSearchHideResults","smSearchDestroy","SemanticSidebarBind","SemanticSidebar","SemanticSidebarLink","sidebar","pusher","insertBefore","smSidebarShow","smSidebarHide","smSidebarToggle","smSidebarPushPage","smSidebarPullPage","smSidebarAddBodyCss","smSidebarRemoveBodyCss","SemanticShapeBind","SemanticShape","SemanticShapeLink","onBeforeChange","shape","smShapeFlipUp","smShapeFlipDown","smShapeFlipLeft","smShapeFlipRight","smShapeFlipOver","smShapeFlipBack","smShapeSetNextSide","smShapeReset","smShapeQueue","smShapeRepaint","smShapeSetDefaultSide","smShapeSetStageSize","smShapeRefresh","SemanticStickyBind","SemanticSticky","SemanticStickyLink","onReposition","onScroll","onStick","onUnstick","onTop","onBottom","sticky","smStickyRefresh","SemanticTabBind","SemanticTabMenu","SemanticTabMenuLink","tabs","setActiveTab","tab","elements","hasActive","activeWatcher","SemanticTab","smTabSet","SemanticTimeAgo","getTime","hours","getHours","minutes","getMinutes","minutesPadded","HOURS","getTh","x","THS","getDaysAgo","Math","ceil","Date","MONTHS","timeout","updateText","now","today","getFullYear","getMonth","getDate","yesterday","elapsed","updateIn","minutesAgo","floor","daysAgo","clearTimeout","setTimeout","smTimeAgo","SemanticTransition","SemanticTransitionLink","smTransition","smTransitionEvents","smTransitionOther","transition"],"mappings":"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","file":"angular-semantic-ui.min.js","sourcesContent":["\nangular.module('semantic-ui', [\n 'semantic-ui-core',\n 'semantic-ui-accordion',\n 'semantic-ui-checkbox',\n 'semantic-ui-radio',\n 'semantic-ui-comment',\n 'semantic-ui-dimmer',\n 'semantic-ui-dropdown',\n 'semantic-ui-embed',\n 'semantic-ui-list',\n 'semantic-ui-menu',\n 'semantic-ui-modal',\n 'semantic-ui-popup',\n 'semantic-ui-progress',\n 'semantic-ui-rating',\n 'semantic-ui-search',\n 'semantic-ui-shape',\n 'semantic-ui-sidebar',\n 'semantic-ui-sticky',\n 'semantic-ui-tab',\n 'semantic-ui-transition',\n 'semantic-ui-timeago'\n]);\n","(function(app)\n{\n\n app\n .factory('SemanticUI', ['$compile', SemanticUIFactory])\n .directive('smButton', SemanticButton)\n .directive('smMenuItem', SemanticItem)\n .directive('smFlatMenu', SemanticFlatMenu)\n .directive('smHtml', ['$injector', SemanticHtml])\n ;\n\n function SemanticUIFactory($compile)\n {\n var SemanticUI =\n {\n setDefaultFunction: function(scope, variable, attributes, func)\n {\n if ( !attributes[ variable ] )\n {\n scope[ variable ] = func;\n }\n },\n triggerChange: function(scope, variable, element, initialized)\n {\n scope.$watch( variable, function(updated)\n {\n // Don't trigger the change event if the element hasn't been initialized.\n if ( initialized )\n {\n // Trigger the change event during a digest cycle so any other\n // variables that are changing this current digest cycle can finish.\n scope.$evalAsync(function()\n {\n element.trigger('change');\n });\n }\n\n initialized = true;\n })\n },\n bindAttribute: function(scope, variable, element, attribute)\n {\n scope.$watch( variable, function(updated)\n {\n element.attr( attribute, updated );\n });\n },\n onEvent: function(settings, evt, func)\n {\n settings[ evt ] = (function(existing, undefined)\n {\n return function EventHandler()\n {\n var result0 = undefined;\n\n if ( angular.isFunction( existing ) )\n {\n result0 = existing.apply( this, arguments );\n }\n\n var result1 = func.apply( this, arguments );\n\n return ( result0 !== undefined ? result0 : result1 );\n }\n })( settings[ evt ] );\n },\n linkEvents: function(scope, settings, defaults, linkings)\n {\n for (var evt in linkings)\n {\n (function(variable, evt)\n {\n SemanticUI.onEvent( settings, evt, function()\n {\n var scopeValue = scope[ variable ];\n\n if ( angular.isFunction( scopeValue ) )\n {\n return scopeValue.apply( this, arguments );\n }\n else if ( angular.isFunction( defaults[ evt ] ) )\n {\n return defaults[ evt ].apply( this, arguments );\n }\n });\n\n })( linkings[ evt ], evt );\n }\n },\n linkSettings: function(scope, element, attributes, module, initialized, settingsAttribute)\n {\n var settings = settingsAttribute || 'settings';\n\n if ( settings in attributes )\n {\n scope.$watch( settings, function( updated )\n {\n if ( initialized )\n {\n angular.forEach( updated, function(value, key)\n {\n element[ module ]( 'setting', key, value );\n });\n }\n\n initialized = true;\n\n }, true );\n }\n },\n createBind: function(attribute, module)\n {\n return {\n\n restrict: 'A',\n\n link: function(scope, element, attributes)\n {\n SemanticUI.linkSettings( scope, element, attributes, module, false, attribute );\n SemanticUI.initBind( scope, element, attributes, attribute, module );\n }\n };\n },\n initBind: function(scope, element, attributes, attribute, module)\n {\n element.ready(function()\n {\n var settings = {};\n var input = attributes[ attribute ];\n\n if ( input )\n {\n settings = scope.$eval( input );\n }\n\n element[ module ]( settings );\n });\n },\n createBehavior: function(attribute, module, method)\n {\n return {\n\n restrict: 'A',\n\n link: function(scope, element, attributes)\n {\n SemanticUI.initBehavior( scope, attributes, attribute, element, module, method );\n }\n };\n },\n initBehavior: function(scope, attributes, attribute, element, module, method)\n {\n // Default settings on the attribute.\n var settings = {\n $: undefined,\n evt: 'click',\n enabled: true,\n value: undefined\n };\n\n var onEvent = function()\n {\n // If the trigger is currently enabled...\n if ( settings.enabled )\n {\n // Call the method on the module.\n $( settings.$ )[ module ]( method, settings.value );\n }\n };\n\n var previousEvent = false;\n\n scope.$watch( attributes[ attribute ], function(input)\n {\n // If the attribute value is a string, take it as the selector\n if ( angular.isString( input ) )\n {\n settings.$ = input;\n }\n // If the attribute value is an object, overwrite the defaults.\n else if ( angular.isObject( input ) )\n {\n if ( !angular.isString( input.evt ) ) input.evt = settings.evt;\n if ( !angular.isDefined( input.enabled ) ) input.enabled = settings.enabled;\n\n settings = input;\n }\n\n if ( previousEvent )\n {\n element.off( previousEvent, onEvent );\n }\n\n element.on( previousEvent = settings.evt, onEvent );\n\n }, true );\n },\n watcher: function(scope, expression, func, context, force, equals)\n {\n var ignoreUpdate = false;\n\n scope.$watch( expression, function( updated )\n {\n if ( !ignoreUpdate )\n {\n func.call( context, updated );\n }\n\n ignoreUpdate = false;\n\n }, equals );\n\n return {\n set: function(value)\n {\n if ( scope[ expression ] != value || force )\n {\n scope.$evalAsync(function()\n {\n scope[ expression ] = value;\n ignoreUpdate = true;\n });\n }\n },\n update: function()\n {\n scope.$evalAsync(function()\n {\n ignoreUpdate = true;\n });\n }\n }\n },\n RecursiveCompiler: function(postLink)\n {\n return function(element, link)\n {\n // Normalize the link parameter\n if( angular.isFunction( link ) )\n {\n link = { post: link };\n }\n\n // Break the recursion loop by removing the contents\n var contents = element.contents().remove();\n var compiledContents;\n\n return {\n pre: (link && link.pre) ? link.pre : null,\n /**\n * Compiles and re-adds the contents\n */\n post: function(scope, element)\n {\n // Compile the contents\n if( !compiledContents )\n {\n compiledContents = $compile(contents);\n }\n\n // Re-add the compiled contents to the element\n compiledContents( scope, function(clone)\n {\n element.append(clone);\n });\n\n // Call the post-linking function, if any\n if ( link && link.post )\n {\n link.post.apply( null, arguments );\n }\n\n if ( angular.isFunction( postLink ) )\n {\n postLink.apply( null, arguments );\n }\n }\n };\n };\n }\n };\n\n return SemanticUI;\n }\n\n function SemanticButton()\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n template: ''\n };\n }\n\n function SemanticItem()\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n icon: '@'\n },\n\n template: ''\n }\n }\n\n function SemanticFlatMenu()\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n template: [\n '
',\n '
',\n '
'\n ].join('\\n')\n }\n }\n\n function SemanticHtml($injector)\n {\n var sanitize = function(value)\n {\n return value;\n };\n\n try\n {\n $sce = $injector.get('$sce');\n\n sanitize = function(value)\n {\n return $sce.getTrustedHtml( $sce.trustAsHtml( value ) );\n };\n }\n catch (e)\n {\n // ignore\n }\n\n return function(scope, element, attrs)\n {\n scope.$watch( attrs.smHtml, function(value)\n {\n element.html( sanitize( value || '' ) );\n });\n };\n }\n\n})( angular.module('semantic-ui-core', []) );\n","(function(app)\n{\n\n app\n .factory('SemanticCheckboxLink', ['SemanticUI', SemanticCheckboxLink])\n .directive('smCheckboxBind', ['SemanticUI', SemanticCheckboxBind])\n .directive('smCheckbox', ['SemanticCheckboxLink', SemanticCheckbox])\n ;\n\n var BEHAVIORS = {\n smCheckboxToggle: 'toggle',\n smCheckboxCheck: 'check',\n smCheckboxUncheck: 'uncheck',\n smCheckboxIndeterminate: 'indeterminate',\n smCheckboxDeterminate: 'determinate',\n smCheckboxEnable: 'enable',\n smCheckboxDisable: 'disable'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'checkbox', method );\n }]);\n });\n\n function SemanticCheckboxBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smCheckboxBind', 'checkbox' );\n }\n\n function SemanticCheckbox(SemanticCheckboxLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Required */\n model: '=',\n label: '@',\n /* Optional */\n settings: '=',\n enabled: '=',\n indeterminateValue: '=',\n checkedValue: '=',\n uncheckedValue: '=',\n children: '@',\n onInit: '=',\n /* Events */\n onChange: '=',\n onChecked: '=',\n onIndeterminate: '=',\n onDeterminate: '=',\n onUnchecked: '=',\n onEnable: '=',\n onDisable: '='\n },\n\n template: [\n '
',\n ' ',\n ' ',\n '
'\n ].join('\\n'),\n\n link: SemanticCheckboxLink\n };\n }\n\n function SemanticCheckboxLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'checkbox', true );\n\n SemanticUI.triggerChange( scope, 'model', element, true );\n\n var checkedValue = function() {\n return angular.isDefined( scope.checkedValue ) ? scope.checkedValue : true;\n };\n var uncheckedValue = function() {\n return angular.isDefined( scope.uncheckedValue ) ? scope.uncheckedValue : false;\n };\n var indeterminateValue = function() {\n return angular.isDefined( scope.indeterminateValue ) ? scope.indeterminateValue : void 0;\n };\n\n if ( attributes.enabled )\n {\n var enabledWatcher = SemanticUI.watcher( scope, 'enabled',\n function(updated) {\n if ( angular.isDefined( updated ) ) {\n element.checkbox( updated ? 'set enabled' : 'set disabled' );\n }\n }\n );\n\n SemanticUI.onEvent( settings, 'onEnable',\n function(value) {\n enabledWatcher.set( true );\n }\n );\n\n SemanticUI.onEvent( settings, 'onDisable',\n function(value) {\n enabledWatcher.set( false );\n }\n );\n }\n\n var modelWatcher = SemanticUI.watcher( scope, 'model',\n function(updated) {\n if ( angular.isDefined( updated ) ) {\n element.checkbox( updated ? 'set checked' : 'set unchecked' );\n }\n }\n );\n\n SemanticUI.onEvent( settings, 'onChecked',\n function() {\n modelWatcher.set( checkedValue() );\n }\n );\n\n SemanticUI.onEvent( settings, 'onUnchecked',\n function() {\n modelWatcher.set( uncheckedValue() );\n }\n );\n\n SemanticUI.onEvent( settings, 'onIndeterminate',\n function() {\n modelWatcher.set( indeterminateValue() );\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.checkbox.settings, {\n onChange: 'onChange',\n onChecked: 'onChecked',\n onIndeterminate: 'onIndeterminate',\n onDeterminate: 'onDeterminate',\n onUnchecked: 'onUnchecked',\n onEnable: 'onEnable',\n onDisable: 'onDisable'\n });\n\n // If the checkbox has children, link the value of this checkbox to the children\n if ( scope.children )\n {\n var $children = $( scope.children );\n var settingChildren = false;\n\n SemanticUI.onEvent( settings, 'onChecked',\n function() {\n settingChildren = true;\n $children.checkbox( 'check' );\n settingChildren = false;\n }\n );\n SemanticUI.onEvent( settings, 'onUnchecked',\n function() {\n settingChildren = true;\n $children.checkbox( 'uncheck' );\n settingChildren = false;\n }\n );\n\n $children.children('input[type=checkbox], input[type=radio]')\n .change(function() {\n\n if ( settingChildren ) {\n return;\n }\n\n var checked = 0;\n\n $children.each(function(i, child) {\n if ( $( child ).checkbox( 'is checked') ) {\n checked++;\n }\n });\n\n if ( checked === 0 ) {\n element.checkbox( 'uncheck' );\n }\n else if ( checked === $children.length ) {\n element.checkbox( 'check' );\n }\n else {\n element.checkbox( 'indeterminate' );\n }\n })\n ;\n }\n\n // Initialize the element with the given settings.\n element.checkbox( settings );\n\n // Set initial state of the checkbox\n if ( scope.model == checkedValue() )\n {\n element.checkbox( 'set checked' );\n }\n else if ( scope.model === indeterminateValue() )\n {\n element.checkbox( 'set indeterminate' );\n }\n\n if ( angular.isDefined( scope.enabled ) && !scope.enabled )\n {\n element.checkbox( 'set disabled' );\n }\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n });\n };\n }\n\n})( angular.module('semantic-ui-checkbox', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticRadioLink', ['SemanticUI', SemanticRadioLink])\n .directive('smRadioBind', ['SemanticUI', SemanticRadioBind])\n .directive('smRadio', ['SemanticRadioLink', SemanticRadio])\n ;\n\n var BEHAVIORS = {\n smRadioCheck: 'check',\n smRadioEnable: 'enable',\n smRadioDisable: 'disable'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'checkbox', method );\n }]);\n });\n\n function SemanticRadioBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smRadioBind', 'checkbox' );\n }\n\n function SemanticRadio(SemanticRadioLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Required */\n model: '=',\n label: '@',\n name: '@',\n value: '=',\n /* Optional */\n settings: '=',\n enabled: '=',\n onInit: '=',\n /* Events */\n onChange: '=',\n onChecked: '=',\n onUnchecked: '=',\n onEnable: '=',\n onDisable: '='\n },\n\n template: [\n '
',\n ' ',\n ' ',\n '
'\n ].join('\\n'),\n\n link: SemanticRadioLink\n };\n }\n\n function SemanticRadioLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'checkbox', true );\n\n SemanticUI.triggerChange( scope, 'model', element, true );\n\n if ( attributes.enabled )\n {\n var enabledWatcher = SemanticUI.watcher( scope, 'enabled',\n function(updated) {\n if ( angular.isDefined( updated ) ) {\n element.checkbox( updated ? 'set enabled' : 'set disabled' );\n }\n }\n );\n\n SemanticUI.onEvent( settings, 'onEnable',\n function(value) {\n enabledWatcher.set( true );\n }\n );\n\n SemanticUI.onEvent( settings, 'onDisable',\n function(value) {\n enabledWatcher.set( false );\n }\n );\n }\n\n var modelWatcher = SemanticUI.watcher( scope, 'model',\n function(updated) {\n if ( updated === scope.value ) {\n element.checkbox( 'set checked' );\n }\n }\n );\n\n SemanticUI.onEvent( settings, 'onChecked',\n function() {\n modelWatcher.set( scope.value );\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.checkbox.settings, {\n onChange: 'onChange',\n onChecked: 'onChecked',\n onUnchecked: 'onUnchecked',\n onEnable: 'onEnable',\n onDisable: 'onDisable'\n });\n\n // Initialize the element with the given settings.\n element.checkbox( settings );\n\n // Set initial state of the radio\n if ( scope.model === scope.value )\n {\n element.checkbox( 'set checked' );\n }\n\n // If the radio is a slider, remove the radio class\n if ( element.hasClass( 'slider' ) )\n {\n element.removeClass( 'radio' );\n }\n\n if ( angular.isDefined( scope.enabled ) && !scope.enabled )\n {\n element.checkbox( 'set disabled' );\n }\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n });\n };\n }\n\n})( angular.module('semantic-ui-radio', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticAccordionLink', ['SemanticUI', SemanticAccordionLink])\n .directive('smAccordionBind', ['SemanticUI', SemanticAccordionBind])\n .directive('smAccordion', ['SemanticAccordionLink', SemanticAccordion])\n .directive('smAccordionGroup', SemanticAccordionGroup)\n ;\n\n var BEHAVIORS = {\n smAccordionOpen: 'open',\n smAccordionCloseOthers: 'close others',\n smAccordionClose: 'close',\n smAccordionToggle: 'toggle'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'accordion', method );\n }]);\n });\n\n function SemanticAccordionBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smAccordionBind', 'accordion' );\n }\n\n function SemanticAccordion(SemanticAccordionLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n settings: '=',\n onInit: '=',\n /* Events */\n onOpening: '=',\n onOpen: '=',\n onClosing: '=',\n onClose: '=',\n onChange: '='\n },\n\n template: '
',\n\n link: SemanticAccordionLink\n };\n }\n\n function SemanticAccordionLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'accordion', true );\n\n SemanticUI.linkEvents( scope, settings, $.fn.accordion.settings, {\n onOpening: 'onOpening',\n onOpen: 'onOpen',\n onClosing: 'onClosing',\n onClose: 'onClose',\n onChange: 'onChange'\n });\n\n element.accordion( settings );\n\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n });\n };\n }\n\n function SemanticAccordionGroup()\n {\n return {\n restrict: 'E',\n required: 'title',\n transclude: true,\n scope: {\n /* Required */\n title: '=',\n /* Optional */\n active: '='\n },\n template: [\n '
',\n ' ',\n ' {{ title }}',\n '
',\n '
',\n '
'\n ].join('\\n')\n }\n }\n\n})( angular.module('semantic-ui-accordion', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .controller('SemanticCommentsController', ['$scope', SemanticCommentsController])\n .directive('smComments', ['SemanticUI', SemanticComments])\n ;\n\n function SemanticComments(SemanticUI)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n // transclude: true,\n\n scope: {\n /* Required */\n comments: '=',\n content: '&',\n /* Optional */\n avatar: '&',\n author: '&',\n date: '&',\n replies: '&',\n reply: '=',\n collapsible: '=',\n\n onAuthor: '&',\n onReply: '&',\n onShowReplies: '&',\n onHideReplies: '&'\n },\n\n template: [\n '
',\n '
',\n ' ',\n ' ',\n ' ',\n '
',\n ' ',\n '
',\n ' ',\n '
',\n '
',\n '
',\n ' Reply',\n ' ',\n ' ',\n '
',\n '
',\n ' ',\n '
',\n '
'\n ].join('\\n'),\n\n controller: 'SemanticCommentsController',\n\n compile: SemanticUI.RecursiveCompiler()\n\n };\n }\n\n function SemanticCommentsController($scope)\n {\n $scope.setCollapsed = function(comment, $event, collapse)\n {\n var $ = {comment: comment, $event: $event};\n\n if ( comment.$isCollapsed != collapse )\n {\n if ( comment.$isCollapsed )\n {\n if ( $scope.onShowReplies($) !== false )\n {\n comment.$isCollapsed = false;\n }\n }\n else\n {\n if ( $scope.onHideReplies($) !== false )\n {\n comment.$isCollapsed = true;\n }\n }\n }\n };\n\n $scope.hasReplies = function($)\n {\n if ( !$scope.reply )\n {\n return false;\n }\n\n var replies = $scope.replies($);\n\n return replies && replies.length;\n };\n\n $scope.getReplyCount = function($)\n {\n if ( !$scope.reply )\n {\n return false;\n }\n\n var replies = $scope.replies($);\n\n return replies ? replies.length : 0;\n };\n\n $scope.getShowRepliesText = function($)\n {\n var count = $scope.getReplyCount($);\n\n return count === 0 ? '' : (count === 1 ? 'Show Reply' : 'Show Replies (' + count + ')');\n };\n\n $scope.getHideRepliesText = function($)\n {\n var count = $scope.getReplyCount($);\n\n return count === 0 ? '' : (count === 1 ? 'Hide Reply' : 'Hide Replies (' + count + ')');\n };\n }\n\n})( angular.module('semantic-ui-comment', ['semantic-ui-core', 'semantic-ui-timeago']) );\n","(function(app)\n{\n\n app\n .factory('SemanticDimmerLink', ['SemanticUI', SemanticDimmerLink])\n .directive('smDimmerBind', ['SemanticUI', SemanticDimmerBind])\n .directive('smDimmer', ['SemanticDimmerLink', SemanticDimmer])\n ;\n\n var BEHAVIORS = {\n smDimmerShow: 'show',\n smDimmerHide: 'hide',\n smDimmerToggle: 'toggle'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'dimmer', method );\n }]);\n });\n\n function SemanticDimmerBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smDimmerBind', 'dimmer' );\n }\n\n function SemanticDimmer(SemanticDimmerLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n visible: '=',\n settings: '=',\n onInit: '=',\n /* Events */\n onShow: '=',\n onHide: '=',\n onChange: '='\n },\n\n template: '
',\n\n link: SemanticDimmerLink\n };\n }\n\n function SemanticDimmerLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'dimmer' );\n\n // If the visible attribute is specified, listen to onHide and update modal when variable changes.\n if ( attributes.visible )\n {\n var visibleWatcher = SemanticUI.watcher( scope, 'visible',\n function(updated) {\n element.dimmer( updated ? 'show' : 'hide' );\n }\n );\n\n SemanticUI.onEvent( settings, 'onShow',\n function(value) {\n visibleWatcher.set( true );\n }\n );\n\n SemanticUI.onEvent( settings, 'onHide',\n function(value) {\n visibleWatcher.set( false );\n }\n );\n }\n\n SemanticUI.linkEvents( scope, settings, $.fn.dimmer.settings, {\n onShow: 'onShow',\n onHide: 'onHide',\n onChange: 'onChange'\n });\n\n element.dimmer( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-dimmer', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .controller('SemanticDropdownController', ['$scope', SemanticDropdownController])\n .factory('SemanticDropdownLink', ['SemanticUI', '$timeout', SemanticDropdownLink])\n .directive('smDropdownBind', ['SemanticUI', SemanticDropdownBind])\n .directive('smDropdown', ['SemanticDropdownLink', SemanticDropdown])\n ;\n\n var BEHAVIORS = {\n smDropdownToggle: 'toggle',\n smDropdownShow: 'show',\n smDropdownHide: 'hide',\n smDropdownClear: 'clear',\n smDropdownHideOthers: 'hide others',\n smDropdownRestoreDefaults: 'restore defaults',\n smDropdownRestoreDefaultText: 'restore default text',\n smDropdownRestoreDefaultValue: 'restore default value',\n smDropdownSaveDefaults: 'save defaults',\n smDropdownSetSelected: 'set selected',\n smDropdownSetText: 'set text',\n smDropdownSetValue: 'set value',\n smDropdownBindTouchEvents: 'bind touch events',\n smDropdownMouseEvents: 'mouse events',\n smDropdownBindIntent: 'bind intent',\n smDropdownUnbindIntent: 'unbind intent',\n smDropdownSetActive: 'set active',\n smDropdownSetVisible: 'set visible',\n smDropdownRemoveActive: 'remove active',\n smDropdownRemoveVisible: 'remove visible'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'dropdown', method );\n }]);\n });\n\n function SemanticDropdownBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smDropdownBind', 'dropdown' );\n }\n\n function SemanticDropdown(SemanticDropdownLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Required */\n model: '=',\n items: '=',\n label: '&',\n value: '&',\n /* Optional */\n settings: '=',\n defaultText: '=',\n onInit: '=',\n emptyValue: '=',\n /* Events */\n onChange: '=',\n onAdd: '=',\n onRemove: '=',\n onLabelCreate: '=',\n onLabelSelect: '=',\n onNoResults: '=',\n onShow: '=',\n onHide: '='\n },\n\n template: [\n '
',\n '',\n '
',\n '',\n '
'\n ].join('\\n'),\n\n controller: 'SemanticDropdownController',\n\n link: SemanticDropdownLink\n };\n }\n\n function SemanticDropdownController($scope)\n {\n var hashMap = {};\n\n // Returns the value to be placed in the data-value attribute. If the computed value has a $$hashKey,\n // then return the hashKey. This enables the exact instance of the item to be set to the model.\n $scope.getValue = function(item)\n {\n // Computes the value given the expression in the 'value' attribute\n return $scope.getKey( $scope.value( {item: item} ) );\n };\n\n $scope.getKey = function(value)\n {\n return (value ? value.$$hashKey || value : value) + '';\n };\n\n $scope.isEmpty = function()\n {\n return !$scope.model || $scope.model.length === 0;\n };\n\n // Translates the value (the model, an item of the model, or a variable\n // created from the value function) into the key that's stored on the dropdown.\n $scope.translateValue = function(value)\n {\n var translated = $scope.getKey( value );\n var matching = $scope.findMatchingItem( translated );\n\n if ( angular.isDefined( matching ) )\n {\n return $scope.getValue( matching );\n }\n };\n\n // Determines whether this dropdown should currently display the default text.\n $scope.hasDefault = function()\n {\n return ( $scope.defaultText && $scope.isEmpty() );\n };\n\n // Gets the current text for the drop down. If the current model has a value which is found\n // in the items, the appropriate item's label is displayed. Otherwise return the default text.\n $scope.getDefaultText = function()\n {\n return ( $scope.isEmpty() ? $scope.defaultText : '' );\n };\n\n // Finds an item instance that has the exact same value as the given value.\n $scope.findMatchingItem = function(value)\n {\n return hashMap[ value ];\n };\n\n // Updates the hash map providing a mapping from values to items.\n $scope.updateHashMap = function( items )\n {\n hashMap = {};\n\n angular.forEach( items, function(item)\n {\n hashMap[ $scope.getValue( item ) ] = item;\n });\n };\n }\n\n function SemanticDropdownLink(SemanticUI, $timeout)\n {\n return function (scope, element, attributes) {\n var applyValue = function (value) {\n $timeout(function () {\n if (element.dropdown('is multiple')) {\n if (value instanceof Array) {\n var translatedValue = [];\n\n for (var i = 0; i < value.length; i++) {\n var translated = scope.translateValue(value[ i ]);\n\n if (angular.isDefined(translated)) {\n translatedValue.push(translated);\n }\n }\n\n element.dropdown('set exactly', translatedValue);\n }\n }\n else {\n element.dropdown('set selected', scope.translateValue(value));\n }\n }, 0);\n };\n\n SemanticUI.setDefaultFunction( scope, 'label', attributes, function(locals){return locals.item} );\n SemanticUI.setDefaultFunction( scope, 'value', attributes, function(locals){return locals.item} );\n\n element.ready(function()\n {\n var settings = scope.settings || {};\n var ignoreChange = true;\n\n SemanticUI.linkSettings( scope, element, attributes, 'dropdown', true );\n\n SemanticUI.triggerChange( scope, 'model', element, true );\n\n // Returns the model on the scope, converting it to an array if it's not one.\n var modelArray = function() {\n if ( !(scope.model instanceof Array) ) {\n scope.model = scope.model ? [ scope.model ] : [];\n }\n return scope.model;\n };\n\n // When the model changes, set the value on the drop down\n var modelWatcher = SemanticUI.watcher( scope, 'model',\n function(updated) {\n applyValue( updated );\n }\n , null, true, true );\n\n // Inject an onChange function into the settings which sets the model value\n // and causes the scope to be updated.\n SemanticUI.onEvent( settings, 'onChange',\n function(value) {\n if ( ignoreChange ) {\n return;\n }\n if ( !element.dropdown('is multiple') ) {\n var mapped = scope.findMatchingItem( value );\n if (angular.isDefined(mapped)) {\n var mappedValue = scope.value({item: mapped});\n modelWatcher.set( mappedValue );\n } else if ( element.dropdown('setting', 'allowAdditions') ) {\n modelWatcher.set( value );\n } else {\n modelWatcher.set( scope.emptyValue );\n }\n }\n }\n );\n\n // When a new item is selected for multiple selection dropdowns, add it to the model.\n SemanticUI.onEvent( settings, 'onAdd',\n function(value) {\n if ( ignoreChange ) {\n return;\n }\n var mapped = scope.findMatchingItem( value );\n if (angular.isDefined(mapped)) {\n var mappedValue = scope.value({item: mapped});\n var indexOf = $.inArray( mappedValue, modelArray() );\n if ( indexOf === -1 ) {\n scope.model.push( mappedValue );\n modelWatcher.update();\n }\n } else if ( element.dropdown('setting', 'allowAdditions') ) {\n scope.model.push( value );\n modelWatcher.update();\n }\n }\n );\n\n // When an item is deselected for multiple selection dropdowns, remove it from the model.\n SemanticUI.onEvent( settings, 'onRemove',\n function(value) {\n if ( ignoreChange ) {\n return;\n }\n var mapped = scope.findMatchingItem( value );\n if (angular.isDefined(mapped)) {\n var mappedValue = scope.value({item: mapped});\n var indexOf = $.inArray( mappedValue, modelArray() );\n if ( indexOf !== -1 ) {\n scope.model.splice( indexOf, 1 );\n modelWatcher.update();\n }\n } else {\n var indexOf = $.inArray( value, modelArray() );\n if ( indexOf !== -1 ) {\n scope.model.splice( indexOf, 1 );\n modelWatcher.update();\n }\n }\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.dropdown.settings, {\n onChange: 'onChange',\n onAdd: 'onAdd',\n onRemove: 'onRemove',\n onLabelCreate: 'onLabelCreate',\n onLabelSelect: 'onLabelSelect',\n onNoResults: 'onNoResults',\n onShow: 'onShow',\n onHide: 'onHide'\n });\n\n // When items changes, rebuild the hashMap & reapply the values.\n scope.$watch( 'items', function( updated )\n {\n scope.updateHashMap( scope.items );\n applyValue( scope.model );\n\n }, true );\n\n // Initialize the element with the given settings.\n element.dropdown( settings );\n\n // Update the hashmap with items\n scope.updateHashMap( scope.items );\n\n // Apply current value\n applyValue( scope.model );\n\n // Save defaults\n element.dropdown( 'save defaults' );\n\n // Stop ignoring changes!\n ignoreChange = false;\n\n // Notify initialized callback.\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n\n });\n };\n }\n\n})( angular.module('semantic-ui-dropdown', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticEmbedLink', ['SemanticUI', SemanticEmbedLink])\n .directive('smEmbedBind', ['SemanticUI', SemanticEmbedBind])\n .directive('smEmbed', ['SemanticEmbedLink', SemanticEmbed])\n ;\n\n var BEHAVIORS = {\n smEmbedReset: 'reset',\n smEmbedShow: 'show',\n smEmbedHide: 'hide',\n smEmbedDestroy: 'destroy'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'embed', method );\n }]);\n });\n\n function SemanticEmbedBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smEmbedBind', 'embed' );\n }\n\n function SemanticEmbed(SemanticEmbedLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n source: '@',\n sourceId: '@',\n url: '@',\n placeholder: '@',\n icon: '@',\n settings: '=',\n onInit: '=',\n /* Events */\n onCreate: '=',\n onDisplay: '=',\n onPlaceholderDisplay: '=',\n onEmbed: '='\n },\n\n template: '
',\n\n link: SemanticEmbedLink\n };\n }\n\n function SemanticEmbedLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'embed' );\n\n if ( scope.source ) settings.source = scope.source;\n if ( scope.sourceId ) settings.id = scope.sourceId;\n if ( scope.placeholder ) settings.placeholder = scope.placeholder;\n if ( scope.icon ) settings.icon = scope.icon;\n if ( scope.url ) settings.url = scope.url;\n\n SemanticUI.linkEvents( scope, settings, $.fn.embed.settings, {\n onCreate: 'onCreate',\n onDisplay: 'onDisplay',\n onPlaceholderDisplay: 'onPlaceholderDisplay',\n onEmbed: 'onEmbed'\n });\n\n element.embed( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n };\n }\n\n\n})( angular.module('semantic-ui-embed', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticListLink', ['SemanticUI', SemanticListLink])\n .directive('smList', ['SemanticUI', 'SemanticListLink', SemanticList])\n ;\n\n function SemanticList(SemanticUI, SemanticListLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope:\n {\n /* Required */\n items: '=',\n /* Optional */\n description: '&',\n icon: '&',\n image: '&',\n header: '&',\n headerHref: '&',\n children: '&',\n onHeader: '&',\n /* Private */\n has: '=?'\n },\n\n template: [\n '
',\n '
',\n ' ',\n ' ',\n '
',\n '
',\n ' ',\n '
',\n ' ',\n '
',\n '
',\n '
',\n '
'\n ].join('\\n'),\n\n compile: SemanticUI.RecursiveCompiler(SemanticListLink)\n }\n }\n\n function SemanticListLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n if ( !scope.has )\n {\n scope.has = {\n icon: !!attributes.icon,\n image: !!attributes.image,\n header: !!attributes.header,\n headerLink: !!attributes.headerHref,\n description: !!attributes.description,\n children: !!attributes.children\n };\n }\n\n scope.getChildCount = function($)\n {\n var children = scope.children($);\n\n return children ? children.length : 0;\n };\n\n SemanticUI.setDefaultFunction( scope, 'description', attributes, function(locals){return locals.item} );\n SemanticUI.setDefaultFunction( scope, 'icon', attributes, function(locals){return locals.item.icon} );\n SemanticUI.setDefaultFunction( scope, 'header', attributes, function(locals){return locals.item.header} );\n SemanticUI.setDefaultFunction( scope, 'children', attributes, function(locals){return locals.item.children} );\n };\n }\n\n})( angular.module('semantic-ui-list', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .controller('SemanticMenuController', ['$scope', SemanticMenuController])\n .directive('smMenu', ['SemanticUI', SemanticMenu])\n ;\n\n function SemanticMenu(SemanticUI)\n {\n return {\n restrict: 'E',\n replace: true,\n scope: {\n /* Required */\n items: '=',\n label: '&',\n /* Optional */\n onClick: '&',\n children: '&',\n description: '&',\n icon: '&',\n hidden: '&',\n divider: '&'\n },\n template: [\n '
',\n '
',\n '',\n '{{ getDescription( i ) }}',\n '{{ getLabel( i ) }}',\n '',\n '
',\n '
'\n ].join('\\n'),\n\n controller: 'SemanticMenuController',\n\n compile: SemanticUI.RecursiveCompiler()\n };\n }\n\n function SemanticMenuController($scope)\n {\n $scope.hasChildren = function(item) {\n var children = $scope.children({item: item});\n return children && children.length;\n };\n $scope.getChildren = function(item) {\n return $scope.children({item: item});\n };\n\n $scope.getLabel = function(item) {\n return $scope.label({item: item});\n };\n $scope.getIcon = function(item) {\n return $scope.icon({item: item});\n }\n $scope.getDescription = function(item) {\n return $scope.description({item: item});\n };\n $scope.isHidden = function(item) {\n return $scope.hidden({item: item});\n };\n $scope.isDivider = function(item) {\n return $scope.divider({item: item});\n };\n }\n\n\n})( angular.module('semantic-ui-menu', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticModalLink', ['SemanticUI', SemanticModalLink])\n .directive('smModalBind', ['SemanticUI', SemanticModalBind])\n .directive('smModal', ['SemanticModalLink', SemanticModal])\n ;\n\n var BEHAVIORS = {\n smModalShow: 'show',\n smModalHide: 'hide',\n smModalToggle: 'toggle',\n smModalRefresh: 'refresh',\n smModalShowDimmer: 'show dimmer',\n smModalHideDimmer: 'hide dimmer',\n smModalHideOthers: 'hide others',\n smModalHideAll: 'hide all',\n smModalCacheSizes: 'cache sizes',\n smModalSetActive: 'set active'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'modal', method );\n }]);\n });\n\n function SemanticModalBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smModalBind', 'modal' );\n }\n\n function SemanticModal(SemanticModalLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n visible: '=',\n settings: '=',\n onInit: '=',\n /* Events */\n onShow: '=',\n onVisible: '=',\n onHide: '=',\n onHidden: '=',\n onApprove: '=',\n onDeny: '='\n },\n\n template: '
',\n\n link: SemanticModalLink\n }\n }\n\n function SemanticModalLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'modal' );\n\n // If the visible attribute is specified, listen to onHide and update modal when variable changes.\n if ( attributes.visible )\n {\n var visibleWatcher = SemanticUI.watcher( scope, 'visible',\n function(updated) {\n element.modal( updated ? 'show' : 'hide' );\n }\n );\n\n SemanticUI.onEvent( settings, 'onHide',\n function() {\n visibleWatcher.set( false );\n }\n );\n\n SemanticUI.onEvent( settings, 'onShow',\n function() {\n visibleWatcher.set( true );\n }\n );\n }\n\n SemanticUI.linkEvents( scope, settings, $.fn.modal.settings, {\n onShow: 'onShow',\n onVisible: 'onVisible',\n onHide: 'onHide',\n onHidden: 'onHidden',\n onApprove: 'onApprove',\n onDeny: 'onDeny'\n });\n\n // Initialize the element with the given settings.\n element.modal( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-modal', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticPopupLink', ['SemanticUI', SemanticPopupLink])\n .factory('SemanticPopupInlineLink', ['SemanticUI', SemanticPopupInlineLink])\n .factory('SemanticPopupDisplayLink', ['SemanticUI', SemanticPopupDisplayLink])\n .directive('smPopupBind', ['SemanticUI', SemanticModalBind])\n .directive('smPopup', ['SemanticPopupLink', SemanticPopup])\n .directive('smPopupInline', ['SemanticPopupInlineLink', SemanticPopupInline])\n .directive('smPopupDisplay', ['SemanticPopupDisplayLink', SemanticPopupDisplay])\n .directive('smPopupDetached', [SemanticPopupDetached])\n ;\n\n var BEHAVIORS = {\n smPopupShow: 'show',\n smPopupHide: 'hide',\n smPopupHideAll: 'hide all',\n smPopupToggle: 'toggle',\n smPopupReposition: 'reposition',\n smPopupDestroy: 'destroy',\n smPopupRemove: 'remove popup'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'popup', method );\n }]);\n });\n\n function SemanticModalBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smPopupBind', 'popup' );\n }\n\n // An attribute directive which displays a popup for this element.\n function SemanticPopup(SemanticPopupLink)\n {\n return {\n\n restrict: 'A',\n\n scope: {\n /* Required */\n smPopup: '=',\n /* Optional */\n smPopupTitle: '=',\n smPopupHtml: '=',\n smPopupPosition: '@',\n smPopupVariation: '@',\n smPopupSettings: '=',\n smPopupOnInit: '=',\n /* Events */\n smPopupOnCreate: '=',\n smPopupOnRemove: '=',\n smPopupOnShow: '=',\n smPopupOnVisible: '=',\n smPopupOnHide: '=',\n smPopupOnHidden: '='\n },\n\n link: SemanticPopupLink\n };\n }\n\n function SemanticPopupLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.smPopupSettings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'popup', false, 'smPopupSettings' );\n\n SemanticUI.bindAttribute( scope, 'smPopup', element, 'data-content' );\n SemanticUI.bindAttribute( scope, 'smPopupTitle', element, 'data-title' );\n SemanticUI.bindAttribute( scope, 'smPopupHtml', element, 'data-html' );\n SemanticUI.bindAttribute( scope, 'smPopupPosition', element, 'data-position' );\n SemanticUI.bindAttribute( scope, 'smPopupVariation', element, 'data-variation' );\n\n SemanticUI.linkEvents( scope, settings, {\n onCreate: 'smPopupOnCreate',\n onRemove: 'smPopupOnRemove',\n onShow: 'smPopupOnShow',\n onVisible: 'smPopupOnVisible',\n onHide: 'smPopupOnHide',\n onHidden: 'smPopupOnHidden'\n });\n\n element.popup( settings );\n\n if ( angular.isFunction( scope.smPopupOnInit ) )\n {\n scope.smPopupOnInit( element );\n }\n };\n }\n\n // An attribute directive to show the detached popup which follows this element.\n function SemanticPopupInline(SemanticPopupInlineLink)\n {\n return {\n\n restrict: 'A',\n\n scope: {\n /* Optional */\n smPopupInline: '=',\n smPopupInlineOnInit: '=',\n /* Events */\n smPopupInlineOnCreate: '=',\n smPopupInlineOnRemove: '=',\n smPopupInlineOnShow: '=',\n smPopupInlineOnVisible: '=',\n smPopupInlineOnHide: '=',\n smPopupInlineOnHidden: '='\n },\n\n link: SemanticPopupInlineLink\n };\n }\n\n function SemanticPopupInlineLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.smPopupInline || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'popup', false, 'smPopupInline' );\n\n SemanticUI.linkEvents( scope, settings, {\n onCreate: 'smPopupInlineOnCreate',\n onRemove: 'smPopupInlineOnRemove',\n onShow: 'smPopupInlineOnShow',\n onVisible: 'smPopupInlineOnVisible',\n onHide: 'smPopupInlineOnHide',\n onHidden: 'smPopupInlineOnHidden'\n });\n\n settings.inline = true;\n\n element.popup( settings );\n\n if ( angular.isFunction( scope.smPopupInlineOnInit ) ) {\n scope.smPopupInlineOnInit( element );\n }\n };\n }\n\n // An attribute directive to show a detached popup over this element given it's name.\n function SemanticPopupDisplay(SemanticPopupDisplayLink)\n {\n return {\n\n restrict: 'A',\n\n scope: {\n /* Required */\n smPopupDisplay: '@',\n /* Optional */\n smPopupDisplaySettings: '=',\n smPopupDisplayOnInit: '=',\n /* Events */\n smPopupDisplayOnCreate: '=',\n smPopupDisplayOnRemove: '=',\n smPopupDisplayOnShow: '=',\n smPopupDisplayOnVisible: '=',\n smPopupDisplayOnHide: '=',\n smPopupDisplayOnHidden: '='\n },\n\n link: SemanticPopupDisplayLink\n };\n }\n\n function SemanticPopupDisplayLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.smPopupDisplaySettings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'popup', false, 'smPopupDisplaySettings' );\n\n SemanticUI.linkEvents( scope, settings, $.fn.popup.settings, {\n onCreate: 'smPopupDisplayOnCreate',\n onRemove: 'smPopupDisplayOnRemove',\n onShow: 'smPopupDisplayOnShow',\n onVisible: 'smPopupDisplayOnVisible',\n onHide: 'smPopupDisplayOnHide',\n onHidden: 'smPopupDisplayOnHidden'\n });\n\n settings.popup = '[data-popup-named=\"' + attributes.smPopupDisplay + '\"]';\n\n element.popup( settings );\n\n if ( angular.isFunction( scope.smPopupDisplayOnInit ) ) {\n scope.smPopupDisplayOnInit( element );\n }\n };\n }\n\n // An element directive for a popup, can be used after an element or can be named and used with sm-popup-display.\n function SemanticPopupDetached()\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n name: '@'\n },\n\n template: '
'\n };\n }\n\n})( angular.module('semantic-ui-popup', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticProgressLink', ['SemanticUI', SemanticProgressLink])\n .directive('smProgressBind', ['SemanticUI', SemanticModalBind])\n .directive('smProgress', ['SemanticProgressLink', SemanticProgress])\n ;\n\n var BEHAVIORS = {\n 'smProgressIncrement': 'increment'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'progress', method );\n }]);\n });\n\n function SemanticModalBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smProgressBind', 'progress' );\n }\n\n function SemanticProgress(SemanticProgressLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Required */\n model: '=',\n /* Optional */\n total: '=',\n label: '@',\n activeText: '@',\n successText: '@',\n errorText: '@',\n warningText: '@',\n duration: '@',\n onInit: '=',\n /* Events */\n onChange: '=',\n onSuccess: '=',\n onActive: '=',\n onError: '=',\n onWarning: '='\n },\n\n template: [\n '
',\n '
',\n '
',\n '
',\n '
',\n '
'\n ].join('\\n'),\n\n link: SemanticProgressLink\n };\n }\n\n function SemanticProgressLink(SemanticUI)\n {\n var addText = function( scope, attributes, settings, attribute, property )\n {\n if ( angular.isDefined( attributes[ attribute ] ) )\n {\n settings.text = settings.text || {};\n settings.text[ property ] = scope[ attribute ];\n }\n };\n\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'progress' );\n\n SemanticUI.linkEvents( scope, settings, $.fn.progress.settings, {\n onChange: 'onChange',\n onSuccess: 'onSuccess',\n onActive: 'onActive',\n onError: 'onError',\n onWarning: 'onWarning'\n });\n\n if ( !angular.isDefined( settings.showActivity ) )\n {\n settings.showActivity = false;\n }\n\n if ( angular.isDefined( attributes.label ) )\n {\n settings.label = scope.label;\n }\n\n if ( angular.isDefined( attributes.total ) )\n {\n settings.total = scope.total;\n }\n else\n {\n settings.total = 100;\n }\n\n if ( angular.isDefined( attributes.model ) )\n {\n settings.value = scope.model;\n }\n\n addText( scope, attributes, settings, 'activeText', 'active' );\n addText( scope, attributes, settings, 'successText', 'success' );\n addText( scope, attributes, settings, 'errorText', 'error' );\n addText( scope, attributes, settings, 'warningText', 'warning' );\n\n element.progress( settings );\n\n SemanticUI.watcher( scope, 'model', function(value)\n {\n var total = element.progress( 'get total' ) || 100;\n\n element.progress( 'set percent', value * 100 / total );\n element.progress( 'set value', value );\n });\n\n if ( angular.isDefined( attributes.duration ) )\n {\n SemanticUI.watcher( scope, 'duration', function(duration)\n {\n element.progress( 'set duration', duration );\n });\n }\n\n if ( angular.isDefined( attributes.total ) )\n {\n SemanticUI.watcher( scope, 'total', function(total)\n {\n element.progress( 'set total', total );\n });\n }\n\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-progress', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticRatingLink', ['SemanticUI', SemanticRatingLink])\n .directive('smRatingBind', ['SemanticUI', SemanticRatingBind])\n .directive('smRating', ['SemanticRatingLink', SemanticRating])\n ;\n\n var BEHAVIORS = {\n smRatingSet: 'set rating',\n smRatingDisable: 'disable',\n smRatingEnable: 'enable',\n smRatingClear: 'clear rating'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'rating', method );\n }]);\n });\n\n function SemanticRatingBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smRatingBind', 'rating' );\n }\n\n function SemanticRating(SemanticRatingLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope: {\n /* Required */\n model: '=',\n total: '=',\n /* Optional */\n type: '@',\n disabled: '=',\n settings: '=',\n onInit: '=',\n /* Events */\n onRate: '='\n },\n\n template: '
',\n\n link: SemanticRatingLink\n };\n }\n\n function SemanticRatingLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'rating', true );\n\n SemanticUI.triggerChange( scope, 'model', element, true );\n\n if ( attributes.disabled )\n {\n var disabledWatcher = SemanticUI.watcher( scope, 'disabled',\n function(updated) {\n element.rating( updated ? 'disable' : 'enable' );\n }\n );\n }\n\n var valueWatcher = SemanticUI.watcher( scope, 'model',\n function(updated) {\n element.rating( 'set rating', updated );\n }\n );\n\n SemanticUI.onEvent( settings, 'onRate',\n function(value) {\n valueWatcher.set( value );\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.rating.settings, {\n onRate: 'onRate'\n });\n\n element.rating( settings );\n\n if ( scope.disabled )\n {\n element.rating( 'disable' );\n }\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n });\n };\n }\n\n})( angular.module('semantic-ui-rating', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticSearchLink', ['SemanticUI', SemanticSearchLink])\n .directive('smSearchBind', ['SemanticUI', SemanticSearchBind])\n .directive('smSearch', ['SemanticSearchLink', SemanticSearch])\n ;\n\n var BEHAVIORS = {\n smSearchQuery: 'query',\n smSearchCancelQuery: 'cancel query',\n smSearchSearchLocal: 'search local',\n smSearchSearchRemote: 'search remote',\n smSearchSet: 'set value',\n smSearchShowResults: 'show results',\n smSearchHideResults: 'hide results',\n smSearchDestroy: 'destroy'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'search', method );\n }]);\n });\n\n function SemanticSearchBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smSearchBind', 'search' );\n }\n\n function SemanticSearch(SemanticSearchLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope: {\n /* Required */\n model: '=',\n /* Optional */\n text: '=?',\n icon: '@',\n placeholder: '@',\n category: '@',\n local: '=',\n remote: '@',\n settings: '=',\n onInit: '=',\n /* Events */\n onSelect: '=',\n onResultsAdd: '=',\n onSearchQuery: '=',\n onResults: '=',\n onResultsOpen: '=',\n onResultsClose: '='\n },\n\n template: [\n '
',\n '
',\n ' ',\n ' ',\n '
',\n '
',\n '
'\n ].join('\\n'),\n\n link: SemanticSearchLink\n };\n }\n\n function SemanticSearchLink(SemanticUI)\n {\n var defaultTitle = $.fn.search && $.fn.search.settings && $.fn.search.settings.fields ? $.fn.search.settings.fields.title : '';\n\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n var textProperty = settings.fields && settings.fields.title ? settings.fields.title : defaultTitle;\n\n SemanticUI.linkSettings( scope, element, attributes, 'search' );\n\n if ( scope.local ) settings.source = scope.local;\n if ( scope.remote ) settings.apiSettings = { url: scope.remote };\n if ( scope.category ) settings.type = 'category';\n\n var modelWatcher = SemanticUI.watcher( scope, 'model',\n function(value) {\n element.search( 'set value', value && (textProperty in value) ? value[ textProperty ] : value );\n }\n );\n\n SemanticUI.onEvent( settings, 'onSelect',\n function(result, response) {\n modelWatcher.set( result );\n if ( attributes.text ) {\n scope.$evalAsync(function() {\n scope.text = result[ textProperty ];\n });\n }\n }\n );\n\n SemanticUI.linkEvents( scope, settings, $.fn.search.settings, {\n onSelect: 'onSelect',\n onResultsAdd: 'onResultsAdd',\n onSearchQuery: 'onSearchQuery',\n onResults: 'onResults',\n onResultsOpen: 'onResultsOpen',\n onResultsClose: 'onResultsClose'\n });\n\n element.search( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n\n if ( scope.model && attributes.text && textProperty in scope.model ) {\n scope.text = scope.model[ textProperty ];\n }\n };\n }\n\n})( angular.module('semantic-ui-search', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticSidebarLink', ['SemanticUI', SemanticSidebarLink])\n .directive('smSidebarBind', ['SemanticUI', SemanticSidebarBind])\n .directive('smSidebar', ['SemanticSidebarLink', SemanticSidebar])\n ;\n\n var BEHAVIORS = {\n smSidebarShow: 'show',\n smSidebarHide: 'hide',\n smSidebarToggle: 'toggle',\n smSidebarPushPage: 'push page',\n smSidebarPullPage: 'pull page',\n smSidebarAddBodyCss: 'add body css',\n smSidebarRemoveBodyCss: 'remove body css'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'sidebar', method );\n }]);\n });\n\n function SemanticSidebarBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smSidebarBind', 'sidebar' );\n }\n\n function SemanticSidebar(SemanticSidebarLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope: {\n /* Required */\n items: '=',\n label: '&',\n /* Optional */\n onClick: '&',\n visible: '=',\n settings: '=',\n onInit: '=',\n /* Events */\n onVisible: '=',\n onShow: '=',\n onChange: '=',\n onHide: '=',\n onHidden: '='\n },\n\n template: [\n '
',\n ' ',\n '
'\n ].join('\\n'),\n\n link: SemanticSidebarLink\n };\n }\n\n function SemanticSidebarLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.setDefaultFunction( scope, 'label', attributes, function(locals){return locals.item} );\n\n SemanticUI.linkSettings( scope, element, attributes, 'sidebar' );\n\n if ( attributes.visible )\n {\n var visibleWatcher = SemanticUI.watcher( scope, 'visible',\n function(updated) {\n element.sidebar( updated ? 'show' : 'hide' );\n }\n );\n\n SemanticUI.onEvent( settings, 'onHide',\n function() {\n visibleWatcher.set( false );\n }\n );\n\n SemanticUI.onEvent( settings, 'onShow',\n function() {\n visibleWatcher.set( true );\n }\n );\n }\n\n SemanticUI.linkEvents( scope, settings, $.fn.sidebar.settings, {\n onVisible: 'onVisible',\n onShow: 'onShow',\n onChange: 'onChange',\n onHide: 'onHide',\n onHidden: 'onHidden'\n });\n\n var pusher = $('.pusher');\n\n if ( pusher.length )\n {\n element.insertBefore( pusher );\n }\n\n // Initialize the element with the given settings.\n element.sidebar( settings );\n\n if ( scope.visible )\n {\n element.sidebar( 'show' );\n }\n\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-sidebar', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticShapeLink', ['SemanticUI', SemanticShapeLink])\n .directive('smShapeBind', ['SemanticUI', SemanticShapeBind])\n .directive('smShape', ['SemanticShapeLink', SemanticShape])\n ;\n\n var BEHAVIORS = {\n smShapeFlipUp: 'flip up',\n smShapeFlipDown: 'flip down',\n smShapeFlipLeft: 'flip left',\n smShapeFlipRight: 'flip right',\n smShapeFlipOver: 'flip over',\n smShapeFlipBack: 'flip back',\n smShapeSetNextSide: 'set next side',\n smShapeReset: 'reset',\n smShapeQueue: 'queue',\n smShapeRepaint: 'repaint',\n smShapeSetDefaultSide: 'set default side',\n smShapeSetStageSize: 'set stage size',\n smShapeRefresh: 'refresh'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'shape', method );\n }]);\n });\n\n function SemanticShapeBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smShapeBind', 'shape' );\n }\n\n function SemanticShape(SemanticShapeLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n\n settings: '=',\n onInit: '=',\n /* Events */\n onBeforeChange: '=',\n onChange: '=',\n },\n\n template: [\n '
',\n '
',\n '
',\n '
'\n ].join('\\n'),\n\n link: SemanticShapeLink\n\n };\n }\n\n function SemanticShapeLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'shape' );\n\n SemanticUI.linkEvents( scope, settings, $.fn.shape.settings, {\n onBeforeChange: 'onBeforeChange',\n onChange: 'onChange'\n });\n\n element.shape( settings );\n\n if ( angular.isFunction( scope.onInit ) ) {\n scope.onInit( element );\n }\n };\n }\n\n})( angular.module('semantic-ui-shape', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticStickyLink', ['SemanticUI', SemanticStickyLink])\n .directive('smStickyBind', ['SemanticUI', SemanticStickyBind])\n .directive('smSticky', ['SemanticStickyLink', SemanticSticky])\n ;\n\n var BEHAVIORS = {\n smStickyRefresh: 'refresh'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'sticky', method );\n }]);\n });\n\n function SemanticStickyBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smStickyBind', 'sticky' );\n }\n\n function SemanticSticky(SemanticStickyLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n /* Optional */\n context: '@',\n settings: '=',\n onInit: '=',\n /* Events */\n onReposition: '=',\n onScroll: '=',\n onStick: '=',\n onUnstick: '=',\n onTop: '=',\n onBottom: '='\n },\n\n template: '
',\n\n link: SemanticStickyLink\n };\n }\n\n function SemanticStickyLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n element.ready(function()\n {\n var settings = scope.settings || {};\n\n SemanticUI.linkSettings( scope, element, attributes, 'sticky', true );\n\n SemanticUI.linkEvents( scope, settings, $.fn.sticky.settings, {\n onReposition: 'onReposition',\n onScroll: 'onScroll',\n onStick: 'onStick',\n onStick: 'onStick',\n onTop: 'onTop',\n onBottom: 'onBottom'\n });\n\n if ( !settings.context )\n {\n settings.context = scope.context;\n }\n\n element.sticky( settings );\n\n if ( angular.isFunction( scope.onInit ) )\n {\n scope.onInit( element );\n }\n });\n };\n }\n\n})( angular.module('semantic-ui-sticky', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .factory('SemanticTabMenuLink', ['SemanticUI', '$timeout', SemanticTabMenuLink])\n .directive('smTabBind', ['SemanticUI', SemanticTabBind])\n .directive('smTabMenu', ['SemanticTabMenuLink', SemanticTabMenu])\n .directive('smTab', ['SemanticUI', SemanticTab])\n ;\n\n var BEHAVIORS = {\n smTabSet: 'change tab'\n };\n\n angular.forEach( BEHAVIORS, function(method, directive)\n {\n app.directive( directive, ['SemanticUI', function(SemanticUI)\n {\n return SemanticUI.createBehavior( directive, 'tab', method );\n }]);\n });\n\n function SemanticTabBind(SemanticUI)\n {\n return SemanticUI.createBind( 'smTabBind', 'tab' );\n }\n\n function SemanticTabMenu(SemanticTabMenuLink)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n scope: {\n /* Required */\n tabs: '=',\n /* Optional */\n active: '=?',\n settings: '='\n },\n\n template: [\n '
',\n ' ',\n '
'\n ].join('\\n'),\n\n link: SemanticTabMenuLink\n }\n }\n\n function SemanticTabMenuLink(SemanticUI, $timeout)\n {\n return function(scope, element, attributes)\n {\n var setActiveTab = function( tab )\n {\n if ( tab )\n {\n element.tab( 'change tab', tab );\n }\n };\n\n $timeout(function()\n {\n var settings = scope.settings || {};\n var elements = element.children('.item');\n var hasActive = !!attributes.active;\n\n SemanticUI.linkSettings( scope, elements, attributes, 'tab', true );\n\n if ( hasActive )\n {\n var activeWatcher = SemanticUI.watcher( scope, 'active',\n function( tab ) {\n setActiveTab( tab );\n }\n );\n\n SemanticUI.onEvent( settings, 'onVisible',\n function(tab) {\n activeWatcher.set( tab );\n }\n );\n }\n\n elements.tab( settings );\n\n if ( hasActive )\n {\n setActiveTab( scope.active );\n }\n });\n };\n }\n\n function SemanticTab(SemanticUI)\n {\n return {\n\n restrict: 'E',\n\n replace: true,\n\n transclude: true,\n\n scope: {\n name: '@'\n },\n\n template: '
'\n };\n }\n\n})( angular.module('semantic-ui-tab', ['semantic-ui-core']) );\n","(function(app)\n{\n\n app\n .directive('smTimeAgo', SemanticTimeAgo)\n ;\n\n function SemanticTimeAgo()\n {\n var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var THS = ['th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th'];\n var HOURS = ['12', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'];\n\n function getTime(date)\n {\n var hours = date.getHours();\n var minutes = date.getMinutes();\n var minutesPadded = minutes < 10 ? '0' + minutes : minutes;\n\n return HOURS[ hours % HOURS.length ] + ':' + minutesPadded + ( hours < 12 ? 'AM' : 'PM' );\n }\n\n function getTh(x)\n {\n return (x >= 11 && x <= 13) ? (x + 'th') : x + THS[ x % THS.length ];\n }\n\n function getDaysAgo(date)\n {\n return Math.ceil( ( new Date().getTime() - date.getTime() ) / 86400000 );\n }\n\n return {\n\n restrict: 'A',\n\n link: function(scope, element, attributes)\n {\n var timeout = false;\n var value = false;\n var fuzzy = false;\n\n var updateText = function()\n {\n var now = new Date();\n var today = new Date( now.getFullYear(), now.getMonth(), now.getDate() );\n var yesterday = new Date( now.getFullYear(), now.getMonth(), now.getDate() - 1 );\n\n var elapsed = now.getTime() - value.getTime();\n\n var text = '';\n var updateIn = false;\n\n if ( elapsed < 60000 )\n { // 1 minute\n text = 'Just now';\n updateIn = 60000 - elapsed;\n }\n else if ( elapsed < 3600000 )\n { // 1 hour\n var minutesAgo = Math.floor( elapsed / 60000 );\n text = minutesAgo === 1 ? '1 minute ago' : minutesAgo + ' minutes ago';\n updateIn = elapsed % 60000;\n }\n else if ( value.getTime() > today.getTime() )\n { // today\n text = 'Today at ' + getTime( value );\n updateIn = elapsed % 3600000;\n }\n else if ( value.getTime() > yesterday.getTime() )\n { // yesterday\n text = 'Yesterday at ' + getTime( value );\n updateIn = elapsed % 3600000;\n }\n else if ( value.getMonth() === now.getMonth() && value.getFullYear() === now.getFullYear() )\n { // this month\n text += 'The ' + getTh( value.getDate() );\n text +=' at ' + getTime( value );\n text += ' (' + getDaysAgo( value ) + ' days ago)';\n updateIn = 86400000;\n }\n else\n { // before the current month\n text += MONTHS[ value.getMonth() ] + ' ' + getTh( value.getDate() );\n if ( value.getFullYear() !== now.getFullYear() ) {\n text += ' ' + value.getFullYear();\n }\n text += ' at ' + getTime( value );\n var daysAgo = getDaysAgo( value );\n if ( daysAgo <= 60 ) {\n text += ' (' + getDaysAgo( value ) + ' days ago)'\n }\n }\n\n element.text( text );\n\n if ( timeout )\n {\n clearTimeout( timeout );\n timeout = false;\n }\n\n if ( updateIn )\n {\n timeout = setTimeout(function()\n {\n timeout = false;\n updateText();\n\n }, updateIn);\n }\n };\n\n scope.$watch( attributes.smTimeAgo, function(updated)\n {\n value = new Date( updated );\n updateText();\n });\n }\n }\n }\n\n})( angular.module('semantic-ui-timeago', ['semantic-ui-core']) );\n","(function(app)\n{\n\n // Transitions: scale, fade, flip, drop, fly, swing, browse, slide, jiggle, flash, shake, pulse, tada, bounce\n\n app\n .factory('SemanticTransitionLink', ['SemanticUI', SemanticTransitionLink])\n .directive('smTransition', ['SemanticTransitionLink', SemanticTransition])\n ;\n\n function SemanticTransition(SemanticTransitionLink)\n {\n return {\n\n restrict: 'A',\n\n scope: {\n smTransition: '@',\n smTransitionEvents: '@',\n smTransitionOther: '@'\n },\n\n link: SemanticTransitionLink\n };\n }\n\n function SemanticTransitionLink(SemanticUI)\n {\n return function(scope, element, attributes)\n {\n scope.smTransitionEvents = scope.smTransitionEvents || 'click';\n\n element.on( scope.smTransitionEvents, function()\n {\n ( scope.smTransitionOther ? $( scope.smTransitionOther ) : element ).transition( scope.smTransition );\n });\n };\n }\n\n})( angular.module('semantic-ui-transition', ['semantic-ui-core']) );\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/bower.json b/bower.json index da160eb..d1d3431 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "semantic-ui-angular-jquery", - "version": "0.2.0", + "version": "0.2.1", "homepage": "https://github.com/ClickerMonkey/SemanticUI-Angular", "authors": [ "Philip Diffenderfer " diff --git a/package.json b/package.json index 8c54cdc..4cb5388 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "semantic-ui-angular-jquery", - "version": "0.2.0", + "version": "0.2.1", "description": "Angular Directives for Semantic UI", "author": "Philip Diffenderfer", "license": "MIT", diff --git a/src/modal/sm-modal.js b/src/modal/sm-modal.js index 66aa9b3..8fc5190 100644 --- a/src/modal/sm-modal.js +++ b/src/modal/sm-modal.js @@ -85,6 +85,12 @@ visibleWatcher.set( false ); } ); + + SemanticUI.onEvent( settings, 'onShow', + function() { + visibleWatcher.set( true ); + } + ); } SemanticUI.linkEvents( scope, settings, $.fn.modal.settings, {