{"version":3,"file":"ironsource-fusion-ui-components-dropdown-service.mjs","sources":["../../../projects/fusion-ui/components/dropdown/service/dropdown.service.ts","../../../projects/fusion-ui/components/dropdown/service/ironsource-fusion-ui-components-dropdown-service.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {isNullOrUndefined, isString, isUndefined} from '@ironsource/fusion-ui/utils';\nimport {Subject} from 'rxjs';\nimport {DropdownOption} from '@ironsource/fusion-ui/components/dropdown-option/entities';\n\n@Injectable({\n    providedIn: null\n})\nexport class DropdownService {\n    private closeAllSubject$ = new Subject<MouseEvent>();\n    public closeAll$ = this.closeAllSubject$.asObservable();\n\n    constructor() {}\n\n    setOptionsState(\n        options: DropdownOption[],\n        selectedOptions: DropdownOption[]\n    ): {options: DropdownOption[]; parentOption?: DropdownOption} {\n        let parentOption: DropdownOption;\n        const checkOption = (option: DropdownOption): DropdownOption => {\n            if (Array.isArray(option.childOptions)) {\n                const wasChildSelected = option.childOptions.find(item => item.isSelected);\n                option.childOptions = option.childOptions.map(checkOption);\n\n                const curChildSelected = option.childOptions.find(item => item.isSelected);\n                option.isOpen = !isUndefined(curChildSelected);\n                if (option.isOpen) {\n                    parentOption = option;\n                }\n                if (wasChildSelected !== curChildSelected) {\n                    option = {...option};\n                }\n            } else {\n                const wasSelected = option.isSelected;\n                Object.assign(option, {\n                    isSelected: this.isOptionInSelected(option, selectedOptions)\n                });\n                if (option.isSelected && !wasSelected) {\n                    option = {...option};\n                }\n            }\n            return option;\n        };\n\n        return {options: options.map(checkOption), parentOption};\n    }\n\n    isOptionInSelected(option: any, selected: any[]): boolean {\n        return selected.length > 0 && selected.some(item => (option.id && item.id && item.id === option.id) || item === option);\n    }\n\n    mapGroupedOptions(options: DropdownOption[]): DropdownOption[] {\n        return options.reduce((acc, item) => {\n            if (item.childOptions) {\n                acc.push(\n                    {\n                        id: item.id,\n                        isGroup: true,\n                        title: item.title,\n                        displayText: item.displayText\n                    },\n                    ...item.childOptions\n                );\n            } else {\n                acc.push(item);\n            }\n            return acc;\n        }, []);\n    }\n\n    optionToString(\n        option: any,\n        mappingOptions?: any,\n        {dropdownType, lastSearchValue}: {dropdownType?: string; lastSearchValue?: string} = {},\n        withoutHTMLInString: boolean = false\n    ): string {\n        if (isNullOrUndefined(option)) {\n            return '';\n        }\n        if (dropdownType === 'tags') {\n            return option.displayText ? option.displayText : option.title;\n        } else {\n            let optionToString;\n            if (isString(option)) {\n                optionToString = option;\n            } else if (option?.displayText) {\n                optionToString = option.displayText;\n            } else {\n                mappingOptions = mappingOptions ? mappingOptions : {id: 'id', title: 'title'};\n                if (withoutHTMLInString) {\n                    return `${option[mappingOptions.id]} ${option[mappingOptions?.title]}`;\n                } else {\n                    // eslint-disable-next-line\n                    return `<span class=\"is-id\">${option[mappingOptions?.id]}</span> <span class=\"is-title\">${this.highlightSearchTerm(\n                        option[mappingOptions?.title],\n                        lastSearchValue\n                    )}</span>`;\n                }\n            }\n            return this.highlightSearchTerm(optionToString, lastSearchValue);\n        }\n    }\n\n    private highlightSearchTerm(stringToShow: string, lastSearchValue: string): string {\n        if (lastSearchValue) {\n            try {\n                // regex escape (https://makandracards.com/makandra/15879-javascript-how-to-generate-a-regular-expression-from-a-string)\n                const searchRegExp = new RegExp(\n                    `${lastSearchValue.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')}(?![^<>]*(([\\\\/\\\\\"']|]]|\\\\b)>))`,\n                    'gm'\n                );\n                stringToShow = stringToShow.replace(searchRegExp, `<span class='is-keyword'>${lastSearchValue}</span>`);\n            } catch (e) {\n                // nothing to do;\n            }\n        }\n        return stringToShow;\n    }\n\n    emitCloseAllEvent(event: MouseEvent) {\n        this.closeAllSubject$.next(event);\n    }\n\n    filterEmptyGroupTitle(options: DropdownOption[]): DropdownOption[] {\n        return options.filter((item, idx, initial) => {\n            return !(\n                item.isGroup &&\n                (isNullOrUndefined(initial[idx + 1]) || (!isNullOrUndefined(initial[idx + 1]) && initial[idx + 1].isGroup))\n            );\n        });\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAQa,eAAe,CAAA;AAIxB,IAAA,WAAA,GAAA;AAHQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAc,CAAC;AAC9C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAExC;IAEhB,eAAe,CACX,OAAyB,EACzB,eAAiC,EAAA;AAEjC,QAAA,IAAI,YAA4B,CAAC;AACjC,QAAA,MAAM,WAAW,GAAG,CAAC,MAAsB,KAAoB;YAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;AACpC,gBAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3E,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAE3D,gBAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3E,MAAM,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBAC/C,IAAI,MAAM,CAAC,MAAM,EAAE;oBACf,YAAY,GAAG,MAAM,CAAC;AACzB,iBAAA;gBACD,IAAI,gBAAgB,KAAK,gBAAgB,EAAE;AACvC,oBAAA,MAAM,GAAG,EAAC,GAAG,MAAM,EAAC,CAAC;AACxB,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC,gBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;oBAClB,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC;AAC/D,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE;AACnC,oBAAA,MAAM,GAAG,EAAC,GAAG,MAAM,EAAC,CAAC;AACxB,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;AAClB,SAAC,CAAC;AAEF,QAAA,OAAO,EAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,YAAY,EAAC,CAAC;KAC5D;IAED,kBAAkB,CAAC,MAAW,EAAE,QAAe,EAAA;AAC3C,QAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,KAAK,IAAI,KAAK,MAAM,CAAC,CAAC;KAC3H;AAED,IAAA,iBAAiB,CAAC,OAAyB,EAAA;QACvC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;YAChC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,GAAG,CAAC,IAAI,CACJ;oBACI,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,oBAAA,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;AAChC,iBAAA,EACD,GAAG,IAAI,CAAC,YAAY,CACvB,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;SACd,EAAE,EAAE,CAAC,CAAC;KACV;AAED,IAAA,cAAc,CACV,MAAW,EACX,cAAoB,EACpB,EAAC,YAAY,EAAE,eAAe,EAAA,GAAuD,EAAE,EACvF,sBAA+B,KAAK,EAAA;AAEpC,QAAA,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;AAC3B,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;QACD,IAAI,YAAY,KAAK,MAAM,EAAE;AACzB,YAAA,OAAO,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AACjE,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,cAAc,CAAC;AACnB,YAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAClB,cAAc,GAAG,MAAM,CAAC;AAC3B,aAAA;iBAAM,IAAI,MAAM,EAAE,WAAW,EAAE;AAC5B,gBAAA,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;AACvC,aAAA;AAAM,iBAAA;AACH,gBAAA,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC;AAC9E,gBAAA,IAAI,mBAAmB,EAAE;AACrB,oBAAA,OAAO,CAAG,EAAA,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAI,CAAA,EAAA,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;AAC1E,iBAAA;AAAM,qBAAA;;oBAEH,OAAO,CAAA,oBAAA,EAAuB,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAkC,+BAAA,EAAA,IAAI,CAAC,mBAAmB,CAC9G,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,EAC7B,eAAe,CAClB,CAAA,OAAA,CAAS,CAAC;AACd,iBAAA;AACJ,aAAA;YACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AACpE,SAAA;KACJ;IAEO,mBAAmB,CAAC,YAAoB,EAAE,eAAuB,EAAA;AACrE,QAAA,IAAI,eAAe,EAAE;YACjB,IAAI;;AAEA,gBAAA,MAAM,YAAY,GAAG,IAAI,MAAM,CAC3B,CAAA,EAAG,eAAe,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,iCAAiC,EAC7F,IAAI,CACP,CAAC;gBACF,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,CAA4B,yBAAA,EAAA,eAAe,CAAS,OAAA,CAAA,CAAC,CAAC;AAC3G,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;;AAEX,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,YAAY,CAAC;KACvB;AAED,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACrC;AAED,IAAA,qBAAqB,CAAC,OAAyB,EAAA;QAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,KAAI;AACzC,YAAA,OAAO,EACH,IAAI,CAAC,OAAO;AACZ,iBAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAC9G,CAAC;AACN,SAAC,CAAC,CAAC;KACN;gFA1HQ,eAAe,GAAA,CAAA,EAAA,CAAA,EAAA;uEAAf,eAAe,EAAA,OAAA,EAAf,eAAe,CAAA,IAAA,EAAA,UAAA,EAFZ,IAAI,EAAA,CAAA,CAAA,EAAA;;iFAEP,eAAe,EAAA,CAAA;cAH3B,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,UAAU,EAAE,IAAI;AACnB,aAAA,CAAA;;;ACPD;;AAEG;;;;"}