@semcore/d3-chart 17.0.0-prerelease.31 → 17.0.0-prerelease.36
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/CHANGELOG.md +11 -5
- package/lib/cjs/a11y/PlotA11yView.js +5 -5
- package/lib/cjs/a11y/PlotA11yView.js.map +1 -1
- package/lib/cjs/utils.js +3 -2
- package/lib/cjs/utils.js.map +1 -1
- package/lib/es6/a11y/PlotA11yView.js +4 -3
- package/lib/es6/a11y/PlotA11yView.js.map +1 -1
- package/lib/es6/utils.js +3 -2
- package/lib/es6/utils.js.map +1 -1
- package/lib/esm/a11y/PlotA11yView.mjs +3 -3
- package/lib/esm/utils.mjs +1 -1
- package/lib/types/a11y/PlotA11yView.d.ts +1 -1
- package/package.json +13 -13
package/CHANGELOG.md
CHANGED
|
@@ -2,12 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
|
5
|
-
## [17.0.0] - 2026-
|
|
5
|
+
## [17.0.0] - 2026-04-10
|
|
6
6
|
|
|
7
7
|
### BREAK
|
|
8
8
|
|
|
9
9
|
- Removed 2px border-radius for Bars.
|
|
10
10
|
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Refined a11y module invocation logic
|
|
14
|
+
|
|
15
|
+
## [16.6.0] - 2026-04-01
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Bubble chart plot size calculation.
|
|
20
|
+
|
|
11
21
|
### Added
|
|
12
22
|
|
|
13
23
|
- `percentFormatter` for Cigarette.
|
|
@@ -15,10 +25,6 @@ CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangel
|
|
|
15
25
|
clickable.
|
|
16
26
|
- `minimalBarWidth` for `Cigarette` chart.
|
|
17
27
|
|
|
18
|
-
### Changed
|
|
19
|
-
|
|
20
|
-
- Refined a11y module invocation logic
|
|
21
|
-
|
|
22
28
|
## [16.5.0] - 2026-02-10
|
|
23
29
|
|
|
24
30
|
### Added
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.PlotA11yView =
|
|
7
|
+
exports.PlotA11yView = PlotA11yView;
|
|
8
8
|
var _core = require("@semcore/core");
|
|
9
9
|
var _baseComponents = require("@semcore/base-components");
|
|
10
10
|
var _i18nEnhance = require("@semcore/core/lib/utils/enhances/i18nEnhance");
|
|
@@ -21,7 +21,7 @@ const styles = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_sta
|
|
|
21
21
|
{
|
|
22
22
|
"__SPlotA11yView": "___SPlotA11yView_9ugu2_gg_"
|
|
23
23
|
});
|
|
24
|
-
|
|
24
|
+
function PlotA11yView({
|
|
25
25
|
id,
|
|
26
26
|
payload: providedData,
|
|
27
27
|
hints,
|
|
@@ -31,7 +31,7 @@ const PlotA11yView = ({
|
|
|
31
31
|
config: providedConfig,
|
|
32
32
|
locale,
|
|
33
33
|
onCloseHandler
|
|
34
|
-
})
|
|
34
|
+
}) {
|
|
35
35
|
var _ref = arguments[0],
|
|
36
36
|
_ref2;
|
|
37
37
|
const SPlotA11yView = _baseComponents.Box;
|
|
@@ -157,6 +157,6 @@ const PlotA11yView = ({
|
|
|
157
157
|
"config": config,
|
|
158
158
|
"intl": intl
|
|
159
159
|
})));
|
|
160
|
-
}
|
|
161
|
-
|
|
160
|
+
}
|
|
161
|
+
;
|
|
162
162
|
//# sourceMappingURL=PlotA11yView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlotA11yView.js","names":["_core","require","_baseComponents","_i18nEnhance","_react","_interopRequireDefault","_DataAccessibilityTable","_focus","_hints","_intl","_summarize","_intergalacticDynamicLocales","styles","sstyled","insert","PlotA11yView","id","payload","providedData","hints","plotLabel","triggerRef","plotRef","config","providedConfig","locale","onCloseHandler","_ref","arguments[0]","_ref2","SPlotA11yView","Box","translations","useAsyncI18nMessages","localizedMessages","intl","React","useMemo","getIntl","makeDataSummarizationConfig","data","Array","isArray","rootRef","useRef","summary","setSummary","useState","generatingSummary","setGeneratingSummary","useEffect","current","focus","focusOutHandler","event","relatedTarget","requestIdleCallback","HTMLElement","contains","addEventListener","removeEventListener","disable","override","setTimeout","summarize","handleClose","useCallback","handleSkip","preventDefault","heavyFindNextFocusableElement","handleSkipKeyboard","key","handleGoToTable","dataTableRef","handleGoToTableKeyboard","texts","label","formatMessage","close","skipPlot","goToTable","summaryPlaceholder","table","default","createElement","cn","assignProps","DataAccessibilityTable","exports"],"sources":["../../../src/a11y/PlotA11yView.tsx"],"sourcesContent":["import { Box } from '@semcore/base-components';\nimport { Root, sstyled } from '@semcore/core';\nimport { useAsyncI18nMessages } from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport React from 'react';\n\nimport { DataAccessibilityTable } from './DataAccessibilityTable';\nimport { heavyFindNextFocusableElement } from './focus';\nimport { makeDataSummarizationConfig } from './hints';\nimport type { DataStructureHints, PartialDataSummarizationConfig } from './hints';\nimport { getIntl } from './intl';\nimport { summarize } from './summarize';\nimport styles from '../style/plotA11yView.shadow.css';\nimport { localizedMessages } from './translations/view/__intergalactic-dynamic-locales';\n\nexport type A11yViewProps = {\n id: string;\n payload: Record<string, unknown>[];\n hints: DataStructureHints;\n plotLabel: string;\n locale: NavigatorLanguage['language'];\n config: PartialDataSummarizationConfig;\n\n plotRef: React.RefObject<HTMLElement>;\n triggerRef: React.RefObject<HTMLElement>;\n onCloseHandler: () => void;\n};\n\nexport const PlotA11yView: React.FC<A11yViewProps> = ({\n id,\n payload: providedData,\n hints,\n plotLabel,\n triggerRef,\n plotRef,\n config: providedConfig,\n locale,\n onCloseHandler,\n}) => {\n const SPlotA11yView = Root;\n const translations = useAsyncI18nMessages(localizedMessages, locale);\n const intl = React.useMemo(\n () => getIntl(locale, translations, localizedMessages),\n [locale, translations, localizedMessages],\n );\n const config = React.useMemo(() => makeDataSummarizationConfig(providedConfig), [providedConfig]);\n const data = React.useMemo(\n () => (Array.isArray(providedData) ? providedData : [providedData]),\n [providedData],\n );\n const rootRef = React.useRef<HTMLDivElement>(null);\n\n const [summary, setSummary] = React.useState<string | null>(null);\n const [generatingSummary, setGeneratingSummary] = React.useState(true);\n\n React.useEffect(() => {\n rootRef.current?.focus();\n\n function focusOutHandler(event: FocusEvent) {\n if (event.relatedTarget === null) {\n return requestIdleCallback(onCloseHandler);\n }\n\n if (!(event.relatedTarget instanceof HTMLElement)) return;\n\n if (rootRef.current?.contains(event.relatedTarget)) return;\n\n requestIdleCallback(onCloseHandler);\n }\n\n rootRef.current?.addEventListener('focusout', focusOutHandler);\n return () => rootRef.current?.removeEventListener('focusout', focusOutHandler);\n }, []);\n\n React.useEffect(() => {\n if (config.disable) {\n setSummary('');\n setGeneratingSummary(false);\n return;\n }\n if (config.override) {\n setSummary(config.override);\n setGeneratingSummary(false);\n return;\n }\n setTimeout(() => {\n setSummary(summarize(providedData, hints, config, locale, translations, localizedMessages));\n setGeneratingSummary(false);\n }, 0);\n }, [providedData, hints, config, locale, translations, localizedMessages]);\n\n const handleClose = React.useCallback(() => {\n onCloseHandler();\n\n requestIdleCallback(() => {\n triggerRef.current?.focus();\n });\n }, []);\n const handleSkip = React.useCallback((event: React.SyntheticEvent) => {\n event.preventDefault();\n if (!plotRef.current) return;\n\n heavyFindNextFocusableElement(plotRef.current)?.focus();\n\n onCloseHandler();\n }, []);\n const handleSkipKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!(event.key === 'Enter' || event.key === ' ')) return;\n\n handleSkip(event);\n },\n [handleSkip],\n );\n const handleGoToTable = React.useCallback((event: React.SyntheticEvent) => {\n event.preventDefault();\n dataTableRef.current?.focus();\n }, []);\n const handleGoToTableKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!(event.key === 'Enter' || event.key === ' ')) return;\n\n handleGoToTable(event);\n },\n [handleGoToTable],\n );\n\n const texts = React.useMemo(\n () => ({\n label: intl.formatMessage(\n { id: 'view-label' },\n { plotLabel: plotLabel ?? intl.formatMessage({ id: 'view-default-plot-label' }) },\n ),\n close: intl.formatMessage({ id: 'view-close' }),\n skipPlot: intl.formatMessage({ id: 'view-skip-plot' }),\n goToTable: intl.formatMessage({ id: 'view-go-to-table' }),\n summary: intl.formatMessage({ id: 'view-data-summary' }),\n summaryPlaceholder: intl.formatMessage({ id: 'view-summary-placeholder' }),\n table: intl.formatMessage({ id: 'view-table' }),\n }),\n [intl, plotLabel],\n );\n\n const dataTableRef = React.useRef<HTMLTableElement>(null);\n\n return sstyled(styles)(\n <SPlotA11yView\n render={Box}\n tabIndex={0}\n aria-label={texts.label}\n role='dialog'\n __excludeProps={['data']}\n ref={rootRef}\n >\n <button type='button' onClick={handleClose}>\n {texts.close}\n </button>\n <a href='#' onKeyDown={handleSkipKeyboard} onClick={handleSkip}>\n {texts.skipPlot}\n </a>\n <a href={`#${id}-data-table`} onKeyDown={handleGoToTableKeyboard} onClick={handleGoToTable}>\n {texts.goToTable}\n </a>\n <strong>\n <label htmlFor={`${id}-data-summary`}>{texts.summary}</label>\n </strong>\n <div id={`${id}-data-summary`} aria-busy={generatingSummary}>\n {generatingSummary ? texts.summaryPlaceholder : summary}\n </div>\n <strong>\n <label htmlFor={`${id}-data-table`}>{texts.table}</label>\n </strong>\n <DataAccessibilityTable\n id={id}\n dataTableRef={dataTableRef}\n data={data}\n hints={hints}\n config={config}\n intl={intl}\n />\n </SPlotA11yView>,\n ) as React.ReactElement;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PlotA11yView.js","names":["_core","require","_baseComponents","_i18nEnhance","_react","_interopRequireDefault","_DataAccessibilityTable","_focus","_hints","_intl","_summarize","_intergalacticDynamicLocales","styles","sstyled","insert","PlotA11yView","id","payload","providedData","hints","plotLabel","triggerRef","plotRef","config","providedConfig","locale","onCloseHandler","_ref","arguments[0]","_ref2","SPlotA11yView","Box","translations","useAsyncI18nMessages","localizedMessages","intl","React","useMemo","getIntl","makeDataSummarizationConfig","data","Array","isArray","rootRef","useRef","summary","setSummary","useState","generatingSummary","setGeneratingSummary","useEffect","current","focus","focusOutHandler","event","relatedTarget","requestIdleCallback","HTMLElement","contains","addEventListener","removeEventListener","disable","override","setTimeout","summarize","handleClose","useCallback","handleSkip","preventDefault","heavyFindNextFocusableElement","handleSkipKeyboard","key","handleGoToTable","dataTableRef","handleGoToTableKeyboard","texts","label","formatMessage","close","skipPlot","goToTable","summaryPlaceholder","table","default","createElement","cn","assignProps","DataAccessibilityTable"],"sources":["../../../src/a11y/PlotA11yView.tsx"],"sourcesContent":["import { Box } from '@semcore/base-components';\nimport { Root, sstyled } from '@semcore/core';\nimport { useAsyncI18nMessages } from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport React from 'react';\n\nimport { DataAccessibilityTable } from './DataAccessibilityTable';\nimport { heavyFindNextFocusableElement } from './focus';\nimport { makeDataSummarizationConfig } from './hints';\nimport type { DataStructureHints, PartialDataSummarizationConfig } from './hints';\nimport { getIntl } from './intl';\nimport { summarize } from './summarize';\nimport styles from '../style/plotA11yView.shadow.css';\nimport { localizedMessages } from './translations/view/__intergalactic-dynamic-locales';\n\nexport type A11yViewProps = {\n id: string;\n payload: Record<string, unknown>[];\n hints: DataStructureHints;\n plotLabel: string;\n locale: NavigatorLanguage['language'];\n config: PartialDataSummarizationConfig;\n\n plotRef: React.RefObject<HTMLElement>;\n triggerRef: React.RefObject<HTMLElement>;\n onCloseHandler: () => void;\n};\n\nexport function PlotA11yView({\n id,\n payload: providedData,\n hints,\n plotLabel,\n triggerRef,\n plotRef,\n config: providedConfig,\n locale,\n onCloseHandler,\n}: A11yViewProps) {\n const SPlotA11yView = Root;\n const translations = useAsyncI18nMessages(localizedMessages, locale);\n const intl = React.useMemo(\n () => getIntl(locale, translations, localizedMessages),\n [locale, translations, localizedMessages],\n );\n const config = React.useMemo(() => makeDataSummarizationConfig(providedConfig), [providedConfig]);\n const data = React.useMemo(\n () => (Array.isArray(providedData) ? providedData : [providedData]),\n [providedData],\n );\n const rootRef = React.useRef<HTMLDivElement>(null);\n\n const [summary, setSummary] = React.useState<string | null>(null);\n const [generatingSummary, setGeneratingSummary] = React.useState(true);\n\n React.useEffect(() => {\n rootRef.current?.focus();\n\n function focusOutHandler(event: FocusEvent) {\n if (event.relatedTarget === null) {\n return requestIdleCallback(onCloseHandler);\n }\n\n if (!(event.relatedTarget instanceof HTMLElement)) return;\n\n if (rootRef.current?.contains(event.relatedTarget)) return;\n\n requestIdleCallback(onCloseHandler);\n }\n\n rootRef.current?.addEventListener('focusout', focusOutHandler);\n return () => rootRef.current?.removeEventListener('focusout', focusOutHandler);\n }, []);\n\n React.useEffect(() => {\n if (config.disable) {\n setSummary('');\n setGeneratingSummary(false);\n return;\n }\n if (config.override) {\n setSummary(config.override);\n setGeneratingSummary(false);\n return;\n }\n setTimeout(() => {\n setSummary(summarize(providedData, hints, config, locale, translations, localizedMessages));\n setGeneratingSummary(false);\n }, 0);\n }, [providedData, hints, config, locale, translations, localizedMessages]);\n\n const handleClose = React.useCallback(() => {\n onCloseHandler();\n\n requestIdleCallback(() => {\n triggerRef.current?.focus();\n });\n }, []);\n const handleSkip = React.useCallback((event: React.SyntheticEvent) => {\n event.preventDefault();\n if (!plotRef.current) return;\n\n heavyFindNextFocusableElement(plotRef.current)?.focus();\n\n onCloseHandler();\n }, []);\n const handleSkipKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!(event.key === 'Enter' || event.key === ' ')) return;\n\n handleSkip(event);\n },\n [handleSkip],\n );\n const handleGoToTable = React.useCallback((event: React.SyntheticEvent) => {\n event.preventDefault();\n dataTableRef.current?.focus();\n }, []);\n const handleGoToTableKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!(event.key === 'Enter' || event.key === ' ')) return;\n\n handleGoToTable(event);\n },\n [handleGoToTable],\n );\n\n const texts = React.useMemo(\n () => ({\n label: intl.formatMessage(\n { id: 'view-label' },\n { plotLabel: plotLabel ?? intl.formatMessage({ id: 'view-default-plot-label' }) },\n ),\n close: intl.formatMessage({ id: 'view-close' }),\n skipPlot: intl.formatMessage({ id: 'view-skip-plot' }),\n goToTable: intl.formatMessage({ id: 'view-go-to-table' }),\n summary: intl.formatMessage({ id: 'view-data-summary' }),\n summaryPlaceholder: intl.formatMessage({ id: 'view-summary-placeholder' }),\n table: intl.formatMessage({ id: 'view-table' }),\n }),\n [intl, plotLabel],\n );\n\n const dataTableRef = React.useRef<HTMLTableElement>(null);\n\n return sstyled(styles)(\n <SPlotA11yView\n render={Box}\n tabIndex={0}\n aria-label={texts.label}\n role='dialog'\n __excludeProps={['data']}\n ref={rootRef}\n >\n <button type='button' onClick={handleClose}>\n {texts.close}\n </button>\n <a href='#' onKeyDown={handleSkipKeyboard} onClick={handleSkip}>\n {texts.skipPlot}\n </a>\n <a href={`#${id}-data-table`} onKeyDown={handleGoToTableKeyboard} onClick={handleGoToTable}>\n {texts.goToTable}\n </a>\n <strong>\n <label htmlFor={`${id}-data-summary`}>{texts.summary}</label>\n </strong>\n <div id={`${id}-data-summary`} aria-busy={generatingSummary}>\n {generatingSummary ? texts.summaryPlaceholder : summary}\n </div>\n <strong>\n <label htmlFor={`${id}-data-table`}>{texts.table}</label>\n </strong>\n <DataAccessibilityTable\n id={id}\n dataTableRef={dataTableRef}\n data={data}\n hints={hints}\n config={config}\n intl={intl}\n />\n </SPlotA11yView>,\n ) as React.ReactElement;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/cjs/utils.js
CHANGED
|
@@ -199,7 +199,8 @@ const getChartDefaultColorName = index => {
|
|
|
199
199
|
};
|
|
200
200
|
exports.getChartDefaultColorName = getChartDefaultColorName;
|
|
201
201
|
const getBubbleChartValueScale = (data, key) => {
|
|
202
|
-
const z = (0, _d3Scale.scaleSqrt)().domain([0, Math.max(...data.map(el => el[key]))]).range([5.5, 50.5]);
|
|
202
|
+
const z = (0, _d3Scale.scaleSqrt)().domain([0, Math.max(...data.map(el => el[key]))]).range([5.5, 50.5]); // min/max radius
|
|
203
|
+
|
|
203
204
|
return z;
|
|
204
205
|
};
|
|
205
206
|
exports.getBubbleChartValueScale = getBubbleChartValueScale;
|
|
@@ -235,7 +236,7 @@ const calculateBubbleDomain = (data, key, range) => {
|
|
|
235
236
|
const maxValueShift = valueScale(maxestValue) * pixelRatio;
|
|
236
237
|
min -= minValueShift * 2;
|
|
237
238
|
max += maxValueShift * 2;
|
|
238
|
-
return [min, max];
|
|
239
|
+
return [Math.floor(min), Math.floor(max)];
|
|
239
240
|
};
|
|
240
241
|
exports.calculateBubbleDomain = calculateBubbleDomain;
|
|
241
242
|
const PlotEventEmitter = exports.PlotEventEmitter = _eventEmitter.default;
|
package/lib/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["_eventEmitter","_interopRequireDefault","require","_d3Array","_d3Scale","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","exports","invert","scale","value","range","domain","paddingOuter","step","scaleQuantize","slice","reverse","definedNullData","x","y","plot","definedData","undefined","scaleOfBandwidth","bandwidth","minMax","data","key","extent","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","Array","isArray","bisect","bisector","center","index","findIndex","keys","Object","map","_key","item","interpolateValue","lastKeyIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","scaleToBand","band","scaleBand","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","line","split","append","createTextNode","display","body","textWidth","offsetWidth","textHeight","offsetHeight","remove","Math","max","idCounter","uniqueId","prefix","Symbol","getChartDefaultColorName","getBubbleChartValueScale","z","scaleSqrt","el","getScatterPlotRadius","valueKey","calculateBubbleDomain","miniestValue","min","maxestValue","pixelRatio","abs","valueScale","minValueShift","maxValueShift","PlotEventEmitter","EventEmitter"],"sources":["../../src/utils.ts"],"sourcesContent":["import EventEmitter from '@semcore/core/lib/utils/eventEmitter';\nimport { extent, bisector, type Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n type ScaleIdentity,\n type ScaleTime,\n type ScaleContinuousNumeric,\n type ScaleBand,\n type ScalePoint,\n type NumberValue,\n scaleBand,\n scaleSqrt,\n} from 'd3-scale';\nimport type React from 'react';\n\nexport const eventToPoint = (event: React.MouseEvent<HTMLElement>, svgRoot: SVGElement) => {\n const node = (event.currentTarget || event.target) as HTMLElement;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n};\n\ntype InvertableScale =\n | ScaleIdentity\n | ScaleBand<{}>\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if ('invert' in scale && scale.invert) return scale.invert(value);\n\n const range = scale.range() as [number, number];\n const domain = scale.domain();\n if ('paddingOuter' in scale) {\n range[0] += scale.paddingOuter() * scale.step();\n range[1] -= scale.paddingOuter() * scale.step();\n }\n\n return scaleQuantize()\n .domain((range[0] <= range[1] ? range : range.slice().reverse()) as NumberValue[])\n .range((range[0] <= range[1] ? domain : domain.slice().reverse()) as number[])(value);\n};\n\nexport const definedNullData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[y] !== null;\n\nexport const definedData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[x] !== undefined && plot[y] !== null && plot[y] !== undefined;\n\nexport const scaleOfBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale, value: number) =>\n scale.bandwidth ? scale(value)! + scale.bandwidth() / 2 : scale(value);\n\nexport const minMax = <\n Key extends string = string,\n Data extends { [key: string]: Numeric | null | undefined }[] = {\n [key: string]: Numeric | null | undefined;\n }[],\n>(\n data: Data,\n key: Key,\n): [min: Data[0][Key], max: Data[0][Key]] => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]) as any;\n }\n return extent(data, key) as any;\n};\n\nexport const getNullData = <\n Name extends string = string,\n Data extends { [name in Name]?: unknown | null } = {},\n>(\n data: Data[],\n defined: (data: Data) => boolean,\n name: Name,\n) =>\n data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n } as Data);\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data.slice().reverse().find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, [] as Data[]);\n\ntype IndexFromDataScale =\n | ScaleIdentity\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>\n | ScaleBand<{}>\n | ScalePoint<{}>;\nexport const getIndexFromData = <\n Key extends string,\n Data extends {\n [key in Key]: number;\n } = { [key in Key]: number },\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: Key,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function' && Array.isArray(data)) {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n } else if ('step' in scale && typeof scale.step !== 'undefined' && Array.isArray(data)) { // detect bar chart\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else if ('invert' in scale && typeof scale.invert === 'function' && !Array.isArray(data)) { // detect cigarette chart\n const keys = Object.keys(data);\n const domain = keys.map((_key, index) => {\n return keys.slice(0, index).reduce((acc, item) => {\n if (data[item] !== interpolateValue) {\n acc = acc + data[item];\n }\n\n return acc;\n }, 0);\n });\n\n let key = null;\n\n const lastKeyIndex = keys.length - 1;\n\n if (value > domain[lastKeyIndex]) {\n key = keys[lastKeyIndex];\n } else {\n for (let i = 0; i < lastKeyIndex; i++) {\n if (i === 0 && value < domain[i]) {\n break;\n }\n\n if (value > domain[i] && value < domain[i + 1]) {\n key = keys[i];\n break;\n }\n }\n }\n\n return key;\n } else {\n // eslint-disable-next-line no-console\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n};\n\nexport const roundedPath = (\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n tl = false,\n tr = false,\n bl = false,\n br = false,\n) => {\n let result = `M${x + r},${y}`;\n result += `h${w - 2 * r}`;\n if (tr) {\n result += `a${r},${r} 0 0 1 ${r},${r}`;\n } else {\n result += `h${r}`;\n result += `v${r}`;\n }\n result += `v${h - 2 * r}`;\n if (br) {\n result += `a${r},${r} 0 0 1 ${-r},${r}`;\n } else {\n result += `v${r}`;\n result += `h${-r}`;\n }\n result += `h${2 * r - w}`;\n if (bl) {\n result += `a${r},${r} 0 0 1 ${-r},${-r}`;\n } else {\n result += `h${-r}`;\n result += `v${-r}`;\n }\n result += `v${2 * r - h}`;\n if (tl) {\n result += `a${r},${r} 0 0 1 ${r},${-r}`;\n } else {\n result += `v${-r}`;\n result += `h${r}`;\n }\n result += 'z';\n return result;\n};\n\nexport const scaleToBand = (scale: ScaleBand<{}>) => {\n if ('bandwidth' in scale) {\n return scale;\n }\n\n const band = scaleBand()\n .range((scale as any).range())\n .domain((scale as any).domain());\n\n return band;\n};\n\nexport const memoize = <Func extends (...args: any[]) => any>(func: Func): Func => {\n const results: { [cacheKey: string]: any } = {};\n return ((...args: any[]) => {\n const argsKey = args.join(',');\n if (!results[argsKey]) {\n results[argsKey] = func(...args);\n }\n return results[argsKey];\n }) as Func;\n};\n\nexport const measureText = memoize((text: string, fontSize?: number) => {\n if (!text) return 0;\n\n const span = document.createElement('span');\n if (fontSize) {\n span.style.fontSize = `${fontSize}px`;\n }\n for (const line of text.split('\\n')) {\n span.append(document.createTextNode(line));\n span.append(document.createElement('br'));\n }\n span.style.display = 'inline-block';\n document.body.append(span);\n const textWidth = span.offsetWidth;\n const textHeight = span.offsetHeight;\n span.remove();\n return Math.max(textWidth, textHeight);\n});\n\nlet idCounter = 0;\nexport const uniqueId = (prefix = 'id-') => `${prefix}${idCounter++}`;\n\nexport const interpolateValue = Symbol('intergalactic-d3-chart-line-interpolate');\n\nexport const getChartDefaultColorName = (index: number) => {\n index++;\n if (index < 1) index = 1;\n if (index > 24) index %= 24;\n\n return `chart-palette-order-${index}`;\n};\n\nexport const getBubbleChartValueScale = (data: any[], key: string) => {\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[key]))])\n .range([5.5, 50.5]);\n\n return z;\n};\n\nexport const getScatterPlotRadius = (valueKey?: string): number => {\n return valueKey !== undefined ? 12 : 5.5;\n};\n\ntype BubbleChartDataItem = {\n value: number;\n x: number;\n y: number;\n};\n\nexport const calculateBubbleDomain = (\n data: Array<BubbleChartDataItem>,\n key: 'x' | 'y',\n range: [number, number],\n): [min: number, max: number] => {\n const miniestValue = data.reduce(\n (acc, item) => {\n if (item[key] - item.value < acc.min) {\n acc.min = item[key] - item.value;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, min: data[0][key] - data[0].value },\n ).value;\n const maxestValue = data.reduce(\n (acc, item) => {\n if (item.value + item[key] > acc.max) {\n acc.max = item.value + item.x;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, max: data[0].value + data[0][key] },\n ).value;\n\n let [min, max] = minMax(data, key);\n\n const pixelRatio = Math.abs(max - min) / Math.abs(range[0] - range[1]);\n const valueScale = getBubbleChartValueScale(data, 'value');\n const minValueShift = valueScale(miniestValue) * pixelRatio;\n const maxValueShift = valueScale(maxestValue) * pixelRatio;\n min -= minValueShift * 2;\n max += maxValueShift * 2;\n\n return [min, max];\n};\n\ntype CommonEvents = {\n setTooltipVisible: (visible: boolean) => void;\n setTooltipPosition: (x: number, y: number) => void;\n};\n\ntype Events = {\n [K in keyof CommonEvents as `${K}_${string}`]: CommonEvents[K];\n};\n\nexport const PlotEventEmitter = EventEmitter<Events>;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"utils.js","names":["_eventEmitter","_interopRequireDefault","require","_d3Array","_d3Scale","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","exports","invert","scale","value","range","domain","paddingOuter","step","scaleQuantize","slice","reverse","definedNullData","x","y","plot","definedData","undefined","scaleOfBandwidth","bandwidth","minMax","data","key","extent","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","Array","isArray","bisect","bisector","center","index","findIndex","keys","Object","map","_key","item","interpolateValue","lastKeyIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","scaleToBand","band","scaleBand","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","line","split","append","createTextNode","display","body","textWidth","offsetWidth","textHeight","offsetHeight","remove","Math","max","idCounter","uniqueId","prefix","Symbol","getChartDefaultColorName","getBubbleChartValueScale","z","scaleSqrt","el","getScatterPlotRadius","valueKey","calculateBubbleDomain","miniestValue","min","maxestValue","pixelRatio","abs","valueScale","minValueShift","maxValueShift","floor","PlotEventEmitter","EventEmitter"],"sources":["../../src/utils.ts"],"sourcesContent":["import EventEmitter from '@semcore/core/lib/utils/eventEmitter';\nimport { extent, bisector, type Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n type ScaleIdentity,\n type ScaleTime,\n type ScaleContinuousNumeric,\n type ScaleBand,\n type ScalePoint,\n type NumberValue,\n scaleBand,\n scaleSqrt,\n} from 'd3-scale';\nimport type React from 'react';\n\nexport const eventToPoint = (event: React.MouseEvent<HTMLElement>, svgRoot: SVGElement) => {\n const node = (event.currentTarget || event.target) as HTMLElement;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n};\n\ntype InvertableScale =\n | ScaleIdentity\n | ScaleBand<{}>\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if ('invert' in scale && scale.invert) return scale.invert(value);\n\n const range = scale.range() as [number, number];\n const domain = scale.domain();\n if ('paddingOuter' in scale) {\n range[0] += scale.paddingOuter() * scale.step();\n range[1] -= scale.paddingOuter() * scale.step();\n }\n\n return scaleQuantize()\n .domain((range[0] <= range[1] ? range : range.slice().reverse()) as NumberValue[])\n .range((range[0] <= range[1] ? domain : domain.slice().reverse()) as number[])(value);\n};\n\nexport const definedNullData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[y] !== null;\n\nexport const definedData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[x] !== undefined && plot[y] !== null && plot[y] !== undefined;\n\nexport const scaleOfBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale, value: number) =>\n scale.bandwidth ? scale(value)! + scale.bandwidth() / 2 : scale(value);\n\nexport const minMax = <\n Key extends string = string,\n Data extends { [key: string]: Numeric | null | undefined }[] = {\n [key: string]: Numeric | null | undefined;\n }[],\n>(\n data: Data,\n key: Key,\n): [min: Data[0][Key], max: Data[0][Key]] => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]) as any;\n }\n return extent(data, key) as any;\n};\n\nexport const getNullData = <\n Name extends string = string,\n Data extends { [name in Name]?: unknown | null } = {},\n>(\n data: Data[],\n defined: (data: Data) => boolean,\n name: Name,\n) =>\n data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n } as Data);\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data.slice().reverse().find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, [] as Data[]);\n\ntype IndexFromDataScale =\n | ScaleIdentity\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>\n | ScaleBand<{}>\n | ScalePoint<{}>;\nexport const getIndexFromData = <\n Key extends string,\n Data extends {\n [key in Key]: number;\n } = { [key in Key]: number },\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: Key,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function' && Array.isArray(data)) {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n } else if ('step' in scale && typeof scale.step !== 'undefined' && Array.isArray(data)) { // detect bar chart\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else if ('invert' in scale && typeof scale.invert === 'function' && !Array.isArray(data)) { // detect cigarette chart\n const keys = Object.keys(data);\n const domain = keys.map((_key, index) => {\n return keys.slice(0, index).reduce((acc, item) => {\n if (data[item] !== interpolateValue) {\n acc = acc + data[item];\n }\n\n return acc;\n }, 0);\n });\n\n let key = null;\n\n const lastKeyIndex = keys.length - 1;\n\n if (value > domain[lastKeyIndex]) {\n key = keys[lastKeyIndex];\n } else {\n for (let i = 0; i < lastKeyIndex; i++) {\n if (i === 0 && value < domain[i]) {\n break;\n }\n\n if (value > domain[i] && value < domain[i + 1]) {\n key = keys[i];\n break;\n }\n }\n }\n\n return key;\n } else {\n // eslint-disable-next-line no-console\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n};\n\nexport const roundedPath = (\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n tl = false,\n tr = false,\n bl = false,\n br = false,\n) => {\n let result = `M${x + r},${y}`;\n result += `h${w - 2 * r}`;\n if (tr) {\n result += `a${r},${r} 0 0 1 ${r},${r}`;\n } else {\n result += `h${r}`;\n result += `v${r}`;\n }\n result += `v${h - 2 * r}`;\n if (br) {\n result += `a${r},${r} 0 0 1 ${-r},${r}`;\n } else {\n result += `v${r}`;\n result += `h${-r}`;\n }\n result += `h${2 * r - w}`;\n if (bl) {\n result += `a${r},${r} 0 0 1 ${-r},${-r}`;\n } else {\n result += `h${-r}`;\n result += `v${-r}`;\n }\n result += `v${2 * r - h}`;\n if (tl) {\n result += `a${r},${r} 0 0 1 ${r},${-r}`;\n } else {\n result += `v${-r}`;\n result += `h${r}`;\n }\n result += 'z';\n return result;\n};\n\nexport const scaleToBand = (scale: ScaleBand<{}>) => {\n if ('bandwidth' in scale) {\n return scale;\n }\n\n const band = scaleBand()\n .range((scale as any).range())\n .domain((scale as any).domain());\n\n return band;\n};\n\nexport const memoize = <Func extends (...args: any[]) => any>(func: Func): Func => {\n const results: { [cacheKey: string]: any } = {};\n return ((...args: any[]) => {\n const argsKey = args.join(',');\n if (!results[argsKey]) {\n results[argsKey] = func(...args);\n }\n return results[argsKey];\n }) as Func;\n};\n\nexport const measureText = memoize((text: string, fontSize?: number) => {\n if (!text) return 0;\n\n const span = document.createElement('span');\n if (fontSize) {\n span.style.fontSize = `${fontSize}px`;\n }\n for (const line of text.split('\\n')) {\n span.append(document.createTextNode(line));\n span.append(document.createElement('br'));\n }\n span.style.display = 'inline-block';\n document.body.append(span);\n const textWidth = span.offsetWidth;\n const textHeight = span.offsetHeight;\n span.remove();\n return Math.max(textWidth, textHeight);\n});\n\nlet idCounter = 0;\nexport const uniqueId = (prefix = 'id-') => `${prefix}${idCounter++}`;\n\nexport const interpolateValue = Symbol('intergalactic-d3-chart-line-interpolate');\n\nexport const getChartDefaultColorName = (index: number) => {\n index++;\n if (index < 1) index = 1;\n if (index > 24) index %= 24;\n\n return `chart-palette-order-${index}`;\n};\n\nexport const getBubbleChartValueScale = (data: any[], key: string) => {\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[key]))])\n .range([5.5, 50.5]); // min/max radius\n\n return z;\n};\n\nexport const getScatterPlotRadius = (valueKey?: string): number => {\n return valueKey !== undefined ? 12 : 5.5;\n};\n\ntype BubbleChartDataItem = {\n value: number;\n x: number;\n y: number;\n};\n\nexport const calculateBubbleDomain = (\n data: Array<BubbleChartDataItem>,\n key: 'x' | 'y',\n range: [number, number],\n): [min: number, max: number] => {\n const miniestValue = data.reduce(\n (acc, item) => {\n if (item[key] - item.value < acc.min) {\n acc.min = item[key] - item.value;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, min: data[0][key] - data[0].value },\n ).value;\n const maxestValue = data.reduce(\n (acc, item) => {\n if (item.value + item[key] > acc.max) {\n acc.max = item.value + item.x;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, max: data[0].value + data[0][key] },\n ).value;\n\n let [min, max] = minMax(data, key);\n\n const pixelRatio = Math.abs(max - min) / Math.abs(range[0] - range[1]);\n const valueScale = getBubbleChartValueScale(data, 'value');\n const minValueShift = valueScale(miniestValue) * pixelRatio;\n const maxValueShift = valueScale(maxestValue) * pixelRatio;\n min -= minValueShift * 2;\n max += maxValueShift * 2;\n\n return [Math.floor(min), Math.floor(max)];\n};\n\ntype CommonEvents = {\n setTooltipVisible: (visible: boolean) => void;\n setTooltipPosition: (x: number, y: number) => void;\n};\n\ntype Events = {\n [K in keyof CommonEvents as `${K}_${string}`]: CommonEvents[K];\n};\n\nexport const PlotEventEmitter = EventEmitter<Events>;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,7 +16,7 @@ const styles = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*
|
|
|
16
16
|
"__SPlotA11yView": "___SPlotA11yView_9ugu2_gg_"
|
|
17
17
|
});
|
|
18
18
|
import { localizedMessages } from './translations/view/__intergalactic-dynamic-locales';
|
|
19
|
-
export
|
|
19
|
+
export function PlotA11yView({
|
|
20
20
|
id,
|
|
21
21
|
payload: providedData,
|
|
22
22
|
hints,
|
|
@@ -26,7 +26,7 @@ export const PlotA11yView = ({
|
|
|
26
26
|
config: providedConfig,
|
|
27
27
|
locale,
|
|
28
28
|
onCloseHandler
|
|
29
|
-
})
|
|
29
|
+
}) {
|
|
30
30
|
var _ref = arguments[0],
|
|
31
31
|
_ref2;
|
|
32
32
|
const SPlotA11yView = Box;
|
|
@@ -152,5 +152,6 @@ export const PlotA11yView = ({
|
|
|
152
152
|
"config": config,
|
|
153
153
|
"intl": intl
|
|
154
154
|
})));
|
|
155
|
-
}
|
|
155
|
+
}
|
|
156
|
+
;
|
|
156
157
|
//# sourceMappingURL=PlotA11yView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlotA11yView.js","names":["Box","Root","sstyled","useAsyncI18nMessages","React","DataAccessibilityTable","heavyFindNextFocusableElement","makeDataSummarizationConfig","getIntl","summarize","styles","_sstyled","insert","localizedMessages","PlotA11yView","id","payload","providedData","hints","plotLabel","triggerRef","plotRef","config","providedConfig","locale","onCloseHandler","_ref","arguments[0]","_ref2","SPlotA11yView","translations","intl","useMemo","data","Array","isArray","rootRef","useRef","summary","setSummary","useState","generatingSummary","setGeneratingSummary","useEffect","current","focus","focusOutHandler","event","relatedTarget","requestIdleCallback","HTMLElement","contains","addEventListener","removeEventListener","disable","override","setTimeout","handleClose","useCallback","handleSkip","preventDefault","handleSkipKeyboard","key","handleGoToTable","dataTableRef","handleGoToTableKeyboard","texts","label","formatMessage","close","skipPlot","goToTable","summaryPlaceholder","table","createElement","cn","_assignProps"],"sources":["../../../src/a11y/PlotA11yView.tsx"],"sourcesContent":["import { Box } from '@semcore/base-components';\nimport { Root, sstyled } from '@semcore/core';\nimport { useAsyncI18nMessages } from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport React from 'react';\n\nimport { DataAccessibilityTable } from './DataAccessibilityTable';\nimport { heavyFindNextFocusableElement } from './focus';\nimport { makeDataSummarizationConfig } from './hints';\nimport type { DataStructureHints, PartialDataSummarizationConfig } from './hints';\nimport { getIntl } from './intl';\nimport { summarize } from './summarize';\nimport styles from '../style/plotA11yView.shadow.css';\nimport { localizedMessages } from './translations/view/__intergalactic-dynamic-locales';\n\nexport type A11yViewProps = {\n id: string;\n payload: Record<string, unknown>[];\n hints: DataStructureHints;\n plotLabel: string;\n locale: NavigatorLanguage['language'];\n config: PartialDataSummarizationConfig;\n\n plotRef: React.RefObject<HTMLElement>;\n triggerRef: React.RefObject<HTMLElement>;\n onCloseHandler: () => void;\n};\n\nexport const PlotA11yView: React.FC<A11yViewProps> = ({\n id,\n payload: providedData,\n hints,\n plotLabel,\n triggerRef,\n plotRef,\n config: providedConfig,\n locale,\n onCloseHandler,\n}) => {\n const SPlotA11yView = Root;\n const translations = useAsyncI18nMessages(localizedMessages, locale);\n const intl = React.useMemo(\n () => getIntl(locale, translations, localizedMessages),\n [locale, translations, localizedMessages],\n );\n const config = React.useMemo(() => makeDataSummarizationConfig(providedConfig), [providedConfig]);\n const data = React.useMemo(\n () => (Array.isArray(providedData) ? providedData : [providedData]),\n [providedData],\n );\n const rootRef = React.useRef<HTMLDivElement>(null);\n\n const [summary, setSummary] = React.useState<string | null>(null);\n const [generatingSummary, setGeneratingSummary] = React.useState(true);\n\n React.useEffect(() => {\n rootRef.current?.focus();\n\n function focusOutHandler(event: FocusEvent) {\n if (event.relatedTarget === null) {\n return requestIdleCallback(onCloseHandler);\n }\n\n if (!(event.relatedTarget instanceof HTMLElement)) return;\n\n if (rootRef.current?.contains(event.relatedTarget)) return;\n\n requestIdleCallback(onCloseHandler);\n }\n\n rootRef.current?.addEventListener('focusout', focusOutHandler);\n return () => rootRef.current?.removeEventListener('focusout', focusOutHandler);\n }, []);\n\n React.useEffect(() => {\n if (config.disable) {\n setSummary('');\n setGeneratingSummary(false);\n return;\n }\n if (config.override) {\n setSummary(config.override);\n setGeneratingSummary(false);\n return;\n }\n setTimeout(() => {\n setSummary(summarize(providedData, hints, config, locale, translations, localizedMessages));\n setGeneratingSummary(false);\n }, 0);\n }, [providedData, hints, config, locale, translations, localizedMessages]);\n\n const handleClose = React.useCallback(() => {\n onCloseHandler();\n\n requestIdleCallback(() => {\n triggerRef.current?.focus();\n });\n }, []);\n const handleSkip = React.useCallback((event: React.SyntheticEvent) => {\n event.preventDefault();\n if (!plotRef.current) return;\n\n heavyFindNextFocusableElement(plotRef.current)?.focus();\n\n onCloseHandler();\n }, []);\n const handleSkipKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!(event.key === 'Enter' || event.key === ' ')) return;\n\n handleSkip(event);\n },\n [handleSkip],\n );\n const handleGoToTable = React.useCallback((event: React.SyntheticEvent) => {\n event.preventDefault();\n dataTableRef.current?.focus();\n }, []);\n const handleGoToTableKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!(event.key === 'Enter' || event.key === ' ')) return;\n\n handleGoToTable(event);\n },\n [handleGoToTable],\n );\n\n const texts = React.useMemo(\n () => ({\n label: intl.formatMessage(\n { id: 'view-label' },\n { plotLabel: plotLabel ?? intl.formatMessage({ id: 'view-default-plot-label' }) },\n ),\n close: intl.formatMessage({ id: 'view-close' }),\n skipPlot: intl.formatMessage({ id: 'view-skip-plot' }),\n goToTable: intl.formatMessage({ id: 'view-go-to-table' }),\n summary: intl.formatMessage({ id: 'view-data-summary' }),\n summaryPlaceholder: intl.formatMessage({ id: 'view-summary-placeholder' }),\n table: intl.formatMessage({ id: 'view-table' }),\n }),\n [intl, plotLabel],\n );\n\n const dataTableRef = React.useRef<HTMLTableElement>(null);\n\n return sstyled(styles)(\n <SPlotA11yView\n render={Box}\n tabIndex={0}\n aria-label={texts.label}\n role='dialog'\n __excludeProps={['data']}\n ref={rootRef}\n >\n <button type='button' onClick={handleClose}>\n {texts.close}\n </button>\n <a href='#' onKeyDown={handleSkipKeyboard} onClick={handleSkip}>\n {texts.skipPlot}\n </a>\n <a href={`#${id}-data-table`} onKeyDown={handleGoToTableKeyboard} onClick={handleGoToTable}>\n {texts.goToTable}\n </a>\n <strong>\n <label htmlFor={`${id}-data-summary`}>{texts.summary}</label>\n </strong>\n <div id={`${id}-data-summary`} aria-busy={generatingSummary}>\n {generatingSummary ? texts.summaryPlaceholder : summary}\n </div>\n <strong>\n <label htmlFor={`${id}-data-table`}>{texts.table}</label>\n </strong>\n <DataAccessibilityTable\n id={id}\n dataTableRef={dataTableRef}\n data={data}\n hints={hints}\n config={config}\n intl={intl}\n />\n </SPlotA11yView>,\n ) as React.ReactElement;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PlotA11yView.js","names":["Box","Root","sstyled","useAsyncI18nMessages","React","DataAccessibilityTable","heavyFindNextFocusableElement","makeDataSummarizationConfig","getIntl","summarize","styles","_sstyled","insert","localizedMessages","PlotA11yView","id","payload","providedData","hints","plotLabel","triggerRef","plotRef","config","providedConfig","locale","onCloseHandler","_ref","arguments[0]","_ref2","SPlotA11yView","translations","intl","useMemo","data","Array","isArray","rootRef","useRef","summary","setSummary","useState","generatingSummary","setGeneratingSummary","useEffect","current","focus","focusOutHandler","event","relatedTarget","requestIdleCallback","HTMLElement","contains","addEventListener","removeEventListener","disable","override","setTimeout","handleClose","useCallback","handleSkip","preventDefault","handleSkipKeyboard","key","handleGoToTable","dataTableRef","handleGoToTableKeyboard","texts","label","formatMessage","close","skipPlot","goToTable","summaryPlaceholder","table","createElement","cn","_assignProps"],"sources":["../../../src/a11y/PlotA11yView.tsx"],"sourcesContent":["import { Box } from '@semcore/base-components';\nimport { Root, sstyled } from '@semcore/core';\nimport { useAsyncI18nMessages } from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport React from 'react';\n\nimport { DataAccessibilityTable } from './DataAccessibilityTable';\nimport { heavyFindNextFocusableElement } from './focus';\nimport { makeDataSummarizationConfig } from './hints';\nimport type { DataStructureHints, PartialDataSummarizationConfig } from './hints';\nimport { getIntl } from './intl';\nimport { summarize } from './summarize';\nimport styles from '../style/plotA11yView.shadow.css';\nimport { localizedMessages } from './translations/view/__intergalactic-dynamic-locales';\n\nexport type A11yViewProps = {\n id: string;\n payload: Record<string, unknown>[];\n hints: DataStructureHints;\n plotLabel: string;\n locale: NavigatorLanguage['language'];\n config: PartialDataSummarizationConfig;\n\n plotRef: React.RefObject<HTMLElement>;\n triggerRef: React.RefObject<HTMLElement>;\n onCloseHandler: () => void;\n};\n\nexport function PlotA11yView({\n id,\n payload: providedData,\n hints,\n plotLabel,\n triggerRef,\n plotRef,\n config: providedConfig,\n locale,\n onCloseHandler,\n}: A11yViewProps) {\n const SPlotA11yView = Root;\n const translations = useAsyncI18nMessages(localizedMessages, locale);\n const intl = React.useMemo(\n () => getIntl(locale, translations, localizedMessages),\n [locale, translations, localizedMessages],\n );\n const config = React.useMemo(() => makeDataSummarizationConfig(providedConfig), [providedConfig]);\n const data = React.useMemo(\n () => (Array.isArray(providedData) ? providedData : [providedData]),\n [providedData],\n );\n const rootRef = React.useRef<HTMLDivElement>(null);\n\n const [summary, setSummary] = React.useState<string | null>(null);\n const [generatingSummary, setGeneratingSummary] = React.useState(true);\n\n React.useEffect(() => {\n rootRef.current?.focus();\n\n function focusOutHandler(event: FocusEvent) {\n if (event.relatedTarget === null) {\n return requestIdleCallback(onCloseHandler);\n }\n\n if (!(event.relatedTarget instanceof HTMLElement)) return;\n\n if (rootRef.current?.contains(event.relatedTarget)) return;\n\n requestIdleCallback(onCloseHandler);\n }\n\n rootRef.current?.addEventListener('focusout', focusOutHandler);\n return () => rootRef.current?.removeEventListener('focusout', focusOutHandler);\n }, []);\n\n React.useEffect(() => {\n if (config.disable) {\n setSummary('');\n setGeneratingSummary(false);\n return;\n }\n if (config.override) {\n setSummary(config.override);\n setGeneratingSummary(false);\n return;\n }\n setTimeout(() => {\n setSummary(summarize(providedData, hints, config, locale, translations, localizedMessages));\n setGeneratingSummary(false);\n }, 0);\n }, [providedData, hints, config, locale, translations, localizedMessages]);\n\n const handleClose = React.useCallback(() => {\n onCloseHandler();\n\n requestIdleCallback(() => {\n triggerRef.current?.focus();\n });\n }, []);\n const handleSkip = React.useCallback((event: React.SyntheticEvent) => {\n event.preventDefault();\n if (!plotRef.current) return;\n\n heavyFindNextFocusableElement(plotRef.current)?.focus();\n\n onCloseHandler();\n }, []);\n const handleSkipKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!(event.key === 'Enter' || event.key === ' ')) return;\n\n handleSkip(event);\n },\n [handleSkip],\n );\n const handleGoToTable = React.useCallback((event: React.SyntheticEvent) => {\n event.preventDefault();\n dataTableRef.current?.focus();\n }, []);\n const handleGoToTableKeyboard = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!(event.key === 'Enter' || event.key === ' ')) return;\n\n handleGoToTable(event);\n },\n [handleGoToTable],\n );\n\n const texts = React.useMemo(\n () => ({\n label: intl.formatMessage(\n { id: 'view-label' },\n { plotLabel: plotLabel ?? intl.formatMessage({ id: 'view-default-plot-label' }) },\n ),\n close: intl.formatMessage({ id: 'view-close' }),\n skipPlot: intl.formatMessage({ id: 'view-skip-plot' }),\n goToTable: intl.formatMessage({ id: 'view-go-to-table' }),\n summary: intl.formatMessage({ id: 'view-data-summary' }),\n summaryPlaceholder: intl.formatMessage({ id: 'view-summary-placeholder' }),\n table: intl.formatMessage({ id: 'view-table' }),\n }),\n [intl, plotLabel],\n );\n\n const dataTableRef = React.useRef<HTMLTableElement>(null);\n\n return sstyled(styles)(\n <SPlotA11yView\n render={Box}\n tabIndex={0}\n aria-label={texts.label}\n role='dialog'\n __excludeProps={['data']}\n ref={rootRef}\n >\n <button type='button' onClick={handleClose}>\n {texts.close}\n </button>\n <a href='#' onKeyDown={handleSkipKeyboard} onClick={handleSkip}>\n {texts.skipPlot}\n </a>\n <a href={`#${id}-data-table`} onKeyDown={handleGoToTableKeyboard} onClick={handleGoToTable}>\n {texts.goToTable}\n </a>\n <strong>\n <label htmlFor={`${id}-data-summary`}>{texts.summary}</label>\n </strong>\n <div id={`${id}-data-summary`} aria-busy={generatingSummary}>\n {generatingSummary ? texts.summaryPlaceholder : summary}\n </div>\n <strong>\n <label htmlFor={`${id}-data-table`}>{texts.table}</label>\n </strong>\n <DataAccessibilityTable\n id={id}\n dataTableRef={dataTableRef}\n data={data}\n hints={hints}\n config={config}\n intl={intl}\n />\n </SPlotA11yView>,\n ) as React.ReactElement;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/es6/utils.js
CHANGED
|
@@ -179,7 +179,8 @@ export const getChartDefaultColorName = index => {
|
|
|
179
179
|
return `chart-palette-order-${index}`;
|
|
180
180
|
};
|
|
181
181
|
export const getBubbleChartValueScale = (data, key) => {
|
|
182
|
-
const z = scaleSqrt().domain([0, Math.max(...data.map(el => el[key]))]).range([5.5, 50.5]);
|
|
182
|
+
const z = scaleSqrt().domain([0, Math.max(...data.map(el => el[key]))]).range([5.5, 50.5]); // min/max radius
|
|
183
|
+
|
|
183
184
|
return z;
|
|
184
185
|
};
|
|
185
186
|
export const getScatterPlotRadius = valueKey => {
|
|
@@ -213,7 +214,7 @@ export const calculateBubbleDomain = (data, key, range) => {
|
|
|
213
214
|
const maxValueShift = valueScale(maxestValue) * pixelRatio;
|
|
214
215
|
min -= minValueShift * 2;
|
|
215
216
|
max += maxValueShift * 2;
|
|
216
|
-
return [min, max];
|
|
217
|
+
return [Math.floor(min), Math.floor(max)];
|
|
217
218
|
};
|
|
218
219
|
export const PlotEventEmitter = EventEmitter;
|
|
219
220
|
//# sourceMappingURL=utils.js.map
|
package/lib/es6/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["EventEmitter","extent","bisector","scaleQuantize","scaleBand","scaleSqrt","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","paddingOuter","step","slice","reverse","definedNullData","x","y","plot","definedData","undefined","scaleOfBandwidth","bandwidth","minMax","data","key","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","Array","isArray","bisect","center","index","findIndex","keys","Object","map","_key","item","interpolateValue","lastKeyIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","scaleToBand","band","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","line","split","append","createTextNode","display","body","textWidth","offsetWidth","textHeight","offsetHeight","remove","Math","max","idCounter","uniqueId","prefix","Symbol","getChartDefaultColorName","getBubbleChartValueScale","z","el","getScatterPlotRadius","valueKey","calculateBubbleDomain","miniestValue","min","maxestValue","pixelRatio","abs","valueScale","minValueShift","maxValueShift","PlotEventEmitter"],"sources":["../../src/utils.ts"],"sourcesContent":["import EventEmitter from '@semcore/core/lib/utils/eventEmitter';\nimport { extent, bisector, type Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n type ScaleIdentity,\n type ScaleTime,\n type ScaleContinuousNumeric,\n type ScaleBand,\n type ScalePoint,\n type NumberValue,\n scaleBand,\n scaleSqrt,\n} from 'd3-scale';\nimport type React from 'react';\n\nexport const eventToPoint = (event: React.MouseEvent<HTMLElement>, svgRoot: SVGElement) => {\n const node = (event.currentTarget || event.target) as HTMLElement;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n};\n\ntype InvertableScale =\n | ScaleIdentity\n | ScaleBand<{}>\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if ('invert' in scale && scale.invert) return scale.invert(value);\n\n const range = scale.range() as [number, number];\n const domain = scale.domain();\n if ('paddingOuter' in scale) {\n range[0] += scale.paddingOuter() * scale.step();\n range[1] -= scale.paddingOuter() * scale.step();\n }\n\n return scaleQuantize()\n .domain((range[0] <= range[1] ? range : range.slice().reverse()) as NumberValue[])\n .range((range[0] <= range[1] ? domain : domain.slice().reverse()) as number[])(value);\n};\n\nexport const definedNullData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[y] !== null;\n\nexport const definedData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[x] !== undefined && plot[y] !== null && plot[y] !== undefined;\n\nexport const scaleOfBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale, value: number) =>\n scale.bandwidth ? scale(value)! + scale.bandwidth() / 2 : scale(value);\n\nexport const minMax = <\n Key extends string = string,\n Data extends { [key: string]: Numeric | null | undefined }[] = {\n [key: string]: Numeric | null | undefined;\n }[],\n>(\n data: Data,\n key: Key,\n): [min: Data[0][Key], max: Data[0][Key]] => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]) as any;\n }\n return extent(data, key) as any;\n};\n\nexport const getNullData = <\n Name extends string = string,\n Data extends { [name in Name]?: unknown | null } = {},\n>(\n data: Data[],\n defined: (data: Data) => boolean,\n name: Name,\n) =>\n data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n } as Data);\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data.slice().reverse().find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, [] as Data[]);\n\ntype IndexFromDataScale =\n | ScaleIdentity\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>\n | ScaleBand<{}>\n | ScalePoint<{}>;\nexport const getIndexFromData = <\n Key extends string,\n Data extends {\n [key in Key]: number;\n } = { [key in Key]: number },\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: Key,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function' && Array.isArray(data)) {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n } else if ('step' in scale && typeof scale.step !== 'undefined' && Array.isArray(data)) { // detect bar chart\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else if ('invert' in scale && typeof scale.invert === 'function' && !Array.isArray(data)) { // detect cigarette chart\n const keys = Object.keys(data);\n const domain = keys.map((_key, index) => {\n return keys.slice(0, index).reduce((acc, item) => {\n if (data[item] !== interpolateValue) {\n acc = acc + data[item];\n }\n\n return acc;\n }, 0);\n });\n\n let key = null;\n\n const lastKeyIndex = keys.length - 1;\n\n if (value > domain[lastKeyIndex]) {\n key = keys[lastKeyIndex];\n } else {\n for (let i = 0; i < lastKeyIndex; i++) {\n if (i === 0 && value < domain[i]) {\n break;\n }\n\n if (value > domain[i] && value < domain[i + 1]) {\n key = keys[i];\n break;\n }\n }\n }\n\n return key;\n } else {\n // eslint-disable-next-line no-console\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n};\n\nexport const roundedPath = (\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n tl = false,\n tr = false,\n bl = false,\n br = false,\n) => {\n let result = `M${x + r},${y}`;\n result += `h${w - 2 * r}`;\n if (tr) {\n result += `a${r},${r} 0 0 1 ${r},${r}`;\n } else {\n result += `h${r}`;\n result += `v${r}`;\n }\n result += `v${h - 2 * r}`;\n if (br) {\n result += `a${r},${r} 0 0 1 ${-r},${r}`;\n } else {\n result += `v${r}`;\n result += `h${-r}`;\n }\n result += `h${2 * r - w}`;\n if (bl) {\n result += `a${r},${r} 0 0 1 ${-r},${-r}`;\n } else {\n result += `h${-r}`;\n result += `v${-r}`;\n }\n result += `v${2 * r - h}`;\n if (tl) {\n result += `a${r},${r} 0 0 1 ${r},${-r}`;\n } else {\n result += `v${-r}`;\n result += `h${r}`;\n }\n result += 'z';\n return result;\n};\n\nexport const scaleToBand = (scale: ScaleBand<{}>) => {\n if ('bandwidth' in scale) {\n return scale;\n }\n\n const band = scaleBand()\n .range((scale as any).range())\n .domain((scale as any).domain());\n\n return band;\n};\n\nexport const memoize = <Func extends (...args: any[]) => any>(func: Func): Func => {\n const results: { [cacheKey: string]: any } = {};\n return ((...args: any[]) => {\n const argsKey = args.join(',');\n if (!results[argsKey]) {\n results[argsKey] = func(...args);\n }\n return results[argsKey];\n }) as Func;\n};\n\nexport const measureText = memoize((text: string, fontSize?: number) => {\n if (!text) return 0;\n\n const span = document.createElement('span');\n if (fontSize) {\n span.style.fontSize = `${fontSize}px`;\n }\n for (const line of text.split('\\n')) {\n span.append(document.createTextNode(line));\n span.append(document.createElement('br'));\n }\n span.style.display = 'inline-block';\n document.body.append(span);\n const textWidth = span.offsetWidth;\n const textHeight = span.offsetHeight;\n span.remove();\n return Math.max(textWidth, textHeight);\n});\n\nlet idCounter = 0;\nexport const uniqueId = (prefix = 'id-') => `${prefix}${idCounter++}`;\n\nexport const interpolateValue = Symbol('intergalactic-d3-chart-line-interpolate');\n\nexport const getChartDefaultColorName = (index: number) => {\n index++;\n if (index < 1) index = 1;\n if (index > 24) index %= 24;\n\n return `chart-palette-order-${index}`;\n};\n\nexport const getBubbleChartValueScale = (data: any[], key: string) => {\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[key]))])\n .range([5.5, 50.5]);\n\n return z;\n};\n\nexport const getScatterPlotRadius = (valueKey?: string): number => {\n return valueKey !== undefined ? 12 : 5.5;\n};\n\ntype BubbleChartDataItem = {\n value: number;\n x: number;\n y: number;\n};\n\nexport const calculateBubbleDomain = (\n data: Array<BubbleChartDataItem>,\n key: 'x' | 'y',\n range: [number, number],\n): [min: number, max: number] => {\n const miniestValue = data.reduce(\n (acc, item) => {\n if (item[key] - item.value < acc.min) {\n acc.min = item[key] - item.value;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, min: data[0][key] - data[0].value },\n ).value;\n const maxestValue = data.reduce(\n (acc, item) => {\n if (item.value + item[key] > acc.max) {\n acc.max = item.value + item.x;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, max: data[0].value + data[0][key] },\n ).value;\n\n let [min, max] = minMax(data, key);\n\n const pixelRatio = Math.abs(max - min) / Math.abs(range[0] - range[1]);\n const valueScale = getBubbleChartValueScale(data, 'value');\n const minValueShift = valueScale(miniestValue) * pixelRatio;\n const maxValueShift = valueScale(maxestValue) * pixelRatio;\n min -= minValueShift * 2;\n max += maxValueShift * 2;\n\n return [min, max];\n};\n\ntype CommonEvents = {\n setTooltipVisible: (visible: boolean) => void;\n setTooltipPosition: (x: number, y: number) => void;\n};\n\ntype Events = {\n [K in keyof CommonEvents as `${K}_${string}`]: CommonEvents[K];\n};\n\nexport const PlotEventEmitter = EventEmitter<Events>;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"utils.js","names":["EventEmitter","extent","bisector","scaleQuantize","scaleBand","scaleSqrt","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","paddingOuter","step","slice","reverse","definedNullData","x","y","plot","definedData","undefined","scaleOfBandwidth","bandwidth","minMax","data","key","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","Array","isArray","bisect","center","index","findIndex","keys","Object","map","_key","item","interpolateValue","lastKeyIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","scaleToBand","band","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","line","split","append","createTextNode","display","body","textWidth","offsetWidth","textHeight","offsetHeight","remove","Math","max","idCounter","uniqueId","prefix","Symbol","getChartDefaultColorName","getBubbleChartValueScale","z","el","getScatterPlotRadius","valueKey","calculateBubbleDomain","miniestValue","min","maxestValue","pixelRatio","abs","valueScale","minValueShift","maxValueShift","floor","PlotEventEmitter"],"sources":["../../src/utils.ts"],"sourcesContent":["import EventEmitter from '@semcore/core/lib/utils/eventEmitter';\nimport { extent, bisector, type Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n type ScaleIdentity,\n type ScaleTime,\n type ScaleContinuousNumeric,\n type ScaleBand,\n type ScalePoint,\n type NumberValue,\n scaleBand,\n scaleSqrt,\n} from 'd3-scale';\nimport type React from 'react';\n\nexport const eventToPoint = (event: React.MouseEvent<HTMLElement>, svgRoot: SVGElement) => {\n const node = (event.currentTarget || event.target) as HTMLElement;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n};\n\ntype InvertableScale =\n | ScaleIdentity\n | ScaleBand<{}>\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if ('invert' in scale && scale.invert) return scale.invert(value);\n\n const range = scale.range() as [number, number];\n const domain = scale.domain();\n if ('paddingOuter' in scale) {\n range[0] += scale.paddingOuter() * scale.step();\n range[1] -= scale.paddingOuter() * scale.step();\n }\n\n return scaleQuantize()\n .domain((range[0] <= range[1] ? range : range.slice().reverse()) as NumberValue[])\n .range((range[0] <= range[1] ? domain : domain.slice().reverse()) as number[])(value);\n};\n\nexport const definedNullData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[y] !== null;\n\nexport const definedData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[x] !== undefined && plot[y] !== null && plot[y] !== undefined;\n\nexport const scaleOfBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale, value: number) =>\n scale.bandwidth ? scale(value)! + scale.bandwidth() / 2 : scale(value);\n\nexport const minMax = <\n Key extends string = string,\n Data extends { [key: string]: Numeric | null | undefined }[] = {\n [key: string]: Numeric | null | undefined;\n }[],\n>(\n data: Data,\n key: Key,\n): [min: Data[0][Key], max: Data[0][Key]] => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]) as any;\n }\n return extent(data, key) as any;\n};\n\nexport const getNullData = <\n Name extends string = string,\n Data extends { [name in Name]?: unknown | null } = {},\n>(\n data: Data[],\n defined: (data: Data) => boolean,\n name: Name,\n) =>\n data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n } as Data);\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data.slice().reverse().find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, [] as Data[]);\n\ntype IndexFromDataScale =\n | ScaleIdentity\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>\n | ScaleBand<{}>\n | ScalePoint<{}>;\nexport const getIndexFromData = <\n Key extends string,\n Data extends {\n [key in Key]: number;\n } = { [key in Key]: number },\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: Key,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function' && Array.isArray(data)) {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n } else if ('step' in scale && typeof scale.step !== 'undefined' && Array.isArray(data)) { // detect bar chart\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else if ('invert' in scale && typeof scale.invert === 'function' && !Array.isArray(data)) { // detect cigarette chart\n const keys = Object.keys(data);\n const domain = keys.map((_key, index) => {\n return keys.slice(0, index).reduce((acc, item) => {\n if (data[item] !== interpolateValue) {\n acc = acc + data[item];\n }\n\n return acc;\n }, 0);\n });\n\n let key = null;\n\n const lastKeyIndex = keys.length - 1;\n\n if (value > domain[lastKeyIndex]) {\n key = keys[lastKeyIndex];\n } else {\n for (let i = 0; i < lastKeyIndex; i++) {\n if (i === 0 && value < domain[i]) {\n break;\n }\n\n if (value > domain[i] && value < domain[i + 1]) {\n key = keys[i];\n break;\n }\n }\n }\n\n return key;\n } else {\n // eslint-disable-next-line no-console\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n};\n\nexport const roundedPath = (\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n tl = false,\n tr = false,\n bl = false,\n br = false,\n) => {\n let result = `M${x + r},${y}`;\n result += `h${w - 2 * r}`;\n if (tr) {\n result += `a${r},${r} 0 0 1 ${r},${r}`;\n } else {\n result += `h${r}`;\n result += `v${r}`;\n }\n result += `v${h - 2 * r}`;\n if (br) {\n result += `a${r},${r} 0 0 1 ${-r},${r}`;\n } else {\n result += `v${r}`;\n result += `h${-r}`;\n }\n result += `h${2 * r - w}`;\n if (bl) {\n result += `a${r},${r} 0 0 1 ${-r},${-r}`;\n } else {\n result += `h${-r}`;\n result += `v${-r}`;\n }\n result += `v${2 * r - h}`;\n if (tl) {\n result += `a${r},${r} 0 0 1 ${r},${-r}`;\n } else {\n result += `v${-r}`;\n result += `h${r}`;\n }\n result += 'z';\n return result;\n};\n\nexport const scaleToBand = (scale: ScaleBand<{}>) => {\n if ('bandwidth' in scale) {\n return scale;\n }\n\n const band = scaleBand()\n .range((scale as any).range())\n .domain((scale as any).domain());\n\n return band;\n};\n\nexport const memoize = <Func extends (...args: any[]) => any>(func: Func): Func => {\n const results: { [cacheKey: string]: any } = {};\n return ((...args: any[]) => {\n const argsKey = args.join(',');\n if (!results[argsKey]) {\n results[argsKey] = func(...args);\n }\n return results[argsKey];\n }) as Func;\n};\n\nexport const measureText = memoize((text: string, fontSize?: number) => {\n if (!text) return 0;\n\n const span = document.createElement('span');\n if (fontSize) {\n span.style.fontSize = `${fontSize}px`;\n }\n for (const line of text.split('\\n')) {\n span.append(document.createTextNode(line));\n span.append(document.createElement('br'));\n }\n span.style.display = 'inline-block';\n document.body.append(span);\n const textWidth = span.offsetWidth;\n const textHeight = span.offsetHeight;\n span.remove();\n return Math.max(textWidth, textHeight);\n});\n\nlet idCounter = 0;\nexport const uniqueId = (prefix = 'id-') => `${prefix}${idCounter++}`;\n\nexport const interpolateValue = Symbol('intergalactic-d3-chart-line-interpolate');\n\nexport const getChartDefaultColorName = (index: number) => {\n index++;\n if (index < 1) index = 1;\n if (index > 24) index %= 24;\n\n return `chart-palette-order-${index}`;\n};\n\nexport const getBubbleChartValueScale = (data: any[], key: string) => {\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[key]))])\n .range([5.5, 50.5]); // min/max radius\n\n return z;\n};\n\nexport const getScatterPlotRadius = (valueKey?: string): number => {\n return valueKey !== undefined ? 12 : 5.5;\n};\n\ntype BubbleChartDataItem = {\n value: number;\n x: number;\n y: number;\n};\n\nexport const calculateBubbleDomain = (\n data: Array<BubbleChartDataItem>,\n key: 'x' | 'y',\n range: [number, number],\n): [min: number, max: number] => {\n const miniestValue = data.reduce(\n (acc, item) => {\n if (item[key] - item.value < acc.min) {\n acc.min = item[key] - item.value;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, min: data[0][key] - data[0].value },\n ).value;\n const maxestValue = data.reduce(\n (acc, item) => {\n if (item.value + item[key] > acc.max) {\n acc.max = item.value + item.x;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, max: data[0].value + data[0][key] },\n ).value;\n\n let [min, max] = minMax(data, key);\n\n const pixelRatio = Math.abs(max - min) / Math.abs(range[0] - range[1]);\n const valueScale = getBubbleChartValueScale(data, 'value');\n const minValueShift = valueScale(miniestValue) * pixelRatio;\n const maxValueShift = valueScale(maxestValue) * pixelRatio;\n min -= minValueShift * 2;\n max += maxValueShift * 2;\n\n return [Math.floor(min), Math.floor(max)];\n};\n\ntype CommonEvents = {\n setTooltipVisible: (visible: boolean) => void;\n setTooltipPosition: (x: number, y: number) => void;\n};\n\ntype Events = {\n [K in keyof CommonEvents as `${K}_${string}`]: CommonEvents[K];\n};\n\nexport const PlotEventEmitter = EventEmitter<Events>;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,7 +21,7 @@ const styles = (
|
|
|
21
21
|
"__SPlotA11yView": "___SPlotA11yView_9ugu2_gg_"
|
|
22
22
|
})
|
|
23
23
|
);
|
|
24
|
-
|
|
24
|
+
function PlotA11yView({
|
|
25
25
|
id,
|
|
26
26
|
payload: providedData,
|
|
27
27
|
hints,
|
|
@@ -31,7 +31,7 @@ const PlotA11yView = ({
|
|
|
31
31
|
config: providedConfig,
|
|
32
32
|
locale,
|
|
33
33
|
onCloseHandler
|
|
34
|
-
})
|
|
34
|
+
}) {
|
|
35
35
|
var _ref = arguments[0], _ref2;
|
|
36
36
|
const SPlotA11yView = Box;
|
|
37
37
|
const translations = useAsyncI18nMessages(localizedMessages, locale);
|
|
@@ -164,7 +164,7 @@ const PlotA11yView = ({
|
|
|
164
164
|
"config": config,
|
|
165
165
|
"intl": intl
|
|
166
166
|
})));
|
|
167
|
-
}
|
|
167
|
+
}
|
|
168
168
|
export {
|
|
169
169
|
PlotA11yView
|
|
170
170
|
};
|
package/lib/esm/utils.mjs
CHANGED
|
@@ -205,7 +205,7 @@ const calculateBubbleDomain = (data, key, range) => {
|
|
|
205
205
|
const maxValueShift = valueScale(maxestValue) * pixelRatio;
|
|
206
206
|
min -= minValueShift * 2;
|
|
207
207
|
max += maxValueShift * 2;
|
|
208
|
-
return [min, max];
|
|
208
|
+
return [Math.floor(min), Math.floor(max)];
|
|
209
209
|
};
|
|
210
210
|
const PlotEventEmitter = EventEmitter;
|
|
211
211
|
export {
|
|
@@ -11,4 +11,4 @@ export type A11yViewProps = {
|
|
|
11
11
|
triggerRef: React.RefObject<HTMLElement>;
|
|
12
12
|
onCloseHandler: () => void;
|
|
13
13
|
};
|
|
14
|
-
export declare
|
|
14
|
+
export declare function PlotA11yView({ id, payload: providedData, hints, plotLabel, triggerRef, plotRef, config: providedConfig, locale, onCloseHandler, }: A11yViewProps): React.ReactElement;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semcore/d3-chart",
|
|
3
3
|
"description": "Semrush D3 Chart Component",
|
|
4
|
-
"version": "17.0.0-prerelease.
|
|
4
|
+
"version": "17.0.0-prerelease.36",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/esm/index.mjs",
|
|
7
7
|
"typings": "lib/types/index.d.ts",
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@formatjs/intl": "2.3.0",
|
|
18
|
-
"@semcore/checkbox": "^17.0.0-prerelease.
|
|
19
|
-
"@semcore/divider": "^17.0.0-prerelease.
|
|
20
|
-
"@semcore/typography": "^17.0.0-prerelease.
|
|
18
|
+
"@semcore/checkbox": "^17.0.0-prerelease.36",
|
|
19
|
+
"@semcore/divider": "^17.0.0-prerelease.36",
|
|
20
|
+
"@semcore/typography": "^17.0.0-prerelease.36",
|
|
21
21
|
"@types/d3-shape": "^3.1.7",
|
|
22
22
|
"@upsetjs/venn.js": "1.4.2",
|
|
23
23
|
"d3-array": "3.1.6",
|
|
@@ -44,16 +44,16 @@
|
|
|
44
44
|
"@types/d3-array": "^3.2.1",
|
|
45
45
|
"@types/d3-scale": "^4.0.9",
|
|
46
46
|
"@types/d3-transition": "^3.0.9",
|
|
47
|
-
"@semcore/core": "17.0.0-prerelease.
|
|
48
|
-
"@semcore/
|
|
49
|
-
"@semcore/
|
|
50
|
-
"@semcore/
|
|
51
|
-
"@semcore/
|
|
52
|
-
"@semcore/
|
|
53
|
-
"@semcore/
|
|
47
|
+
"@semcore/core": "17.0.0-prerelease.36",
|
|
48
|
+
"@semcore/base-components": "17.0.0-prerelease.36",
|
|
49
|
+
"@semcore/divider": "17.0.0-prerelease.36",
|
|
50
|
+
"@semcore/checkbox": "17.0.0-prerelease.36",
|
|
51
|
+
"@semcore/button": "17.0.0-prerelease.36",
|
|
52
|
+
"@semcore/dropdown-menu": "17.0.0-prerelease.36",
|
|
53
|
+
"@semcore/ellipsis": "16.0.12-prerelease.36",
|
|
54
|
+
"@semcore/icon": "16.7.2-prerelease.36",
|
|
54
55
|
"@semcore/testing-utils": "1.0.0",
|
|
55
|
-
"@semcore/typography": "17.0.0-prerelease.
|
|
56
|
-
"@semcore/dropdown-menu": "17.0.0-prerelease.31"
|
|
56
|
+
"@semcore/typography": "17.0.0-prerelease.36"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"build": "pnpm semcore-builder --source=js,ts && pnpm vite build"
|