{"version":3,"sources":["webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/button_group/button_group.js","webpack:///./pages/explore/projects/index.js","webpack:///./projects/filtered_search_and_sort/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_token.js","webpack:///./access_level/constants.js","webpack:///projects/filtered_search_and_sort/components/filtered_search_and_sort.vue","webpack:///./projects/filtered_search_and_sort/components/filtered_search_and_sort.vue?0775","webpack:///./projects/filtered_search_and_sort/components/filtered_search_and_sort.vue?b793","webpack:///./projects/filtered_search_and_sort/components/filtered_search_and_sort.vue","webpack:///./projects/filtered_search_and_sort/index.js","webpack:////build/source/node_modules/portal-vue/dist/portal-vue.common.js"],"names":["__vue_script__","name","props","vertical","type","Boolean","required","default","__vue_component__","render","_h","this","$createElement","_self","_c","_g","class","attrs","$listeners","_t","staticRenderFns","undefined","initProjectsFilteredSearchAndSort","sortEventName","filterEventName","SORT_OPTION_NAME","value","text","__","SORT_OPTION_CREATED","SORT_OPTION_UPDATED","SORT_OPTION_STARS","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","FILTERED_SEARCH_TERM_KEY","FILTERED_SEARCH_NAMESPACE","SORT_OPTIONS","DEFAULT_OPERATORS","description","__v_skip","components","GlToken","GlFilteredSearchTokenSegment","inheritAttrs","availableTokens","Array","config","Object","active","multiSelectValues","operator","data","showFriendlyText","cursorPosition","String","validator","includes","viewOnly","dataSegmentInputAttributes","activeSegment","tokenValue","intendedCursorPosition","computed","operators","_this$tokenValue$data","length","tokenEmpty","isSegmentActive","filter","token","map","find","op","mousedown","stopMousedownOnCloseButton","close","destroyByClose","segments","SEGMENT_TITLE","SEGMENT_DATA","SEGMENT_OPERATOR","watch","deep","newValue","$emit","oldValue","immediate","tokenIsActive","activateSegment","multiSelect","methods","segment","title","newType","newTokenConfig","_ref","isCompatible","dataType","$nextTick","evt","_ref2","inputValue","suggestedValue","applySuggestion","key","potentialValue","_ref3","startsWith","preventDefault","$options","activateDataSegment","event","target","closest","_vm","staticClass","availableTokensWithSelf","on","$event","replaceToken","activateNextOperatorSegment","scopedSlots","_u","fn","ref","getAdditionalSegmentClasses","_v","_s","handleOperatorKeydown","replaceWithTermIfEmpty","activatePreviousTitleSegment","activateNextDataSegment","operatorDescription","proxy","option","_e","model","callback","$$v","$set","expression","options","handleComplete","activatePreviousOperatorSegment","scope","eventListeners","listeners","cssClasses","assign","ACCESS_LEVEL_NO_ACCESS_INTEGER","ACCESS_LEVEL_REPORTER_INTEGER","ACCESS_LEVEL_DEVELOPER_INTEGER","ACCESS_LEVEL_MAINTAINER_INTEGER","ACCESS_LEVEL_OWNER_INTEGER","ACCESS_LEVEL_ADMIN_INTEGER","ACCESS_LEVEL_PLANNER_STRING","ACCESS_LEVELS_INTEGER_TO_STRING","ACCESS_LEVEL_NO_ACCESS","ACCESS_LEVEL_MINIMAL_ACCESS","ACCESS_LEVEL_GUEST","ACCESS_LEVEL_PLANNER","ACCESS_LEVEL_REPORTER","ACCESS_LEVEL_DEVELOPER","ACCESS_LEVEL_MAINTAINER","ACCESS_LEVEL_OWNER","BASE_ROLES","accessLevel","occupiesSeat","s__","memberRoleId","BASE_ROLES_WITHOUT_MINIMAL_ACCESS","BASE_ROLES_WITHOUT_OWNER","ACCESS_LEVEL_LABELS","trackingMixin","InternalEvents","mixin","filteredSearch","namespace","recentSearchesStorageKey","RECENT_SEARCHES_STORAGE_KEY_PROJECTS","searchTermKey","FilteredSearchAndSort","mixins","inject","filteredSearchTokens","icon","GlFilteredSearchToken","unique","OPERATORS_IS","programmingLanguages","id","toString","queryAsObject","queryToObject","document","location","search","queryAsObjectWithoutPagination","page","sortByQuery","_this$queryAsObject","sort","sortBy","initialSort","_this$queryAsObject2","sortOptions","pathsToExcludeSortOn","window","pathname","activeSortOption","_this","sortItem","isAscending","endsWith","visitUrlWithQueryObject","queryObject","visitUrl","objectToQuery","onSortDirectionChange","trackEvent","label","onSortByChange","onFilter","filtersQuery","archived","personal","el","getElementById","dataset","appData","convertObjectPropsToCamelCase","JSON","parse","Vue","provide","createElement","defineProperty","exports","ex","_typeof","obj","Symbol","iterator","constructor","prototype","_toConsumableArray","arr","isArray","i","arr2","_arrayWithoutHoles","iter","call","from","_iterableToArray","TypeError","_nonIterableSpread","inBrowser","pick","keys","reduce","acc","hasOwnProperty","transports","targets","sources","wormhole","extend","trackInstances","open","transport","to","passengers","_transport$order","order","Infinity","item","newTransport","freeze","indexOf","set","compareFn","currentIndex","$_getTransportIndex","newTransports","slice","push","a","b","v","idx","c","force","arguments","index","splice","registerTarget","vm","console","warn","concat","unregisterTarget","$delete","registerSource","source","unregisterSource","hasTarget","hasSource","hasContentFor","_id","Portal","disabled","Number","slim","slotProps","tag","Math","round","random","created","mounted","sendUpdate","updated","clear","beforeDestroy","closer","normalizeSlots","$scopedSlots","$slots","normalizeOwnChildren","children","slotContent","h","Tag","style","display","PortalTarget","multiple","transition","Function","firstRender","ownTransports","newVal","oldVal","_this2","temp","newPassengers","combinePassengers","noWrapper","_id$1","portalProps","targetProps","MountingPortal","append","bail","mountTo","targetSlim","targetSlotProps","targetTag","querySelector","$props","portalTarget","mountEl","appendChild","_props","parent","$parent","propsData","error","$el","parentNode","removeChild","$destroy","manual","$attrs","content","install","Vue$$1","component","portalName","portalTargetName","MountingPortalName","Wormhole"],"mappings":"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","file":"pages.explore.projects.f1376310.chunk.js","sourcesContent":["import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlButtonGroup',\n props: {\n /**\n * When set, rendered the button group in vertical mode.\n */\n vertical: {\n type: Boolean,\n required: false,\n default: false\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g({class:!_vm.vertical ? 'btn-group' : 'btn-group-vertical',attrs:{\"role\":\"group\"}},_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import { initProjectsFilteredSearchAndSort } from '~/projects/filtered_search_and_sort';\n\ninitProjectsFilteredSearchAndSort({\n sortEventName: 'use_sort_projects_explore',\n filterEventName: 'use_filter_bar_projects_explore',\n});\n","import { __ } from '~/locale';\n\nexport const SORT_OPTION_NAME = {\n value: 'name',\n text: __('Name'),\n};\n\nexport const SORT_OPTION_CREATED = {\n value: 'created',\n text: __('Created'),\n};\n\nexport const SORT_OPTION_UPDATED = {\n value: 'latest_activity',\n text: __('Updated'),\n};\n\nexport const SORT_OPTION_STARS = {\n value: 'stars',\n text: __('Stars'),\n};\n\nexport const SORT_DIRECTION_ASC = 'asc';\nexport const SORT_DIRECTION_DESC = 'desc';\n\nexport const FILTERED_SEARCH_TERM_KEY = 'name';\nexport const FILTERED_SEARCH_NAMESPACE = 'explore';\nexport const SORT_OPTIONS = [\n SORT_OPTION_NAME,\n SORT_OPTION_CREATED,\n SORT_OPTION_UPDATED,\n SORT_OPTION_STARS,\n];\n","import cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport GlToken from '../token/token';\nimport { stopEvent } from '../../../utils/utils';\nimport GlFilteredSearchTokenSegment from './filtered_search_token_segment';\nimport { tokenToOption, createTerm, TOKEN_CLOSE_SELECTOR } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst SEGMENT_TITLE = 'TYPE';\nconst SEGMENT_OPERATOR = 'OPERATOR';\nconst SEGMENT_DATA = 'DATA';\nconst DEFAULT_OPERATORS = [{\n value: '=',\n description: 'is',\n default: true\n}, {\n value: '!=',\n description: 'is not'\n}];\nvar script = {\n name: 'GlFilteredSearchToken',\n // FIXME: temporary workaround to ensure compatibility with @vue/compat\n __v_skip: true,\n components: {\n GlToken,\n GlFilteredSearchTokenSegment\n },\n inheritAttrs: false,\n props: {\n availableTokens: {\n type: Array,\n required: false,\n default: () => []\n },\n /**\n * Token configuration with available operators and options.\n */\n config: {\n type: Object,\n required: false,\n default: () => ({})\n },\n /**\n * Determines if the token is being edited or not.\n */\n active: {\n type: Boolean,\n required: false,\n default: false\n },\n multiSelectValues: {\n type: Array,\n required: false,\n default: () => []\n },\n /**\n * Current token value.\n */\n value: {\n type: Object,\n required: false,\n default: () => ({\n operator: '',\n data: ''\n })\n },\n /**\n * Display operators' descriptions instead of their values (e.g., \"is\" instead of \"=\").\n */\n showFriendlyText: {\n type: Boolean,\n required: false,\n default: false\n },\n cursorPosition: {\n type: String,\n required: false,\n default: 'end',\n validator: value => ['start', 'end'].includes(value)\n },\n viewOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n dataSegmentInputAttributes: {\n type: Object,\n required: false,\n default: () => ({})\n }\n },\n data() {\n return {\n activeSegment: null,\n tokenValue: cloneDeep(this.value),\n intendedCursorPosition: this.cursorPosition\n };\n },\n computed: {\n operators() {\n return this.config.operators || DEFAULT_OPERATORS;\n },\n tokenEmpty() {\n var _this$tokenValue$data;\n return ((_this$tokenValue$data = this.tokenValue.data) === null || _this$tokenValue$data === void 0 ? void 0 : _this$tokenValue$data.length) === 0;\n },\n hasDataOrDataSegmentIsCurrentlyActive() {\n const hasData = !this.tokenEmpty;\n return hasData || this.isSegmentActive(SEGMENT_DATA);\n },\n availableTokensWithSelf() {\n return [this.config, ...this.availableTokens.filter(token => token !== this.config)].map(\n // eslint-disable-next-line unicorn/no-array-callback-reference\n tokenToOption);\n },\n operatorDescription() {\n const operator = this.operators.find(op => op.value === this.tokenValue.operator);\n return this.showFriendlyText ? operator === null || operator === void 0 ? void 0 : operator.description : operator === null || operator === void 0 ? void 0 : operator.value;\n },\n eventListeners() {\n return this.viewOnly ? {} : {\n mousedown: this.stopMousedownOnCloseButton,\n close: this.destroyByClose\n };\n }\n },\n segments: {\n SEGMENT_TITLE,\n SEGMENT_DATA,\n SEGMENT_OPERATOR\n },\n watch: {\n tokenValue: {\n deep: true,\n handler(newValue) {\n /**\n * Emitted when the token changes its value.\n *\n * @event input\n * @type {object} dataObj Object containing the update value.\n */\n this.$emit('input', newValue);\n }\n },\n value: {\n handler(newValue, oldValue) {\n if (isEqual(newValue === null || newValue === void 0 ? void 0 : newValue.data, oldValue === null || oldValue === void 0 ? void 0 : oldValue.data) && (newValue === null || newValue === void 0 ? void 0 : newValue.operator) === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.operator)) {\n return;\n }\n this.tokenValue = cloneDeep(newValue);\n }\n },\n active: {\n immediate: true,\n handler(tokenIsActive) {\n if (tokenIsActive) {\n this.intendedCursorPosition = this.cursorPosition;\n if (!this.activeSegment) {\n this.activateSegment(this.tokenEmpty ? SEGMENT_OPERATOR : SEGMENT_DATA);\n }\n } else {\n this.activeSegment = null;\n\n // restore multi select values if we have them\n // otherwise destroy the token\n if (this.config.multiSelect) {\n this.$emit('input', {\n ...this.tokenValue,\n data: this.multiSelectValues || ''\n });\n }\n if (this.tokenEmpty && this.multiSelectValues.length === 0) {\n /**\n * Emitted when token is about to be destroyed.\n *\n * @event destroy\n */\n this.$emit('destroy');\n }\n }\n }\n }\n },\n created() {\n if (!('operator' in this.tokenValue)) {\n if (this.operators.length === 1) {\n const operator = this.operators[0].value;\n this.$emit('input', {\n ...this.tokenValue,\n operator\n });\n this.activeSegment = SEGMENT_DATA;\n } else {\n this.$emit('input', {\n ...this.tokenValue,\n operator: ''\n });\n }\n }\n },\n methods: {\n activateSegment(segment) {\n if (this.viewOnly) return;\n this.activeSegment = segment;\n if (!this.active) {\n /**\n * Emitted when this term token is clicked.\n *\n * @event activate\n */\n this.$emit('activate');\n }\n },\n getAdditionalSegmentClasses(segment) {\n if (this.viewOnly) {\n return 'gl-cursor-text';\n }\n return {\n 'gl-cursor-pointer': !this.isSegmentActive(segment)\n };\n },\n isSegmentActive(segment) {\n return this.active && this.activeSegment === segment;\n },\n replaceWithTermIfEmpty() {\n if (this.tokenValue.operator === '' && this.tokenEmpty) {\n /**\n * Emitted when this token is converted to another type\n * @property {object} token Replacement token configuration\n */\n this.$emit('replace', createTerm(this.config.title));\n }\n },\n replaceToken(newType) {\n const newTokenConfig = this.availableTokens.find(_ref => {\n let {\n type\n } = _ref;\n return type === newType;\n });\n if (newTokenConfig === this.config) {\n this.$nextTick(() => {\n /**\n * Emitted when this term token will lose its focus.\n *\n * @event deactivate\n */\n this.$emit('deactivate');\n });\n return;\n }\n if (newTokenConfig) {\n const isCompatible = this.config.dataType && this.config.dataType === newTokenConfig.dataType;\n this.$emit('replace', {\n type: newTokenConfig.type,\n value: isCompatible ? this.tokenValue : {\n data: ''\n }\n });\n }\n },\n handleOperatorKeydown(evt, _ref2) {\n let {\n inputValue,\n suggestedValue,\n applySuggestion\n } = _ref2;\n const {\n key\n } = evt;\n if (key === ' ' || key === 'Spacebar') {\n applySuggestion(suggestedValue);\n return;\n }\n const potentialValue = `${inputValue}${key}`;\n if (key.length === 1 && !this.operators.find(_ref3 => {\n let {\n value\n } = _ref3;\n return value.startsWith(potentialValue);\n })) {\n if (this.tokenEmpty) {\n applySuggestion(suggestedValue);\n } else {\n evt.preventDefault();\n }\n }\n },\n activateDataSegment() {\n if (this.config.multiSelect) {\n this.$emit('input', {\n ...this.tokenValue,\n data: ''\n });\n }\n this.activateSegment(this.$options.segments.SEGMENT_DATA);\n },\n activatePreviousOperatorSegment() {\n this.activateSegment(this.$options.segments.SEGMENT_OPERATOR);\n this.intendedCursorPosition = 'end';\n },\n activatePreviousTitleSegment() {\n this.activateSegment(this.$options.segments.SEGMENT_TITLE);\n this.intendedCursorPosition = 'end';\n },\n activateNextDataSegment() {\n this.activateDataSegment();\n this.intendedCursorPosition = 'start';\n },\n activateNextOperatorSegment() {\n this.activateSegment(this.$options.segments.SEGMENT_OPERATOR);\n this.intendedCursorPosition = 'start';\n },\n handleComplete(value) {\n /**\n * Emitted when the token entry has been completed.\n *\n * @event complete\n */\n this.$emit('complete', value);\n },\n stopMousedownOnCloseButton(event) {\n if (event.target.closest(TOKEN_CLOSE_SELECTOR)) {\n stopEvent(event);\n }\n },\n destroyByClose() {\n this.$emit('destroy');\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-filtered-search-token\",class:{\n 'gl-filtered-search-token-active': _vm.active,\n 'gl-filtered-search-token-hover': !_vm.viewOnly,\n 'gl-cursor-default': _vm.viewOnly,\n },attrs:{\"data-testid\":\"filtered-search-token\"}},[_c('gl-filtered-search-token-segment',{key:\"title-segment\",attrs:{\"value\":_vm.config.title,\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_TITLE),\"cursor-position\":_vm.intendedCursorPosition,\"options\":_vm.availableTokensWithSelf,\"view-only\":_vm.viewOnly},on:{\"activate\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_TITLE)},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"complete\":_vm.replaceToken,\"backspace\":function($event){return _vm.$emit('destroy')},\"submit\":function($event){return _vm.$emit('submit')},\"previous\":function($event){return _vm.$emit('previous')},\"next\":_vm.activateNextOperatorSegment},scopedSlots:_vm._u([{key:\"view\",fn:function(ref){\n var inputValue = ref.inputValue;\nreturn [_c('gl-token',{staticClass:\"gl-filtered-search-token-type\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_TITLE),attrs:{\"view-only\":\"\"}},[_vm._v(\"\\n \"+_vm._s(inputValue)+\"\\n \")])]}}])}),_vm._v(\" \"),_c('gl-filtered-search-token-segment',{key:\"operator-segment\",attrs:{\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_OPERATOR),\"cursor-position\":_vm.intendedCursorPosition,\"options\":_vm.operators,\"option-text-field\":\"value\",\"custom-input-keydown-handler\":_vm.handleOperatorKeydown,\"view-only\":_vm.viewOnly},on:{\"activate\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_OPERATOR)},\"backspace\":_vm.replaceWithTermIfEmpty,\"complete\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_DATA)},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"previous\":_vm.activatePreviousTitleSegment,\"next\":_vm.activateNextDataSegment},scopedSlots:_vm._u([{key:\"view\",fn:function(){return [_c('gl-token',{staticClass:\"gl-filtered-search-token-operator\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_OPERATOR),attrs:{\"variant\":\"search-value\",\"view-only\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.operatorDescription)+\"\\n \")])]},proxy:true},{key:\"option\",fn:function(ref){\n var option = ref.option;\nreturn [_c('div',{staticClass:\"gl-flex\"},[_vm._v(\"\\n \"+_vm._s(_vm.showFriendlyText ? option.description : option.value)+\"\\n \"),(option.description)?_c('span',{staticClass:\"gl-filtered-search-token-operator-description\"},[_vm._v(\"\\n \"+_vm._s(_vm.showFriendlyText ? option.value : option.description)+\"\\n \")]):_vm._e()])]}}]),model:{value:(_vm.tokenValue.operator),callback:function ($$v) {_vm.$set(_vm.tokenValue, \"operator\", $$v);},expression:\"tokenValue.operator\"}}),_vm._v(\" \"),(_vm.hasDataOrDataSegmentIsCurrentlyActive)?_c('gl-filtered-search-token-segment',{key:\"data-segment\",attrs:{\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_DATA),\"cursor-position\":_vm.intendedCursorPosition,\"multi-select\":_vm.config.multiSelect,\"options\":_vm.config.options,\"view-only\":_vm.viewOnly,\"search-input-attributes\":_vm.dataSegmentInputAttributes},on:{\"activate\":_vm.activateDataSegment,\"backspace\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_OPERATOR)},\"complete\":_vm.handleComplete,\"select\":function($event){return _vm.$emit('select', $event)},\"submit\":function($event){return _vm.$emit('submit')},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"split\":function($event){return _vm.$emit('split', $event)},\"previous\":_vm.activatePreviousOperatorSegment,\"next\":function($event){return _vm.$emit('next')}},scopedSlots:_vm._u([{key:\"before-input\",fn:function(scope){return [_vm._t(\"before-data-segment-input\",null,null,scope)]}},{key:\"suggestions\",fn:function(){return [_vm._t(\"suggestions\")]},proxy:true},{key:\"view\",fn:function(ref){\n var inputValue = ref.inputValue;\nreturn [_vm._t(\"view-token\",function(){return [_c('gl-token',_vm._g({staticClass:\"gl-filtered-search-token-data\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_DATA),attrs:{\"variant\":\"search-value\",\"view-only\":_vm.viewOnly}},_vm.eventListeners),[_c('span',{staticClass:\"gl-filtered-search-token-data-content\"},[_vm._t(\"view\",function(){return [_vm._v(_vm._s(inputValue))]},null,{ inputValue: inputValue })],2)])]},null,{\n inputValue: inputValue,\n listeners: _vm.eventListeners,\n cssClasses: Object.assign({}, {'gl-filtered-search-token-data': true},\n _vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_DATA)),\n })]}}],null,true),model:{value:(_vm.tokenValue.data),callback:function ($$v) {_vm.$set(_vm.tokenValue, \"data\", $$v);},expression:\"tokenValue.data\"}}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import { __, s__ } from '~/locale';\n\n// Matches `lib/gitlab/access.rb`\nexport const ACCESS_LEVEL_NO_ACCESS_INTEGER = 0;\nexport const ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER = 5;\nexport const ACCESS_LEVEL_GUEST_INTEGER = 10;\nexport const ACCESS_LEVEL_PLANNER_INTEGER = 15;\nexport const ACCESS_LEVEL_REPORTER_INTEGER = 20;\nexport const ACCESS_LEVEL_DEVELOPER_INTEGER = 30;\nexport const ACCESS_LEVEL_MAINTAINER_INTEGER = 40;\nexport const ACCESS_LEVEL_OWNER_INTEGER = 50;\nexport const ACCESS_LEVEL_ADMIN_INTEGER = 60;\n\n// Matches `app/graphql/types/access_level_enum.rb`\nexport const ACCESS_LEVEL_NO_ACCESS_STRING = 'NO_ACCESS';\nexport const ACCESS_LEVEL_MINIMAL_ACCESS_STRING = 'MINIMAL_ACCESS';\nexport const ACCESS_LEVEL_GUEST_STRING = 'GUEST';\nexport const ACCESS_LEVEL_PLANNER_STRING = 'PLANNER';\nexport const ACCESS_LEVEL_REPORTER_STRING = 'REPORTER';\nexport const ACCESS_LEVEL_DEVELOPER_STRING = 'DEVELOPER';\nexport const ACCESS_LEVEL_MAINTAINER_STRING = 'MAINTAINER';\nexport const ACCESS_LEVEL_OWNER_STRING = 'OWNER';\n\nexport const ACCESS_LEVELS_INTEGER_TO_STRING = {\n [ACCESS_LEVEL_NO_ACCESS_INTEGER]: ACCESS_LEVEL_NO_ACCESS_STRING,\n [ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER]: ACCESS_LEVEL_MINIMAL_ACCESS_STRING,\n [ACCESS_LEVEL_GUEST_INTEGER]: ACCESS_LEVEL_GUEST_STRING,\n [ACCESS_LEVEL_PLANNER_INTEGER]: ACCESS_LEVEL_PLANNER_STRING,\n [ACCESS_LEVEL_REPORTER_INTEGER]: ACCESS_LEVEL_REPORTER_STRING,\n [ACCESS_LEVEL_DEVELOPER_INTEGER]: ACCESS_LEVEL_DEVELOPER_STRING,\n [ACCESS_LEVEL_MAINTAINER_INTEGER]: ACCESS_LEVEL_MAINTAINER_STRING,\n [ACCESS_LEVEL_OWNER_INTEGER]: ACCESS_LEVEL_OWNER_STRING,\n};\n\nconst ACCESS_LEVEL_NO_ACCESS = __('No access');\nconst ACCESS_LEVEL_MINIMAL_ACCESS = __('Minimal Access');\nconst ACCESS_LEVEL_GUEST = __('Guest');\nconst ACCESS_LEVEL_PLANNER = __('Planner');\nconst ACCESS_LEVEL_REPORTER = __('Reporter');\nconst ACCESS_LEVEL_DEVELOPER = __('Developer');\nconst ACCESS_LEVEL_MAINTAINER = __('Maintainer');\nconst ACCESS_LEVEL_OWNER = __('Owner');\n\nexport const BASE_ROLES = [\n {\n value: 'MINIMAL_ACCESS',\n text: ACCESS_LEVEL_MINIMAL_ACCESS,\n accessLevel: ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER,\n occupiesSeat: false,\n description: s__(\n 'MemberRole|The Minimal Access role is for users who need the least amount of access into groups and projects. You can assign this role as a default, before giving a user another role with more permissions.',\n ),\n },\n {\n value: 'GUEST',\n text: ACCESS_LEVEL_GUEST,\n accessLevel: ACCESS_LEVEL_GUEST_INTEGER,\n occupiesSeat: false,\n description: s__(\n 'MemberRole|The Guest role is for users who need visibility into a project or group but should not have the ability to make changes, such as external stakeholders.',\n ),\n },\n {\n value: 'PLANNER',\n text: ACCESS_LEVEL_PLANNER,\n accessLevel: ACCESS_LEVEL_PLANNER_INTEGER,\n memberRoleId: null,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Planner role is suitable for team members who need to manage projects and track work items but do not need to contribute code, such as project managers and scrum masters.',\n ),\n },\n {\n value: 'REPORTER',\n text: ACCESS_LEVEL_REPORTER,\n accessLevel: ACCESS_LEVEL_REPORTER_INTEGER,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Reporter role is suitable for team members who need to stay informed about a project or group but do not actively contribute code.',\n ),\n },\n {\n value: 'DEVELOPER',\n text: ACCESS_LEVEL_DEVELOPER,\n accessLevel: ACCESS_LEVEL_DEVELOPER_INTEGER,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Developer role gives users access to contribute code while restricting sensitive administrative actions.',\n ),\n },\n {\n value: 'MAINTAINER',\n text: ACCESS_LEVEL_MAINTAINER,\n accessLevel: ACCESS_LEVEL_MAINTAINER_INTEGER,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Maintainer role is primarily used for managing code reviews, approvals, and administrative settings for projects. This role can also manage project memberships.',\n ),\n },\n {\n value: 'OWNER',\n text: ACCESS_LEVEL_OWNER,\n accessLevel: ACCESS_LEVEL_OWNER_INTEGER,\n occupiesSeat: true,\n description: s__(\n 'MemberRole|The Owner role is normally assigned to the individual or team responsible for managing and maintaining the group or creating the project. This role has the highest level of administrative control, and can manage all aspects of the group or project, including managing other Owners.',\n ),\n },\n];\n\nexport const BASE_ROLES_WITHOUT_MINIMAL_ACCESS = BASE_ROLES.filter(\n ({ accessLevel }) => accessLevel !== ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER,\n);\n\nexport const BASE_ROLES_WITHOUT_OWNER = BASE_ROLES.filter(\n ({ accessLevel }) => accessLevel !== ACCESS_LEVEL_OWNER_INTEGER,\n);\n\nexport const ACCESS_LEVEL_LABELS = {\n [ACCESS_LEVEL_NO_ACCESS_INTEGER]: ACCESS_LEVEL_NO_ACCESS,\n [ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER]: ACCESS_LEVEL_MINIMAL_ACCESS,\n [ACCESS_LEVEL_GUEST_INTEGER]: ACCESS_LEVEL_GUEST,\n [ACCESS_LEVEL_PLANNER_INTEGER]: ACCESS_LEVEL_PLANNER,\n [ACCESS_LEVEL_REPORTER_INTEGER]: ACCESS_LEVEL_REPORTER,\n [ACCESS_LEVEL_DEVELOPER_INTEGER]: ACCESS_LEVEL_DEVELOPER,\n [ACCESS_LEVEL_MAINTAINER_INTEGER]: ACCESS_LEVEL_MAINTAINER,\n [ACCESS_LEVEL_OWNER_INTEGER]: ACCESS_LEVEL_OWNER,\n};\n","\n\n\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filtered_search_and_sort.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filtered_search_and_sort.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./filtered_search_and_sort.vue?vue&type=template&id=7ac9bbc6\"\nimport script from \"./filtered_search_and_sort.vue?vue&type=script&lang=js\"\nexport * from \"./filtered_search_and_sort.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('filtered-search-and-sort',{staticClass:\"gl-w-full\",attrs:{\"filtered-search-namespace\":_vm.$options.filteredSearch.namespace,\"filtered-search-tokens\":_vm.filteredSearchTokens,\"filtered-search-term-key\":_vm.$options.filteredSearch.searchTermKey,\"filtered-search-recent-searches-storage-key\":_vm.$options.filteredSearch.recentSearchesStorageKey,\"sort-options\":_vm.sortOptions,\"filtered-search-query\":_vm.queryAsObject,\"is-ascending\":_vm.isAscending,\"active-sort-option\":_vm.activeSortOption},on:{\"filter\":_vm.onFilter,\"sort-direction-change\":_vm.onSortDirectionChange,\"sort-by-change\":_vm.onSortByChange}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';\nimport FilteredSearchAndSort from './components/filtered_search_and_sort.vue';\n\nexport const initProjectsFilteredSearchAndSort = ({ sortEventName, filterEventName } = {}) => {\n const el = document.getElementById('js-projects-filtered-search-and-sort');\n\n if (!el) return false;\n\n const {\n dataset: { appData },\n } = el;\n\n const { initialSort, programmingLanguages, pathsToExcludeSortOn } = convertObjectPropsToCamelCase(\n JSON.parse(appData),\n );\n\n return new Vue({\n el,\n name: 'ProjectsFilteredSearchAndSortRoot',\n provide: {\n initialSort,\n programmingLanguages,\n pathsToExcludeSortOn,\n sortEventName,\n filterEventName,\n },\n render(createElement) {\n return createElement(FilteredSearchAndSort);\n },\n });\n};\n","\n /*! \n * portal-vue © Thorsten Lünborg, 2019 \n * \n * Version: 2.1.7\n * \n * LICENCE: MIT \n * \n * https://github.com/linusborg/portal-vue\n * \n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(require('vue'));\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n if (Array.isArray(item) || _typeof(item) === 'object') {\n return Object.freeze(item);\n }\n\n return item;\n}\nfunction combinePassengers(transports) {\n var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return transports.reduce(function (passengers, transport) {\n var temp = transport.passengers[0];\n var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n return passengers.concat(newPassengers);\n }, []);\n}\nfunction stableSort(array, compareFn) {\n return array.map(function (v, idx) {\n return [idx, v];\n }).sort(function (a, b) {\n return compareFn(a[1], b[1]) || a[0] - b[0];\n }).map(function (c) {\n return c[1];\n });\n}\nfunction pick(obj, keys) {\n return keys.reduce(function (acc, key) {\n if (obj.hasOwnProperty(key)) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n data: function data() {\n return {\n transports: transports,\n targets: targets,\n sources: sources,\n trackInstances: inBrowser\n };\n },\n methods: {\n open: function open(transport) {\n if (!inBrowser) return;\n var to = transport.to,\n from = transport.from,\n passengers = transport.passengers,\n _transport$order = transport.order,\n order = _transport$order === void 0 ? Infinity : _transport$order;\n if (!to || !from || !passengers) return;\n var newTransport = {\n to: to,\n from: from,\n passengers: freeze(passengers),\n order: order\n };\n var keys = Object.keys(this.transports);\n\n if (keys.indexOf(to) === -1) {\n Vue.set(this.transports, to, []);\n }\n\n var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n var newTransports = this.transports[to].slice(0);\n\n if (currentIndex === -1) {\n newTransports.push(newTransport);\n } else {\n newTransports[currentIndex] = newTransport;\n }\n\n this.transports[to] = stableSort(newTransports, function (a, b) {\n return a.order - b.order;\n });\n },\n close: function close(transport) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var to = transport.to,\n from = transport.from;\n if (!to || !from && force === false) return;\n\n if (!this.transports[to]) {\n return;\n }\n\n if (force) {\n this.transports[to] = [];\n } else {\n var index = this.$_getTransportIndex(transport);\n\n if (index >= 0) {\n // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n var newTransports = this.transports[to].slice(0);\n newTransports.splice(index, 1);\n this.transports[to] = newTransports;\n }\n }\n },\n registerTarget: function registerTarget(target, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.targets[target]) {\n console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n }\n\n this.$set(this.targets, target, Object.freeze([vm]));\n },\n unregisterTarget: function unregisterTarget(target) {\n this.$delete(this.targets, target);\n },\n registerSource: function registerSource(source, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.sources[source]) {\n console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n }\n\n this.$set(this.sources, source, Object.freeze([vm]));\n },\n unregisterSource: function unregisterSource(source) {\n this.$delete(this.sources, source);\n },\n hasTarget: function hasTarget(to) {\n return !!(this.targets[to] && this.targets[to][0]);\n },\n hasSource: function hasSource(to) {\n return !!(this.sources[to] && this.sources[to][0]);\n },\n hasContentFor: function hasContentFor(to) {\n return !!this.transports[to] && !!this.transports[to].length;\n },\n // Internal\n $_getTransportIndex: function $_getTransportIndex(_ref) {\n var to = _ref.to,\n from = _ref.from;\n\n for (var i in this.transports[to]) {\n if (this.transports[to][i].from === from) {\n return +i;\n }\n }\n\n return -1;\n }\n }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n name: 'portal',\n props: {\n disabled: {\n type: Boolean\n },\n name: {\n type: String,\n default: function _default() {\n return String(_id++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n }\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerSource(_this.name, _this);\n });\n },\n mounted: function mounted() {\n if (!this.disabled) {\n this.sendUpdate();\n }\n },\n updated: function updated() {\n if (this.disabled) {\n this.clear();\n } else {\n this.sendUpdate();\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterSource(this.name);\n this.clear();\n },\n watch: {\n to: function to(newValue, oldValue) {\n oldValue && oldValue !== newValue && this.clear(oldValue);\n this.sendUpdate();\n }\n },\n methods: {\n clear: function clear(target) {\n var closer = {\n from: this.name,\n to: target || this.to\n };\n wormhole.close(closer);\n },\n normalizeSlots: function normalizeSlots() {\n return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n },\n normalizeOwnChildren: function normalizeOwnChildren(children) {\n return typeof children === 'function' ? children(this.slotProps) : children;\n },\n sendUpdate: function sendUpdate() {\n var slotContent = this.normalizeSlots();\n\n if (slotContent) {\n var transport = {\n from: this.name,\n to: this.to,\n passengers: _toConsumableArray(slotContent),\n order: this.order\n };\n wormhole.open(transport);\n } else {\n this.clear();\n }\n }\n },\n render: function render(h) {\n var children = this.$slots.default || this.$scopedSlots.default || [];\n var Tag = this.tag;\n\n if (children && this.disabled) {\n return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n } else {\n return this.slim ? h() : h(Tag, {\n class: {\n 'v-portal': true\n },\n style: {\n display: 'none'\n },\n key: 'v-portal-placeholder'\n });\n }\n }\n});\n\nvar PortalTarget = Vue.extend({\n name: 'portalTarget',\n props: {\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String,\n required: true\n },\n slim: {\n type: Boolean,\n default: false\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n data: function data() {\n return {\n transports: wormhole.transports,\n firstRender: true\n };\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerTarget(_this.name, _this);\n });\n },\n watch: {\n ownTransports: function ownTransports() {\n this.$emit('change', this.children().length > 0);\n },\n name: function name(newVal, oldVal) {\n /**\r\n * TODO\r\n * This should warn as well ...\r\n */\n wormhole.unregisterTarget(oldVal);\n wormhole.registerTarget(newVal, this);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.transition) {\n this.$nextTick(function () {\n // only when we have a transition, because it causes a re-render\n _this2.firstRender = false;\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterTarget(this.name);\n },\n computed: {\n ownTransports: function ownTransports() {\n var transports = this.transports[this.name] || [];\n\n if (this.multiple) {\n return transports;\n }\n\n return transports.length === 0 ? [] : [transports[transports.length - 1]];\n },\n passengers: function passengers() {\n return combinePassengers(this.ownTransports, this.slotProps);\n }\n },\n methods: {\n // can't be a computed prop because it has to \"react\" to $slot changes.\n children: function children() {\n return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n },\n // can't be a computed prop because it has to \"react\" to this.children().\n noWrapper: function noWrapper() {\n var noWrapper = this.slim && !this.transition;\n\n if (noWrapper && this.children().length > 1) {\n console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n }\n\n return noWrapper;\n }\n },\n render: function render(h) {\n var noWrapper = this.noWrapper();\n var children = this.children();\n var Tag = this.transition || this.tag;\n return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n props: {\n // if we have a transition component, pass the tag if it exists\n tag: this.transition && this.tag ? this.tag : undefined\n },\n class: {\n 'vue-portal-target': true\n }\n }, children);\n }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n name: 'MountingPortal',\n inheritAttrs: false,\n props: {\n append: {\n type: [Boolean, String]\n },\n bail: {\n type: Boolean\n },\n mountTo: {\n type: String,\n required: true\n },\n // Portal\n disabled: {\n type: Boolean\n },\n // name for the portal\n name: {\n type: String,\n default: function _default() {\n return 'mounted_' + String(_id$1++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n // name for the target\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n },\n // Target\n multiple: {\n type: Boolean,\n default: false\n },\n targetSlim: {\n type: Boolean\n },\n targetSlotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n targetTag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n created: function created() {\n if (typeof document === 'undefined') return;\n var el = document.querySelector(this.mountTo);\n\n if (!el) {\n console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n return;\n }\n\n var props = this.$props; // Target already exists\n\n if (wormhole.targets[props.name]) {\n if (props.bail) {\n console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n Aborting because 'bail: true' is set\"));\n } else {\n this.portalTarget = wormhole.targets[props.name];\n }\n\n return;\n }\n\n var append = props.append;\n\n if (append) {\n var type = typeof append === 'string' ? append : 'DIV';\n var mountEl = document.createElement(type);\n el.appendChild(mountEl);\n el = mountEl;\n } // get props for target from $props\n // we have to rename a few of them\n\n\n var _props = pick(this.$props, targetProps);\n\n _props.slim = this.targetSlim;\n _props.tag = this.targetTag;\n _props.slotProps = this.targetSlotProps;\n _props.name = this.to;\n this.portalTarget = new PortalTarget({\n el: el,\n parent: this.$parent || this,\n propsData: _props\n });\n },\n beforeDestroy: function beforeDestroy() {\n var target = this.portalTarget;\n\n if (this.append) {\n var el = target.$el;\n el.parentNode.removeChild(el);\n }\n\n target.$destroy();\n },\n render: function render(h) {\n if (!this.portalTarget) {\n console.warn(\"[portal-vue] Target wasn't mounted\");\n return h();\n } // if there's no \"manual\" scoped slot, so we create a ourselves\n\n\n if (!this.$scopedSlots.manual) {\n var props = pick(this.$props, portalProps);\n return h(Portal, {\n props: props,\n attrs: this.$attrs,\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }, this.$slots.default);\n } // else, we render the scoped slot\n\n\n var content = this.$scopedSlots.manual({\n to: this.to\n }); // if user used