{"version":3,"sources":["settings.js","discourse/initializers/theme-field-4-desktop-html-script-1.js"],"names":["window","require","registerSettings","align_right","custom_breakpoint","header_insertion_class","define","_exports","_pluginApi","_applyDecoratedDescriptor","target","property","decorators","descriptor","context","desc","Object","keys","forEach","key","enumerable","configurable","initializer","writable","slice","reverse","reduce","decorator","value","call","undefined","defineProperty","default","settings","getObjectForTheme","_default","name","after","initialize","withPluginApi","api","_dec","_dec2","_obj","on","modifyClass","pluginId","toggleVisibility","topicToggled","headerWidth","$","width","panelWidth","logoWidth","$searchHeader","hide","appendTo","searchWidth","parseInt","css","remove","appController","container","lookup","currentState","get","hideHeaderSearch","this","breakpoint","showHeaderSearch","set","queueRerender","Ember","run","scheduleOnce","$header","toggleClass","length","_topic","initSizeWatcher","bind","appEvents","destroySizeWatcher","off","getOwnPropertyDescriptor","corePanelContents","factoryFor","class","prototype","reopenWidget","buildKey","attrs","formFactor","defaultState","showHeaderResults","buildClasses","state","classes","push","register","html","panelContents","attach","maxWidth","contents","clickOutside","vnode","hooks","mouseDownOutside","sendWidgetAction","scheduleRerender","click","showResults","linkClickedEvent","val","icon","className","action","concat","results","find","w","addClass","removeClass","filter","widget","decorateWidget","helper","header","parentWidget","searchVisible","topic","site","mobileView","contextEnabled","wantsNewWindow","DiscourseURL","e","preventDefault","id","routeTo","href"],"mappings":"AACM,YAAaA,QACfC,QAAQ,sCAAsCC,iBAAiB,EAAG,CAACC,aAAc,EAAMC,kBAAoB,EAAEC,uBAAyB,qBCFtI,WAAYL,QAChBM,OAAO,qEAAsE,CAAC,UAAW,6BAA6B,SAAUC,EAAUC,GACxI;AAMA,SAASC,EAA0BC,EAAQC,EAAUC,EAAYC,EAAYC,GAAW,IAAIC,EAAO,CAAC;AAAkmB,OAA/lBC,OAAOC,KAAKJ,GAAYK,SAAQ,SAAUC,GAAOJ,EAAKI,GAAON,EAAWM,EAAM,IAAIJ,EAAKK,aAAeL,EAAKK,WAAYL,EAAKM,eAAiBN,EAAKM,cAAkB,UAAWN,GAAQA,EAAKO,eAAeP,EAAKQ,UAAW,GAAQR,EAAOH,EAAWY,QAAQC,UAAUC,QAAO,SAAUX,EAAMY,GAAa,OAAOA,EAAUjB,EAAQC,EAAUI,IAASA,CAAM,GAAGA,GAAWD,QAAgC,IAArBC,EAAKO,cAA0BP,EAAKa,MAAQb,EAAKO,YAAcP,EAAKO,YAAYO,KAAKf,QAAW,EAAQC,EAAKO,iBAAcQ,QAAsC,IAArBf,EAAKO,cAA0BN,OAAOe,eAAerB,EAAQC,EAAUI,GAAOA,EAAO,MAAeA,CAAM,CAJntBC,OAAOe,eAAexB,EAAU,aAAc,CAC5CqB,OAAO,IAETrB,EAASyB,aAAU;AAEnB,MAAMC,EAAWhC,QAAQ,sCAAsCiC,kBAAkB;AAEjF,IAAIC,EAAW,CACbC,KAAM,sCACNC,MAAO,iBACPC,cACE,EAAI9B,EAAW+B,eAAe,UAAUC,IACtC,IAAIC,EAAMC,EAAOC;AACjB,MAAMC,EAAK3C,QAAQ,qCAAqC2C;AACxDJ,EAAIK,YAAY,yBAA0BJ,EAAOG,EAAG,oBAAqBF,EAAQE,EAAG,sBAsChFnC,EAtCwGkC,EAAO,CACjHG,SAAU,gCACVC,iBAAkB,SAAUC,GAC1B,MAAMC,EAAcC,EAAE,uBAAuBC,QACvCC,EAAaF,EAAE,oBAAoBC,QACnCE,EAAYH,EAAE,sBAAsBC,QACpCG,EAAgBJ,EAAE,gCAAgCK,OAAOC,SAASvB,EAAS5B,wBAC3EoD,EAAcC,SAASJ,EAAcK,IAAI;AAC/CL,EAAcM;AACd,MAAMC,EAAgBrB,EAAIsB,UAAUC,OAAO,0BACrCC,EAAeH,EAAcI,IAAI,oBACjCC,EAAmBC,KAAKF,IAAI;AAClC,IAAIG,EAAahB,EAAaC,EAAYI,EAAc;AACpDxB,EAAS7B,oBACXgE,EAAanC,EAAS7B;AAExB,MAAMiE,GAAoBH,GAAoBjB,EAAcmB;AAC5DP,EAAcS,IAAI,mBAAoBD,IAClCrB,GAAgBqB,IAAqBL,QAAiClC,IAAjBkC,KACvDG,KAAKI,gBACLC,MAAMC,IAAIC,aAAa,eAAe,KACpC,MAAMC,EAAUzB,EAAE;AAClByB,EAAQC,YAAY,yBAA0B1B,EAAE,yBAAyB2B,QAAUR,IAAqBF,KAAKW,QAC7GH,EAAQC,YAAY,cAAe3C,EAAS9B,YAAY,IAG9D,EACA4E,kBACEP,MAAMC,IAAIC,aAAa,eAAe,KACpCP,KAAKpB,kBAAkB,IAEzBG,EAAElD,QAAQ4C,GAAG,SAAU4B,MAAMC,IAAIO,KAAKb,KAAMA,KAAKpB,mBACjDoB,KAAKc,UAAUrC,GAAG,qBAAqB,IAAMuB,KAAKpB,kBAAiB,KACnEoB,KAAKc,UAAUrC,GAAG,qBAAqB,IAAMuB,KAAKpB,kBAAiB,IACrE,EACAmC,qBACEhC,EAAElD,QAAQmF,IAAI,SAAUX,MAAMC,IAAIO,KAAKb,KAAMA,KAAKpB,kBACpD,GACkC,kBAAmB,CAACN,GAAOzB,OAAOoE,yBAAyBzC,EAAM,mBAAoBA,GAAOlC,EAA0BkC,EAAM,qBAAsB,CAACD,GAAQ1B,OAAOoE,yBAAyBzC,EAAM,sBAAuBA,GAAQA;AACpQ,MACM0C,EADmB7C,EAAIsB,UAAUwB,WAAW,sBACPC,MAAMC,UAAyB;AAC1EhD,EAAIiD,aAAa,cAAe,CAC9BC,SAAU,SAAUC,GAElB,MAAO,UADIA,EAAMC,YAAc,QAEjC,EACAC,aAAc,SAAUF,GACtB,MAAO,CACLC,WAAYD,EAAMC,YAAc,OAChCE,mBAAmB,EAEvB,EACAC,aAAc,WACZ,MAAMH,EAAazB,KAAK6B,MAAMJ,WACxBE,EAAoB3B,KAAK6B,MAAMF;AACrC,IAAIG,EAAU,CAAC,UAAUL;AACN,WAAfA,GAA2BE,GAC7BG,EAAQC,KAAK;AAOf,OALgB/B,KAAKgC,SAASpC,OAAO,kBACjBE,IAAI,kBAEtBgC,EAAQC,KAAK,eAERD,CACT,EACAG,KAAM,WACJ,MAA8B,WAA1BjC,KAAK6B,MAAMJ,WACNzB,KAAKkC,gBAELlC,KAAKmC,OAAO,aAAc,CAC/BC,SAAU,IACVC,SAAU,IAAMrC,KAAKkC,iBAG3B,EACAI,eACE,IAAKtC,KAAKuC,MAAMC,MAAM,6BACpB,OAAOxC,KAAKyC,kBAEhB,EACAA,mBAEE,GAAmB,SADAzC,KAAK6B,MAAMJ,WAE5B,OAAOzB,KAAK0C,iBAAiB;AAE7B1C,KAAK6B,MAAMF,mBAAoB,EAC/B3B,KAAK2C,kBAET,EACAC,MAAO,WAEc,WADA5C,KAAK6B,MAAMJ,YAE5BzB,KAAK6C,aAET,EACAA,YAAa,WACX7C,KAAK6B,MAAMF,mBAAoB,EAC/B3B,KAAK2C,kBACP,EACAG,iBAAkB,WAEG,WADA9C,KAAK6B,MAAMJ,aAE5B1C,EAAE,gBAAgBgE,IAAI,IACtBhE,EAAE,uBAAuBS,IAAI,aAAc,WAC3CQ,KAAK6B,MAAMF,mBAAoB,EAC/B3B,KAAK2C,mBAET,EACAT,cAAe,WACb,MAAMT,EAAazB,KAAK6B,MAAMJ;AAC9B,IAAIE,EAAoD,MAAhC3B,KAAK6B,MAAMF,oBAA8D,IAAjC3B,KAAK6B,MAAMF,kBACvEU,EAAW;AACI,WAAfZ,GACFY,EAASN,KAAK/B,KAAKmC,OAAO,SAAU,CAClCa,KAAM,SACNC,UAAW,cACXC,OAAQ,iBAGZb,EAAWA,EAASc,UAAUjC,EAAkBxD,KAAKsC;AACrD,IAAIoD,EAAUf,EAASgB,MAAKC,GAAe,uBAAVA,EAAErF;AAMnC,OALImF,GAAWA,EAAQ5B,MAAM4B,QAC3BrE,EAAE,8BAA8BwE,SAAS,eAEzCxE,EAAE,8BAA8ByE,YAAY,eAE3B,SAAf/B,GAAyBE,EACpBU,EAEAA,EAASoB,QAAOC,GACC,uBAAfA,EAAOzF,MAAgD,kBAAfyF,EAAOzF,MAG5D,IAEFI,EAAIsF,eAAe,mBAAmB,SAAUC,GAC9C,MAAMC,EAASD,EAAOF,OAAOI,aAAaA,aAExC5D,EADgB0D,EAAO5B,SAASpC,OAAO,0BACNE,IAAI;AAEvC,IADsB+D,EAAOhC,MAAMkC,eACT7D,IAAqB2D,EAAOrC,MAAMwC,QAAUJ,EAAOF,OAAOO,KAAKC,WAEvF,OADAnF,EAAE,aAAawE,SAAS,yBACjBK,EAAOzB,OAAO,cAAe,CAClCgC,eAAgBN,EAAOhC,MAAMsC,eAC7B1C,WAAY;AAGd1C,EAAE,aAAayE,YAAY,wBAE/B;AACA,MAAMY,EAAiBtI,QAAQ,iCAAiCsI,eAC1DC,EAAevI,QAAQ,qBAAqB+B;AAClDQ,EAAIiD,aAAa,YAAa,CAC5BsB,MAAO,SAAU0B,GACf,OAAIF,EAAeE,KACnBA,EAAEC,iBACkB,cAAhBD,EAAE/H,OAAOiI,IAAsC,mBAAhBF,EAAE/H,OAAOiI,IAC1CH,EAAaI,QAAQzE,KAAK0E,UAHE,CAMhC,GACA,GAEN;AAEFtI,EAASyB,QAAUG,CACrB","sourceRoot":"theme-5/","sourcesContent":["(function() {\n  if ('require' in window) {\n    require(\"discourse/lib/theme-settings-store\").registerSettings(5, {\"align_right\":false,\"custom_breakpoint\":0,\"header_insertion_class\":\".d-header .title\"});\n  }\n})();\n","if ('define' in window) {\ndefine(\"discourse/theme-5/initializers/theme-field-4-desktop-html-script-1\", [\"exports\", \"discourse/lib/plugin-api\"], function (_exports, _pluginApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  const settings = require(\"discourse/lib/theme-settings-store\").getObjectForTheme(5);\n  const themePrefix = key => `theme_translations.5.${key}`;\n  var _default = {\n    name: \"theme-field-4-desktop-html-script-1\",\n    after: \"inject-objects\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"0.8.13\", api => {\n        var _dec, _dec2, _obj;\n        const on = require('discourse-common/utils/decorators').on;\n        api.modifyClass('component:site-header', (_dec = on('didInsertElement'), _dec2 = on('willDestroyElement'), (_obj = {\n          pluginId: \"discourse-header-search-theme\",\n          toggleVisibility: function (topicToggled) {\n            const headerWidth = $('.d-header .contents').width();\n            const panelWidth = $('.d-header .panel').width();\n            const logoWidth = $('.d-header .title a').width();\n            const $searchHeader = $('<div class=\"search-header\"/>').hide().appendTo(settings.header_insertion_class);\n            const searchWidth = parseInt($searchHeader.css(\"width\"));\n            $searchHeader.remove();\n            const appController = api.container.lookup('controller:application');\n            const currentState = appController.get('showHeaderSearch');\n            const hideHeaderSearch = this.get('hideHeaderSearch');\n            let breakpoint = panelWidth + logoWidth + searchWidth + 30;\n            if (settings.custom_breakpoint) {\n              breakpoint = settings.custom_breakpoint;\n            }\n            const showHeaderSearch = !hideHeaderSearch && headerWidth > breakpoint;\n            appController.set('showHeaderSearch', showHeaderSearch);\n            if (topicToggled || showHeaderSearch !== currentState || currentState === undefined) {\n              this.queueRerender();\n              Ember.run.scheduleOnce('afterRender', () => {\n                const $header = $('.d-header');\n                $header.toggleClass('header-search-enabled', !$('.panel > .search-menu').length && showHeaderSearch && !this._topic);\n                $header.toggleClass('align-right', settings.align_right);\n              });\n            }\n          },\n          initSizeWatcher() {\n            Ember.run.scheduleOnce('afterRender', () => {\n              this.toggleVisibility();\n            });\n            $(window).on('resize', Ember.run.bind(this, this.toggleVisibility));\n            this.appEvents.on('header:show-topic', () => this.toggleVisibility(true));\n            this.appEvents.on('header:hide-topic', () => this.toggleVisibility(true));\n          },\n          destroySizeWatcher() {\n            $(window).off('resize', Ember.run.bind(this, this.toggleVisibility));\n          }\n        }, (_applyDecoratedDescriptor(_obj, \"initSizeWatcher\", [_dec], Object.getOwnPropertyDescriptor(_obj, \"initSizeWatcher\"), _obj), _applyDecoratedDescriptor(_obj, \"destroySizeWatcher\", [_dec2], Object.getOwnPropertyDescriptor(_obj, \"destroySizeWatcher\"), _obj)), _obj)));\n        const searchMenuWidget = api.container.factoryFor('widget:search-menu');\n        const corePanelContents = searchMenuWidget.class.prototype['panelContents'];\n        api.reopenWidget('search-menu', {\n          buildKey: function (attrs) {\n            let type = attrs.formFactor || 'menu';\n            return `search-${type}`;\n          },\n          defaultState: function (attrs) {\n            return {\n              formFactor: attrs.formFactor || 'menu',\n              showHeaderResults: false\n            };\n          },\n          buildClasses: function () {\n            const formFactor = this.state.formFactor;\n            const showHeaderResults = this.state.showHeaderResults;\n            let classes = [`search-${formFactor}`];\n            if (formFactor === 'header' && showHeaderResults) {\n              classes.push('show-header-results');\n            }\n            const service = this.register.lookup(\"service:search\");\n            const ctx = service.get(\"searchContext\");\n            if (ctx) {\n              classes.push('has-context');\n            }\n            return classes;\n          },\n          html: function () {\n            if (this.state.formFactor === 'header') {\n              return this.panelContents();\n            } else {\n              return this.attach('menu-panel', {\n                maxWidth: 500,\n                contents: () => this.panelContents()\n              });\n            }\n          },\n          clickOutside() {\n            if (!this.vnode.hooks['widget-mouse-down-outside']) {\n              return this.mouseDownOutside();\n            }\n          },\n          mouseDownOutside() {\n            const formFactor = this.state.formFactor;\n            if (formFactor === 'menu') {\n              return this.sendWidgetAction('toggleSearchMenu');\n            } else {\n              this.state.showHeaderResults = false;\n              this.scheduleRerender();\n            }\n          },\n          click: function () {\n            const formFactor = this.state.formFactor;\n            if (formFactor === 'header') {\n              this.showResults();\n            }\n          },\n          showResults: function () {\n            this.state.showHeaderResults = true;\n            this.scheduleRerender();\n          },\n          linkClickedEvent: function () {\n            const formFactor = this.state.formFactor;\n            if (formFactor === 'header') {\n              $('#search-term').val('');\n              $('.search-placeholder').css('visibility', 'visible');\n              this.state.showHeaderResults = false;\n              this.scheduleRerender();\n            }\n          },\n          panelContents: function () {\n            const formFactor = this.state.formFactor;\n            let showHeaderResults = this.state.showHeaderResults == null || this.state.showHeaderResults === true;\n            let contents = [];\n            if (formFactor === 'header') {\n              contents.push(this.attach('button', {\n                icon: 'search',\n                className: 'search-icon',\n                action: 'showResults'\n              }));\n            }\n            contents = contents.concat(...corePanelContents.call(this));\n            let results = contents.find(w => w.name == 'search-menu-results');\n            if (results && results.attrs.results) {\n              $('.search-menu.search-header').addClass('has-results');\n            } else {\n              $('.search-menu.search-header').removeClass('has-results');\n            }\n            if (formFactor === 'menu' || showHeaderResults) {\n              return contents;\n            } else {\n              return contents.filter(widget => {\n                return widget.name != 'search-menu-results' && widget.name != 'search-context';\n              });\n            }\n          }\n        });\n        api.decorateWidget('home-logo:after', function (helper) {\n          const header = helper.widget.parentWidget.parentWidget,\n            appController = helper.register.lookup('controller:application'),\n            showHeaderSearch = appController.get('showHeaderSearch'),\n            searchMenuVisible = header.state.searchVisible;\n          if (!searchMenuVisible && showHeaderSearch && !header.attrs.topic && !helper.widget.site.mobileView) {\n            $('.d-header').addClass('header-search-enabled');\n            return helper.attach('search-menu', {\n              contextEnabled: header.state.contextEnabled,\n              formFactor: 'header'\n            });\n          } else {\n            $('.d-header').removeClass('header-search-enabled');\n          }\n        });\n        const wantsNewWindow = require('discourse/lib/intercept-click').wantsNewWindow;\n        const DiscourseURL = require('discourse/lib/url').default;\n        api.reopenWidget('home-logo', {\n          click: function (e) {\n            if (wantsNewWindow(e)) return false;\n            e.preventDefault();\n            if (e.target.id === 'site-logo' || e.target.id === 'site-text-logo') {\n              DiscourseURL.routeTo(this.href());\n            }\n            return false;\n          }\n        });\n      });\n    }\n  };\n  _exports.default = _default;\n});\n}\n"]}