diff --git a/js/dist/admin.js b/js/dist/admin.js index 3d3e1f5..f956f0f 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -1,2 +1,2 @@ -(()=>{var t={n:e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return t.d(a,{a}),a},d:(e,a)=>{for(var n in a)t.o(a,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:a[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e);const a=flarum.core.compat["admin/app"];var n=t.n(a);const s=flarum.core.compat["common/extend"],r=flarum.core.compat["admin/components/AdminPage"];var i=t.n(r);function o(t,e){if(null==t)return{};var a,n,s={},r=Object.keys(t);for(n=0;n=0||(s[a]=t[a]);return s}function l(t,e){return l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},l(t,e)}const c=flarum.core.compat["common/utils/classList"];var u=t.n(c);const h=flarum.core.compat["common/Component"];var p=t.n(h);const d=flarum.core.compat["common/components/Select"];var b=t.n(d);const g=flarum.core.compat["common/components/Checkbox"];var f=t.n(g),v=["class","className","onchange","options","value","disabled","selectAttrs","rawTextInputAttrs"],y=["class","className"],x=function(t){var e,a;function n(){return t.apply(this,arguments)||this}a=t,(e=n).prototype=Object.create(a.prototype),e.prototype.constructor=e,l(e,a);var s=n.prototype;return s.onCheckboxChange=function(t,e){this.attrs.value=t?"":void 0,this.attrs.onchange(this.attrs.value),m.redraw()},s.onSelectChange=function(t){this.attrs.value=t,this.attrs.onchange(t)},s.onInputChange=function(t){var e=t.target.value;this.attrs.value=e,this.attrs.onchange(e)},s.view=function(t){var e,a,n,s=this.attrs,r=s.class,i=s.className,l=(s.onchange,s.options),c=s.value,h=s.disabled,p=s.selectAttrs,d=s.rawTextInputAttrs,g=o(s,v),x=Object.keys(l);void 0===c?(n=x[0],this.attrs.value=n,a=!1):(n=c,a=!(x.indexOf(n)>-1));var S=null!=d?d:{},O=S.class,j=S.className,k=o(S,y);return m("div",Object.assign({className:u()("SelectOrInput",i,r)},g),null!=(e=this.attrs.checkboxDescription)?e:"",m("div",{style:"display: inline-block;"},m(f(),{state:a,onchange:this.onCheckboxChange.bind(this)})),m("div",{style:"display: inline-block;"},a?m("input",Object.assign({className:u()("FormControl",j,O),type:"text",onchange:this.onInputChange.bind(this),disabled:h,value:n},k)):m(b(),Object.assign({options:l,onchange:this.onSelectChange.bind(this),disabled:h,value:n},p))))},n}(p());const S=flarum.core.compat["admin/utils/generateElementId"];var O=t.n(S),j=["setting","help","label"],k=["default","options","checkboxDescription"],w=new Set;function C(t){var e,a=t,n=[O()(),O()()],s=n[0],r=n[1],i=a.setting,l=a.help,c=a.label,u=o(a,j),h=u.default,p=u.options,d=u.checkboxDescription,b=o(u,k),g=this.setting(i)(),f=w.has(a.setting);return e=m(x,Object.assign({id:s,"aria-describedby":r,value:f||g?g:h,options:p,onchange:this.settings[i],checkboxDescription:d},b)),f||w.add(a.setting),m("div",{className:"Form-group"},c&&m("label",{for:s},c),m("div",{id:r,className:"helpText"},l),e)}function N(){(0,s.extend)(i().prototype,"customSettingComponents",(function(t){t.add("select-or-input",C.bind(this))}))}n().initializers.add("blomstra-search",(function(){N();var t=new Map;["arabic","armenian","basque","bengali","brazilian","bulgarian","catalan","cjk","czech","danish","dutch","english","estonian","finnish","french","galician","german","greek","hindi","hungarian","indonesian","irish","italian","latvian","lithuanian","norwegian","persian","portuguese","romanian","russian","sorani","spanish","swedish","turkish","thai"].forEach((function(e){t.set(e,e)})),n().extensionData.for("blomstra-search").registerSetting({setting:"blomstra-search.elastic-endpoint",label:n().translator.trans("blomstra-search.admin.elastic-endpoint"),type:"input"}).registerSetting({setting:"blomstra-search.elastic-username",label:n().translator.trans("blomstra-search.admin.elastic-username"),type:"input"}).registerSetting({setting:"blomstra-search.elastic-password",label:n().translator.trans("blomstra-search.admin.elastic-password"),type:"password"}).registerSetting({setting:"blomstra-search.elastic-index",label:n().translator.trans("blomstra-search.admin.elastic-index"),default:"flarum",type:"input"}).registerSetting({setting:"blomstra-search.analyzer-language",label:n().translator.trans("blomstra-search.admin.analyzer.label"),help:n().translator.trans("blomstra-search.admin.analyzer.help"),type:"select-or-input",options:Object.fromEntries(t.entries()),checkboxDescription:n().translator.trans("blomstra-search.admin.analyzer.custom"),default:"english"}).registerSetting({setting:"blomstra-search.elastic-index",label:n().translator.trans("blomstra-search.admin.elastic-index"),default:"flarum",type:"input"}).registerSetting({setting:"blomstra-search.search-discussion-subjects",label:n().translator.trans("blomstra-search.admin.search-discussion-subjects"),type:"switch"}).registerSetting({setting:"blomstra-search.search-post-bodies",label:n().translator.trans("blomstra-search.admin.search-post-bodies"),type:"switch"})}))})(),module.exports=e})(); +(()=>{var t={n:e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return t.d(a,{a}),a},d:(e,a)=>{for(var n in a)t.o(a,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:a[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e);const a=flarum.core.compat["admin/app"];var n=t.n(a);const s=flarum.core.compat["common/extend"],r=flarum.core.compat["admin/components/AdminPage"];var i=t.n(r);function o(t,e){if(null==t)return{};var a,n,s={},r=Object.keys(t);for(n=0;n=0||(s[a]=t[a]);return s}function l(t,e){return l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},l(t,e)}const c=flarum.core.compat["common/utils/classList"];var u=t.n(c);const h=flarum.core.compat["common/Component"];var p=t.n(h);const d=flarum.core.compat["common/components/Select"];var b=t.n(d);const g=flarum.core.compat["common/components/Checkbox"];var f=t.n(g),v=["class","className","onchange","options","value","disabled","selectAttrs","rawTextInputAttrs"],y=["class","className"],x=function(t){var e,a;function n(){return t.apply(this,arguments)||this}a=t,(e=n).prototype=Object.create(a.prototype),e.prototype.constructor=e,l(e,a);var s=n.prototype;return s.onCheckboxChange=function(t,e){this.attrs.value=t?"":void 0,this.attrs.onchange(this.attrs.value),m.redraw()},s.onSelectChange=function(t){this.attrs.value=t,this.attrs.onchange(t)},s.onInputChange=function(t){var e=t.target.value;this.attrs.value=e,this.attrs.onchange(e)},s.view=function(t){var e,a,n,s=this.attrs,r=s.class,i=s.className,l=(s.onchange,s.options),c=s.value,h=s.disabled,p=s.selectAttrs,d=s.rawTextInputAttrs,g=o(s,v),x=Object.keys(l);void 0===c?(n=x[0],this.attrs.value=n,a=!1):(n=c,a=!(x.indexOf(n)>-1));var O=null!=d?d:{},S=O.class,k=O.className,j=o(O,y);return m("div",Object.assign({className:u()("SelectOrInput",i,r)},g),null!=(e=this.attrs.checkboxDescription)?e:"",m("div",{style:"display: inline-block;"},m(f(),{state:a,onchange:this.onCheckboxChange.bind(this)})),m("div",{style:"display: inline-block;"},a?m("input",Object.assign({className:u()("FormControl",k,S),type:"text",onchange:this.onInputChange.bind(this),disabled:h,value:n},j)):m(b(),Object.assign({options:l,onchange:this.onSelectChange.bind(this),disabled:h,value:n},p))))},n}(p());const O=flarum.core.compat["admin/utils/generateElementId"];var S=t.n(O),k=["setting","help","label"],j=["default","options","checkboxDescription"];function w(t){var e,a=t,s=[S()(),S()()],r=s[0],i=s[1],l=a.setting,c=a.help,u=a.label,h=o(a,k),p=h.default,d=h.options,b=h.checkboxDescription,g=o(h,j),f=this.settings[l],v=f();return f.mark||(f.mark=!0,v||(n().data.settings[l]=p,f(p),v=f())),e=m(x,Object.assign({id:r,"aria-describedby":i,value:v,options:d,onchange:f,checkboxDescription:b},g)),m("div",{className:"Form-group"},u&&m("label",{for:r},u),m("div",{id:i,className:"helpText"},c),e)}function C(){(0,s.extend)(i().prototype,"customSettingComponents",(function(t){t.add("select-or-input",w.bind(this))}))}n().initializers.add("blomstra-search",(function(){C();var t=new Map;["arabic","armenian","basque","bengali","brazilian","bulgarian","catalan","cjk","czech","danish","dutch","english","estonian","finnish","french","galician","german","greek","hindi","hungarian","indonesian","irish","italian","latvian","lithuanian","norwegian","persian","portuguese","romanian","russian","sorani","spanish","swedish","turkish","thai"].forEach((function(e){t.set(e,e)})),n().extensionData.for("blomstra-search").registerSetting({setting:"blomstra-search.elastic-endpoint",label:n().translator.trans("blomstra-search.admin.elastic-endpoint"),type:"input"}).registerSetting({setting:"blomstra-search.elastic-username",label:n().translator.trans("blomstra-search.admin.elastic-username"),type:"input"}).registerSetting({setting:"blomstra-search.elastic-password",label:n().translator.trans("blomstra-search.admin.elastic-password"),type:"password"}).registerSetting({setting:"blomstra-search.elastic-index",label:n().translator.trans("blomstra-search.admin.elastic-index"),default:"flarum",type:"input"}).registerSetting({setting:"blomstra-search.analyzer-language",label:n().translator.trans("blomstra-search.admin.analyzer.label"),help:n().translator.trans("blomstra-search.admin.analyzer.help"),type:"select-or-input",options:Object.fromEntries(t.entries()),checkboxDescription:n().translator.trans("blomstra-search.admin.analyzer.custom"),default:"english"}).registerSetting({setting:"blomstra-search.elastic-index",label:n().translator.trans("blomstra-search.admin.elastic-index"),default:"flarum",type:"input"}).registerSetting({setting:"blomstra-search.search-discussion-subjects",label:n().translator.trans("blomstra-search.admin.search-discussion-subjects"),type:"switch"}).registerSetting({setting:"blomstra-search.search-post-bodies",label:n().translator.trans("blomstra-search.admin.search-post-bodies"),type:"switch"})}))})(),module.exports=e})(); //# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index 41944a0..89ba30b 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"file":"admin.js","mappings":"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","sources":["webpack://@blomstra/search/webpack/bootstrap","webpack://@blomstra/search/webpack/runtime/compat get default export","webpack://@blomstra/search/webpack/runtime/define property getters","webpack://@blomstra/search/webpack/runtime/hasOwnProperty shorthand","webpack://@blomstra/search/webpack/runtime/make namespace object","webpack://@blomstra/search/external root \"flarum.core.compat['admin/app']\"","webpack://@blomstra/search/external root \"flarum.core.compat['common/extend']\"","webpack://@blomstra/search/external root \"flarum.core.compat['admin/components/AdminPage']\"","webpack://@blomstra/search/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@blomstra/search/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@blomstra/search/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@blomstra/search/external root \"flarum.core.compat['common/Component']\"","webpack://@blomstra/search/external root \"flarum.core.compat['common/components/Select']\"","webpack://@blomstra/search/external root \"flarum.core.compat['common/components/Checkbox']\"","webpack://@blomstra/search/./src/common/Components/SelectOrInput.tsx","webpack://@blomstra/search/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@blomstra/search/external root \"flarum.core.compat['admin/utils/generateElementId']\"","webpack://@blomstra/search/./src/admin/ConfigToComponents/buildSelectOrInput.tsx","webpack://@blomstra/search/./src/admin/extendCustomSettingComponents.ts","webpack://@blomstra/search/./src/admin/index.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/AdminPage'];","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Checkbox'];","import Mithril from 'mithril';\r\nimport classList from 'flarum/common/utils/classList';\r\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\r\nimport Select from 'flarum/common/components/Select';\r\nimport Checkbox, { ICheckboxAttrs } from 'flarum/common/components/Checkbox';\r\n\r\ntype visibility = 'visible' | 'hidden';\r\n\r\ninterface ISelectAttrs extends ComponentAttrs {\r\n options: { [k: string]: Mithril.Children };\r\n onchange: (value: string) => void;\r\n value?: string;\r\n disabled?: boolean;\r\n wrapperAttrs?: ComponentAttrs;\r\n}\r\n\r\ninterface ISubSelectAttrs extends ComponentAttrs {\r\n wrapperAttrs?: ComponentAttrs;\r\n}\r\n\r\nexport interface ISelectOrInputAttrs<\r\n SelectAttrs extends ISubSelectAttrs = ISubSelectAttrs\r\n> extends ComponentAttrs {\r\n onchange: (value: string) => void;\r\n options: { [k: string]: Mithril.Children };\r\n value?: string;\r\n disabled?: boolean;\r\n checkboxDescription?: string;\r\n selectAttrs?: SelectAttrs;\r\n rawTextInputAttrs?: ComponentAttrs;\r\n}\r\n\r\nexport default class SelectOrInput extends Component { \r\n private onCheckboxChange(checked: boolean, component: Checkbox) {\r\n this.attrs.value = checked ? '' : undefined;\r\n this.attrs.onchange(this.attrs.value!);\r\n m.redraw();\r\n }\r\n private onSelectChange(value: string) {\r\n this.attrs.value = value;\r\n this.attrs.onchange(value);\r\n }\r\n private onInputChange(event: Event) {\r\n const value = (event.target as HTMLInputElement).value;\r\n this.attrs.value = value;\r\n this.attrs.onchange(value);\r\n }\r\n \r\n view(vnode: Mithril.Vnode) {\r\n const {\r\n class: _class,\r\n className,\r\n onchange,\r\n options,\r\n value: _value,\r\n disabled,\r\n selectAttrs,\r\n rawTextInputAttrs,\r\n ...domAttrs\r\n } = this.attrs;\r\n\r\n var useinput: boolean; var value: string;\r\n const selectOptionValues = Object.keys(options);\r\n\r\n if (typeof _value === 'undefined') {\r\n value = selectOptionValues[0];\r\n this.attrs.value = value;\r\n useinput = false;\r\n } else {\r\n value = _value;\r\n useinput = !(selectOptionValues.indexOf(value!) > -1);\r\n }\r\n\r\n const {\r\n class: inputClass,\r\n className: inputClassName,\r\n ...otherInputAttrs\r\n } = rawTextInputAttrs ?? {};\r\n\r\n return (\r\n \r\n {this.attrs.checkboxDescription ?? ''}\r\n
\r\n \r\n
\r\n
\r\n {!useinput\r\n ? \r\n : \r\n }\r\n
\r\n \r\n );\r\n }\r\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/utils/generateElementId'];","import type Mithril from 'mithril';\r\nimport AdminPage, { CommonSettingsItemOptions } from 'flarum/admin/components/AdminPage';\r\nimport SelectOrInput from \"../../common/Components/SelectOrInput\";\r\nimport generateElementId from 'flarum/admin/utils/generateElementId';\r\n\r\n// forgive me, but this interface is just what its name implies\r\ninterface SelectOrInputSettingComponentOptionsWithoutType extends CommonSettingsItemOptions {\r\n options: { [value: string]: Mithril.Children };\r\n checkboxDescription: string;\r\n default: string;\r\n}\r\n\r\nexport interface SelectOrInputSettingComponentOptions extends SelectOrInputSettingComponentOptionsWithoutType {\r\n type: 'select-or-input';\r\n}\r\n\r\nvar firstLoadCompletedSet: Set = new Set();\r\n\r\nexport default function (this: AdminPage, _entry: CommonSettingsItemOptions) {\r\n // do this cast because function signature is restricted\r\n const entry = _entry as SelectOrInputSettingComponentOptionsWithoutType;\r\n const [inputId, helpTextId] = [generateElementId(), generateElementId()];\r\n const { setting, help, label, ...componentAttrs } = entry;\r\n const { default: defaultValue, options, checkboxDescription, ...otherAttrs } = componentAttrs;\r\n const value = this.setting(setting)();\r\n let settingElement: Mithril.Children;\r\n\r\n const firstLoadCompleted = firstLoadCompletedSet.has(entry.setting);\r\n\r\n settingElement = (\r\n \r\n );\r\n\r\n if (!firstLoadCompleted) firstLoadCompletedSet.add(entry.setting);\r\n\r\n return (\r\n
\r\n {label && }\r\n
{help}
\r\n {settingElement}\r\n
\r\n );\r\n}\r\n","import { extend } from 'flarum/common/extend';\r\nimport AdminPage, { CommonSettingsItemOptions } from 'flarum/admin/components/AdminPage';\r\nimport buildSelectOrInput from './ConfigToComponents/buildSelectOrInput';\r\n\r\nexport default function() {\r\n extend(AdminPage.prototype, 'customSettingComponents', function (items) {\r\n items.add('select-or-input', buildSelectOrInput.bind(this));\r\n })\r\n}","import app from 'flarum/admin/app';\r\nimport extendCustomSettingComponents from './extendCustomSettingComponents';\r\n\r\napp.initializers.add('blomstra-search', () => {\r\n extendCustomSettingComponents();\r\n\r\n const languages = new Map();\r\n [\r\n 'arabic',\r\n 'armenian',\r\n 'basque',\r\n 'bengali',\r\n 'brazilian',\r\n 'bulgarian',\r\n 'catalan',\r\n 'cjk',\r\n 'czech',\r\n 'danish',\r\n 'dutch',\r\n 'english',\r\n 'estonian',\r\n 'finnish',\r\n 'french',\r\n 'galician',\r\n 'german',\r\n 'greek',\r\n 'hindi',\r\n 'hungarian',\r\n 'indonesian',\r\n 'irish',\r\n 'italian',\r\n 'latvian',\r\n 'lithuanian',\r\n 'norwegian',\r\n 'persian',\r\n 'portuguese',\r\n 'romanian',\r\n 'russian',\r\n 'sorani',\r\n 'spanish',\r\n 'swedish',\r\n 'turkish',\r\n 'thai',\r\n ].forEach((language) => {\r\n languages.set(language, language);\r\n });\r\n\r\n app.extensionData\r\n .for('blomstra-search')\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-endpoint',\r\n label: app.translator.trans('blomstra-search.admin.elastic-endpoint'),\r\n type: 'input',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-username',\r\n label: app.translator.trans('blomstra-search.admin.elastic-username'),\r\n type: 'input',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-password',\r\n label: app.translator.trans('blomstra-search.admin.elastic-password'),\r\n type: 'password',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-index',\r\n label: app.translator.trans('blomstra-search.admin.elastic-index'),\r\n default: 'flarum',\r\n type: 'input',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.analyzer-language',\r\n label: app.translator.trans('blomstra-search.admin.analyzer.label'),\r\n help: app.translator.trans('blomstra-search.admin.analyzer.help'),\r\n type: 'select-or-input',\r\n options: Object.fromEntries(languages.entries()),\r\n checkboxDescription: app.translator.trans('blomstra-search.admin.analyzer.custom'),\r\n default: 'english',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-index',\r\n label: app.translator.trans('blomstra-search.admin.elastic-index'),\r\n default: 'flarum',\r\n type: 'input',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.search-discussion-subjects',\r\n label: app.translator.trans('blomstra-search.admin.search-discussion-subjects'),\r\n type: 'switch',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.search-post-bodies',\r\n label: app.translator.trans('blomstra-search.admin.search-post-bodies'),\r\n type: 'switch',\r\n });\r\n});\r\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","_objectWithoutPropertiesLoose","source","excluded","i","target","sourceKeys","keys","length","indexOf","_setPrototypeOf","p","setPrototypeOf","__proto__","SelectOrInput","subClass","superClass","create","constructor","onCheckboxChange","checked","component","this","attrs","undefined","onchange","m","redraw","onSelectChange","onInputChange","event","view","vnode","useinput","_class","className","options","_value","disabled","selectAttrs","rawTextInputAttrs","domAttrs","selectOptionValues","inputClass","inputClassName","otherInputAttrs","classList","checkboxDescription","style","state","bind","type","Component","firstLoadCompletedSet","Set","_entry","settingElement","entry","generateElementId","inputId","helpTextId","setting","help","label","componentAttrs","defaultValue","otherAttrs","firstLoadCompleted","has","id","settings","add","for","extend","AdminPage","items","buildSelectOrInput","app","extendCustomSettingComponents","languages","Map","forEach","language","set","registerSetting","default","fromEntries","entries"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"admin.js","mappings":"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","sources":["webpack://@blomstra/search/webpack/bootstrap","webpack://@blomstra/search/webpack/runtime/compat get default export","webpack://@blomstra/search/webpack/runtime/define property getters","webpack://@blomstra/search/webpack/runtime/hasOwnProperty shorthand","webpack://@blomstra/search/webpack/runtime/make namespace object","webpack://@blomstra/search/external root \"flarum.core.compat['admin/app']\"","webpack://@blomstra/search/external root \"flarum.core.compat['common/extend']\"","webpack://@blomstra/search/external root \"flarum.core.compat['admin/components/AdminPage']\"","webpack://@blomstra/search/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@blomstra/search/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@blomstra/search/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@blomstra/search/external root \"flarum.core.compat['common/Component']\"","webpack://@blomstra/search/external root \"flarum.core.compat['common/components/Select']\"","webpack://@blomstra/search/external root \"flarum.core.compat['common/components/Checkbox']\"","webpack://@blomstra/search/./src/common/Components/SelectOrInput.tsx","webpack://@blomstra/search/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@blomstra/search/external root \"flarum.core.compat['admin/utils/generateElementId']\"","webpack://@blomstra/search/./src/admin/ConfigToComponents/buildSelectOrInput.tsx","webpack://@blomstra/search/./src/admin/extendCustomSettingComponents.ts","webpack://@blomstra/search/./src/admin/index.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/AdminPage'];","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Checkbox'];","import Mithril from 'mithril';\r\nimport classList from 'flarum/common/utils/classList';\r\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\r\nimport Select from 'flarum/common/components/Select';\r\nimport Checkbox, { ICheckboxAttrs } from 'flarum/common/components/Checkbox';\r\n\r\ntype visibility = 'visible' | 'hidden';\r\n\r\ninterface ISelectAttrs extends ComponentAttrs {\r\n options: { [k: string]: Mithril.Children };\r\n onchange: (value: string) => void;\r\n value?: string;\r\n disabled?: boolean;\r\n wrapperAttrs?: ComponentAttrs;\r\n}\r\n\r\ninterface ISubSelectAttrs extends ComponentAttrs {\r\n wrapperAttrs?: ComponentAttrs;\r\n}\r\n\r\nexport interface ISelectOrInputAttrs<\r\n SelectAttrs extends ISubSelectAttrs = ISubSelectAttrs\r\n> extends ComponentAttrs {\r\n onchange: (value: string) => void;\r\n options: { [k: string]: Mithril.Children };\r\n value?: string;\r\n disabled?: boolean;\r\n checkboxDescription?: string;\r\n selectAttrs?: SelectAttrs;\r\n rawTextInputAttrs?: ComponentAttrs;\r\n}\r\n\r\n// when value is `undefined`, choose the first item of select\r\n// when value is in select, use value as value of select\r\n// otherwise, use value as value of input\r\nexport default class SelectOrInput extends Component { \r\n private onCheckboxChange(checked: boolean, component: Checkbox) {\r\n this.attrs.value = checked ? '' : undefined;\r\n this.attrs.onchange(this.attrs.value!);\r\n m.redraw();\r\n }\r\n private onSelectChange(value: string) {\r\n this.attrs.value = value;\r\n this.attrs.onchange(value);\r\n }\r\n private onInputChange(event: Event) {\r\n const value = (event.target as HTMLInputElement).value;\r\n this.attrs.value = value;\r\n this.attrs.onchange(value);\r\n }\r\n \r\n view(vnode: Mithril.Vnode) {\r\n const {\r\n class: _class,\r\n className,\r\n onchange,\r\n options,\r\n value: _value,\r\n disabled,\r\n selectAttrs,\r\n rawTextInputAttrs,\r\n ...domAttrs\r\n } = this.attrs;\r\n\r\n var useinput: boolean; var value: string;\r\n const selectOptionValues = Object.keys(options);\r\n\r\n if (typeof _value === 'undefined') {\r\n value = selectOptionValues[0];\r\n this.attrs.value = value;\r\n useinput = false;\r\n } else {\r\n value = _value;\r\n useinput = !(selectOptionValues.indexOf(value!) > -1);\r\n }\r\n\r\n const {\r\n class: inputClass,\r\n className: inputClassName,\r\n ...otherInputAttrs\r\n } = rawTextInputAttrs ?? {};\r\n\r\n return (\r\n \r\n {this.attrs.checkboxDescription ?? ''}\r\n
\r\n \r\n
\r\n
\r\n {!useinput\r\n ? \r\n : \r\n }\r\n
\r\n \r\n );\r\n }\r\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/utils/generateElementId'];","import type Mithril from 'mithril';\r\nimport type Stream from 'mithril/stream';\r\nimport app from 'flarum/admin/app';\r\nimport AdminPage, { CommonSettingsItemOptions } from 'flarum/admin/components/AdminPage';\r\nimport SelectOrInput from \"../../common/Components/SelectOrInput\";\r\nimport generateElementId from 'flarum/admin/utils/generateElementId';\r\n\r\n// forgive me, but this interface is just what its name implies\r\ninterface SelectOrInputSettingComponentOptionsWithoutType extends CommonSettingsItemOptions {\r\n options: { [value: string]: Mithril.Children };\r\n checkboxDescription: string;\r\n default: string;\r\n}\r\n\r\nexport interface SelectOrInputSettingComponentOptions extends SelectOrInputSettingComponentOptionsWithoutType {\r\n type: 'select-or-input';\r\n}\r\n\r\ninterface StreamWithMark extends Stream {\r\n mark?: true;\r\n}\r\n\r\nexport default function (this: AdminPage, _entry: CommonSettingsItemOptions) {\r\n // do this cast because function signature is restricted\r\n const entry = _entry as SelectOrInputSettingComponentOptionsWithoutType;\r\n const [inputId, helpTextId] = [generateElementId(), generateElementId()];\r\n const { setting, help, label, ...componentAttrs } = entry;\r\n const { default: defaultValue, options, checkboxDescription, ...otherAttrs } = componentAttrs;\r\n \r\n let settingElement: Mithril.Children;\r\n // Trick: add a marker property to the AdminPage's setting stream,\r\n // which contructs and destructs with AdminPage so that default is\r\n // only loaded when the page is created.\r\n // Default should only be loaded once in a page because when checkbox\r\n // is checked, SelectOrInput will set its value to empty string so that\r\n // it becomes an empty input. If default is loaded every time when value\r\n // is falsy, SelectOrInput will not work properly.\r\n const settingStream = this.settings[setting] as StreamWithMark;\r\n let value = settingStream();\r\n if (!settingStream.mark) {\r\n settingStream.mark = true;\r\n if (!value) {\r\n app.data.settings[setting] = defaultValue;\r\n settingStream(defaultValue);\r\n value = settingStream();\r\n }\r\n }\r\n\r\n settingElement = (\r\n \r\n );\r\n\r\n return (\r\n
\r\n {label && }\r\n
{help}
\r\n {settingElement}\r\n
\r\n );\r\n}\r\n","import { extend } from 'flarum/common/extend';\r\nimport AdminPage, { CommonSettingsItemOptions } from 'flarum/admin/components/AdminPage';\r\nimport buildSelectOrInput from './ConfigToComponents/buildSelectOrInput';\r\n\r\nexport default function() {\r\n extend(AdminPage.prototype, 'customSettingComponents', function (items) {\r\n items.add('select-or-input', buildSelectOrInput.bind(this));\r\n })\r\n}","import app from 'flarum/admin/app';\r\nimport extendCustomSettingComponents from './extendCustomSettingComponents';\r\n\r\napp.initializers.add('blomstra-search', () => {\r\n extendCustomSettingComponents();\r\n\r\n const languages = new Map();\r\n [\r\n 'arabic',\r\n 'armenian',\r\n 'basque',\r\n 'bengali',\r\n 'brazilian',\r\n 'bulgarian',\r\n 'catalan',\r\n 'cjk',\r\n 'czech',\r\n 'danish',\r\n 'dutch',\r\n 'english',\r\n 'estonian',\r\n 'finnish',\r\n 'french',\r\n 'galician',\r\n 'german',\r\n 'greek',\r\n 'hindi',\r\n 'hungarian',\r\n 'indonesian',\r\n 'irish',\r\n 'italian',\r\n 'latvian',\r\n 'lithuanian',\r\n 'norwegian',\r\n 'persian',\r\n 'portuguese',\r\n 'romanian',\r\n 'russian',\r\n 'sorani',\r\n 'spanish',\r\n 'swedish',\r\n 'turkish',\r\n 'thai',\r\n ].forEach((language) => {\r\n languages.set(language, language);\r\n });\r\n\r\n app.extensionData\r\n .for('blomstra-search')\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-endpoint',\r\n label: app.translator.trans('blomstra-search.admin.elastic-endpoint'),\r\n type: 'input',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-username',\r\n label: app.translator.trans('blomstra-search.admin.elastic-username'),\r\n type: 'input',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-password',\r\n label: app.translator.trans('blomstra-search.admin.elastic-password'),\r\n type: 'password',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-index',\r\n label: app.translator.trans('blomstra-search.admin.elastic-index'),\r\n default: 'flarum',\r\n type: 'input',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.analyzer-language',\r\n label: app.translator.trans('blomstra-search.admin.analyzer.label'),\r\n help: app.translator.trans('blomstra-search.admin.analyzer.help'),\r\n type: 'select-or-input',\r\n options: Object.fromEntries(languages.entries()),\r\n checkboxDescription: app.translator.trans('blomstra-search.admin.analyzer.custom'),\r\n default: 'english',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.elastic-index',\r\n label: app.translator.trans('blomstra-search.admin.elastic-index'),\r\n default: 'flarum',\r\n type: 'input',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.search-discussion-subjects',\r\n label: app.translator.trans('blomstra-search.admin.search-discussion-subjects'),\r\n type: 'switch',\r\n })\r\n .registerSetting({\r\n setting: 'blomstra-search.search-post-bodies',\r\n label: app.translator.trans('blomstra-search.admin.search-post-bodies'),\r\n type: 'switch',\r\n });\r\n});\r\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","_objectWithoutPropertiesLoose","source","excluded","i","target","sourceKeys","keys","length","indexOf","_setPrototypeOf","p","setPrototypeOf","__proto__","SelectOrInput","subClass","superClass","create","constructor","onCheckboxChange","checked","component","this","attrs","undefined","onchange","m","redraw","onSelectChange","onInputChange","event","view","vnode","useinput","_class","className","options","_value","disabled","selectAttrs","rawTextInputAttrs","domAttrs","selectOptionValues","inputClass","inputClassName","otherInputAttrs","classList","checkboxDescription","style","state","bind","type","Component","_entry","settingElement","entry","generateElementId","inputId","helpTextId","setting","help","label","componentAttrs","defaultValue","otherAttrs","settingStream","settings","mark","app","id","for","extend","AdminPage","items","add","buildSelectOrInput","extendCustomSettingComponents","languages","Map","forEach","language","set","registerSetting","default","fromEntries","entries"],"sourceRoot":""} \ No newline at end of file diff --git a/js/src/admin/ConfigToComponents/buildSelectOrInput.tsx b/js/src/admin/ConfigToComponents/buildSelectOrInput.tsx index d38a323..5a776f8 100644 --- a/js/src/admin/ConfigToComponents/buildSelectOrInput.tsx +++ b/js/src/admin/ConfigToComponents/buildSelectOrInput.tsx @@ -1,4 +1,6 @@ import type Mithril from 'mithril'; +import type Stream from 'mithril/stream'; +import app from 'flarum/admin/app'; import AdminPage, { CommonSettingsItemOptions } from 'flarum/admin/components/AdminPage'; import SelectOrInput from "../../common/Components/SelectOrInput"; import generateElementId from 'flarum/admin/utils/generateElementId'; @@ -14,7 +16,9 @@ export interface SelectOrInputSettingComponentOptions extends SelectOrInputSetti type: 'select-or-input'; } -var firstLoadCompletedSet: Set = new Set(); +interface StreamWithMark extends Stream { + mark?: true; +} export default function (this: AdminPage, _entry: CommonSettingsItemOptions) { // do this cast because function signature is restricted @@ -22,25 +26,38 @@ export default function (this: AdminPage, _entry: CommonSettingsItemOptions) { const [inputId, helpTextId] = [generateElementId(), generateElementId()]; const { setting, help, label, ...componentAttrs } = entry; const { default: defaultValue, options, checkboxDescription, ...otherAttrs } = componentAttrs; - const value = this.setting(setting)(); + let settingElement: Mithril.Children; - - const firstLoadCompleted = firstLoadCompletedSet.has(entry.setting); + // Trick: add a marker property to the AdminPage's setting stream, + // which contructs and destructs with AdminPage so that default is + // only loaded when the page is created. + // Default should only be loaded once in a page because when checkbox + // is checked, SelectOrInput will set its value to empty string so that + // it becomes an empty input. If default is loaded every time when value + // is falsy, SelectOrInput will not work properly. + const settingStream = this.settings[setting] as StreamWithMark; + let value = settingStream(); + if (!settingStream.mark) { + settingStream.mark = true; + if (!value) { + app.data.settings[setting] = defaultValue; + settingStream(defaultValue); + value = settingStream(); + } + } settingElement = ( ); - if (!firstLoadCompleted) firstLoadCompletedSet.add(entry.setting); - return (
{label && } diff --git a/js/src/common/Components/SelectOrInput.tsx b/js/src/common/Components/SelectOrInput.tsx index 5bdab61..6b594f0 100644 --- a/js/src/common/Components/SelectOrInput.tsx +++ b/js/src/common/Components/SelectOrInput.tsx @@ -30,6 +30,9 @@ export interface ISelectOrInputAttrs< rawTextInputAttrs?: ComponentAttrs; } +// when value is `undefined`, choose the first item of select +// when value is in select, use value as value of select +// otherwise, use value as value of input export default class SelectOrInput extends Component { private onCheckboxChange(checked: boolean, component: Checkbox) { this.attrs.value = checked ? '' : undefined;