(function(factory) { if (typeof define === "function" && define.amd) { // AMD. Register as an anonymous module. define(['knockout'], factory); } else { // Browser globals factory(ko); } }(function(ko) { function SubtopicViewModel(topics, prefix, params) { var self = this; self.topics = ko.observableArray(topics); self.selectedTopic = ko.observable(); self.selectedComponent = ko.pureComputed(function() { return prefix + "/" + self.selectedTopic(); }); self.selectTopic = function(topic) { location.hash = prefix + "/" + topic; self.selectedTopic(topic); } var topic = (params && params.topic) ? ko.unwrap(params.topic) : self.topics()[0]; if( self.topics.indexOf(topic) == -1 ) topic = self.topics()[0]; self.selectTopic(topic); } return SubtopicViewModel; }));