@coorpacademy/components 11.36.10-alpha.1 → 11.36.10-alpha.11
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/es/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
- package/es/molecule/learning-profile-radar-chart/index.js +1 -2
- package/es/molecule/learning-profile-radar-chart/index.js.map +1 -1
- package/es/organism/header-with-actions/index.d.ts +15 -73
- package/es/organism/header-with-actions/index.d.ts.map +1 -1
- package/es/organism/header-with-actions/index.js +77 -5
- package/es/organism/header-with-actions/index.js.map +1 -1
- package/es/organism/header-with-actions/types.d.ts +38 -81
- package/es/organism/header-with-actions/types.d.ts.map +1 -1
- package/es/organism/header-with-actions/types.js +25 -12
- package/es/organism/header-with-actions/types.js.map +1 -1
- package/es/organism/mooc-header/index.d.ts.map +1 -1
- package/es/organism/mooc-header/index.js +1 -2
- package/es/organism/mooc-header/index.js.map +1 -1
- package/es/organism/skill-edition/index.d.ts.map +1 -1
- package/es/organism/skill-edition/index.js +0 -1
- package/es/organism/skill-edition/index.js.map +1 -1
- package/es/template/back-office/brand-update/index.d.ts +15 -73
- package/es/template/back-office/brand-update/index.d.ts.map +1 -1
- package/es/template/back-office/brand-update/index.js +4 -6
- package/es/template/back-office/brand-update/index.js.map +1 -1
- package/es/template/back-office/brand-update/style.css +4 -4
- package/es/template/back-office/brand-update/utils.d.ts +38 -10
- package/es/template/back-office/brand-update/utils.js +19 -0
- package/es/template/back-office/brand-update/utils.js.map +1 -1
- package/es/util/check-is-mobile.d.ts +1 -1
- package/es/util/check-is-mobile.d.ts.map +1 -1
- package/es/util/check-is-mobile.js +1 -2
- package/es/util/check-is-mobile.js.map +1 -1
- package/lib/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
- package/lib/molecule/learning-profile-radar-chart/index.js +1 -2
- package/lib/molecule/learning-profile-radar-chart/index.js.map +1 -1
- package/lib/organism/header-with-actions/index.d.ts +15 -73
- package/lib/organism/header-with-actions/index.d.ts.map +1 -1
- package/lib/organism/header-with-actions/index.js +75 -3
- package/lib/organism/header-with-actions/index.js.map +1 -1
- package/lib/organism/header-with-actions/types.d.ts +38 -81
- package/lib/organism/header-with-actions/types.d.ts.map +1 -1
- package/lib/organism/header-with-actions/types.js +25 -12
- package/lib/organism/header-with-actions/types.js.map +1 -1
- package/lib/organism/mooc-header/index.d.ts.map +1 -1
- package/lib/organism/mooc-header/index.js +1 -2
- package/lib/organism/mooc-header/index.js.map +1 -1
- package/lib/organism/skill-edition/index.d.ts.map +1 -1
- package/lib/organism/skill-edition/index.js +0 -1
- package/lib/organism/skill-edition/index.js.map +1 -1
- package/lib/template/back-office/brand-update/index.d.ts +15 -73
- package/lib/template/back-office/brand-update/index.d.ts.map +1 -1
- package/lib/template/back-office/brand-update/index.js +4 -6
- package/lib/template/back-office/brand-update/index.js.map +1 -1
- package/lib/template/back-office/brand-update/style.css +4 -4
- package/lib/template/back-office/brand-update/utils.d.ts +38 -10
- package/lib/template/back-office/brand-update/utils.js +19 -0
- package/lib/template/back-office/brand-update/utils.js.map +1 -1
- package/lib/util/check-is-mobile.d.ts +1 -1
- package/lib/util/check-is-mobile.d.ts.map +1 -1
- package/lib/util/check-is-mobile.js +1 -2
- package/lib/util/check-is-mobile.js.map +1 -1
- package/locales/.mtslconfig.json +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/learning-profile-radar-chart/index.tsx"],"names":[],"mappings":";AAiCA,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAGL,gBAAgB,EAChB,kCAAkC,EAGnC,MAAM,SAAS,CAAC;AAoUjB,eAAO,MAAM,UAAU,EAAE,CACvB,MAAM,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,EAC/B,KAAK,EAAE,kCAAkC,CAAC,MAAM,CAAC,KAC9C,gBAAgB,EAOX,CAAC;AAEX,eAAO,MAAM,yBAAyB;0GAWjC,kCAAkC,iBACtB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/learning-profile-radar-chart/index.tsx"],"names":[],"mappings":";AAiCA,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAGL,gBAAgB,EAChB,kCAAkC,EAGnC,MAAM,SAAS,CAAC;AAoUjB,eAAO,MAAM,UAAU,EAAE,CACvB,MAAM,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,EAC/B,KAAK,EAAE,kCAAkC,CAAC,MAAM,CAAC,KAC9C,gBAAgB,EAOX,CAAC;AAEX,eAAO,MAAM,yBAAyB;0GAWjC,kCAAkC,iBACtB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoJhC,CAAC;AAEF,QAAA,MAAM,mCAAmC;YAAW,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;CAIrF,CAAC;AAUF,eAAe,mCAAmC,CAAC"}
|
|
@@ -347,8 +347,7 @@ export const LearningProfileRadarChart = ({
|
|
|
347
347
|
type: `stroke-${index}`,
|
|
348
348
|
colors: stroke
|
|
349
349
|
}))), [formatedColors]);
|
|
350
|
-
const
|
|
351
|
-
const isMobile_ = useMemo(() => getIsMobile(userAgent), [userAgent]);
|
|
350
|
+
const isMobile_ = getIsMobile();
|
|
352
351
|
const setIsMobile_ = useCallback(() => {
|
|
353
352
|
setIsMobile(isMobile_);
|
|
354
353
|
}, [isMobile_]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","Fragment","useCallback","useEffect","useMemo","useState","Radar","RadarChart","PolarGrid","PolarAngleAxis","ResponsiveContainer","Tooltip","PolarRadiusAxis","convert","classnames","isMobile","getIsMobile","ButtonLink","Provider","GetSkinFromContext","GetTranslateFromContext","learningProfileRadarChartPropTypes","style","top","offset","x","y","alignment","margin","bottom","right","marginRight","left","marginLeft","BLACK","WHITE","DEFAULT_MAIN_COLOR","DEFAULT_COLORS","gradient","fill","stroke","percentage","color","background","label","CHART_CONFIGS","triangle","name","ticks","sideCount","quadrilateral","pentagon","hexagon","DOT_DEFAULT_PROPS","strokeWidth","strokeOpacity","r","pointerEvents","cursor","DOT_ACTIVE_PROPS","RADAR_DEFAULT_PROPS","fillOpacity","Gradient","type","colors","firstColor","secondColor","createElement","id","x1","y1","x2","y2","stopColor","CustomTooltip","active","payload","length","className","tooltip","tooltipLabel","tooltipValue","value","CustomDot","cx","cy","onDotHover","onDotClick","activeDot","dataName","_extends","subject","onTouchStart","onClick","e","stopPropagation","onMouseOver","onMouseLeave","buildRadars","totalDataset","handleDotHover","handleOnDotClick","_times","index","datakey","dataset","key","dataKey","dot","CustomLabel","percentagesValues","chartType","formatedColors","primarySkinColor","exploreLocale","hoveredDot","onExploreClick","hovered","setHovered","isCurrentDotActive","offsetX","offsetY","rest","onLabelClick","handleExploreClick","buttonExploreProps","customStyle","height","backgroundColor","transition","icon","position","faIcon","size","handleMouseOver","handleMouseLeave","extraOffsetY","tickeForeignObject","tickeForeignObjectFocus","tickWrapper","tickWrapperFocus","tickWrapperHover","alignItems","textAlign","opacity","_isEmpty","map","colorLabel","i","tickValue","tickLabel","buttonWrapper","CHART_CONFIGS_BY_SIDE_COUNT","_pipe","_keyBy","_mapValues","formatValues","values_","_flatten","val","_fromPairs","formatData","legend","data_","_toPairs","_map","ref","LearningProfileRadarChart","data","colorsProps","width","legacyContext","setIsMobile","setActiveDot","setHoveredDot","skin","translate","_get","Object","assign","_getOr","_size","gradients","userAgent","navigator","isMobile_","setIsMobile_","handleClick","undefined","window","addEventListener","removeEventListener","handleOnActiveDotClick","formatedData","find","indexOf","skillRef","_findKey","renderCustomLabel","props","currentData","_omit","_values","outerRadius","strokeDasharray","radialLines","tick","axisLine","domain","content","ResponsiveLearningProfileRadarChart","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV"],"sources":["../../../src/molecule/learning-profile-radar-chart/index.tsx"],"sourcesContent":["import React, {Fragment, useCallback, useEffect, useMemo, useState} from 'react';\nimport {\n Radar,\n RadarChart,\n PolarGrid,\n PolarAngleAxis,\n ResponsiveContainer,\n Tooltip,\n PolarRadiusAxis\n} from 'recharts';\nimport {\n pipe,\n keyBy,\n mapValues,\n size,\n getOr,\n map,\n toPairs,\n values,\n isEmpty,\n omit,\n fromPairs,\n times,\n flatten,\n findKey,\n get\n} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {isMobile as getIsMobile} from '../../util/check-is-mobile';\nimport ButtonLink from '../../atom/button-link';\nimport {ButtonLinkProps} from '../../atom/button-link/types';\nimport Provider, {GetSkinFromContext, GetTranslateFromContext} from '../../atom/provider';\nimport {WebContextValues} from '../../atom/provider/web-context';\nimport {\n ActiveDotType,\n FormatedColorsType,\n FormatedDataType,\n LearningProfileRadarChartPropTypes,\n TickType,\n learningProfileRadarChartPropTypes\n} from './types';\nimport style from './style.css';\n\ntype CHART_TYPE_TYPE = keyof typeof CHART_CONFIGS;\n\n/* TICK_POSITIONS */\nconst top: TickType = {offset: {x: -100, y: -75}, alignment: 'center', margin: 'auto'};\nconst bottom: TickType = {offset: {x: -100, y: 10}, alignment: 'center', margin: 'auto'};\nconst right: TickType = {offset: {x: 30, y: -10}, alignment: 'start', marginRight: 'auto'};\nconst left: TickType = {offset: {x: -230, y: -10}, alignment: 'end', marginLeft: 'auto'};\n\n/* CONSTANTS */\nconst BLACK = '#000000ff';\nconst WHITE = '#ffffffff';\nconst DEFAULT_MAIN_COLOR = '#0062ffff';\n\nconst DEFAULT_COLORS: FormatedColorsType = {\n gradient: {\n fill: [DEFAULT_MAIN_COLOR, DEFAULT_MAIN_COLOR],\n stroke: [DEFAULT_MAIN_COLOR, DEFAULT_MAIN_COLOR]\n },\n percentage: {\n color: BLACK,\n background: WHITE\n },\n label: {\n color: BLACK\n }\n};\n\nconst CHART_CONFIGS = {\n triangle: {\n name: 'triangle',\n ticks: [top, right, left],\n sideCount: 3\n },\n quadrilateral: {\n name: 'quadrilateral',\n ticks: [top, right, bottom, left],\n sideCount: 4\n },\n pentagon: {\n name: 'pentagon',\n ticks: [top, right, right, left, left],\n sideCount: 5\n },\n hexagon: {\n name: 'hexagon',\n ticks: [top, right, right, bottom, left, left],\n sideCount: 6\n }\n} as const;\n\nconst DOT_DEFAULT_PROPS = {\n strokeWidth: 2,\n strokeOpacity: 0.4,\n fill: '#fff',\n r: 4,\n pointerEvents: 'all',\n style: {cursor: 'pointer'}\n} as const;\n\nconst DOT_ACTIVE_PROPS = {\n fill: '#fff',\n r: 6,\n strokeWidth: 4,\n strokeOpacity: 0.6\n} as const;\n\nconst RADAR_DEFAULT_PROPS = {\n strokeWidth: 3,\n strokeOpacity: 0.2,\n fillOpacity: 0.2\n} as const;\n\n/* COMPONENTS */\nconst Gradient = ({type, colors: [firstColor, secondColor]}: {type: string; colors: string[]}) => (\n <defs>\n <linearGradient id={`gradient-${type}`} x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={firstColor} />\n <stop offset=\"100%\" stopColor={secondColor} />\n </linearGradient>\n </defs>\n);\n\nconst CustomTooltip = ({\n active,\n payload,\n label\n}: {\n active?: boolean;\n payload?: {value: number}[];\n label?: string;\n}) =>\n active && !!payload?.length ? (\n <div className={style.tooltip}>\n <span className={style.tooltipLabel}>{label}</span>\n <span className={style.tooltipValue}>{payload[0].value}%</span>\n </div>\n ) : null;\n\nconst CustomDot = ({\n cx,\n cy,\n payload,\n onDotHover,\n onDotClick,\n stroke,\n activeDot,\n dataName\n}: {\n cx?: number;\n cy?: number;\n payload?: {payload: {subject: string} & {[datakey: string]: number}; name: string};\n onDotHover: (name: string) => void;\n onDotClick: (name: string) => void;\n dataKey: string;\n stroke: string;\n activeDot?: ActiveDotType;\n dataName: string;\n}) => (\n <circle\n {...{\n ...DOT_DEFAULT_PROPS,\n ...(payload?.payload.subject === activeDot?.label && DOT_ACTIVE_PROPS),\n stroke,\n cx,\n cy,\n onTouchStart: () => {\n if (!payload?.name) return;\n onDotClick(payload.name);\n },\n onClick: e => {\n e.stopPropagation();\n\n if (!payload?.name) return;\n onDotClick(payload.name);\n },\n onMouseOver: () => {\n if (!payload?.name) return;\n onDotHover(payload.name);\n },\n onMouseLeave: () => onDotHover(''),\n 'data-name': dataName\n }}\n />\n);\n\nconst buildRadars = (\n totalDataset: number,\n handleDotHover: (name: string) => void,\n handleOnDotClick: (name: string) => void,\n activeDot?: ActiveDotType\n) =>\n times(index => {\n const datakey = `value${index + 1}`;\n const dataset = `dataset-${index + 1}`;\n\n return (\n <Radar\n {...RADAR_DEFAULT_PROPS}\n fill={`url(#gradient-fill-${index})`}\n stroke={`url(#gradient-stroke-${index})`}\n key={dataset}\n name={dataset}\n dataKey={datakey}\n activeDot={{\n ...DOT_ACTIVE_PROPS,\n stroke: `url(#gradient-stroke-${index})`\n }}\n // only on mobile\n // to handle dot style on hover (convert to click)\n // use with the tooltip component\n dot={\n <CustomDot\n onDotHover={handleDotHover}\n onDotClick={handleOnDotClick}\n activeDot={activeDot}\n dataKey={datakey}\n stroke={`url(#gradient-stroke-${index})`}\n dataName={`dot-${dataset}`}\n />\n }\n />\n );\n }, totalDataset);\n\nconst CustomLabel = ({\n index,\n x,\n y,\n percentagesValues,\n label,\n activeDot,\n chartType,\n formatedColors,\n primarySkinColor,\n exploreLocale,\n hoveredDot,\n onClick,\n onExploreClick\n}: {\n index: number;\n x: number;\n y: number;\n percentagesValues: number[];\n label: string;\n chartType: CHART_TYPE_TYPE;\n formatedColors: FormatedColorsType[];\n activeDot?: ActiveDotType;\n primarySkinColor: string;\n exploreLocale: string;\n hoveredDot: string;\n onClick: (name: string) => void;\n onExploreClick: (name: string) => void;\n}) => {\n const [hovered, setHovered] = useState(false);\n const isCurrentDotActive = activeDot?.label === label;\n const {\n offset: {x: offsetX, y: offsetY},\n alignment,\n ...rest\n } = CHART_CONFIGS[chartType].ticks[index];\n\n function onLabelClick(e: React.MouseEvent) {\n e.stopPropagation();\n onClick(label);\n }\n\n function handleExploreClick() {\n onExploreClick(label);\n }\n\n const buttonExploreProps: ButtonLinkProps = {\n customStyle: {\n height: '36px',\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'\n },\n onClick: handleExploreClick,\n 'aria-label': `${label}, ${exploreLocale}`,\n label: exploreLocale,\n 'data-name': 'learner-skill-card-explore-button',\n icon: {\n position: 'left',\n faIcon: {\n name: 'compass',\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n size: 16\n }\n }\n };\n\n const handleMouseOver = useCallback(() => setHovered(true), [setHovered]);\n\n const handleMouseLeave = useCallback(() => setHovered(false), [setHovered]);\n\n const extraOffsetY = isCurrentDotActive && index === 0 ? -25 : 0;\n\n return (\n <g>\n <foreignObject\n className={classnames(\n style.tickeForeignObject,\n isCurrentDotActive && style.tickeForeignObjectFocus\n )}\n x={x + offsetX}\n y={y + offsetY + extraOffsetY}\n >\n <div\n data-name={label}\n onClick={onLabelClick}\n className={classnames(\n style.tickWrapper,\n isCurrentDotActive && style.tickWrapperFocus,\n hoveredDot === label && style.tickWrapperHover\n )}\n style={{\n ...rest,\n alignItems: alignment,\n textAlign: alignment,\n opacity: !isEmpty(activeDot) && !isCurrentDotActive ? 0.3 : 1\n }}\n >\n {formatedColors.map(\n ({percentage: {color, background}, label: {color: colorLabel}}, i) => (\n <Fragment key={i}>\n <span className={style.tickValue} style={{color, background}}>\n {percentagesValues[i]}\n </span>\n <span className={style.tickLabel} style={{color: colorLabel}}>\n {label}\n </span>\n </Fragment>\n )\n )}\n {isCurrentDotActive ? (\n <div\n className={style.buttonWrapper}\n onMouseOver={handleMouseOver}\n onMouseLeave={handleMouseLeave}\n data-name=\"button-explore-wrapper\"\n >\n <ButtonLink {...buttonExploreProps} />\n </div>\n ) : null}\n </div>\n </foreignObject>\n </g>\n );\n};\n\n/* UTILS */\nconst CHART_CONFIGS_BY_SIDE_COUNT = pipe(keyBy('sideCount'), mapValues('name'))(CHART_CONFIGS);\n\nconst formatValues: (values_: number | number[]) => Record<string, number> = pipe(\n values_ => flatten([values_]),\n values_ => values_.map((val: number, i: number): [string, number] => [`value${i + 1}`, val]),\n fromPairs\n);\n\n/* this convert incoming component data to rechart data structure */\nexport const formatData: (\n legend: {[ref: string]: string},\n data_: LearningProfileRadarChartPropTypes['data']\n) => FormatedDataType[] = (legend, data_) =>\n pipe(\n toPairs,\n map(([ref, values_]: [string, number | number[]]) => ({\n ...formatValues(values_),\n subject: legend[ref]\n }))\n )(data_);\n\nexport const LearningProfileRadarChart = (\n {\n data,\n legend,\n totalDataset,\n colors: colorsProps,\n onClick,\n onExploreClick,\n width,\n height,\n margin\n }: LearningProfileRadarChartPropTypes,\n legacyContext: WebContextValues\n) => {\n const [isMobile, setIsMobile] = useState(false);\n const [activeDot, setActiveDot] = useState<ActiveDotType>();\n const [hoveredDot, setHoveredDot] = useState('');\n const skin = GetSkinFromContext(legacyContext);\n const translate = GetTranslateFromContext(legacyContext);\n const primarySkinColor = get('common.primary', skin);\n\n const formatedColors = times(i => {\n if (!colorsProps?.length) return DEFAULT_COLORS;\n\n const colors = colorsProps[i];\n return colors ? Object.assign({}, DEFAULT_COLORS, colors) : DEFAULT_COLORS;\n })(totalDataset);\n\n const chartType: CHART_TYPE_TYPE = useMemo(\n () => getOr('hexagon', size(data), CHART_CONFIGS_BY_SIDE_COUNT),\n [data]\n );\n\n const gradients = useMemo(\n () =>\n formatedColors.map(({gradient: {fill, stroke}}, index) => (\n <svg key={`gradient-${index}`}>\n <Gradient type={`fill-${index}`} colors={fill} />\n <Gradient type={`stroke-${index}`} colors={stroke} />\n </svg>\n )),\n [formatedColors]\n );\n\n const userAgent = navigator?.userAgent;\n const isMobile_ = useMemo(() => getIsMobile(userAgent), [userAgent]);\n\n const setIsMobile_ = useCallback(() => {\n setIsMobile(isMobile_ as boolean);\n }, [isMobile_]);\n\n useEffect(() => setIsMobile_(), [setIsMobile_]);\n\n useEffect(() => {\n const handleClick = () => {\n setActiveDot(undefined);\n onClick(undefined);\n };\n\n !isEmpty(activeDot) && window.addEventListener('click', handleClick);\n\n return () => {\n window.removeEventListener('click', handleClick);\n };\n }, [activeDot, onClick, setActiveDot]);\n\n function handleOnActiveDotClick() {\n setActiveDot(undefined);\n onClick(undefined);\n }\n\n function handleOnDotClick(label: string) {\n if (!isEmpty(activeDot) && activeDot?.label === label) {\n handleOnActiveDotClick();\n return;\n }\n const payload = formatedData.find(({subject}) => subject === label);\n if (!payload) return;\n\n const index = formatedData.indexOf(payload);\n const datakey = `value${index + 1}`;\n const skillRef = findKey(val => val === payload?.subject, legend);\n\n if (skillRef) {\n setActiveDot({\n key: datakey,\n value: payload[datakey],\n label: payload.subject\n });\n onClick(skillRef);\n }\n }\n\n function handleExploreClick(label: string) {\n const payload = formatedData.find(({subject}) => subject === label);\n if (!payload) return;\n\n const skillRef = findKey(val => val === payload?.subject, legend);\n\n if (skillRef) {\n onExploreClick(skillRef);\n }\n }\n\n function renderCustomLabel(props: {\n x: number;\n y: number;\n payload: {value: string};\n index: number;\n }) {\n const {\n x,\n y,\n payload: {value: label},\n index\n } = props;\n const currentData = formatedData.find(({subject}) => subject === label);\n const percentagesValues: number[] = pipe(\n omit('subject'),\n mapValues(value => `${value}%`),\n values\n )(currentData);\n\n return (\n <CustomLabel\n index={index}\n x={x}\n y={y}\n percentagesValues={percentagesValues}\n label={label}\n activeDot={activeDot}\n chartType={chartType}\n formatedColors={formatedColors}\n primarySkinColor={primarySkinColor}\n exploreLocale={translate('Explore')}\n hoveredDot={hoveredDot}\n onClick={handleOnDotClick}\n onExploreClick={handleExploreClick}\n />\n );\n }\n const formatedData = useMemo(() => formatData(legend, data), [legend, data]);\n\n return (\n <RadarChart\n width={width}\n height={height}\n margin={margin ?? (isMobile ? {top: 80} : {top: 180})}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius=\"80%\"\n data={formatedData}\n >\n {gradients}\n <PolarGrid strokeDasharray={10} strokeWidth={2} radialLines={false} />\n <PolarAngleAxis dataKey=\"subject\" tick={!isMobile && renderCustomLabel} />\n <PolarRadiusAxis tick={false} axisLine={false} domain={[0, 100]} />\n {buildRadars(totalDataset, setHoveredDot, handleOnDotClick, activeDot)}\n {isMobile ? <Tooltip cursor={false} content={<CustomTooltip />} /> : null}\n </RadarChart>\n );\n};\n\nconst ResponsiveLearningProfileRadarChart = (props: LearningProfileRadarChartPropTypes) => (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LearningProfileRadarChart {...props} />\n </ResponsiveContainer>\n);\n\nLearningProfileRadarChart.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nLearningProfileRadarChart.propTypes = learningProfileRadarChartPropTypes;\nResponsiveLearningProfileRadarChart.propTypes = learningProfileRadarChartPropTypes;\n\nexport default ResponsiveLearningProfileRadarChart;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","Fragment","useCallback","useEffect","useMemo","useState","Radar","RadarChart","PolarGrid","PolarAngleAxis","ResponsiveContainer","Tooltip","PolarRadiusAxis","convert","classnames","isMobile","getIsMobile","ButtonLink","Provider","GetSkinFromContext","GetTranslateFromContext","learningProfileRadarChartPropTypes","style","top","offset","x","y","alignment","margin","bottom","right","marginRight","left","marginLeft","BLACK","WHITE","DEFAULT_MAIN_COLOR","DEFAULT_COLORS","gradient","fill","stroke","percentage","color","background","label","CHART_CONFIGS","triangle","name","ticks","sideCount","quadrilateral","pentagon","hexagon","DOT_DEFAULT_PROPS","strokeWidth","strokeOpacity","r","pointerEvents","cursor","DOT_ACTIVE_PROPS","RADAR_DEFAULT_PROPS","fillOpacity","Gradient","type","colors","firstColor","secondColor","createElement","id","x1","y1","x2","y2","stopColor","CustomTooltip","active","payload","length","className","tooltip","tooltipLabel","tooltipValue","value","CustomDot","cx","cy","onDotHover","onDotClick","activeDot","dataName","_extends","subject","onTouchStart","onClick","e","stopPropagation","onMouseOver","onMouseLeave","buildRadars","totalDataset","handleDotHover","handleOnDotClick","_times","index","datakey","dataset","key","dataKey","dot","CustomLabel","percentagesValues","chartType","formatedColors","primarySkinColor","exploreLocale","hoveredDot","onExploreClick","hovered","setHovered","isCurrentDotActive","offsetX","offsetY","rest","onLabelClick","handleExploreClick","buttonExploreProps","customStyle","height","backgroundColor","transition","icon","position","faIcon","size","handleMouseOver","handleMouseLeave","extraOffsetY","tickeForeignObject","tickeForeignObjectFocus","tickWrapper","tickWrapperFocus","tickWrapperHover","alignItems","textAlign","opacity","_isEmpty","map","colorLabel","i","tickValue","tickLabel","buttonWrapper","CHART_CONFIGS_BY_SIDE_COUNT","_pipe","_keyBy","_mapValues","formatValues","values_","_flatten","val","_fromPairs","formatData","legend","data_","_toPairs","_map","ref","LearningProfileRadarChart","data","colorsProps","width","legacyContext","setIsMobile","setActiveDot","setHoveredDot","skin","translate","_get","Object","assign","_getOr","_size","gradients","isMobile_","setIsMobile_","handleClick","undefined","window","addEventListener","removeEventListener","handleOnActiveDotClick","formatedData","find","indexOf","skillRef","_findKey","renderCustomLabel","props","currentData","_omit","_values","outerRadius","strokeDasharray","radialLines","tick","axisLine","domain","content","ResponsiveLearningProfileRadarChart","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV"],"sources":["../../../src/molecule/learning-profile-radar-chart/index.tsx"],"sourcesContent":["import React, {Fragment, useCallback, useEffect, useMemo, useState} from 'react';\nimport {\n Radar,\n RadarChart,\n PolarGrid,\n PolarAngleAxis,\n ResponsiveContainer,\n Tooltip,\n PolarRadiusAxis\n} from 'recharts';\nimport {\n pipe,\n keyBy,\n mapValues,\n size,\n getOr,\n map,\n toPairs,\n values,\n isEmpty,\n omit,\n fromPairs,\n times,\n flatten,\n findKey,\n get\n} from 'lodash/fp';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {isMobile as getIsMobile} from '../../util/check-is-mobile';\nimport ButtonLink from '../../atom/button-link';\nimport {ButtonLinkProps} from '../../atom/button-link/types';\nimport Provider, {GetSkinFromContext, GetTranslateFromContext} from '../../atom/provider';\nimport {WebContextValues} from '../../atom/provider/web-context';\nimport {\n ActiveDotType,\n FormatedColorsType,\n FormatedDataType,\n LearningProfileRadarChartPropTypes,\n TickType,\n learningProfileRadarChartPropTypes\n} from './types';\nimport style from './style.css';\n\ntype CHART_TYPE_TYPE = keyof typeof CHART_CONFIGS;\n\n/* TICK_POSITIONS */\nconst top: TickType = {offset: {x: -100, y: -75}, alignment: 'center', margin: 'auto'};\nconst bottom: TickType = {offset: {x: -100, y: 10}, alignment: 'center', margin: 'auto'};\nconst right: TickType = {offset: {x: 30, y: -10}, alignment: 'start', marginRight: 'auto'};\nconst left: TickType = {offset: {x: -230, y: -10}, alignment: 'end', marginLeft: 'auto'};\n\n/* CONSTANTS */\nconst BLACK = '#000000ff';\nconst WHITE = '#ffffffff';\nconst DEFAULT_MAIN_COLOR = '#0062ffff';\n\nconst DEFAULT_COLORS: FormatedColorsType = {\n gradient: {\n fill: [DEFAULT_MAIN_COLOR, DEFAULT_MAIN_COLOR],\n stroke: [DEFAULT_MAIN_COLOR, DEFAULT_MAIN_COLOR]\n },\n percentage: {\n color: BLACK,\n background: WHITE\n },\n label: {\n color: BLACK\n }\n};\n\nconst CHART_CONFIGS = {\n triangle: {\n name: 'triangle',\n ticks: [top, right, left],\n sideCount: 3\n },\n quadrilateral: {\n name: 'quadrilateral',\n ticks: [top, right, bottom, left],\n sideCount: 4\n },\n pentagon: {\n name: 'pentagon',\n ticks: [top, right, right, left, left],\n sideCount: 5\n },\n hexagon: {\n name: 'hexagon',\n ticks: [top, right, right, bottom, left, left],\n sideCount: 6\n }\n} as const;\n\nconst DOT_DEFAULT_PROPS = {\n strokeWidth: 2,\n strokeOpacity: 0.4,\n fill: '#fff',\n r: 4,\n pointerEvents: 'all',\n style: {cursor: 'pointer'}\n} as const;\n\nconst DOT_ACTIVE_PROPS = {\n fill: '#fff',\n r: 6,\n strokeWidth: 4,\n strokeOpacity: 0.6\n} as const;\n\nconst RADAR_DEFAULT_PROPS = {\n strokeWidth: 3,\n strokeOpacity: 0.2,\n fillOpacity: 0.2\n} as const;\n\n/* COMPONENTS */\nconst Gradient = ({type, colors: [firstColor, secondColor]}: {type: string; colors: string[]}) => (\n <defs>\n <linearGradient id={`gradient-${type}`} x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={firstColor} />\n <stop offset=\"100%\" stopColor={secondColor} />\n </linearGradient>\n </defs>\n);\n\nconst CustomTooltip = ({\n active,\n payload,\n label\n}: {\n active?: boolean;\n payload?: {value: number}[];\n label?: string;\n}) =>\n active && !!payload?.length ? (\n <div className={style.tooltip}>\n <span className={style.tooltipLabel}>{label}</span>\n <span className={style.tooltipValue}>{payload[0].value}%</span>\n </div>\n ) : null;\n\nconst CustomDot = ({\n cx,\n cy,\n payload,\n onDotHover,\n onDotClick,\n stroke,\n activeDot,\n dataName\n}: {\n cx?: number;\n cy?: number;\n payload?: {payload: {subject: string} & {[datakey: string]: number}; name: string};\n onDotHover: (name: string) => void;\n onDotClick: (name: string) => void;\n dataKey: string;\n stroke: string;\n activeDot?: ActiveDotType;\n dataName: string;\n}) => (\n <circle\n {...{\n ...DOT_DEFAULT_PROPS,\n ...(payload?.payload.subject === activeDot?.label && DOT_ACTIVE_PROPS),\n stroke,\n cx,\n cy,\n onTouchStart: () => {\n if (!payload?.name) return;\n onDotClick(payload.name);\n },\n onClick: e => {\n e.stopPropagation();\n\n if (!payload?.name) return;\n onDotClick(payload.name);\n },\n onMouseOver: () => {\n if (!payload?.name) return;\n onDotHover(payload.name);\n },\n onMouseLeave: () => onDotHover(''),\n 'data-name': dataName\n }}\n />\n);\n\nconst buildRadars = (\n totalDataset: number,\n handleDotHover: (name: string) => void,\n handleOnDotClick: (name: string) => void,\n activeDot?: ActiveDotType\n) =>\n times(index => {\n const datakey = `value${index + 1}`;\n const dataset = `dataset-${index + 1}`;\n\n return (\n <Radar\n {...RADAR_DEFAULT_PROPS}\n fill={`url(#gradient-fill-${index})`}\n stroke={`url(#gradient-stroke-${index})`}\n key={dataset}\n name={dataset}\n dataKey={datakey}\n activeDot={{\n ...DOT_ACTIVE_PROPS,\n stroke: `url(#gradient-stroke-${index})`\n }}\n // only on mobile\n // to handle dot style on hover (convert to click)\n // use with the tooltip component\n dot={\n <CustomDot\n onDotHover={handleDotHover}\n onDotClick={handleOnDotClick}\n activeDot={activeDot}\n dataKey={datakey}\n stroke={`url(#gradient-stroke-${index})`}\n dataName={`dot-${dataset}`}\n />\n }\n />\n );\n }, totalDataset);\n\nconst CustomLabel = ({\n index,\n x,\n y,\n percentagesValues,\n label,\n activeDot,\n chartType,\n formatedColors,\n primarySkinColor,\n exploreLocale,\n hoveredDot,\n onClick,\n onExploreClick\n}: {\n index: number;\n x: number;\n y: number;\n percentagesValues: number[];\n label: string;\n chartType: CHART_TYPE_TYPE;\n formatedColors: FormatedColorsType[];\n activeDot?: ActiveDotType;\n primarySkinColor: string;\n exploreLocale: string;\n hoveredDot: string;\n onClick: (name: string) => void;\n onExploreClick: (name: string) => void;\n}) => {\n const [hovered, setHovered] = useState(false);\n const isCurrentDotActive = activeDot?.label === label;\n const {\n offset: {x: offsetX, y: offsetY},\n alignment,\n ...rest\n } = CHART_CONFIGS[chartType].ticks[index];\n\n function onLabelClick(e: React.MouseEvent) {\n e.stopPropagation();\n onClick(label);\n }\n\n function handleExploreClick() {\n onExploreClick(label);\n }\n\n const buttonExploreProps: ButtonLinkProps = {\n customStyle: {\n height: '36px',\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'\n },\n onClick: handleExploreClick,\n 'aria-label': `${label}, ${exploreLocale}`,\n label: exploreLocale,\n 'data-name': 'learner-skill-card-explore-button',\n icon: {\n position: 'left',\n faIcon: {\n name: 'compass',\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n size: 16\n }\n }\n };\n\n const handleMouseOver = useCallback(() => setHovered(true), [setHovered]);\n\n const handleMouseLeave = useCallback(() => setHovered(false), [setHovered]);\n\n const extraOffsetY = isCurrentDotActive && index === 0 ? -25 : 0;\n\n return (\n <g>\n <foreignObject\n className={classnames(\n style.tickeForeignObject,\n isCurrentDotActive && style.tickeForeignObjectFocus\n )}\n x={x + offsetX}\n y={y + offsetY + extraOffsetY}\n >\n <div\n data-name={label}\n onClick={onLabelClick}\n className={classnames(\n style.tickWrapper,\n isCurrentDotActive && style.tickWrapperFocus,\n hoveredDot === label && style.tickWrapperHover\n )}\n style={{\n ...rest,\n alignItems: alignment,\n textAlign: alignment,\n opacity: !isEmpty(activeDot) && !isCurrentDotActive ? 0.3 : 1\n }}\n >\n {formatedColors.map(\n ({percentage: {color, background}, label: {color: colorLabel}}, i) => (\n <Fragment key={i}>\n <span className={style.tickValue} style={{color, background}}>\n {percentagesValues[i]}\n </span>\n <span className={style.tickLabel} style={{color: colorLabel}}>\n {label}\n </span>\n </Fragment>\n )\n )}\n {isCurrentDotActive ? (\n <div\n className={style.buttonWrapper}\n onMouseOver={handleMouseOver}\n onMouseLeave={handleMouseLeave}\n data-name=\"button-explore-wrapper\"\n >\n <ButtonLink {...buttonExploreProps} />\n </div>\n ) : null}\n </div>\n </foreignObject>\n </g>\n );\n};\n\n/* UTILS */\nconst CHART_CONFIGS_BY_SIDE_COUNT = pipe(keyBy('sideCount'), mapValues('name'))(CHART_CONFIGS);\n\nconst formatValues: (values_: number | number[]) => Record<string, number> = pipe(\n values_ => flatten([values_]),\n values_ => values_.map((val: number, i: number): [string, number] => [`value${i + 1}`, val]),\n fromPairs\n);\n\n/* this convert incoming component data to rechart data structure */\nexport const formatData: (\n legend: {[ref: string]: string},\n data_: LearningProfileRadarChartPropTypes['data']\n) => FormatedDataType[] = (legend, data_) =>\n pipe(\n toPairs,\n map(([ref, values_]: [string, number | number[]]) => ({\n ...formatValues(values_),\n subject: legend[ref]\n }))\n )(data_);\n\nexport const LearningProfileRadarChart = (\n {\n data,\n legend,\n totalDataset,\n colors: colorsProps,\n onClick,\n onExploreClick,\n width,\n height,\n margin\n }: LearningProfileRadarChartPropTypes,\n legacyContext: WebContextValues\n) => {\n const [isMobile, setIsMobile] = useState(false);\n const [activeDot, setActiveDot] = useState<ActiveDotType>();\n const [hoveredDot, setHoveredDot] = useState('');\n const skin = GetSkinFromContext(legacyContext);\n const translate = GetTranslateFromContext(legacyContext);\n const primarySkinColor = get('common.primary', skin);\n\n const formatedColors = times(i => {\n if (!colorsProps?.length) return DEFAULT_COLORS;\n\n const colors = colorsProps[i];\n return colors ? Object.assign({}, DEFAULT_COLORS, colors) : DEFAULT_COLORS;\n })(totalDataset);\n\n const chartType: CHART_TYPE_TYPE = useMemo(\n () => getOr('hexagon', size(data), CHART_CONFIGS_BY_SIDE_COUNT),\n [data]\n );\n\n const gradients = useMemo(\n () =>\n formatedColors.map(({gradient: {fill, stroke}}, index) => (\n <svg key={`gradient-${index}`}>\n <Gradient type={`fill-${index}`} colors={fill} />\n <Gradient type={`stroke-${index}`} colors={stroke} />\n </svg>\n )),\n [formatedColors]\n );\n\n const isMobile_ = getIsMobile();\n\n const setIsMobile_ = useCallback(() => {\n setIsMobile(isMobile_ as boolean);\n }, [isMobile_]);\n\n useEffect(() => setIsMobile_(), [setIsMobile_]);\n\n useEffect(() => {\n const handleClick = () => {\n setActiveDot(undefined);\n onClick(undefined);\n };\n\n !isEmpty(activeDot) && window.addEventListener('click', handleClick);\n\n return () => {\n window.removeEventListener('click', handleClick);\n };\n }, [activeDot, onClick, setActiveDot]);\n\n function handleOnActiveDotClick() {\n setActiveDot(undefined);\n onClick(undefined);\n }\n\n function handleOnDotClick(label: string) {\n if (!isEmpty(activeDot) && activeDot?.label === label) {\n handleOnActiveDotClick();\n return;\n }\n const payload = formatedData.find(({subject}) => subject === label);\n if (!payload) return;\n\n const index = formatedData.indexOf(payload);\n const datakey = `value${index + 1}`;\n const skillRef = findKey(val => val === payload?.subject, legend);\n\n if (skillRef) {\n setActiveDot({\n key: datakey,\n value: payload[datakey],\n label: payload.subject\n });\n onClick(skillRef);\n }\n }\n\n function handleExploreClick(label: string) {\n const payload = formatedData.find(({subject}) => subject === label);\n if (!payload) return;\n\n const skillRef = findKey(val => val === payload?.subject, legend);\n\n if (skillRef) {\n onExploreClick(skillRef);\n }\n }\n\n function renderCustomLabel(props: {\n x: number;\n y: number;\n payload: {value: string};\n index: number;\n }) {\n const {\n x,\n y,\n payload: {value: label},\n index\n } = props;\n const currentData = formatedData.find(({subject}) => subject === label);\n const percentagesValues: number[] = pipe(\n omit('subject'),\n mapValues(value => `${value}%`),\n values\n )(currentData);\n\n return (\n <CustomLabel\n index={index}\n x={x}\n y={y}\n percentagesValues={percentagesValues}\n label={label}\n activeDot={activeDot}\n chartType={chartType}\n formatedColors={formatedColors}\n primarySkinColor={primarySkinColor}\n exploreLocale={translate('Explore')}\n hoveredDot={hoveredDot}\n onClick={handleOnDotClick}\n onExploreClick={handleExploreClick}\n />\n );\n }\n const formatedData = useMemo(() => formatData(legend, data), [legend, data]);\n\n return (\n <RadarChart\n width={width}\n height={height}\n margin={margin ?? (isMobile ? {top: 80} : {top: 180})}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius=\"80%\"\n data={formatedData}\n >\n {gradients}\n <PolarGrid strokeDasharray={10} strokeWidth={2} radialLines={false} />\n <PolarAngleAxis dataKey=\"subject\" tick={!isMobile && renderCustomLabel} />\n <PolarRadiusAxis tick={false} axisLine={false} domain={[0, 100]} />\n {buildRadars(totalDataset, setHoveredDot, handleOnDotClick, activeDot)}\n {isMobile ? <Tooltip cursor={false} content={<CustomTooltip />} /> : null}\n </RadarChart>\n );\n};\n\nconst ResponsiveLearningProfileRadarChart = (props: LearningProfileRadarChartPropTypes) => (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LearningProfileRadarChart {...props} />\n </ResponsiveContainer>\n);\n\nLearningProfileRadarChart.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nLearningProfileRadarChart.propTypes = learningProfileRadarChartPropTypes;\nResponsiveLearningProfileRadarChart.propTypes = learningProfileRadarChartPropTypes;\n\nexport default ResponsiveLearningProfileRadarChart;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAOA,KAAK,IAAGC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAO,OAAO;AAChF,SACEC,KAAK,EACLC,UAAU,EACVC,SAAS,EACTC,cAAc,EACdC,mBAAmB,EACnBC,OAAO,EACPC,eAAe,QACV,UAAU;AAkBjB,SAAQC,OAAO,QAAO,oBAAoB;AAC1C,OAAOC,UAAU,MAAM,YAAY;AACnC,SAAQC,QAAQ,IAAIC,WAAW,QAAO,4BAA4B;AAClE,OAAOC,UAAU,MAAM,wBAAwB;AAE/C,OAAOC,QAAQ,IAAGC,kBAAkB,EAAEC,uBAAuB,QAAO,qBAAqB;AAEzF,SAMEC,kCAAkC,QAC7B,SAAS;AAChB,OAAOC,KAAK,MAAM,aAAa;AAI/B;AACA,MAAMC,GAAa,GAAG;EAACC,MAAM,EAAE;IAACC,CAAC,EAAE,CAAC,GAAG;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC;EAAEC,SAAS,EAAE,QAAQ;EAAEC,MAAM,EAAE;AAAM,CAAC;AACtF,MAAMC,MAAgB,GAAG;EAACL,MAAM,EAAE;IAACC,CAAC,EAAE,CAAC,GAAG;IAAEC,CAAC,EAAE;EAAE,CAAC;EAAEC,SAAS,EAAE,QAAQ;EAAEC,MAAM,EAAE;AAAM,CAAC;AACxF,MAAME,KAAe,GAAG;EAACN,MAAM,EAAE;IAACC,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC;EAAEC,SAAS,EAAE,OAAO;EAAEI,WAAW,EAAE;AAAM,CAAC;AAC1F,MAAMC,IAAc,GAAG;EAACR,MAAM,EAAE;IAACC,CAAC,EAAE,CAAC,GAAG;IAAEC,CAAC,EAAE,CAAC;EAAE,CAAC;EAAEC,SAAS,EAAE,KAAK;EAAEM,UAAU,EAAE;AAAM,CAAC;;AAExF;AACA,MAAMC,KAAK,GAAG,WAAW;AACzB,MAAMC,KAAK,GAAG,WAAW;AACzB,MAAMC,kBAAkB,GAAG,WAAW;AAEtC,MAAMC,cAAkC,GAAG;EACzCC,QAAQ,EAAE;IACRC,IAAI,EAAE,CAACH,kBAAkB,EAAEA,kBAAkB,CAAC;IAC9CI,MAAM,EAAE,CAACJ,kBAAkB,EAAEA,kBAAkB;EACjD,CAAC;EACDK,UAAU,EAAE;IACVC,KAAK,EAAER,KAAK;IACZS,UAAU,EAAER;EACd,CAAC;EACDS,KAAK,EAAE;IACLF,KAAK,EAAER;EACT;AACF,CAAC;AAED,MAAMW,aAAa,GAAG;EACpBC,QAAQ,EAAE;IACRC,IAAI,EAAE,UAAU;IAChBC,KAAK,EAAE,CAACzB,GAAG,EAAEO,KAAK,EAAEE,IAAI,CAAC;IACzBiB,SAAS,EAAE;EACb,CAAC;EACDC,aAAa,EAAE;IACbH,IAAI,EAAE,eAAe;IACrBC,KAAK,EAAE,CAACzB,GAAG,EAAEO,KAAK,EAAED,MAAM,EAAEG,IAAI,CAAC;IACjCiB,SAAS,EAAE;EACb,CAAC;EACDE,QAAQ,EAAE;IACRJ,IAAI,EAAE,UAAU;IAChBC,KAAK,EAAE,CAACzB,GAAG,EAAEO,KAAK,EAAEA,KAAK,EAAEE,IAAI,EAAEA,IAAI,CAAC;IACtCiB,SAAS,EAAE;EACb,CAAC;EACDG,OAAO,EAAE;IACPL,IAAI,EAAE,SAAS;IACfC,KAAK,EAAE,CAACzB,GAAG,EAAEO,KAAK,EAAEA,KAAK,EAAED,MAAM,EAAEG,IAAI,EAAEA,IAAI,CAAC;IAC9CiB,SAAS,EAAE;EACb;AACF,CAAU;AAEV,MAAMI,iBAAiB,GAAG;EACxBC,WAAW,EAAE,CAAC;EACdC,aAAa,EAAE,GAAG;EAClBhB,IAAI,EAAE,MAAM;EACZiB,CAAC,EAAE,CAAC;EACJC,aAAa,EAAE,KAAK;EACpBnC,KAAK,EAAE;IAACoC,MAAM,EAAE;EAAS;AAC3B,CAAU;AAEV,MAAMC,gBAAgB,GAAG;EACvBpB,IAAI,EAAE,MAAM;EACZiB,CAAC,EAAE,CAAC;EACJF,WAAW,EAAE,CAAC;EACdC,aAAa,EAAE;AACjB,CAAU;AAEV,MAAMK,mBAAmB,GAAG;EAC1BN,WAAW,EAAE,CAAC;EACdC,aAAa,EAAE,GAAG;EAClBM,WAAW,EAAE;AACf,CAAU;;AAEV;AACA,MAAMC,QAAQ,GAAGA,CAAC;EAACC,IAAI;EAAEC,MAAM,EAAE,CAACC,UAAU,EAAEC,WAAW;AAAmC,CAAC,kBAC3FlE,KAAA,CAAAmE,aAAA,4BACEnE,KAAA,CAAAmE,aAAA;EAAgBC,EAAE,EAAE,YAAYL,IAAI,EAAG;EAACM,EAAE,EAAC,IAAI;EAACC,EAAE,EAAC,IAAI;EAACC,EAAE,EAAC,IAAI;EAACC,EAAE,EAAC;AAAM,gBACvExE,KAAA,CAAAmE,aAAA;EAAM3C,MAAM,EAAC,IAAI;EAACiD,SAAS,EAAER;AAAW,CAAE,CAAC,eAC3CjE,KAAA,CAAAmE,aAAA;EAAM3C,MAAM,EAAC,MAAM;EAACiD,SAAS,EAAEP;AAAY,CAAE,CAC/B,CACZ,CACP;AAED,MAAMQ,aAAa,GAAGA,CAAC;EACrBC,MAAM;EACNC,OAAO;EACPhC;AAKF,CAAC,KACC+B,MAAM,IAAI,CAAC,CAACC,OAAO,EAAEC,MAAM,gBACzB7E,KAAA,CAAAmE,aAAA;EAAKW,SAAS,EAAExD,KAAK,CAACyD;AAAQ,gBAC5B/E,KAAA,CAAAmE,aAAA;EAAMW,SAAS,EAAExD,KAAK,CAAC0D;AAAa,GAAEpC,KAAY,CAAC,eACnD5C,KAAA,CAAAmE,aAAA;EAAMW,SAAS,EAAExD,KAAK,CAAC2D;AAAa,GAAEL,OAAO,CAAC,CAAC,CAAC,CAACM,KAAK,EAAC,GAAO,CAC3D,CAAC,GACJ,IAAI;AAEV,MAAMC,SAAS,GAAGA,CAAC;EACjBC,EAAE;EACFC,EAAE;EACFT,OAAO;EACPU,UAAU;EACVC,UAAU;EACV/C,MAAM;EACNgD,SAAS;EACTC;AAWF,CAAC,kBACCzF,KAAA,CAAAmE,aAAA,WAAAuB,QAAA,KAEOrC,iBAAiB,EAChBuB,OAAO,EAAEA,OAAO,CAACe,OAAO,KAAKH,SAAS,EAAE5C,KAAK,IAAIe,gBAAgB;EACrEnB,MAAM;EACN4C,EAAE;EACFC,EAAE;EACFO,YAAY,EAAEA,CAAA,KAAM;IAClB,IAAI,CAAChB,OAAO,EAAE7B,IAAI,EAAE;IACpBwC,UAAU,CAACX,OAAO,CAAC7B,IAAI,CAAC;EAC1B,CAAC;EACD8C,OAAO,EAAEC,CAAC,IAAI;IACZA,CAAC,CAACC,eAAe,CAAC,CAAC;IAEnB,IAAI,CAACnB,OAAO,EAAE7B,IAAI,EAAE;IACpBwC,UAAU,CAACX,OAAO,CAAC7B,IAAI,CAAC;EAC1B,CAAC;EACDiD,WAAW,EAAEA,CAAA,KAAM;IACjB,IAAI,CAACpB,OAAO,EAAE7B,IAAI,EAAE;IACpBuC,UAAU,CAACV,OAAO,CAAC7B,IAAI,CAAC;EAC1B,CAAC;EACDkD,YAAY,EAAEA,CAAA,KAAMX,UAAU,CAAC,EAAE,CAAC;EAClC,WAAW,EAAEG;AAAQ,EAExB,CACF;AAED,MAAMS,WAAW,GAAGA,CAClBC,YAAoB,EACpBC,cAAsC,EACtCC,gBAAwC,EACxCb,SAAyB,KAEzBc,MAAA,CAAMC,KAAK,IAAI;EACb,MAAMC,OAAO,GAAG,QAAQD,KAAK,GAAG,CAAC,EAAE;EACnC,MAAME,OAAO,GAAG,WAAWF,KAAK,GAAG,CAAC,EAAE;EAEtC,oBACEvG,KAAA,CAAAmE,aAAA,CAAC7D,KAAK,EAAAoF,QAAA,KACA9B,mBAAmB;IACvBrB,IAAI,EAAE,sBAAsBgE,KAAK,GAAI;IACrC/D,MAAM,EAAE,wBAAwB+D,KAAK,GAAI;IACzCG,GAAG,EAAED,OAAQ;IACb1D,IAAI,EAAE0D,OAAQ;IACdE,OAAO,EAAEH,OAAQ;IACjBhB,SAAS,EAAE;MACT,GAAG7B,gBAAgB;MACnBnB,MAAM,EAAE,wBAAwB+D,KAAK;IACvC;IACA;IACA;IACA;IAAA;IACAK,GAAG,eACD5G,KAAA,CAAAmE,aAAA,CAACgB,SAAS;MACRG,UAAU,EAAEc,cAAe;MAC3Bb,UAAU,EAAEc,gBAAiB;MAC7Bb,SAAS,EAAEA,SAAU;MACrBmB,OAAO,EAAEH,OAAQ;MACjBhE,MAAM,EAAE,wBAAwB+D,KAAK,GAAI;MACzCd,QAAQ,EAAE,OAAOgB,OAAO;IAAG,CAC5B;EACF,EACF,CAAC;AAEN,CAAC,EAAEN,YAAY,CAAC;AAElB,MAAMU,WAAW,GAAGA,CAAC;EACnBN,KAAK;EACL9E,CAAC;EACDC,CAAC;EACDoF,iBAAiB;EACjBlE,KAAK;EACL4C,SAAS;EACTuB,SAAS;EACTC,cAAc;EACdC,gBAAgB;EAChBC,aAAa;EACbC,UAAU;EACVtB,OAAO;EACPuB;AAeF,CAAC,KAAK;EACJ,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGjH,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMkH,kBAAkB,GAAG/B,SAAS,EAAE5C,KAAK,KAAKA,KAAK;EACrD,MAAM;IACJpB,MAAM,EAAE;MAACC,CAAC,EAAE+F,OAAO;MAAE9F,CAAC,EAAE+F;IAAO,CAAC;IAChC9F,SAAS;IACT,GAAG+F;EACL,CAAC,GAAG7E,aAAa,CAACkE,SAAS,CAAC,CAAC/D,KAAK,CAACuD,KAAK,CAAC;EAEzC,SAASoB,YAAYA,CAAC7B,CAAmB,EAAE;IACzCA,CAAC,CAACC,eAAe,CAAC,CAAC;IACnBF,OAAO,CAACjD,KAAK,CAAC;EAChB;EAEA,SAASgF,kBAAkBA,CAAA,EAAG;IAC5BR,cAAc,CAACxE,KAAK,CAAC;EACvB;EAEA,MAAMiF,kBAAmC,GAAG;IAC1CC,WAAW,EAAE;MACXC,MAAM,EAAE,MAAM;MACdC,eAAe,EAAEX,OAAO,GAAGJ,gBAAgB,GAAGpG,OAAO,CAAC,SAASoG,gBAAgB,WAAW,CAAC;MAC3FvE,KAAK,EAAE2E,OAAO,GAAG,SAAS,GAAGJ,gBAAgB;MAC7CgB,UAAU,EAAE;IACd,CAAC;IACDpC,OAAO,EAAE+B,kBAAkB;IAC3B,YAAY,EAAE,GAAGhF,KAAK,KAAKsE,aAAa,EAAE;IAC1CtE,KAAK,EAAEsE,aAAa;IACpB,WAAW,EAAE,mCAAmC;IAChDgB,IAAI,EAAE;MACJC,QAAQ,EAAE,MAAM;MAChBC,MAAM,EAAE;QACNrF,IAAI,EAAE,SAAS;QACfiF,eAAe,EAAEX,OAAO,GAAGJ,gBAAgB,GAAGpG,OAAO,CAAC,SAASoG,gBAAgB,WAAW,CAAC;QAC3FvE,KAAK,EAAE2E,OAAO,GAAG,SAAS,GAAGJ,gBAAgB;QAC7CoB,IAAI,EAAE;MACR;IACF;EACF,CAAC;EAED,MAAMC,eAAe,GAAGpI,WAAW,CAAC,MAAMoH,UAAU,CAAC,IAAI,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEzE,MAAMiB,gBAAgB,GAAGrI,WAAW,CAAC,MAAMoH,UAAU,CAAC,KAAK,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAE3E,MAAMkB,YAAY,GAAGjB,kBAAkB,IAAIhB,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;EAEhE,oBACEvG,KAAA,CAAAmE,aAAA,yBACEnE,KAAA,CAAAmE,aAAA;IACEW,SAAS,EAAEhE,UAAU,CACnBQ,KAAK,CAACmH,kBAAkB,EACxBlB,kBAAkB,IAAIjG,KAAK,CAACoH,uBAC9B,CAAE;IACFjH,CAAC,EAAEA,CAAC,GAAG+F,OAAQ;IACf9F,CAAC,EAAEA,CAAC,GAAG+F,OAAO,GAAGe;EAAa,gBAE9BxI,KAAA,CAAAmE,aAAA;IACE,aAAWvB,KAAM;IACjBiD,OAAO,EAAE8B,YAAa;IACtB7C,SAAS,EAAEhE,UAAU,CACnBQ,KAAK,CAACqH,WAAW,EACjBpB,kBAAkB,IAAIjG,KAAK,CAACsH,gBAAgB,EAC5CzB,UAAU,KAAKvE,KAAK,IAAItB,KAAK,CAACuH,gBAChC,CAAE;IACFvH,KAAK,EAAE;MACL,GAAGoG,IAAI;MACPoB,UAAU,EAAEnH,SAAS;MACrBoH,SAAS,EAAEpH,SAAS;MACpBqH,OAAO,EAAE,CAACC,QAAA,CAAQzD,SAAS,CAAC,IAAI,CAAC+B,kBAAkB,GAAG,GAAG,GAAG;IAC9D;EAAE,GAEDP,cAAc,CAACkC,GAAG,CACjB,CAAC;IAACzG,UAAU,EAAE;MAACC,KAAK;MAAEC;IAAU,CAAC;IAAEC,KAAK,EAAE;MAACF,KAAK,EAAEyG;IAAU;EAAC,CAAC,EAAEC,CAAC,kBAC/DpJ,KAAA,CAAAmE,aAAA,CAAClE,QAAQ;IAACyG,GAAG,EAAE0C;EAAE,gBACfpJ,KAAA,CAAAmE,aAAA;IAAMW,SAAS,EAAExD,KAAK,CAAC+H,SAAU;IAAC/H,KAAK,EAAE;MAACoB,KAAK;MAAEC;IAAU;EAAE,GAC1DmE,iBAAiB,CAACsC,CAAC,CAChB,CAAC,eACPpJ,KAAA,CAAAmE,aAAA;IAAMW,SAAS,EAAExD,KAAK,CAACgI,SAAU;IAAChI,KAAK,EAAE;MAACoB,KAAK,EAAEyG;IAAU;EAAE,GAC1DvG,KACG,CACE,CAEd,CAAC,EACA2E,kBAAkB,gBACjBvH,KAAA,CAAAmE,aAAA;IACEW,SAAS,EAAExD,KAAK,CAACiI,aAAc;IAC/BvD,WAAW,EAAEsC,eAAgB;IAC7BrC,YAAY,EAAEsC,gBAAiB;IAC/B,aAAU;EAAwB,gBAElCvI,KAAA,CAAAmE,aAAA,CAAClD,UAAU,EAAK4G,kBAAqB,CAClC,CAAC,GACJ,IACD,CACQ,CACd,CAAC;AAER,CAAC;;AAED;AACA,MAAM2B,2BAA2B,GAAGC,KAAA,CAAKC,MAAA,CAAM,WAAW,CAAC,EAAEC,UAAA,CAAU,MAAM,CAAC,CAAC,CAAC9G,aAAa,CAAC;AAE9F,MAAM+G,YAAoE,GAAGH,KAAA,CAC3EI,OAAO,IAAIC,QAAA,CAAQ,CAACD,OAAO,CAAC,CAAC,EAC7BA,OAAO,IAAIA,OAAO,CAACX,GAAG,CAAC,CAACa,GAAW,EAAEX,CAAS,KAAuB,CAAC,QAAQA,CAAC,GAAG,CAAC,EAAE,EAAEW,GAAG,CAAC,CAAC,EAAAC,UAE9F,CAAC;;AAED;AACA,OAAO,MAAMC,UAGU,GAAGA,CAACC,MAAM,EAAEC,KAAK,KACtCV,KAAA,CAAAW,QAAA,EAEEC,IAAA,CAAI,CAAC,CAACC,GAAG,EAAET,OAAO,CAA8B,MAAM;EACpD,GAAGD,YAAY,CAACC,OAAO,CAAC;EACxBlE,OAAO,EAAEuE,MAAM,CAACI,GAAG;AACrB,CAAC,CAAC,CACJ,CAAC,CAACH,KAAK,CAAC;AAEV,OAAO,MAAMI,yBAAyB,GAAGA,CACvC;EACEC,IAAI;EACJN,MAAM;EACN/D,YAAY;EACZnC,MAAM,EAAEyG,WAAW;EACnB5E,OAAO;EACPuB,cAAc;EACdsD,KAAK;EACL3C,MAAM;EACNnG;AACkC,CAAC,EACrC+I,aAA+B,KAC5B;EACH,MAAM,CAAC5J,QAAQ,EAAE6J,WAAW,CAAC,GAAGvK,QAAQ,CAAC,KAAK,CAAC;EAC/C,MAAM,CAACmF,SAAS,EAAEqF,YAAY,CAAC,GAAGxK,QAAQ,CAAgB,CAAC;EAC3D,MAAM,CAAC8G,UAAU,EAAE2D,aAAa,CAAC,GAAGzK,QAAQ,CAAC,EAAE,CAAC;EAChD,MAAM0K,IAAI,GAAG5J,kBAAkB,CAACwJ,aAAa,CAAC;EAC9C,MAAMK,SAAS,GAAG5J,uBAAuB,CAACuJ,aAAa,CAAC;EACxD,MAAM1D,gBAAgB,GAAGgE,IAAA,CAAI,gBAAgB,EAAEF,IAAI,CAAC;EAEpD,MAAM/D,cAAc,GAAGV,MAAA,CAAM8C,CAAC,IAAI;IAChC,IAAI,CAACqB,WAAW,EAAE5F,MAAM,EAAE,OAAOxC,cAAc;IAE/C,MAAM2B,MAAM,GAAGyG,WAAW,CAACrB,CAAC,CAAC;IAC7B,OAAOpF,MAAM,GAAGkH,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAE9I,cAAc,EAAE2B,MAAM,CAAC,GAAG3B,cAAc;EAC5E,CAAC,CAAC,CAAC8D,YAAY,CAAC;EAEhB,MAAMY,SAA0B,GAAG3G,OAAO,CACxC,MAAMgL,MAAA,CAAM,SAAS,EAAEC,KAAA,CAAKb,IAAI,CAAC,EAAEhB,2BAA2B,CAAC,EAC/D,CAACgB,IAAI,CACP,CAAC;EAED,MAAMc,SAAS,GAAGlL,OAAO,CACvB,MACE4G,cAAc,CAACkC,GAAG,CAAC,CAAC;IAAC5G,QAAQ,EAAE;MAACC,IAAI;MAAEC;IAAM;EAAC,CAAC,EAAE+D,KAAK,kBACnDvG,KAAA,CAAAmE,aAAA;IAAKuC,GAAG,EAAE,YAAYH,KAAK;EAAG,gBAC5BvG,KAAA,CAAAmE,aAAA,CAACL,QAAQ;IAACC,IAAI,EAAE,QAAQwC,KAAK,EAAG;IAACvC,MAAM,EAAEzB;EAAK,CAAE,CAAC,eACjDvC,KAAA,CAAAmE,aAAA,CAACL,QAAQ;IAACC,IAAI,EAAE,UAAUwC,KAAK,EAAG;IAACvC,MAAM,EAAExB;EAAO,CAAE,CACjD,CACN,CAAC,EACJ,CAACwE,cAAc,CACjB,CAAC;EAED,MAAMuE,SAAS,GAAGvK,WAAW,CAAC,CAAC;EAE/B,MAAMwK,YAAY,GAAGtL,WAAW,CAAC,MAAM;IACrC0K,WAAW,CAACW,SAAoB,CAAC;EACnC,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEfpL,SAAS,CAAC,MAAMqL,YAAY,CAAC,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAE/CrL,SAAS,CAAC,MAAM;IACd,MAAMsL,WAAW,GAAGA,CAAA,KAAM;MACxBZ,YAAY,CAACa,SAAS,CAAC;MACvB7F,OAAO,CAAC6F,SAAS,CAAC;IACpB,CAAC;IAED,CAACzC,QAAA,CAAQzD,SAAS,CAAC,IAAImG,MAAM,CAACC,gBAAgB,CAAC,OAAO,EAAEH,WAAW,CAAC;IAEpE,OAAO,MAAM;MACXE,MAAM,CAACE,mBAAmB,CAAC,OAAO,EAAEJ,WAAW,CAAC;IAClD,CAAC;EACH,CAAC,EAAE,CAACjG,SAAS,EAAEK,OAAO,EAAEgF,YAAY,CAAC,CAAC;EAEtC,SAASiB,sBAAsBA,CAAA,EAAG;IAChCjB,YAAY,CAACa,SAAS,CAAC;IACvB7F,OAAO,CAAC6F,SAAS,CAAC;EACpB;EAEA,SAASrF,gBAAgBA,CAACzD,KAAa,EAAE;IACvC,IAAI,CAACqG,QAAA,CAAQzD,SAAS,CAAC,IAAIA,SAAS,EAAE5C,KAAK,KAAKA,KAAK,EAAE;MACrDkJ,sBAAsB,CAAC,CAAC;MACxB;IACF;IACA,MAAMlH,OAAO,GAAGmH,YAAY,CAACC,IAAI,CAAC,CAAC;MAACrG;IAAO,CAAC,KAAKA,OAAO,KAAK/C,KAAK,CAAC;IACnE,IAAI,CAACgC,OAAO,EAAE;IAEd,MAAM2B,KAAK,GAAGwF,YAAY,CAACE,OAAO,CAACrH,OAAO,CAAC;IAC3C,MAAM4B,OAAO,GAAG,QAAQD,KAAK,GAAG,CAAC,EAAE;IACnC,MAAM2F,QAAQ,GAAGC,QAAA,CAAQpC,GAAG,IAAIA,GAAG,KAAKnF,OAAO,EAAEe,OAAO,EAAEuE,MAAM,CAAC;IAEjE,IAAIgC,QAAQ,EAAE;MACZrB,YAAY,CAAC;QACXnE,GAAG,EAAEF,OAAO;QACZtB,KAAK,EAAEN,OAAO,CAAC4B,OAAO,CAAC;QACvB5D,KAAK,EAAEgC,OAAO,CAACe;MACjB,CAAC,CAAC;MACFE,OAAO,CAACqG,QAAQ,CAAC;IACnB;EACF;EAEA,SAAStE,kBAAkBA,CAAChF,KAAa,EAAE;IACzC,MAAMgC,OAAO,GAAGmH,YAAY,CAACC,IAAI,CAAC,CAAC;MAACrG;IAAO,CAAC,KAAKA,OAAO,KAAK/C,KAAK,CAAC;IACnE,IAAI,CAACgC,OAAO,EAAE;IAEd,MAAMsH,QAAQ,GAAGC,QAAA,CAAQpC,GAAG,IAAIA,GAAG,KAAKnF,OAAO,EAAEe,OAAO,EAAEuE,MAAM,CAAC;IAEjE,IAAIgC,QAAQ,EAAE;MACZ9E,cAAc,CAAC8E,QAAQ,CAAC;IAC1B;EACF;EAEA,SAASE,iBAAiBA,CAACC,KAK1B,EAAE;IACD,MAAM;MACJ5K,CAAC;MACDC,CAAC;MACDkD,OAAO,EAAE;QAACM,KAAK,EAAEtC;MAAK,CAAC;MACvB2D;IACF,CAAC,GAAG8F,KAAK;IACT,MAAMC,WAAW,GAAGP,YAAY,CAACC,IAAI,CAAC,CAAC;MAACrG;IAAO,CAAC,KAAKA,OAAO,KAAK/C,KAAK,CAAC;IACvE,MAAMkE,iBAA2B,GAAG2C,KAAA,CAClC8C,KAAA,CAAK,SAAS,CAAC,EACf5C,UAAA,CAAUzE,KAAK,IAAI,GAAGA,KAAK,GAAG,CAAC,EAAAsH,OAEjC,CAAC,CAACF,WAAW,CAAC;IAEd,oBACEtM,KAAA,CAAAmE,aAAA,CAAC0C,WAAW;MACVN,KAAK,EAAEA,KAAM;MACb9E,CAAC,EAAEA,CAAE;MACLC,CAAC,EAAEA,CAAE;MACLoF,iBAAiB,EAAEA,iBAAkB;MACrClE,KAAK,EAAEA,KAAM;MACb4C,SAAS,EAAEA,SAAU;MACrBuB,SAAS,EAAEA,SAAU;MACrBC,cAAc,EAAEA,cAAe;MAC/BC,gBAAgB,EAAEA,gBAAiB;MACnCC,aAAa,EAAE8D,SAAS,CAAC,SAAS,CAAE;MACpC7D,UAAU,EAAEA,UAAW;MACvBtB,OAAO,EAAEQ,gBAAiB;MAC1Be,cAAc,EAAEQ;IAAmB,CACpC,CAAC;EAEN;EACA,MAAMmE,YAAY,GAAG3L,OAAO,CAAC,MAAM6J,UAAU,CAACC,MAAM,EAAEM,IAAI,CAAC,EAAE,CAACN,MAAM,EAAEM,IAAI,CAAC,CAAC;EAE5E,oBACExK,KAAA,CAAAmE,aAAA,CAAC5D,UAAU;IACTmK,KAAK,EAAEA,KAAM;IACb3C,MAAM,EAAEA,MAAO;IACfnG,MAAM,EAAEA,MAAM,KAAKb,QAAQ,GAAG;MAACQ,GAAG,EAAE;IAAE,CAAC,GAAG;MAACA,GAAG,EAAE;IAAG,CAAC,CAAE;IACtD6D,EAAE,EAAC,KAAK;IACRC,EAAE,EAAC,KAAK;IACRoH,WAAW,EAAC,KAAK;IACjBjC,IAAI,EAAEuB;EAAa,GAElBT,SAAS,eACVtL,KAAA,CAAAmE,aAAA,CAAC3D,SAAS;IAACkM,eAAe,EAAE,EAAG;IAACpJ,WAAW,EAAE,CAAE;IAACqJ,WAAW,EAAE;EAAM,CAAE,CAAC,eACtE3M,KAAA,CAAAmE,aAAA,CAAC1D,cAAc;IAACkG,OAAO,EAAC,SAAS;IAACiG,IAAI,EAAE,CAAC7L,QAAQ,IAAIqL;EAAkB,CAAE,CAAC,eAC1EpM,KAAA,CAAAmE,aAAA,CAACvD,eAAe;IAACgM,IAAI,EAAE,KAAM;IAACC,QAAQ,EAAE,KAAM;IAACC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG;EAAE,CAAE,CAAC,EAClE5G,WAAW,CAACC,YAAY,EAAE2E,aAAa,EAAEzE,gBAAgB,EAAEb,SAAS,CAAC,EACrEzE,QAAQ,gBAAGf,KAAA,CAAAmE,aAAA,CAACxD,OAAO;IAAC+C,MAAM,EAAE,KAAM;IAACqJ,OAAO,eAAE/M,KAAA,CAAAmE,aAAA,CAACO,aAAa,MAAE;EAAE,CAAE,CAAC,GAAG,IAC3D,CAAC;AAEjB,CAAC;AAED,MAAMsI,mCAAmC,GAAIX,KAAyC,iBACpFrM,KAAA,CAAAmE,aAAA,CAACzD,mBAAmB;EAACgK,KAAK,EAAC,MAAM;EAAC3C,MAAM,EAAC;AAAM,gBAC7C/H,KAAA,CAAAmE,aAAA,CAACoG,yBAAyB,EAAK8B,KAAQ,CACpB,CACtB;AAED9B,yBAAyB,CAAC0C,YAAY,GAAG;EACvClC,IAAI,EAAE7J,QAAQ,CAACgM,iBAAiB,CAACnC,IAAI;EACrCC,SAAS,EAAE9J,QAAQ,CAACgM,iBAAiB,CAAClC;AACxC,CAAC;AAEDT,yBAAyB,CAAC4C,SAAS,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAGjM,kCAAkC;AACxE2L,mCAAmC,CAACG,SAAS,GAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAGjM,kCAAkC;AAElF,eAAe2L,mCAAmC","ignoreList":[]}
|
|
@@ -4,10 +4,7 @@ declare const HeaderWithActions: {
|
|
|
4
4
|
(props: HeaderWithActionsProps): JSX.Element;
|
|
5
5
|
propTypes: {
|
|
6
6
|
closeButton: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
7
|
-
|
|
8
|
-
icon: import("prop-types").Validator<string>;
|
|
9
|
-
'data-name': import("prop-types").Validator<string>;
|
|
10
|
-
'aria-label': import("prop-types").Validator<string>;
|
|
7
|
+
'aria-label': import("prop-types").Requireable<string>;
|
|
11
8
|
onClick: import("prop-types").Validator<(...args: any[]) => any>;
|
|
12
9
|
}>>;
|
|
13
10
|
title: import("prop-types").Validator<string>;
|
|
@@ -20,80 +17,25 @@ declare const HeaderWithActions: {
|
|
|
20
17
|
display: import("prop-types").Validator<boolean>;
|
|
21
18
|
label: import("prop-types").Requireable<string>;
|
|
22
19
|
}>>>;
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
actionButtons: import("prop-types").Validator<(import("prop-types").InferProps<{
|
|
21
|
+
type: import("prop-types").Validator<string>;
|
|
22
|
+
label: import("prop-types").Validator<string>;
|
|
23
|
+
onClick: import("prop-types").Validator<(...args: any[]) => any>;
|
|
25
24
|
disabled: import("prop-types").Requireable<boolean>;
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
iconName: import("prop-types").Requireable<string>;
|
|
26
|
+
iconColor: import("prop-types").Requireable<string>;
|
|
27
|
+
}> | null | undefined)[]>;
|
|
28
|
+
bulletPointMenuButton: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
28
29
|
buttons: import("prop-types").Validator<(import("prop-types").InferProps<{
|
|
29
|
-
|
|
30
|
-
disabled: import("prop-types").Requireable<boolean>;
|
|
30
|
+
dataName: import("prop-types").Requireable<string>;
|
|
31
31
|
label: import("prop-types").Validator<string>;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
icon: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
36
|
-
theme: import("prop-types").Requireable<string>;
|
|
37
|
-
position: import("prop-types").Requireable<string>;
|
|
38
|
-
type: import("prop-types").Requireable<string>;
|
|
39
|
-
faIcon: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
40
|
-
name: import("prop-types").Validator<string>;
|
|
41
|
-
color: import("prop-types").Requireable<string>;
|
|
42
|
-
backgroundColor: import("prop-types").Requireable<string>;
|
|
43
|
-
size: import("prop-types").Requireable<number>;
|
|
44
|
-
customStyle: import("prop-types").Requireable<{
|
|
45
|
-
[x: string]: NonNullable<string | number | null | undefined> | null | undefined;
|
|
46
|
-
}>;
|
|
47
|
-
}>>;
|
|
48
|
-
}>>;
|
|
49
|
-
customStyle: import("prop-types").Requireable<{
|
|
50
|
-
[x: string]: NonNullable<string | number | null | undefined> | null | undefined;
|
|
51
|
-
}>;
|
|
52
|
-
customLabelClassName: import("prop-types").Requireable<string>;
|
|
32
|
+
iconName: import("prop-types").Validator<string>;
|
|
33
|
+
iconColor: import("prop-types").Validator<string>;
|
|
34
|
+
onClick: import("prop-types").Validator<(...args: any[]) => any>;
|
|
53
35
|
}> | null | undefined)[]>;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
isBulkMenu: import("prop-types").Requireable<boolean>;
|
|
36
|
+
buttonAriaLabel: import("prop-types").Requireable<string>;
|
|
37
|
+
disabled: import("prop-types").Validator<boolean>;
|
|
57
38
|
}>>;
|
|
58
|
-
actionButtons: import("prop-types").Validator<(import("prop-types").InferProps<{
|
|
59
|
-
type: import("prop-types").Requireable<string>;
|
|
60
|
-
usage: import("prop-types").Requireable<string>;
|
|
61
|
-
label: import("prop-types").Requireable<string>;
|
|
62
|
-
content: import("prop-types").Requireable<import("prop-types").ReactNodeLike>;
|
|
63
|
-
'aria-label': import("prop-types").Requireable<string>;
|
|
64
|
-
tooltipText: import("prop-types").Requireable<string>;
|
|
65
|
-
tooltipPlacement: import("prop-types").Requireable<string>;
|
|
66
|
-
'data-name': import("prop-types").Requireable<string>;
|
|
67
|
-
'data-testid': import("prop-types").Requireable<string>;
|
|
68
|
-
icon: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
69
|
-
position: import("prop-types").Requireable<string>;
|
|
70
|
-
type: import("prop-types").Requireable<string>;
|
|
71
|
-
faIcon: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
72
|
-
name: import("prop-types").Validator<string>;
|
|
73
|
-
color: import("prop-types").Requireable<string>;
|
|
74
|
-
backgroundColor: import("prop-types").Requireable<string>;
|
|
75
|
-
size: import("prop-types").Requireable<number>;
|
|
76
|
-
customStyle: import("prop-types").Requireable<{
|
|
77
|
-
[x: string]: NonNullable<string | number | null | undefined> | null | undefined;
|
|
78
|
-
}>;
|
|
79
|
-
}>>;
|
|
80
|
-
}>>;
|
|
81
|
-
onClick: import("prop-types").Requireable<(...args: any[]) => any>;
|
|
82
|
-
link: import("prop-types").Requireable<import("prop-types").InferProps<{
|
|
83
|
-
href: import("prop-types").Requireable<string>;
|
|
84
|
-
download: import("prop-types").Requireable<boolean>;
|
|
85
|
-
target: import("prop-types").Requireable<string>;
|
|
86
|
-
}>>;
|
|
87
|
-
hoverBackgroundColor: import("prop-types").Requireable<string>;
|
|
88
|
-
hoverColor: import("prop-types").Requireable<string>;
|
|
89
|
-
disabled: import("prop-types").Requireable<boolean>;
|
|
90
|
-
className: import("prop-types").Requireable<string>;
|
|
91
|
-
customStyle: import("prop-types").Requireable<{
|
|
92
|
-
[x: string]: NonNullable<string | number | null | undefined> | null | undefined;
|
|
93
|
-
}>;
|
|
94
|
-
useTitle: import("prop-types").Requireable<boolean>;
|
|
95
|
-
customLabelClassName: import("prop-types").Requireable<string>;
|
|
96
|
-
}> | null | undefined)[]>;
|
|
97
39
|
};
|
|
98
40
|
};
|
|
99
41
|
export default HeaderWithActions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/header-with-actions/index.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organism/header-with-actions/index.tsx"],"names":[],"mappings":";AAOA,OAAmC,EACjC,sBAAsB,EAGvB,MAAM,SAAS,CAAC;AAuEjB,QAAA,MAAM,iBAAiB;YAAW,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CvD,CAAC;AAIF,eAAe,iBAAiB,CAAC"}
|
|
@@ -6,13 +6,81 @@ import ButtonLink from '../../atom/button-link';
|
|
|
6
6
|
import ButtonLinkIcon from '../../atom/button-link-icon';
|
|
7
7
|
import Tag from '../../atom/tag';
|
|
8
8
|
import BulletPointMenuButton from '../../molecule/bullet-point-menu-button';
|
|
9
|
-
import
|
|
9
|
+
import HeaderWithActionsPropTypes from './types';
|
|
10
10
|
import style from './style.css';
|
|
11
11
|
const getDataName = suffix => `header-with-actions-${suffix}`;
|
|
12
12
|
// @ts-expect-error (need to get the index)
|
|
13
13
|
const uncappedMap = map.convert({
|
|
14
14
|
cap: false
|
|
15
15
|
});
|
|
16
|
+
const buildCloseButton = ({
|
|
17
|
+
onClick,
|
|
18
|
+
ariaLabel
|
|
19
|
+
}) => {
|
|
20
|
+
return {
|
|
21
|
+
size: 'default',
|
|
22
|
+
icon: 'close',
|
|
23
|
+
'data-name': 'close-button',
|
|
24
|
+
'aria-label': ariaLabel,
|
|
25
|
+
onClick
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
const buildButtonMenu = ({
|
|
29
|
+
dataName,
|
|
30
|
+
label,
|
|
31
|
+
iconName,
|
|
32
|
+
iconColor,
|
|
33
|
+
onClick
|
|
34
|
+
}) => {
|
|
35
|
+
return {
|
|
36
|
+
'data-name': dataName,
|
|
37
|
+
label,
|
|
38
|
+
buttonLinkType: 'tertiary',
|
|
39
|
+
icon: {
|
|
40
|
+
position: 'left',
|
|
41
|
+
faIcon: {
|
|
42
|
+
name: iconName,
|
|
43
|
+
color: iconColor,
|
|
44
|
+
size: 14
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
onClick,
|
|
48
|
+
type: iconName === 'trash' ? 'dangerousLeft' : 'defaultLeft'
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
const buildActionButton = ({
|
|
52
|
+
type,
|
|
53
|
+
label,
|
|
54
|
+
onClick,
|
|
55
|
+
disabled,
|
|
56
|
+
iconName,
|
|
57
|
+
iconColor
|
|
58
|
+
}) => {
|
|
59
|
+
const base = {
|
|
60
|
+
type,
|
|
61
|
+
label,
|
|
62
|
+
onClick,
|
|
63
|
+
disabled,
|
|
64
|
+
customStyle: {
|
|
65
|
+
fontWeight: '600',
|
|
66
|
+
borderRadius: '12px'
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
if (iconName && iconColor) {
|
|
70
|
+
return {
|
|
71
|
+
...base,
|
|
72
|
+
icon: {
|
|
73
|
+
position: 'left',
|
|
74
|
+
faIcon: {
|
|
75
|
+
name: iconName,
|
|
76
|
+
color: iconColor,
|
|
77
|
+
size: 14
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return base;
|
|
83
|
+
};
|
|
16
84
|
const HeaderWithActions = props => {
|
|
17
85
|
const {
|
|
18
86
|
closeButton,
|
|
@@ -28,7 +96,10 @@ const HeaderWithActions = props => {
|
|
|
28
96
|
}, /*#__PURE__*/React.createElement("div", {
|
|
29
97
|
className: style.titleAndButtonWrapper,
|
|
30
98
|
"data-name": getDataName('title-and-button-wrapper')
|
|
31
|
-
}, /*#__PURE__*/React.createElement(ButtonLinkIcon, _extends({},
|
|
99
|
+
}, /*#__PURE__*/React.createElement(ButtonLinkIcon, _extends({}, buildCloseButton({
|
|
100
|
+
onClick: closeButton.onClick,
|
|
101
|
+
ariaLabel: closeButton['aria-label']
|
|
102
|
+
}), {
|
|
32
103
|
className: style.button
|
|
33
104
|
})), /*#__PURE__*/React.createElement("div", {
|
|
34
105
|
className: style.titleWrapper
|
|
@@ -44,13 +115,14 @@ const HeaderWithActions = props => {
|
|
|
44
115
|
className: style.buttonsWrapper,
|
|
45
116
|
"data-name": getDataName('buttons-wrapper')
|
|
46
117
|
}, bulletPointMenuButton && !isEmpty(bulletPointMenuButton.buttons) ? /*#__PURE__*/React.createElement(BulletPointMenuButton, _extends({}, bulletPointMenuButton, {
|
|
47
|
-
|
|
118
|
+
buttons: uncappedMap(buildButtonMenu, bulletPointMenuButton.buttons),
|
|
119
|
+
"data-name": getDataName('bullet-point-menu-button')
|
|
48
120
|
})) : null, uncappedMap((action, key) => {
|
|
49
|
-
return /*#__PURE__*/React.createElement(ButtonLink, _extends({}, action, {
|
|
121
|
+
return /*#__PURE__*/React.createElement(ButtonLink, _extends({}, buildActionButton(action), {
|
|
50
122
|
key: key
|
|
51
123
|
}));
|
|
52
124
|
}, actionButtons)));
|
|
53
125
|
};
|
|
54
|
-
HeaderWithActions.propTypes = process.env.NODE_ENV !== "production" ?
|
|
126
|
+
HeaderWithActions.propTypes = process.env.NODE_ENV !== "production" ? HeaderWithActionsPropTypes : {};
|
|
55
127
|
export default HeaderWithActions;
|
|
56
128
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","isEmpty","map","ButtonLink","ButtonLinkIcon","Tag","BulletPointMenuButton","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","isEmpty","map","ButtonLink","ButtonLinkIcon","Tag","BulletPointMenuButton","HeaderWithActionsPropTypes","style","getDataName","suffix","uncappedMap","convert","cap","buildCloseButton","onClick","ariaLabel","size","icon","buildButtonMenu","dataName","label","iconName","iconColor","buttonLinkType","position","faIcon","name","color","type","buildActionButton","disabled","base","customStyle","fontWeight","borderRadius","HeaderWithActions","props","closeButton","title","tag","saveStatus","bulletPointMenuButton","actionButtons","createElement","className","headerWrapper","titleAndButtonWrapper","_extends","button","titleWrapper","statusWrapper","display","buttonsWrapper","buttons","action","key","propTypes","process","env","NODE_ENV"],"sources":["../../../src/organism/header-with-actions/index.tsx"],"sourcesContent":["import React from 'react';\nimport isEmpty from 'lodash/fp/isEmpty';\nimport map from 'lodash/fp/map';\nimport ButtonLink from '../../atom/button-link';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Tag from '../../atom/tag';\nimport BulletPointMenuButton from '../../molecule/bullet-point-menu-button';\nimport HeaderWithActionsPropTypes, {\n HeaderWithActionsProps,\n ButtonMenuProps,\n ButtonActionProps\n} from './types';\nimport style from './style.css';\n\nconst getDataName = (suffix: string) => `header-with-actions-${suffix}`;\n// @ts-expect-error (need to get the index)\nconst uncappedMap = map.convert({cap: false});\n\nconst buildCloseButton = ({onClick, ariaLabel}: {onClick: () => void; ariaLabel: string}) => {\n return {\n size: 'default',\n icon: 'close',\n 'data-name': 'close-button',\n 'aria-label': ariaLabel,\n onClick\n };\n};\n\nconst buildButtonMenu = ({dataName, label, iconName, iconColor, onClick}: ButtonMenuProps) => {\n return {\n 'data-name': dataName,\n label,\n buttonLinkType: 'tertiary',\n icon: {\n position: 'left' as const,\n faIcon: {\n name: iconName,\n color: iconColor,\n size: 14\n }\n },\n onClick,\n type: iconName === 'trash' ? 'dangerousLeft' : 'defaultLeft'\n };\n};\n\nconst buildActionButton = ({\n type,\n label,\n onClick,\n disabled,\n iconName,\n iconColor\n}: ButtonActionProps) => {\n const base = {\n type,\n label,\n onClick,\n disabled,\n customStyle: {\n fontWeight: '600',\n borderRadius: '12px'\n }\n };\n\n if (iconName && iconColor) {\n return {\n ...base,\n icon: {\n position: 'left' as const,\n faIcon: {\n name: iconName,\n color: iconColor,\n size: 14\n }\n }\n };\n }\n\n return base;\n};\n\nconst HeaderWithActions = (props: HeaderWithActionsProps) => {\n const {closeButton, title, tag, saveStatus, bulletPointMenuButton, actionButtons} = props;\n\n return (\n <div className={style.headerWrapper} data-name={getDataName('wrapper')}>\n <div\n className={style.titleAndButtonWrapper}\n data-name={getDataName('title-and-button-wrapper')}\n >\n <ButtonLinkIcon\n {...buildCloseButton({\n onClick: closeButton.onClick,\n ariaLabel: closeButton['aria-label']\n })}\n className={style.button}\n />\n <div className={style.titleWrapper}>\n <div className={style.statusWrapper}>\n <Tag {...tag} />\n {saveStatus.display && saveStatus.label ? (\n <p className={style.saveStatus}>{saveStatus.label}</p>\n ) : null}\n </div>\n <h3 className={style.title} aria-label={title} data-name={getDataName('title')}>\n {title}\n </h3>\n </div>\n </div>\n <div className={style.buttonsWrapper} data-name={getDataName('buttons-wrapper')}>\n {bulletPointMenuButton && !isEmpty(bulletPointMenuButton.buttons) ? (\n <BulletPointMenuButton\n {...bulletPointMenuButton}\n buttons={uncappedMap(buildButtonMenu, bulletPointMenuButton.buttons)}\n data-name={getDataName('bullet-point-menu-button')}\n />\n ) : null}\n {uncappedMap((action: ButtonActionProps, key: string) => {\n return <ButtonLink {...buildActionButton(action)} key={key} />;\n }, actionButtons)}\n </div>\n </div>\n );\n};\n\nHeaderWithActions.propTypes = HeaderWithActionsPropTypes;\n\nexport default HeaderWithActions;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import PropTypes from 'prop-types';
|
|
2
|
-
|
|
3
|
-
import { ButtonLinkProps } from '../../atom/button-link/types';
|
|
4
|
-
declare const headerWithActionsPropTypes: {
|
|
2
|
+
declare const HeaderWithActionsPropTypes: {
|
|
5
3
|
closeButton: PropTypes.Requireable<PropTypes.InferProps<{
|
|
6
|
-
|
|
7
|
-
icon: PropTypes.Validator<string>;
|
|
8
|
-
'data-name': PropTypes.Validator<string>;
|
|
9
|
-
'aria-label': PropTypes.Validator<string>;
|
|
4
|
+
'aria-label': PropTypes.Requireable<string>;
|
|
10
5
|
onClick: PropTypes.Validator<(...args: any[]) => any>;
|
|
11
6
|
}>>;
|
|
12
7
|
title: PropTypes.Validator<string>;
|
|
@@ -19,82 +14,27 @@ declare const headerWithActionsPropTypes: {
|
|
|
19
14
|
display: PropTypes.Validator<boolean>;
|
|
20
15
|
label: PropTypes.Requireable<string>;
|
|
21
16
|
}>>>;
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
actionButtons: PropTypes.Validator<(PropTypes.InferProps<{
|
|
18
|
+
type: PropTypes.Validator<string>;
|
|
19
|
+
label: PropTypes.Validator<string>;
|
|
20
|
+
onClick: PropTypes.Validator<(...args: any[]) => any>;
|
|
24
21
|
disabled: PropTypes.Requireable<boolean>;
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
iconName: PropTypes.Requireable<string>;
|
|
23
|
+
iconColor: PropTypes.Requireable<string>;
|
|
24
|
+
}> | null | undefined)[]>;
|
|
25
|
+
bulletPointMenuButton: PropTypes.Requireable<PropTypes.InferProps<{
|
|
27
26
|
buttons: PropTypes.Validator<(PropTypes.InferProps<{
|
|
28
|
-
|
|
29
|
-
disabled: PropTypes.Requireable<boolean>;
|
|
27
|
+
dataName: PropTypes.Requireable<string>;
|
|
30
28
|
label: PropTypes.Validator<string>;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
icon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
35
|
-
theme: PropTypes.Requireable<string>;
|
|
36
|
-
position: PropTypes.Requireable<string>;
|
|
37
|
-
type: PropTypes.Requireable<string>;
|
|
38
|
-
faIcon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
39
|
-
name: PropTypes.Validator<string>;
|
|
40
|
-
color: PropTypes.Requireable<string>;
|
|
41
|
-
backgroundColor: PropTypes.Requireable<string>;
|
|
42
|
-
size: PropTypes.Requireable<number>;
|
|
43
|
-
customStyle: PropTypes.Requireable<{
|
|
44
|
-
[x: string]: NonNullable<string | number | null | undefined> | null | undefined;
|
|
45
|
-
}>;
|
|
46
|
-
}>>;
|
|
47
|
-
}>>;
|
|
48
|
-
customStyle: PropTypes.Requireable<{
|
|
49
|
-
[x: string]: NonNullable<string | number | null | undefined> | null | undefined;
|
|
50
|
-
}>;
|
|
51
|
-
customLabelClassName: PropTypes.Requireable<string>;
|
|
29
|
+
iconName: PropTypes.Validator<string>;
|
|
30
|
+
iconColor: PropTypes.Validator<string>;
|
|
31
|
+
onClick: PropTypes.Validator<(...args: any[]) => any>;
|
|
52
32
|
}> | null | undefined)[]>;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
isBulkMenu: PropTypes.Requireable<boolean>;
|
|
33
|
+
buttonAriaLabel: PropTypes.Requireable<string>;
|
|
34
|
+
disabled: PropTypes.Validator<boolean>;
|
|
56
35
|
}>>;
|
|
57
|
-
actionButtons: PropTypes.Validator<(PropTypes.InferProps<{
|
|
58
|
-
type: PropTypes.Requireable<string>;
|
|
59
|
-
usage: PropTypes.Requireable<string>;
|
|
60
|
-
label: PropTypes.Requireable<string>;
|
|
61
|
-
content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
62
|
-
'aria-label': PropTypes.Requireable<string>;
|
|
63
|
-
tooltipText: PropTypes.Requireable<string>;
|
|
64
|
-
tooltipPlacement: PropTypes.Requireable<string>;
|
|
65
|
-
'data-name': PropTypes.Requireable<string>;
|
|
66
|
-
'data-testid': PropTypes.Requireable<string>;
|
|
67
|
-
icon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
68
|
-
position: PropTypes.Requireable<string>;
|
|
69
|
-
type: PropTypes.Requireable<string>;
|
|
70
|
-
faIcon: PropTypes.Requireable<PropTypes.InferProps<{
|
|
71
|
-
name: PropTypes.Validator<string>;
|
|
72
|
-
color: PropTypes.Requireable<string>;
|
|
73
|
-
backgroundColor: PropTypes.Requireable<string>;
|
|
74
|
-
size: PropTypes.Requireable<number>;
|
|
75
|
-
customStyle: PropTypes.Requireable<{
|
|
76
|
-
[x: string]: NonNullable<string | number | null | undefined> | null | undefined;
|
|
77
|
-
}>;
|
|
78
|
-
}>>;
|
|
79
|
-
}>>;
|
|
80
|
-
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
81
|
-
link: PropTypes.Requireable<PropTypes.InferProps<{
|
|
82
|
-
href: PropTypes.Requireable<string>;
|
|
83
|
-
download: PropTypes.Requireable<boolean>;
|
|
84
|
-
target: PropTypes.Requireable<string>;
|
|
85
|
-
}>>;
|
|
86
|
-
hoverBackgroundColor: PropTypes.Requireable<string>;
|
|
87
|
-
hoverColor: PropTypes.Requireable<string>;
|
|
88
|
-
disabled: PropTypes.Requireable<boolean>;
|
|
89
|
-
className: PropTypes.Requireable<string>;
|
|
90
|
-
customStyle: PropTypes.Requireable<{
|
|
91
|
-
[x: string]: NonNullable<string | number | null | undefined> | null | undefined;
|
|
92
|
-
}>;
|
|
93
|
-
useTitle: PropTypes.Requireable<boolean>;
|
|
94
|
-
customLabelClassName: PropTypes.Requireable<string>;
|
|
95
|
-
}> | null | undefined)[]>;
|
|
96
36
|
};
|
|
97
|
-
export default
|
|
37
|
+
export default HeaderWithActionsPropTypes;
|
|
98
38
|
declare type TagProps = {
|
|
99
39
|
label: 'Published' | 'Ongoing changes' | 'Draft' | 'Archived';
|
|
100
40
|
type: 'success' | 'progress' | 'warning';
|
|
@@ -105,18 +45,35 @@ declare type SaveStatusProps = {
|
|
|
105
45
|
label?: 'Unsaved changes' | 'Saved';
|
|
106
46
|
};
|
|
107
47
|
declare type CloseButtonProps = {
|
|
108
|
-
size: 'default' | 'small' | 'responsive';
|
|
109
|
-
icon: string;
|
|
110
|
-
'data-name': string;
|
|
111
48
|
'aria-label': string;
|
|
112
49
|
onClick: () => void;
|
|
113
50
|
};
|
|
51
|
+
export declare type ButtonMenuProps = {
|
|
52
|
+
dataName: string;
|
|
53
|
+
label: string;
|
|
54
|
+
iconName: string;
|
|
55
|
+
iconColor: string;
|
|
56
|
+
onClick: () => void;
|
|
57
|
+
};
|
|
58
|
+
declare type BulletPointMenuButtonProps = {
|
|
59
|
+
buttons: ButtonMenuProps[];
|
|
60
|
+
buttonAriaLabel?: string;
|
|
61
|
+
disabled: boolean;
|
|
62
|
+
};
|
|
63
|
+
export declare type ButtonActionProps = {
|
|
64
|
+
type: 'primary' | 'secondary';
|
|
65
|
+
label: string;
|
|
66
|
+
onClick: () => void;
|
|
67
|
+
disabled?: boolean;
|
|
68
|
+
iconName?: string;
|
|
69
|
+
iconColor?: string;
|
|
70
|
+
};
|
|
114
71
|
export declare type HeaderWithActionsProps = {
|
|
115
72
|
closeButton: CloseButtonProps;
|
|
116
73
|
title: string;
|
|
117
74
|
tag: TagProps;
|
|
118
75
|
saveStatus: SaveStatusProps;
|
|
119
|
-
actionButtons:
|
|
76
|
+
actionButtons: ButtonActionProps[];
|
|
120
77
|
bulletPointMenuButton?: BulletPointMenuButtonProps;
|
|
121
78
|
};
|
|
122
79
|
export declare type HeaderWithActionsPropsFixture = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/organism/header-with-actions/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/organism/header-with-actions/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAmBnC,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqB/B,CAAC;AAEF,eAAe,0BAA0B,CAAC;AAE1C,aAAK,QAAQ,GAAG;IACd,KAAK,EAAE,WAAW,GAAG,iBAAiB,GAAG,OAAO,GAAG,UAAU,CAAC;IAC9D,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,aAAK,eAAe,GAAG;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC;CACrC,CAAC;AAEF,aAAK,gBAAgB,GAAG;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,aAAK,0BAA0B,GAAG;IAChC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,sBAAsB,GAAG;IACnC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,QAAQ,CAAC;IACd,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,0BAA0B,CAAC;CACpD,CAAC;AAEF,oBAAY,6BAA6B,GAAG;IAAC,KAAK,EAAE,sBAAsB,CAAA;CAAC,CAAC"}
|