[
  {
    "path": ".gitignore",
    "content": "# bower #\n#########\nbower_components\n\n# npm #\nnode_modules\n\n# jetbrains #\n#############\n.idea\n*.iml\n\n.DS_STORE\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Kyle Kemp\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "README.md",
    "content": "angular-bootstrap-slider\n========================\n\nThis plugin was mostly put together quickly with the intent of using something that worked. It has zero test coverage. It is, however, registered on bower as `angular-bootstrap-slider`. Just include `slider.js` and use the package `ui.bootstrap-slider`. You will also need to include bootstrap-sliders CSS and JS.\n\nAvailable Options\n=================\nSee [bootstrap-slider](https://github.com/seiyria/bootstrap-slider) for examples and options.\n\nSample Usage\n============\n```html\n<!-- it can be used as an element -->\n<slider ng-model=\"sliders.sliderValue\" min=\"testOptions.min\" step=\"testOptions.step\" max=\"testOptions.max\" value=\"testOptions.value\"></slider>\n\n<!-- ..or an attribute -->\n<span slider ng-model=\"sliders.secondSliderValue\" min=\"minTest\"></span>\n```\n\nTroubleshooting\n============\n#### Tooltips\nIf you Want to hide the tooltip on your slider (or define a value for the bootstrap-slider `data-slider-tooltip` options, such as \"show\", \"hide\" or \"always\"), you should use the `tooltip` attribute, like this :\n```html\n<!-- it can be used as an element -->\n<slider ng-model=\"sliders.sliderValue\" min=\"testOptions.min\" step=\"testOptions.step\" max=\"testOptions.max\" value=\"testOptions.value\" tooltip=\"hide\"></slider>\n```\nBut, if the `tooltip` attribute is in conflict with another angular directive, you can use the alternative `slider-tooltip` attribute :\n```html\n<!-- it can be used as an element -->\n<slider ng-model=\"sliders.sliderValue\" min=\"testOptions.min\" step=\"testOptions.step\" max=\"testOptions.max\" value=\"testOptions.value\" slider-tooltip=\"hide\"></slider>\n```\n\n#### Event Calbacks\n```html\n<!-- event callbacks receive the name of the event and the associated value with that event -->\n<slider ng-model=\"sliders.sliderValue\" on-stop-slide=\"myCallback($event,value)\"></slider>\n```\n"
  },
  {
    "path": "bower.json",
    "content": "{\n  \"name\": \"angular-bootstrap-slider\",\n  \"version\": \"0.1.26\",\n  \"authors\": [\n    \"Kyle Kemp <kyle@seiyria.com>\"\n  ],\n  \"description\": \"An angular directive for seiyria-bootstrap-slider\",\n  \"main\": \"slider.js\",\n  \"keywords\": [\n    \"angular\",\n    \"slider\",\n    \"bootstrap-slider\",\n    \"bootstrap\"\n  ],\n  \"license\": \"MIT\",\n  \"homepage\": \"http://seiyria.github.io/bootstrap-slider/\",\n  \"ignore\": [\n    \"**/.*\",\n    \"node_modules\",\n    \"bower_components\",\n    \"test\",\n    \"tests\"\n  ],\n  \"dependencies\": {\n    \"seiyria-bootstrap-slider\": \">= 5.2 < 10.0\",\n    \"angular\": \">= 1.3 <=1.7\"\n  },\n  \"devDependencies\": {\n    \"bootstrap\": \"~3.3.6\"\n\n  }\n}\n"
  },
  {
    "path": "e2e-tests/protractor.conf.js",
    "content": "exports.config = {\n\tallScriptsTimeout: 11000,\n\n\tspecs: [\n\t\t'*.js'\n\t],\n\n\tcapabilities: {\n\t\t'browserName': 'chrome'\n\t},\n\n\tbaseUrl: 'http://localhost:31337',\n\n\tframework: 'jasmine',\n\n\tjasmineNodeOpts: {\n\t\tdefaultTimeoutInterval: 30000\n\t}\n};"
  },
  {
    "path": "e2e-tests/scenarios.js",
    "content": "'use strict';\n\ndescribe('angular-bootstrap-slider', function() {\n\n\tdescribe('tooltip', function() {\n\t\tvar slider, handle, tooltip;\n\n\t\tbeforeEach(function() {\n\t\t\tbrowser.get('/test.html');\n\t\t\tbrowser.waitForAngular();\n\n\t\t\tslider = element(by.css('[slider-id=\"tooltipSlider\"]'));\n\t\t\thandle = slider.element(by.css('.slider-handle.min-slider-handle'))\n\t\t\ttooltip = slider.element(by.css('.tooltip.tooltip-main'));\n\t\t});\n\n\t\tit('should be visible on hover', function() {\n\t\t\tbrowser.actions().mouseMove(handle).perform();\n\t\t\texpect(tooltip.getAttribute('class')).toMatch('in');\n\t\t});\n\n\t\tit('should have filtered text', function() {\n\t\t\tbrowser.actions().mouseMove(handle).perform();\n\t\t\texpect(tooltip.getText()).toBe('Current value: 0%');\n\t\t});\n\n\n\t\tdescribe('should refresh filtered text', function() {\n\t\t\tvar suffix, relayout;\n\n\t\t\tbeforeEach(function() {\n\t\t\t\tsuffix = element(by.model('suffix'));\n\t\t\t\trelayout = element(by.id('relayout-button'));\n\t\t\t\tsuffix.clear();\n\t\t\t});\n\n\t\t\tit('on relayout event', function() {\n\t\t\t\tsuffix.sendKeys('aaa');\n\t\t\t\trelayout.click();\n\t\t\t\tbrowser.actions().mouseMove(handle).perform();\n\t\t\t\texpect(tooltip.getText()).toBe('Current value: 0aaa');\n\t\t\t});\n\n\t\t\tit('on drag start', function() {\n\t\t\t\tsuffix.sendKeys('bbb');\n\t\t\t\thandle.click();\n\t\t\t\tbrowser.actions().mouseMove(handle).perform();\n\t\t\t\texpect(tooltip.getText()).toBe('Current value: 0bbb');\n\t\t\t});\n\t\t});\n\t});\n\n});"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"angular-bootstrap-slider\",\n  \"version\": \"0.1.29\",\n  \"description\": \"An angular directive for seiyria-bootstrap-slider\",\n  \"main\": \"slider.js\",\n  \"devDependencies\": {\n    \"http-server\": \"^0.11.1\",\n    \"jasmine-core\": \"^2.3.4\",\n    \"karma\": \"^3.1.1\",\n    \"karma-chrome-launcher\": \"^0.2.1\",\n    \"karma-jasmine\": \"^0.3.6\",\n    \"protractor\": \"^5.4.1\",\n    \"bootstrap-slider\": \"^10.3.2\",\n    \"angular\": \">= 1.3 <=1.7\",\n    \"bootstrap\": \"~3.3.6\",\n    \"jquery\": \"3.3.1\"\n  },\n  \"dependencies\": {},\n  \"scripts\": {\n    \"start\": \"http-server -a localhost -p 31337 -c-1\",\n    \"test\": \"npm run protractor\",\n    \"preupdate-webdriver\": \"npm install\",\n    \"update-webdriver\": \"webdriver-manager update\",\n    \"preprotractor\": \"npm run update-webdriver\",\n    \"protractor\": \"protractor e2e-tests/protractor.conf.js\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/seiyria/angular-bootstrap-slider.git\"\n  },\n  \"author\": \"Kyle Kemp <kyle@seiyria.com>\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/seiyria/angular-bootstrap-slider/issues\"\n  },\n  \"homepage\": \"https://github.com/seiyria/angular-bootstrap-slider#readme\"\n}\n"
  },
  {
    "path": "slider.js",
    "content": "(function(factory) {\n    if (typeof define === 'function' && define.amd) {\n        define(['bootstrap-slider', 'angular'], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        module.exports = factory(require('bootstrap-slider'), require('angular'));\n    } else if (window) {\n        factory(window.Slider);\n    }\n})(function (Slider) {\n\nangular.module('ui.bootstrap-slider', [])\n    .directive('slider', ['$parse', '$timeout', '$rootScope', function ($parse, $timeout, $rootScope) {\n        return {\n            restrict: 'AE',\n            replace: true,\n            template: '<div><input class=\"slider-input\" type=\"text\" style=\"width:100%\" /></div>',\n            require: 'ngModel',\n            scope: {\n                max: \"=\",\n                min: \"=\",\n                step: \"=\",\n                value: \"=\",\n                ngModel: '=',\n                ngDisabled: '=',\n                range: '=',\n                sliderid: '=',\n                ticks: '=',\n                ticksLabels: '=',\n                ticksSnapBounds: '=',\n                ticksPositions: '=',\n                ticksTooltip: \"=\",\n                scale: '=',\n                focus: '=',\n                rangeHighlights: '=',\n                formatter: '&',\n                onStartSlide: '&',\n                onStopSlide: '&',\n                onSlide: '&'\n            },\n            link: function ($scope, element, attrs, ngModelCtrl, $compile) {\n                var ngModelDeregisterFn, ngDisabledDeregisterFn;\n\n                var slider = initSlider();\n\n                function initSlider() {\n                    var options = {};\n\n                    function setOption(key, value, defaultValue) {\n                        options[key] = value || defaultValue;\n                    }\n\n                    function setFloatOption(key, value, defaultValue) {\n                        options[key] = value || value === 0 ? parseFloat(value) : defaultValue;\n                    }\n\n                    function setBooleanOption(key, value, defaultValue) {\n                        options[key] = value ? value + '' === 'true' : defaultValue;\n                    }\n\n                    function getArrayOrValue(value) {\n                        return (angular.isString(value) && value.indexOf(\"[\") === 0) ? angular.fromJson(value) : value;\n                    }\n\n                    setOption('id', $scope.sliderid);\n                    setOption('orientation', attrs.orientation, 'horizontal');\n                    setOption('selection', attrs.selection, 'before');\n                    setOption('handle', attrs.handle, 'round');\n                    setOption('tooltip', attrs.sliderTooltip || attrs.tooltip, 'show');\n                    setOption('tooltip_position', attrs.sliderTooltipPosition, 'top');\n                    setOption('tooltipseparator', attrs.tooltipseparator, ':');\n                    setOption('ticks', $scope.ticks);\n                    setOption('ticks_labels', $scope.ticksLabels);\n                    setOption('ticks_snap_bounds', $scope.ticksSnapBounds);\n                    setOption('ticks_positions', $scope.ticksPositions);\n                    setOption('ticks_tooltip', $scope.ticksTooltip, false);\n                    setOption('rangeHighlights', $scope.rangeHighlights);\n                    setOption('scale', $scope.scale, 'linear');\n                    setOption('focus', $scope.focus);\n\n                    setFloatOption('min', $scope.min, 0);\n                    setFloatOption('max', $scope.max, 10);\n                    setFloatOption('step', $scope.step, 1);\n                    var strNbr = options.step + '';\n                    var dotPos = strNbr.search(/[^.,]*$/);\n                    var decimals = strNbr.substring(dotPos);\n                    setFloatOption('precision', attrs.precision, decimals.length);\n\n                    setBooleanOption('tooltip_split', attrs.tooltipsplit, false);\n                    setBooleanOption('enabled', attrs.enabled, true);\n                    setBooleanOption('naturalarrowkeys', attrs.naturalarrowkeys, false);\n                    setBooleanOption('reversed', attrs.reversed, false);\n\n                    setBooleanOption('range', $scope.range, false);\n                    if (options.range) {\n                        if (angular.isArray($scope.value)) {\n                            options.value = $scope.value;\n                        }\n                        else if (angular.isString($scope.value)) {\n                            options.value = getArrayOrValue($scope.value);\n                            if (!angular.isArray(options.value)) {\n                                var value = parseFloat($scope.value);\n                                if (isNaN(value)) value = 5;\n\n                                if (value < $scope.min) {\n                                    value = $scope.min;\n                                    options.value = [value, options.max];\n                                }\n                                else if (value > $scope.max) {\n                                    value = $scope.max;\n                                    options.value = [options.min, value];\n                                }\n                                else {\n                                    options.value = [options.min, options.max];\n                                }\n                            }\n                        }\n                        else {\n                            options.value = [options.min, options.max]; // This is needed, because of value defined at $.fn.slider.defaults - default value 5 prevents creating range slider\n                        }\n                        $scope.ngModel = options.value; // needed, otherwise turns value into [null, ##]\n                    }\n                    else {\n                        setFloatOption('value', $scope.value, 5);\n                    }\n\n                    if (attrs.formatter) {\n                        options.formatter = function(value) {\n                            return $scope.formatter({value: value});\n                        }\n                    }\n\n                    // destroy previous slider to reset all options\n                    if (element[0].__slider)\n                        element[0].__slider.destroy();\n\n                    var slider = new Slider(element[0].getElementsByClassName('slider-input')[0], options);\n                    element[0].__slider = slider;\n\n                    // everything that needs slider element\n                    var updateEvent = getArrayOrValue(attrs.updateevent);\n                    if (angular.isString(updateEvent)) {\n                        // if only single event name in string\n                        updateEvent = [updateEvent];\n                    }\n                    else {\n                        // default to slide event\n                        updateEvent = ['slide'];\n                    }\n                    angular.forEach(updateEvent, function (sliderEvent) {\n                        slider.on(sliderEvent, function (ev) {\n                            ngModelCtrl.$setViewValue(ev);\n                        });\n                    });\n                    slider.on('change', function (ev) {\n                        ngModelCtrl.$setViewValue(ev.newValue);\n                    });\n\n\n                    // Event listeners\n                    var sliderEvents = {\n                        slideStart: 'onStartSlide',\n                        slide: 'onSlide',\n                        slideStop: 'onStopSlide'\n                    };\n                    angular.forEach(sliderEvents, function (sliderEventAttr, sliderEvent) {\n                        var fn = $parse(attrs[sliderEventAttr]);\n                        slider.on(sliderEvent, function (ev) {\n                            if ($scope[sliderEventAttr]) {\n                                $scope.$apply(function () {\n                                    fn($scope.$parent, { $event: ev, value: ev });\n                                });\n                            }\n                        });\n                    });\n\n                    // deregister ngDisabled watcher to prevent memory leaks\n                    if (angular.isFunction(ngDisabledDeregisterFn)) {\n                        ngDisabledDeregisterFn();\n                        ngDisabledDeregisterFn = null;\n                    }\n\n                    ngDisabledDeregisterFn = $scope.$watch('ngDisabled', function (value) {\n                        if (value) {\n                            slider.disable();\n                        }\n                        else {\n                            slider.enable();\n                        }\n                    });\n\n                    // deregister ngModel watcher to prevent memory leaks\n                    if (angular.isFunction(ngModelDeregisterFn)) ngModelDeregisterFn();\n                    ngModelDeregisterFn = $scope.$watch('ngModel', function (value) {\n                        if($scope.range){\n                            slider.setValue(value);\n                        }else{\n                            slider.setValue(parseFloat(value));\n                        }\n                        slider.relayout();\n                    }, true);\n\n                    return slider;\n                }\n\n\n                var watchers = ['min', 'max', 'step', 'range', 'scale', 'ticksLabels', 'ticks', 'rangeHighlights'];\n                angular.forEach(watchers, function (prop) {\n                    $scope.$watch(prop, function () {\n                        slider = initSlider();\n                    });\n                });\n\n                var globalEvents = ['relayout', 'refresh', 'resize'];\n                angular.forEach(globalEvents, function(event) {\n                    if(angular.isFunction(slider[event])) {\n                        $scope.$on('slider:' + event, function () {\n                            slider[event]();\n                        });\n                    }\n                });\n            }\n        };\n    }]);\n});"
  },
  {
    "path": "test.html",
    "content": "<html ng-app='angular-bootstrap-slider-test'>\n<head>\n    <title>Angular Bootstrap Slider test</title>\n    <link rel=\"stylesheet\" href=\"node_modules/bootstrap/dist/css/bootstrap.css\">\n    <link rel=\"stylesheet\" href=\"node_modules/bootstrap-slider/dist/css/bootstrap-slider.css\">\n</head>\n<body ng-controller=\"TestCtrl\">\n\n<div class=\"col-md-2 col-md-offset-2\">\n\n    <p>\n\n        <label for=\"sliderId\">Slider Id:</label>\n        <input id=\"sliderId\" type=\"text\" ng-model=\"testOptions.sliderId\">\n\n        <label for=\"modelValue\">Slider Value in ng-model:</label>\n        <input id=\"modelValue\" type=\"range\" ng-model=\"model.first\" min=\"{{testOptions.min}}\" step=\"{{testOptions.step}}\"\n               max=\"{{testOptions.max}}\">\n        <input ng-model=\"model.first\" class=\"form-control\">\n\n        <label for=\"value\">Value:</label>\n        <input id=\"value\" type=\"number\" ng-model=\"value.first\" class=\"form-control\">\n\n        <label for=\"min\">Min:</label>\n        <input id=\"min\" type=\"number\" ng-model=\"testOptions.min\" class=\"form-control\">\n\n        <label for=\"max\">Max:</label>\n        <input id=\"max\" type=\"number\" ng-model=\"testOptions.max\" class=\"form-control\">\n\n        <label for=\"step\">Step:</label>\n        <input id=\"step\" type=\"number\" ng-model=\"testOptions.step\" class=\"form-control\">\n\n        <label for=\"range\">Range:</label>\n        <input id=\"range\" type=\"checkbox\" ng-model=\"testOptions.range\" class=\"form-control\">\n\n        <label for=\"precision\">Precision:</label>\n        <input id=\"precision\" type=\"number\" ng-model=\"testOptions.precision\" class=\"form-control\">\n\n        <label for=\"reversed\">Reversed:</label>\n        <input id=\"reversed\" type=\"checkbox\" ng-model=\"testOptions.reversed\" class=\"form-control\">\n\n        <label for=\"orientation\">Orientation:</label>\n        <select id=\"orientation\" ng-model=\"testOptions.orientation\" class=\"form-control\">\n            <option value=\"horizontal\">Horizontal</option>\n            <option value=\"vertical\">Vertical</option>\n        </select>\n\n        <label for=\"handle\">Handle:</label>\n        <select id=\"handle\" ng-model=\"testOptions.handle\" class=\"form-control\">\n            <option value=\"round\">Round</option>\n            <option value=\"square\">Square</option>\n            <option value=\"triangle\">Triangle</option>\n            <option value=\"custom\">Custom</option>\n        </select>\n\n        <label for=\"enabled\">Enabled:</label>\n        <input id=\"enabled\" type=\"checkbox\" ng-model=\"testOptions.enabled\" class=\"form-control\">\n\n        <label for=\"ngDisabled\">ngDisabled:</label>\n        <input id=\"ngDisabled\" type=\"checkbox\" ng-model=\"testOptions.ngDisabled\" class=\"form-control\">\n\n        <label for=\"naturalarrowkeys\">Natural arrow keys:</label>\n        <input id=\"naturalarrowkeys\" type=\"checkbox\" ng-model=\"testOptions.naturalarrowkeys\" class=\"form-control\">\n    </p>\n\n    Slider using tags<br>\n    <slider slider-id=\"testOptions.sliderId\"\n            ng-model=\"model.first\"\n            value=\"value.first\"\n            min=\"testOptions.min\"\n            max=\"testOptions.max\"\n            step=\"testOptions.step\"\n            range=\"testOptions.range\"\n            precision=\"{{ testOptions.precision }}\"\n            reversed=\"{{ testOptions.reversed }}\"\n            orientation=\"{{ testOptions.orientation }}\"\n            handle=\"{{ testOptions.handle }}\"\n            enabled=\"{{ testOptions.enabled }}\"\n            ng-disabled=\"testOptions.ngDisabled\"\n            naturalarrowkeys=\"{{ testOptions.naturalarrowkeys }}\"\n            >\n        If you can see this then slider did not get compiled by Angular.\n        Check that all necessary files are included, did you run \"bower install\"?\n    </slider>\n\n    <br><br>\n\n    <p>\n        <label for=\"tooltipseparator\">Tooltip separator:</label>\n        <input id=\"tooltipseparator\" type=\"text\" ng-model=\"testOptions.tooltipseparator\" class=\"form-control\">\n\n        <label for=\"tooltipsplit\">Tooltip split:</label>\n        <input id=\"tooltipsplit\" type=\"checkbox\" ng-model=\"testOptions.tooltipsplit\" class=\"form-control\">\n    </p>\n\n    Range slider<br>\n\t<span slider\n          slider-id=\"rangeSlider\"\n          ng-model=\"model.second\"\n          value=\"value.second\"\n          min=\"testOptions.min\"\n          max=\"testOptions.max\"\n          range=\"range\"\n          tooltipseparator=\"{{ testOptions.tooltipseparator }}\"\n          tooltipsplit=\"{{ testOptions.tooltipsplit }}\">\n\t</span>\n    Model: {{model.second | json}}<br>\n    Value: {{value.second | json}}<br>\n\n    <br><br>\n\n    <p>\n        <label for=\"tooltip\">Tooltip:</label>\n        <select id=\"tooltip\" ng-model=\"testOptions.tooltip\" class=\"form-control\">\n            <option value=\"show\">Show</option>\n            <option value=\"hide\">Hide</option>\n            <option value=\"always\">Always</option>\n        </select>\n\n        <label for=\"formatter_prefix\">Formatter prefix:</label>\n        <input id=\"formatter_prefix\" type=\"text\" ng-model=\"prefix\" class=\"form-control\">\n\n        <label for=\"formatter_sufffix\">Formatter suffix:</label>\n        <input id=\"formatter_sufffix\" type=\"text\" ng-model=\"suffix\" class=\"form-control\">\n        <button id=\"relayout-button\" ng-click=\"$broadcast('slider:relayout')\">Relayout</button>\n    </p>\n\n    Slider with configurable tooltip<br>\n    <slider slider-id=\"tooltipSlider\"\n            ng-model=\"model.third\"\n            precision=\"{{ testOptions.precision }}\"\n            tooltip=\"{{ testOptions.tooltip }}\"\n            formatter=\"formatterFn(value)\"\n            >\n    </slider>\n    Model: {{model.third}}<br>\n\n    <br><br>\n\n    Slider using event expressions\n    <slider ng-model=\"model.fourth\"\n            on-start-slide=\"status='started'\"\n            on-slide=\"status=$event.type\"\n            on-stop-slide=\"status='stopped'\"\n            >\n    </slider>\n    Model: {{model.fourth}}<br>\n    Status: {{status}}<br>\n\n    <br><br>\n\n    Slider using event callbacks\n\t<span slider\n          ng-model=\"model.fifth\"\n          on-start-slide=\"slideDelegate(value, $event)\"\n          on-slide=\"slideDelegate(value, $event)\"\n          on-stop-slide=\"slideDelegate(value, $event)\"\n            >\n\t</span>\n    Model: {{model.fifth}}<br>\n    Event type: {{delegateEvent.type}}<br>\n\n    <br><br>\n\n    Slider using mixed expressions and callbacks\n\t<span slider\n          ng-model=\"model.sixth\"\n          on-start-slide=\"status2='started'\"\n          on-slide=\"slideDelegate(value)\"\n          on-stop-slide=\"status2=$event.type; slideDelegate(value, $event)\"\n            >\n\t</span>\n    Model: {{model.sixth}}<br>\n    Status: {{status2}}<br>\n    Event type: {{delegateEvent.type}}<br>\n\n    <br><br>\n\n    Updates model on slide event by default\n    <slider ng-model=\"model.seventh\"></slider>\n    Model: {{model.seventh}}<br>\n\n    <br><br>\n\n    Updates model only on slideStop event\n    <slider ng-model=\"model.eighth\" updateevent=\"slideStop\"></slider>\n    Model: {{model.eighth}}<br>\n\n    <br><br>\n\n    Updates model on slideStart and slideStop\n    <span slider ng-model=\"model.ninth\" updateevent='[\"slideStart\",\"slideStop\"]'></span>\n    Model: {{model.ninth}}<br>\n\n    <br><br>\n\n    Updates model on all events\n    <span slider ng-model=\"model.tenth\"\n          updateevent=\"[&quot;slideStop&quot;, &quot;slide&quot;, &quot;slideStart&quot;]\"></span>\n    Model: {{model.tenth}}\n</div>\n\n\n<script src=\"node_modules/jquery/dist/jquery.js\"></script>\n<script src=\"node_modules/angular/angular.js\"></script>\n<script src=\"node_modules/bootstrap/dist/js/bootstrap.js\"></script>\n<script src=\"node_modules/bootstrap-slider/dist/bootstrap-slider.js\"></script>\n\n<!-- angular-slider include -->\n<script src=\"slider.js\"></script>\n\n<!-- test file include -->\n<script src=\"test.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "test.js",
    "content": "angular.module('angular-bootstrap-slider-test', ['ui.bootstrap-slider'])\n    .controller('TestCtrl', ['$scope', '$log', function ($scope, $log) {\n\n        $scope.testOptions = {\n            min: 5,\n            max: 100,\n            step: 5,\n            precision: 2,\n            orientation: 'horizontal',  // vertical\n            handle: 'round', //'square', 'triangle' or 'custom'\n            tooltip: 'show', //'hide','always'\n            tooltipseparator: ':',\n            tooltipsplit: false,\n            enabled: true,\n            naturalarrowkeys: false,\n            range: false,\n            ngDisabled: false,\n            reversed: false\n        };\n\n        $scope.range = true;\n\n        $scope.model = {\n            first: 0,\n            second: [],\n            third: 0,\n            fourth: 0,\n            fifth: 0,\n            sixth: 0,\n            seventh: 0,\n            eighth: 0,\n            ninth: 0,\n            tenth: 0\n        };\n\n        $scope.value = {\n            first: $scope.testOptions.min + $scope.testOptions.step,\n            second: [$scope.testOptions.min + $scope.testOptions.step, $scope.testOptions.max - $scope.testOptions.step],\n            third: 0,\n            fourth: 0,\n            fifth: 0,\n            sixth: 0,\n            seventh: 0,\n            eighth: 0,\n            ninth: 0,\n            tenth: 0\n        };\n\n        $scope.prefix = 'Current value: ';\n        $scope.suffix = '%';\n\n        $scope.formatterFn = function (value) {\n            return $scope.prefix + value + $scope.suffix;\n        };\n\n        $scope.delegateEvent = null;\n        $scope.slideDelegate = function (value, event) {\n            if (angular.isObject(event)) {\n                $log.log('Slide delegate value on ' + event.type + ': ' + value);\n            }\n            else {\n                $log.log('Slide delegate value: ' + event);\n            }\n            $scope.delegateEvent = event;\n        };\n    }]\n);"
  }
]