@blueprintjs/core
Version:
Core styles & components
77 lines • 2.5 kB
JavaScript
/*
* Copyright 2015 Palantir Technologies, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { __assign } from "tslib";
export var DISPLAYNAME_PREFIX = "Blueprint5";
/** A collection of curated prop keys used across our Components which are not valid HTMLElement props. */
var INVALID_PROPS = [
"active",
"alignText",
"asyncControl",
"containerRef",
"current",
"elementRef",
"fill",
"icon",
"iconSize",
"inputClassName",
"inputRef",
"intent",
"inline",
"large",
"loading",
"leftElement",
"leftIcon",
"minimal",
"onRemove",
"outlined",
"panel",
"panelClassName",
"popoverProps",
"rightElement",
"rightIcon",
"round",
"size",
"small",
"tagName",
"text",
];
/**
* Typically applied to HTMLElements to filter out disallowed props. When applied to a Component,
* can filter props from being passed down to the children. Can also filter by a combined list of
* supplied prop keys and the denylist (only appropriate for HTMLElements).
*
* @param props The original props object to filter down.
* @param {string[]} invalidProps If supplied, overwrites the default denylist.
* @param {boolean} shouldMerge If true, will merge supplied invalidProps and denylist together.
*/
export function removeNonHTMLProps(props, invalidProps, shouldMerge) {
if (invalidProps === void 0) { invalidProps = INVALID_PROPS; }
if (shouldMerge === void 0) { shouldMerge = false; }
if (shouldMerge) {
invalidProps = invalidProps.concat(INVALID_PROPS);
}
return invalidProps.reduce(function (prev, curr) {
// Props with hyphens (e.g. data-*) are always considered html props
if (curr.indexOf("-") !== -1) {
return prev;
}
if (prev.hasOwnProperty(curr)) {
delete prev[curr];
}
return prev;
}, __assign({}, props));
}
//# sourceMappingURL=props.js.map