@clickview/lite 0.51.4-rc.2 → 0.51.4-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/1750-4e7575b781-lite.chunk.js +2 -0
- package/dist/scripts/1750-4e7575b781-lite.chunk.js.map +1 -0
- package/dist/scripts/1820-345bf53a3c-lite.chunk.js +2 -0
- package/dist/scripts/1820-345bf53a3c-lite.chunk.js.map +1 -0
- package/dist/scripts/1905-ccaa3a43a6-lite.chunk.js +2 -0
- package/dist/scripts/1905-ccaa3a43a6-lite.chunk.js.map +1 -0
- package/dist/scripts/2004-d891104ed4-lite.chunk.js +3 -0
- package/dist/scripts/2004-d891104ed4-lite.chunk.js.map +1 -0
- package/dist/scripts/3020-dbc723b098-lite.chunk.js +2 -0
- package/dist/scripts/3020-dbc723b098-lite.chunk.js.map +1 -0
- package/dist/scripts/3231-b46a5ecb6a-lite.chunk.js +2 -0
- package/dist/scripts/3231-b46a5ecb6a-lite.chunk.js.map +1 -0
- package/dist/scripts/3645-d9a5464436-lite.chunk.js +3 -0
- package/dist/scripts/3645-d9a5464436-lite.chunk.js.map +1 -0
- package/dist/scripts/389-58c7682943-lite.chunk.js +2 -0
- package/dist/scripts/389-58c7682943-lite.chunk.js.map +1 -0
- package/dist/scripts/4690-03372d68ac-lite.chunk.js +2 -0
- package/dist/scripts/4690-03372d68ac-lite.chunk.js.map +1 -0
- package/dist/scripts/5229-a1990cb48e-lite.chunk.js +2 -0
- package/dist/scripts/5229-a1990cb48e-lite.chunk.js.map +1 -0
- package/dist/scripts/5385-becf24e76b-lite.chunk.js +2 -0
- package/dist/scripts/5385-becf24e76b-lite.chunk.js.map +1 -0
- package/dist/scripts/5595-96a0649af0-lite.chunk.js +2 -0
- package/dist/scripts/5595-96a0649af0-lite.chunk.js.map +1 -0
- package/dist/scripts/5928-0d803fceb2-lite.chunk.js +2 -0
- package/dist/scripts/5928-0d803fceb2-lite.chunk.js.map +1 -0
- package/dist/scripts/5940-f335f8c290-lite.chunk.js +2 -0
- package/dist/scripts/5940-f335f8c290-lite.chunk.js.map +1 -0
- package/dist/scripts/8830-ab7e2a0927-lite.chunk.js +2 -0
- package/dist/scripts/8830-ab7e2a0927-lite.chunk.js.map +1 -0
- package/dist/scripts/9230-6dee40b1fb-lite.chunk.js +3 -0
- package/dist/scripts/9230-6dee40b1fb-lite.chunk.js.map +1 -0
- package/dist/scripts/{9843-fdefde55d7-lite.chunk.js → 9843-b82415b68c-lite.chunk.js} +2 -2
- package/dist/scripts/9843-b82415b68c-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-5481f5bf86.min.js → bundle-8ef24aafa1.min.js} +3 -3
- package/dist/scripts/{bundle-5481f5bf86.min.js.map → bundle-8ef24aafa1.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1750-2620ba7c35-lite.chunk.js +0 -2
- package/dist/scripts/1750-2620ba7c35-lite.chunk.js.map +0 -1
- package/dist/scripts/1820-7e03cf1f19-lite.chunk.js +0 -2
- package/dist/scripts/1820-7e03cf1f19-lite.chunk.js.map +0 -1
- package/dist/scripts/1905-7a0a3aabe9-lite.chunk.js +0 -2
- package/dist/scripts/1905-7a0a3aabe9-lite.chunk.js.map +0 -1
- package/dist/scripts/2004-00a63b9511-lite.chunk.js +0 -3
- package/dist/scripts/2004-00a63b9511-lite.chunk.js.map +0 -1
- package/dist/scripts/3020-152e57c92c-lite.chunk.js +0 -2
- package/dist/scripts/3020-152e57c92c-lite.chunk.js.map +0 -1
- package/dist/scripts/3231-af3a47245c-lite.chunk.js +0 -2
- package/dist/scripts/3231-af3a47245c-lite.chunk.js.map +0 -1
- package/dist/scripts/3645-bd1d174b0c-lite.chunk.js +0 -3
- package/dist/scripts/3645-bd1d174b0c-lite.chunk.js.map +0 -1
- package/dist/scripts/389-d8ef749150-lite.chunk.js +0 -2
- package/dist/scripts/389-d8ef749150-lite.chunk.js.map +0 -1
- package/dist/scripts/4690-c5bff103d9-lite.chunk.js +0 -2
- package/dist/scripts/4690-c5bff103d9-lite.chunk.js.map +0 -1
- package/dist/scripts/5229-b673828f61-lite.chunk.js +0 -2
- package/dist/scripts/5229-b673828f61-lite.chunk.js.map +0 -1
- package/dist/scripts/5385-db9999f839-lite.chunk.js +0 -2
- package/dist/scripts/5385-db9999f839-lite.chunk.js.map +0 -1
- package/dist/scripts/5595-8f3931b8c2-lite.chunk.js +0 -2
- package/dist/scripts/5595-8f3931b8c2-lite.chunk.js.map +0 -1
- package/dist/scripts/5928-325f4d9b8b-lite.chunk.js +0 -2
- package/dist/scripts/5928-325f4d9b8b-lite.chunk.js.map +0 -1
- package/dist/scripts/5940-44479341a9-lite.chunk.js +0 -2
- package/dist/scripts/5940-44479341a9-lite.chunk.js.map +0 -1
- package/dist/scripts/8830-7264149694-lite.chunk.js +0 -2
- package/dist/scripts/8830-7264149694-lite.chunk.js.map +0 -1
- package/dist/scripts/9230-420e26f36c-lite.chunk.js +0 -3
- package/dist/scripts/9230-420e26f36c-lite.chunk.js.map +0 -1
- package/dist/scripts/9843-fdefde55d7-lite.chunk.js.map +0 -1
- /package/dist/scripts/{2004-00a63b9511-lite.chunk.js.LICENSE.txt → 2004-d891104ed4-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{3645-bd1d174b0c-lite.chunk.js.LICENSE.txt → 3645-d9a5464436-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9230-420e26f36c-lite.chunk.js.LICENSE.txt → 9230-6dee40b1fb-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-5481f5bf86.min.js.LICENSE.txt → bundle-8ef24aafa1.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/9230-6dee40b1fb-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/windowed-list/WindowedList.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/components/settings-ordered-list-item/settings-ordered-list-item.scss","file:///app/packages/projects/lite/src/apps/settings/components/settings-ordered-list-item/SettingsOrderedListItem.tsx","file:///app/packages/projects/lite/src/apps/settings/components/device-list-item/device-list-item.scss","file:///app/packages/projects/lite/src/apps/settings/components/device-list-item/DeviceListItem.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/pair-device-view/pair-device-view.scss","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/pair-device-view/PairDeviceView.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/rename-device-popup/RenameDevicePopup.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/unpair-device-popup/UnpairDevicePopup.tsx","file:///app/packages/projects/lite/src/apps/settings/views/integration-settings/apple-tv-settings/AppleTvSettingsView.tsx","file:///app/packages/projects/lite/src/apps/settings/hooks/useAppleTvClient.ts","file:///app/packages/projects/player/src/utils/fn.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\ninterface WindowedListProps<TObject> {\n items: TObject[];\n getComponent: (item: TObject, index: number) => JSX.Element;\n rowHeight: number;\n containerHeight?: number;\n\n staticComponentAboveRows?: JSX.Element;\n staticComponentBelowRows?: JSX.Element;\n}\n\nexport const WindowedList = React.forwardRef((\n props: WindowedListProps<any>,\n ref: React.Ref<Scrollbars>\n) => {\n const [ availableHeight, setAvailableHeight ] = React.useState<number>(props.containerHeight || 0);\n const [ scrollTop, setScrollTop ] = React.useState<number>(0);\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (props.containerHeight)\n return;\n\n setAvailableHeight(tableRef.current?.clientHeight ?? 0);\n }, [tableRef.current]);\n\n const numRows = props.items.length;\n const totalRowsVisible = Math.ceil(availableHeight / props.rowHeight);\n const totalHeight = props.rowHeight * numRows;\n\n const startIndex = Math.max(\n 0,\n Math.floor(scrollTop / props.rowHeight) - totalRowsVisible\n );\n\n const endIndex = Math.min(\n numRows,\n startIndex + (totalRowsVisible * 3)\n );\n\n function onScrollTable(e: React.UIEvent<HTMLDivElement>): void {\n setScrollTop(e.currentTarget.scrollTop);\n }\n\n function getTableStyles(): React.CSSProperties {\n const tablePosFromTop = tableRef.current?.getBoundingClientRect().top ?? 0;\n\n const height = props.containerHeight || `calc(100vh - ${window.pageYOffset + tablePosFromTop + 30}px)`;\n \n return {\n height,\n minHeight: `${props.rowHeight * 5}px`,\n overflow: 'auto'\n };\n }\n\n function getRows(): JSX.Element[] {\n const items = [];\n \n let index = startIndex;\n while (index < endIndex) {\n const item = props.items[index];\n\n if (item)\n items.push(props.getComponent(item, index));\n \n index++;\n }\n\n return items;\n }\n\n return (\n <div style={getTableStyles()} ref={tableRef}>\n <Scrollbars\n onScroll={onScrollTable}\n autoHeightMin={totalHeight}\n autoHeightMax={totalHeight}\n ref={ref}\n >\n <div style={{ height: totalHeight, paddingTop: startIndex * props.rowHeight }}>\n <ul className='w-100 position-relative d-table striped-list list-unstyled no-full-width'>\n {!!props.staticComponentAboveRows && props.staticComponentAboveRows}\n {getRows()}\n {!!props.staticComponentBelowRows && props.staticComponentBelowRows}\n </ul>\n </div>\n </Scrollbars>\n </div>\n );\n});","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '22110291468057',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097'\n}\n","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"numberContainer\":\"JBRDi\"};","import React from 'react';\n\nimport styles from './settings-ordered-list-item.scss';\n\ninterface SettingsOrderedListItemProps {\n number: number;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function SettingsOrderedListItem({ number, children, className = '' }: SettingsOrderedListItemProps): JSX.Element {\n return (\n <div className={`d-flex align-items-center mb-3 ${className}`}>\n <div className={`d-flex align-items-center justify-content-center bg-dark rounded-circle ${styles.numberContainer}`}>\n <span className='text-light'>{number}</span>\n </div>\n <div className='ms-2'>\n {children}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"indicator\":\"xidrU\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Actions as ActionsButton } from 'libs/shared/components/actions/Actions';\nimport { ActionsDropdown } from 'libs/shared/components/actions/ActionsDropdown';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DeviceStatus } from 'projects/player/plugins/devices-plugin/clients/client-interfaces';\n\nimport styles from './device-list-item.scss';\n\nconst namespace = 'settings.deviceListItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DeviceListItemProps {\n name: string;\n status: DeviceStatus;\n onUnpair: () => void;\n onRename?: () => void;\n}\n\nexport function DeviceListItem(props: DeviceListItemProps): React.ReactElement {\n const { status, name, onUnpair, onRename } = props;\n\n return (\n <li className='d-flex align-items-center p-2 justify-content-between'>\n <div className='d-flex align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.AppleTv} className='svg-container me-2'/>\n <div>{name}</div>\n </div>\n\n <div className='d-flex align-items-center'>\n <DeviceStatusIndicator status={status}/>\n { onRename && <ActionsButton\n actions={[{\n svgName: cvSvgLibrary.Edit,\n className: 'btn btn-link svg-container',\n onClick: onRename,\n button: true,\n disabled: status !== DeviceStatus.Available\n }]}/>\n }\n <ActionsDropdown\n actions={[{ label: getPhrase('unpairActionButton'), onClick: onUnpair }]}\n dropdownToggleClassName='btn ms-3'\n />\n </div>\n </li>\n );\n}\n\nconst statusIndicatorColors = {\n [DeviceStatus.Available]: 'bg-success',\n [DeviceStatus.Busy]: 'bg-warning',\n [DeviceStatus.Offline]: 'bg-gray-500'\n};\n\nconst statusIndicatorLabels = {\n [DeviceStatus.Available]: getPhrase('availableStatusLabel'),\n [DeviceStatus.Busy]: getPhrase('busyStatusLabel'),\n [DeviceStatus.Offline]: getPhrase('offlineStatusLabel')\n};\n\nfunction DeviceStatusIndicator(props: Pick<DeviceListItemProps, 'status'>) {\n const color = statusIndicatorColors[props.status] ?? '';\n const label = statusIndicatorLabels[props.status] ?? '';\n\n return (\n <div className='d-flex align-items-center me-4'>\n <div className={`${styles.indicator} ${color} me-2`} />\n <span>{label}</span>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"deviceInput\":\"hkziS\",\"pinInput\":\"_oWnE\",\"image\":\"s5WWG\",\"inputWrapper\":\"BTvzv\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { SettingsOrderedListItem } from 'apps/settings/components/settings-ordered-list-item/SettingsOrderedListItem';\n\nimport styles from './pair-device-view.scss';\n\nconst namespace = 'settings.appleTv.pairDeviceView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PairDeviceViewProps {\n deviceName: string;\n pin: string;\n onDeviceNameChange: (deviceName: string) => void;\n onPinChange: (pin: string) => void;\n onActivate: () => void;\n}\n\nexport function PairDeviceView(props: PairDeviceViewProps): JSX.Element {\n const { deviceName, pin, onDeviceNameChange, onPinChange, onActivate } = props;\n \n return (\n <div className='rounded-3 px-4 py-3 mt-3 bg-light-blue d-flex flex-row justify-content-between'>\n <div>\n <p className='fw-bold'>\n <Text namespace={namespace} phrase='instructionsHeading' />\n </p>\n\n <SettingsOrderedListItem number={1}>\n <div className='d-flex align-items-center flex-wrap'>\n <Text namespace={namespace} phrase='instructionsStep1Fragment1' />\n <SvgContainer2 className='mx-1' size={SvgContainerSize.Small}>\n <ClickViewAvatar />\n </SvgContainer2>\n <Text namespace={namespace} phrase='instructionsStep1Fragment2' />\n <SvgContainer svgName={cvSvgLibrary.AppleTv} size={SvgContainerSize.Small} />\n <Text namespace={namespace} phrase='instructionsStep1Fragment3' />\n </div>\n </SettingsOrderedListItem>\n\n <SettingsOrderedListItem number={2}>\n <Text namespace={namespace} phrase='instructionsStep2' />\n </SettingsOrderedListItem>\n\n <div className={`${styles.inputWrapper} d-flex align-items-end form-group flex-wrap`}>\n <div className='d-flex flex-column me-2 mb-3'>\n <label className='fw-bold mb-1' htmlFor='create'>\n <Text namespace={namespace} phrase='deviceNameInputLabel'/>\n </label>\n <input\n id='device'\n className={`form-control form-control-md ${styles.deviceInput}`}\n value={deviceName}\n onChange={e => onDeviceNameChange(e.target.value)}\n autoComplete='off'\n placeholder={getPhrase('deviceNameInputPlaceholder')}\n />\n </div>\n\n <div className='d-flex flex-column me-2 mb-3'>\n <label className='fw-bold mb-1' htmlFor='create'>\n <Text namespace={namespace} phrase='pinInputLabel'/>\n </label>\n <input\n id='pin'\n className={`form-control form-control-md ${styles.pinInput}`}\n value={pin}\n onChange={e => onPinChange(e.target.value)}\n autoComplete='off'\n placeholder='1234'\n />\n </div>\n\n <DivButton onClick={onActivate} className='btn btn-dark mb-3'>\n <Text namespace={namespace} phrase='activateButton' />\n </DivButton>\n </div>\n\n <SettingsOrderedListItem number={3}>\n <Text namespace={namespace} phrase='instructionsStep3Fragment1' />\n <SvgContainer svgName={cvSvgLibrary.Cast} size={SvgContainerSize.Small} />\n <Text namespace={namespace} phrase='instructionsStep3Fragment2' />\n </SettingsOrderedListItem>\n\n <a\n href={ArticleHelper.getLiteArticle(LiteSupportArticle.AppleTvIntegration)}\n target='_blank'\n className='text-info mt-2'\n >\n <Text namespace={namespace} phrase='learnMore' />\n </a>\n\n </div>\n\n <div className='ms-2 d-flex align-items-center'>\n <img className={styles.image} role='presentation' src={ImageUrls.Devices.APPLE_TV} />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'settings.appleTvSettings.renameDevicePopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface RenameDevicePopupProps extends PopupViewProps {\n name: string;\n showSpinner: boolean;\n onRename: (newName: string) => void;\n}\n\nexport function RenameDevicePopup(props: RenameDevicePopupProps): JSX.Element {\n const [ name, setName ] = React.useState(props.name);\n const trimmedName = name.trim();\n\n return (\n <Popup title={getPhrase('title')} closePopup={props.closePopup}>\n <div className='form-group'>\n <label className='fw-bold mb-2' htmlFor='edit'>\n <Text namespace={namespace} phrase='inputLabel' />\n </label>\n <input\n value={name}\n onChange={e => setName(e.target.value)}\n className='form-control form-control-md mb-4'\n autoFocus\n placeholder={getPhrase('inputPlaceholder')}\n />\n </div>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n disabled={!trimmedName}\n variant='dark'\n text={getPhrase('saveButton')}\n onClick={() => props.onRename(trimmedName)}\n showSpinner={props.showSpinner}\n />\n </PopupButtons>\n </Popup>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'settings.appleTvSettings.unpairDevicePopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UnpairDevicePopupProps extends PopupViewProps {\n showSpinner: boolean;\n deviceName: string;\n onUnpair: () => void;\n}\n\nexport function UnpairDevicePopup(props: UnpairDevicePopupProps): JSX.Element {\n const { closePopup, showSpinner, deviceName, onUnpair } = props;\n \n return (\n <Popup title={getPhrase('title')} closePopup={closePopup}>\n <p>\n <Text namespace={namespace} phrase='warning' options={{ name: deviceName }} />\n </p>\n\n <p>\n <Text namespace={namespace} phrase='subWarning' />\n </p>\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={closePopup} />\n <PopupButtons.Submit\n variant='danger'\n text={getPhrase('unpairButton')}\n onClick={onUnpair}\n showSpinner={showSpinner}\n />\n </PopupButtons>\n </Popup>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WindowedList } from 'libs/shared/components/windowed-list/WindowedList';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nimport { Device } from 'projects/player/plugins/devices-plugin/clients/client-interfaces';\n\nimport { DeviceListItem } from 'apps/settings/components/device-list-item/DeviceListItem';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { useAppleTvClient } from 'apps/settings/hooks/useAppleTvClient';\n\nimport { PairDeviceView } from './pair-device-view/PairDeviceView';\nimport { RenameDevicePopup } from './rename-device-popup/RenameDevicePopup';\nimport { UnpairDevicePopup } from './unpair-device-popup/UnpairDevicePopup';\n\nconst namespace = 'settings.appleTv';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AppleTvSettingsView(): JSX.Element {\n const { devices, pair, unpair, rename } = useAppleTvClient();\n const [ deviceName, setDeviceName ] = React.useState('');\n const [ pin, setPin ] = React.useState('');\n const [ deviceToRename, setDeviceToRename ] = React.useState<Device>();\n const [ deviceToUnpair, setDeviceToUnpair ] = React.useState<Device>();\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const alerts = useAlerts();\n \n async function onPairDevice() {\n try {\n const trimmedDeviceName = deviceName.trim();\n const trimmedPin = pin.trim();\n\n if (!trimmedDeviceName) return;\n if (!trimmedPin) return;\n\n await pair({ deviceName: trimmedDeviceName, pin: trimmedPin });\n setDeviceName('');\n setPin('');\n \n alerts.success(getPhrase('devicePairingSuccessMessage'));\n } catch (e) {\n console.error(e);\n alerts.error(getPhrase('devicePairingErrorMessage'));\n }\n }\n\n async function onUnpairDevice(deviceId: string) {\n try {\n setShowSpinner(true);\n await unpair(deviceId);\n setDeviceToUnpair(undefined);\n \n alerts.success(getPhrase('deviceUnpairingSuccessMessage'));\n } catch (e) {\n console.error(e);\n alerts.error(getPhrase('deviceUnpairingErrorMessage'));\n } finally {\n setShowSpinner(false);\n }\n }\n\n async function onRenameDevice(deviceId: string, deviceName: string) {\n try {\n setShowSpinner(true);\n await rename({ deviceId, deviceName });\n setDeviceToRename(undefined);\n \n alerts.success(getPhrase('deviceRenamingSuccessMessage'));\n } catch (e) {\n console.error(e);\n alerts.error(getPhrase('deviceRenamingErrorMessage'));\n } finally {\n setShowSpinner(false);\n }\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('heading')]}\n requiredPermissions={PermissionName.ManageIntegrations}\n >\n { deviceToRename && (\n <RenameDevicePopup\n name={deviceToRename.name}\n showSpinner={showSpinner}\n onRename={newName => onRenameDevice(deviceToRename.id, newName)}\n closePopup={() => setDeviceToRename(undefined)}\n />\n )}\n\n { deviceToUnpair && (\n <UnpairDevicePopup\n showSpinner={showSpinner}\n deviceName={deviceToUnpair.name}\n onUnpair={() => onUnpairDevice(deviceToUnpair.id)}\n closePopup={() => setDeviceToUnpair(undefined)}\n />\n )}\n\n <PairDeviceView\n deviceName={deviceName}\n pin={pin}\n onDeviceNameChange={setDeviceName}\n onPinChange={setPin}\n onActivate={onPairDevice}\n />\n\n {devices.length ? <h2 className='h5 mt-4'>{getPhrase('activatedListHeading')}</h2> : null }\n\n <WindowedList\n items={devices}\n rowHeight={55}\n getComponent={(device: Device) => {\n return (\n <DeviceListItem\n key={device.id}\n name={device.name}\n status={device.status}\n onUnpair={() => setDeviceToUnpair(device)}\n // The rename function is a bit janky at the moment, so we'll disable it for now\n // Note: re-pairing the device with a different name works fine..\n // onRename={() => setDeviceToRename(device)}\n />\n );\n }}\n />\n </SettingsLayout>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { PlayerIntegrationsRequests } from 'libs/shared/flight-requests/PlayerIntegrationsRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\n\nimport { AppleTvClient } from 'projects/player/plugins/devices-plugin/clients/apple-tv/apple-tv-client';\nimport { AppleTvPairRequest, AppleTvRenameRequest, OnlineApiDevice } from 'projects/player/plugins/devices-plugin/clients/apple-tv/apple-tv-interfaces';\nimport { Device } from 'projects/player/plugins/devices-plugin/clients/client-interfaces';\n\ninterface AppleTvClientApi {\n devices: Device[];\n pair: (pairRequest: Omit<AppleTvPairRequest, 'crmId'>) => Promise<OnlineApiDevice>;\n unpair: (id: string) => Promise<void>;\n rename: (renameRequest: AppleTvRenameRequest) => Promise<void>;\n}\n\nexport function useAppleTvClient(): AppleTvClientApi {\n const [ devices, setDevices ] = React.useState<Device[]>([]);\n const client = React.useRef<AppleTvClient>();\n const fetchAsync = Flight.useGetFetchAsync();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const customer = Flight.useBasicFetch<Customer>(\n currentUser.data?.isAuthenticated &&\n CustomerRequests.customer(currentUser.data.customerId)\n );\n\n React.useEffect(() => {\n if (!currentUser.data?.isAuthenticated) return;\n if (!customer.hasCompleted) return;\n\n client.current = new AppleTvClient({\n fetchAccessToken: () => fetchAsync(PlayerIntegrationsRequests.getAppleTvAccessToken()),\n userId: parseInt(currentUser.data?.id)\n });\n\n client.current?.on('deviceschange', () => {\n setDevices([...client.current?.getDevices()]);\n });\n\n return () => client.current?.dispose();\n }, [ currentUser.data?.isAuthenticated, customer.hasCompleted ]);\n\n function pair(pairRequest: Omit<AppleTvPairRequest, 'crmId'>) {\n return client.current?.pair({ ...pairRequest, crmId: parseInt(customer.data?.crmId) });\n }\n\n function unpair(id: string) {\n return client.current?.unpair(id);\n }\n\n function rename(renameRequest: AppleTvRenameRequest) {\n return client?.current.renameDevice(renameRequest);\n }\n\n return {\n devices,\n pair,\n unpair,\n rename\n };\n}","/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\nexport const throttle = function(fn: any, wait: any): any {\n let last = window.performance.now();\n\n const throttled = function(...args: any[]): any {\n const now = window.performance.now();\n\n if (now - last >= wait) {\n fn(...args);\n last = now;\n }\n };\n\n return throttled;\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [leading]\n * When true will also invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function that returns true if the wrapped function was executed immediately.\n */\nexport const debounce = function(\n func: any,\n wait: any,\n leading: any,\n context: any = window\n): (...args: any[]) => boolean {\n let timeout: any;\n\n const cancel = () => {\n context.clearTimeout(timeout);\n timeout = null;\n };\n\n /* eslint-disable consistent-this */\n const debounced = (...args: any[]) => {\n let executed = false;\n\n let later = function() {\n timeout = null;\n later = null;\n func.apply(this, args);\n };\n\n if (!timeout && leading) {\n func.apply(this, args);\n executed = true;\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(later, wait);\n\n return executed;\n };\n /* eslint-enable consistent-this */\n\n debounced.cancel = cancel;\n\n return debounced;\n};\n\n/**\n * A function that returns undefined.\n *\n * Inspired by lodash implementations.\n */\nexport const noop = function(): undefined {\n return undefined;\n};\n"],"names":["Actions","props","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","map","idx","key","label","appLink","href","onClick","svgName","svgSize","dropdownToggleSvgSize","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","customSize","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","id","size","showDivider","undefined","group","Tooltip","defaultProps","S","BreadcrumbItem","breadcrumb","name","active","withBackIcon","Breadcrumbs","breadcrumbs","isMobile","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","WindowedList","ref","containerHeight","availableHeight","setAvailableHeight","scrollTop","setScrollTop","tableRef","current","clientHeight","tablePosFromTop","numRows","items","totalRowsVisible","Math","ceil","rowHeight","totalHeight","startIndex","max","floor","endIndex","min","getBoundingClientRect","top","window","pageYOffset","minHeight","overflow","onScroll","currentTarget","autoHeightMin","autoHeightMax","paddingTop","staticComponentAboveRows","index","item","getComponent","getRows","staticComponentBelowRows","OnlineSupportArticle","LiteSupportArticle","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","random","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","modules","settingsModule","SettingsLayout","canAccess","replace","i","heading","headingButton","description","children","SettingsOrderedListItem","number","getPhrase","LanguageService","DeviceListItem","status","onUnpair","onRename","DeviceStatusIndicator","statusIndicatorColors","statusIndicatorLabels","color","PairDeviceView","deviceName","pin","onDeviceNameChange","onPinChange","onActivate","Text","phrase","SvgContainer2","ClickViewAvatar","htmlFor","value","onChange","target","autoComplete","placeholder","DivButton","ArticleHelper","src","ImageUrls","RenameDevicePopup","setName","trimmedName","trim","Popup","closePopup","autoFocus","PopupButtons","variant","text","UnpairDevicePopup","AppleTvSettingsView","devices","setDevices","client","fetchAsync","currentUser","UserRequests","customer","data","isAuthenticated","CustomerRequests","customerId","hasCompleted","fetchAccessToken","PlayerIntegrationsRequests","userId","parseInt","on","getDevices","dispose","pair","pairRequest","crmId","unpair","rename","renameRequest","renameDevice","useAppleTvClient","setDeviceName","setPin","deviceToRename","setDeviceToRename","deviceToUnpair","setDeviceToUnpair","setShowSpinner","alerts","PermissionName","newName","deviceId","success","console","error","onRenameDevice","onUnpairDevice","trimmedDeviceName","trimmedPin","device","throttle","fn","wait","last","performance","now","debounce","func","leading","timeout","context","debounced","args","executed","apply","this","clearTimeout","setTimeout","cancel"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9843],{69843:(e,t,a)=>{a.d(t,{c:()=>L});var n=a(32735),r=a(23481),i=a(81886),s=a(2948),o=a(49985),l=a(65858),c=a(26055),d=a(43820),u=a(86685),m=a(83345),p="userManager.ssoPasswordResetEmailNotAllowedError";function g(e){return n.createElement(u.W,null,n.createElement("p",{className:"mb-1 fw-semibold"},n.createElement(m.x,{namespace:p,phrase:"warning"})),e.helpArticle&&n.createElement("a",{href:e.helpArticle,target:"_blank",className:"info-link"},n.createElement(m.x,{namespace:p,phrase:"findMore"})))}var b=a(83657),v=a(38143),f=a(32045),h=a(12754),k=a(76881),w=a(42617);function y(e){return e&&e.groups?e.groups.map((function(e){return e.name})):[]}var E={isDev:function(e){return y(e).includes(w.j.Developer)},hasSubjectsAccess:function(e){return[w.j.Developer,w.j.Content,w.j.Curator,w.j.StreamableCurator].some((function(t){return y(e).includes(t)}))}},N=a(89961),C=a(35223),R=a(64818);function S(e){return function(e){if(Array.isArray(e))return O(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||T(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(e,t){if(e){if("string"==typeof e)return O(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?O(e,t):void 0}}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var A=r.T.encloseNamespace("userManager.userList");function L(e){var t=function(e){var t,a,r,u,m,p,b,w,y,O=n.useContext(c.A),L=function(t){return t===e.user.status},j=null===(t=e.user.metadata)||void 0===t?void 0:t.isEmailVerified,U=e.user.id==(null===(a=e.currentUser)||void 0===a?void 0:a.id),D=(w=(0,s.D)(v.g.BULK_REMOVE_USERS),y=2,function(e){if(Array.isArray(e))return e}(w)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(w,y)||T(w,y)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1];function I(t){o.k.logUserAction({id:e.user.id},o.k.mergeOptions({entity:l.py.User,workflowPhase:l.eu.Start,location:l.LZ[e.userType===k.Y.Learner?"StaffManagerListItem":"StudentManagerListItem"]},t))}var V=[];if(!e.isEditUserForm){var x=function(){return!(e.hasRostering||!L(f.w.Active)&&(!L(f.w.Inactive)||O!==d.a.Curator))};V.push({order:0,onClick:function(){var t;if(x()){I({actionType:l.Vw.Edit});var a=Object.assign(Object.assign({},e.appLinks.editUser),{args:[].concat(S(null!==(t=e.appLinks.editUser.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(a)}},svgName:C.vn.Edit,className:"btn btn-link svg-container ".concat(x()?"":"disabled"),tooltip:e.hasRostering?A("editControlledByRostering"):L(f.w.Disabled)?A("editUserDisabled"):L(f.w.Inactive)&&O!==d.a.Curator?A("editUserPending"):A("editUser"),button:!0})}return e.user.email&&L(f.w.Inactive)&&e.onClickResendActivationEmail&&V.push({order:5,disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",label:A("resendActivationEmail"),onClick:function(){I({actionType:l.Vw.SendEmail,descriptor:l.on.ActivateUser}),e.onClickResendActivationEmail(e.user)},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),e.user.email&&L(f.w.Active)&&!j&&V.push({order:5,label:A("sendVerificationEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",onClick:function(){I({actionType:l.Vw.SendEmail,descriptor:l.on.VerifyEmail}),e.onClickSendVerificationEmail(e.user)},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),U||(j&&L(f.w.Active)&&e.onClickSendResetEmail&&V.push({order:5,label:A("sendResetEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",onClick:function(){R.l.hasSso(e.user)?N.M.render(n.createElement(g,{helpArticle:e.ssoHelpArticle}),{title:A("sendResetEmail"),cancelButtonProps:{text:A("close"),variant:"dark"}}):(I({actionType:l.Vw.SendEmail,descriptor:l.on.ResetPasswordEmail}),e.onClickSendResetEmail(e.user))},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),L(f.w.Inactive)||V.push({order:10,label:A(L(f.w.Active)?"deactivate":"activate"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;I({actionType:l.Vw.Activate,descriptor:L(f.w.Active)?l.DL.Off:l.DL.On});var a=Object.assign(Object.assign({},e.appLinks.toggleStatus),{args:[].concat(S(null!==(t=e.appLinks.toggleStatus.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(a)}}),(O!==d.a.Primary||(null===(r=e.products)||void 0===r?void 0:r.includes(h.x.Online)))&&V.push({order:25,disabled:e.hasRostering,onClick:function(){L(f.w.Active)||(I({actionType:l.Vw.Delete,descriptor:l.yh.Single}),D({users:[e.user],totalUsers:1}),i.Q.C$.trigger(e.appLinks.deleteUser))},label:A("delete"),className:"btn btn-link text-danger ".concat(L(f.w.Active)||e.hasRostering?"cursor-default disabled":""),button:!1,tooltip:e.hasRostering?A("editControlledByRostering"):L(f.w.Active)?A("deleteDisabledTooltip"):null}),O!==d.a.Online&&!(null===(u=e.products)||void 0===u?void 0:u.includes(h.x.Online))&&V.push({order:25,disabled:e.hasRostering,onClick:function(){var t;if(!L(f.w.Active)){I({actionType:l.Vw.Remove,descriptor:l.yh.Single});var a=Object.assign(Object.assign({},e.appLinks.removeUser),{args:[].concat(S(null!==(t=e.appLinks.editUser.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(a)}},label:A("remove"),className:"btn btn-link text-danger ".concat(L(f.w.Active)||e.hasRostering?"cursor-default disabled":""),button:!1,tooltip:e.hasRostering?A("editControlledByRostering"):L(f.w.Active)?A("removeDisabledTooltip"):null})),O===d.a.Online&&e.userType===k.Y.Learner&&L(f.w.Active)&&V.push({order:15,label:A("viewWorkspace"),onClick:function(){return I({actionType:l.Vw.Click,descriptor:l._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{params:{username:e.user.username}}),className:e.hasRostering?"cursor-default disabled":"btn btn-link",button:!1}),O!==d.a.Primary||e.userType!==k.Y.Learner||L(f.w.Inactive)||V.push({order:15,label:A("viewStudentsVideos"),onClick:function(){return I({actionType:l.Vw.Click,descriptor:l._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{args:[e.user.id]}),className:"btn btn-link",button:!1}),L(f.w.Active)&&(e.userType===k.Y.Staff&&!j||e.userType===k.Y.Learner)&&V.push({order:20,disabled:e.hasRostering,label:A("changePassword"),className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;I({actionType:l.Vw.ChangePassword});var a=Object.assign(Object.assign({},e.appLinks.changePassword),{args:[].concat(S(null!==(t=e.appLinks.changePassword.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(a)}}),O===d.a.Curator&&E.isDev(e.currentUser)&&V.push.apply(V,[{order:2,label:A("manageCuratorGroups"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){I({actionType:l.Vw.ManageGroup}),i.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.manageUserCuratorGroups),{args:[e.user.id]}))}},{order:3,label:A("editUserOptions"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.editUserOptions),{args:[].concat(S(null!==(m=e.appLinks.editUserOptions.args)&&void 0!==m?m:[]),[e.user.id])})}]),O===d.a.Curator&&(null===(p=e.user.metadata)||void 0===p?void 0:p.isEmailVerified)&&!L(f.w.Inactive)&&V.push({order:5,label:A("unverifyEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;I({actionType:l.Vw.VerifyEmail,descriptor:l.hY.Remove}),i.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.deleteUserEmail),{args:[].concat(S(null!==(t=e.appLinks.deleteUserEmail.args)&&void 0!==t?t:[]),[e.user.id])}))}}),O===d.a.Curator&&e.isEditUserForm&&V.push({order:6,label:A("addToAnotherCustomer"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.addToAnotherCustomer),{args:[].concat(S(null!==(b=e.appLinks.addToAnotherCustomer.args)&&void 0!==b?b:[]),[e.user.id])})}),V}(e);return n.createElement(b.e,{actions:t,className:e.isEditUserForm?"mb-2":"pe-4",actionsDropdownClassName:e.isEditUserForm?"btn btn-outline-dark":"btn btn-link ms-1"})}},86685:(e,t,a)=>{a.d(t,{W:()=>o});var n=a(32735),r=a(83914),i=a(35223);const s={icon:"eCi4v"};function o(e){return n.createElement("div",{className:"alert alert-warning d-flex align-items-center px-2 mb-3"},n.createElement(r.x,{svgName:i.vn.WarningOutline,className:"svg-container me-2 ".concat(s.icon)}),n.createElement("div",null,e.children))}},26055:(e,t,a)=>{a.d(t,{A:()=>n});var n=a(32735).createContext(null)},83657:(e,t,a)=>{a.d(t,{e:()=>c});var n=a(32735),r=a(91967),i=a(10874),s=a(76177),o=a(42735),l=a(86509);function c(e){var t=n.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),a=[],c=[];t.forEach((function(e){e.button?a.push(e):c.push(e)}));var d="d-flex";return e.className&&(d+=" ".concat(e.className)),a.length||c.length?n.createElement("div",{className:d},a.length?a.map((function(t,a){return n.createElement(n.Fragment,{key:a},function(){if(t.label){var a=r.q.isFunction(t.label)?t.label:function(){return n.createElement(n.Fragment,null,t.label)};return n.createElement(o.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},a())}var l=n.createElement(i.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize});return t.tooltip?n.createElement(s.u,{title:t.tooltip,spanHack:!0},l):l}())})):n.createElement(n.Fragment,null),e.sortComponent&&e.sortComponent,c.length?n.createElement(l.m,{actions:c,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):n.createElement(n.Fragment,null)):n.createElement(n.Fragment,null)}},86509:(e,t,a)=>{a.d(t,{m:()=>h});var n=a(32735),r=a(23481),i=a(91967),s=a(81886),o=a(45157),l=a(49985),c=a(36848),d=a(83914),u=a(76177),m=a(35223);const p={dropdownToggle:"UCAnJ"};var g=r.T.encloseNamespace("shared.actions");function b(){return n.createElement(n.Fragment,null,n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function v(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function f(e){var t=i.q.isFunction(e.action.label)?e.action.label:function(){return n.createElement(n.Fragment,null,e.action.label)};if(e.action.appLink)return n.createElement(c.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:v(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&n.createElement(d.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t()));function a(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&l.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),i.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&s.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?n.createElement("a",{className:v(e.action.className),onClick:a,href:e.action.href},e.action.svgName&&n.createElement(d.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t())):n.createElement("span",{className:"cursor-pointer ".concat(v(e.action.className)),onClick:a,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&a(e)}},e.action.svgName&&n.createElement(d.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function h(e){if(!e.actions||!e.actions.length)return n.createElement(n.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),a="dropdown";e.className&&(a+=" ".concat(e.className));var r,i="actions-dropdown-".concat(o.Y.getRandomInt()),s="dropdown-toggle px-0 ".concat(p.dropdownToggle);return e.dropdownToggleClassName&&(s+=" ".concat(e.dropdownToggleClassName)),n.createElement("div",{className:a},n.createElement("button",{className:s,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":g("actionsDropdownLabel"),onClick:t?e.fetchMore:null},n.createElement(d.x,{svgName:m.vn.More,size:e.dropdownToggleSvgSize})),n.createElement("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i},t?n.createElement(b,null):e.actions.map((function(e,t){var a=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(u.u,{title:e.tooltip,spanHack:!0},n.createElement(f,{action:e}))):n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(f,{action:e}))}))))}h.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:d.S.Small}}}]);
|
|
2
|
-
//# sourceMappingURL=9843-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9843],{69843:(e,t,a)=>{a.d(t,{c:()=>L});var n=a(32735),r=a(23481),i=a(81886),s=a(2948),o=a(49985),l=a(65858),c=a(26055),d=a(43820),u=a(86685),m=a(83345),p="userManager.ssoPasswordResetEmailNotAllowedError";function g(e){return n.createElement(u.W,null,n.createElement("p",{className:"mb-1 fw-semibold"},n.createElement(m.x,{namespace:p,phrase:"warning"})),e.helpArticle&&n.createElement("a",{href:e.helpArticle,target:"_blank",className:"info-link"},n.createElement(m.x,{namespace:p,phrase:"findMore"})))}var b=a(83657),v=a(38143),f=a(32045),h=a(12754),k=a(76881),w=a(42617);function y(e){return e&&e.groups?e.groups.map((function(e){return e.name})):[]}var E={isDev:function(e){return y(e).includes(w.j.Developer)},hasSubjectsAccess:function(e){return[w.j.Developer,w.j.Content,w.j.Curator,w.j.StreamableCurator].some((function(t){return y(e).includes(t)}))}},N=a(89961),C=a(35223),R=a(64818);function S(e){return function(e){if(Array.isArray(e))return T(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||O(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e,t){if(e){if("string"==typeof e)return T(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?T(e,t):void 0}}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var A=r.T.encloseNamespace("userManager.userList");function L(e){var t=function(e){var t,a,r,u,m,p,b,w,y,T=n.useContext(c.A),L=function(t){return t===e.user.status},j=null===(t=e.user.metadata)||void 0===t?void 0:t.isEmailVerified,U=e.user.id==(null===(a=e.currentUser)||void 0===a?void 0:a.id),D=(w=(0,s.D)(v.g.BULK_REMOVE_USERS),y=2,function(e){if(Array.isArray(e))return e}(w)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,s,o=[],l=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(o.push(n.value),o.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=a.return&&(s=a.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(w,y)||O(w,y)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1];function I(t){o.k.logUserAction({id:e.user.id},o.k.mergeOptions({entity:l.py.User,workflowPhase:l.eu.Start,location:l.LZ[e.userType===k.Y.Learner?"StaffManagerListItem":"StudentManagerListItem"]},t))}var V=[];if(!e.isEditUserForm){var x=function(){return!(e.hasRostering||!L(f.w.Active)&&(!L(f.w.Inactive)||T!==d.a.Curator))};V.push({order:0,onClick:function(){var t;if(x()){I({actionType:l.Vw.Edit});var a=Object.assign(Object.assign({},e.appLinks.editUser),{args:[].concat(S(null!==(t=e.appLinks.editUser.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(a)}},svgName:C.vn.Edit,className:"btn btn-link svg-container ".concat(x()?"":"disabled"),tooltip:e.hasRostering?A("editControlledByRostering"):L(f.w.Disabled)?A("editUserDisabled"):L(f.w.Inactive)&&T!==d.a.Curator?A("editUserPending"):A("editUser"),button:!0})}return e.user.email&&L(f.w.Inactive)&&e.onClickResendActivationEmail&&V.push({order:5,disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",label:A("resendActivationEmail"),onClick:function(){I({actionType:l.Vw.SendEmail,descriptor:l.on.ActivateUser}),e.onClickResendActivationEmail(e.user)},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),e.user.email&&L(f.w.Active)&&!j&&V.push({order:5,label:A("sendVerificationEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",onClick:function(){I({actionType:l.Vw.SendEmail,descriptor:l.on.VerifyEmail}),e.onClickSendVerificationEmail(e.user)},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),U||(j&&L(f.w.Active)&&e.onClickSendResetEmail&&V.push({order:5,label:A("sendResetEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",onClick:function(){R.l.hasSso(e.user)?N.M.render(n.createElement(g,{helpArticle:e.ssoHelpArticle}),{title:A("sendResetEmail"),cancelButtonProps:{text:A("close"),variant:"dark"}}):(I({actionType:l.Vw.SendEmail,descriptor:l.on.ResetPasswordEmail}),e.onClickSendResetEmail(e.user))},className:e.hasRostering?"cursor-default disabled":"btn btn-link"}),L(f.w.Inactive)||V.push({order:10,label:A(L(f.w.Active)?"deactivate":"activate"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;I({actionType:l.Vw.Activate,descriptor:L(f.w.Active)?l.DL.Off:l.DL.On});var a=Object.assign(Object.assign({},e.appLinks.toggleStatus),{args:[].concat(S(null!==(t=e.appLinks.toggleStatus.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(a)}}),(T!==d.a.Primary||(null===(r=e.products)||void 0===r?void 0:r.includes(h.x.Online)))&&V.push({order:25,disabled:e.hasRostering,onClick:function(){L(f.w.Active)||(I({actionType:l.Vw.Delete,descriptor:l.yh.Single}),D({users:[e.user],totalUsers:1}),i.Q.C$.trigger(e.appLinks.deleteUser))},label:A("delete"),className:"btn btn-link text-danger ".concat(L(f.w.Active)||e.hasRostering?"cursor-default disabled":""),button:!1,tooltip:e.hasRostering?A("editControlledByRostering"):L(f.w.Active)?A("deleteDisabledTooltip"):null}),T!==d.a.Online&&!(null===(u=e.products)||void 0===u?void 0:u.includes(h.x.Online))&&V.push({order:25,disabled:e.hasRostering,onClick:function(){var t;if(!L(f.w.Active)){I({actionType:l.Vw.Remove,descriptor:l.yh.Single});var a=Object.assign(Object.assign({},e.appLinks.removeUser),{args:[].concat(S(null!==(t=e.appLinks.editUser.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(a)}},label:A("remove"),className:"btn btn-link text-danger ".concat(L(f.w.Active)||e.hasRostering?"cursor-default disabled":""),button:!1,tooltip:e.hasRostering?A("editControlledByRostering"):L(f.w.Active)?A("removeDisabledTooltip"):null})),T===d.a.Online&&e.userType===k.Y.Learner&&L(f.w.Active)&&V.push({order:15,label:A("viewWorkspace"),onClick:function(){return I({actionType:l.Vw.Click,descriptor:l._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{params:{username:e.user.username}}),className:e.hasRostering?"cursor-default disabled":"btn btn-link",button:!1}),T!==d.a.Primary||e.userType!==k.Y.Learner||L(f.w.Inactive)||V.push({order:15,label:A("viewStudentsVideos"),onClick:function(){return I({actionType:l.Vw.Click,descriptor:l._S.ViewStudentWorkspace})},appLink:Object.assign(Object.assign({},e.appLinks.viewStudentWorkspace),{args:[e.user.id]}),className:"btn btn-link",button:!1}),L(f.w.Active)&&(e.userType===k.Y.Staff&&!j||e.userType===k.Y.Learner)&&V.push({order:20,disabled:e.hasRostering,label:A("changePassword"),className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;I({actionType:l.Vw.ChangePassword});var a=Object.assign(Object.assign({},e.appLinks.changePassword),{args:[].concat(S(null!==(t=e.appLinks.changePassword.args)&&void 0!==t?t:[]),[e.user.id])});i.Q.C$.trigger(a)}}),T===d.a.Curator&&E.isDev(e.currentUser)&&V.push.apply(V,[{order:2,label:A("manageCuratorGroups"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){I({actionType:l.Vw.ManageGroup}),i.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.manageUserCuratorGroups),{args:[e.user.id]}))}},{order:3,label:A("editUserOptions"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.editUserOptions),{args:[].concat(S(null!==(m=e.appLinks.editUserOptions.args)&&void 0!==m?m:[]),[e.user.id])})}]),T===d.a.Curator&&(null===(p=e.user.metadata)||void 0===p?void 0:p.isEmailVerified)&&!L(f.w.Inactive)&&V.push({order:5,label:A("unverifyEmail"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",onClick:function(){var t;I({actionType:l.Vw.VerifyEmail,descriptor:l.hY.Remove}),i.Q.C$.trigger(Object.assign(Object.assign({},e.appLinks.deleteUserEmail),{args:[].concat(S(null!==(t=e.appLinks.deleteUserEmail.args)&&void 0!==t?t:[]),[e.user.id])}))}}),T===d.a.Curator&&e.isEditUserForm&&V.push({order:6,label:A("addToAnotherCustomer"),disabled:e.hasRostering,tooltip:e.hasRostering?A("editControlledByRostering"):"",className:e.hasRostering?"cursor-default disabled":"",appLink:Object.assign(Object.assign({},e.appLinks.addToAnotherCustomer),{args:[].concat(S(null!==(b=e.appLinks.addToAnotherCustomer.args)&&void 0!==b?b:[]),[e.user.id])})}),V}(e);return n.createElement(b.e,{actions:t,className:e.isEditUserForm?"mb-2":"pe-4",actionsDropdownClassName:e.isEditUserForm?"btn btn-outline-dark":"btn btn-link ms-1"})}},86685:(e,t,a)=>{a.d(t,{W:()=>o});var n=a(32735),r=a(83914),i=a(35223);const s={icon:"eCi4v"};function o(e){return n.createElement("div",{className:"alert alert-warning d-flex align-items-center px-2 mb-3"},n.createElement(r.x,{svgName:i.vn.WarningOutline,className:"svg-container me-2 ".concat(s.icon)}),n.createElement("div",null,e.children))}},26055:(e,t,a)=>{a.d(t,{A:()=>n});var n=a(32735).createContext(null)},83657:(e,t,a)=>{a.d(t,{e:()=>c});var n=a(32735),r=a(91967),i=a(10874),s=a(76177),o=a(42735),l=a(86509);function c(e){var t=n.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),a=[],c=[];t.forEach((function(e){e.button?a.push(e):c.push(e)}));var d="d-flex";return e.className&&(d+=" ".concat(e.className)),a.length||c.length?n.createElement("div",{className:d},a.length?a.map((function(t,a){return n.createElement(n.Fragment,{key:a},function(){if(t.label){var a=r.q.isFunction(t.label)?t.label:function(){return n.createElement(n.Fragment,null,t.label)};return n.createElement(o.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},a())}var l=n.createElement(i.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize});return t.tooltip?n.createElement(s.u,{title:t.tooltip,spanHack:!0},l):l}())})):n.createElement(n.Fragment,null),e.sortComponent&&e.sortComponent,c.length?n.createElement(l.m,{actions:c,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):n.createElement(n.Fragment,null)):n.createElement(n.Fragment,null)}},86509:(e,t,a)=>{a.d(t,{m:()=>v});var n=a(32735),r=a(91967),i=a(81886),s=a(45157),o=a(49985),l=a(36848),c=a(83914),d=a(76177),u=a(35223);const m={dropdownToggle:"UCAnJ"};function p(){return n.createElement(n.Fragment,null,n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function g(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function b(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return n.createElement(n.Fragment,null,e.action.label)};if(e.action.appLink)return n.createElement(l.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:g(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&n.createElement(c.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t()));function a(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&o.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&i.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?n.createElement("a",{className:g(e.action.className),onClick:a,href:e.action.href},e.action.svgName&&n.createElement(c.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t())):n.createElement("span",{className:"cursor-pointer ".concat(g(e.action.className)),onClick:a,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&a(e)}},e.action.svgName&&n.createElement(c.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function v(e){if(!e.actions||!e.actions.length)return n.createElement(n.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),a="dropdown";e.className&&(a+=" ".concat(e.className));var r,i="actions-dropdown-".concat(s.Y.getRandomInt()),o="dropdown-toggle px-0 ".concat(m.dropdownToggle);return e.dropdownToggleClassName&&(o+=" ".concat(e.dropdownToggleClassName)),n.createElement("div",{className:a},n.createElement("button",{className:o,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:t?e.fetchMore:null},n.createElement(c.x,{svgName:u.vn.More,size:e.dropdownToggleSvgSize})),n.createElement("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i},t?n.createElement(p,null):e.actions.map((function(e,t){var a=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(d.u,{title:e.tooltip,spanHack:!0},n.createElement(b,{action:e}))):n.createElement("li",{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(b,{action:e}))}))))}v.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:c.S.Small}}}]);
|
|
2
|
+
//# sourceMappingURL=9843-b82415b68c-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/9843-b82415b68c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/errors/sso-password-reset-email-not-allowed/SsoPasswordResetEmailNotAllowedError.tsx","file:///app/packages/libs/shared/src/utils/CuratorPermissionsHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list-items/components/UserItemActions.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/warning-alert/warning-alert.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/warning-alert/WarningAlert.tsx","file:///app/packages/libs/shared/src/apps/user-manager/context/UserManagerClientContext.ts","file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx"],"sourcesContent":["import React from 'react';\n\nimport { WarningAlert } from 'libs/shared/apps/user-manager/components/warning-alert/WarningAlert';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.ssoPasswordResetEmailNotAllowedError';\n\ninterface SsoPasswordResetEmailNotAllowedErrorProps {\n helpArticle: string;\n}\n\nexport function SsoPasswordResetEmailNotAllowedError(props: SsoPasswordResetEmailNotAllowedErrorProps): JSX.Element {\n return (\n <WarningAlert>\n <p className='mb-1 fw-semibold'>\n <Text namespace={namespace} phrase='warning' />\n </p>\n {props.helpArticle && (\n <a href={props.helpArticle} target='_blank' className='info-link'>\n <Text namespace={namespace} phrase='findMore' />\n </a>\n )}\n </WarningAlert>\n );\n}","import { CuratorGroup } from 'libs/shared/enums/CuratorGroup';\nimport { CuratorUser } from 'libs/shared/interfaces';\n\nfunction getGroupNames(user: CuratorUser): string[] {\n return (user && user.groups) ? user.groups.map(g => g.name) : [];\n}\n \nexport const CuratorPermissionsHelper = {\n isDev(user: CuratorUser): boolean {\n return getGroupNames(user).includes(CuratorGroup.Developer);\n },\n\n hasSubjectsAccess(user: CuratorUser): boolean {\n const allowedGroups = [\n CuratorGroup.Developer,\n CuratorGroup.Content,\n CuratorGroup.Curator,\n CuratorGroup.StreamableCurator\n ];\n\n return allowedGroups.some(group => getGroupNames(user).includes(group));\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, ClickDescriptor, EmailDescriptor, EntityType, LocationContext, OperationDescriptor, ToggleDescriptor, UserAction, VerifyEmailDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { SsoPasswordResetEmailNotAllowedError } from 'libs/shared/apps/user-manager/errors/sso-password-reset-email-not-allowed/SsoPasswordResetEmailNotAllowedError';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkRemoveUsersViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkRemoveUsersViewModel';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { CuratorUser, CurrentUser, User } from 'libs/shared/interfaces';\nimport { CuratorPermissionsHelper } from 'libs/shared/utils/CuratorPermissionsHelper';\nimport { DialogHelper } from 'libs/shared/utils/DialogHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst getPhrase = LanguageService.encloseNamespace('userManager.userList');\n\nfunction useGetActions(props: UserItemActionsProps): ActionOptions[] {\n const client = React.useContext(UserManagerClientContext);\n\n const hasStatus = (status: ObjectStatus) => status === props.user.status;\n\n const hasVerifiedEmail = props.user.metadata?.isEmailVerified;\n\n // eslint-disable-next-line\n const isCurrentUser = props.user.id == props.currentUser?.id;\n\n const [ , setBulkRemoveUsers ] = useViewModel<BulkRemoveUsersViewModel>(SharedViewModelKeys.BULK_REMOVE_USERS);\n\n function logAnalytics(actionOptions: AnalyticsOptions): void {\n AnalyticsHelper.logUserAction({ id: props.user.id }, AnalyticsHelper.mergeOptions({\n entity: EntityType.User,\n workflowPhase: WorkflowPhase.Start,\n location: LocationContext[props.userType === UserGroup.Learner ? 'StaffManagerListItem' : 'StudentManagerListItem']\n }, actionOptions));\n }\n\n const actions: ActionOptions[] = [];\n \n if (!props.isEditUserForm) {\n function getTooltip(): string {\n if (props.hasRostering)\n return getPhrase('editControlledByRostering');\n\n if (hasStatus(ObjectStatus.Disabled))\n return getPhrase('editUserDisabled');\n\n if (hasStatus(ObjectStatus.Inactive) && client !== UserManagerClient.Curator)\n return getPhrase('editUserPending');\n\n return getPhrase('editUser');\n }\n\n function canEdit(): boolean {\n if (props.hasRostering)\n return false;\n\n if (hasStatus(ObjectStatus.Active))\n return true;\n\n if (hasStatus(ObjectStatus.Inactive) && client === UserManagerClient.Curator)\n return true;\n\n return false;\n }\n\n actions.push({\n order: 0,\n onClick: () => {\n if (!canEdit())\n return;\n \n logAnalytics({ actionType: UserAction.Edit });\n \n const appLink = {\n ...props.appLinks.editUser,\n args: [ ...(props.appLinks.editUser.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n },\n svgName: cvSvgLibrary.Edit,\n className: `btn btn-link svg-container ${!canEdit() ? 'disabled' : ''}`,\n tooltip: getTooltip(),\n button: true\n });\n }\n\n if (props.user.email && hasStatus(ObjectStatus.Inactive) && props.onClickResendActivationEmail) {\n actions.push({\n order: 5,\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n label: getPhrase('resendActivationEmail'),\n onClick: () => {\n logAnalytics({\n actionType: UserAction.SendEmail,\n descriptor: EmailDescriptor.ActivateUser\n });\n props.onClickResendActivationEmail(props.user);\n },\n className: props.hasRostering ? 'cursor-default disabled' : 'btn btn-link'\n });\n }\n\n if (\n props.user.email &&\n hasStatus(ObjectStatus.Active) &&\n !hasVerifiedEmail\n ) {\n actions.push({\n order: 5,\n label: getPhrase('sendVerificationEmail'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n onClick: () => {\n logAnalytics({\n actionType: UserAction.SendEmail,\n descriptor: EmailDescriptor.VerifyEmail\n });\n props.onClickSendVerificationEmail(props.user);\n },\n className: props.hasRostering ? 'cursor-default disabled' : 'btn btn-link'\n });\n }\n\n if (!isCurrentUser) {\n if (hasVerifiedEmail && hasStatus(ObjectStatus.Active) && props.onClickSendResetEmail) {\n actions.push({\n order: 5,\n label: getPhrase('sendResetEmail'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n onClick: () => {\n if (UserHelper.hasSso(props.user)) {\n DialogHelper.render(\n <SsoPasswordResetEmailNotAllowedError helpArticle={props.ssoHelpArticle} />,\n {\n title: getPhrase('sendResetEmail'),\n cancelButtonProps: {\n text: getPhrase('close'),\n variant: 'dark'\n }\n }\n );\n return;\n }\n\n logAnalytics({\n actionType: UserAction.SendEmail,\n descriptor: EmailDescriptor.ResetPasswordEmail\n });\n props.onClickSendResetEmail(props.user);\n },\n className: props.hasRostering ? 'cursor-default disabled' : 'btn btn-link'\n });\n }\n\n if (!hasStatus(ObjectStatus.Inactive)) {\n actions.push({\n order: 10,\n label: getPhrase(hasStatus(ObjectStatus.Active) ? 'deactivate' : 'activate'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({\n actionType: UserAction.Activate,\n descriptor: hasStatus(ObjectStatus.Active) ? ToggleDescriptor.Off : ToggleDescriptor.On\n });\n \n const appLink = {\n ...props.appLinks.toggleStatus,\n args: [ ...(props.appLinks.toggleStatus.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n }\n });\n }\n\n const showDelete = client !== UserManagerClient.Primary || props.products?.includes(ProductId.Online);\n if (showDelete) {\n actions.push({\n order: 25,\n disabled: props.hasRostering,\n onClick: () => {\n if (hasStatus(ObjectStatus.Active))\n return;\n \n logAnalytics({ actionType: UserAction.Delete, descriptor: OperationDescriptor.Single });\n \n setBulkRemoveUsers({ users: [props.user], totalUsers: 1 });\n \n Core.AppLinkHelper.trigger(props.appLinks.deleteUser);\n },\n label: getPhrase('delete'),\n className: `btn btn-link text-danger ${hasStatus(ObjectStatus.Active) || props.hasRostering ? 'cursor-default disabled' : ''}`,\n button: false,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : hasStatus(ObjectStatus.Active) ? getPhrase('deleteDisabledTooltip') : null\n });\n }\n\n const showRemove = client !== UserManagerClient.Online && !props.products?.includes(ProductId.Online);\n if (showRemove) {\n actions.push({\n order: 25,\n disabled: props.hasRostering,\n onClick: () => {\n if (hasStatus(ObjectStatus.Active))\n return;\n \n logAnalytics({ actionType: UserAction.Remove, descriptor: OperationDescriptor.Single });\n \n const appLink = {\n ...props.appLinks.removeUser,\n args: [ ...(props.appLinks.editUser.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n },\n label: getPhrase('remove'),\n className: `btn btn-link text-danger ${hasStatus(ObjectStatus.Active) || props.hasRostering ? 'cursor-default disabled' : ''}`,\n button: false,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : hasStatus(ObjectStatus.Active) ? getPhrase('removeDisabledTooltip') : null\n });\n }\n }\n\n if (client === UserManagerClient.Online && props.userType === UserGroup.Learner && hasStatus(ObjectStatus.Active)) {\n actions.push({\n order: 15,\n label: getPhrase('viewWorkspace'),\n onClick: () => logAnalytics({ actionType: UserAction.Click, descriptor: ClickDescriptor.ViewStudentWorkspace }),\n appLink: {\n ...props.appLinks.viewStudentWorkspace,\n params: { username: props.user.username }\n },\n className: props.hasRostering ? 'cursor-default disabled' : 'btn btn-link',\n button: false\n });\n }\n\n if (\n client === UserManagerClient.Primary &&\n props.userType === UserGroup.Learner &&\n !hasStatus(ObjectStatus.Inactive)\n ) {\n actions.push({\n order: 15,\n label: getPhrase('viewStudentsVideos'),\n onClick: () => logAnalytics({ actionType: UserAction.Click, descriptor: ClickDescriptor.ViewStudentWorkspace }),\n appLink: {\n ...props.appLinks.viewStudentWorkspace,\n args: [props.user.id]\n },\n className: 'btn btn-link',\n button: false\n });\n }\n\n if (\n hasStatus(ObjectStatus.Active) &&\n (\n (props.userType === UserGroup.Staff && !hasVerifiedEmail) ||\n props.userType === UserGroup.Learner\n )\n ) {\n actions.push({\n order: 20,\n disabled: props.hasRostering,\n label: getPhrase('changePassword'),\n className: props.hasRostering ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({ actionType: UserAction.ChangePassword });\n\n const appLink = {\n ...props.appLinks.changePassword,\n args: [ ...(props.appLinks.changePassword.args ?? []), props.user.id ]\n };\n \n Core.AppLinkHelper.trigger(appLink);\n }\n });\n }\n\n if (client === UserManagerClient.Curator\n && CuratorPermissionsHelper.isDev(props.currentUser as unknown as CuratorUser)) {\n actions.push(...[\n {\n order: 2,\n label: getPhrase('manageCuratorGroups'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({ actionType: UserAction.ManageGroup });\n\n Core.AppLinkHelper.trigger({\n ...props.appLinks.manageUserCuratorGroups,\n args: [props.user.id]\n });\n }\n },\n {\n order: 3,\n label: getPhrase('editUserOptions'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n appLink: {\n ...props.appLinks.editUserOptions,\n args: [ ...(props.appLinks.editUserOptions.args ?? []), props.user.id ]\n }\n }\n ]);\n }\n\n if (\n client === UserManagerClient.Curator &&\n props.user.metadata?.isEmailVerified &&\n !hasStatus(ObjectStatus.Inactive)\n ) {\n actions.push({\n order: 5,\n label: getPhrase('unverifyEmail'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n onClick: () => {\n logAnalytics({ actionType: UserAction.VerifyEmail, descriptor: VerifyEmailDescriptor.Remove });\n\n Core.AppLinkHelper.trigger({\n ...props.appLinks.deleteUserEmail,\n args: [ ...(props.appLinks.deleteUserEmail.args ?? []), props.user.id ]\n });\n }\n });\n }\n\n if (client === UserManagerClient.Curator && props.isEditUserForm) {\n actions.push({\n order: 6,\n label: getPhrase('addToAnotherCustomer'),\n disabled: props.hasRostering,\n tooltip: props.hasRostering ? getPhrase('editControlledByRostering') : '',\n className: props.hasRostering ? 'cursor-default disabled' : '',\n appLink: {\n ...props.appLinks.addToAnotherCustomer,\n args: [ ...(props.appLinks.addToAnotherCustomer.args ?? []), props.user.id ]\n }\n });\n }\n\n return actions;\n}\n\ninterface UserItemActionsProps {\n user: User;\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n currentUser: CurrentUser;\n products?: ProductId[];\n onClickResendActivationEmail?: (user: User) => void;\n onClickSendResetEmail?: (user: User) => void;\n onClickSendVerificationEmail?: (user: User) => void;\n isEditUserForm?: boolean;\n ssoHelpArticle?: string;\n hasRostering?: boolean;\n}\n\nexport function UserItemActions(props: UserItemActionsProps): JSX.Element {\n const actions = useGetActions(props);\n\n return (\n <Actions\n actions={actions}\n className={props.isEditUserForm ? 'mb-2' : 'pe-4'}\n actionsDropdownClassName={props.isEditUserForm ? 'btn btn-outline-dark' : 'btn btn-link ms-1'}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"eCi4v\"};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './warning-alert.scss';\n\ntype WarningAlertProps = React.PropsWithChildren<HashObject>;\n\nexport function WarningAlert(props: WarningAlertProps): JSX.Element {\n return (\n <div className='alert alert-warning d-flex align-items-center px-2 mb-3'>\n <SvgContainer\n svgName={cvSvgLibrary.WarningOutline}\n className={`svg-container me-2 ${styles.icon}`}\n />\n <div>\n {props.children}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\n\nexport const UserManagerClientContext = React.createContext<UserManagerClient>(null);","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}"],"names":["namespace","SsoPasswordResetEmailNotAllowedError","props","WarningAlert","W","className","Text","phrase","helpArticle","href","target","getGroupNames","user","groups","map","g","name","CuratorPermissionsHelper","isDev","includes","CuratorGroup","hasSubjectsAccess","Curator","some","group","getPhrase","LanguageService","UserItemActions","actions","client","UserManagerClientContext","hasStatus","status","hasVerifiedEmail","metadata","isEmailVerified","isCurrentUser","id","currentUser","setBulkRemoveUsers","SharedViewModelKeys","logAnalytics","actionOptions","AnalyticsHelper","entity","workflowPhase","location","userType","UserGroup","isEditUserForm","canEdit","hasRostering","ObjectStatus","UserManagerClient","push","order","onClick","actionType","appLink","appLinks","editUser","args","svgName","tooltip","button","email","onClickResendActivationEmail","disabled","label","descriptor","onClickSendVerificationEmail","onClickSendResetEmail","UserHelper","DialogHelper","ssoHelpArticle","title","cancelButtonProps","text","variant","toggleStatus","products","ProductId","users","totalUsers","deleteUser","removeUser","viewStudentWorkspace","params","username","changePassword","manageUserCuratorGroups","editUserOptions","deleteUserEmail","addToAnotherCustomer","useGetActions","Actions","actionsDropdownClassName","SvgContainer","children","orderedActions","sort","a","b","buttonActions","moreActions","forEach","length","idx","key","svgSize","dropdownToggleSvgSize","showSpinner","analyticsData","analyticsOptions","openInNewTab","iconButton","showBorder","customSize","spanHack","sortComponent","dropdownToggleClassName","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","e","preventDefault","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","size","showDivider","undefined","Tooltip","defaultProps","S"],"sourceRoot":""}
|