{"version":3,"file":"seniorsistemas-angular-components-picklist.mjs","sources":["../../projects/angular-components/picklist/src/lib/picklist/picklist.component.ts","../../projects/angular-components/picklist/src/lib/picklist/picklist.component.html","../../projects/angular-components/picklist/src/lib/picklist/picklist.module.ts","../../projects/angular-components/picklist/src/seniorsistemas-angular-components-picklist.ts"],"sourcesContent":["import { CdkDrag, CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    DestroyRef,\n    EventEmitter,\n    inject,\n    input,\n    Input,\n    OnChanges,\n    OnInit,\n    output,\n    Output,\n    QueryList,\n    signal,\n    SimpleChanges,\n    TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { LoadingStateIndicators, LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { debounceTime, distinctUntilChanged, pipe, Subject, switchMap, tap } from 'rxjs';\nimport { PickListItem, PicklistItemMove, PicklistLazyLoadEvent, PicklistLoader, PicklistTarget } from './types';\n\ninterface InternalPicklistItem<T = any> extends PickListItem<T> {\n    invisible?: boolean;\n    selected?: boolean;\n}\n\ntype CdkDragEvent<T> = { source: CdkDrag<InternalPicklistItem<T>> };\n\n/**\n * @description Componente de lista de dupla seleção (picklist) com suporte a\n * arrastar e soltar, filtro, checkboxes e template customizável para cada item.\n * Emite eventos ao mover itens entre as listas.\n *\n * @example\n * ```html\n * <s-picklist\n *   [itensToSelect]=\"itensDisponiveis\"\n *   [selectedItens]=\"itensSelecionados\"\n *   (selectedItensChange)=\"onSelecaoMudou($event)\" />\n * ```\n *\n * @category Data\n */\n@Component({\n    standalone: true,\n    imports: [TranslateModule, DragDropModule, FormsModule, ButtonComponent, NgTemplateOutlet, LoadingStateModule],\n    selector: 's-picklist',\n    templateUrl: './picklist.component.html',\n    styleUrls: ['./picklist.component.scss'],\n})\nexport class PicklistComponent<T> implements AfterViewInit, OnChanges, OnInit {\n    private cdr = inject(ChangeDetectorRef);\n    /** @description Lista de itens disponíveis para seleção (coluna esquerda). @default [] */\n    @Input()\n    public itensToSelect: PickListItem<T>[] = [];\n\n    /** @description Lista de itens já selecionados (coluna direita). @default [] */\n    @Input()\n    public selectedItens: PickListItem<T>[] = [];\n\n    /** @description Rótulo do título da lista de disponíveis. */\n    @Input()\n    public availableItensLabel?: string;\n\n    /** @description Placeholder da busca na lista de disponíveis. */\n    @Input()\n    public availableItensPlaceholder?: string;\n\n    /** @description Rótulo do botão de adicionar itens selecionados. */\n    @Input()\n    public addSelectedItensLabel?: string;\n\n    /** @description Rótulo do botão de adicionar todos os itens. */\n    @Input()\n    public addAllItensLabel?: string;\n\n    /** @description Rótulo do título da lista de selecionados. */\n    @Input()\n    public selectedItensLabel?: string;\n\n    /** @description Placeholder da busca na lista de selecionados. */\n    @Input()\n    public selectedItensPlaceholder?: string;\n\n    /** @description Rótulo do botão de remover itens selecionados. */\n    @Input()\n    public removeSelectedItemsLabel?: string;\n\n    /** @description Rótulo do botão de remover todos os itens. */\n    @Input()\n    public removeAllItemsLabel?: string;\n\n    /** @description Exibe checkbox nos itens das listas. @default false */\n    @Input()\n    public showCheckbox = false;\n\n    /** @description Propriedade usada para filtrar os itens das listas. @default '' */\n    @Input()\n    public filterBy = '';\n\n    /** @description Habilita o carregamento preguiçoso (lazy load) para as listas. @default false */\n    lazyLoad = input<boolean>(false);\n\n    /** @description Número de linhas a serem exibidas por página caso o lazyLoad esteja habilitado. @default 10 */\n    rows = input<number>(10);\n\n    /** @description Função loader para a lista de disponíveis (to-select). Quando fornecida, o componente gerencia internamente paginação, loading e race conditions. */\n    sourceLoader = input<PicklistLoader<T>>();\n\n    /** @description Função loader para a lista de selecionados (selected). Quando fornecida, o componente gerencia internamente paginação, loading e race conditions. */\n    targetLoader = input<PicklistLoader<T>>();\n\n    protected readonly _loadingTarget = signal<boolean>(false);\n\n    protected readonly _loadingSource = signal<boolean>(false);\n\n    /** @description Emitido quando um item é movido entre as listas e o lazy load está habilitado. */\n    nodeMoved = output<PicklistItemMove<T>>();\n\n    /** @description Emitido quando a lista de selecionados muda. */\n    @Output()\n    public selectedItensChange = new EventEmitter<any[]>();\n\n    /** @description Emitido quando a lista de disponíveis muda. */\n    @Output()\n    public itensToSelectChange = new EventEmitter<any[]>();\n\n    public availableItensFilter = '';\n\n    public selectedItensFilter = '';\n\n    public itemToSelectTemplate: TemplateRef<T> | null = null;\n\n    public itemSelectedTemplate: TemplateRef<T> | null = null;\n\n    protected logoIndicator = LoadingStateIndicators.Logo;\n\n    protected itensToSelectFilterUtil: {\n        allItensSelected: boolean;\n        rawItensToSelect: InternalPicklistItem[];\n        filteredItensToSelect: InternalPicklistItem[];\n    } = {\n        allItensSelected: false,\n        rawItensToSelect: [],\n        filteredItensToSelect: [],\n    };\n\n    protected selectedItensFilterUtil: {\n        allItensSelected: boolean;\n        rawSelectedItens: InternalPicklistItem[];\n        filteredSelectedItens: InternalPicklistItem[];\n    } = {\n        allItensSelected: false,\n        rawSelectedItens: [],\n        filteredSelectedItens: [],\n    };\n\n    public selectedItensMap: Set<InternalPicklistItem> = new Set();\n    public itensToSelectId = randomHash('itensToSelect');\n    public selectedItensId = randomHash('selectedItens');\n\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly sourceFilterSubject = new Subject<string>();\n    private readonly targetFilterSubject = new Subject<string>();\n    private readonly sourceLoadSubject = new Subject<PicklistLazyLoadEvent>();\n    private readonly targetLoadSubject = new Subject<PicklistLazyLoadEvent>();\n    private _internalTotalSource = 0;\n    private _internalTotalTarget = 0;\n    private sourceCurrentPage = 0;\n    private targetCurrentPage = 0;\n\n    private _logErrorTemplate = true;\n    @ContentChildren(TemplateDirective)\n    private templates: QueryList<TemplateDirective> | null = null;\n\n    ngAfterViewInit(): void {\n        this.itemToSelectTemplate = this.templates?.find((x) => x.type === 'item-to-select')?.template ?? null;\n        this.itemSelectedTemplate = this.templates?.find((x) => x.type === 'selected-item')?.template ?? null;\n        if (this._logErrorTemplate) {\n            if (!this.itemToSelectTemplate) {\n                console.error(`Missing template for 'item-to-select' add this template using sTemplate directive.`);\n            }\n            if (!this.itemSelectedTemplate) {\n                console.error(`Missing template for 'selected-item' add this template using sTemplate directive.`);\n            }\n        }\n        this.cdr.detectChanges();\n    }\n\n    ngOnInit(): void {\n        this.setupLoaderPipelines();\n        this.setupLazyLoadEvents();\n        this.setupFilterDebounce();\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        const changedItensToSelect = changes['itensToSelect'];\n        const changedSelectedItens = changes['selectedItens'];\n        if (changedItensToSelect && !this.lazyLoad()) {\n            this.itensToSelectFilterUtil = {\n                allItensSelected: this.itensToSelectFilterUtil.allItensSelected || false,\n                rawItensToSelect: this.itensToSelect,\n                filteredItensToSelect: this.itensToSelect,\n            };\n        } else if (changedItensToSelect && this.lazyLoad()) {\n            this.itensToSelectFilterUtil.rawItensToSelect = [\n                ...this.itensToSelectFilterUtil.rawItensToSelect,\n                ...this.itensToSelect,\n            ];\n            if (this.itensToSelectFilterUtil.allItensSelected) {\n                this._checkAllSelectedItensChange(\n                    this.itensToSelectFilterUtil.allItensSelected,\n                    this.itensToSelectFilterUtil.rawItensToSelect,\n                    this.itensToSelectId,\n                );\n            }\n            this.itensToSelectFilterUtil.filteredItensToSelect = [...this.itensToSelectFilterUtil.rawItensToSelect];\n        }\n\n        if (changedSelectedItens && !this.lazyLoad()) {\n            this.selectedItensFilterUtil = {\n                allItensSelected: this.selectedItensFilterUtil.allItensSelected || false,\n                filteredSelectedItens: this.selectedItens,\n                rawSelectedItens: this.selectedItens,\n            };\n        } else if (changedSelectedItens && this.lazyLoad()) {\n            this.selectedItensFilterUtil.rawSelectedItens = [\n                ...this.selectedItensFilterUtil.rawSelectedItens,\n                ...this.selectedItens,\n            ];\n            if (this.selectedItensFilterUtil.allItensSelected) {\n                this._checkAllSelectedItensChange(\n                    this.selectedItensFilterUtil.allItensSelected,\n                    this.selectedItensFilterUtil.rawSelectedItens,\n                    this.selectedItensId,\n                );\n            }\n            this.selectedItensFilterUtil.filteredSelectedItens = [...this.selectedItensFilterUtil.rawSelectedItens];\n        }\n    }\n\n    toggleSelected(internalPicklistItem: InternalPicklistItem, containerListId: string) {\n        if (internalPicklistItem.disabled) {\n            return;\n        }\n        this.unselectedItensByListId(this.getOppositiveId(containerListId));\n        internalPicklistItem.selected = !internalPicklistItem.selected;\n        if (internalPicklistItem.selected) {\n            this.selectedItensMap.add(internalPicklistItem);\n        } else {\n            this.selectedItensMap.delete(internalPicklistItem);\n        }\n\n        const containerFilterUtil =\n            containerListId === this.selectedItensId ? this.selectedItensFilterUtil : this.itensToSelectFilterUtil;\n        const isAllSelected = this._checkAllSelectedByList(\n            containerListId === this.selectedItensId\n                ? this.selectedItensFilterUtil.filteredSelectedItens\n                : this.itensToSelectFilterUtil.filteredItensToSelect,\n        );\n        if (this.lazyLoad() && !internalPicklistItem.selected && containerFilterUtil.allItensSelected) {\n            containerFilterUtil.allItensSelected = false;\n        } else if (this.lazyLoad() && isAllSelected && containerFilterUtil.allItensSelected !== isAllSelected) {\n            containerFilterUtil.allItensSelected = isAllSelected;\n        }\n        this.cdr.detectChanges();\n    }\n\n    remove(all = false) {\n        const itens = filterEnabled<T>(all ? this.selectedItensFilterUtil.rawSelectedItens : this.selectedItensMap);\n        if (!itens.length) {\n            return;\n        }\n        const allElements = this.lazyLoad() ? [] : this.selectedItensFilterUtil.rawSelectedItens;\n        const revertAction = () => {\n            this.selectedItensFilterUtil.rawSelectedItens = [\n                ...this.selectedItensFilterUtil.rawSelectedItens,\n                ...itens.map((i) => {\n                    i.selected = false;\n                    return i;\n                }),\n            ];\n            this.itensToSelectFilterUtil.rawItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n                (x) => !itens.includes(x),\n            );\n            this.selectedItensFilterUtil.allItensSelected = false;\n            if (this.lazyLoad()) {\n                this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n                this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n            } else {\n                this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n                this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n                this.filterSelectedItens();\n                this.filterItensToSelect();\n                this.emitData();\n            }\n            this.cdr.detectChanges();\n        };\n        this.nodeMoved.emit({\n            direction: 'to-select',\n            items: all ? allElements : parseValueEmit(Array.from(this.selectedItensMap)),\n            moveAll: all,\n            revertAction,\n        });\n        this.itensToSelectFilterUtil.rawItensToSelect = [\n            ...this.itensToSelectFilterUtil.rawItensToSelect,\n            ...itens.map((itemRemove) => {\n                itemRemove.selected = false;\n                this.selectedItensMap.delete(itemRemove);\n                return itemRemove;\n            }),\n        ];\n        this.selectedItensFilterUtil.rawSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n            (x) => !itens.includes(x),\n        );\n        this.selectedItensFilterUtil.allItensSelected = false;\n        if (this.lazyLoad()) {\n            this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n            this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n        } else {\n            this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n            this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n            this.filterSelectedItens();\n            this.filterItensToSelect();\n            this.emitData();\n        }\n        this.cdr.detectChanges();\n    }\n\n    add(all = false) {\n        const itens = filterEnabled<T>(all ? this.itensToSelectFilterUtil.rawItensToSelect : this.selectedItensMap);\n        if (!itens.length) {\n            return;\n        }\n\n        const allElements = this.lazyLoad() ? [] : this.itensToSelectFilterUtil.rawItensToSelect;\n        const revertAction = () => {\n            this.itensToSelectFilterUtil.rawItensToSelect = [\n                ...this.itensToSelectFilterUtil.rawItensToSelect,\n                ...itens.map((i) => {\n                    i.selected = false;\n                    this.selectedItensMap.delete(i);\n                    return i;\n                }),\n            ];\n            this.selectedItensFilterUtil.rawSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n                (x) => !itens.includes(x),\n            );\n            this.itensToSelectFilterUtil.allItensSelected = false;\n            if (this.lazyLoad()) {\n                this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n                this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n            } else {\n                this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n                this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n                this.filterSelectedItens();\n                this.filterItensToSelect();\n                this.emitData();\n            }\n            this.cdr.detectChanges();\n        };\n        this.nodeMoved.emit({\n            direction: 'selected',\n            items: all ? allElements : parseValueEmit(Array.from(this.selectedItensMap)),\n            moveAll: all,\n            revertAction,\n        });\n        this.selectedItensFilterUtil.rawSelectedItens = [\n            ...this.selectedItensFilterUtil.rawSelectedItens,\n            ...itens.map((itemRemove) => {\n                itemRemove.selected = false;\n                this.selectedItensMap.delete(itemRemove);\n                return itemRemove;\n            }),\n        ];\n        this.itensToSelectFilterUtil.rawItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n            (x) => !itens.includes(x),\n        );\n        this.itensToSelectFilterUtil.allItensSelected = false;\n        if (this.lazyLoad()) {\n            this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n            this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n        } else {\n            this.selectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n            this.itensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n            this.filterSelectedItens();\n            this.filterItensToSelect();\n            this.emitData();\n        }\n        this.cdr.detectChanges();\n    }\n\n    filterItensToSelect(): void {\n        if (this.lazyLoad()) {\n            this._loadingSource.set(true);\n            this.sourceFilterSubject.next(this.availableItensFilter);\n            return;\n        }\n        let searchTerm = this.availableItensFilter.trim();\n        if (searchTerm) {\n            this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n                (item) => compareStrings(item.data[this.filterBy], searchTerm),\n            );\n        } else {\n            this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n        }\n        this.cdr.detectChanges();\n    }\n\n    filterSelectedItens(): void {\n        if (this.lazyLoad()) {\n            this._loadingTarget.set(true);\n            this.targetFilterSubject.next(this.selectedItensFilter);\n            return;\n        }\n        let searchTerm = this.selectedItensFilter.trim();\n        if (searchTerm) {\n            this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n                (item) => compareStrings(item.data[this.filterBy], searchTerm),\n            );\n        } else {\n            this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n        }\n    }\n\n    drop(event: CdkDragDrop<InternalPicklistItem[]>) {\n        const isDifferentContainer = event.container !== event.previousContainer;\n        if (!isDifferentContainer) {\n            return;\n        }\n\n        const isRemovedItens = event.previousContainer.id === this.selectedItensId;\n        if (isRemovedItens) {\n            this.remove();\n        } else {\n            this.add();\n        }\n        this.cdr.detectChanges();\n    }\n\n    onDragStart(event: CdkDragEvent<T>, dragListId: string) {\n        this.unselectedItensByListId(this.getOppositiveId(dragListId));\n        event.source.data.selected = true;\n        this.selectedItensMap.add(event.source.data);\n        this.selectedItensMap.forEach((x) => (x.invisible = true));\n        this.cdr.detectChanges();\n    }\n\n    onDragRelease() {\n        this.selectedItensMap.forEach((item) => (item.invisible = false));\n    }\n\n    checkAllAvailableItensChange(checked: boolean) {\n        this._checkAllSelectedItensChange(\n            checked,\n            this.itensToSelectFilterUtil.filteredItensToSelect,\n            this.itensToSelectId,\n        );\n    }\n\n    checkAllSelectedItensChange(checked: boolean) {\n        this._checkAllSelectedItensChange(\n            checked,\n            this.selectedItensFilterUtil.filteredSelectedItens,\n            this.selectedItensId,\n        );\n    }\n\n    onScroll(event: Event, listId: string) {\n        if (!this.lazyLoad()) {\n            return;\n        }\n\n        const element = event.target as HTMLElement;\n        const reachLimit = element.offsetHeight + element.scrollTop >= element.scrollHeight;\n        if (!reachLimit) {\n            return;\n        }\n        const target: PicklistTarget = listId === this.selectedItensId ? 'selected' : 'to-select';\n        const targetReachLimit =\n            target === 'selected'\n                ? this.selectedItensFilterUtil.filteredSelectedItens.length >= this._internalTotalTarget\n                : this.itensToSelectFilterUtil.filteredItensToSelect.length >= this._internalTotalSource;\n        if (targetReachLimit) {\n            return;\n        }\n        this.loadNextPage(target);\n    }\n\n    get disableSelectedItensCheckbox() {\n        return filterEnabled<T>(this.selectedItensFilterUtil.filteredSelectedItens).length === 0;\n    }\n\n    get disableItensToSelectCheckbox() {\n        return filterEnabled<T>(this.itensToSelectFilterUtil.filteredItensToSelect).length === 0;\n    }\n\n    get itensToSelectAllSelected() {\n        return this._checkAllSelectedByList(this.itensToSelectFilterUtil.filteredItensToSelect);\n    }\n\n    get selectedItensAllSelected() {\n        return this._checkAllSelectedByList(this.selectedItensFilterUtil.filteredSelectedItens);\n    }\n\n    get hasSelectedItens() {\n        return this.selectedItensMap.size > 0;\n    }\n\n    /**\n     * @description Recarrega as listas após a confirmação de uma movimentação pelo backend.\n     *\n     * **Por que usar?**\n     * Ao mover itens, o componente atualiza a UI de forma otimista — os itens são movidos\n     * imediatamente antes da confirmação do servidor. Após o backend confirmar a operação,\n     * chame `resetList` para limpar e recarregar as listas afetadas do zero, garantindo que\n     * o estado da UI reflita os dados reais persistidos.\n     *\n     * **O que espera?**\n     * Recebe o objeto `PicklistItemMove<T>` emitido pelo output `(nodeMoved)`. O componente\n     * utiliza `node.direction` para determinar qual lista recarregar (a lista de destino da\n     * movimentação) e `node.moveAll` para verificar se a origem também deve ser recarregada\n     * (por exemplo, ao mover todos os itens de uma lista para outra, ambas ficam com estado\n     * alterado no backend).\n     *\n     * **O que faz?**\n     * - Reseta o contador de página da lista de destino para `0` (primeira página).\n     * - Limpa todos os itens carregados na lista de destino.\n     * - Dispara imediatamente o carregamento da primeira página via `sourceLoader`/`targetLoader`.\n     * - Se `node.moveAll === true`, repete o processo para a lista de origem.\n     *\n     * **Exemplo de uso:**\n     * ```typescript\n     * nodeMoved(node: PicklistItemMove<MyItem>): void {\n     *     this.service.moveItems(node).subscribe({\n     *         next: () => this.myPicklist().resetList(node),\n     *         error: () => node.revertAction(),\n     *     });\n     * }\n     * ```\n     *\n     * @param node - O objeto de movimentação emitido pelo output `(nodeMoved)`.\n     */\n    public resetList(node: PicklistItemMove<T>): void {\n        if (!this.lazyLoad()) {\n            return;\n        }\n\n        this._resetListByTarget(node.direction);\n        if (node.moveAll) {\n            this._resetListByTarget(node.direction === 'selected' ? 'to-select' : 'selected');\n        }\n    }\n\n    private _resetListByTarget(target: PicklistTarget): void {\n        if (target === 'selected') {\n            this.targetCurrentPage = -1;\n            this._internalTotalTarget = 0;\n            this.selectedItens = [];\n            this.selectedItensFilterUtil.rawSelectedItens = [];\n            this.selectedItensFilterUtil.filteredSelectedItens = [];\n        } else {\n            this.sourceCurrentPage = -1;\n            this._internalTotalSource = 0;\n            this.itensToSelect = [];\n            this.itensToSelectFilterUtil.rawItensToSelect = [];\n            this.itensToSelectFilterUtil.filteredItensToSelect = [];\n        }\n\n        this.cdr.detectChanges();\n        Promise.resolve().then(() => this.loadNextPage(target));\n    }\n\n    private _checkAllSelectedByList(list: InternalPicklistItem[]) {\n        const _listItens = filterEnabled<T>(list);\n        if (!_listItens.length) {\n            return false;\n        } else {\n            return _listItens.every((x) => x.selected);\n        }\n    }\n\n    private setupLoaderPipelines(): void {\n        if (!this.lazyLoad()) {\n            return;\n        }\n\n        if (!this.sourceLoader && !this.targetLoader && this._logErrorTemplate) {\n            console.error(\n                `Lazy load is enabled but no loader function was provided. Please provide at least one loader function using 'sourceLoader' or 'targetLoader' input.`,\n            );\n        }\n\n        if (this.sourceLoader()) {\n            this.sourceLoadSubject\n                .pipe(\n                    switchMap((event) => {\n                        this._loadingSource.set(true);\n                        return this.sourceLoader()!(event);\n                    }),\n                    takeUntilDestroyed(this.destroyRef),\n                )\n                .subscribe(({ items, totalRecords }) => {\n                    this._internalTotalSource = totalRecords;\n                    this.itensToSelectFilterUtil.rawItensToSelect = [\n                        ...this.itensToSelectFilterUtil.rawItensToSelect,\n                        ...items,\n                    ];\n                    if (this.itensToSelectFilterUtil.allItensSelected) {\n                        this._checkAllSelectedItensChange(\n                            true,\n                            this.itensToSelectFilterUtil.rawItensToSelect,\n                            this.itensToSelectId,\n                        );\n                    }\n                    this.itensToSelectFilterUtil.filteredItensToSelect = [\n                        ...this.itensToSelectFilterUtil.rawItensToSelect,\n                    ];\n                    this._loadingSource.set(false);\n                    this.cdr.detectChanges();\n                });\n        }\n\n        if (this.targetLoader()) {\n            this.targetLoadSubject\n                .pipe(\n                    switchMap((event) => {\n                        this._loadingTarget.set(true);\n                        return this.targetLoader()!(event);\n                    }),\n                    takeUntilDestroyed(this.destroyRef),\n                )\n                .subscribe(({ items, totalRecords }) => {\n                    this._internalTotalTarget = totalRecords;\n                    this.selectedItensFilterUtil.rawSelectedItens = [\n                        ...this.selectedItensFilterUtil.rawSelectedItens,\n                        ...items,\n                    ];\n                    if (this.selectedItensFilterUtil.allItensSelected) {\n                        this._checkAllSelectedItensChange(\n                            true,\n                            this.selectedItensFilterUtil.rawSelectedItens,\n                            this.selectedItensId,\n                        );\n                    }\n                    this.selectedItensFilterUtil.filteredSelectedItens = [\n                        ...this.selectedItensFilterUtil.rawSelectedItens,\n                    ];\n                    this._loadingTarget.set(false);\n                    this.cdr.detectChanges();\n                });\n        }\n    }\n\n    private setupFilterDebounce(): void {\n        if (!this.lazyLoad()) {\n            return;\n        }\n\n        this.sourceFilterSubject\n            .pipe(\n                distinctUntilChanged(),\n                debounceTime(300),\n                tap(() => {\n                    this.sourceCurrentPage = -1;\n                    this.itensToSelect = [];\n                    this.itensToSelectFilterUtil.rawItensToSelect = [];\n                    this.itensToSelectFilterUtil.filteredItensToSelect = [];\n                    this.cdr.detectChanges();\n                }),\n                switchMap(() => {\n                    this.loadNextPage('to-select');\n                    return [];\n                }),\n                takeUntilDestroyed(this.destroyRef),\n            )\n            .subscribe();\n\n        this.targetFilterSubject\n            .pipe(\n                distinctUntilChanged(),\n                debounceTime(300),\n                tap(() => {\n                    this.targetCurrentPage = -1;\n                    this.selectedItens = [];\n                    this.selectedItensFilterUtil.rawSelectedItens = [];\n                    this.selectedItensFilterUtil.filteredSelectedItens = [];\n                    this.cdr.detectChanges();\n                }),\n                switchMap(() => {\n                    this.loadNextPage('selected');\n                    return [];\n                }),\n                takeUntilDestroyed(this.destroyRef),\n            )\n            .subscribe();\n    }\n\n    private setupLazyLoadEvents() {\n        if (!this.lazyLoad()) {\n            return;\n        }\n\n        Promise.resolve().then(() => {\n            this.loadNextPage('to-select');\n            this.loadNextPage('selected');\n        });\n    }\n\n    private loadNextPage(target: PicklistTarget): void {\n        const totalRegisters = target === 'selected' ? this._internalTotalTarget : this._internalTotalSource;\n        const lastPage = Math.ceil(totalRegisters / this.rows());\n\n        if (target === 'selected' && this.targetCurrentPage < lastPage) {\n            this.targetCurrentPage++;\n        } else if (target === 'to-select' && this.sourceCurrentPage < lastPage) {\n            this.sourceCurrentPage++;\n        }\n\n        this.emitCurrentPage(target);\n    }\n\n    private emitCurrentPage(target: PicklistTarget): void {\n        const filter = target === 'selected' ? this.selectedItensFilter : this.availableItensFilter;\n        const page = target === 'selected' ? this.targetCurrentPage : this.sourceCurrentPage;\n\n        const event: PicklistLazyLoadEvent = { target, page, filter, pageSize: this.rows() };\n\n        if (target === 'selected') {\n            this.targetLoadSubject.next(event);\n        } else {\n            this.sourceLoadSubject.next(event);\n        }\n    }\n\n    private _checkAllSelectedItensChange(checked: boolean, list: InternalPicklistItem[], listId: string) {\n        this.unselectedItensByListId(listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId);\n        filterEnabled<T>(list).forEach((item) => {\n            item.selected = checked;\n            if (checked) {\n                this.selectedItensMap.add(item);\n            } else {\n                this.selectedItensMap.delete(item);\n            }\n        });\n        if (listId === this.selectedItensId) {\n            this.selectedItensFilterUtil.allItensSelected = checked;\n        } else {\n            this.itensToSelectFilterUtil.allItensSelected = checked;\n        }\n        this.cdr.detectChanges();\n    }\n\n    private unselectedItensByListId(listId: string) {\n        const clearList = this.getAllElementsByListId(listId);\n        clearList.forEach((x) => {\n            x.selected = false;\n            this.selectedItensMap.delete(x);\n        });\n        this.cdr.detectChanges();\n    }\n\n    private getAllElementsByListId(listId: string) {\n        return listId === this.selectedItensId\n            ? this.selectedItensFilterUtil.rawSelectedItens\n            : this.itensToSelectFilterUtil.rawItensToSelect;\n    }\n\n    private getOppositiveId(listId: string) {\n        return listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId;\n    }\n\n    private emitData() {\n        this.itensToSelectChange.emit(parseValueEmit(this.itensToSelect));\n        this.selectedItensChange.emit(parseValueEmit(this.selectedItens));\n    }\n}\n\nconst normalizeString = (str: string) => {\n    return str\n        .normalize('NFD')\n        .replace(/[\\u0300-\\u036f]/g, '')\n        .toLowerCase();\n};\n\n/**\n * Compares two strings by normalizing them to a case-insensitive and accent-free form,\n * and checks if the main string contains the substring.\n *\n * @param mainString - The string to be searched.\n * @param substring - The string to search for within the main string.\n * @returns A boolean indicating whether the normalized main string contains the normalized substring.\n */\n\nconst compareStrings = (mainString: string, substring: string) => {\n    return normalizeString(mainString).includes(normalizeString(substring));\n};\n\nconst filterEnabled = <T>(list: PickListItem<T>[] | Set<InternalPicklistItem>): InternalPicklistItem[] => {\n    const _list = list instanceof Set ? Array.from(list) : list;\n    return _list.filter((x) => !x.disabled);\n};\n\nconst mapData = <T>(list: PickListItem<T>[]) => {\n    return list.map((x) => x.data);\n};\n\nconst parseValueEmit = pipe(filterEnabled, mapData);\n\nexport const parseItensPickList = <T>(\n    array: T[],\n    disabledFn?: (item: T) => boolean,\n    idKey?: keyof T,\n): PickListItem<T>[] => {\n    return array.map((x) => {\n        return {\n            data: x,\n            disabled: disabledFn ? disabledFn(x) : false,\n            id: idKey ? String(x[idKey]) : crypto.randomUUID(),\n        };\n    });\n};\n\n","<ng-template\n    #previewRender\n    let-itens=\"itens\"\n    let-template=\"template\"\n>\n    <section class=\"picklist-items\">\n        @for (item of itens; track $index) {\n            <ng-container *ngTemplateOutlet=\"template; context: { item: item.data }\"></ng-container>\n        }\n    </section>\n</ng-template>\n\n<ng-template\n    #picklistItensRender\n    let-id=\"id\"\n    let-itens=\"itens\"\n    let-template=\"template\"\n    let-listConnectedTo=\"listConnectedTo\"\n    let-isLoading=\"isLoading\"\n>\n    <div\n        class=\"picklist-items\"\n        cdkDropList\n        [id]=\"id\"\n        [cdkDropListSortingDisabled]=\"true\"\n        [cdkDropListData]=\"itens\"\n        [cdkDropListConnectedTo]=\"listConnectedTo\"\n        (cdkDropListDropped)=\"drop($event)\"\n        *sLoadingState=\"{ loading: isLoading, indicator: logoIndicator }\"\n        (scroll)=\"onScroll($event, id)\"\n    >\n        @for (item of itens; track $index) {\n            <div\n                cdkDrag\n                [cdkDragDisabled]=\"item.disabled\"\n                [cdkDragData]=\"item\"\n                (click)=\"toggleSelected(item, id)\"\n                (cdkDragStarted)=\"onDragStart($event, id)\"\n                (cdkDragReleased)=\"onDragRelease()\"\n                class=\"picklist-item\"\n                [class.picklist-disabled]=\"item.disabled\"\n                [class.picklist-item-invisible]=\"item.invisible\"\n                [class.picklist-item-active]=\"item.selected\"\n            >\n                @if (showCheckbox) {\n                    <input\n                        type=\"checkbox\"\n                        class=\"input-checkbox\"\n                        [(ngModel)]=\"item.selected\"\n                        [disabled]=\"item.disabled\"\n                    />\n                }\n                <div class=\"picklist-content\">\n                    <ng-container\n                        *ngTemplateOutlet=\"\n                            template;\n                            context: { item: item.data, selected: item.selected, disabled: item.disabled }\n                        \"\n                    ></ng-container>\n                </div>\n                <ng-container *cdkDragPreview>\n                    <ng-container\n                        *ngTemplateOutlet=\"previewRender; context: { itens: selectedItensMap, template: template }\"\n                    ></ng-container>\n                </ng-container>\n            </div>\n        }\n    </div>\n</ng-template>\n\n<ng-template\n    #checkboxTitleRender\n    let-disabled=\"disabled\"\n    let-checked=\"checked\"\n    let-changeFn=\"changeFn\"\n    let-id=\"id\"\n>\n    @if (showCheckbox && !lazyLoad()) {\n        <input\n            class=\"input-checkbox\"\n            type=\"checkbox\"\n            [disabled]=\"disabled\"\n            [checked]=\"checked\"\n            (change)=\"changeFn($any($event.target).checked)\"\n        />\n    } @else if (showCheckbox && lazyLoad() && id === itensToSelectId) {\n        <input\n            class=\"input-checkbox\"\n            type=\"checkbox\"\n            [disabled]=\"disabled\"\n            [checked]=\"itensToSelectFilterUtil.allItensSelected\"\n            (change)=\"checkAllAvailableItensChange($any($event.target).checked)\"\n        />\n    } @else if (showCheckbox && lazyLoad() && id === selectedItensId) {\n        <input\n            class=\"input-checkbox\"\n            type=\"checkbox\"\n            [disabled]=\"disabled\"\n            [checked]=\"selectedItensFilterUtil.allItensSelected\"\n            (change)=\"checkAllSelectedItensChange($any($event.target).checked)\"\n        />\n    }\n</ng-template>\n\n<div class=\"picklist-container\">\n    <div class=\"picklist-item-container\">\n        <div class=\"picklist-box\">\n            <div class=\"picklist-title-container\">\n                @if (!filterBy && !lazyLoad()) {\n                    <ng-container\n                        *ngTemplateOutlet=\"\n                            checkboxTitleRender;\n                            context: {\n                                disabled: disableItensToSelectCheckbox,\n                                checked: itensToSelectAllSelected,\n                                changeFn: checkAllAvailableItensChange.bind(this),\n                                id: itensToSelectId,\n                            }\n                        \"\n                    ></ng-container>\n                }\n                <span class=\"picklist-title\">\n                    {{ availableItensLabel || 'platform.angular_components.available-items' | translate }}\n                </span>\n            </div>\n            @if (filterBy || lazyLoad()) {\n                <div class=\"picklist-filter\">\n                    @if (showCheckbox) {\n                        <ng-container\n                            *ngTemplateOutlet=\"\n                                checkboxTitleRender;\n                                context: {\n                                    disabled: disableItensToSelectCheckbox,\n                                    checked: itensToSelectAllSelected,\n                                    changeFn: checkAllAvailableItensChange.bind(this),\n                                    id: itensToSelectId,\n                                }\n                            \"\n                        ></ng-container>\n                    }\n                    <input\n                        type=\"text\"\n                        class=\"input-search\"\n                        [(ngModel)]=\"availableItensFilter\"\n                        (ngModelChange)=\"filterItensToSelect()\"\n                        [placeholder]=\"\n                            availableItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\n                        \"\n                    />\n                </div>\n            }\n\n            <ng-container\n                *ngTemplateOutlet=\"\n                    picklistItensRender;\n                    context: {\n                        id: itensToSelectId,\n                        itens: itensToSelectFilterUtil.filteredItensToSelect,\n                        template: itemToSelectTemplate,\n                        listConnectedTo: selectedItensId,\n                        isLoading: _loadingSource(),\n                    }\n                \"\n            >\n            </ng-container>\n        </div>\n        <div class=\"buttons-container\">\n            <s-button\n                [label]=\"addSelectedItensLabel || 'platform.angular_components.add' | translate\"\n                priority=\"primary\"\n                rightIconClass=\"fa fa-fw fa-arrow-right\"\n                [disabled]=\"!hasSelectedItens\"\n                (clicked)=\"add()\"\n                [auxiliary]=\"false\"\n                [caret]=\"false\"\n            >\n            </s-button>\n            <s-button\n                [label]=\"addAllItensLabel || 'platform.angular_components.add_all' | translate\"\n                priority=\"link\"\n                (clicked)=\"add(true)\"\n                [auxiliary]=\"false\"\n            >\n            </s-button>\n        </div>\n    </div>\n    <div class=\"picklist-item-container\">\n        <div class=\"picklist-box\">\n            <div class=\"picklist-title-container\">\n                @if (!filterBy && !lazyLoad()) {\n                    <ng-container\n                        *ngTemplateOutlet=\"\n                            checkboxTitleRender;\n                            context: {\n                                disabled: disableSelectedItensCheckbox,\n                                checked: selectedItensAllSelected,\n                                changeFn: checkAllSelectedItensChange.bind(this),\n                                id: selectedItensId,\n                            }\n                        \"\n                    ></ng-container>\n                }\n                <span class=\"picklist-title\">\n                    {{ selectedItensLabel || 'platform.angular_components.selected-items' | translate }}\n                </span>\n            </div>\n            @if (filterBy || lazyLoad()) {\n                <div class=\"picklist-filter\">\n                    @if (showCheckbox) {\n                        <ng-container\n                            *ngTemplateOutlet=\"\n                                checkboxTitleRender;\n                                context: {\n                                    disabled: disableSelectedItensCheckbox,\n                                    checked: selectedItensAllSelected,\n                                    changeFn: checkAllSelectedItensChange.bind(this),\n                                    id: selectedItensId,\n                                }\n                            \"\n                        ></ng-container>\n                    }\n                    <input\n                        type=\"text\"\n                        class=\"input-search\"\n                        [(ngModel)]=\"selectedItensFilter\"\n                        (ngModelChange)=\"filterSelectedItens()\"\n                        [placeholder]=\"\n                            selectedItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\n                        \"\n                    />\n                </div>\n            }\n            <ng-container\n                *ngTemplateOutlet=\"\n                    picklistItensRender;\n                    context: {\n                        id: selectedItensId,\n                        itens: selectedItensFilterUtil.filteredSelectedItens,\n                        template: itemSelectedTemplate,\n                        listConnectedTo: itensToSelectId,\n                        isLoading: _loadingTarget(),\n                    }\n                \"\n            >\n            </ng-container>\n        </div>\n        <div class=\"buttons-container\">\n            <s-button\n                [label]=\"removeSelectedItemsLabel || 'platform.angular_components.remove' | translate\"\n                priority=\"primary\"\n                iconClass=\"fa fa-fw fa-arrow-left\"\n                [disabled]=\"!hasSelectedItens\"\n                [auxiliary]=\"false\"\n                (clicked)=\"remove()\"\n                [caret]=\"false\"\n            >\n            </s-button>\n            <s-button\n                [label]=\"removeAllItemsLabel || 'platform.angular_components.remove_all' | translate\"\n                priority=\"link\"\n                (clicked)=\"remove(true)\"\n                [auxiliary]=\"false\"\n            >\n            </s-button>\n        </div>\n    </div>\n</div>\n\n","import { NgModule } from '@angular/core';\n\nimport { PicklistComponent } from './picklist.component';\n\n@NgModule({\n    imports: [PicklistComponent],\n    exports: [PicklistComponent],\n})\nexport class PicklistModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}