@semcore/core 17.2.0 → 17.2.1-prerelease.0
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 +9 -0
- package/lib/esm/utils/logger.mjs +1 -1
- package/lib/utils/injectStyle.js +1 -1
- package/lib/utils/injectStyle.mjs +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/logger.js.map +1 -1
- package/lib/utils/logger.mjs +1 -1
- package/lib/utils/logger.mjs.map +1 -1
- package/lib/utils/use/usePreventScroll.js +4 -1
- package/lib/utils/use/usePreventScroll.js.map +1 -1
- package/lib/utils/use/usePreventScroll.mjs +4 -1
- package/lib/utils/use/usePreventScroll.mjs.map +1 -1
- package/package.json +2 -2
- package/vitest.config.mts +17 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +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.2.1] - 2026-06-25
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Outdated dependecies.
|
|
10
|
+
- Update `usePreventScroll` to handle `hidden` and `clip` overflow
|
|
11
|
+
values on `body`.
|
|
12
|
+
- Incorrect processing of oklch values.
|
|
13
|
+
|
|
5
14
|
## [17.2.0] - 2026-06-05
|
|
6
15
|
|
|
7
16
|
### Added
|
package/lib/esm/utils/logger.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
const DEV = process.env.NODE_ENV !== "production";
|
|
2
|
+
const DEV = process.env.NODE_ENV !== "production" && process.env.NODE_ENV !== "test";
|
|
3
3
|
class Logger {
|
|
4
4
|
constructor(logger2) {
|
|
5
5
|
_defineProperty(this, "logger", void 0);
|
package/lib/utils/injectStyle.js
CHANGED
package/lib/utils/logger.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.Logger = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
-
const DEV = process.env.NODE_ENV !== 'production';
|
|
9
|
+
const DEV = process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test';
|
|
10
10
|
class Logger {
|
|
11
11
|
constructor(logger) {
|
|
12
12
|
(0, _defineProperty2.default)(this, "logger", void 0);
|
package/lib/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","names":["DEV","process","env","NODE_ENV","Logger","constructor","logger","_defineProperty2","default","warn","console","level","msg","component","condition","exports","_default"],"sources":["../../src/utils/logger.ts"],"sourcesContent":["const DEV = process.env.NODE_ENV !== 'production';\n\nclass Logger {\n private logger: any;\n\n constructor(logger?: typeof console) {\n this.logger = logger || {\n warn: () => {},\n };\n }\n\n console(level: string, msg: string, component: any) {\n this.logger[level](component ? `[${component}]: ${msg}` : msg);\n }\n\n warn(condition: any, msg: string, component: any) {\n if (DEV) {\n if (condition) {\n this.console('warn', msg, component);\n }\n }\n }\n}\nexport { Logger };\nexport default new Logger(console);\n"],"mappings":";;;;;;;;AAAA,MAAMA,GAAG,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY;
|
|
1
|
+
{"version":3,"file":"logger.js","names":["DEV","process","env","NODE_ENV","Logger","constructor","logger","_defineProperty2","default","warn","console","level","msg","component","condition","exports","_default"],"sources":["../../src/utils/logger.ts"],"sourcesContent":["const DEV = process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test';\n\nclass Logger {\n private logger: any;\n\n constructor(logger?: typeof console) {\n this.logger = logger || {\n warn: () => {},\n };\n }\n\n console(level: string, msg: string, component: any) {\n this.logger[level](component ? `[${component}]: ${msg}` : msg);\n }\n\n warn(condition: any, msg: string, component: any) {\n if (DEV) {\n if (condition) {\n this.console('warn', msg, component);\n }\n }\n }\n}\nexport { Logger };\nexport default new Logger(console);\n"],"mappings":";;;;;;;;AAAA,MAAMA,GAAG,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIF,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM;AAEpF,MAAMC,MAAM,CAAC;EAGXC,WAAWA,CAACC,MAAuB,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IACnC,IAAI,CAACF,MAAM,GAAGA,MAAM,IAAI;MACtBG,IAAI,EAAEA,CAAA,KAAM,CAAC;IACf,CAAC;EACH;EAEAC,OAAOA,CAACC,KAAa,EAAEC,GAAW,EAAEC,SAAc,EAAE;IAClD,IAAI,CAACP,MAAM,CAACK,KAAK,CAAC,CAACE,SAAS,GAAG,IAAIA,SAAS,MAAMD,GAAG,EAAE,GAAGA,GAAG,CAAC;EAChE;EAEAH,IAAIA,CAACK,SAAc,EAAEF,GAAW,EAAEC,SAAc,EAAE;IAChD,IAAIb,GAAG,EAAE;MACP,IAAIc,SAAS,EAAE;QACb,IAAI,CAACJ,OAAO,CAAC,MAAM,EAAEE,GAAG,EAAEC,SAAS,CAAC;MACtC;IACF;EACF;AACF;AAACE,OAAA,CAAAX,MAAA,GAAAA,MAAA;AAAA,IAAAY,QAAA,GAAAD,OAAA,CAAAP,OAAA,GAEc,IAAIJ,MAAM,CAACM,OAAO,CAAC","ignoreList":[]}
|
package/lib/utils/logger.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
const DEV = process.env.NODE_ENV !== "production";
|
|
2
|
+
const DEV = process.env.NODE_ENV !== "production" && process.env.NODE_ENV !== "test";
|
|
3
3
|
class Logger {
|
|
4
4
|
constructor(logger2) {
|
|
5
5
|
_defineProperty(this, "logger", void 0);
|
package/lib/utils/logger.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.mjs","names":["DEV","process","env","NODE_ENV","Logger","constructor","logger","_defineProperty","warn","console","level","msg","component","condition"],"sources":["../../src/utils/logger.ts"],"sourcesContent":["const DEV = process.env.NODE_ENV !== 'production';\n\nclass Logger {\n private logger: any;\n\n constructor(logger?: typeof console) {\n this.logger = logger || {\n warn: () => {},\n };\n }\n\n console(level: string, msg: string, component: any) {\n this.logger[level](component ? `[${component}]: ${msg}` : msg);\n }\n\n warn(condition: any, msg: string, component: any) {\n if (DEV) {\n if (condition) {\n this.console('warn', msg, component);\n }\n }\n }\n}\nexport { Logger };\nexport default new Logger(console);\n"],"mappings":";AAAA,MAAMA,GAAG,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY;
|
|
1
|
+
{"version":3,"file":"logger.mjs","names":["DEV","process","env","NODE_ENV","Logger","constructor","logger","_defineProperty","warn","console","level","msg","component","condition"],"sources":["../../src/utils/logger.ts"],"sourcesContent":["const DEV = process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test';\n\nclass Logger {\n private logger: any;\n\n constructor(logger?: typeof console) {\n this.logger = logger || {\n warn: () => {},\n };\n }\n\n console(level: string, msg: string, component: any) {\n this.logger[level](component ? `[${component}]: ${msg}` : msg);\n }\n\n warn(condition: any, msg: string, component: any) {\n if (DEV) {\n if (condition) {\n this.console('warn', msg, component);\n }\n }\n }\n}\nexport { Logger };\nexport default new Logger(console);\n"],"mappings":";AAAA,MAAMA,GAAG,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIF,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM;AAEpF,MAAMC,MAAM,CAAC;EAGXC,WAAWA,CAACC,MAAuB,EAAE;IAAAC,eAAA;IACnC,IAAI,CAACD,MAAM,GAAGA,MAAM,IAAI;MACtBE,IAAI,EAAEA,CAAA,KAAM,CAAC;IACf,CAAC;EACH;EAEAC,OAAOA,CAACC,KAAa,EAAEC,GAAW,EAAEC,SAAc,EAAE;IAClD,IAAI,CAACN,MAAM,CAACI,KAAK,CAAC,CAACE,SAAS,GAAG,IAAIA,SAAS,MAAMD,GAAG,EAAE,GAAGA,GAAG,CAAC;EAChE;EAEAH,IAAIA,CAACK,SAAc,EAAEF,GAAW,EAAEC,SAAc,EAAE;IAChD,IAAIZ,GAAG,EAAE;MACP,IAAIa,SAAS,EAAE;QACb,IAAI,CAACJ,OAAO,CAAC,MAAM,EAAEE,GAAG,EAAEC,SAAS,CAAC;MACtC;IACF;EACF;AACF;AACA,SAASR,MAAM;AACf,eAAe,IAAIA,MAAM,CAACK,OAAO,CAAC","ignoreList":[]}
|
|
@@ -35,6 +35,7 @@ const lockedBodyStyles = {
|
|
|
35
35
|
overflow: '',
|
|
36
36
|
boxSizing: ''
|
|
37
37
|
};
|
|
38
|
+
const overflowValuesToSkip = new Set(['clip', 'hidden']);
|
|
38
39
|
function usePreventScroll(visible = true, disabled = false) {
|
|
39
40
|
const scrollbarWidth = _react.default.useMemo(getScrollbarWidth, [getScrollbarWidth]);
|
|
40
41
|
const id = (0, _uniqueID.useUID)('scroll-preventer-');
|
|
@@ -44,11 +45,13 @@ function usePreventScroll(visible = true, disabled = false) {
|
|
|
44
45
|
scrollPreventers.add(id);
|
|
45
46
|
if (scrollPreventers.size > 1) return;
|
|
46
47
|
const {
|
|
47
|
-
paddingRight
|
|
48
|
+
paddingRight,
|
|
49
|
+
overflow
|
|
48
50
|
} = window.getComputedStyle(document.body);
|
|
49
51
|
lockedBodyStyles.paddingRight = document.body.style.paddingRight;
|
|
50
52
|
lockedBodyStyles.overflow = document.body.style.overflow;
|
|
51
53
|
lockedBodyStyles.boxSizing = document.body.style.boxSizing;
|
|
54
|
+
if (overflowValuesToSkip.has(overflow)) return;
|
|
52
55
|
const intPaddingRight = getIntValueFromCss(paddingRight);
|
|
53
56
|
let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);
|
|
54
57
|
// Detected own style for window inside window
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreventScroll.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_uniqueID","getScrollbarWidth","canUseDOM","outer","document","createElement","style","visibility","width","msOverflowStyle","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","getIntValueFromCss","value","Number","isNaN","parseInt","scrollPreventers","Set","lockedBodyStyles","paddingRight","boxSizing","usePreventScroll","visible","disabled","scrollbarWidth","React","useMemo","id","useUID","useEffect","add","size","window","getComputedStyle","intPaddingRight","intPaddingRightFromStyle","delete"],"sources":["../../../src/utils/use/usePreventScroll.tsx"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { useUID } from '../uniqueID';\n\nexport function getScrollbarWidth(): number {\n if (!canUseDOM()) return 0;\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n // @ts-expect-error\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode?.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nfunction getIntValueFromCss(value: any) {\n return !Number.isNaN(Number(value)) ? Number(value) : Number.parseInt(value, 10);\n}\n\nconst scrollPreventers = new Set<string>();\nconst lockedBodyStyles = {\n paddingRight: '',\n overflow: '',\n boxSizing: '',\n};\nexport default function usePreventScroll(visible = true, disabled = false) {\n const scrollbarWidth = React.useMemo(getScrollbarWidth, [getScrollbarWidth]);\n const id = useUID('scroll-preventer-');\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n scrollPreventers.add(id);\n if (scrollPreventers.size > 1) return;\n\n const { paddingRight } = window.getComputedStyle(document.body);\n\n lockedBodyStyles.paddingRight = document.body.style.paddingRight;\n lockedBodyStyles.overflow = document.body.style.overflow;\n lockedBodyStyles.boxSizing = document.body.style.boxSizing;\n\n const intPaddingRight = getIntValueFromCss(paddingRight);\n let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);\n // Detected own style for window inside window\n if (intPaddingRightFromStyle !== scrollbarWidth) {\n intPaddingRightFromStyle = 0;\n }\n\n document.body.style.overflow = 'hidden';\n document.body.style.paddingRight =\n scrollbarWidth + (intPaddingRight - intPaddingRightFromStyle) + 'px';\n document.body.style.boxSizing = 'border-box';\n }, [visible, id, disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n return () => {\n scrollPreventers.delete(id);\n if (scrollPreventers.size !== 0) return;\n document.body.style.overflow = lockedBodyStyles.overflow;\n document.body.style.paddingRight = lockedBodyStyles.paddingRight;\n document.body.style.boxSizing = lockedBodyStyles.boxSizing;\n };\n }, [visible, id, disabled]);\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEO,SAASG,iBAAiBA,CAAA,EAAW;EAC1C,IAAI,CAAC,IAAAC,kBAAS,EAAC,CAAC,EAAE,OAAO,CAAC;EAC1B,MAAMC,KAAK,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EAC3CF,KAAK,CAACG,KAAK,CAACC,UAAU,GAAG,QAAQ;EACjCJ,KAAK,CAACG,KAAK,CAACE,KAAK,GAAG,OAAO;EAC3B;EACAL,KAAK,CAACG,KAAK,CAACG,eAAe,GAAG,WAAW,CAAC,CAAC;EAC3CL,QAAQ,CAACM,IAAI,CAACC,WAAW,CAACR,KAAK,CAAC;EAEhC,MAAMS,aAAa,GAAGT,KAAK,CAACU,WAAW;EACvCV,KAAK,CAACG,KAAK,CAACQ,QAAQ,GAAG,QAAQ;EAE/B,MAAMC,KAAK,GAAGX,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EAC3CU,KAAK,CAACT,KAAK,CAACE,KAAK,GAAG,MAAM;EAC1BL,KAAK,CAACQ,WAAW,CAACI,KAAK,CAAC;EAExB,MAAMC,eAAe,GAAGD,KAAK,CAACF,WAAW;EAEzCV,KAAK,CAACc,UAAU,EAAEC,WAAW,CAACf,KAAK,CAAC;EAEpC,OAAOS,aAAa,GAAGI,eAAe;AACxC;AAEA,SAASG,kBAAkBA,CAACC,KAAU,EAAE;EACtC,OAAO,CAACC,MAAM,CAACC,KAAK,CAACD,MAAM,CAACD,KAAK,CAAC,CAAC,GAAGC,MAAM,CAACD,KAAK,CAAC,GAAGC,MAAM,CAACE,QAAQ,CAACH,KAAK,EAAE,EAAE,CAAC;AAClF;AAEA,MAAMI,gBAAgB,GAAG,IAAIC,GAAG,CAAS,CAAC;AAC1C,MAAMC,gBAAgB,GAAG;EACvBC,YAAY,EAAE,EAAE;EAChBb,QAAQ,EAAE,EAAE;EACZc,SAAS,EAAE;AACb,CAAC;
|
|
1
|
+
{"version":3,"file":"usePreventScroll.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_uniqueID","getScrollbarWidth","canUseDOM","outer","document","createElement","style","visibility","width","msOverflowStyle","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","getIntValueFromCss","value","Number","isNaN","parseInt","scrollPreventers","Set","lockedBodyStyles","paddingRight","boxSizing","overflowValuesToSkip","usePreventScroll","visible","disabled","scrollbarWidth","React","useMemo","id","useUID","useEffect","add","size","window","getComputedStyle","has","intPaddingRight","intPaddingRightFromStyle","delete"],"sources":["../../../src/utils/use/usePreventScroll.tsx"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { useUID } from '../uniqueID';\n\nexport function getScrollbarWidth(): number {\n if (!canUseDOM()) return 0;\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n // @ts-expect-error\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode?.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nfunction getIntValueFromCss(value: any) {\n return !Number.isNaN(Number(value)) ? Number(value) : Number.parseInt(value, 10);\n}\n\nconst scrollPreventers = new Set<string>();\nconst lockedBodyStyles = {\n paddingRight: '',\n overflow: '',\n boxSizing: '',\n};\n\nconst overflowValuesToSkip = new Set<string>(['clip', 'hidden']);\nexport default function usePreventScroll(visible = true, disabled = false) {\n const scrollbarWidth = React.useMemo(getScrollbarWidth, [getScrollbarWidth]);\n const id = useUID('scroll-preventer-');\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n scrollPreventers.add(id);\n if (scrollPreventers.size > 1) return;\n\n const { paddingRight, overflow } = window.getComputedStyle(document.body);\n\n lockedBodyStyles.paddingRight = document.body.style.paddingRight;\n lockedBodyStyles.overflow = document.body.style.overflow;\n lockedBodyStyles.boxSizing = document.body.style.boxSizing;\n\n if (overflowValuesToSkip.has(overflow)) return;\n\n const intPaddingRight = getIntValueFromCss(paddingRight);\n let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);\n // Detected own style for window inside window\n if (intPaddingRightFromStyle !== scrollbarWidth) {\n intPaddingRightFromStyle = 0;\n }\n\n document.body.style.overflow = 'hidden';\n document.body.style.paddingRight =\n scrollbarWidth + (intPaddingRight - intPaddingRightFromStyle) + 'px';\n document.body.style.boxSizing = 'border-box';\n }, [visible, id, disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n return () => {\n scrollPreventers.delete(id);\n if (scrollPreventers.size !== 0) return;\n document.body.style.overflow = lockedBodyStyles.overflow;\n document.body.style.paddingRight = lockedBodyStyles.paddingRight;\n document.body.style.boxSizing = lockedBodyStyles.boxSizing;\n };\n }, [visible, id, disabled]);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,6 +27,7 @@ const lockedBodyStyles = {
|
|
|
27
27
|
overflow: '',
|
|
28
28
|
boxSizing: ''
|
|
29
29
|
};
|
|
30
|
+
const overflowValuesToSkip = new Set(['clip', 'hidden']);
|
|
30
31
|
export default function usePreventScroll(visible = true, disabled = false) {
|
|
31
32
|
const scrollbarWidth = React.useMemo(getScrollbarWidth, [getScrollbarWidth]);
|
|
32
33
|
const id = useUID('scroll-preventer-');
|
|
@@ -36,11 +37,13 @@ export default function usePreventScroll(visible = true, disabled = false) {
|
|
|
36
37
|
scrollPreventers.add(id);
|
|
37
38
|
if (scrollPreventers.size > 1) return;
|
|
38
39
|
const {
|
|
39
|
-
paddingRight
|
|
40
|
+
paddingRight,
|
|
41
|
+
overflow
|
|
40
42
|
} = window.getComputedStyle(document.body);
|
|
41
43
|
lockedBodyStyles.paddingRight = document.body.style.paddingRight;
|
|
42
44
|
lockedBodyStyles.overflow = document.body.style.overflow;
|
|
43
45
|
lockedBodyStyles.boxSizing = document.body.style.boxSizing;
|
|
46
|
+
if (overflowValuesToSkip.has(overflow)) return;
|
|
44
47
|
const intPaddingRight = getIntValueFromCss(paddingRight);
|
|
45
48
|
let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);
|
|
46
49
|
// Detected own style for window inside window
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreventScroll.mjs","names":["React","canUseDOM","useUID","getScrollbarWidth","outer","document","createElement","style","visibility","width","msOverflowStyle","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","getIntValueFromCss","value","Number","isNaN","parseInt","scrollPreventers","Set","lockedBodyStyles","paddingRight","boxSizing","usePreventScroll","visible","disabled","scrollbarWidth","useMemo","id","useEffect","add","size","window","getComputedStyle","intPaddingRight","intPaddingRightFromStyle","delete"],"sources":["../../../src/utils/use/usePreventScroll.tsx"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { useUID } from '../uniqueID';\n\nexport function getScrollbarWidth(): number {\n if (!canUseDOM()) return 0;\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n // @ts-expect-error\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode?.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nfunction getIntValueFromCss(value: any) {\n return !Number.isNaN(Number(value)) ? Number(value) : Number.parseInt(value, 10);\n}\n\nconst scrollPreventers = new Set<string>();\nconst lockedBodyStyles = {\n paddingRight: '',\n overflow: '',\n boxSizing: '',\n};\nexport default function usePreventScroll(visible = true, disabled = false) {\n const scrollbarWidth = React.useMemo(getScrollbarWidth, [getScrollbarWidth]);\n const id = useUID('scroll-preventer-');\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n scrollPreventers.add(id);\n if (scrollPreventers.size > 1) return;\n\n const { paddingRight } = window.getComputedStyle(document.body);\n\n lockedBodyStyles.paddingRight = document.body.style.paddingRight;\n lockedBodyStyles.overflow = document.body.style.overflow;\n lockedBodyStyles.boxSizing = document.body.style.boxSizing;\n\n const intPaddingRight = getIntValueFromCss(paddingRight);\n let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);\n // Detected own style for window inside window\n if (intPaddingRightFromStyle !== scrollbarWidth) {\n intPaddingRightFromStyle = 0;\n }\n\n document.body.style.overflow = 'hidden';\n document.body.style.paddingRight =\n scrollbarWidth + (intPaddingRight - intPaddingRightFromStyle) + 'px';\n document.body.style.boxSizing = 'border-box';\n }, [visible, id, disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n return () => {\n scrollPreventers.delete(id);\n if (scrollPreventers.size !== 0) return;\n document.body.style.overflow = lockedBodyStyles.overflow;\n document.body.style.paddingRight = lockedBodyStyles.paddingRight;\n document.body.style.boxSizing = lockedBodyStyles.boxSizing;\n };\n }, [visible, id, disabled]);\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,SAAS,MAAM,kBAAc;AACpC,SAASC,MAAM,QAAQ,iBAAa;AAEpC,OAAO,SAASC,iBAAiBA,CAAA,EAAW;EAC1C,IAAI,CAACF,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC;EAC1B,MAAMG,KAAK,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EAC3CF,KAAK,CAACG,KAAK,CAACC,UAAU,GAAG,QAAQ;EACjCJ,KAAK,CAACG,KAAK,CAACE,KAAK,GAAG,OAAO;EAC3B;EACAL,KAAK,CAACG,KAAK,CAACG,eAAe,GAAG,WAAW,CAAC,CAAC;EAC3CL,QAAQ,CAACM,IAAI,CAACC,WAAW,CAACR,KAAK,CAAC;EAEhC,MAAMS,aAAa,GAAGT,KAAK,CAACU,WAAW;EACvCV,KAAK,CAACG,KAAK,CAACQ,QAAQ,GAAG,QAAQ;EAE/B,MAAMC,KAAK,GAAGX,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EAC3CU,KAAK,CAACT,KAAK,CAACE,KAAK,GAAG,MAAM;EAC1BL,KAAK,CAACQ,WAAW,CAACI,KAAK,CAAC;EAExB,MAAMC,eAAe,GAAGD,KAAK,CAACF,WAAW;EAEzCV,KAAK,CAACc,UAAU,EAAEC,WAAW,CAACf,KAAK,CAAC;EAEpC,OAAOS,aAAa,GAAGI,eAAe;AACxC;AAEA,SAASG,kBAAkBA,CAACC,KAAU,EAAE;EACtC,OAAO,CAACC,MAAM,CAACC,KAAK,CAACD,MAAM,CAACD,KAAK,CAAC,CAAC,GAAGC,MAAM,CAACD,KAAK,CAAC,GAAGC,MAAM,CAACE,QAAQ,CAACH,KAAK,EAAE,EAAE,CAAC;AAClF;AAEA,MAAMI,gBAAgB,GAAG,IAAIC,GAAG,CAAS,CAAC;AAC1C,MAAMC,gBAAgB,GAAG;EACvBC,YAAY,EAAE,EAAE;EAChBb,QAAQ,EAAE,EAAE;EACZc,SAAS,EAAE;AACb,CAAC;
|
|
1
|
+
{"version":3,"file":"usePreventScroll.mjs","names":["React","canUseDOM","useUID","getScrollbarWidth","outer","document","createElement","style","visibility","width","msOverflowStyle","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","getIntValueFromCss","value","Number","isNaN","parseInt","scrollPreventers","Set","lockedBodyStyles","paddingRight","boxSizing","overflowValuesToSkip","usePreventScroll","visible","disabled","scrollbarWidth","useMemo","id","useEffect","add","size","window","getComputedStyle","has","intPaddingRight","intPaddingRightFromStyle","delete"],"sources":["../../../src/utils/use/usePreventScroll.tsx"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { useUID } from '../uniqueID';\n\nexport function getScrollbarWidth(): number {\n if (!canUseDOM()) return 0;\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n // @ts-expect-error\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode?.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nfunction getIntValueFromCss(value: any) {\n return !Number.isNaN(Number(value)) ? Number(value) : Number.parseInt(value, 10);\n}\n\nconst scrollPreventers = new Set<string>();\nconst lockedBodyStyles = {\n paddingRight: '',\n overflow: '',\n boxSizing: '',\n};\n\nconst overflowValuesToSkip = new Set<string>(['clip', 'hidden']);\nexport default function usePreventScroll(visible = true, disabled = false) {\n const scrollbarWidth = React.useMemo(getScrollbarWidth, [getScrollbarWidth]);\n const id = useUID('scroll-preventer-');\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n scrollPreventers.add(id);\n if (scrollPreventers.size > 1) return;\n\n const { paddingRight, overflow } = window.getComputedStyle(document.body);\n\n lockedBodyStyles.paddingRight = document.body.style.paddingRight;\n lockedBodyStyles.overflow = document.body.style.overflow;\n lockedBodyStyles.boxSizing = document.body.style.boxSizing;\n\n if (overflowValuesToSkip.has(overflow)) return;\n\n const intPaddingRight = getIntValueFromCss(paddingRight);\n let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);\n // Detected own style for window inside window\n if (intPaddingRightFromStyle !== scrollbarWidth) {\n intPaddingRightFromStyle = 0;\n }\n\n document.body.style.overflow = 'hidden';\n document.body.style.paddingRight =\n scrollbarWidth + (intPaddingRight - intPaddingRightFromStyle) + 'px';\n document.body.style.boxSizing = 'border-box';\n }, [visible, id, disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n return () => {\n scrollPreventers.delete(id);\n if (scrollPreventers.size !== 0) return;\n document.body.style.overflow = lockedBodyStyles.overflow;\n document.body.style.paddingRight = lockedBodyStyles.paddingRight;\n document.body.style.boxSizing = lockedBodyStyles.boxSizing;\n };\n }, [visible, id, disabled]);\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semcore/core",
|
|
3
3
|
"description": "Semrush Core Component",
|
|
4
|
-
"version": "17.2.0",
|
|
4
|
+
"version": "17.2.1-prerelease.0",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib/index.mjs",
|
|
7
7
|
"typings": "lib/index.d.ts",
|
|
@@ -310,7 +310,7 @@
|
|
|
310
310
|
}
|
|
311
311
|
},
|
|
312
312
|
"dependencies": {
|
|
313
|
-
"@formatjs/intl": "
|
|
313
|
+
"@formatjs/intl": "4.1.13",
|
|
314
314
|
"@phytonmk/nano-css": "5.3.7",
|
|
315
315
|
"classnames": "2.2.6",
|
|
316
316
|
"hoist-non-react-statics": "3.3.2",
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { resolve as resolvePath } from 'node:path';
|
|
2
|
+
|
|
3
|
+
import { defineConfig } from 'vitest/config';
|
|
4
|
+
|
|
5
|
+
import { vitestPlugins, vitestResolve } from '../../vitest.config.mts';
|
|
6
|
+
|
|
7
|
+
export default defineConfig({
|
|
8
|
+
plugins: vitestPlugins,
|
|
9
|
+
resolve: vitestResolve,
|
|
10
|
+
test: {
|
|
11
|
+
include: [
|
|
12
|
+
'__tests__/**/*.test.tsx',
|
|
13
|
+
],
|
|
14
|
+
environment: 'jsdom',
|
|
15
|
+
setupFiles: [resolvePath(__dirname, '../../tools/testing-utils/setupTests')],
|
|
16
|
+
},
|
|
17
|
+
});
|