@semcore/base-components 17.0.0-prerelease.37 → 17.0.0-prerelease.42

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 CHANGED
@@ -2,11 +2,15 @@
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-04-13
5
+ ## [17.0.0] - 2026-04-15
6
6
 
7
7
  ### BREAK
8
8
 
9
- - **ellipsis**: Deprecated component. Use the new `ellipsis` prop that's built into various components.
9
+ - **breakpoints**: New major version.
10
+ - **grid**: New major version.
11
+ - **flex-box**: New major version.
12
+ - **neighbor-location**: New major version.
13
+ - **popper**: New major version.
10
14
  - **portal**: Removed using `getNodeByRef`. Use `React.RefObject` instead.
11
15
  - **outside-click**: Removed using `getNodeByRef`. Use `React.RefObject` instead.
12
16
  - **scroll-area**: Removed using `getNodeByRef`. Use `React.RefObject` instead.
@@ -286,7 +286,8 @@ class HintPopperRoot extends _core.Component {
286
286
  Children,
287
287
  parentZIndexStacking,
288
288
  styles,
289
- timingFunction
289
+ timingFunction,
290
+ ignorePortalsStacking
290
291
  } = this.asProps;
291
292
  const {
292
293
  innerVisible,
@@ -302,7 +303,9 @@ class HintPopperRoot extends _core.Component {
302
303
 
303
304
  /* `visible && innerVisible === null` - is a condition to start showing right after hover/focus */
304
305
  const showHint = visible && innerVisible === null || innerVisible === true;
305
- return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(_portal.Portal, _ref2.cn("Portal", {}), /*#__PURE__*/_react.default.createElement(SHintPopper, _ref2.cn("SHintPopper", {
306
+ return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(_portal.Portal, _ref2.cn("Portal", {
307
+ "ignorePortalsStacking": ignorePortalsStacking
308
+ }), /*#__PURE__*/_react.default.createElement(SHintPopper, _ref2.cn("SHintPopper", {
306
309
  ...(0, _core.assignProps)({
307
310
  "ref": this.hintRef,
308
311
  "aria-hidden": true,
@@ -325,7 +328,8 @@ class HintPopperRoot extends _core.Component {
325
328
  defaultVisible: false,
326
329
  timeout: [500, 500],
327
330
  timingFunction: 'ease-out',
328
- placement: 'top'
331
+ placement: 'top',
332
+ ignorePortalsStacking: true
329
333
  });
330
334
  const Hint = exports.Hint = (0, _core.createComponent)(HintPopperRoot);
331
335
  //# sourceMappingURL=Hint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Hint.js","names":["_core","require","_dom","_canUseDOM","_interopRequireDefault","_getAccessibleName","_useCssVariable","_zIndexStacking","_react","_Middleware","_flexBox","_portal","keyframes","sstyled","insert","styles","enhances","zIndexStackingEnhance","cssVariableEnhance","variable","fallback","map","v","Number","parseInt","toString","prop","propToArray","Array","isArray","keyframesMap","Map","HintPopperRoot","Component","constructor","props","_defineProperty2","default","React","createRef","handleFocus","bind","handleBlur","handleMouseEnter","handleMouseLeave","handleKeyDown","state","innerVisible","calculatedPlacement","placement","uncontrolledProps","visible","componentDidMount","triggerRef","children","asProps","trigger","current","subscribe","componentWillUnmount","unsubscribe","componentDidUpdate","prevProps","requestAnimationFrame","showHint","hideHint","addEventListener","removeEventListener","node","mouseEvent","timeout","showTimeout","hideTimer","clearTimeout","showTimer","window","setTimeout","handlers","popperElement","hintRef","middleware","offset","flip","shift","padding","verticalPlacement","startsWith","undefined","push","Middleware","verticalCursorAnchoring","x","clientX","computePosition","then","y","Object","assign","style","left","top","setState","hideTimeout","e","isCompatibleElement","target","sameAsTrigger","lastInteraction","isKeyboard","key","stopPropagation","HTMLElement","SVGElement","keyframesKey","has","get","keyframe","set","setTriggerAriaLabel","textContent","ariaLabel","getAccessibleName","label","setAttribute","render","_ref","_ref2","SHintPopper","Box","Children","parentZIndexStacking","timingFunction","canUseDOM","duration","createElement","Portal","cn","assignProps","defaultVisible","Hint","exports","createComponent"],"sources":["../../../../src/components/hint/Hint.tsx"],"sourcesContent":["import { computePosition, flip, offset, shift, type Placement } from '@floating-ui/dom';\nimport { createComponent, Root, sstyled, Component, lastInteraction } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport { getAccessibleName } from '@semcore/core/lib/utils/getAccessibleName';\nimport { cssVariableEnhance } from '@semcore/core/lib/utils/useCssVariable';\nimport { zIndexStackingEnhance } from '@semcore/core/lib/utils/zIndexStacking';\nimport type { DataType } from 'csstype';\nimport React from 'react';\n\nimport { Middleware } from './Middleware';\nimport keyframes from '../animation/style/keyframes.shadow.css';\nimport { Box } from '../flex-box';\nimport { Portal } from '../portal';\nimport styles from './style/hint.shadow.css';\n\ntype Handlers = {\n visible: null;\n};\n\nexport type SimpleHintPopperProps = {\n /** Ref to the trigger element */\n triggerRef: React.RefObject<HTMLElement | null>;\n /**\n * The position of the popper relative to the trigger that called it.\n * @default top\n */\n placement?: Placement;\n /**\n * Timer to show and hide the popper\n * @default [500, 500]\n */\n timeout?: DefaultProps['timeout'];\n /**\n * Hint content.\n * Better to use here some short text.\n * */\n children: React.ReactNode;\n\n /** Popper visibility value */\n visible?: boolean;\n /** Default popper visibility\n * @default false */\n defaultVisible?: boolean;\n /** Function called when visibility changes */\n onVisibleChange?: (visible: boolean, e?: Event) => boolean | void;\n};\n\ntype DefaultProps = {\n defaultVisible?: boolean;\n timeout: number | [number, number];\n timingFunction: DataType.EasingFunction;\n placement?: Placement;\n};\n\ntype State = {\n innerVisible: boolean | null;\n calculatedPlacement?: Placement;\n};\n\nconst enhances = [\n zIndexStackingEnhance('z-index-tooltip'),\n cssVariableEnhance({\n variable: '--intergalactic-duration-popper',\n fallback: '200',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'duration',\n }),\n cssVariableEnhance({\n variable: '--intergalactic-spacing-1x',\n fallback: '4',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'offset',\n }),\n cssVariableEnhance({\n variable: '--intergalactic-spacing-1x',\n fallback: '4',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'padding',\n }),\n] as const;\n\nfunction propToArray(prop: number | [number, number]): [number, number] {\n return Array.isArray(prop) ? prop : [prop, prop];\n}\n\nconst keyframesMap = new Map<Placement, string>();\n\nclass HintPopperRoot extends Component<SimpleHintPopperProps, typeof enhances, Handlers, DefaultProps, State> {\n public readonly hintRef = React.createRef<HTMLElement>();\n\n static style = Object.assign(keyframes, styles);\n\n private showTimer?: number;\n private hideTimer?: number;\n\n static enhance = enhances;\n\n static defaultProps: DefaultProps = {\n defaultVisible: false,\n timeout: [500, 500],\n timingFunction: 'ease-out',\n placement: 'top',\n };\n\n constructor(props: SimpleHintPopperProps) {\n super(props);\n\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.state = {\n innerVisible: null,\n calculatedPlacement: props.placement,\n };\n }\n\n uncontrolledProps() {\n return {\n visible: null,\n };\n }\n\n componentDidMount() {\n const { triggerRef, children } = this.asProps;\n const trigger = triggerRef.current;\n\n if (trigger && children) {\n this.subscribe(trigger);\n }\n }\n\n componentWillUnmount() {\n const trigger = this.asProps.triggerRef.current;\n\n if (trigger) {\n this.unsubscribe(trigger);\n }\n }\n\n componentDidUpdate(prevProps: SimpleHintPopperProps) {\n if (prevProps.visible !== this.props.visible) {\n requestAnimationFrame(() => {\n const trigger = this.props.triggerRef.current;\n\n if (this.props.visible && trigger) {\n this.showHint(trigger);\n } else {\n this.hideHint();\n }\n });\n }\n }\n\n private subscribe(trigger: HTMLElement) {\n trigger.addEventListener('focus', this.handleFocus);\n trigger.addEventListener('blur', this.handleBlur);\n trigger.addEventListener('mouseenter', this.handleMouseEnter);\n trigger.addEventListener('mouseleave', this.handleMouseLeave);\n trigger.addEventListener('keydown', this.handleKeyDown);\n\n if (this.asProps.visible) {\n this.showHint(trigger);\n }\n }\n\n private unsubscribe(trigger: HTMLElement) {\n trigger.removeEventListener('focus', this.handleFocus);\n trigger.removeEventListener('blur', this.handleBlur);\n trigger.removeEventListener('mouseenter', this.handleMouseEnter);\n trigger.removeEventListener('mouseleave', this.handleMouseLeave);\n trigger.removeEventListener('keydown', this.handleKeyDown);\n\n this.hideHint();\n }\n\n private showHint(node: Element, mouseEvent?: MouseEvent): void {\n const { placement, timeout } = this.asProps;\n\n const showTimeout = Array.isArray(timeout) ? timeout[0] : timeout;\n\n if (this.hideTimer) {\n clearTimeout(this.hideTimer);\n }\n\n this.showTimer = window.setTimeout(() => {\n this.handlers.visible(true);\n\n window.setTimeout(() => {\n const popperElement = this.hintRef.current;\n if (popperElement) {\n const middleware = [\n offset(Number(this.asProps.offset)),\n flip(),\n shift({ padding: Number(this.asProps.padding) }),\n ];\n const verticalPlacement = !placement || placement.startsWith('top') || placement.startsWith('bottom');\n if (mouseEvent !== undefined && verticalPlacement) {\n middleware.push(\n Middleware.verticalCursorAnchoring({ x: mouseEvent.clientX }),\n shift({ padding: Number(this.asProps.padding) }),\n );\n }\n\n computePosition(node, popperElement, {\n placement: placement,\n middleware,\n }).then(({ x, y, placement }) => {\n Object.assign(popperElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n this.setState({ innerVisible: true, calculatedPlacement: placement });\n });\n }\n }, 10);\n }, showTimeout);\n }\n\n private hideHint(): void {\n const { timeout } = this.asProps;\n\n const hideTimeout = Array.isArray(timeout) ? timeout[1] : timeout;\n\n if (this.showTimer) {\n clearTimeout(this.showTimer);\n }\n\n if (this.state.innerVisible) {\n this.setState({ innerVisible: false });\n\n this.hideTimer = window.setTimeout(() => {\n this.handlers.visible(false);\n this.setState({ innerVisible: null });\n }, hideTimeout);\n }\n }\n\n private handleFocus(e: FocusEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e) && lastInteraction.isKeyboard()) {\n this.showHint(e.target);\n }\n }\n\n private handleBlur(e: FocusEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.hideHint();\n }\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Escape' && this.isCompatibleElement(e.target) && this.sameAsTrigger(e) && this.state.innerVisible) {\n e.stopPropagation();\n this.hideHint();\n }\n }\n\n private handleMouseEnter(e: MouseEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.showHint(e.target, e);\n }\n }\n\n private handleMouseLeave(e: MouseEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.hideHint();\n }\n }\n\n private isCompatibleElement(target: unknown): target is HTMLElement | SVGElement {\n return target instanceof HTMLElement || target instanceof SVGElement;\n }\n\n private sameAsTrigger(e: MouseEvent | KeyboardEvent | FocusEvent): boolean {\n return this.asProps.triggerRef.current === e.target;\n }\n\n private keyframesKey(placement?: Placement) {\n if (!placement) {\n return 'opacity';\n }\n\n if (keyframesMap.has(placement)) {\n return keyframesMap.get(placement)!;\n }\n\n let keyframe: string = 'opacity';\n\n if (placement.startsWith('left')) keyframe = 'scale-left';\n if (placement.startsWith('right')) keyframe = 'scale-right';\n if (placement.startsWith('bottom')) keyframe = 'scale-bottom';\n if (placement.startsWith('top')) keyframe = 'scale-top';\n\n keyframesMap.set(placement, keyframe);\n\n return keyframe;\n }\n\n private setTriggerAriaLabel() {\n const { triggerRef, children } = this.asProps;\n\n requestAnimationFrame(() => {\n const trigger = triggerRef.current;\n\n if (trigger) {\n const textContent = trigger.textContent;\n const ariaLabel = getAccessibleName(trigger);\n\n if (!textContent && !ariaLabel) {\n const label = (typeof children === 'string' || typeof children === 'number')\n ? children.toString()\n : (this.hintRef.current?.textContent ?? '');\n triggerRef.current?.setAttribute('aria-label', label);\n }\n }\n });\n }\n\n render() {\n const SHintPopper = Root;\n const { visible, Children, parentZIndexStacking, styles, timingFunction } = this.asProps;\n const { innerVisible, calculatedPlacement } = this.state;\n\n if (canUseDOM()) {\n this.setTriggerAriaLabel();\n }\n\n if (!visible && innerVisible === null) {\n return null;\n }\n\n const duration = propToArray(Number(this.asProps.duration));\n\n /* `visible && innerVisible === null` - is a condition to start showing right after hover/focus */\n const showHint = (visible && innerVisible === null) || innerVisible === true;\n\n return sstyled(styles)(\n <Portal>\n <SHintPopper\n render={Box}\n ref={this.hintRef}\n aria-hidden={true}\n role={undefined}\n zIndex={parentZIndexStacking}\n use:visible={showHint}\n durationInitialize={`${duration[0]}ms`}\n durationFinalize={`${duration[1]}ms`}\n timingFunction={timingFunction}\n keyframesInitialize={innerVisible === true ? keyframes[`@${this.keyframesKey(calculatedPlacement)}-in`] : undefined}\n keyframesFinalize={innerVisible === false ? keyframes[`@${this.keyframesKey(calculatedPlacement)}-out`] : undefined}\n use:data-ui-name='Hint'\n >\n <Children />\n </SHintPopper>\n </Portal>,\n );\n }\n}\n\nexport const Hint = createComponent<'div', SimpleHintPopperProps>(HintPopperRoot);\n"],"mappings":";;;;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AADA,IAAAC,IAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AAEA,IAAAO,MAAA,GAAAJ,sBAAA,CAAAH,OAAA;AAEA,IAAAQ,WAAA,GAAAR,OAAA;AAEA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,OAAA,GAAAV,OAAA;AAAmC;AAAA,MAAAW,SAAA,8BAAAZ,KAAA,CAAAa,OAAA,CAAAC,MAAA;AAAA;AAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA;AAAA;AAAA,MAAAC,MAAA,8BAAAf,KAAA,CAAAa,OAAA,CAAAC,MAAA;AAAA;AAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA;AA+CnC,MAAME,QAAQ,GAAG,CACf,IAAAC,qCAAqB,EAAC,iBAAiB,CAAC,EACxC,IAAAC,kCAAkB,EAAC;EACjBC,QAAQ,EAAE,iCAAiC;EAC3CC,QAAQ,EAAE,KAAK;EACfC,GAAG,EAAGC,CAAS,IAAKC,MAAM,CAACC,QAAQ,CAACF,CAAC,EAAE,EAAE,CAAC,CAACG,QAAQ,CAAC,CAAC;EACrDC,IAAI,EAAE;AACR,CAAC,CAAC,EACF,IAAAR,kCAAkB,EAAC;EACjBC,QAAQ,EAAE,4BAA4B;EACtCC,QAAQ,EAAE,GAAG;EACbC,GAAG,EAAGC,CAAS,IAAKC,MAAM,CAACC,QAAQ,CAACF,CAAC,EAAE,EAAE,CAAC,CAACG,QAAQ,CAAC,CAAC;EACrDC,IAAI,EAAE;AACR,CAAC,CAAC,EACF,IAAAR,kCAAkB,EAAC;EACjBC,QAAQ,EAAE,4BAA4B;EACtCC,QAAQ,EAAE,GAAG;EACbC,GAAG,EAAGC,CAAS,IAAKC,MAAM,CAACC,QAAQ,CAACF,CAAC,EAAE,EAAE,CAAC,CAACG,QAAQ,CAAC,CAAC;EACrDC,IAAI,EAAE;AACR,CAAC,CAAC,CACM;AAEV,SAASC,WAAWA,CAACD,IAA+B,EAAoB;EACtE,OAAOE,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,EAAEA,IAAI,CAAC;AAClD;AAEA,MAAMI,YAAY,GAAG,IAAIC,GAAG,CAAoB,CAAC;AAEjD,MAAMC,cAAc,SAASC,eAAS,CAAwE;EAiB5GC,WAAWA,CAACC,KAA4B,EAAE;IACxC,KAAK,CAACA,KAAK,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA,gCAjBWC,cAAK,CAACC,SAAS,CAAc,CAAC;IAAA,IAAAH,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAmBtD,IAAI,CAACG,WAAW,GAAG,IAAI,CAACA,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACC,UAAU,GAAG,IAAI,CAACA,UAAU,CAACD,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACE,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACF,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACG,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACH,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACI,aAAa,GAAG,IAAI,CAACA,aAAa,CAACJ,IAAI,CAAC,IAAI,CAAC;IAElD,IAAI,CAACK,KAAK,GAAG;MACXC,YAAY,EAAE,IAAI;MAClBC,mBAAmB,EAAEb,KAAK,CAACc;IAC7B,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAG;IAClB,OAAO;MACLC,OAAO,EAAE;IACX,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAG;IAClB,MAAM;MAAEC,UAAU;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACC,OAAO;IAC7C,MAAMC,OAAO,GAAGH,UAAU,CAACI,OAAO;IAElC,IAAID,OAAO,IAAIF,QAAQ,EAAE;MACvB,IAAI,CAACI,SAAS,CAACF,OAAO,CAAC;IACzB;EACF;EAEAG,oBAAoBA,CAAA,EAAG;IACrB,MAAMH,OAAO,GAAG,IAAI,CAACD,OAAO,CAACF,UAAU,CAACI,OAAO;IAE/C,IAAID,OAAO,EAAE;MACX,IAAI,CAACI,WAAW,CAACJ,OAAO,CAAC;IAC3B;EACF;EAEAK,kBAAkBA,CAACC,SAAgC,EAAE;IACnD,IAAIA,SAAS,CAACX,OAAO,KAAK,IAAI,CAAChB,KAAK,CAACgB,OAAO,EAAE;MAC5CY,qBAAqB,CAAC,MAAM;QAC1B,MAAMP,OAAO,GAAG,IAAI,CAACrB,KAAK,CAACkB,UAAU,CAACI,OAAO;QAE7C,IAAI,IAAI,CAACtB,KAAK,CAACgB,OAAO,IAAIK,OAAO,EAAE;UACjC,IAAI,CAACQ,QAAQ,CAACR,OAAO,CAAC;QACxB,CAAC,MAAM;UACL,IAAI,CAACS,QAAQ,CAAC,CAAC;QACjB;MACF,CAAC,CAAC;IACJ;EACF;EAEQP,SAASA,CAACF,OAAoB,EAAE;IACtCA,OAAO,CAACU,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC1B,WAAW,CAAC;IACnDgB,OAAO,CAACU,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAACxB,UAAU,CAAC;IACjDc,OAAO,CAACU,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACvB,gBAAgB,CAAC;IAC7Da,OAAO,CAACU,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACtB,gBAAgB,CAAC;IAC7DY,OAAO,CAACU,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACrB,aAAa,CAAC;IAEvD,IAAI,IAAI,CAACU,OAAO,CAACJ,OAAO,EAAE;MACxB,IAAI,CAACa,QAAQ,CAACR,OAAO,CAAC;IACxB;EACF;EAEQI,WAAWA,CAACJ,OAAoB,EAAE;IACxCA,OAAO,CAACW,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC3B,WAAW,CAAC;IACtDgB,OAAO,CAACW,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAACzB,UAAU,CAAC;IACpDc,OAAO,CAACW,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACxB,gBAAgB,CAAC;IAChEa,OAAO,CAACW,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACvB,gBAAgB,CAAC;IAChEY,OAAO,CAACW,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACtB,aAAa,CAAC;IAE1D,IAAI,CAACoB,QAAQ,CAAC,CAAC;EACjB;EAEQD,QAAQA,CAACI,IAAa,EAAEC,UAAuB,EAAQ;IAC7D,MAAM;MAAEpB,SAAS;MAAEqB;IAAQ,CAAC,GAAG,IAAI,CAACf,OAAO;IAE3C,MAAMgB,WAAW,GAAG3C,KAAK,CAACC,OAAO,CAACyC,OAAO,CAAC,GAAGA,OAAO,CAAC,CAAC,CAAC,GAAGA,OAAO;IAEjE,IAAI,IAAI,CAACE,SAAS,EAAE;MAClBC,YAAY,CAAC,IAAI,CAACD,SAAS,CAAC;IAC9B;IAEA,IAAI,CAACE,SAAS,GAAGC,MAAM,CAACC,UAAU,CAAC,MAAM;MACvC,IAAI,CAACC,QAAQ,CAAC1B,OAAO,CAAC,IAAI,CAAC;MAE3BwB,MAAM,CAACC,UAAU,CAAC,MAAM;QACtB,MAAME,aAAa,GAAG,IAAI,CAACC,OAAO,CAACtB,OAAO;QAC1C,IAAIqB,aAAa,EAAE;UACjB,MAAME,UAAU,GAAG,CACjB,IAAAC,WAAM,EAAC1D,MAAM,CAAC,IAAI,CAACgC,OAAO,CAAC0B,MAAM,CAAC,CAAC,EACnC,IAAAC,SAAI,EAAC,CAAC,EACN,IAAAC,UAAK,EAAC;YAAEC,OAAO,EAAE7D,MAAM,CAAC,IAAI,CAACgC,OAAO,CAAC6B,OAAO;UAAE,CAAC,CAAC,CACjD;UACD,MAAMC,iBAAiB,GAAG,CAACpC,SAAS,IAAIA,SAAS,CAACqC,UAAU,CAAC,KAAK,CAAC,IAAIrC,SAAS,CAACqC,UAAU,CAAC,QAAQ,CAAC;UACrG,IAAIjB,UAAU,KAAKkB,SAAS,IAAIF,iBAAiB,EAAE;YACjDL,UAAU,CAACQ,IAAI,CACbC,sBAAU,CAACC,uBAAuB,CAAC;cAAEC,CAAC,EAAEtB,UAAU,CAACuB;YAAQ,CAAC,CAAC,EAC7D,IAAAT,UAAK,EAAC;cAAEC,OAAO,EAAE7D,MAAM,CAAC,IAAI,CAACgC,OAAO,CAAC6B,OAAO;YAAE,CAAC,CACjD,CAAC;UACH;UAEA,IAAAS,oBAAe,EAACzB,IAAI,EAAEU,aAAa,EAAE;YACnC7B,SAAS,EAAEA,SAAS;YACpB+B;UACF,CAAC,CAAC,CAACc,IAAI,CAAC,CAAC;YAAEH,CAAC;YAAEI,CAAC;YAAE9C;UAAU,CAAC,KAAK;YAC/B+C,MAAM,CAACC,MAAM,CAACnB,aAAa,CAACoB,KAAK,EAAE;cACjCC,IAAI,EAAE,GAAGR,CAAC,IAAI;cACdS,GAAG,EAAE,GAAGL,CAAC;YACX,CAAC,CAAC;YAEF,IAAI,CAACM,QAAQ,CAAC;cAAEtD,YAAY,EAAE,IAAI;cAAEC,mBAAmB,EAAEC;YAAU,CAAC,CAAC;UACvE,CAAC,CAAC;QACJ;MACF,CAAC,EAAE,EAAE,CAAC;IACR,CAAC,EAAEsB,WAAW,CAAC;EACjB;EAEQN,QAAQA,CAAA,EAAS;IACvB,MAAM;MAAEK;IAAQ,CAAC,GAAG,IAAI,CAACf,OAAO;IAEhC,MAAM+C,WAAW,GAAG1E,KAAK,CAACC,OAAO,CAACyC,OAAO,CAAC,GAAGA,OAAO,CAAC,CAAC,CAAC,GAAGA,OAAO;IAEjE,IAAI,IAAI,CAACI,SAAS,EAAE;MAClBD,YAAY,CAAC,IAAI,CAACC,SAAS,CAAC;IAC9B;IAEA,IAAI,IAAI,CAAC5B,KAAK,CAACC,YAAY,EAAE;MAC3B,IAAI,CAACsD,QAAQ,CAAC;QAAEtD,YAAY,EAAE;MAAM,CAAC,CAAC;MAEtC,IAAI,CAACyB,SAAS,GAAGG,MAAM,CAACC,UAAU,CAAC,MAAM;QACvC,IAAI,CAACC,QAAQ,CAAC1B,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAACkD,QAAQ,CAAC;UAAEtD,YAAY,EAAE;QAAK,CAAC,CAAC;MACvC,CAAC,EAAEuD,WAAW,CAAC;IACjB;EACF;EAEQ9D,WAAWA,CAAC+D,CAAa,EAAQ;IACvC,IAAI,IAAI,CAACC,mBAAmB,CAACD,CAAC,CAACE,MAAM,CAAC,IAAI,IAAI,CAACC,aAAa,CAACH,CAAC,CAAC,IAAII,qBAAe,CAACC,UAAU,CAAC,CAAC,EAAE;MAC/F,IAAI,CAAC5C,QAAQ,CAACuC,CAAC,CAACE,MAAM,CAAC;IACzB;EACF;EAEQ/D,UAAUA,CAAC6D,CAAa,EAAQ;IACtC,IAAI,IAAI,CAACC,mBAAmB,CAACD,CAAC,CAACE,MAAM,CAAC,IAAI,IAAI,CAACC,aAAa,CAACH,CAAC,CAAC,EAAE;MAC/D,IAAI,CAACtC,QAAQ,CAAC,CAAC;IACjB;EACF;EAEQpB,aAAaA,CAAC0D,CAAgB,EAAQ;IAC5C,IAAIA,CAAC,CAACM,GAAG,KAAK,QAAQ,IAAI,IAAI,CAACL,mBAAmB,CAACD,CAAC,CAACE,MAAM,CAAC,IAAI,IAAI,CAACC,aAAa,CAACH,CAAC,CAAC,IAAI,IAAI,CAACzD,KAAK,CAACC,YAAY,EAAE;MAChHwD,CAAC,CAACO,eAAe,CAAC,CAAC;MACnB,IAAI,CAAC7C,QAAQ,CAAC,CAAC;IACjB;EACF;EAEQtB,gBAAgBA,CAAC4D,CAAa,EAAQ;IAC5C,IAAI,IAAI,CAACC,mBAAmB,CAACD,CAAC,CAACE,MAAM,CAAC,IAAI,IAAI,CAACC,aAAa,CAACH,CAAC,CAAC,EAAE;MAC/D,IAAI,CAACvC,QAAQ,CAACuC,CAAC,CAACE,MAAM,EAAEF,CAAC,CAAC;IAC5B;EACF;EAEQ3D,gBAAgBA,CAAC2D,CAAa,EAAQ;IAC5C,IAAI,IAAI,CAACC,mBAAmB,CAACD,CAAC,CAACE,MAAM,CAAC,IAAI,IAAI,CAACC,aAAa,CAACH,CAAC,CAAC,EAAE;MAC/D,IAAI,CAACtC,QAAQ,CAAC,CAAC;IACjB;EACF;EAEQuC,mBAAmBA,CAACC,MAAe,EAAsC;IAC/E,OAAOA,MAAM,YAAYM,WAAW,IAAIN,MAAM,YAAYO,UAAU;EACtE;EAEQN,aAAaA,CAACH,CAA0C,EAAW;IACzE,OAAO,IAAI,CAAChD,OAAO,CAACF,UAAU,CAACI,OAAO,KAAK8C,CAAC,CAACE,MAAM;EACrD;EAEQQ,YAAYA,CAAChE,SAAqB,EAAE;IAC1C,IAAI,CAACA,SAAS,EAAE;MACd,OAAO,SAAS;IAClB;IAEA,IAAInB,YAAY,CAACoF,GAAG,CAACjE,SAAS,CAAC,EAAE;MAC/B,OAAOnB,YAAY,CAACqF,GAAG,CAAClE,SAAS,CAAC;IACpC;IAEA,IAAImE,QAAgB,GAAG,SAAS;IAEhC,IAAInE,SAAS,CAACqC,UAAU,CAAC,MAAM,CAAC,EAAE8B,QAAQ,GAAG,YAAY;IACzD,IAAInE,SAAS,CAACqC,UAAU,CAAC,OAAO,CAAC,EAAE8B,QAAQ,GAAG,aAAa;IAC3D,IAAInE,SAAS,CAACqC,UAAU,CAAC,QAAQ,CAAC,EAAE8B,QAAQ,GAAG,cAAc;IAC7D,IAAInE,SAAS,CAACqC,UAAU,CAAC,KAAK,CAAC,EAAE8B,QAAQ,GAAG,WAAW;IAEvDtF,YAAY,CAACuF,GAAG,CAACpE,SAAS,EAAEmE,QAAQ,CAAC;IAErC,OAAOA,QAAQ;EACjB;EAEQE,mBAAmBA,CAAA,EAAG;IAC5B,MAAM;MAAEjE,UAAU;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACC,OAAO;IAE7CQ,qBAAqB,CAAC,MAAM;MAC1B,MAAMP,OAAO,GAAGH,UAAU,CAACI,OAAO;MAElC,IAAID,OAAO,EAAE;QACX,MAAM+D,WAAW,GAAG/D,OAAO,CAAC+D,WAAW;QACvC,MAAMC,SAAS,GAAG,IAAAC,oCAAiB,EAACjE,OAAO,CAAC;QAE5C,IAAI,CAAC+D,WAAW,IAAI,CAACC,SAAS,EAAE;UAC9B,MAAME,KAAK,GAAI,OAAOpE,QAAQ,KAAK,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,GACvEA,QAAQ,CAAC7B,QAAQ,CAAC,CAAC,GAClB,IAAI,CAACsD,OAAO,CAACtB,OAAO,EAAE8D,WAAW,IAAI,EAAG;UAC7ClE,UAAU,CAACI,OAAO,EAAEkE,YAAY,CAAC,YAAY,EAAED,KAAK,CAAC;QACvD;MACF;IACF,CAAC,CAAC;EACJ;EAEAE,MAAMA,CAAA,EAAG;IAAA,IAAAC,IAAA,QAAAtE,OAAA;MAAAuE,KAAA;IACP,MAAMC,WAAW,GAoBHC,YAAG;IAnBjB,MAAM;MAAE7E,OAAO;MAAE8E,QAAQ;MAAEC,oBAAoB;MAAEnH,MAAM;MAAEoH;IAAe,CAAC,GAAG,IAAI,CAAC5E,OAAO;IACxF,MAAM;MAAER,YAAY;MAAEC;IAAoB,CAAC,GAAG,IAAI,CAACF,KAAK;IAExD,IAAI,IAAAsF,kBAAS,EAAC,CAAC,EAAE;MACf,IAAI,CAACd,mBAAmB,CAAC,CAAC;IAC5B;IAEA,IAAI,CAACnE,OAAO,IAAIJ,YAAY,KAAK,IAAI,EAAE;MACrC,OAAO,IAAI;IACb;IAEA,MAAMsF,QAAQ,GAAG1G,WAAW,CAACJ,MAAM,CAAC,IAAI,CAACgC,OAAO,CAAC8E,QAAQ,CAAC,CAAC;;IAE3D;IACA,MAAMrE,QAAQ,GAAIb,OAAO,IAAIJ,YAAY,KAAK,IAAI,IAAKA,YAAY,KAAK,IAAI;IAE5E,OAAA+E,KAAA,GAAO,IAAAjH,aAAO,EAACE,MAAM,CAAC,eACpBP,MAAA,CAAA6B,OAAA,CAAAiG,aAAA,CAAC3H,OAAA,CAAA4H,MAAM,EAAAT,KAAA,CAAAU,EAAA,6BACLhI,MAAA,CAAA6B,OAAA,CAAAiG,aAAA,CAACP,WAAW,EAAAD,KAAA,CAAAU,EAAA;MAAA,OAAAxI,KAAA,CAAAyI,WAAA;QAAA,OAEL,IAAI,CAAC1D,OAAO;QAAA,eACJ,IAAI;QAAA,QACXQ,SAAS;QAAA,UACP2C,oBAAoB;QAAA,eACflE,QAAQ;QAAA,sBACD,GAAGqE,QAAQ,CAAC,CAAC,CAAC,IAAI;QAAA,oBACpB,GAAGA,QAAQ,CAAC,CAAC,CAAC,IAAI;QAAA,kBACpBF,cAAc;QAAA,uBACTpF,YAAY,KAAK,IAAI,GAAGnC,SAAS,CAAC,IAAI,IAAI,CAACqG,YAAY,CAACjE,mBAAmB,CAAC,KAAK,CAAC,GAAGuC,SAAS;QAAA,qBAChGxC,YAAY,KAAK,KAAK,GAAGnC,SAAS,CAAC,IAAI,IAAI,CAACqG,YAAY,CAACjE,mBAAmB,CAAC,MAAM,CAAC,GAAGuC,SAAS;QAAA,oBAClG;MAAM,GAAAsC,IAAA;IAAA,iBAEvBrH,MAAA,CAAA6B,OAAA,CAAAiG,aAAA,CAACL,QAAQ,EAAAH,KAAA,CAAAU,EAAA,gBAAE,CACA,CACP,CAAC;EAEb;AACF;AAAC,IAAApG,gBAAA,CAAAC,OAAA,EAjRKL,cAAc,WAGHgE,MAAM,CAACC,MAAM,CAACrF,SAAS,EAAEG,MAAM,CAAC;AAAA,IAAAqB,gBAAA,CAAAC,OAAA,EAH3CL,cAAc,aAQDhB,QAAQ;AAAA,IAAAoB,gBAAA,CAAAC,OAAA,EARrBL,cAAc,kBAUkB;EAClC0G,cAAc,EAAE,KAAK;EACrBpE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;EACnB6D,cAAc,EAAE,UAAU;EAC1BlF,SAAS,EAAE;AACb,CAAC;AAoQI,MAAM0F,IAAI,GAAAC,OAAA,CAAAD,IAAA,GAAG,IAAAE,qBAAe,EAA+B7G,cAAc,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Hint.js","names":["_core","require","_dom","_canUseDOM","_interopRequireDefault","_getAccessibleName","_useCssVariable","_zIndexStacking","_react","_Middleware","_flexBox","_portal","keyframes","sstyled","insert","styles","enhances","zIndexStackingEnhance","cssVariableEnhance","variable","fallback","map","v","Number","parseInt","toString","prop","propToArray","Array","isArray","keyframesMap","Map","HintPopperRoot","Component","constructor","props","_defineProperty2","default","React","createRef","handleFocus","bind","handleBlur","handleMouseEnter","handleMouseLeave","handleKeyDown","state","innerVisible","calculatedPlacement","placement","uncontrolledProps","visible","componentDidMount","triggerRef","children","asProps","trigger","current","subscribe","componentWillUnmount","unsubscribe","componentDidUpdate","prevProps","requestAnimationFrame","showHint","hideHint","addEventListener","removeEventListener","node","mouseEvent","timeout","showTimeout","hideTimer","clearTimeout","showTimer","window","setTimeout","handlers","popperElement","hintRef","middleware","offset","flip","shift","padding","verticalPlacement","startsWith","undefined","push","Middleware","verticalCursorAnchoring","x","clientX","computePosition","then","y","Object","assign","style","left","top","setState","hideTimeout","e","isCompatibleElement","target","sameAsTrigger","lastInteraction","isKeyboard","key","stopPropagation","HTMLElement","SVGElement","keyframesKey","has","get","keyframe","set","setTriggerAriaLabel","textContent","ariaLabel","getAccessibleName","label","setAttribute","render","_ref","_ref2","SHintPopper","Box","Children","parentZIndexStacking","timingFunction","ignorePortalsStacking","canUseDOM","duration","createElement","Portal","cn","assignProps","defaultVisible","Hint","exports","createComponent"],"sources":["../../../../src/components/hint/Hint.tsx"],"sourcesContent":["import { computePosition, flip, offset, shift, type Placement } from '@floating-ui/dom';\nimport { createComponent, Root, sstyled, Component, lastInteraction } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport { getAccessibleName } from '@semcore/core/lib/utils/getAccessibleName';\nimport { cssVariableEnhance } from '@semcore/core/lib/utils/useCssVariable';\nimport { zIndexStackingEnhance } from '@semcore/core/lib/utils/zIndexStacking';\nimport type { DataType } from 'csstype';\nimport React from 'react';\n\nimport { Middleware } from './Middleware';\nimport keyframes from '../animation/style/keyframes.shadow.css';\nimport { Box } from '../flex-box';\nimport { Portal } from '../portal';\nimport styles from './style/hint.shadow.css';\n\ntype Handlers = {\n visible: null;\n};\n\nexport type SimpleHintPopperProps = {\n /** Ref to the trigger element */\n triggerRef: React.RefObject<HTMLElement | null>;\n /**\n * The position of the popper relative to the trigger that called it.\n * @default top\n */\n placement?: Placement;\n /**\n * Timer to show and hide the popper\n * @default [500, 500]\n */\n timeout?: DefaultProps['timeout'];\n /**\n * Hint content.\n * Better to use here some short text.\n * */\n children: React.ReactNode;\n\n /** Popper visibility value */\n visible?: boolean;\n /** Default popper visibility\n * @default false */\n defaultVisible?: boolean;\n /** Function called when visibility changes */\n onVisibleChange?: (visible: boolean, e?: Event) => boolean | void;\n /**\n * Set ignore for portal stacking\n * @default true\n */\n ignorePortalsStacking?: boolean;\n};\n\ntype DefaultProps = {\n defaultVisible?: boolean;\n timeout: number | [number, number];\n timingFunction: DataType.EasingFunction;\n placement?: Placement;\n ignorePortalsStacking?: boolean;\n};\n\ntype State = {\n innerVisible: boolean | null;\n calculatedPlacement?: Placement;\n};\n\nconst enhances = [\n zIndexStackingEnhance('z-index-tooltip'),\n cssVariableEnhance({\n variable: '--intergalactic-duration-popper',\n fallback: '200',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'duration',\n }),\n cssVariableEnhance({\n variable: '--intergalactic-spacing-1x',\n fallback: '4',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'offset',\n }),\n cssVariableEnhance({\n variable: '--intergalactic-spacing-1x',\n fallback: '4',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'padding',\n }),\n] as const;\n\nfunction propToArray(prop: number | [number, number]): [number, number] {\n return Array.isArray(prop) ? prop : [prop, prop];\n}\n\nconst keyframesMap = new Map<Placement, string>();\n\nclass HintPopperRoot extends Component<SimpleHintPopperProps, typeof enhances, Handlers, DefaultProps, State> {\n public readonly hintRef = React.createRef<HTMLElement>();\n\n static style = Object.assign(keyframes, styles);\n\n private showTimer?: number;\n private hideTimer?: number;\n\n static enhance = enhances;\n\n static defaultProps: DefaultProps = {\n defaultVisible: false,\n timeout: [500, 500],\n timingFunction: 'ease-out',\n placement: 'top',\n ignorePortalsStacking: true,\n };\n\n constructor(props: SimpleHintPopperProps) {\n super(props);\n\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.state = {\n innerVisible: null,\n calculatedPlacement: props.placement,\n };\n }\n\n uncontrolledProps() {\n return {\n visible: null,\n };\n }\n\n componentDidMount() {\n const { triggerRef, children } = this.asProps;\n const trigger = triggerRef.current;\n\n if (trigger && children) {\n this.subscribe(trigger);\n }\n }\n\n componentWillUnmount() {\n const trigger = this.asProps.triggerRef.current;\n\n if (trigger) {\n this.unsubscribe(trigger);\n }\n }\n\n componentDidUpdate(prevProps: SimpleHintPopperProps) {\n if (prevProps.visible !== this.props.visible) {\n requestAnimationFrame(() => {\n const trigger = this.props.triggerRef.current;\n\n if (this.props.visible && trigger) {\n this.showHint(trigger);\n } else {\n this.hideHint();\n }\n });\n }\n }\n\n private subscribe(trigger: HTMLElement) {\n trigger.addEventListener('focus', this.handleFocus);\n trigger.addEventListener('blur', this.handleBlur);\n trigger.addEventListener('mouseenter', this.handleMouseEnter);\n trigger.addEventListener('mouseleave', this.handleMouseLeave);\n trigger.addEventListener('keydown', this.handleKeyDown);\n\n if (this.asProps.visible) {\n this.showHint(trigger);\n }\n }\n\n private unsubscribe(trigger: HTMLElement) {\n trigger.removeEventListener('focus', this.handleFocus);\n trigger.removeEventListener('blur', this.handleBlur);\n trigger.removeEventListener('mouseenter', this.handleMouseEnter);\n trigger.removeEventListener('mouseleave', this.handleMouseLeave);\n trigger.removeEventListener('keydown', this.handleKeyDown);\n\n this.hideHint();\n }\n\n private showHint(node: Element, mouseEvent?: MouseEvent): void {\n const { placement, timeout } = this.asProps;\n\n const showTimeout = Array.isArray(timeout) ? timeout[0] : timeout;\n\n if (this.hideTimer) {\n clearTimeout(this.hideTimer);\n }\n\n this.showTimer = window.setTimeout(() => {\n this.handlers.visible(true);\n\n window.setTimeout(() => {\n const popperElement = this.hintRef.current;\n if (popperElement) {\n const middleware = [\n offset(Number(this.asProps.offset)),\n flip(),\n shift({ padding: Number(this.asProps.padding) }),\n ];\n const verticalPlacement = !placement || placement.startsWith('top') || placement.startsWith('bottom');\n if (mouseEvent !== undefined && verticalPlacement) {\n middleware.push(\n Middleware.verticalCursorAnchoring({ x: mouseEvent.clientX }),\n shift({ padding: Number(this.asProps.padding) }),\n );\n }\n\n computePosition(node, popperElement, {\n placement: placement,\n middleware,\n }).then(({ x, y, placement }) => {\n Object.assign(popperElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n this.setState({ innerVisible: true, calculatedPlacement: placement });\n });\n }\n }, 10);\n }, showTimeout);\n }\n\n private hideHint(): void {\n const { timeout } = this.asProps;\n\n const hideTimeout = Array.isArray(timeout) ? timeout[1] : timeout;\n\n if (this.showTimer) {\n clearTimeout(this.showTimer);\n }\n\n if (this.state.innerVisible) {\n this.setState({ innerVisible: false });\n\n this.hideTimer = window.setTimeout(() => {\n this.handlers.visible(false);\n this.setState({ innerVisible: null });\n }, hideTimeout);\n }\n }\n\n private handleFocus(e: FocusEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e) && lastInteraction.isKeyboard()) {\n this.showHint(e.target);\n }\n }\n\n private handleBlur(e: FocusEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.hideHint();\n }\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Escape' && this.isCompatibleElement(e.target) && this.sameAsTrigger(e) && this.state.innerVisible) {\n e.stopPropagation();\n this.hideHint();\n }\n }\n\n private handleMouseEnter(e: MouseEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.showHint(e.target, e);\n }\n }\n\n private handleMouseLeave(e: MouseEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.hideHint();\n }\n }\n\n private isCompatibleElement(target: unknown): target is HTMLElement | SVGElement {\n return target instanceof HTMLElement || target instanceof SVGElement;\n }\n\n private sameAsTrigger(e: MouseEvent | KeyboardEvent | FocusEvent): boolean {\n return this.asProps.triggerRef.current === e.target;\n }\n\n private keyframesKey(placement?: Placement) {\n if (!placement) {\n return 'opacity';\n }\n\n if (keyframesMap.has(placement)) {\n return keyframesMap.get(placement)!;\n }\n\n let keyframe: string = 'opacity';\n\n if (placement.startsWith('left')) keyframe = 'scale-left';\n if (placement.startsWith('right')) keyframe = 'scale-right';\n if (placement.startsWith('bottom')) keyframe = 'scale-bottom';\n if (placement.startsWith('top')) keyframe = 'scale-top';\n\n keyframesMap.set(placement, keyframe);\n\n return keyframe;\n }\n\n private setTriggerAriaLabel() {\n const { triggerRef, children } = this.asProps;\n\n requestAnimationFrame(() => {\n const trigger = triggerRef.current;\n\n if (trigger) {\n const textContent = trigger.textContent;\n const ariaLabel = getAccessibleName(trigger);\n\n if (!textContent && !ariaLabel) {\n const label = (typeof children === 'string' || typeof children === 'number')\n ? children.toString()\n : (this.hintRef.current?.textContent ?? '');\n triggerRef.current?.setAttribute('aria-label', label);\n }\n }\n });\n }\n\n render() {\n const SHintPopper = Root;\n const { visible, Children, parentZIndexStacking, styles, timingFunction, ignorePortalsStacking } = this.asProps;\n const { innerVisible, calculatedPlacement } = this.state;\n\n if (canUseDOM()) {\n this.setTriggerAriaLabel();\n }\n\n if (!visible && innerVisible === null) {\n return null;\n }\n\n const duration = propToArray(Number(this.asProps.duration));\n\n /* `visible && innerVisible === null` - is a condition to start showing right after hover/focus */\n const showHint = (visible && innerVisible === null) || innerVisible === true;\n\n return sstyled(styles)(\n <Portal ignorePortalsStacking={ignorePortalsStacking}>\n <SHintPopper\n render={Box}\n ref={this.hintRef}\n aria-hidden={true}\n role={undefined}\n zIndex={parentZIndexStacking}\n use:visible={showHint}\n durationInitialize={`${duration[0]}ms`}\n durationFinalize={`${duration[1]}ms`}\n timingFunction={timingFunction}\n keyframesInitialize={innerVisible === true ? keyframes[`@${this.keyframesKey(calculatedPlacement)}-in`] : undefined}\n keyframesFinalize={innerVisible === false ? keyframes[`@${this.keyframesKey(calculatedPlacement)}-out`] : undefined}\n use:data-ui-name='Hint'\n >\n <Children />\n </SHintPopper>\n </Portal>,\n );\n }\n}\n\nexport const Hint = createComponent<'div', SimpleHintPopperProps>(HintPopperRoot);\n"],"mappings":"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","ignoreList":[]}
@@ -95,6 +95,14 @@ class ScrollBarRoot extends _core.Component {
95
95
  (0, _defineProperty2.default)(this, "calculate", () => {
96
96
  if (!this.$container) return;
97
97
  const visibleScroll = this.calculateVisibleScroll();
98
+
99
+ /*
100
+ Safari retains GPU-composited layers after DOM removal.
101
+ Resetting transform before unmount prevents ghost rendering artifacts.
102
+ */
103
+ if (!visibleScroll && this.$slider) {
104
+ this.$slider.style.transform = 'none';
105
+ }
98
106
  this.setState({
99
107
  visibleScroll
100
108
  }, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollBar.js","names":["_core","require","_contextEnhance","_interopRequireDefault","_react","_flexBox","style","sstyled","insert","hideScrollBarsFromScreenReadersContext","exports","React","createContext","DEFAULT_SLIDER_SIZE","setAriaValues","$container","$horizontalBar","$verticalBar","scrollWidth","clientWidth","scrollHeight","clientHeight","scrollLeft","scrollTop","maxScrollRight","maxScrollBottom","setAttribute","Math","floor","toString","setAreaValue","ScrollBarRoot","Component","constructor","args","_defineProperty2","default","width","height","x","y","left","top","pageX","pageY","visibleScroll","domNode","$bar","orientation","getOrientation","horizontalBarRef","verticalBarRef","asProps","current","node","$slider","calculateVisibleScroll","setState","sliderStyle","calculateSliderStyle","kefBar","calculateKefBar","kefScroll","calculateKefScroll","handleScroll","transform","e","preventDefault","_scroll","calculateScrollByDiff","_mouse","document","removeEventListener","handleMouseMoveDocument","handleMouseUpDocument","handleSelectStartDocument","stopPropagation","addEventListener","pageXOffset","pageYOffset","window","getBoundingClientRect","calculateScrollByClick","container","horizontal","vertical","calculateOrientation","clientWidthBar","clientHeightBar","calculateDimensions","visibleSize","totalSize","ratio","min","round","max","position","windowOffset","mouseOffset","barPage","scroll","oldMouseOffset","oldScroll","offsetMouse","undefined","subscribe","$node","calculate","unsubscribe","getSliderProps","ref","refSlider","onMouseDown","handleMouseDownSlider","componentDidMount","componentDidUpdate","prevProps","props","componentWillUnmount","render","_ref","_ref3","SScrollBar","Box","styles","uid","hideFromScreenReaders","state","leftOffset","rightOffset","topOffset","bottomOffset","offsetSum","right","bottom","createElement","cn","assignProps","refBar","handleMouseDownBar","contextEnhance","createRef","children","ScrollBar","Slider","_ref2","arguments[0]","_ref4","SSlider","onDragStart","createComponent"],"sources":["../../../../src/components/scroll-area/ScrollBar.tsx"],"sourcesContent":["import { createComponent, sstyled, Component, Root } from '@semcore/core';\nimport contextEnhance from '@semcore/core/lib/utils/enhances/contextEnhance';\nimport React from 'react';\n\nimport { Box } from '../flex-box';\nimport type { ScrollBar as ScrollBarType, ScrollBarProps } from './ScrollBar.types';\nimport style from './style/scroll-bar.shadow.css';\n\nexport const hideScrollBarsFromScreenReadersContext = React.createContext(false);\n\nexport const DEFAULT_SLIDER_SIZE = 50;\n\n// updating DOM directly to avoid react dom rerendering and reconciliation\nconst setAriaValues = (\n $container?: Element | null,\n $horizontalBar?: Element | null,\n $verticalBar?: Element | null,\n) => {\n if (!$container || !($horizontalBar || $verticalBar)) return;\n const { scrollWidth, clientWidth, scrollHeight, clientHeight, scrollLeft, scrollTop } =\n $container;\n const maxScrollRight = scrollWidth - clientWidth;\n const maxScrollBottom = scrollHeight - clientHeight;\n if ($horizontalBar) {\n $horizontalBar.setAttribute('aria-valuenow', Math.floor(scrollLeft).toString());\n $horizontalBar.setAttribute('aria-valuemax', maxScrollRight.toString());\n }\n if ($verticalBar) {\n $verticalBar.setAttribute('aria-valuenow', Math.floor(scrollTop).toString());\n $verticalBar.setAttribute('aria-valuemax', maxScrollBottom.toString());\n }\n};\n\ntype State = {\n visibleScroll: boolean;\n};\n\nclass ScrollBarRoot extends Component<ScrollBarProps, typeof ScrollBarRoot.enhance, {}, { container: React.RefObject<HTMLElement> | null }, State> {\n static displayName = 'Bar';\n\n static style = style;\n static enhance = [\n contextEnhance(hideScrollBarsFromScreenReadersContext, 'hideFromScreenReaders'),\n ] as const;\n\n static defaultProps = () => {\n return {\n container: React.createRef<HTMLElement | null>(),\n children: <ScrollBar.Slider />,\n };\n };\n\n $bar: HTMLElement | null = null;\n $slider: HTMLElement | null = null;\n\n sliderStyle = { width: DEFAULT_SLIDER_SIZE, height: DEFAULT_SLIDER_SIZE };\n\n kefScroll = { x: 0, y: 0 };\n kefBar = { x: 0, y: 0 };\n\n _scroll = { left: 0, top: 0 };\n _mouse = { pageX: 0, pageY: 0 };\n\n state: State = {\n visibleScroll: false,\n };\n\n get $container(): Element | null {\n return this.asProps.container.current;\n }\n\n refBar = (domNode: HTMLElement | null) => {\n if (domNode !== null) {\n this.$bar = domNode;\n const orientation = this.getOrientation();\n const { horizontalBarRef, verticalBarRef } = this.asProps;\n if (orientation === 'horizontal' && horizontalBarRef) horizontalBarRef.current = domNode;\n if (orientation === 'vertical' && verticalBarRef) verticalBarRef.current = domNode;\n\n setAriaValues(this.$container, horizontalBarRef?.current, verticalBarRef?.current);\n }\n };\n\n refSlider = (node: HTMLElement | null) => {\n if (node) {\n this.$slider = node;\n }\n };\n\n calculateVisibleScroll() {\n const orientation = this.getOrientation();\n const [horizontal, vertical] = this.calculateOrientation();\n\n if (horizontal && orientation === 'horizontal') {\n return true;\n } else if (vertical && orientation === 'vertical') {\n return true;\n }\n\n return false;\n }\n\n calculateKefScroll() {\n const { clientWidth, clientHeight, scrollWidth, scrollHeight } = this.$container!;\n const { clientWidth: clientWidthBar, clientHeight: clientHeightBar } = this.$bar!;\n const { width, height } = this.sliderStyle;\n return {\n x: (clientWidthBar - width) / (scrollWidth - clientWidth),\n y: (clientHeightBar - height) / (scrollHeight - clientHeight),\n };\n }\n\n calculateKefBar() {\n const { clientWidth, clientHeight } = this.$bar!;\n const { width, height } = this.sliderStyle;\n return {\n x: (clientWidth - width) / clientWidth,\n y: (clientHeight - height) / clientHeight,\n };\n }\n\n calculateSliderStyle() {\n const { clientWidth, clientHeight } = this.$bar!;\n const { scrollWidth, scrollHeight } = this.$container!;\n\n const calculateDimensions = (visibleSize: number, totalSize: number) => {\n const ratio = Math.min(visibleSize / totalSize, 1); // percentage of visible area\n return Math.round(visibleSize * ratio);\n };\n\n return {\n width: Math.max(calculateDimensions(clientWidth, scrollWidth), DEFAULT_SLIDER_SIZE),\n height: Math.max(calculateDimensions(clientHeight, scrollHeight), DEFAULT_SLIDER_SIZE),\n };\n }\n\n calculateScrollByClick(\n position: number,\n windowOffset: number,\n mouseOffset: number,\n kefBar: number,\n kefScroll: number,\n ) {\n // bar coordinates relative to the page\n const barPage = position + windowOffset;\n\n // click coordinates - bar coordinates * proportion\n const scroll = (mouseOffset - barPage) * kefBar;\n\n return scroll / kefScroll;\n }\n\n calculateScrollByDiff(\n mouseOffset: number,\n oldMouseOffset: number,\n oldScroll: number,\n kefScroll: number,\n ) {\n // mouse offset (new coordinates - old coordinates)\n const offsetMouse = mouseOffset - oldMouseOffset;\n\n // old scroll position * scroll ratio + offset\n const scroll = oldScroll * kefScroll + offsetMouse;\n\n return scroll / kefScroll;\n }\n\n calculateOrientation() {\n if (!this.$container) return [false, false];\n const { scrollWidth, scrollHeight, clientWidth, clientHeight } = this.$container;\n return [scrollWidth > clientWidth, scrollHeight > clientHeight];\n }\n\n calculate = () => {\n if (!this.$container) return;\n\n const visibleScroll = this.calculateVisibleScroll();\n\n this.setState({ visibleScroll }, () => {\n if (!this.$container || !this.$bar || !this.$slider) return;\n const orientation = this.getOrientation();\n\n this.sliderStyle = this.calculateSliderStyle();\n this.kefBar = this.calculateKefBar();\n this.kefScroll = this.calculateKefScroll();\n\n if (orientation === 'horizontal') {\n this.$slider.style.width = `${this.sliderStyle.width}px`;\n } else if (orientation === 'vertical') {\n this.$slider.style.height = `${this.sliderStyle.height}px`;\n }\n this.handleScroll();\n });\n };\n\n handleScroll = () => {\n if (!this.$container || !this.$slider) return;\n\n const { scrollTop, scrollLeft } = this.$container;\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal') {\n this.$slider.style.transform = `translateX(${scrollLeft * this.kefScroll.x}px)`;\n } else if (orientation === 'vertical') {\n this.$slider.style.transform = `translateY(${scrollTop * this.kefScroll.y}px)`;\n }\n };\n\n getOrientation() {\n if (this.asProps.orientation !== undefined) return this.asProps.orientation;\n const [horizontal, vertical] = this.calculateOrientation();\n if (vertical) return 'vertical';\n if (horizontal) return 'horizontal';\n }\n\n handleSelectStartDocument = (e: Event) => e.preventDefault();\n\n handleMouseMoveDocument = (e: MouseEvent) => {\n const { pageX, pageY } = e;\n const { left, top } = this._scroll;\n const { x, y } = this.kefScroll;\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal' && this.$container) {\n this.$container.scrollLeft = this.calculateScrollByDiff(pageX, this._mouse.pageX, left, x);\n } else if (orientation === 'vertical' && this.$container) {\n this.$container.scrollTop = this.calculateScrollByDiff(pageY, this._mouse.pageY, top, y);\n }\n };\n\n handleMouseUpDocument = () => {\n document.removeEventListener('mousemove', this.handleMouseMoveDocument, true);\n document.removeEventListener('mouseup', this.handleMouseUpDocument, true);\n document.removeEventListener('selectstart', this.handleSelectStartDocument, true);\n };\n\n handleMouseDownSlider = (e: MouseEvent) => {\n // canceling the emergence of a real scroll\n e.stopPropagation();\n // save mouse coordinates (relative to the page)\n this._mouse = { pageX: e.pageX, pageY: e.pageY };\n // save the scroll of the container\n // TODO: what happens if the content increases while we scroll?\n const { scrollLeft, scrollTop } = this.$container!;\n this._scroll = { left: scrollLeft, top: scrollTop };\n\n document.addEventListener('mousemove', this.handleMouseMoveDocument, true);\n document.addEventListener('mouseup', this.handleMouseUpDocument, true);\n document.addEventListener('selectstart', this.handleSelectStartDocument, true);\n };\n\n handleMouseDownBar = (e: MouseEvent) => {\n if (!this.$container) return;\n\n // cancellation of the ascent as in a real scroll\n e.stopPropagation();\n\n const { pageX, pageY } = e;\n const { pageXOffset, pageYOffset } = window;\n const { left, top } = this.$bar!.getBoundingClientRect();\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal') {\n this.$container.scrollLeft = this.calculateScrollByClick(\n left,\n pageXOffset,\n pageX,\n this.kefBar.x,\n this.kefScroll.x,\n );\n } else if (orientation === 'vertical') {\n this.$container.scrollTop = this.calculateScrollByClick(\n top,\n pageYOffset,\n pageY,\n this.kefBar.y,\n this.kefScroll.y,\n );\n }\n };\n\n subscribe($node: Element | null) {\n if (!$node) return;\n $node.addEventListener('scroll', this.handleScroll);\n $node.addEventListener('calculate', this.calculate);\n }\n\n unsubscribe($node: Element | null) {\n if (!$node) return;\n $node.removeEventListener('scroll', this.handleScroll);\n $node.removeEventListener('calculate', this.calculate);\n }\n\n getSliderProps() {\n return {\n ref: this.refSlider,\n onMouseDown: this.handleMouseDownSlider,\n };\n }\n\n componentDidMount() {\n this.subscribe(this.$container);\n }\n\n componentDidUpdate(prevProps: ScrollBarProps) {\n if (prevProps.container !== this.props.container && prevProps.container === null) {\n this.subscribe(this.$container);\n }\n }\n\n componentWillUnmount() {\n this.unsubscribe(this.$container);\n }\n\n render() {\n const SScrollBar = Root;\n const { styles, uid, position, container, orientation, hideFromScreenReaders } = this.asProps;\n const { visibleScroll } = this.state;\n\n let { leftOffset, rightOffset, topOffset, bottomOffset } = this.asProps;\n\n if (!visibleScroll) {\n return null;\n }\n\n let offsetSum = 0;\n\n if (orientation === 'horizontal') {\n if (leftOffset) offsetSum += leftOffset;\n if (rightOffset) offsetSum += rightOffset;\n\n if (position === 'sticky' && container?.current) {\n const { left, right } = container.current.getBoundingClientRect();\n\n if (leftOffset) {\n leftOffset += left;\n }\n\n if (rightOffset) {\n rightOffset += right;\n }\n }\n }\n\n if (orientation === 'vertical') {\n if (topOffset) offsetSum += topOffset;\n if (bottomOffset) offsetSum += bottomOffset;\n\n if (position === 'sticky' && container?.current) {\n const { top, bottom } = container.current.getBoundingClientRect();\n\n if (topOffset) {\n topOffset += top;\n }\n\n if (bottomOffset) {\n bottomOffset += bottom;\n }\n }\n }\n\n return sstyled(styles)(\n <SScrollBar\n render={Box}\n left={orientation === 'horizontal' && leftOffset ? `${leftOffset}px` : undefined}\n right={orientation === 'horizontal' && rightOffset ? `${rightOffset}px` : undefined}\n top={orientation === 'vertical' && topOffset ? `${topOffset}px` : undefined}\n bottom={orientation === 'vertical' && bottomOffset ? `${bottomOffset}px` : undefined}\n offsetSum={`${offsetSum}px`}\n role={hideFromScreenReaders ? undefined : 'scrollbar'}\n aria-hidden={hideFromScreenReaders ? 'true' : undefined}\n ref={this.refBar}\n aria-valuemin={hideFromScreenReaders ? undefined : 0}\n aria-controls={hideFromScreenReaders ? undefined : `igc-${uid}-scroll-container`}\n aria-orientation={hideFromScreenReaders ? undefined : this.getOrientation()}\n onMouseDown={this.handleMouseDownBar}\n orientation={this.getOrientation()}\n />,\n );\n }\n}\n\nfunction Slider(props: ScrollBarProps) {\n const { styles } = props;\n const SSlider = Root;\n\n return sstyled(styles)(<SSlider render={Box} onDragStart={() => false} />);\n}\n\nexport const ScrollBar = createComponent(ScrollBarRoot, {\n Slider,\n}) as typeof ScrollBarType;\n\nexport { setAriaValues as setAreaValue };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ScrollBar.js","names":["_core","require","_contextEnhance","_interopRequireDefault","_react","_flexBox","style","sstyled","insert","hideScrollBarsFromScreenReadersContext","exports","React","createContext","DEFAULT_SLIDER_SIZE","setAriaValues","$container","$horizontalBar","$verticalBar","scrollWidth","clientWidth","scrollHeight","clientHeight","scrollLeft","scrollTop","maxScrollRight","maxScrollBottom","setAttribute","Math","floor","toString","setAreaValue","ScrollBarRoot","Component","constructor","args","_defineProperty2","default","width","height","x","y","left","top","pageX","pageY","visibleScroll","domNode","$bar","orientation","getOrientation","horizontalBarRef","verticalBarRef","asProps","current","node","$slider","calculateVisibleScroll","transform","setState","sliderStyle","calculateSliderStyle","kefBar","calculateKefBar","kefScroll","calculateKefScroll","handleScroll","e","preventDefault","_scroll","calculateScrollByDiff","_mouse","document","removeEventListener","handleMouseMoveDocument","handleMouseUpDocument","handleSelectStartDocument","stopPropagation","addEventListener","pageXOffset","pageYOffset","window","getBoundingClientRect","calculateScrollByClick","container","horizontal","vertical","calculateOrientation","clientWidthBar","clientHeightBar","calculateDimensions","visibleSize","totalSize","ratio","min","round","max","position","windowOffset","mouseOffset","barPage","scroll","oldMouseOffset","oldScroll","offsetMouse","undefined","subscribe","$node","calculate","unsubscribe","getSliderProps","ref","refSlider","onMouseDown","handleMouseDownSlider","componentDidMount","componentDidUpdate","prevProps","props","componentWillUnmount","render","_ref","_ref3","SScrollBar","Box","styles","uid","hideFromScreenReaders","state","leftOffset","rightOffset","topOffset","bottomOffset","offsetSum","right","bottom","createElement","cn","assignProps","refBar","handleMouseDownBar","contextEnhance","createRef","children","ScrollBar","Slider","_ref2","arguments[0]","_ref4","SSlider","onDragStart","createComponent"],"sources":["../../../../src/components/scroll-area/ScrollBar.tsx"],"sourcesContent":["import { createComponent, sstyled, Component, Root } from '@semcore/core';\nimport contextEnhance from '@semcore/core/lib/utils/enhances/contextEnhance';\nimport React from 'react';\n\nimport { Box } from '../flex-box';\nimport type { ScrollBar as ScrollBarType, ScrollBarProps } from './ScrollBar.types';\nimport style from './style/scroll-bar.shadow.css';\n\nexport const hideScrollBarsFromScreenReadersContext = React.createContext(false);\n\nexport const DEFAULT_SLIDER_SIZE = 50;\n\n// updating DOM directly to avoid react dom rerendering and reconciliation\nconst setAriaValues = (\n $container?: Element | null,\n $horizontalBar?: Element | null,\n $verticalBar?: Element | null,\n) => {\n if (!$container || !($horizontalBar || $verticalBar)) return;\n const { scrollWidth, clientWidth, scrollHeight, clientHeight, scrollLeft, scrollTop } =\n $container;\n const maxScrollRight = scrollWidth - clientWidth;\n const maxScrollBottom = scrollHeight - clientHeight;\n if ($horizontalBar) {\n $horizontalBar.setAttribute('aria-valuenow', Math.floor(scrollLeft).toString());\n $horizontalBar.setAttribute('aria-valuemax', maxScrollRight.toString());\n }\n if ($verticalBar) {\n $verticalBar.setAttribute('aria-valuenow', Math.floor(scrollTop).toString());\n $verticalBar.setAttribute('aria-valuemax', maxScrollBottom.toString());\n }\n};\n\ntype State = {\n visibleScroll: boolean;\n};\n\nclass ScrollBarRoot extends Component<ScrollBarProps, typeof ScrollBarRoot.enhance, {}, { container: React.RefObject<HTMLElement> | null }, State> {\n static displayName = 'Bar';\n\n static style = style;\n static enhance = [\n contextEnhance(hideScrollBarsFromScreenReadersContext, 'hideFromScreenReaders'),\n ] as const;\n\n static defaultProps = () => {\n return {\n container: React.createRef<HTMLElement | null>(),\n children: <ScrollBar.Slider />,\n };\n };\n\n $bar: HTMLElement | null = null;\n $slider: HTMLElement | null = null;\n\n sliderStyle = { width: DEFAULT_SLIDER_SIZE, height: DEFAULT_SLIDER_SIZE };\n\n kefScroll = { x: 0, y: 0 };\n kefBar = { x: 0, y: 0 };\n\n _scroll = { left: 0, top: 0 };\n _mouse = { pageX: 0, pageY: 0 };\n\n state: State = {\n visibleScroll: false,\n };\n\n get $container(): Element | null {\n return this.asProps.container.current;\n }\n\n refBar = (domNode: HTMLElement | null) => {\n if (domNode !== null) {\n this.$bar = domNode;\n const orientation = this.getOrientation();\n const { horizontalBarRef, verticalBarRef } = this.asProps;\n if (orientation === 'horizontal' && horizontalBarRef) horizontalBarRef.current = domNode;\n if (orientation === 'vertical' && verticalBarRef) verticalBarRef.current = domNode;\n\n setAriaValues(this.$container, horizontalBarRef?.current, verticalBarRef?.current);\n }\n };\n\n refSlider = (node: HTMLElement | null) => {\n if (node) {\n this.$slider = node;\n }\n };\n\n calculateVisibleScroll() {\n const orientation = this.getOrientation();\n const [horizontal, vertical] = this.calculateOrientation();\n\n if (horizontal && orientation === 'horizontal') {\n return true;\n } else if (vertical && orientation === 'vertical') {\n return true;\n }\n\n return false;\n }\n\n calculateKefScroll() {\n const { clientWidth, clientHeight, scrollWidth, scrollHeight } = this.$container!;\n const { clientWidth: clientWidthBar, clientHeight: clientHeightBar } = this.$bar!;\n const { width, height } = this.sliderStyle;\n return {\n x: (clientWidthBar - width) / (scrollWidth - clientWidth),\n y: (clientHeightBar - height) / (scrollHeight - clientHeight),\n };\n }\n\n calculateKefBar() {\n const { clientWidth, clientHeight } = this.$bar!;\n const { width, height } = this.sliderStyle;\n return {\n x: (clientWidth - width) / clientWidth,\n y: (clientHeight - height) / clientHeight,\n };\n }\n\n calculateSliderStyle() {\n const { clientWidth, clientHeight } = this.$bar!;\n const { scrollWidth, scrollHeight } = this.$container!;\n\n const calculateDimensions = (visibleSize: number, totalSize: number) => {\n const ratio = Math.min(visibleSize / totalSize, 1); // percentage of visible area\n return Math.round(visibleSize * ratio);\n };\n\n return {\n width: Math.max(calculateDimensions(clientWidth, scrollWidth), DEFAULT_SLIDER_SIZE),\n height: Math.max(calculateDimensions(clientHeight, scrollHeight), DEFAULT_SLIDER_SIZE),\n };\n }\n\n calculateScrollByClick(\n position: number,\n windowOffset: number,\n mouseOffset: number,\n kefBar: number,\n kefScroll: number,\n ) {\n // bar coordinates relative to the page\n const barPage = position + windowOffset;\n\n // click coordinates - bar coordinates * proportion\n const scroll = (mouseOffset - barPage) * kefBar;\n\n return scroll / kefScroll;\n }\n\n calculateScrollByDiff(\n mouseOffset: number,\n oldMouseOffset: number,\n oldScroll: number,\n kefScroll: number,\n ) {\n // mouse offset (new coordinates - old coordinates)\n const offsetMouse = mouseOffset - oldMouseOffset;\n\n // old scroll position * scroll ratio + offset\n const scroll = oldScroll * kefScroll + offsetMouse;\n\n return scroll / kefScroll;\n }\n\n calculateOrientation() {\n if (!this.$container) return [false, false];\n const { scrollWidth, scrollHeight, clientWidth, clientHeight } = this.$container;\n return [scrollWidth > clientWidth, scrollHeight > clientHeight];\n }\n\n calculate = () => {\n if (!this.$container) return;\n\n const visibleScroll = this.calculateVisibleScroll();\n\n /*\n Safari retains GPU-composited layers after DOM removal.\n Resetting transform before unmount prevents ghost rendering artifacts.\n */\n if (!visibleScroll && this.$slider) {\n this.$slider.style.transform = 'none';\n }\n\n this.setState({ visibleScroll }, () => {\n if (!this.$container || !this.$bar || !this.$slider) return;\n const orientation = this.getOrientation();\n\n this.sliderStyle = this.calculateSliderStyle();\n this.kefBar = this.calculateKefBar();\n this.kefScroll = this.calculateKefScroll();\n\n if (orientation === 'horizontal') {\n this.$slider.style.width = `${this.sliderStyle.width}px`;\n } else if (orientation === 'vertical') {\n this.$slider.style.height = `${this.sliderStyle.height}px`;\n }\n this.handleScroll();\n });\n };\n\n handleScroll = () => {\n if (!this.$container || !this.$slider) return;\n\n const { scrollTop, scrollLeft } = this.$container;\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal') {\n this.$slider.style.transform = `translateX(${scrollLeft * this.kefScroll.x}px)`;\n } else if (orientation === 'vertical') {\n this.$slider.style.transform = `translateY(${scrollTop * this.kefScroll.y}px)`;\n }\n };\n\n getOrientation() {\n if (this.asProps.orientation !== undefined) return this.asProps.orientation;\n const [horizontal, vertical] = this.calculateOrientation();\n if (vertical) return 'vertical';\n if (horizontal) return 'horizontal';\n }\n\n handleSelectStartDocument = (e: Event) => e.preventDefault();\n\n handleMouseMoveDocument = (e: MouseEvent) => {\n const { pageX, pageY } = e;\n const { left, top } = this._scroll;\n const { x, y } = this.kefScroll;\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal' && this.$container) {\n this.$container.scrollLeft = this.calculateScrollByDiff(pageX, this._mouse.pageX, left, x);\n } else if (orientation === 'vertical' && this.$container) {\n this.$container.scrollTop = this.calculateScrollByDiff(pageY, this._mouse.pageY, top, y);\n }\n };\n\n handleMouseUpDocument = () => {\n document.removeEventListener('mousemove', this.handleMouseMoveDocument, true);\n document.removeEventListener('mouseup', this.handleMouseUpDocument, true);\n document.removeEventListener('selectstart', this.handleSelectStartDocument, true);\n };\n\n handleMouseDownSlider = (e: MouseEvent) => {\n // canceling the emergence of a real scroll\n e.stopPropagation();\n // save mouse coordinates (relative to the page)\n this._mouse = { pageX: e.pageX, pageY: e.pageY };\n // save the scroll of the container\n // TODO: what happens if the content increases while we scroll?\n const { scrollLeft, scrollTop } = this.$container!;\n this._scroll = { left: scrollLeft, top: scrollTop };\n\n document.addEventListener('mousemove', this.handleMouseMoveDocument, true);\n document.addEventListener('mouseup', this.handleMouseUpDocument, true);\n document.addEventListener('selectstart', this.handleSelectStartDocument, true);\n };\n\n handleMouseDownBar = (e: MouseEvent) => {\n if (!this.$container) return;\n\n // cancellation of the ascent as in a real scroll\n e.stopPropagation();\n\n const { pageX, pageY } = e;\n const { pageXOffset, pageYOffset } = window;\n const { left, top } = this.$bar!.getBoundingClientRect();\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal') {\n this.$container.scrollLeft = this.calculateScrollByClick(\n left,\n pageXOffset,\n pageX,\n this.kefBar.x,\n this.kefScroll.x,\n );\n } else if (orientation === 'vertical') {\n this.$container.scrollTop = this.calculateScrollByClick(\n top,\n pageYOffset,\n pageY,\n this.kefBar.y,\n this.kefScroll.y,\n );\n }\n };\n\n subscribe($node: Element | null) {\n if (!$node) return;\n $node.addEventListener('scroll', this.handleScroll);\n $node.addEventListener('calculate', this.calculate);\n }\n\n unsubscribe($node: Element | null) {\n if (!$node) return;\n $node.removeEventListener('scroll', this.handleScroll);\n $node.removeEventListener('calculate', this.calculate);\n }\n\n getSliderProps() {\n return {\n ref: this.refSlider,\n onMouseDown: this.handleMouseDownSlider,\n };\n }\n\n componentDidMount() {\n this.subscribe(this.$container);\n }\n\n componentDidUpdate(prevProps: ScrollBarProps) {\n if (prevProps.container !== this.props.container && prevProps.container === null) {\n this.subscribe(this.$container);\n }\n }\n\n componentWillUnmount() {\n this.unsubscribe(this.$container);\n }\n\n render() {\n const SScrollBar = Root;\n const { styles, uid, position, container, orientation, hideFromScreenReaders } = this.asProps;\n const { visibleScroll } = this.state;\n\n let { leftOffset, rightOffset, topOffset, bottomOffset } = this.asProps;\n\n if (!visibleScroll) {\n return null;\n }\n\n let offsetSum = 0;\n\n if (orientation === 'horizontal') {\n if (leftOffset) offsetSum += leftOffset;\n if (rightOffset) offsetSum += rightOffset;\n\n if (position === 'sticky' && container?.current) {\n const { left, right } = container.current.getBoundingClientRect();\n\n if (leftOffset) {\n leftOffset += left;\n }\n\n if (rightOffset) {\n rightOffset += right;\n }\n }\n }\n\n if (orientation === 'vertical') {\n if (topOffset) offsetSum += topOffset;\n if (bottomOffset) offsetSum += bottomOffset;\n\n if (position === 'sticky' && container?.current) {\n const { top, bottom } = container.current.getBoundingClientRect();\n\n if (topOffset) {\n topOffset += top;\n }\n\n if (bottomOffset) {\n bottomOffset += bottom;\n }\n }\n }\n\n return sstyled(styles)(\n <SScrollBar\n render={Box}\n left={orientation === 'horizontal' && leftOffset ? `${leftOffset}px` : undefined}\n right={orientation === 'horizontal' && rightOffset ? `${rightOffset}px` : undefined}\n top={orientation === 'vertical' && topOffset ? `${topOffset}px` : undefined}\n bottom={orientation === 'vertical' && bottomOffset ? `${bottomOffset}px` : undefined}\n offsetSum={`${offsetSum}px`}\n role={hideFromScreenReaders ? undefined : 'scrollbar'}\n aria-hidden={hideFromScreenReaders ? 'true' : undefined}\n ref={this.refBar}\n aria-valuemin={hideFromScreenReaders ? undefined : 0}\n aria-controls={hideFromScreenReaders ? undefined : `igc-${uid}-scroll-container`}\n aria-orientation={hideFromScreenReaders ? undefined : this.getOrientation()}\n onMouseDown={this.handleMouseDownBar}\n orientation={this.getOrientation()}\n />,\n );\n }\n}\n\nfunction Slider(props: ScrollBarProps) {\n const { styles } = props;\n const SSlider = Root;\n\n return sstyled(styles)(<SSlider render={Box} onDragStart={() => false} />);\n}\n\nexport const ScrollBar = createComponent(ScrollBarRoot, {\n Slider,\n}) as typeof ScrollBarType;\n\nexport { setAriaValues as setAreaValue };\n"],"mappings":"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","ignoreList":[]}
@@ -282,7 +282,8 @@ class HintPopperRoot extends Component {
282
282
  Children,
283
283
  parentZIndexStacking,
284
284
  styles,
285
- timingFunction
285
+ timingFunction,
286
+ ignorePortalsStacking
286
287
  } = this.asProps;
287
288
  const {
288
289
  innerVisible,
@@ -298,7 +299,9 @@ class HintPopperRoot extends Component {
298
299
 
299
300
  /* `visible && innerVisible === null` - is a condition to start showing right after hover/focus */
300
301
  const showHint = visible && innerVisible === null || innerVisible === true;
301
- return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(Portal, _ref2.cn("Portal", {}), /*#__PURE__*/React.createElement(SHintPopper, _ref2.cn("SHintPopper", {
302
+ return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(Portal, _ref2.cn("Portal", {
303
+ "ignorePortalsStacking": ignorePortalsStacking
304
+ }), /*#__PURE__*/React.createElement(SHintPopper, _ref2.cn("SHintPopper", {
302
305
  ..._assignProps({
303
306
  "ref": this.hintRef,
304
307
  "aria-hidden": true,
@@ -321,7 +324,8 @@ _defineProperty(HintPopperRoot, "defaultProps", {
321
324
  defaultVisible: false,
322
325
  timeout: [500, 500],
323
326
  timingFunction: 'ease-out',
324
- placement: 'top'
327
+ placement: 'top',
328
+ ignorePortalsStacking: true
325
329
  });
326
330
  export const Hint = createComponent(HintPopperRoot);
327
331
  //# sourceMappingURL=Hint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Hint.js","names":["computePosition","flip","offset","shift","createComponent","Root","sstyled","Component","lastInteraction","canUseDOM","getAccessibleName","cssVariableEnhance","zIndexStackingEnhance","React","Middleware","keyframes","_sstyled","insert","Box","Portal","styles","_sstyled2","enhances","variable","fallback","map","v","Number","parseInt","toString","prop","propToArray","Array","isArray","keyframesMap","Map","HintPopperRoot","constructor","props","_defineProperty","createRef","handleFocus","bind","handleBlur","handleMouseEnter","handleMouseLeave","handleKeyDown","state","innerVisible","calculatedPlacement","placement","uncontrolledProps","visible","componentDidMount","triggerRef","children","asProps","trigger","current","subscribe","componentWillUnmount","unsubscribe","componentDidUpdate","prevProps","requestAnimationFrame","showHint","hideHint","addEventListener","removeEventListener","node","mouseEvent","timeout","showTimeout","hideTimer","clearTimeout","showTimer","window","setTimeout","handlers","popperElement","hintRef","middleware","padding","verticalPlacement","startsWith","undefined","push","verticalCursorAnchoring","x","clientX","then","y","Object","assign","style","left","top","setState","hideTimeout","e","isCompatibleElement","target","sameAsTrigger","isKeyboard","key","stopPropagation","HTMLElement","SVGElement","keyframesKey","has","get","keyframe","set","setTriggerAriaLabel","textContent","ariaLabel","label","setAttribute","render","_ref","_ref2","SHintPopper","Children","parentZIndexStacking","timingFunction","duration","createElement","cn","_assignProps","defaultVisible","Hint"],"sources":["../../../../src/components/hint/Hint.tsx"],"sourcesContent":["import { computePosition, flip, offset, shift, type Placement } from '@floating-ui/dom';\nimport { createComponent, Root, sstyled, Component, lastInteraction } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport { getAccessibleName } from '@semcore/core/lib/utils/getAccessibleName';\nimport { cssVariableEnhance } from '@semcore/core/lib/utils/useCssVariable';\nimport { zIndexStackingEnhance } from '@semcore/core/lib/utils/zIndexStacking';\nimport type { DataType } from 'csstype';\nimport React from 'react';\n\nimport { Middleware } from './Middleware';\nimport keyframes from '../animation/style/keyframes.shadow.css';\nimport { Box } from '../flex-box';\nimport { Portal } from '../portal';\nimport styles from './style/hint.shadow.css';\n\ntype Handlers = {\n visible: null;\n};\n\nexport type SimpleHintPopperProps = {\n /** Ref to the trigger element */\n triggerRef: React.RefObject<HTMLElement | null>;\n /**\n * The position of the popper relative to the trigger that called it.\n * @default top\n */\n placement?: Placement;\n /**\n * Timer to show and hide the popper\n * @default [500, 500]\n */\n timeout?: DefaultProps['timeout'];\n /**\n * Hint content.\n * Better to use here some short text.\n * */\n children: React.ReactNode;\n\n /** Popper visibility value */\n visible?: boolean;\n /** Default popper visibility\n * @default false */\n defaultVisible?: boolean;\n /** Function called when visibility changes */\n onVisibleChange?: (visible: boolean, e?: Event) => boolean | void;\n};\n\ntype DefaultProps = {\n defaultVisible?: boolean;\n timeout: number | [number, number];\n timingFunction: DataType.EasingFunction;\n placement?: Placement;\n};\n\ntype State = {\n innerVisible: boolean | null;\n calculatedPlacement?: Placement;\n};\n\nconst enhances = [\n zIndexStackingEnhance('z-index-tooltip'),\n cssVariableEnhance({\n variable: '--intergalactic-duration-popper',\n fallback: '200',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'duration',\n }),\n cssVariableEnhance({\n variable: '--intergalactic-spacing-1x',\n fallback: '4',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'offset',\n }),\n cssVariableEnhance({\n variable: '--intergalactic-spacing-1x',\n fallback: '4',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'padding',\n }),\n] as const;\n\nfunction propToArray(prop: number | [number, number]): [number, number] {\n return Array.isArray(prop) ? prop : [prop, prop];\n}\n\nconst keyframesMap = new Map<Placement, string>();\n\nclass HintPopperRoot extends Component<SimpleHintPopperProps, typeof enhances, Handlers, DefaultProps, State> {\n public readonly hintRef = React.createRef<HTMLElement>();\n\n static style = Object.assign(keyframes, styles);\n\n private showTimer?: number;\n private hideTimer?: number;\n\n static enhance = enhances;\n\n static defaultProps: DefaultProps = {\n defaultVisible: false,\n timeout: [500, 500],\n timingFunction: 'ease-out',\n placement: 'top',\n };\n\n constructor(props: SimpleHintPopperProps) {\n super(props);\n\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.state = {\n innerVisible: null,\n calculatedPlacement: props.placement,\n };\n }\n\n uncontrolledProps() {\n return {\n visible: null,\n };\n }\n\n componentDidMount() {\n const { triggerRef, children } = this.asProps;\n const trigger = triggerRef.current;\n\n if (trigger && children) {\n this.subscribe(trigger);\n }\n }\n\n componentWillUnmount() {\n const trigger = this.asProps.triggerRef.current;\n\n if (trigger) {\n this.unsubscribe(trigger);\n }\n }\n\n componentDidUpdate(prevProps: SimpleHintPopperProps) {\n if (prevProps.visible !== this.props.visible) {\n requestAnimationFrame(() => {\n const trigger = this.props.triggerRef.current;\n\n if (this.props.visible && trigger) {\n this.showHint(trigger);\n } else {\n this.hideHint();\n }\n });\n }\n }\n\n private subscribe(trigger: HTMLElement) {\n trigger.addEventListener('focus', this.handleFocus);\n trigger.addEventListener('blur', this.handleBlur);\n trigger.addEventListener('mouseenter', this.handleMouseEnter);\n trigger.addEventListener('mouseleave', this.handleMouseLeave);\n trigger.addEventListener('keydown', this.handleKeyDown);\n\n if (this.asProps.visible) {\n this.showHint(trigger);\n }\n }\n\n private unsubscribe(trigger: HTMLElement) {\n trigger.removeEventListener('focus', this.handleFocus);\n trigger.removeEventListener('blur', this.handleBlur);\n trigger.removeEventListener('mouseenter', this.handleMouseEnter);\n trigger.removeEventListener('mouseleave', this.handleMouseLeave);\n trigger.removeEventListener('keydown', this.handleKeyDown);\n\n this.hideHint();\n }\n\n private showHint(node: Element, mouseEvent?: MouseEvent): void {\n const { placement, timeout } = this.asProps;\n\n const showTimeout = Array.isArray(timeout) ? timeout[0] : timeout;\n\n if (this.hideTimer) {\n clearTimeout(this.hideTimer);\n }\n\n this.showTimer = window.setTimeout(() => {\n this.handlers.visible(true);\n\n window.setTimeout(() => {\n const popperElement = this.hintRef.current;\n if (popperElement) {\n const middleware = [\n offset(Number(this.asProps.offset)),\n flip(),\n shift({ padding: Number(this.asProps.padding) }),\n ];\n const verticalPlacement = !placement || placement.startsWith('top') || placement.startsWith('bottom');\n if (mouseEvent !== undefined && verticalPlacement) {\n middleware.push(\n Middleware.verticalCursorAnchoring({ x: mouseEvent.clientX }),\n shift({ padding: Number(this.asProps.padding) }),\n );\n }\n\n computePosition(node, popperElement, {\n placement: placement,\n middleware,\n }).then(({ x, y, placement }) => {\n Object.assign(popperElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n this.setState({ innerVisible: true, calculatedPlacement: placement });\n });\n }\n }, 10);\n }, showTimeout);\n }\n\n private hideHint(): void {\n const { timeout } = this.asProps;\n\n const hideTimeout = Array.isArray(timeout) ? timeout[1] : timeout;\n\n if (this.showTimer) {\n clearTimeout(this.showTimer);\n }\n\n if (this.state.innerVisible) {\n this.setState({ innerVisible: false });\n\n this.hideTimer = window.setTimeout(() => {\n this.handlers.visible(false);\n this.setState({ innerVisible: null });\n }, hideTimeout);\n }\n }\n\n private handleFocus(e: FocusEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e) && lastInteraction.isKeyboard()) {\n this.showHint(e.target);\n }\n }\n\n private handleBlur(e: FocusEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.hideHint();\n }\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Escape' && this.isCompatibleElement(e.target) && this.sameAsTrigger(e) && this.state.innerVisible) {\n e.stopPropagation();\n this.hideHint();\n }\n }\n\n private handleMouseEnter(e: MouseEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.showHint(e.target, e);\n }\n }\n\n private handleMouseLeave(e: MouseEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.hideHint();\n }\n }\n\n private isCompatibleElement(target: unknown): target is HTMLElement | SVGElement {\n return target instanceof HTMLElement || target instanceof SVGElement;\n }\n\n private sameAsTrigger(e: MouseEvent | KeyboardEvent | FocusEvent): boolean {\n return this.asProps.triggerRef.current === e.target;\n }\n\n private keyframesKey(placement?: Placement) {\n if (!placement) {\n return 'opacity';\n }\n\n if (keyframesMap.has(placement)) {\n return keyframesMap.get(placement)!;\n }\n\n let keyframe: string = 'opacity';\n\n if (placement.startsWith('left')) keyframe = 'scale-left';\n if (placement.startsWith('right')) keyframe = 'scale-right';\n if (placement.startsWith('bottom')) keyframe = 'scale-bottom';\n if (placement.startsWith('top')) keyframe = 'scale-top';\n\n keyframesMap.set(placement, keyframe);\n\n return keyframe;\n }\n\n private setTriggerAriaLabel() {\n const { triggerRef, children } = this.asProps;\n\n requestAnimationFrame(() => {\n const trigger = triggerRef.current;\n\n if (trigger) {\n const textContent = trigger.textContent;\n const ariaLabel = getAccessibleName(trigger);\n\n if (!textContent && !ariaLabel) {\n const label = (typeof children === 'string' || typeof children === 'number')\n ? children.toString()\n : (this.hintRef.current?.textContent ?? '');\n triggerRef.current?.setAttribute('aria-label', label);\n }\n }\n });\n }\n\n render() {\n const SHintPopper = Root;\n const { visible, Children, parentZIndexStacking, styles, timingFunction } = this.asProps;\n const { innerVisible, calculatedPlacement } = this.state;\n\n if (canUseDOM()) {\n this.setTriggerAriaLabel();\n }\n\n if (!visible && innerVisible === null) {\n return null;\n }\n\n const duration = propToArray(Number(this.asProps.duration));\n\n /* `visible && innerVisible === null` - is a condition to start showing right after hover/focus */\n const showHint = (visible && innerVisible === null) || innerVisible === true;\n\n return sstyled(styles)(\n <Portal>\n <SHintPopper\n render={Box}\n ref={this.hintRef}\n aria-hidden={true}\n role={undefined}\n zIndex={parentZIndexStacking}\n use:visible={showHint}\n durationInitialize={`${duration[0]}ms`}\n durationFinalize={`${duration[1]}ms`}\n timingFunction={timingFunction}\n keyframesInitialize={innerVisible === true ? keyframes[`@${this.keyframesKey(calculatedPlacement)}-in`] : undefined}\n keyframesFinalize={innerVisible === false ? keyframes[`@${this.keyframesKey(calculatedPlacement)}-out`] : undefined}\n use:data-ui-name='Hint'\n >\n <Children />\n </SHintPopper>\n </Portal>,\n );\n }\n}\n\nexport const Hint = createComponent<'div', SimpleHintPopperProps>(HintPopperRoot);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Hint.js","names":["computePosition","flip","offset","shift","createComponent","Root","sstyled","Component","lastInteraction","canUseDOM","getAccessibleName","cssVariableEnhance","zIndexStackingEnhance","React","Middleware","keyframes","_sstyled","insert","Box","Portal","styles","_sstyled2","enhances","variable","fallback","map","v","Number","parseInt","toString","prop","propToArray","Array","isArray","keyframesMap","Map","HintPopperRoot","constructor","props","_defineProperty","createRef","handleFocus","bind","handleBlur","handleMouseEnter","handleMouseLeave","handleKeyDown","state","innerVisible","calculatedPlacement","placement","uncontrolledProps","visible","componentDidMount","triggerRef","children","asProps","trigger","current","subscribe","componentWillUnmount","unsubscribe","componentDidUpdate","prevProps","requestAnimationFrame","showHint","hideHint","addEventListener","removeEventListener","node","mouseEvent","timeout","showTimeout","hideTimer","clearTimeout","showTimer","window","setTimeout","handlers","popperElement","hintRef","middleware","padding","verticalPlacement","startsWith","undefined","push","verticalCursorAnchoring","x","clientX","then","y","Object","assign","style","left","top","setState","hideTimeout","e","isCompatibleElement","target","sameAsTrigger","isKeyboard","key","stopPropagation","HTMLElement","SVGElement","keyframesKey","has","get","keyframe","set","setTriggerAriaLabel","textContent","ariaLabel","label","setAttribute","render","_ref","_ref2","SHintPopper","Children","parentZIndexStacking","timingFunction","ignorePortalsStacking","duration","createElement","cn","_assignProps","defaultVisible","Hint"],"sources":["../../../../src/components/hint/Hint.tsx"],"sourcesContent":["import { computePosition, flip, offset, shift, type Placement } from '@floating-ui/dom';\nimport { createComponent, Root, sstyled, Component, lastInteraction } from '@semcore/core';\nimport canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport { getAccessibleName } from '@semcore/core/lib/utils/getAccessibleName';\nimport { cssVariableEnhance } from '@semcore/core/lib/utils/useCssVariable';\nimport { zIndexStackingEnhance } from '@semcore/core/lib/utils/zIndexStacking';\nimport type { DataType } from 'csstype';\nimport React from 'react';\n\nimport { Middleware } from './Middleware';\nimport keyframes from '../animation/style/keyframes.shadow.css';\nimport { Box } from '../flex-box';\nimport { Portal } from '../portal';\nimport styles from './style/hint.shadow.css';\n\ntype Handlers = {\n visible: null;\n};\n\nexport type SimpleHintPopperProps = {\n /** Ref to the trigger element */\n triggerRef: React.RefObject<HTMLElement | null>;\n /**\n * The position of the popper relative to the trigger that called it.\n * @default top\n */\n placement?: Placement;\n /**\n * Timer to show and hide the popper\n * @default [500, 500]\n */\n timeout?: DefaultProps['timeout'];\n /**\n * Hint content.\n * Better to use here some short text.\n * */\n children: React.ReactNode;\n\n /** Popper visibility value */\n visible?: boolean;\n /** Default popper visibility\n * @default false */\n defaultVisible?: boolean;\n /** Function called when visibility changes */\n onVisibleChange?: (visible: boolean, e?: Event) => boolean | void;\n /**\n * Set ignore for portal stacking\n * @default true\n */\n ignorePortalsStacking?: boolean;\n};\n\ntype DefaultProps = {\n defaultVisible?: boolean;\n timeout: number | [number, number];\n timingFunction: DataType.EasingFunction;\n placement?: Placement;\n ignorePortalsStacking?: boolean;\n};\n\ntype State = {\n innerVisible: boolean | null;\n calculatedPlacement?: Placement;\n};\n\nconst enhances = [\n zIndexStackingEnhance('z-index-tooltip'),\n cssVariableEnhance({\n variable: '--intergalactic-duration-popper',\n fallback: '200',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'duration',\n }),\n cssVariableEnhance({\n variable: '--intergalactic-spacing-1x',\n fallback: '4',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'offset',\n }),\n cssVariableEnhance({\n variable: '--intergalactic-spacing-1x',\n fallback: '4',\n map: (v: string) => Number.parseInt(v, 10).toString(),\n prop: 'padding',\n }),\n] as const;\n\nfunction propToArray(prop: number | [number, number]): [number, number] {\n return Array.isArray(prop) ? prop : [prop, prop];\n}\n\nconst keyframesMap = new Map<Placement, string>();\n\nclass HintPopperRoot extends Component<SimpleHintPopperProps, typeof enhances, Handlers, DefaultProps, State> {\n public readonly hintRef = React.createRef<HTMLElement>();\n\n static style = Object.assign(keyframes, styles);\n\n private showTimer?: number;\n private hideTimer?: number;\n\n static enhance = enhances;\n\n static defaultProps: DefaultProps = {\n defaultVisible: false,\n timeout: [500, 500],\n timingFunction: 'ease-out',\n placement: 'top',\n ignorePortalsStacking: true,\n };\n\n constructor(props: SimpleHintPopperProps) {\n super(props);\n\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n\n this.state = {\n innerVisible: null,\n calculatedPlacement: props.placement,\n };\n }\n\n uncontrolledProps() {\n return {\n visible: null,\n };\n }\n\n componentDidMount() {\n const { triggerRef, children } = this.asProps;\n const trigger = triggerRef.current;\n\n if (trigger && children) {\n this.subscribe(trigger);\n }\n }\n\n componentWillUnmount() {\n const trigger = this.asProps.triggerRef.current;\n\n if (trigger) {\n this.unsubscribe(trigger);\n }\n }\n\n componentDidUpdate(prevProps: SimpleHintPopperProps) {\n if (prevProps.visible !== this.props.visible) {\n requestAnimationFrame(() => {\n const trigger = this.props.triggerRef.current;\n\n if (this.props.visible && trigger) {\n this.showHint(trigger);\n } else {\n this.hideHint();\n }\n });\n }\n }\n\n private subscribe(trigger: HTMLElement) {\n trigger.addEventListener('focus', this.handleFocus);\n trigger.addEventListener('blur', this.handleBlur);\n trigger.addEventListener('mouseenter', this.handleMouseEnter);\n trigger.addEventListener('mouseleave', this.handleMouseLeave);\n trigger.addEventListener('keydown', this.handleKeyDown);\n\n if (this.asProps.visible) {\n this.showHint(trigger);\n }\n }\n\n private unsubscribe(trigger: HTMLElement) {\n trigger.removeEventListener('focus', this.handleFocus);\n trigger.removeEventListener('blur', this.handleBlur);\n trigger.removeEventListener('mouseenter', this.handleMouseEnter);\n trigger.removeEventListener('mouseleave', this.handleMouseLeave);\n trigger.removeEventListener('keydown', this.handleKeyDown);\n\n this.hideHint();\n }\n\n private showHint(node: Element, mouseEvent?: MouseEvent): void {\n const { placement, timeout } = this.asProps;\n\n const showTimeout = Array.isArray(timeout) ? timeout[0] : timeout;\n\n if (this.hideTimer) {\n clearTimeout(this.hideTimer);\n }\n\n this.showTimer = window.setTimeout(() => {\n this.handlers.visible(true);\n\n window.setTimeout(() => {\n const popperElement = this.hintRef.current;\n if (popperElement) {\n const middleware = [\n offset(Number(this.asProps.offset)),\n flip(),\n shift({ padding: Number(this.asProps.padding) }),\n ];\n const verticalPlacement = !placement || placement.startsWith('top') || placement.startsWith('bottom');\n if (mouseEvent !== undefined && verticalPlacement) {\n middleware.push(\n Middleware.verticalCursorAnchoring({ x: mouseEvent.clientX }),\n shift({ padding: Number(this.asProps.padding) }),\n );\n }\n\n computePosition(node, popperElement, {\n placement: placement,\n middleware,\n }).then(({ x, y, placement }) => {\n Object.assign(popperElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n this.setState({ innerVisible: true, calculatedPlacement: placement });\n });\n }\n }, 10);\n }, showTimeout);\n }\n\n private hideHint(): void {\n const { timeout } = this.asProps;\n\n const hideTimeout = Array.isArray(timeout) ? timeout[1] : timeout;\n\n if (this.showTimer) {\n clearTimeout(this.showTimer);\n }\n\n if (this.state.innerVisible) {\n this.setState({ innerVisible: false });\n\n this.hideTimer = window.setTimeout(() => {\n this.handlers.visible(false);\n this.setState({ innerVisible: null });\n }, hideTimeout);\n }\n }\n\n private handleFocus(e: FocusEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e) && lastInteraction.isKeyboard()) {\n this.showHint(e.target);\n }\n }\n\n private handleBlur(e: FocusEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.hideHint();\n }\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Escape' && this.isCompatibleElement(e.target) && this.sameAsTrigger(e) && this.state.innerVisible) {\n e.stopPropagation();\n this.hideHint();\n }\n }\n\n private handleMouseEnter(e: MouseEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.showHint(e.target, e);\n }\n }\n\n private handleMouseLeave(e: MouseEvent): void {\n if (this.isCompatibleElement(e.target) && this.sameAsTrigger(e)) {\n this.hideHint();\n }\n }\n\n private isCompatibleElement(target: unknown): target is HTMLElement | SVGElement {\n return target instanceof HTMLElement || target instanceof SVGElement;\n }\n\n private sameAsTrigger(e: MouseEvent | KeyboardEvent | FocusEvent): boolean {\n return this.asProps.triggerRef.current === e.target;\n }\n\n private keyframesKey(placement?: Placement) {\n if (!placement) {\n return 'opacity';\n }\n\n if (keyframesMap.has(placement)) {\n return keyframesMap.get(placement)!;\n }\n\n let keyframe: string = 'opacity';\n\n if (placement.startsWith('left')) keyframe = 'scale-left';\n if (placement.startsWith('right')) keyframe = 'scale-right';\n if (placement.startsWith('bottom')) keyframe = 'scale-bottom';\n if (placement.startsWith('top')) keyframe = 'scale-top';\n\n keyframesMap.set(placement, keyframe);\n\n return keyframe;\n }\n\n private setTriggerAriaLabel() {\n const { triggerRef, children } = this.asProps;\n\n requestAnimationFrame(() => {\n const trigger = triggerRef.current;\n\n if (trigger) {\n const textContent = trigger.textContent;\n const ariaLabel = getAccessibleName(trigger);\n\n if (!textContent && !ariaLabel) {\n const label = (typeof children === 'string' || typeof children === 'number')\n ? children.toString()\n : (this.hintRef.current?.textContent ?? '');\n triggerRef.current?.setAttribute('aria-label', label);\n }\n }\n });\n }\n\n render() {\n const SHintPopper = Root;\n const { visible, Children, parentZIndexStacking, styles, timingFunction, ignorePortalsStacking } = this.asProps;\n const { innerVisible, calculatedPlacement } = this.state;\n\n if (canUseDOM()) {\n this.setTriggerAriaLabel();\n }\n\n if (!visible && innerVisible === null) {\n return null;\n }\n\n const duration = propToArray(Number(this.asProps.duration));\n\n /* `visible && innerVisible === null` - is a condition to start showing right after hover/focus */\n const showHint = (visible && innerVisible === null) || innerVisible === true;\n\n return sstyled(styles)(\n <Portal ignorePortalsStacking={ignorePortalsStacking}>\n <SHintPopper\n render={Box}\n ref={this.hintRef}\n aria-hidden={true}\n role={undefined}\n zIndex={parentZIndexStacking}\n use:visible={showHint}\n durationInitialize={`${duration[0]}ms`}\n durationFinalize={`${duration[1]}ms`}\n timingFunction={timingFunction}\n keyframesInitialize={innerVisible === true ? keyframes[`@${this.keyframesKey(calculatedPlacement)}-in`] : undefined}\n keyframesFinalize={innerVisible === false ? keyframes[`@${this.keyframesKey(calculatedPlacement)}-out`] : undefined}\n use:data-ui-name='Hint'\n >\n <Children />\n </SHintPopper>\n </Portal>,\n );\n }\n}\n\nexport const Hint = createComponent<'div', SimpleHintPopperProps>(HintPopperRoot);\n"],"mappings":"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","ignoreList":[]}
@@ -90,6 +90,14 @@ class ScrollBarRoot extends Component {
90
90
  _defineProperty(this, "calculate", () => {
91
91
  if (!this.$container) return;
92
92
  const visibleScroll = this.calculateVisibleScroll();
93
+
94
+ /*
95
+ Safari retains GPU-composited layers after DOM removal.
96
+ Resetting transform before unmount prevents ghost rendering artifacts.
97
+ */
98
+ if (!visibleScroll && this.$slider) {
99
+ this.$slider.style.transform = 'none';
100
+ }
93
101
  this.setState({
94
102
  visibleScroll
95
103
  }, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollBar.js","names":["createComponent","sstyled","Component","Root","contextEnhance","React","Box","style","_sstyled","insert","hideScrollBarsFromScreenReadersContext","createContext","DEFAULT_SLIDER_SIZE","setAriaValues","$container","$horizontalBar","$verticalBar","scrollWidth","clientWidth","scrollHeight","clientHeight","scrollLeft","scrollTop","maxScrollRight","maxScrollBottom","setAttribute","Math","floor","toString","ScrollBarRoot","constructor","args","_defineProperty","width","height","x","y","left","top","pageX","pageY","visibleScroll","domNode","$bar","orientation","getOrientation","horizontalBarRef","verticalBarRef","asProps","current","node","$slider","calculateVisibleScroll","setState","sliderStyle","calculateSliderStyle","kefBar","calculateKefBar","kefScroll","calculateKefScroll","handleScroll","transform","e","preventDefault","_scroll","calculateScrollByDiff","_mouse","document","removeEventListener","handleMouseMoveDocument","handleMouseUpDocument","handleSelectStartDocument","stopPropagation","addEventListener","pageXOffset","pageYOffset","window","getBoundingClientRect","calculateScrollByClick","container","horizontal","vertical","calculateOrientation","clientWidthBar","clientHeightBar","calculateDimensions","visibleSize","totalSize","ratio","min","round","max","position","windowOffset","mouseOffset","barPage","scroll","oldMouseOffset","oldScroll","offsetMouse","undefined","subscribe","$node","calculate","unsubscribe","getSliderProps","ref","refSlider","onMouseDown","handleMouseDownSlider","componentDidMount","componentDidUpdate","prevProps","props","componentWillUnmount","render","_ref","_ref3","SScrollBar","styles","uid","hideFromScreenReaders","state","leftOffset","rightOffset","topOffset","bottomOffset","offsetSum","right","bottom","createElement","cn","_assignProps","refBar","handleMouseDownBar","createRef","children","ScrollBar","Slider","_ref2","arguments[0]","_ref4","SSlider","_assignProps2","onDragStart","setAreaValue"],"sources":["../../../../src/components/scroll-area/ScrollBar.tsx"],"sourcesContent":["import { createComponent, sstyled, Component, Root } from '@semcore/core';\nimport contextEnhance from '@semcore/core/lib/utils/enhances/contextEnhance';\nimport React from 'react';\n\nimport { Box } from '../flex-box';\nimport type { ScrollBar as ScrollBarType, ScrollBarProps } from './ScrollBar.types';\nimport style from './style/scroll-bar.shadow.css';\n\nexport const hideScrollBarsFromScreenReadersContext = React.createContext(false);\n\nexport const DEFAULT_SLIDER_SIZE = 50;\n\n// updating DOM directly to avoid react dom rerendering and reconciliation\nconst setAriaValues = (\n $container?: Element | null,\n $horizontalBar?: Element | null,\n $verticalBar?: Element | null,\n) => {\n if (!$container || !($horizontalBar || $verticalBar)) return;\n const { scrollWidth, clientWidth, scrollHeight, clientHeight, scrollLeft, scrollTop } =\n $container;\n const maxScrollRight = scrollWidth - clientWidth;\n const maxScrollBottom = scrollHeight - clientHeight;\n if ($horizontalBar) {\n $horizontalBar.setAttribute('aria-valuenow', Math.floor(scrollLeft).toString());\n $horizontalBar.setAttribute('aria-valuemax', maxScrollRight.toString());\n }\n if ($verticalBar) {\n $verticalBar.setAttribute('aria-valuenow', Math.floor(scrollTop).toString());\n $verticalBar.setAttribute('aria-valuemax', maxScrollBottom.toString());\n }\n};\n\ntype State = {\n visibleScroll: boolean;\n};\n\nclass ScrollBarRoot extends Component<ScrollBarProps, typeof ScrollBarRoot.enhance, {}, { container: React.RefObject<HTMLElement> | null }, State> {\n static displayName = 'Bar';\n\n static style = style;\n static enhance = [\n contextEnhance(hideScrollBarsFromScreenReadersContext, 'hideFromScreenReaders'),\n ] as const;\n\n static defaultProps = () => {\n return {\n container: React.createRef<HTMLElement | null>(),\n children: <ScrollBar.Slider />,\n };\n };\n\n $bar: HTMLElement | null = null;\n $slider: HTMLElement | null = null;\n\n sliderStyle = { width: DEFAULT_SLIDER_SIZE, height: DEFAULT_SLIDER_SIZE };\n\n kefScroll = { x: 0, y: 0 };\n kefBar = { x: 0, y: 0 };\n\n _scroll = { left: 0, top: 0 };\n _mouse = { pageX: 0, pageY: 0 };\n\n state: State = {\n visibleScroll: false,\n };\n\n get $container(): Element | null {\n return this.asProps.container.current;\n }\n\n refBar = (domNode: HTMLElement | null) => {\n if (domNode !== null) {\n this.$bar = domNode;\n const orientation = this.getOrientation();\n const { horizontalBarRef, verticalBarRef } = this.asProps;\n if (orientation === 'horizontal' && horizontalBarRef) horizontalBarRef.current = domNode;\n if (orientation === 'vertical' && verticalBarRef) verticalBarRef.current = domNode;\n\n setAriaValues(this.$container, horizontalBarRef?.current, verticalBarRef?.current);\n }\n };\n\n refSlider = (node: HTMLElement | null) => {\n if (node) {\n this.$slider = node;\n }\n };\n\n calculateVisibleScroll() {\n const orientation = this.getOrientation();\n const [horizontal, vertical] = this.calculateOrientation();\n\n if (horizontal && orientation === 'horizontal') {\n return true;\n } else if (vertical && orientation === 'vertical') {\n return true;\n }\n\n return false;\n }\n\n calculateKefScroll() {\n const { clientWidth, clientHeight, scrollWidth, scrollHeight } = this.$container!;\n const { clientWidth: clientWidthBar, clientHeight: clientHeightBar } = this.$bar!;\n const { width, height } = this.sliderStyle;\n return {\n x: (clientWidthBar - width) / (scrollWidth - clientWidth),\n y: (clientHeightBar - height) / (scrollHeight - clientHeight),\n };\n }\n\n calculateKefBar() {\n const { clientWidth, clientHeight } = this.$bar!;\n const { width, height } = this.sliderStyle;\n return {\n x: (clientWidth - width) / clientWidth,\n y: (clientHeight - height) / clientHeight,\n };\n }\n\n calculateSliderStyle() {\n const { clientWidth, clientHeight } = this.$bar!;\n const { scrollWidth, scrollHeight } = this.$container!;\n\n const calculateDimensions = (visibleSize: number, totalSize: number) => {\n const ratio = Math.min(visibleSize / totalSize, 1); // percentage of visible area\n return Math.round(visibleSize * ratio);\n };\n\n return {\n width: Math.max(calculateDimensions(clientWidth, scrollWidth), DEFAULT_SLIDER_SIZE),\n height: Math.max(calculateDimensions(clientHeight, scrollHeight), DEFAULT_SLIDER_SIZE),\n };\n }\n\n calculateScrollByClick(\n position: number,\n windowOffset: number,\n mouseOffset: number,\n kefBar: number,\n kefScroll: number,\n ) {\n // bar coordinates relative to the page\n const barPage = position + windowOffset;\n\n // click coordinates - bar coordinates * proportion\n const scroll = (mouseOffset - barPage) * kefBar;\n\n return scroll / kefScroll;\n }\n\n calculateScrollByDiff(\n mouseOffset: number,\n oldMouseOffset: number,\n oldScroll: number,\n kefScroll: number,\n ) {\n // mouse offset (new coordinates - old coordinates)\n const offsetMouse = mouseOffset - oldMouseOffset;\n\n // old scroll position * scroll ratio + offset\n const scroll = oldScroll * kefScroll + offsetMouse;\n\n return scroll / kefScroll;\n }\n\n calculateOrientation() {\n if (!this.$container) return [false, false];\n const { scrollWidth, scrollHeight, clientWidth, clientHeight } = this.$container;\n return [scrollWidth > clientWidth, scrollHeight > clientHeight];\n }\n\n calculate = () => {\n if (!this.$container) return;\n\n const visibleScroll = this.calculateVisibleScroll();\n\n this.setState({ visibleScroll }, () => {\n if (!this.$container || !this.$bar || !this.$slider) return;\n const orientation = this.getOrientation();\n\n this.sliderStyle = this.calculateSliderStyle();\n this.kefBar = this.calculateKefBar();\n this.kefScroll = this.calculateKefScroll();\n\n if (orientation === 'horizontal') {\n this.$slider.style.width = `${this.sliderStyle.width}px`;\n } else if (orientation === 'vertical') {\n this.$slider.style.height = `${this.sliderStyle.height}px`;\n }\n this.handleScroll();\n });\n };\n\n handleScroll = () => {\n if (!this.$container || !this.$slider) return;\n\n const { scrollTop, scrollLeft } = this.$container;\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal') {\n this.$slider.style.transform = `translateX(${scrollLeft * this.kefScroll.x}px)`;\n } else if (orientation === 'vertical') {\n this.$slider.style.transform = `translateY(${scrollTop * this.kefScroll.y}px)`;\n }\n };\n\n getOrientation() {\n if (this.asProps.orientation !== undefined) return this.asProps.orientation;\n const [horizontal, vertical] = this.calculateOrientation();\n if (vertical) return 'vertical';\n if (horizontal) return 'horizontal';\n }\n\n handleSelectStartDocument = (e: Event) => e.preventDefault();\n\n handleMouseMoveDocument = (e: MouseEvent) => {\n const { pageX, pageY } = e;\n const { left, top } = this._scroll;\n const { x, y } = this.kefScroll;\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal' && this.$container) {\n this.$container.scrollLeft = this.calculateScrollByDiff(pageX, this._mouse.pageX, left, x);\n } else if (orientation === 'vertical' && this.$container) {\n this.$container.scrollTop = this.calculateScrollByDiff(pageY, this._mouse.pageY, top, y);\n }\n };\n\n handleMouseUpDocument = () => {\n document.removeEventListener('mousemove', this.handleMouseMoveDocument, true);\n document.removeEventListener('mouseup', this.handleMouseUpDocument, true);\n document.removeEventListener('selectstart', this.handleSelectStartDocument, true);\n };\n\n handleMouseDownSlider = (e: MouseEvent) => {\n // canceling the emergence of a real scroll\n e.stopPropagation();\n // save mouse coordinates (relative to the page)\n this._mouse = { pageX: e.pageX, pageY: e.pageY };\n // save the scroll of the container\n // TODO: what happens if the content increases while we scroll?\n const { scrollLeft, scrollTop } = this.$container!;\n this._scroll = { left: scrollLeft, top: scrollTop };\n\n document.addEventListener('mousemove', this.handleMouseMoveDocument, true);\n document.addEventListener('mouseup', this.handleMouseUpDocument, true);\n document.addEventListener('selectstart', this.handleSelectStartDocument, true);\n };\n\n handleMouseDownBar = (e: MouseEvent) => {\n if (!this.$container) return;\n\n // cancellation of the ascent as in a real scroll\n e.stopPropagation();\n\n const { pageX, pageY } = e;\n const { pageXOffset, pageYOffset } = window;\n const { left, top } = this.$bar!.getBoundingClientRect();\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal') {\n this.$container.scrollLeft = this.calculateScrollByClick(\n left,\n pageXOffset,\n pageX,\n this.kefBar.x,\n this.kefScroll.x,\n );\n } else if (orientation === 'vertical') {\n this.$container.scrollTop = this.calculateScrollByClick(\n top,\n pageYOffset,\n pageY,\n this.kefBar.y,\n this.kefScroll.y,\n );\n }\n };\n\n subscribe($node: Element | null) {\n if (!$node) return;\n $node.addEventListener('scroll', this.handleScroll);\n $node.addEventListener('calculate', this.calculate);\n }\n\n unsubscribe($node: Element | null) {\n if (!$node) return;\n $node.removeEventListener('scroll', this.handleScroll);\n $node.removeEventListener('calculate', this.calculate);\n }\n\n getSliderProps() {\n return {\n ref: this.refSlider,\n onMouseDown: this.handleMouseDownSlider,\n };\n }\n\n componentDidMount() {\n this.subscribe(this.$container);\n }\n\n componentDidUpdate(prevProps: ScrollBarProps) {\n if (prevProps.container !== this.props.container && prevProps.container === null) {\n this.subscribe(this.$container);\n }\n }\n\n componentWillUnmount() {\n this.unsubscribe(this.$container);\n }\n\n render() {\n const SScrollBar = Root;\n const { styles, uid, position, container, orientation, hideFromScreenReaders } = this.asProps;\n const { visibleScroll } = this.state;\n\n let { leftOffset, rightOffset, topOffset, bottomOffset } = this.asProps;\n\n if (!visibleScroll) {\n return null;\n }\n\n let offsetSum = 0;\n\n if (orientation === 'horizontal') {\n if (leftOffset) offsetSum += leftOffset;\n if (rightOffset) offsetSum += rightOffset;\n\n if (position === 'sticky' && container?.current) {\n const { left, right } = container.current.getBoundingClientRect();\n\n if (leftOffset) {\n leftOffset += left;\n }\n\n if (rightOffset) {\n rightOffset += right;\n }\n }\n }\n\n if (orientation === 'vertical') {\n if (topOffset) offsetSum += topOffset;\n if (bottomOffset) offsetSum += bottomOffset;\n\n if (position === 'sticky' && container?.current) {\n const { top, bottom } = container.current.getBoundingClientRect();\n\n if (topOffset) {\n topOffset += top;\n }\n\n if (bottomOffset) {\n bottomOffset += bottom;\n }\n }\n }\n\n return sstyled(styles)(\n <SScrollBar\n render={Box}\n left={orientation === 'horizontal' && leftOffset ? `${leftOffset}px` : undefined}\n right={orientation === 'horizontal' && rightOffset ? `${rightOffset}px` : undefined}\n top={orientation === 'vertical' && topOffset ? `${topOffset}px` : undefined}\n bottom={orientation === 'vertical' && bottomOffset ? `${bottomOffset}px` : undefined}\n offsetSum={`${offsetSum}px`}\n role={hideFromScreenReaders ? undefined : 'scrollbar'}\n aria-hidden={hideFromScreenReaders ? 'true' : undefined}\n ref={this.refBar}\n aria-valuemin={hideFromScreenReaders ? undefined : 0}\n aria-controls={hideFromScreenReaders ? undefined : `igc-${uid}-scroll-container`}\n aria-orientation={hideFromScreenReaders ? undefined : this.getOrientation()}\n onMouseDown={this.handleMouseDownBar}\n orientation={this.getOrientation()}\n />,\n );\n }\n}\n\nfunction Slider(props: ScrollBarProps) {\n const { styles } = props;\n const SSlider = Root;\n\n return sstyled(styles)(<SSlider render={Box} onDragStart={() => false} />);\n}\n\nexport const ScrollBar = createComponent(ScrollBarRoot, {\n Slider,\n}) as typeof ScrollBarType;\n\nexport { setAriaValues as setAreaValue };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ScrollBar.js","names":["createComponent","sstyled","Component","Root","contextEnhance","React","Box","style","_sstyled","insert","hideScrollBarsFromScreenReadersContext","createContext","DEFAULT_SLIDER_SIZE","setAriaValues","$container","$horizontalBar","$verticalBar","scrollWidth","clientWidth","scrollHeight","clientHeight","scrollLeft","scrollTop","maxScrollRight","maxScrollBottom","setAttribute","Math","floor","toString","ScrollBarRoot","constructor","args","_defineProperty","width","height","x","y","left","top","pageX","pageY","visibleScroll","domNode","$bar","orientation","getOrientation","horizontalBarRef","verticalBarRef","asProps","current","node","$slider","calculateVisibleScroll","transform","setState","sliderStyle","calculateSliderStyle","kefBar","calculateKefBar","kefScroll","calculateKefScroll","handleScroll","e","preventDefault","_scroll","calculateScrollByDiff","_mouse","document","removeEventListener","handleMouseMoveDocument","handleMouseUpDocument","handleSelectStartDocument","stopPropagation","addEventListener","pageXOffset","pageYOffset","window","getBoundingClientRect","calculateScrollByClick","container","horizontal","vertical","calculateOrientation","clientWidthBar","clientHeightBar","calculateDimensions","visibleSize","totalSize","ratio","min","round","max","position","windowOffset","mouseOffset","barPage","scroll","oldMouseOffset","oldScroll","offsetMouse","undefined","subscribe","$node","calculate","unsubscribe","getSliderProps","ref","refSlider","onMouseDown","handleMouseDownSlider","componentDidMount","componentDidUpdate","prevProps","props","componentWillUnmount","render","_ref","_ref3","SScrollBar","styles","uid","hideFromScreenReaders","state","leftOffset","rightOffset","topOffset","bottomOffset","offsetSum","right","bottom","createElement","cn","_assignProps","refBar","handleMouseDownBar","createRef","children","ScrollBar","Slider","_ref2","arguments[0]","_ref4","SSlider","_assignProps2","onDragStart","setAreaValue"],"sources":["../../../../src/components/scroll-area/ScrollBar.tsx"],"sourcesContent":["import { createComponent, sstyled, Component, Root } from '@semcore/core';\nimport contextEnhance from '@semcore/core/lib/utils/enhances/contextEnhance';\nimport React from 'react';\n\nimport { Box } from '../flex-box';\nimport type { ScrollBar as ScrollBarType, ScrollBarProps } from './ScrollBar.types';\nimport style from './style/scroll-bar.shadow.css';\n\nexport const hideScrollBarsFromScreenReadersContext = React.createContext(false);\n\nexport const DEFAULT_SLIDER_SIZE = 50;\n\n// updating DOM directly to avoid react dom rerendering and reconciliation\nconst setAriaValues = (\n $container?: Element | null,\n $horizontalBar?: Element | null,\n $verticalBar?: Element | null,\n) => {\n if (!$container || !($horizontalBar || $verticalBar)) return;\n const { scrollWidth, clientWidth, scrollHeight, clientHeight, scrollLeft, scrollTop } =\n $container;\n const maxScrollRight = scrollWidth - clientWidth;\n const maxScrollBottom = scrollHeight - clientHeight;\n if ($horizontalBar) {\n $horizontalBar.setAttribute('aria-valuenow', Math.floor(scrollLeft).toString());\n $horizontalBar.setAttribute('aria-valuemax', maxScrollRight.toString());\n }\n if ($verticalBar) {\n $verticalBar.setAttribute('aria-valuenow', Math.floor(scrollTop).toString());\n $verticalBar.setAttribute('aria-valuemax', maxScrollBottom.toString());\n }\n};\n\ntype State = {\n visibleScroll: boolean;\n};\n\nclass ScrollBarRoot extends Component<ScrollBarProps, typeof ScrollBarRoot.enhance, {}, { container: React.RefObject<HTMLElement> | null }, State> {\n static displayName = 'Bar';\n\n static style = style;\n static enhance = [\n contextEnhance(hideScrollBarsFromScreenReadersContext, 'hideFromScreenReaders'),\n ] as const;\n\n static defaultProps = () => {\n return {\n container: React.createRef<HTMLElement | null>(),\n children: <ScrollBar.Slider />,\n };\n };\n\n $bar: HTMLElement | null = null;\n $slider: HTMLElement | null = null;\n\n sliderStyle = { width: DEFAULT_SLIDER_SIZE, height: DEFAULT_SLIDER_SIZE };\n\n kefScroll = { x: 0, y: 0 };\n kefBar = { x: 0, y: 0 };\n\n _scroll = { left: 0, top: 0 };\n _mouse = { pageX: 0, pageY: 0 };\n\n state: State = {\n visibleScroll: false,\n };\n\n get $container(): Element | null {\n return this.asProps.container.current;\n }\n\n refBar = (domNode: HTMLElement | null) => {\n if (domNode !== null) {\n this.$bar = domNode;\n const orientation = this.getOrientation();\n const { horizontalBarRef, verticalBarRef } = this.asProps;\n if (orientation === 'horizontal' && horizontalBarRef) horizontalBarRef.current = domNode;\n if (orientation === 'vertical' && verticalBarRef) verticalBarRef.current = domNode;\n\n setAriaValues(this.$container, horizontalBarRef?.current, verticalBarRef?.current);\n }\n };\n\n refSlider = (node: HTMLElement | null) => {\n if (node) {\n this.$slider = node;\n }\n };\n\n calculateVisibleScroll() {\n const orientation = this.getOrientation();\n const [horizontal, vertical] = this.calculateOrientation();\n\n if (horizontal && orientation === 'horizontal') {\n return true;\n } else if (vertical && orientation === 'vertical') {\n return true;\n }\n\n return false;\n }\n\n calculateKefScroll() {\n const { clientWidth, clientHeight, scrollWidth, scrollHeight } = this.$container!;\n const { clientWidth: clientWidthBar, clientHeight: clientHeightBar } = this.$bar!;\n const { width, height } = this.sliderStyle;\n return {\n x: (clientWidthBar - width) / (scrollWidth - clientWidth),\n y: (clientHeightBar - height) / (scrollHeight - clientHeight),\n };\n }\n\n calculateKefBar() {\n const { clientWidth, clientHeight } = this.$bar!;\n const { width, height } = this.sliderStyle;\n return {\n x: (clientWidth - width) / clientWidth,\n y: (clientHeight - height) / clientHeight,\n };\n }\n\n calculateSliderStyle() {\n const { clientWidth, clientHeight } = this.$bar!;\n const { scrollWidth, scrollHeight } = this.$container!;\n\n const calculateDimensions = (visibleSize: number, totalSize: number) => {\n const ratio = Math.min(visibleSize / totalSize, 1); // percentage of visible area\n return Math.round(visibleSize * ratio);\n };\n\n return {\n width: Math.max(calculateDimensions(clientWidth, scrollWidth), DEFAULT_SLIDER_SIZE),\n height: Math.max(calculateDimensions(clientHeight, scrollHeight), DEFAULT_SLIDER_SIZE),\n };\n }\n\n calculateScrollByClick(\n position: number,\n windowOffset: number,\n mouseOffset: number,\n kefBar: number,\n kefScroll: number,\n ) {\n // bar coordinates relative to the page\n const barPage = position + windowOffset;\n\n // click coordinates - bar coordinates * proportion\n const scroll = (mouseOffset - barPage) * kefBar;\n\n return scroll / kefScroll;\n }\n\n calculateScrollByDiff(\n mouseOffset: number,\n oldMouseOffset: number,\n oldScroll: number,\n kefScroll: number,\n ) {\n // mouse offset (new coordinates - old coordinates)\n const offsetMouse = mouseOffset - oldMouseOffset;\n\n // old scroll position * scroll ratio + offset\n const scroll = oldScroll * kefScroll + offsetMouse;\n\n return scroll / kefScroll;\n }\n\n calculateOrientation() {\n if (!this.$container) return [false, false];\n const { scrollWidth, scrollHeight, clientWidth, clientHeight } = this.$container;\n return [scrollWidth > clientWidth, scrollHeight > clientHeight];\n }\n\n calculate = () => {\n if (!this.$container) return;\n\n const visibleScroll = this.calculateVisibleScroll();\n\n /*\n Safari retains GPU-composited layers after DOM removal.\n Resetting transform before unmount prevents ghost rendering artifacts.\n */\n if (!visibleScroll && this.$slider) {\n this.$slider.style.transform = 'none';\n }\n\n this.setState({ visibleScroll }, () => {\n if (!this.$container || !this.$bar || !this.$slider) return;\n const orientation = this.getOrientation();\n\n this.sliderStyle = this.calculateSliderStyle();\n this.kefBar = this.calculateKefBar();\n this.kefScroll = this.calculateKefScroll();\n\n if (orientation === 'horizontal') {\n this.$slider.style.width = `${this.sliderStyle.width}px`;\n } else if (orientation === 'vertical') {\n this.$slider.style.height = `${this.sliderStyle.height}px`;\n }\n this.handleScroll();\n });\n };\n\n handleScroll = () => {\n if (!this.$container || !this.$slider) return;\n\n const { scrollTop, scrollLeft } = this.$container;\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal') {\n this.$slider.style.transform = `translateX(${scrollLeft * this.kefScroll.x}px)`;\n } else if (orientation === 'vertical') {\n this.$slider.style.transform = `translateY(${scrollTop * this.kefScroll.y}px)`;\n }\n };\n\n getOrientation() {\n if (this.asProps.orientation !== undefined) return this.asProps.orientation;\n const [horizontal, vertical] = this.calculateOrientation();\n if (vertical) return 'vertical';\n if (horizontal) return 'horizontal';\n }\n\n handleSelectStartDocument = (e: Event) => e.preventDefault();\n\n handleMouseMoveDocument = (e: MouseEvent) => {\n const { pageX, pageY } = e;\n const { left, top } = this._scroll;\n const { x, y } = this.kefScroll;\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal' && this.$container) {\n this.$container.scrollLeft = this.calculateScrollByDiff(pageX, this._mouse.pageX, left, x);\n } else if (orientation === 'vertical' && this.$container) {\n this.$container.scrollTop = this.calculateScrollByDiff(pageY, this._mouse.pageY, top, y);\n }\n };\n\n handleMouseUpDocument = () => {\n document.removeEventListener('mousemove', this.handleMouseMoveDocument, true);\n document.removeEventListener('mouseup', this.handleMouseUpDocument, true);\n document.removeEventListener('selectstart', this.handleSelectStartDocument, true);\n };\n\n handleMouseDownSlider = (e: MouseEvent) => {\n // canceling the emergence of a real scroll\n e.stopPropagation();\n // save mouse coordinates (relative to the page)\n this._mouse = { pageX: e.pageX, pageY: e.pageY };\n // save the scroll of the container\n // TODO: what happens if the content increases while we scroll?\n const { scrollLeft, scrollTop } = this.$container!;\n this._scroll = { left: scrollLeft, top: scrollTop };\n\n document.addEventListener('mousemove', this.handleMouseMoveDocument, true);\n document.addEventListener('mouseup', this.handleMouseUpDocument, true);\n document.addEventListener('selectstart', this.handleSelectStartDocument, true);\n };\n\n handleMouseDownBar = (e: MouseEvent) => {\n if (!this.$container) return;\n\n // cancellation of the ascent as in a real scroll\n e.stopPropagation();\n\n const { pageX, pageY } = e;\n const { pageXOffset, pageYOffset } = window;\n const { left, top } = this.$bar!.getBoundingClientRect();\n const orientation = this.getOrientation();\n\n if (orientation === 'horizontal') {\n this.$container.scrollLeft = this.calculateScrollByClick(\n left,\n pageXOffset,\n pageX,\n this.kefBar.x,\n this.kefScroll.x,\n );\n } else if (orientation === 'vertical') {\n this.$container.scrollTop = this.calculateScrollByClick(\n top,\n pageYOffset,\n pageY,\n this.kefBar.y,\n this.kefScroll.y,\n );\n }\n };\n\n subscribe($node: Element | null) {\n if (!$node) return;\n $node.addEventListener('scroll', this.handleScroll);\n $node.addEventListener('calculate', this.calculate);\n }\n\n unsubscribe($node: Element | null) {\n if (!$node) return;\n $node.removeEventListener('scroll', this.handleScroll);\n $node.removeEventListener('calculate', this.calculate);\n }\n\n getSliderProps() {\n return {\n ref: this.refSlider,\n onMouseDown: this.handleMouseDownSlider,\n };\n }\n\n componentDidMount() {\n this.subscribe(this.$container);\n }\n\n componentDidUpdate(prevProps: ScrollBarProps) {\n if (prevProps.container !== this.props.container && prevProps.container === null) {\n this.subscribe(this.$container);\n }\n }\n\n componentWillUnmount() {\n this.unsubscribe(this.$container);\n }\n\n render() {\n const SScrollBar = Root;\n const { styles, uid, position, container, orientation, hideFromScreenReaders } = this.asProps;\n const { visibleScroll } = this.state;\n\n let { leftOffset, rightOffset, topOffset, bottomOffset } = this.asProps;\n\n if (!visibleScroll) {\n return null;\n }\n\n let offsetSum = 0;\n\n if (orientation === 'horizontal') {\n if (leftOffset) offsetSum += leftOffset;\n if (rightOffset) offsetSum += rightOffset;\n\n if (position === 'sticky' && container?.current) {\n const { left, right } = container.current.getBoundingClientRect();\n\n if (leftOffset) {\n leftOffset += left;\n }\n\n if (rightOffset) {\n rightOffset += right;\n }\n }\n }\n\n if (orientation === 'vertical') {\n if (topOffset) offsetSum += topOffset;\n if (bottomOffset) offsetSum += bottomOffset;\n\n if (position === 'sticky' && container?.current) {\n const { top, bottom } = container.current.getBoundingClientRect();\n\n if (topOffset) {\n topOffset += top;\n }\n\n if (bottomOffset) {\n bottomOffset += bottom;\n }\n }\n }\n\n return sstyled(styles)(\n <SScrollBar\n render={Box}\n left={orientation === 'horizontal' && leftOffset ? `${leftOffset}px` : undefined}\n right={orientation === 'horizontal' && rightOffset ? `${rightOffset}px` : undefined}\n top={orientation === 'vertical' && topOffset ? `${topOffset}px` : undefined}\n bottom={orientation === 'vertical' && bottomOffset ? `${bottomOffset}px` : undefined}\n offsetSum={`${offsetSum}px`}\n role={hideFromScreenReaders ? undefined : 'scrollbar'}\n aria-hidden={hideFromScreenReaders ? 'true' : undefined}\n ref={this.refBar}\n aria-valuemin={hideFromScreenReaders ? undefined : 0}\n aria-controls={hideFromScreenReaders ? undefined : `igc-${uid}-scroll-container`}\n aria-orientation={hideFromScreenReaders ? undefined : this.getOrientation()}\n onMouseDown={this.handleMouseDownBar}\n orientation={this.getOrientation()}\n />,\n );\n }\n}\n\nfunction Slider(props: ScrollBarProps) {\n const { styles } = props;\n const SSlider = Root;\n\n return sstyled(styles)(<SSlider render={Box} onDragStart={() => false} />);\n}\n\nexport const ScrollBar = createComponent(ScrollBarRoot, {\n Slider,\n}) as typeof ScrollBarType;\n\nexport { setAriaValues as setAreaValue };\n"],"mappings":"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","ignoreList":[]}
@@ -292,7 +292,8 @@ class HintPopperRoot extends Component {
292
292
  Children,
293
293
  parentZIndexStacking,
294
294
  styles: styles2,
295
- timingFunction
295
+ timingFunction,
296
+ ignorePortalsStacking
296
297
  } = this.asProps;
297
298
  const {
298
299
  innerVisible,
@@ -306,7 +307,9 @@ class HintPopperRoot extends Component {
306
307
  }
307
308
  const duration = propToArray(Number(this.asProps.duration));
308
309
  const showHint = visible && innerVisible === null || innerVisible === true;
309
- return _ref2 = sstyled(styles2), /* @__PURE__ */ React.createElement(Portal, _ref2.cn("Portal", {}), /* @__PURE__ */ React.createElement(SHintPopper, _ref2.cn("SHintPopper", {
310
+ return _ref2 = sstyled(styles2), /* @__PURE__ */ React.createElement(Portal, _ref2.cn("Portal", {
311
+ "ignorePortalsStacking": ignorePortalsStacking
312
+ }), /* @__PURE__ */ React.createElement(SHintPopper, _ref2.cn("SHintPopper", {
310
313
  ...assignProps({
311
314
  "ref": this.hintRef,
312
315
  "aria-hidden": true,
@@ -329,7 +332,8 @@ _defineProperty(HintPopperRoot, "defaultProps", {
329
332
  defaultVisible: false,
330
333
  timeout: [500, 500],
331
334
  timingFunction: "ease-out",
332
- placement: "top"
335
+ placement: "top",
336
+ ignorePortalsStacking: true
333
337
  });
334
338
  const Hint = createComponent(HintPopperRoot);
335
339
  export {
@@ -92,6 +92,9 @@ class ScrollBarRoot extends Component {
92
92
  _defineProperty(this, "calculate", () => {
93
93
  if (!this.$container) return;
94
94
  const visibleScroll = this.calculateVisibleScroll();
95
+ if (!visibleScroll && this.$slider) {
96
+ this.$slider.style.transform = "none";
97
+ }
95
98
  this.setState({
96
99
  visibleScroll
97
100
  }, () => {
@@ -26,12 +26,18 @@ export type SimpleHintPopperProps = {
26
26
  defaultVisible?: boolean;
27
27
  /** Function called when visibility changes */
28
28
  onVisibleChange?: (visible: boolean, e?: Event) => boolean | void;
29
+ /**
30
+ * Set ignore for portal stacking
31
+ * @default true
32
+ */
33
+ ignorePortalsStacking?: boolean;
29
34
  };
30
35
  type DefaultProps = {
31
36
  defaultVisible?: boolean;
32
37
  timeout: number | [number, number];
33
38
  timingFunction: DataType.EasingFunction;
34
39
  placement?: Placement;
40
+ ignorePortalsStacking?: boolean;
35
41
  };
36
42
  export declare const Hint: import("@semcore/core").Intergalactic.Component<"div", SimpleHintPopperProps, {}, never[]>;
37
43
  export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/base-components",
3
3
  "description": "Semrush Base Components",
4
- "version": "17.0.0-prerelease.37",
4
+ "version": "17.0.0-prerelease.42",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/esm/index.mjs",
7
7
  "typings": "lib/types/index.d.ts",
@@ -10,9 +10,9 @@
10
10
  "license": "MIT",
11
11
  "exports": {
12
12
  ".": {
13
- "require": "./lib/cjs/index.js",
13
+ "types": "./lib/types/index.d.ts",
14
14
  "import": "./lib/esm/index.mjs",
15
- "types": "./lib/types/index.d.ts"
15
+ "require": "./lib/cjs/index.js"
16
16
  }
17
17
  },
18
18
  "dependencies": {
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/classnames": "2.2.6",
35
- "@semcore/core": "17.0.0-prerelease.37",
35
+ "@semcore/core": "17.0.0-prerelease.42",
36
36
  "@semcore/testing-utils": "1.0.0"
37
37
  },
38
38
  "scripts": {