{"version":3,"sources":["ko_ChapterPageViewModel.js"],"names":["window","bm","ChapterPageViewModel","initialPageJson","subTopicAllTabLabel","self","this","Name","SubTopicAllTabLabel","CurrentSelectedTopicId","CurrentChapter","ko","observable","TopicTileSearchTerm","CurrentSubTopicTabName","TopicGridTopics","computed","topics","tileCleanSearchTerm","trim","toLowerCase","replace","length","utils","arrayFilter","item","TopicTileFilterMatch","CurrentSelectedTopics","Selected","Load","initialData","Chapter","searchTerm","topicItem","isMatch","searchTermArr","split","$","grep","n","topicSearchNameArr","topicTileSearchName","arrayForEach","termItem","arrayFirst","searchNameItem","indexOf","bindingHandlers","BindTopicTileContentTrigger","init","element","valueAccessor","allBindings","viewModel","bindingContext","update","$root","click","ev","preventDefault","qs","scrollPosition","Math","ceil","offset","top","outerHeight","History","pushState","options","initialTitle","id","BindSubTopicTabChange","tabId","data","scrollTop","BindTopicTileHover","on","currentHeight","parent","height","addClass","css","removeClass","QuestionAccordionTrigger","SetAccordionExpandCollapse","animate"],"mappings":"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","file":"ko_ChapterPageViewModel.js","sourcesContent":["window.bm.ChapterPageViewModel = function (initialPageJson, subTopicAllTabLabel) {\r\n var self = this;\r\n\r\n self.Name = \"ChapterPageViewModel\";\r\n self.SubTopicAllTabLabel = subTopicAllTabLabel;\r\n self.CurrentSelectedTopicId = '';\r\n //Observables\r\n self.CurrentChapter = ko.observable(null);\r\n self.TopicTileSearchTerm = ko.observable('');\r\n self.CurrentSubTopicTabName = ko.observable(self.SubTopicAllTabLabel)\r\n\r\n //Computed Variables\r\n self.TopicGridTopics = ko.computed(function () {\r\n var topics = [];\r\n var tileCleanSearchTerm = '';\r\n if (!!self.TopicTileSearchTerm()) {\r\n tileCleanSearchTerm = self.TopicTileSearchTerm().trim().toLowerCase().replace(/[^A-zÀ-ÿ0-9 :&_,-]/g, \"\");\r\n }\r\n if (!!self.CurrentChapter()) {\r\n if (tileCleanSearchTerm.length > 2) {\r\n topics = ko.utils.arrayFilter(self.CurrentChapter().topics(), function (item) {\r\n return self.TopicTileFilterMatch(tileCleanSearchTerm, item);\r\n });\r\n } else {\r\n topics = self.CurrentChapter().topics();\r\n }\r\n }\r\n\r\n return topics\r\n });\r\n\r\n self.CurrentSelectedTopics = ko.computed(function () {\r\n if (!!self.CurrentChapter() && self.CurrentChapter().topics()) {\r\n return ko.utils.arrayFilter(self.CurrentChapter().topics(), function (item) {\r\n return item.Selected();\r\n });\r\n }\r\n\r\n return null;\r\n });\r\n\r\n self.Load = function (initialData) {\r\n if (!!initialData) {\r\n self.CurrentChapter(new Chapter(initialData));\r\n }\r\n };\r\n\r\n self.TopicTileFilterMatch = function (searchTerm, topicItem) {\r\n if (!!searchTerm) {\r\n var isMatch = true;\r\n var searchTermArr = searchTerm.split(/,| /);\r\n searchTermArr = $.grep(searchTermArr, function (n) { return (n); });\r\n\r\n var topicSearchNameArr = topicItem.topicTileSearchName.toLowerCase().split(/,|\\|| /);\r\n topicSearchNameArr = $.grep(topicSearchNameArr, function (n) { return (n); });\r\n ko.utils.arrayForEach(searchTermArr, function (termItem) {\r\n var hasItem = ko.utils.arrayFirst(topicSearchNameArr, function (searchNameItem) {\r\n return searchNameItem.indexOf(termItem) === 0;\r\n });\r\n\r\n if (hasItem == null) {\r\n isMatch = false;\r\n }\r\n });\r\n\r\n return isMatch;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n self.Load(initialPageJson)\r\n};\r\n\r\nko.bindingHandlers.BindTopicTileContentTrigger = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n },\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var topicItem = valueAccessor();\r\n if (!!topicItem && !!bindingContext.$root.ChapterPageViewModel.CurrentChapter()) {\r\n $(element).click(function (ev) {\r\n ev.preventDefault();\r\n\r\n var $this = $(this);\r\n if (topicItem.Selected()) {\r\n var scrollPosition = Math.ceil($('.topic-help').offset().top + $('.topic-help').outerHeight());\r\n var qs = \"?scroll=\" + scrollPosition;\r\n History.pushState({ qs: qs }, History.options.initialTitle, qs);\r\n } else {\r\n var scrollPosition = Math.ceil($('.topic-grid').offset().top + $('.topic-grid').outerHeight()) - 30;\r\n bindingContext.$root.ChapterPageViewModel.CurrentSelectedTopicId = topicItem.id;\r\n var qs = \"?topic=\" + topicItem.id + \"&scroll=\" + scrollPosition;\r\n History.pushState({ qs: qs }, History.options.initialTitle, qs);\r\n }\r\n });\r\n }\r\n }\r\n};\r\n\r\nko.bindingHandlers.BindSubTopicTabChange = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n },\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var entity = valueAccessor();\r\n var tabId = $(element).data('tabid');\r\n if (!!tabId && tabId.length > 0) {\r\n $(element).click(function (ev) {\r\n ev.preventDefault();\r\n var qs = \"?topic=\" + bindingContext.$root.ChapterPageViewModel.CurrentSelectedTopicId + \"&subtopic=\" + tabId + \"&scroll=\" + $(window).scrollTop();\r\n History.pushState({ qs: qs }, History.options.initialTitle, qs);\r\n });\r\n }\r\n }\r\n};\r\nko.bindingHandlers.BindTopicTileHover = {\r\n\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n },\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n $(element).on('mouseenter', function () {\r\n var currentHeight = $(this).parent().height();\r\n $(this).addClass('tile-hovered');\r\n $(this).parent().css('height', currentHeight + 'px');\r\n\r\n });\r\n $(element).on('mouseleave', function () {\r\n $(this).parent().css('height', 'auto');\r\n $(this).removeClass('tile-hovered');\r\n });\r\n }\r\n};\r\nko.bindingHandlers.QuestionAccordionTrigger = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n },\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var question = valueAccessor();\r\n\r\n $(element).click(function (ev) {\r\n ev.preventDefault();\r\n var scrollPosition = bindingContext.$root.SetAccordionExpandCollapse($(this).parent());\r\n $(\"html, body\").animate({ scrollTop: scrollPosition }, \"slow\");\r\n });\r\n }\r\n};"]}