mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-05-30 15:44:07 +03:00
improve code and fix build time
This commit is contained in:
+99
-80
@@ -477,21 +477,7 @@ const debounce = (functionToDebounce, timeout, maxWait) => {
|
||||
};
|
||||
};
|
||||
|
||||
const cssNumber = {
|
||||
animationiterationcount: 1,
|
||||
columncount: 1,
|
||||
fillopacity: 1,
|
||||
flexgrow: 1,
|
||||
flexshrink: 1,
|
||||
fontweight: 1,
|
||||
lineheight: 1,
|
||||
opacity: 1,
|
||||
order: 1,
|
||||
orphans: 1,
|
||||
widows: 1,
|
||||
zindex: 1,
|
||||
zoom: 1,
|
||||
};
|
||||
const cssNumber = {};
|
||||
|
||||
const parseToZeroOrNumber = (value, toFloat) => {
|
||||
const num = toFloat ? parseFloat(value) : parseInt(value, 10);
|
||||
@@ -682,7 +668,7 @@ const validateOptions = (options, template, optionsDiff, doWriteErrors) => {
|
||||
return validateRecursive(options, template, optionsDiff || {}, doWriteErrors || false);
|
||||
};
|
||||
|
||||
function transformOptions(optionsWithOptionsTemplate) {
|
||||
const transformOptions = (optionsWithOptionsTemplate) => {
|
||||
const result = {
|
||||
_template: {},
|
||||
_options: {},
|
||||
@@ -700,7 +686,7 @@ function transformOptions(optionsWithOptionsTemplate) {
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
const classNameEnvironment = 'os-environment';
|
||||
const classNameEnvironmentFlexboxGlue = `${classNameEnvironment}-flexbox-glue`;
|
||||
@@ -719,9 +705,56 @@ const classNameSizeObserverListenerItem = `${classNameSizeObserverListener}-item
|
||||
const classNameSizeObserverListenerItemFinal = `${classNameSizeObserverListenerItem}-final`;
|
||||
const classNameTrinsicObserver = 'os-trinsic-observer';
|
||||
|
||||
const numberAllowedValues = optionsTemplateTypes.number;
|
||||
const stringArrayNullAllowedValues = [optionsTemplateTypes.string, optionsTemplateTypes.array, optionsTemplateTypes.null];
|
||||
const booleanTrueTemplate = [true, optionsTemplateTypes.boolean];
|
||||
const booleanFalseTemplate = [false, optionsTemplateTypes.boolean];
|
||||
const resizeAllowedValues = 'none both horizontal vertical';
|
||||
const overflowAllowedValues = 'visible-hidden visible-scroll scroll hidden';
|
||||
const scrollbarsVisibilityAllowedValues = 'visible hidden auto';
|
||||
const scrollbarsAutoHideAllowedValues = 'never scroll leavemove';
|
||||
const defaultOptionsWithTemplate = {
|
||||
resize: ['none', resizeAllowedValues],
|
||||
paddingAbsolute: booleanFalseTemplate,
|
||||
updating: {
|
||||
elementEvents: [[['img', 'load']], [optionsTemplateTypes.array, optionsTemplateTypes.null]],
|
||||
contentMutationDebounce: [80, numberAllowedValues],
|
||||
hostMutationDebounce: [0, numberAllowedValues],
|
||||
resizeDebounce: [0, numberAllowedValues],
|
||||
},
|
||||
overflow: {
|
||||
x: ['scroll', overflowAllowedValues],
|
||||
y: ['scroll', overflowAllowedValues],
|
||||
},
|
||||
scrollbars: {
|
||||
visibility: ['auto', scrollbarsVisibilityAllowedValues],
|
||||
autoHide: ['never', scrollbarsAutoHideAllowedValues],
|
||||
autoHideDelay: [800, numberAllowedValues],
|
||||
dragScroll: booleanTrueTemplate,
|
||||
clickScroll: booleanFalseTemplate,
|
||||
touch: booleanTrueTemplate,
|
||||
},
|
||||
textarea: {
|
||||
dynWidth: booleanFalseTemplate,
|
||||
dynHeight: booleanFalseTemplate,
|
||||
inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues],
|
||||
},
|
||||
nativeScrollbarsOverlaid: {
|
||||
show: booleanFalseTemplate,
|
||||
initialize: booleanFalseTemplate,
|
||||
},
|
||||
};
|
||||
const { _template: optionsTemplate, _options: defaultOptions } = transformOptions(defaultOptionsWithTemplate);
|
||||
|
||||
let environmentInstance;
|
||||
const { abs, round } = Math;
|
||||
|
||||
const diffBiggerThanOne = (valOne, valTwo) => {
|
||||
const absValOne = abs(valOne);
|
||||
const absValTwo = abs(valTwo);
|
||||
return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);
|
||||
};
|
||||
|
||||
const getNativeScrollbarSize = (body, measureElm) => {
|
||||
appendChildren(body, measureElm);
|
||||
const cSize = clientSize(measureElm);
|
||||
@@ -768,11 +801,10 @@ const getWindowDPR = () => {
|
||||
return window.devicePixelRatio || dDPI / sDPI;
|
||||
};
|
||||
|
||||
const diffBiggerThanOne = (valOne, valTwo) => {
|
||||
const absValOne = abs(valOne);
|
||||
const absValTwo = abs(valTwo);
|
||||
return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);
|
||||
};
|
||||
const getDefaultInitializationStrategy = (nativeScrollbarStyling) => ({
|
||||
_padding: !nativeScrollbarStyling,
|
||||
_content: false,
|
||||
});
|
||||
|
||||
const createEnvironment = () => {
|
||||
const { body } = document;
|
||||
@@ -786,6 +818,9 @@ const createEnvironment = () => {
|
||||
x: nativeScrollbarSize.x === 0,
|
||||
y: nativeScrollbarSize.y === 0,
|
||||
};
|
||||
const defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);
|
||||
let initializationStrategy = defaultInitializationStrategy;
|
||||
let defaultDefaultOptions = defaultOptions;
|
||||
const env = {
|
||||
_autoUpdateLoop: false,
|
||||
_nativeScrollbarSize: nativeScrollbarSize,
|
||||
@@ -802,6 +837,21 @@ const createEnvironment = () => {
|
||||
_removeListener(listener) {
|
||||
onChangedListener.delete(listener);
|
||||
},
|
||||
|
||||
_getInitializationStrategy: () => _extends_1({}, initializationStrategy),
|
||||
|
||||
_setInitializationStrategy(newInitializationStrategy) {
|
||||
initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);
|
||||
},
|
||||
|
||||
_getDefaultOptions: () => _extends_1({}, defaultDefaultOptions),
|
||||
|
||||
_setDefaultOptions(newDefaultOptions) {
|
||||
defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);
|
||||
},
|
||||
|
||||
_defaultInitializationStrategy: defaultInitializationStrategy,
|
||||
_defaultDefaultOptions: defaultDefaultOptions,
|
||||
};
|
||||
removeAttr(envElm, 'style');
|
||||
removeElements(envElm);
|
||||
@@ -874,24 +924,36 @@ const createUniqueViewportArrangeElement = () => {
|
||||
return elm;
|
||||
};
|
||||
|
||||
const evaluateCreationFromStrategy = (initializationValue, strategy) => {
|
||||
const isBooleanValue = isBoolean(initializationValue);
|
||||
|
||||
if (isBooleanValue || isUndefined(initializationValue)) {
|
||||
return (isBooleanValue ? initializationValue : strategy) && undefined;
|
||||
}
|
||||
|
||||
return initializationValue;
|
||||
};
|
||||
|
||||
const createStructureSetup = (target) => {
|
||||
const { _getInitializationStrategy, _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } = getEnvironment();
|
||||
|
||||
const { _padding: paddingNeeded, _content: contentNeeded } = _getInitializationStrategy();
|
||||
|
||||
const targetIsElm = isHTMLElement(target);
|
||||
const osTargetObj = targetIsElm
|
||||
? {}
|
||||
: {
|
||||
_host: target.host,
|
||||
_target: target.target,
|
||||
_padding: target.padding,
|
||||
_viewport: target.viewport,
|
||||
_content: target.content,
|
||||
_padding: evaluateCreationFromStrategy(target.padding, paddingNeeded),
|
||||
_content: evaluateCreationFromStrategy(target.content, contentNeeded),
|
||||
};
|
||||
|
||||
if (targetIsElm) {
|
||||
const padding = createDiv(classNamePadding);
|
||||
const viewport = createDiv(classNameViewport);
|
||||
const content = createDiv(classNameContent);
|
||||
appendChildren(padding, viewport);
|
||||
appendChildren(viewport, content);
|
||||
const padding = paddingNeeded && createDiv(classNamePadding);
|
||||
const content = contentNeeded && createDiv(classNameContent);
|
||||
osTargetObj._target = target;
|
||||
osTargetObj._padding = padding;
|
||||
osTargetObj._viewport = viewport;
|
||||
@@ -918,11 +980,14 @@ const createStructureSetup = (target) => {
|
||||
}
|
||||
|
||||
if (targetIsElm) {
|
||||
appendChildren(_content, getTargetContents(_target));
|
||||
const contentSlot = _content || _viewport;
|
||||
appendChildren(contentSlot, getTargetContents(_target));
|
||||
appendChildren(_host, _padding);
|
||||
appendChildren(_padding || _host, _viewport);
|
||||
appendChildren(_viewport, _content);
|
||||
push(destroyFns, () => {
|
||||
appendChildren(_host, contents(_content));
|
||||
removeElements(_padding);
|
||||
appendChildren(_host, contents(contentSlot));
|
||||
removeElements(_padding || _viewport);
|
||||
removeClass(_host, classNameHost);
|
||||
});
|
||||
} else {
|
||||
@@ -979,8 +1044,6 @@ const createStructureSetup = (target) => {
|
||||
_host,
|
||||
});
|
||||
|
||||
const { _nativeScrollbarStyling, _nativeScrollbarIsOverlaid, _cssCustomProperties } = getEnvironment();
|
||||
|
||||
if (_nativeScrollbarStyling) {
|
||||
push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));
|
||||
} else if (!_cssCustomProperties && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y)) {
|
||||
@@ -2040,49 +2103,9 @@ const createLifecycleHub = (options, structureSetup) => {
|
||||
};
|
||||
};
|
||||
|
||||
const numberAllowedValues = optionsTemplateTypes.number;
|
||||
const stringArrayNullAllowedValues = [optionsTemplateTypes.string, optionsTemplateTypes.array, optionsTemplateTypes.null];
|
||||
const booleanTrueTemplate = [true, optionsTemplateTypes.boolean];
|
||||
const booleanFalseTemplate = [false, optionsTemplateTypes.boolean];
|
||||
const resizeAllowedValues = 'none both horizontal vertical';
|
||||
const overflowAllowedValues = 'visible-hidden visible-scroll scroll hidden';
|
||||
const scrollbarsVisibilityAllowedValues = 'visible hidden auto';
|
||||
const scrollbarsAutoHideAllowedValues = 'never scroll leavemove';
|
||||
const defaultOptionsWithTemplate = {
|
||||
resize: ['none', resizeAllowedValues],
|
||||
paddingAbsolute: booleanFalseTemplate,
|
||||
updating: {
|
||||
elementEvents: [[['img', 'load']], [optionsTemplateTypes.array, optionsTemplateTypes.null]],
|
||||
contentMutationDebounce: [80, numberAllowedValues],
|
||||
hostMutationDebounce: [0, numberAllowedValues],
|
||||
resizeDebounce: [0, numberAllowedValues],
|
||||
},
|
||||
overflow: {
|
||||
x: ['scroll', overflowAllowedValues],
|
||||
y: ['scroll', overflowAllowedValues],
|
||||
},
|
||||
scrollbars: {
|
||||
visibility: ['auto', scrollbarsVisibilityAllowedValues],
|
||||
autoHide: ['never', scrollbarsAutoHideAllowedValues],
|
||||
autoHideDelay: [800, numberAllowedValues],
|
||||
dragScroll: booleanTrueTemplate,
|
||||
clickScroll: booleanFalseTemplate,
|
||||
touch: booleanTrueTemplate,
|
||||
},
|
||||
textarea: {
|
||||
dynWidth: booleanFalseTemplate,
|
||||
dynHeight: booleanFalseTemplate,
|
||||
inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues],
|
||||
},
|
||||
nativeScrollbarsOverlaid: {
|
||||
show: booleanFalseTemplate,
|
||||
initialize: booleanFalseTemplate,
|
||||
},
|
||||
};
|
||||
const { _template: optionsTemplate, _options: defaultOptions } = transformOptions(defaultOptionsWithTemplate);
|
||||
|
||||
const OverlayScrollbars = (target, options, extensions) => {
|
||||
const currentOptions = assignDeep({}, defaultOptions, validateOptions(options || {}, optionsTemplate, null, true)._validated);
|
||||
const { _getDefaultOptions } = getEnvironment();
|
||||
const currentOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options || {}, optionsTemplate, null, true)._validated);
|
||||
const structureSetup = createStructureSetup(target);
|
||||
const lifecycleHub = createLifecycleHub(currentOptions, structureSetup);
|
||||
const instance = {
|
||||
@@ -2108,9 +2131,5 @@ const OverlayScrollbars = (target, options, extensions) => {
|
||||
return instance;
|
||||
};
|
||||
|
||||
var index = () => {
|
||||
return [getEnvironment(), OverlayScrollbars(document.body)];
|
||||
};
|
||||
|
||||
export default index;
|
||||
export default OverlayScrollbars;
|
||||
//# sourceMappingURL=overlayscrollbars.esm.js.map
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+114
-87
@@ -551,21 +551,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
var cssNumber = {
|
||||
animationiterationcount: 1,
|
||||
columncount: 1,
|
||||
fillopacity: 1,
|
||||
flexgrow: 1,
|
||||
flexshrink: 1,
|
||||
fontweight: 1,
|
||||
lineheight: 1,
|
||||
opacity: 1,
|
||||
order: 1,
|
||||
orphans: 1,
|
||||
widows: 1,
|
||||
zindex: 1,
|
||||
zoom: 1,
|
||||
};
|
||||
var cssNumber = {};
|
||||
|
||||
var parseToZeroOrNumber = function parseToZeroOrNumber(value, toFloat) {
|
||||
var num = toFloat ? parseFloat(value) : parseInt(value, 10);
|
||||
@@ -772,7 +758,7 @@
|
||||
return validateRecursive(options, template, optionsDiff || {}, doWriteErrors || false);
|
||||
};
|
||||
|
||||
function transformOptions(optionsWithOptionsTemplate) {
|
||||
var transformOptions = function transformOptions(optionsWithOptionsTemplate) {
|
||||
var result = {
|
||||
_template: {},
|
||||
_options: {},
|
||||
@@ -790,7 +776,7 @@
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
var classNameEnvironment = 'os-environment';
|
||||
var classNameEnvironmentFlexboxGlue = classNameEnvironment + '-flexbox-glue';
|
||||
@@ -809,10 +795,60 @@
|
||||
var classNameSizeObserverListenerItemFinal = classNameSizeObserverListenerItem + '-final';
|
||||
var classNameTrinsicObserver = 'os-trinsic-observer';
|
||||
|
||||
var numberAllowedValues = optionsTemplateTypes.number;
|
||||
var stringArrayNullAllowedValues = [optionsTemplateTypes.string, optionsTemplateTypes.array, optionsTemplateTypes.null];
|
||||
var booleanTrueTemplate = [true, optionsTemplateTypes.boolean];
|
||||
var booleanFalseTemplate = [false, optionsTemplateTypes.boolean];
|
||||
var resizeAllowedValues = 'none both horizontal vertical';
|
||||
var overflowAllowedValues = 'visible-hidden visible-scroll scroll hidden';
|
||||
var scrollbarsVisibilityAllowedValues = 'visible hidden auto';
|
||||
var scrollbarsAutoHideAllowedValues = 'never scroll leavemove';
|
||||
var defaultOptionsWithTemplate = {
|
||||
resize: ['none', resizeAllowedValues],
|
||||
paddingAbsolute: booleanFalseTemplate,
|
||||
updating: {
|
||||
elementEvents: [[['img', 'load']], [optionsTemplateTypes.array, optionsTemplateTypes.null]],
|
||||
contentMutationDebounce: [80, numberAllowedValues],
|
||||
hostMutationDebounce: [0, numberAllowedValues],
|
||||
resizeDebounce: [0, numberAllowedValues],
|
||||
},
|
||||
overflow: {
|
||||
x: ['scroll', overflowAllowedValues],
|
||||
y: ['scroll', overflowAllowedValues],
|
||||
},
|
||||
scrollbars: {
|
||||
visibility: ['auto', scrollbarsVisibilityAllowedValues],
|
||||
autoHide: ['never', scrollbarsAutoHideAllowedValues],
|
||||
autoHideDelay: [800, numberAllowedValues],
|
||||
dragScroll: booleanTrueTemplate,
|
||||
clickScroll: booleanFalseTemplate,
|
||||
touch: booleanTrueTemplate,
|
||||
},
|
||||
textarea: {
|
||||
dynWidth: booleanFalseTemplate,
|
||||
dynHeight: booleanFalseTemplate,
|
||||
inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues],
|
||||
},
|
||||
nativeScrollbarsOverlaid: {
|
||||
show: booleanFalseTemplate,
|
||||
initialize: booleanFalseTemplate,
|
||||
},
|
||||
};
|
||||
|
||||
var _transformOptions = transformOptions(defaultOptionsWithTemplate),
|
||||
optionsTemplate = _transformOptions._template,
|
||||
defaultOptions = _transformOptions._options;
|
||||
|
||||
var environmentInstance;
|
||||
var abs = Math.abs,
|
||||
round = Math.round;
|
||||
|
||||
var diffBiggerThanOne = function diffBiggerThanOne(valOne, valTwo) {
|
||||
var absValOne = abs(valOne);
|
||||
var absValTwo = abs(valTwo);
|
||||
return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);
|
||||
};
|
||||
|
||||
var getNativeScrollbarSize = function getNativeScrollbarSize(body, measureElm) {
|
||||
appendChildren(body, measureElm);
|
||||
var cSize = clientSize(measureElm);
|
||||
@@ -859,10 +895,11 @@
|
||||
return window.devicePixelRatio || dDPI / sDPI;
|
||||
};
|
||||
|
||||
var diffBiggerThanOne = function diffBiggerThanOne(valOne, valTwo) {
|
||||
var absValOne = abs(valOne);
|
||||
var absValTwo = abs(valTwo);
|
||||
return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);
|
||||
var getDefaultInitializationStrategy = function getDefaultInitializationStrategy(nativeScrollbarStyling) {
|
||||
return {
|
||||
_padding: !nativeScrollbarStyling,
|
||||
_content: false,
|
||||
};
|
||||
};
|
||||
|
||||
var createEnvironment = function createEnvironment() {
|
||||
@@ -878,6 +915,9 @@
|
||||
x: nativeScrollbarSize.x === 0,
|
||||
y: nativeScrollbarSize.y === 0,
|
||||
};
|
||||
var defaultInitializationStrategy = getDefaultInitializationStrategy(nativeScrollbarStyling);
|
||||
var initializationStrategy = defaultInitializationStrategy;
|
||||
var defaultDefaultOptions = defaultOptions;
|
||||
var env = {
|
||||
_autoUpdateLoop: false,
|
||||
_nativeScrollbarSize: nativeScrollbarSize,
|
||||
@@ -892,6 +932,20 @@
|
||||
_removeListener: function _removeListener(listener) {
|
||||
onChangedListener.delete(listener);
|
||||
},
|
||||
_getInitializationStrategy: function _getInitializationStrategy() {
|
||||
return _extends_1({}, initializationStrategy);
|
||||
},
|
||||
_setInitializationStrategy: function _setInitializationStrategy(newInitializationStrategy) {
|
||||
initializationStrategy = assignDeep({}, initializationStrategy, newInitializationStrategy);
|
||||
},
|
||||
_getDefaultOptions: function _getDefaultOptions() {
|
||||
return _extends_1({}, defaultDefaultOptions);
|
||||
},
|
||||
_setDefaultOptions: function _setDefaultOptions(newDefaultOptions) {
|
||||
defaultDefaultOptions = assignDeep({}, defaultDefaultOptions, newDefaultOptions);
|
||||
},
|
||||
_defaultInitializationStrategy: defaultInitializationStrategy,
|
||||
_defaultDefaultOptions: defaultDefaultOptions,
|
||||
};
|
||||
removeAttr(envElm, 'style');
|
||||
removeElements(envElm);
|
||||
@@ -964,24 +1018,42 @@
|
||||
return elm;
|
||||
};
|
||||
|
||||
var evaluateCreationFromStrategy = function evaluateCreationFromStrategy(initializationValue, strategy) {
|
||||
var isBooleanValue = isBoolean(initializationValue);
|
||||
|
||||
if (isBooleanValue || isUndefined(initializationValue)) {
|
||||
return (isBooleanValue ? initializationValue : strategy) && undefined;
|
||||
}
|
||||
|
||||
return initializationValue;
|
||||
};
|
||||
|
||||
var createStructureSetup = function createStructureSetup(target) {
|
||||
var _getEnvironment = getEnvironment(),
|
||||
_getInitializationStrategy = _getEnvironment._getInitializationStrategy,
|
||||
_nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling,
|
||||
_nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid,
|
||||
_cssCustomProperties = _getEnvironment._cssCustomProperties;
|
||||
|
||||
var _getInitializationStr = _getInitializationStrategy(),
|
||||
paddingNeeded = _getInitializationStr._padding,
|
||||
contentNeeded = _getInitializationStr._content;
|
||||
|
||||
var targetIsElm = isHTMLElement(target);
|
||||
var osTargetObj = targetIsElm
|
||||
? {}
|
||||
: {
|
||||
_host: target.host,
|
||||
_target: target.target,
|
||||
_padding: target.padding,
|
||||
_viewport: target.viewport,
|
||||
_content: target.content,
|
||||
_padding: evaluateCreationFromStrategy(target.padding, paddingNeeded),
|
||||
_content: evaluateCreationFromStrategy(target.content, contentNeeded),
|
||||
};
|
||||
|
||||
if (targetIsElm) {
|
||||
var padding = createDiv(classNamePadding);
|
||||
var viewport = createDiv(classNameViewport);
|
||||
var content = createDiv(classNameContent);
|
||||
appendChildren(padding, viewport);
|
||||
appendChildren(viewport, content);
|
||||
var padding = paddingNeeded && createDiv(classNamePadding);
|
||||
var content = contentNeeded && createDiv(classNameContent);
|
||||
osTargetObj._target = target;
|
||||
osTargetObj._padding = padding;
|
||||
osTargetObj._viewport = viewport;
|
||||
@@ -1013,11 +1085,14 @@
|
||||
}
|
||||
|
||||
if (targetIsElm) {
|
||||
appendChildren(_content, getTargetContents(_target));
|
||||
var contentSlot = _content || _viewport;
|
||||
appendChildren(contentSlot, getTargetContents(_target));
|
||||
appendChildren(_host, _padding);
|
||||
appendChildren(_padding || _host, _viewport);
|
||||
appendChildren(_viewport, _content);
|
||||
push(destroyFns, function () {
|
||||
appendChildren(_host, contents(_content));
|
||||
removeElements(_padding);
|
||||
appendChildren(_host, contents(contentSlot));
|
||||
removeElements(_padding || _viewport);
|
||||
removeClass(_host, classNameHost);
|
||||
});
|
||||
} else {
|
||||
@@ -1032,8 +1107,10 @@
|
||||
appendChildren(_host, _padding);
|
||||
appendChildren(_padding || _host, _viewport);
|
||||
appendChildren(_viewport, _content);
|
||||
var contentSlot = _content || _viewport;
|
||||
appendChildren(contentSlot, targetContents);
|
||||
|
||||
var _contentSlot = _content || _viewport;
|
||||
|
||||
appendChildren(_contentSlot, targetContents);
|
||||
push(destroyFns, function () {
|
||||
if (createContent) {
|
||||
unwrap(_content);
|
||||
@@ -1074,11 +1151,6 @@
|
||||
_host: _host,
|
||||
});
|
||||
|
||||
var _getEnvironment = getEnvironment(),
|
||||
_nativeScrollbarStyling = _getEnvironment._nativeScrollbarStyling,
|
||||
_nativeScrollbarIsOverlaid = _getEnvironment._nativeScrollbarIsOverlaid,
|
||||
_cssCustomProperties = _getEnvironment._cssCustomProperties;
|
||||
|
||||
if (_nativeScrollbarStyling) {
|
||||
push(destroyFns, removeClass.bind(0, _viewport, classNameViewportScrollbarStyling));
|
||||
} else if (!_cssCustomProperties && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y)) {
|
||||
@@ -2304,52 +2376,11 @@
|
||||
};
|
||||
};
|
||||
|
||||
var numberAllowedValues = optionsTemplateTypes.number;
|
||||
var stringArrayNullAllowedValues = [optionsTemplateTypes.string, optionsTemplateTypes.array, optionsTemplateTypes.null];
|
||||
var booleanTrueTemplate = [true, optionsTemplateTypes.boolean];
|
||||
var booleanFalseTemplate = [false, optionsTemplateTypes.boolean];
|
||||
var resizeAllowedValues = 'none both horizontal vertical';
|
||||
var overflowAllowedValues = 'visible-hidden visible-scroll scroll hidden';
|
||||
var scrollbarsVisibilityAllowedValues = 'visible hidden auto';
|
||||
var scrollbarsAutoHideAllowedValues = 'never scroll leavemove';
|
||||
var defaultOptionsWithTemplate = {
|
||||
resize: ['none', resizeAllowedValues],
|
||||
paddingAbsolute: booleanFalseTemplate,
|
||||
updating: {
|
||||
elementEvents: [[['img', 'load']], [optionsTemplateTypes.array, optionsTemplateTypes.null]],
|
||||
contentMutationDebounce: [80, numberAllowedValues],
|
||||
hostMutationDebounce: [0, numberAllowedValues],
|
||||
resizeDebounce: [0, numberAllowedValues],
|
||||
},
|
||||
overflow: {
|
||||
x: ['scroll', overflowAllowedValues],
|
||||
y: ['scroll', overflowAllowedValues],
|
||||
},
|
||||
scrollbars: {
|
||||
visibility: ['auto', scrollbarsVisibilityAllowedValues],
|
||||
autoHide: ['never', scrollbarsAutoHideAllowedValues],
|
||||
autoHideDelay: [800, numberAllowedValues],
|
||||
dragScroll: booleanTrueTemplate,
|
||||
clickScroll: booleanFalseTemplate,
|
||||
touch: booleanTrueTemplate,
|
||||
},
|
||||
textarea: {
|
||||
dynWidth: booleanFalseTemplate,
|
||||
dynHeight: booleanFalseTemplate,
|
||||
inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues],
|
||||
},
|
||||
nativeScrollbarsOverlaid: {
|
||||
show: booleanFalseTemplate,
|
||||
initialize: booleanFalseTemplate,
|
||||
},
|
||||
};
|
||||
|
||||
var _transformOptions = transformOptions(defaultOptionsWithTemplate),
|
||||
optionsTemplate = _transformOptions._template,
|
||||
defaultOptions = _transformOptions._options;
|
||||
|
||||
var OverlayScrollbars = function OverlayScrollbars(target, options, extensions) {
|
||||
var currentOptions = assignDeep({}, defaultOptions, validateOptions(options || {}, optionsTemplate, null, true)._validated);
|
||||
var _getEnvironment = getEnvironment(),
|
||||
_getDefaultOptions = _getEnvironment._getDefaultOptions;
|
||||
|
||||
var currentOptions = assignDeep({}, _getDefaultOptions(), validateOptions(options || {}, optionsTemplate, null, true)._validated);
|
||||
var structureSetup = createStructureSetup(target);
|
||||
var lifecycleHub = createLifecycleHub(currentOptions, structureSetup);
|
||||
var instance = {
|
||||
@@ -2375,10 +2406,6 @@
|
||||
return instance;
|
||||
};
|
||||
|
||||
var index = function () {
|
||||
return [getEnvironment(), OverlayScrollbars(document.body)];
|
||||
};
|
||||
|
||||
return index;
|
||||
return OverlayScrollbars;
|
||||
});
|
||||
//# sourceMappingURL=overlayscrollbars.js.map
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -17,13 +17,13 @@ import {
|
||||
assignDeep,
|
||||
PartialOptions,
|
||||
} from 'support';
|
||||
import { OverlayScrollbarsOptions, defaultOptions } from 'options';
|
||||
import {
|
||||
classNameEnvironment,
|
||||
classNameEnvironmentFlexboxGlue,
|
||||
classNameEnvironmentFlexboxGlueMax,
|
||||
classNameViewportScrollbarStyling,
|
||||
} from 'classnames';
|
||||
import { OverlayScrollbarsOptions, defaultOptions } from 'options';
|
||||
|
||||
export interface InitializationStrategy {
|
||||
_padding: boolean;
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import { getEnvironment } from 'environment';
|
||||
import { OverlayScrollbars } from 'overlayscrollbars/overlayscrollbars';
|
||||
|
||||
export default () => {
|
||||
return [getEnvironment(), OverlayScrollbars(document.body)];
|
||||
};
|
||||
export default OverlayScrollbars;
|
||||
|
||||
@@ -4,7 +4,6 @@ import {
|
||||
OptionsTemplateValue,
|
||||
OptionsWithOptionsTemplateValue,
|
||||
OptionsWithOptionsTemplate,
|
||||
Func,
|
||||
} from 'support/options';
|
||||
import { ResizeBehavior, OverflowBehavior, VisibilityBehavior, AutoHideBehavior, OverlayScrollbarsOptions } from 'options';
|
||||
|
||||
|
||||
@@ -10,19 +10,19 @@ export interface TRBL {
|
||||
}
|
||||
|
||||
const cssNumber = {
|
||||
animationiterationcount: 1,
|
||||
columncount: 1,
|
||||
fillopacity: 1,
|
||||
flexgrow: 1,
|
||||
flexshrink: 1,
|
||||
fontweight: 1,
|
||||
lineheight: 1,
|
||||
opacity: 1,
|
||||
order: 1,
|
||||
orphans: 1,
|
||||
widows: 1,
|
||||
zindex: 1,
|
||||
zoom: 1,
|
||||
//animationiterationcount: 1,
|
||||
//columncount: 1,
|
||||
//fillopacity: 1,
|
||||
//flexgrow: 1,
|
||||
//flexshrink: 1,
|
||||
//fontweight: 1,
|
||||
//lineheight: 1,
|
||||
//opacity: 1,
|
||||
//order: 1,
|
||||
//orphans: 1,
|
||||
//widows: 1,
|
||||
//zindex: 1,
|
||||
//zoom: 1,
|
||||
};
|
||||
|
||||
const parseToZeroOrNumber = (value: string, toFloat?: boolean): number => {
|
||||
@@ -35,7 +35,7 @@ const adaptCSSVal = (prop: string, val: string | number): string | number => (!c
|
||||
const getCSSVal = (elm: HTMLElement, computedStyle: CSSStyleDeclaration, prop: string): string =>
|
||||
/* istanbul ignore next */
|
||||
computedStyle != null ? computedStyle[prop] || computedStyle.getPropertyValue(prop) : elm.style[prop];
|
||||
const setCSSVal = (elm: HTMLElement | null | undefined, prop: string, val: string | number): void => {
|
||||
const setCSSVal = (elm: HTMLElement | false | null | undefined, prop: string, val: string | number): void => {
|
||||
try {
|
||||
if (elm) {
|
||||
const { style } = elm;
|
||||
@@ -53,11 +53,11 @@ const setCSSVal = (elm: HTMLElement | null | undefined, prop: string, val: strin
|
||||
* @param elm The element to which the styles shall be applied to / be read from.
|
||||
* @param styles The styles which shall be set or read.
|
||||
*/
|
||||
export function style<CustomCssProps>(elm: HTMLElement | null | undefined, styles: StyleObject<CustomCssProps>): void;
|
||||
export function style<CustomCssProps>(elm: HTMLElement | null | undefined, styles: string): string;
|
||||
export function style<CustomCssProps>(elm: HTMLElement | null | undefined, styles: Array<string> | string): { [key: string]: string };
|
||||
export function style<CustomCssProps>(elm: HTMLElement | false | null | undefined, styles: StyleObject<CustomCssProps>): void;
|
||||
export function style<CustomCssProps>(elm: HTMLElement | false | null | undefined, styles: string): string;
|
||||
export function style<CustomCssProps>(elm: HTMLElement | false | null | undefined, styles: Array<string> | string): { [key: string]: string };
|
||||
export function style<CustomCssProps>(
|
||||
elm: HTMLElement | null | undefined,
|
||||
elm: HTMLElement | false | null | undefined,
|
||||
styles: StyleObject<CustomCssProps> | Array<string> | string
|
||||
): { [key: string]: string } | string | void {
|
||||
const getSingleStyle = isString(styles);
|
||||
@@ -83,7 +83,7 @@ export function style<CustomCssProps>(
|
||||
* Hides the passed element (display: none).
|
||||
* @param elm The element which shall be hidden.
|
||||
*/
|
||||
export const hide = (elm: HTMLElement | null): void => {
|
||||
export const hide = (elm: HTMLElement | false | null | undefined): void => {
|
||||
style(elm, { display: 'none' });
|
||||
};
|
||||
|
||||
@@ -91,7 +91,7 @@ export const hide = (elm: HTMLElement | null): void => {
|
||||
* Shows the passed element (display: block).
|
||||
* @param elm The element which shall be shown.
|
||||
*/
|
||||
export const show = (elm: HTMLElement | null | undefined): void => {
|
||||
export const show = (elm: HTMLElement | false | null | undefined): void => {
|
||||
style(elm, { display: 'block' });
|
||||
};
|
||||
|
||||
@@ -100,7 +100,7 @@ export const show = (elm: HTMLElement | null | undefined): void => {
|
||||
* @param elm
|
||||
* @param property
|
||||
*/
|
||||
export const topRightBottomLeft = (elm: HTMLElement | null | undefined, propertyPrefix?: string, propertySuffix?: string): TRBL => {
|
||||
export const topRightBottomLeft = (elm: HTMLElement | false | null | undefined, propertyPrefix?: string, propertySuffix?: string): TRBL => {
|
||||
const finalPrefix = propertyPrefix ? `${propertyPrefix}-` : '';
|
||||
const finalSuffix = propertySuffix ? `-${propertySuffix}` : '';
|
||||
const top = `${finalPrefix}top${finalSuffix}`;
|
||||
|
||||
@@ -1,51 +1,2 @@
|
||||
import { PlainObject } from 'typings';
|
||||
|
||||
export * from 'support/options/validation';
|
||||
export * from 'support/options/transformation';
|
||||
|
||||
type ObjectType = Record<string, unknown>;
|
||||
|
||||
export type Func = (this: any, ...args: any[]) => any;
|
||||
export type OptionsTemplateType<T extends OptionsTemplateNativeTypes> = ExtractPropsKey<OptionsTemplateTypeMap, T>;
|
||||
export type OptionsTemplateTypes = keyof OptionsTemplateTypeMap;
|
||||
export type OptionsTemplateNativeTypes = OptionsTemplateTypeMap[keyof OptionsTemplateTypeMap];
|
||||
export type OptionsTemplateValue<T extends OptionsTemplateNativeTypes = string> = T extends string
|
||||
? string extends T
|
||||
? OptionsTemplateValueNonEnum<T>
|
||||
: string
|
||||
: OptionsTemplateValueNonEnum<T>;
|
||||
export type OptionsTemplate<T> = {
|
||||
[P in keyof T]: T[P] extends ObjectType ? OptionsTemplate<T[P]> : T[P] extends OptionsTemplateNativeTypes ? OptionsTemplateValue<T[P]> : never;
|
||||
};
|
||||
export type OptionsValidationResult<T> = {
|
||||
readonly _foreign: PlainObject;
|
||||
readonly _validated: PartialOptions<T>;
|
||||
};
|
||||
// Options With Options Template Typings:
|
||||
export type OptionsWithOptionsTemplateValue<T extends OptionsTemplateNativeTypes> = [T, OptionsTemplateValue<T>];
|
||||
export type OptionsWithOptionsTemplate<T extends Required<T>> = {
|
||||
[P in keyof T]: T[P] extends ObjectType
|
||||
? OptionsWithOptionsTemplate<Required<T[P]>>
|
||||
: T[P] extends OptionsTemplateNativeTypes
|
||||
? OptionsWithOptionsTemplateValue<T[P]>
|
||||
: never;
|
||||
};
|
||||
export type PartialOptions<T> = {
|
||||
[P in keyof T]?: T[P] extends ObjectType ? PartialOptions<T[P]> : T[P];
|
||||
};
|
||||
|
||||
type OptionsTemplateTypeMap = {
|
||||
__TPL_boolean_TYPE__: boolean;
|
||||
__TPL_number_TYPE__: number;
|
||||
__TPL_string_TYPE__: string;
|
||||
__TPL_array_TYPE__: Array<any> | ReadonlyArray<any>;
|
||||
__TPL_function_TYPE__: Func;
|
||||
__TPL_null_TYPE__: null;
|
||||
__TPL_object_TYPE__: Record<string, unknown>;
|
||||
};
|
||||
type OptionsTemplateValueNonEnum<T extends OptionsTemplateNativeTypes> =
|
||||
| OptionsTemplateType<T>
|
||||
| [OptionsTemplateType<T>, ...Array<OptionsTemplateTypes>];
|
||||
type ExtractPropsKey<T, TProps extends T[keyof T]> = {
|
||||
[P in keyof T]: TProps extends T[P] ? P : never;
|
||||
}[keyof T];
|
||||
|
||||
@@ -1,21 +1,35 @@
|
||||
import { OptionsTemplate, OptionsWithOptionsTemplate, OptionsTemplateTypes } from 'support/options';
|
||||
import {
|
||||
OptionsTemplate,
|
||||
OptionsObjectType,
|
||||
OptionsTemplateNativeTypes,
|
||||
OptionsTemplateTypes,
|
||||
OptionsTemplateValue,
|
||||
} from 'support/options/validation';
|
||||
import { PlainObject } from 'typings';
|
||||
import { isArray } from 'support/utils/types';
|
||||
import { each, keys } from 'support/utils';
|
||||
|
||||
export interface OptionsWithOptionsTemplateTransformation<T extends Required<T>> {
|
||||
export interface OptionsWithOptionsTemplateTransformation<T> {
|
||||
_template: OptionsTemplate<T>;
|
||||
_options: T;
|
||||
}
|
||||
|
||||
export type OptionsWithOptionsTemplateValue<T extends OptionsTemplateNativeTypes> = [T, OptionsTemplateValue<T>];
|
||||
|
||||
export type OptionsWithOptionsTemplate<T> = {
|
||||
[P in keyof T]: T[P] extends OptionsObjectType
|
||||
? OptionsWithOptionsTemplate<T[P]>
|
||||
: T[P] extends OptionsTemplateNativeTypes
|
||||
? OptionsWithOptionsTemplateValue<T[P]>
|
||||
: never;
|
||||
};
|
||||
|
||||
/**
|
||||
* Transforms the given OptionsWithOptionsTemplate<T> object to its corresponding generic (T) Object or its corresponding Template object.
|
||||
* @param optionsWithOptionsTemplate The OptionsWithOptionsTemplate<T> object which shall be converted.
|
||||
* @param toTemplate True if the given OptionsWithOptionsTemplate<T> shall be converted to its corresponding Template object.
|
||||
*/
|
||||
export function transformOptions<T extends Required<T>>(
|
||||
optionsWithOptionsTemplate: OptionsWithOptionsTemplate<T>
|
||||
): OptionsWithOptionsTemplateTransformation<T> {
|
||||
export const transformOptions = <T>(optionsWithOptionsTemplate: OptionsWithOptionsTemplate<T>): OptionsWithOptionsTemplateTransformation<T> => {
|
||||
const result: any = {
|
||||
_template: {},
|
||||
_options: {},
|
||||
@@ -36,4 +50,4 @@ export function transformOptions<T extends Required<T>>(
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,14 +1,71 @@
|
||||
import { each, hasOwnProperty, keys, push, isEmptyObject } from 'support/utils';
|
||||
import { type, isArray, isUndefined, isPlainObject, isString } from 'support/utils/types';
|
||||
import { OptionsTemplate, OptionsTemplateTypes, OptionsTemplateType, PartialOptions, Func, OptionsValidationResult } from 'support/options';
|
||||
import { PlainObject } from 'typings';
|
||||
|
||||
export type OptionsObjectType = Record<string, unknown>;
|
||||
export type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;
|
||||
export type OptionsTemplateType<T extends OptionsTemplateNativeTypes> = ExtractPropsKey<OptionsTemplateTypeMap, T>;
|
||||
export type OptionsTemplateTypes = keyof OptionsTemplateTypeMap;
|
||||
export type OptionsTemplateNativeTypes = OptionsTemplateTypeMap[keyof OptionsTemplateTypeMap];
|
||||
|
||||
export type OptionsTemplateValue<T extends OptionsTemplateNativeTypes = string> = T extends string
|
||||
? string extends T
|
||||
? OptionsTemplateValueNonEnum<T>
|
||||
: string
|
||||
: OptionsTemplateValueNonEnum<T>;
|
||||
|
||||
export type OptionsTemplate<T> = {
|
||||
[P in keyof T]: T[P] extends OptionsObjectType
|
||||
? OptionsTemplate<T[P]>
|
||||
: T[P] extends OptionsTemplateNativeTypes
|
||||
? OptionsTemplateValue<T[P]>
|
||||
: never;
|
||||
};
|
||||
|
||||
export type OptionsValidationResult<T> = {
|
||||
readonly _foreign: Record<string, unknown>;
|
||||
readonly _validated: PartialOptions<T>;
|
||||
};
|
||||
|
||||
export type PartialOptions<T> = {
|
||||
[P in keyof T]?: T[P] extends OptionsObjectType ? PartialOptions<T[P]> : T[P];
|
||||
};
|
||||
|
||||
type OptionsTemplateTypeMap = {
|
||||
__TPL_boolean_TYPE__: boolean;
|
||||
__TPL_number_TYPE__: number;
|
||||
__TPL_string_TYPE__: string;
|
||||
__TPL_array_TYPE__: Array<any> | ReadonlyArray<any>;
|
||||
__TPL_function_TYPE__: OptionsFunctionType;
|
||||
__TPL_null_TYPE__: null;
|
||||
__TPL_object_TYPE__: OptionsObjectType;
|
||||
};
|
||||
|
||||
type OptionsTemplateValueNonEnum<T extends OptionsTemplateNativeTypes> =
|
||||
| OptionsTemplateType<T>
|
||||
| [OptionsTemplateType<T>, ...Array<OptionsTemplateTypes>];
|
||||
|
||||
type ExtractPropsKey<T, TProps extends T[keyof T]> = {
|
||||
[P in keyof T]: TProps extends T[P] ? P : never;
|
||||
}[keyof T];
|
||||
|
||||
type OptionsTemplateTypesDictionary = {
|
||||
readonly boolean: OptionsTemplateType<boolean>;
|
||||
readonly number: OptionsTemplateType<number>;
|
||||
readonly string: OptionsTemplateType<string>;
|
||||
readonly array: OptionsTemplateType<Array<any>>;
|
||||
readonly object: OptionsTemplateType<OptionsObjectType>;
|
||||
readonly function: OptionsTemplateType<OptionsFunctionType>;
|
||||
readonly null: OptionsTemplateType<null>;
|
||||
};
|
||||
|
||||
const { stringify } = JSON;
|
||||
|
||||
/**
|
||||
* A prefix and suffix tuple which serves as recognition pattern for template types.
|
||||
*/
|
||||
const templateTypePrefixSuffix: readonly [string, string] = ['__TPL_', '_TYPE__'];
|
||||
|
||||
/**
|
||||
* A object which serves as a mapping for "normal" types and template types.
|
||||
* Key = normal type string
|
||||
@@ -165,13 +222,3 @@ const validateOptions = <T extends PlainObject>(
|
||||
};
|
||||
|
||||
export { validateOptions, optionsTemplateTypes };
|
||||
|
||||
type OptionsTemplateTypesDictionary = {
|
||||
readonly boolean: OptionsTemplateType<boolean>;
|
||||
readonly number: OptionsTemplateType<number>;
|
||||
readonly string: OptionsTemplateType<string>;
|
||||
readonly array: OptionsTemplateType<Array<any>>;
|
||||
readonly object: OptionsTemplateType<Record<string, unknown>>;
|
||||
readonly function: OptionsTemplateType<Func>;
|
||||
readonly null: OptionsTemplateType<null>;
|
||||
};
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { XY } from 'support';
|
||||
import { XY, PartialOptions } from 'support';
|
||||
import { OverlayScrollbarsOptions } from 'options';
|
||||
export interface InitializationStrategy {
|
||||
_padding: boolean;
|
||||
_content: boolean;
|
||||
}
|
||||
export declare type OnEnvironmentChanged = (env: Environment) => void;
|
||||
export interface Environment {
|
||||
_autoUpdateLoop: boolean;
|
||||
@@ -13,5 +18,11 @@ export interface Environment {
|
||||
_cssCustomProperties: boolean;
|
||||
_addListener(listener: OnEnvironmentChanged): void;
|
||||
_removeListener(listener: OnEnvironmentChanged): void;
|
||||
_getInitializationStrategy(): InitializationStrategy;
|
||||
_setInitializationStrategy(newInitializationStrategy: Partial<InitializationStrategy>): void;
|
||||
_getDefaultOptions(): OverlayScrollbarsOptions;
|
||||
_setDefaultOptions(newDefaultOptions: PartialOptions<OverlayScrollbarsOptions>): void;
|
||||
_defaultInitializationStrategy: InitializationStrategy;
|
||||
_defaultDefaultOptions: OverlayScrollbarsOptions;
|
||||
}
|
||||
export declare const getEnvironment: () => Environment;
|
||||
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
declare const _default: () => any[];
|
||||
export default _default;
|
||||
import { OverlayScrollbars } from 'overlayscrollbars/overlayscrollbars';
|
||||
export default OverlayScrollbars;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { XY, TRBL, CacheValues } from 'support';
|
||||
import { XY, TRBL, CacheValues, PartialOptions } from 'support';
|
||||
import { OverlayScrollbarsOptions } from 'options';
|
||||
import { StructureSetup } from 'setups/structureSetup';
|
||||
import { StyleObject } from 'typings';
|
||||
@@ -23,7 +23,7 @@ export interface LifecycleUpdateHints extends LifecycleAdaptiveUpdateHints {
|
||||
}
|
||||
export declare type Lifecycle = (updateHints: LifecycleUpdateHints, checkOption: LifecycleCheckOption, force: boolean) => Partial<LifecycleAdaptiveUpdateHints> | void;
|
||||
export interface LifecycleHubInstance {
|
||||
_update(changedOptions?: Partial<OverlayScrollbarsOptions> | null, force?: boolean): void;
|
||||
_update(changedOptions?: PartialOptions<OverlayScrollbarsOptions> | null, force?: boolean): void;
|
||||
_destroy(): void;
|
||||
}
|
||||
export interface LifecycleHub {
|
||||
|
||||
+25
-25
@@ -11,35 +11,35 @@ export declare type OverflowAmountChangedCallback = (this: any, args?: OverflowA
|
||||
export declare type DirectionChangedCallback = (this: any, args?: DirectionChangedArgs) => void;
|
||||
export declare type SizeChangedCallback = (this: any, args?: SizeChangedArgs) => void;
|
||||
export declare type UpdatedCallback = (this: any, args?: UpdatedArgs) => void;
|
||||
export interface Options {
|
||||
resize?: ResizeBehavior;
|
||||
paddingAbsolute?: boolean;
|
||||
updating?: {
|
||||
elementEvents?: ReadonlyArray<[string, string]> | null;
|
||||
contentMutationDebounce?: number;
|
||||
hostMutationDebounce?: number;
|
||||
resizeDebounce?: number;
|
||||
export interface OverlayScrollbarsOptions {
|
||||
resize: ResizeBehavior;
|
||||
paddingAbsolute: boolean;
|
||||
updating: {
|
||||
elementEvents: ReadonlyArray<[string, string]> | null;
|
||||
contentMutationDebounce: number;
|
||||
hostMutationDebounce: number;
|
||||
resizeDebounce: number;
|
||||
};
|
||||
overflow?: {
|
||||
x?: OverflowBehavior;
|
||||
y?: OverflowBehavior;
|
||||
overflow: {
|
||||
x: OverflowBehavior;
|
||||
y: OverflowBehavior;
|
||||
};
|
||||
scrollbars?: {
|
||||
visibility?: VisibilityBehavior;
|
||||
autoHide?: AutoHideBehavior;
|
||||
autoHideDelay?: number;
|
||||
dragScroll?: boolean;
|
||||
clickScroll?: boolean;
|
||||
touch?: boolean;
|
||||
scrollbars: {
|
||||
visibility: VisibilityBehavior;
|
||||
autoHide: AutoHideBehavior;
|
||||
autoHideDelay: number;
|
||||
dragScroll: boolean;
|
||||
clickScroll: boolean;
|
||||
touch: boolean;
|
||||
};
|
||||
textarea?: {
|
||||
dynWidth?: boolean;
|
||||
dynHeight?: boolean;
|
||||
inheritedAttrs?: string | ReadonlyArray<string> | null;
|
||||
textarea: {
|
||||
dynWidth: boolean;
|
||||
dynHeight: boolean;
|
||||
inheritedAttrs: string | ReadonlyArray<string> | null;
|
||||
};
|
||||
nativeScrollbarsOverlaid?: {
|
||||
show?: boolean;
|
||||
initialize?: boolean;
|
||||
nativeScrollbarsOverlaid: {
|
||||
show: boolean;
|
||||
initialize: boolean;
|
||||
};
|
||||
}
|
||||
export interface OverflowChangedArgs {
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
import { OverlayScrollbarsOptions } from 'options';
|
||||
export declare const optionsTemplate: import("../support/options").OptionsTemplate<Required<OverlayScrollbarsOptions>>, defaultOptions: Required<OverlayScrollbarsOptions>;
|
||||
export declare const optionsTemplate: import("../support/options").OptionsTemplate<OverlayScrollbarsOptions>, defaultOptions: OverlayScrollbarsOptions;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { OSTarget, OSTargetObject } from 'typings';
|
||||
import { PartialOptions } from 'support';
|
||||
import { OverlayScrollbarsOptions } from 'options';
|
||||
declare const OverlayScrollbars: (target: OSTarget | OSTargetObject, options?: OverlayScrollbarsOptions | undefined, extensions?: any) => any;
|
||||
declare const OverlayScrollbars: (target: OSTarget | OSTargetObject, options?: PartialOptions<OverlayScrollbarsOptions> | undefined, extensions?: any) => any;
|
||||
export { OverlayScrollbars };
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { OSTarget, OSTargetObject, InternalVersionOf } from 'typings';
|
||||
import { OSTarget, OSTargetObject, OSTargetElement } from 'typings';
|
||||
export interface OSTargetContext {
|
||||
_isTextarea: boolean;
|
||||
_isBody: boolean;
|
||||
@@ -7,9 +7,13 @@ export interface OSTargetContext {
|
||||
_windowElm: Window;
|
||||
_documentElm: HTMLDocument;
|
||||
}
|
||||
export interface PreparedOSTargetObject extends Required<InternalVersionOf<OSTargetObject>> {
|
||||
export interface PreparedOSTargetObject {
|
||||
_target: OSTargetElement;
|
||||
_host: HTMLElement;
|
||||
_viewportArrange: HTMLStyleElement | null;
|
||||
_viewport: HTMLElement;
|
||||
_padding: HTMLElement | false | null;
|
||||
_content: HTMLElement | false | null;
|
||||
_viewportArrange: HTMLStyleElement | false | null;
|
||||
}
|
||||
export interface StructureSetup {
|
||||
_targetObj: PreparedOSTargetObject;
|
||||
|
||||
+3
-3
@@ -3,19 +3,19 @@
|
||||
* @param elm The element.
|
||||
* @param className The class name(s).
|
||||
*/
|
||||
export declare const hasClass: (elm: Element | null | undefined, className: string) => boolean;
|
||||
export declare const hasClass: (elm: Element | false | null | undefined, className: string) => boolean;
|
||||
/**
|
||||
* Adds the given class name(s) to the given element.
|
||||
* @param elm The element.
|
||||
* @param className The class name(s) which shall be added. (separated by spaces)
|
||||
*/
|
||||
export declare const addClass: (elm: Element | null | undefined, className: string) => void;
|
||||
export declare const addClass: (elm: Element | false | null | undefined, className: string) => void;
|
||||
/**
|
||||
* Removes the given class name(s) from the given element.
|
||||
* @param elm The element.
|
||||
* @param className The class name(s) which shall be removed. (separated by spaces)
|
||||
*/
|
||||
export declare const removeClass: (elm: Element | null | undefined, className: string) => void;
|
||||
export declare const removeClass: (elm: Element | false | null | undefined, className: string) => void;
|
||||
/**
|
||||
* Takes two className strings, compares them and returns the difference as array.
|
||||
* @param classNameA ClassName A.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
declare type NodeCollection = ArrayLike<Node> | Node | null | undefined;
|
||||
declare type NodeCollection = ArrayLike<Node> | Node | false | null | undefined;
|
||||
/**
|
||||
* Appends the given children at the end of the given Node.
|
||||
* @param node The Node to which the children shall be appended.
|
||||
|
||||
+6
-6
@@ -10,24 +10,24 @@ export interface TRBL {
|
||||
* @param elm The element to which the styles shall be applied to / be read from.
|
||||
* @param styles The styles which shall be set or read.
|
||||
*/
|
||||
export declare function style<CustomCssProps>(elm: HTMLElement | null | undefined, styles: StyleObject<CustomCssProps>): void;
|
||||
export declare function style<CustomCssProps>(elm: HTMLElement | null | undefined, styles: string): string;
|
||||
export declare function style<CustomCssProps>(elm: HTMLElement | null | undefined, styles: Array<string> | string): {
|
||||
export declare function style<CustomCssProps>(elm: HTMLElement | false | null | undefined, styles: StyleObject<CustomCssProps>): void;
|
||||
export declare function style<CustomCssProps>(elm: HTMLElement | false | null | undefined, styles: string): string;
|
||||
export declare function style<CustomCssProps>(elm: HTMLElement | false | null | undefined, styles: Array<string> | string): {
|
||||
[key: string]: string;
|
||||
};
|
||||
/**
|
||||
* Hides the passed element (display: none).
|
||||
* @param elm The element which shall be hidden.
|
||||
*/
|
||||
export declare const hide: (elm: HTMLElement | null) => void;
|
||||
export declare const hide: (elm: HTMLElement | false | null | undefined) => void;
|
||||
/**
|
||||
* Shows the passed element (display: block).
|
||||
* @param elm The element which shall be shown.
|
||||
*/
|
||||
export declare const show: (elm: HTMLElement | null | undefined) => void;
|
||||
export declare const show: (elm: HTMLElement | false | null | undefined) => void;
|
||||
/**
|
||||
* Returns a top
|
||||
* @param elm
|
||||
* @param property
|
||||
*/
|
||||
export declare const topRightBottomLeft: (elm: HTMLElement | null | undefined, propertyPrefix?: string | undefined, propertySuffix?: string | undefined) => TRBL;
|
||||
export declare const topRightBottomLeft: (elm: HTMLElement | false | null | undefined, propertyPrefix?: string | undefined, propertySuffix?: string | undefined) => TRBL;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
declare type InputElementType = Element | Node | null | undefined;
|
||||
declare type InputElementType = Element | Node | false | null | undefined;
|
||||
declare type OutputElementType = Element | null;
|
||||
/**
|
||||
* Find all elements with the passed selector, outgoing (and including) the passed element or the document if no element was provided.
|
||||
|
||||
@@ -1,35 +1,2 @@
|
||||
import { PlainObject } from 'typings';
|
||||
export * from 'support/options/validation';
|
||||
export * from 'support/options/transformation';
|
||||
export declare type Func = (this: any, ...args: any[]) => any;
|
||||
export declare type OptionsTemplateType<T extends OptionsTemplateNativeTypes> = ExtractPropsKey<OptionsTemplateTypeMap, T>;
|
||||
export declare type OptionsTemplateTypes = keyof OptionsTemplateTypeMap;
|
||||
export declare type OptionsTemplateNativeTypes = OptionsTemplateTypeMap[keyof OptionsTemplateTypeMap];
|
||||
export declare type OptionsTemplateValue<T extends OptionsTemplateNativeTypes = string> = T extends string ? string extends T ? OptionsTemplateValueNonEnum<T> : string : OptionsTemplateValueNonEnum<T>;
|
||||
export declare type OptionsTemplate<T extends Required<T>> = {
|
||||
[P in keyof T]: PlainObject extends T[P] ? OptionsTemplate<Required<T[P]>> : T[P] extends OptionsTemplateNativeTypes ? OptionsTemplateValue<T[P]> : never;
|
||||
};
|
||||
export declare type OptionsValidated<T> = {
|
||||
[P in keyof T]?: T[P];
|
||||
};
|
||||
export declare type OptionsValidationResult<T> = {
|
||||
readonly _foreign: PlainObject;
|
||||
readonly _validated: OptionsValidated<T>;
|
||||
};
|
||||
export declare type OptionsWithOptionsTemplateValue<T extends OptionsTemplateNativeTypes> = [T, OptionsTemplateValue<T>];
|
||||
export declare type OptionsWithOptionsTemplate<T extends Required<T>> = {
|
||||
[P in keyof T]: PlainObject extends T[P] ? OptionsWithOptionsTemplate<Required<T[P]>> : T[P] extends OptionsTemplateNativeTypes ? OptionsWithOptionsTemplateValue<T[P]> : never;
|
||||
};
|
||||
declare type OptionsTemplateTypeMap = {
|
||||
__TPL_boolean_TYPE__: boolean;
|
||||
__TPL_number_TYPE__: number;
|
||||
__TPL_string_TYPE__: string;
|
||||
__TPL_array_TYPE__: Array<any> | ReadonlyArray<any>;
|
||||
__TPL_function_TYPE__: Func;
|
||||
__TPL_null_TYPE__: null;
|
||||
__TPL_object_TYPE__: Record<string, unknown>;
|
||||
};
|
||||
declare type OptionsTemplateValueNonEnum<T extends OptionsTemplateNativeTypes> = OptionsTemplateType<T> | [OptionsTemplateType<T>, ...Array<OptionsTemplateTypes>];
|
||||
declare type ExtractPropsKey<T, TProps extends T[keyof T]> = {
|
||||
[P in keyof T]: TProps extends T[P] ? P : never;
|
||||
}[keyof T];
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
import { OptionsTemplate, OptionsWithOptionsTemplate } from 'support/options';
|
||||
export interface OptionsWithOptionsTemplateTransformation<T extends Required<T>> {
|
||||
import { OptionsTemplate, OptionsObjectType, OptionsTemplateNativeTypes, OptionsTemplateValue } from 'support/options/validation';
|
||||
export interface OptionsWithOptionsTemplateTransformation<T> {
|
||||
_template: OptionsTemplate<T>;
|
||||
_options: T;
|
||||
}
|
||||
export declare type OptionsWithOptionsTemplateValue<T extends OptionsTemplateNativeTypes> = [T, OptionsTemplateValue<T>];
|
||||
export declare type OptionsWithOptionsTemplate<T> = {
|
||||
[P in keyof T]: T[P] extends OptionsObjectType ? OptionsWithOptionsTemplate<T[P]> : T[P] extends OptionsTemplateNativeTypes ? OptionsWithOptionsTemplateValue<T[P]> : never;
|
||||
};
|
||||
/**
|
||||
* Transforms the given OptionsWithOptionsTemplate<T> object to its corresponding generic (T) Object or its corresponding Template object.
|
||||
* @param optionsWithOptionsTemplate The OptionsWithOptionsTemplate<T> object which shall be converted.
|
||||
* @param toTemplate True if the given OptionsWithOptionsTemplate<T> shall be converted to its corresponding Template object.
|
||||
*/
|
||||
export declare function transformOptions<T extends Required<T>>(optionsWithOptionsTemplate: OptionsWithOptionsTemplate<T>): OptionsWithOptionsTemplateTransformation<T>;
|
||||
export declare const transformOptions: <T>(optionsWithOptionsTemplate: OptionsWithOptionsTemplate<T>) => OptionsWithOptionsTemplateTransformation<T>;
|
||||
|
||||
@@ -1,5 +1,42 @@
|
||||
import { OptionsTemplate, OptionsTemplateType, Func, OptionsValidationResult } from 'support/options';
|
||||
import { PlainObject } from 'typings';
|
||||
export declare type OptionsObjectType = Record<string, unknown>;
|
||||
export declare type OptionsFunctionType = (this: unknown, ...args: unknown[]) => unknown;
|
||||
export declare type OptionsTemplateType<T extends OptionsTemplateNativeTypes> = ExtractPropsKey<OptionsTemplateTypeMap, T>;
|
||||
export declare type OptionsTemplateTypes = keyof OptionsTemplateTypeMap;
|
||||
export declare type OptionsTemplateNativeTypes = OptionsTemplateTypeMap[keyof OptionsTemplateTypeMap];
|
||||
export declare type OptionsTemplateValue<T extends OptionsTemplateNativeTypes = string> = T extends string ? string extends T ? OptionsTemplateValueNonEnum<T> : string : OptionsTemplateValueNonEnum<T>;
|
||||
export declare type OptionsTemplate<T> = {
|
||||
[P in keyof T]: T[P] extends OptionsObjectType ? OptionsTemplate<T[P]> : T[P] extends OptionsTemplateNativeTypes ? OptionsTemplateValue<T[P]> : never;
|
||||
};
|
||||
export declare type OptionsValidationResult<T> = {
|
||||
readonly _foreign: Record<string, unknown>;
|
||||
readonly _validated: PartialOptions<T>;
|
||||
};
|
||||
export declare type PartialOptions<T> = {
|
||||
[P in keyof T]?: T[P] extends OptionsObjectType ? PartialOptions<T[P]> : T[P];
|
||||
};
|
||||
declare type OptionsTemplateTypeMap = {
|
||||
__TPL_boolean_TYPE__: boolean;
|
||||
__TPL_number_TYPE__: number;
|
||||
__TPL_string_TYPE__: string;
|
||||
__TPL_array_TYPE__: Array<any> | ReadonlyArray<any>;
|
||||
__TPL_function_TYPE__: OptionsFunctionType;
|
||||
__TPL_null_TYPE__: null;
|
||||
__TPL_object_TYPE__: OptionsObjectType;
|
||||
};
|
||||
declare type OptionsTemplateValueNonEnum<T extends OptionsTemplateNativeTypes> = OptionsTemplateType<T> | [OptionsTemplateType<T>, ...Array<OptionsTemplateTypes>];
|
||||
declare type ExtractPropsKey<T, TProps extends T[keyof T]> = {
|
||||
[P in keyof T]: TProps extends T[P] ? P : never;
|
||||
}[keyof T];
|
||||
declare type OptionsTemplateTypesDictionary = {
|
||||
readonly boolean: OptionsTemplateType<boolean>;
|
||||
readonly number: OptionsTemplateType<number>;
|
||||
readonly string: OptionsTemplateType<string>;
|
||||
readonly array: OptionsTemplateType<Array<any>>;
|
||||
readonly object: OptionsTemplateType<OptionsObjectType>;
|
||||
readonly function: OptionsTemplateType<OptionsFunctionType>;
|
||||
readonly null: OptionsTemplateType<null>;
|
||||
};
|
||||
/**
|
||||
* A object which serves as a mapping for "normal" types and template types.
|
||||
* Key = normal type string
|
||||
@@ -23,14 +60,5 @@ declare const optionsTemplateTypes: OptionsTemplateTypesDictionary;
|
||||
* Without the optionsDiff object the returned validated object would be: { a: 'a', b: 'b', c: 'c' }
|
||||
* @param doWriteErrors True if errors shall be logged into the console, false otherwise.
|
||||
*/
|
||||
declare const validateOptions: <T extends PlainObject<any>>(options: T, template: OptionsTemplate<Required<T>>, optionsDiff?: T | null | undefined, doWriteErrors?: boolean | undefined) => OptionsValidationResult<T>;
|
||||
declare const validateOptions: <T extends PlainObject<any>>(options: PartialOptions<T>, template: OptionsTemplate<T>, optionsDiff?: T | null | undefined, doWriteErrors?: boolean | undefined) => OptionsValidationResult<T>;
|
||||
export { validateOptions, optionsTemplateTypes };
|
||||
declare type OptionsTemplateTypesDictionary = {
|
||||
readonly boolean: OptionsTemplateType<boolean>;
|
||||
readonly number: OptionsTemplateType<number>;
|
||||
readonly string: OptionsTemplateType<string>;
|
||||
readonly array: OptionsTemplateType<Array<any>>;
|
||||
readonly object: OptionsTemplateType<Record<string, unknown>>;
|
||||
readonly function: OptionsTemplateType<Func>;
|
||||
readonly null: OptionsTemplateType<null>;
|
||||
};
|
||||
|
||||
+5
-3
@@ -16,13 +16,15 @@ export declare type OSTargetElement = HTMLElement | HTMLTextAreaElement;
|
||||
* If element is provided, the provided element takes all its responsibilities.
|
||||
* DOM hierarchy isn't checked in this case, its assumed that hieararchy is correct in such a case.
|
||||
*
|
||||
* If element is null it won't be generated, and the responsibilities (feautes) of this element are lost.
|
||||
* Undefined means that the plugin decides whether the respective element needs to be added or can be savely omitted.
|
||||
* True means that even if the plugin would decide to not generate the element, the element is still generated.
|
||||
* False means that event if the plugin would decide to generate the element, the element won't be generated.
|
||||
*/
|
||||
export interface OSTargetObject {
|
||||
target: OSTargetElement;
|
||||
host?: HTMLElement;
|
||||
padding?: HTMLElement | null;
|
||||
padding?: HTMLElement | boolean;
|
||||
viewport?: HTMLElement;
|
||||
content?: HTMLElement | null;
|
||||
content?: HTMLElement | boolean;
|
||||
}
|
||||
export declare type OSTarget = OSTargetElement | OSTargetObject;
|
||||
|
||||
Reference in New Issue
Block a user