{"version":3,"file":"index.js","sources":["../../../../src/packages/core/picker/picker.context.token.ts","../../../../src/packages/core/picker/search/manager/picker-search.manager.ts","../../../../src/packages/core/picker/search/picker-search-field.element.ts","../../../../src/packages/core/picker/search/picker-search-result.element.ts","../../../../src/packages/core/picker/picker.context.ts"],"sourcesContent":["import type { UmbPickerContext } from './picker.context.js';\r\nimport { UmbContextToken } from '@umbraco-cms/backoffice/context-api';\r\n\r\nexport const UMB_PICKER_CONTEXT = new UmbContextToken('UmbPickerContext');\r\n","import type { UmbPickerSearchManagerConfig } from './types.js';\r\nimport { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry';\r\nimport { UmbArrayState, UmbBooleanState, UmbNumberState, UmbObjectState } from '@umbraco-cms/backoffice/observable-api';\r\nimport type { UmbSearchProvider, UmbSearchRequestArgs, UmbSearchResultItemModel } from '@umbraco-cms/backoffice/search';\r\nimport { debounce } from '@umbraco-cms/backoffice/utils';\r\n\r\n/**\r\n * A manager for searching items in a picker.\r\n * @exports\r\n * @class UmbPickerSearchManager\r\n * @augments {UmbControllerBase}\r\n * @template ResultItemType\r\n * @template QueryType\r\n */\r\nexport class UmbPickerSearchManager<\r\n\tResultItemType extends UmbSearchResultItemModel = UmbSearchResultItemModel,\r\n\tQueryType extends UmbSearchRequestArgs = UmbSearchRequestArgs,\r\n> extends UmbControllerBase {\r\n\t#searchable = new UmbBooleanState(false);\r\n\tpublic readonly searchable = this.#searchable.asObservable();\r\n\r\n\t#query = new UmbObjectState(undefined);\r\n\tpublic readonly query = this.#query.asObservable();\r\n\r\n\t#searching = new UmbBooleanState(false);\r\n\tpublic readonly searching = this.#searching.asObservable();\r\n\r\n\t#resultItems = new UmbArrayState([], (x) => x.unique);\r\n\tpublic readonly resultItems = this.#resultItems.asObservable();\r\n\r\n\t#resultTotalItems = new UmbNumberState(0);\r\n\tpublic readonly resultTotalItems = this.#resultTotalItems.asObservable();\r\n\r\n\t#config?: UmbPickerSearchManagerConfig;\r\n\t#searchProvider?: UmbSearchProvider;\r\n\r\n\t/**\r\n\t * Creates an instance of UmbPickerSearchManager.\r\n\t * @param {UmbControllerHost} host The controller host for the search manager.\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host);\r\n\t}\r\n\r\n\t/**\r\n\t * Set the configuration for the search manager.\r\n\t * @param {UmbPickerSearchManagerConfig} config The configuration for the search manager.\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tpublic setConfig(config: UmbPickerSearchManagerConfig) {\r\n\t\tthis.#config = config;\r\n\t\tthis.#initSearch();\r\n\t}\r\n\r\n\t/**\r\n\t * Get the current configuration for the search manager.\r\n\t * @returns {UmbPickerSearchManagerConfig | undefined} The current configuration for the search manager.\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tpublic getConfig(): UmbPickerSearchManagerConfig | undefined {\r\n\t\treturn this.#config;\r\n\t}\r\n\r\n\t/**\r\n\t * Update the current configuration for the search manager.\r\n\t * @param {Partial} partialConfig\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tpublic updateConfig(partialConfig: Partial) {\r\n\t\tconst mergedConfig = { ...this.#config, ...partialConfig } as UmbPickerSearchManagerConfig;\r\n\t\tthis.setConfig(mergedConfig);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns whether items can be searched.\r\n\t * @returns {boolean} Whether items can be searched.\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tpublic getSearchable(): boolean {\r\n\t\treturn this.#searchable.getValue();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets whether items can be searched.\r\n\t * @param {boolean} value Whether items can be searched.\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tpublic setSearchable(value: boolean) {\r\n\t\tthis.#searchable.setValue(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Search for items based on the current query.\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tpublic search() {\r\n\t\tif (this.getSearchable() === false) throw new Error('Search is not enabled');\r\n\r\n\t\tconst query = this.#query.getValue();\r\n\t\tif (!query?.query) {\r\n\t\t\tthis.clear();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.#searching.setValue(true);\r\n\t\tthis.#debouncedSearch();\r\n\t}\r\n\r\n\t/**\r\n\t * Clear the current search query and result items.\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tpublic clear() {\r\n\t\tthis.#query.setValue(undefined);\r\n\t\tthis.#resultItems.setValue([]);\r\n\t\tthis.#searching.setValue(false);\r\n\t\tthis.#resultTotalItems.setValue(0);\r\n\t}\r\n\r\n\t/**\r\n\t * Set the search query.\r\n\t * @param {QueryType} query The search query.\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tpublic setQuery(query: QueryType) {\r\n\t\tif (this.getSearchable() === false) throw new Error('Search is not enabled');\r\n\t\tif (!this.query) {\r\n\t\t\tthis.clear();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.#query.setValue(query);\r\n\t}\r\n\r\n\t/**\r\n\t * Get the current search query.\r\n\t * @memberof UmbPickerSearchManager\r\n\t * @returns {QueryType | undefined} The current search query.\r\n\t */\r\n\tpublic getQuery(): QueryType | undefined {\r\n\t\treturn this.#query.getValue();\r\n\t}\r\n\r\n\t/**\r\n\t * Update the current search query.\r\n\t * @param {Partial} query\r\n\t * @memberof UmbPickerSearchManager\r\n\t */\r\n\tpublic updateQuery(query: Partial) {\r\n\t\tconst mergedQuery = { ...this.getQuery(), ...query } as QueryType;\r\n\t\tthis.#query.setValue(mergedQuery);\r\n\t}\r\n\r\n\tasync #initSearch() {\r\n\t\tconst providerAlias = this.#config?.providerAlias;\r\n\t\tif (!providerAlias) {\r\n\t\t\tthis.setSearchable(false);\r\n\t\t\tthrow new Error('No search provider alias provided');\r\n\t\t}\r\n\r\n\t\tthis.#searchProvider = await createExtensionApiByAlias(this, providerAlias);\r\n\r\n\t\tif (!this.#searchProvider) {\r\n\t\t\tthis.setSearchable(false);\r\n\t\t\tthrow new Error(`Search Provider with alias ${providerAlias} is not available`);\r\n\t\t}\r\n\r\n\t\tthis.setSearchable(true);\r\n\t}\r\n\r\n\t#debouncedSearch = debounce(this.#search, 300);\r\n\r\n\tasync #search() {\r\n\t\tif (this.getSearchable() === false) throw new Error('Search is not enabled');\r\n\t\tif (!this.#searchProvider) throw new Error('Search provider is not available');\r\n\t\tconst query = this.#query.getValue();\r\n\t\tif (!query) throw new Error('No query provided');\r\n\r\n\t\tif (!query.query) {\r\n\t\t\tthis.clear();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst args = {\r\n\t\t\tsearchFrom: this.#config?.searchFrom,\r\n\t\t\t...query,\r\n\t\t};\r\n\r\n\t\tconst { data } = await this.#searchProvider.search(args);\r\n\t\tconst items = (data?.items as ResultItemType[]) ?? [];\r\n\t\tthis.#resultItems.setValue(items);\r\n\t\tthis.#resultTotalItems.setValue(data?.total ?? 0);\r\n\t\tthis.#searching.setValue(false);\r\n\t}\r\n}\r\n","import type { UmbPickerContext } from '../picker.context.js';\r\nimport { UMB_PICKER_CONTEXT } from '../picker.context.token.js';\r\nimport type { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui';\r\nimport { html, customElement, state, nothing, css } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\r\n\r\nconst elementName = 'umb-picker-search-field';\r\n@customElement(elementName)\r\nexport class UmbPickerSearchFieldElement extends UmbLitElement {\r\n\t@state()\r\n\t_query: string = '';\r\n\r\n\t@state()\r\n\t_searching: boolean = false;\r\n\r\n\t@state()\r\n\t_isSearchable: boolean = false;\r\n\r\n\t#pickerContext?: UmbPickerContext;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.consumeContext(UMB_PICKER_CONTEXT, (context) => {\r\n\t\t\tthis.#pickerContext = context;\r\n\t\t\tthis.observe(this.#pickerContext.search.searchable, (isSearchable) => (this._isSearchable = isSearchable));\r\n\t\t\tthis.observe(this.#pickerContext.search.searching, (searching) => (this._searching = searching));\r\n\t\t\tthis.observe(this.#pickerContext.search.query, (query) => (this._query = query?.query || ''));\r\n\t\t});\r\n\t}\r\n\r\n\t#onInput(event: UUIInputEvent) {\r\n\t\tconst value = event.target.value as string;\r\n\t\tthis.#pickerContext?.search.updateQuery({ query: value });\r\n\t\tthis.#pickerContext?.search.search();\r\n\t}\r\n\r\n\toverride render() {\r\n\t\tif (!this._isSearchable) return nothing;\r\n\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t${this._searching\r\n\t\t\t\t\t\t? html``\r\n\t\t\t\t\t\t: html``}\r\n\t\t\t\t
\r\n\r\n\t\t\t\t${this._query\r\n\t\t\t\t\t? html`\r\n\t\t\t\t\t\t\t this.#pickerContext?.search.clear()} compact>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t`\r\n\t\t\t\t\t: nothing}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t`;\r\n\t}\r\n\r\n\tstatic override readonly styles = [\r\n\t\tUmbTextStyles,\r\n\t\tcss`\r\n\t\t\tuui-input {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t#divider {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\theight: 1px;\r\n\t\t\t\tbackground-color: var(--uui-color-divider);\r\n\t\t\t\tmargin-top: var(--uui-size-space-5);\r\n\t\t\t\tmargin-bottom: var(--uui-size-space-3);\r\n\t\t\t}\r\n\r\n\t\t\t#searching-indicator {\r\n\t\t\t\tmargin-left: 7px;\r\n\t\t\t\tmargin-top: 4px;\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t[elementName]: UmbPickerSearchFieldElement;\r\n\t}\r\n}\r\n","import { UMB_PICKER_CONTEXT } from '../picker.context.token.js';\r\nimport type { UmbPickerContext } from '../picker.context.js';\r\nimport type { ManifestPickerSearchResultItem } from './result-item/picker-search-result-item.extension.js';\r\nimport { customElement, html, nothing, repeat, state } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\nimport type { UmbSearchRequestArgs } from '@umbraco-cms/backoffice/search';\r\nimport type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';\r\n\r\nconst elementName = 'umb-picker-search-result';\r\n@customElement(elementName)\r\nexport class UmbPickerSearchResultElement extends UmbLitElement {\r\n\t@state()\r\n\t_query?: UmbSearchRequestArgs;\r\n\r\n\t@state()\r\n\t_searching: boolean = false;\r\n\r\n\t@state()\r\n\t_items: UmbEntityModel[] = [];\r\n\r\n\t@state()\r\n\t_isSearchable: boolean = false;\r\n\r\n\t#pickerContext?: UmbPickerContext;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.consumeContext(UMB_PICKER_CONTEXT, (context) => {\r\n\t\t\tthis.#pickerContext = context;\r\n\t\t\tthis.observe(this.#pickerContext.search.searchable, (isSearchable) => (this._isSearchable = isSearchable));\r\n\t\t\tthis.observe(this.#pickerContext.search.query, (query) => (this._query = query));\r\n\t\t\tthis.observe(this.#pickerContext.search.searching, (query) => (this._searching = query));\r\n\t\t\tthis.observe(this.#pickerContext.search.resultItems, (items) => (this._items = items));\r\n\t\t});\r\n\t}\r\n\r\n\toverride render() {\r\n\t\tif (!this._isSearchable) return nothing;\r\n\r\n\t\tif (this._query?.query && this._searching === false && this._items.length === 0) {\r\n\t\t\treturn this.#renderEmptyResult();\r\n\t\t}\r\n\r\n\t\treturn html`\r\n\t\t\t${repeat(\r\n\t\t\t\tthis._items,\r\n\t\t\t\t(item) => item.unique,\r\n\t\t\t\t(item) => this.#renderResultItem(item),\r\n\t\t\t)}\r\n\t\t`;\r\n\t}\r\n\r\n\t#renderEmptyResult() {\r\n\t\treturn html`No result for \"${this._query?.query}\".`;\r\n\t}\r\n\r\n\t#renderResultItem(item: UmbEntityModel) {\r\n\t\treturn html`\r\n\t\t\t manifest.forEntityTypes.includes(item.entityType)}\r\n\t\t\t\t.elementProps=${{ item }}>\r\n\t\t`;\r\n\t}\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t[elementName]: UmbPickerSearchResultElement;\r\n\t}\r\n}\r\n","import { UMB_PICKER_CONTEXT } from './picker.context.token.js';\r\nimport { UmbPickerSearchManager } from './search/manager/picker-search.manager.js';\r\nimport { UmbContextBase } from '@umbraco-cms/backoffice/class-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { UmbSelectionManager } from '@umbraco-cms/backoffice/utils';\r\n\r\nexport class UmbPickerContext extends UmbContextBase {\r\n\tpublic readonly selection = new UmbSelectionManager(this);\r\n\tpublic readonly search = new UmbPickerSearchManager(this);\r\n\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host, UMB_PICKER_CONTEXT);\r\n\t}\r\n}\r\n"],"names":["UMB_PICKER_CONTEXT","UmbContextToken","UmbPickerSearchManager","UmbControllerBase","host","#searchable","UmbBooleanState","#query","UmbObjectState","#searching","#resultItems","UmbArrayState","x","#resultTotalItems","UmbNumberState","#debouncedSearch","debounce","#search","#config","#searchProvider","config","#initSearch","partialConfig","mergedConfig","value","query","mergedQuery","providerAlias","createExtensionApiByAlias","args","data","items","_pickerContext","_UmbPickerSearchFieldElement_instances","onInput_fn","elementName","UmbPickerSearchFieldElement","UmbLitElement","__privateAdd","context","__privateSet","__privateGet","isSearchable","searching","html","__privateMethod","nothing","event","UmbTextStyles","css","__decorateClass","state","customElement","_UmbPickerSearchResultElement_instances","renderEmptyResult_fn","renderResultItem_fn","UmbPickerSearchResultElement","repeat","item","manifest","UmbPickerContext","UmbContextBase","UmbSelectionManager"],"mappings":"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"}