create webpack build process

This commit is contained in:
Rene
2020-07-18 20:25:57 +02:00
parent eedde6b82b
commit 34f98a5c47
112 changed files with 17466 additions and 927 deletions
-20
View File
@@ -1,20 +0,0 @@
{
"env": {
"test": {
"plugins": [
"@babel/plugin-transform-modules-commonjs"
],
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
],
"@babel/preset-typescript"
]
}
}
}
+16
View File
@@ -0,0 +1,16 @@
module.exports = {
"plugins": [
"@babel/plugin-transform-modules-commonjs"
],
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
],
"@babel/preset-typescript"
]
};
+399
View File
@@ -0,0 +1,399 @@
<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1595096677332" clover="3.2.0">
<project timestamp="1595096677332" name="All files">
<metrics statements="324" coveredstatements="307" conditionals="204" coveredconditionals="192" methods="79" coveredmethods="72" elements="607" coveredelements="571" complexity="0" loc="324" ncloc="324" packages="5" files="18" classes="18"/>
<package name="src">
<metrics statements="33" coveredstatements="33" conditionals="1" coveredconditionals="1" methods="6" coveredmethods="6"/>
<file name="instances.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\instances.ts">
<metrics statements="19" coveredstatements="19" conditionals="1" coveredconditionals="1" methods="6" coveredmethods="6"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="9" count="1" type="stmt"/>
<line num="10" count="3" type="stmt"/>
<line num="11" count="3" type="stmt"/>
<line num="18" count="1" type="stmt"/>
<line num="19" count="4" type="stmt"/>
<line num="20" count="4" type="stmt"/>
<line num="27" count="1" type="stmt"/>
<line num="28" count="1" type="stmt"/>
<line num="35" count="1" type="stmt"/>
<line num="36" count="2" type="stmt"/>
<line num="38" count="2" type="stmt"/>
<line num="40" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="41" count="1" type="stmt"/>
<line num="45" count="2" type="stmt"/>
<line num="47" count="2" type="stmt"/>
<line num="48" count="1" type="stmt"/>
<line num="51" count="2" type="stmt"/>
</file>
<file name="options.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\options.ts">
<metrics statements="14" coveredstatements="14" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
<line num="5" count="1" type="stmt"/>
<line num="6" count="1" type="stmt"/>
<line num="7" count="1" type="stmt"/>
<line num="8" count="1" type="stmt"/>
<line num="9" count="1" type="stmt"/>
<line num="10" count="1" type="stmt"/>
<line num="11" count="1" type="stmt"/>
<line num="12" count="1" type="stmt"/>
<line num="13" count="1" type="stmt"/>
<line num="14" count="1" type="stmt"/>
<line num="15" count="1" type="stmt"/>
<line num="32" count="1" type="stmt"/>
<line num="80" count="1" type="stmt"/>
<line num="81" count="1" type="stmt"/>
</file>
</package>
<package name="src.core.compatibility">
<metrics statements="49" coveredstatements="49" conditionals="14" coveredconditionals="14" methods="10" coveredmethods="10"/>
<file name="vendors.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\compatibility\vendors.ts">
<metrics statements="49" coveredstatements="49" conditionals="14" coveredconditionals="14" methods="10" coveredmethods="10"/>
<line num="4" count="1" type="stmt"/>
<line num="5" count="20" type="stmt"/>
<line num="7" count="1" type="stmt"/>
<line num="8" count="10" type="stmt"/>
<line num="13" count="1" type="stmt"/>
<line num="14" count="1" type="stmt"/>
<line num="16" count="1" type="stmt"/>
<line num="17" count="1" type="stmt"/>
<line num="23" count="1" type="stmt"/>
<line num="24" count="4" type="stmt"/>
<line num="26" count="4" type="cond" truecount="2" falsecount="0"/>
<line num="27" count="1" type="stmt"/>
<line num="29" count="3" type="stmt"/>
<line num="30" count="3" type="stmt"/>
<line num="32" count="3" type="stmt"/>
<line num="33" count="9" type="stmt"/>
<line num="34" count="9" type="stmt"/>
<line num="40" count="33" type="stmt"/>
<line num="41" count="9" type="stmt"/>
<line num="44" count="3" type="stmt"/>
<line num="45" count="3" type="stmt"/>
<line num="54" count="1" type="stmt"/>
<line num="55" count="11" type="stmt"/>
<line num="56" count="11" type="stmt"/>
<line num="58" count="11" type="cond" truecount="2" falsecount="0"/>
<line num="59" count="4" type="stmt"/>
<line num="61" count="7" type="stmt"/>
<line num="62" count="7" type="stmt"/>
<line num="63" count="7" type="cond" truecount="2" falsecount="0"/>
<line num="64" count="7" type="stmt"/>
<line num="66" count="7" type="stmt"/>
<line num="67" count="10" type="stmt"/>
<line num="68" count="42" type="stmt"/>
<line num="69" count="42" type="stmt"/>
<line num="70" count="42" type="cond" truecount="2" falsecount="0"/>
<line num="71" count="2" type="stmt"/>
<line num="72" count="2" type="stmt"/>
<line num="75" count="10" type="stmt"/>
<line num="78" count="7" type="stmt"/>
<line num="79" count="7" type="stmt"/>
<line num="86" count="1" type="stmt"/>
<line num="87" count="5" type="cond" truecount="2" falsecount="0"/>
<line num="89" count="5" type="cond" truecount="2" falsecount="0"/>
<line num="90" count="1" type="stmt"/>
<line num="92" count="4" type="stmt"/>
<line num="93" count="11" type="cond" truecount="2" falsecount="0"/>
<line num="94" count="11" type="stmt"/>
<line num="97" count="4" type="stmt"/>
<line num="98" count="4" type="stmt"/>
</file>
</package>
<package name="src.core.dom">
<metrics statements="124" coveredstatements="107" conditionals="79" coveredconditionals="67" methods="36" coveredmethods="29"/>
<file name="attributes.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\dom\attributes.ts">
<metrics statements="18" coveredstatements="18" conditionals="8" coveredconditionals="8" methods="5" coveredmethods="5"/>
<line num="8" count="4" type="stmt"/>
<line num="9" count="7" type="cond" truecount="2" falsecount="0"/>
<line num="10" count="5" type="stmt"/>
<line num="11" count="2" type="stmt"/>
<line num="19" count="4" type="stmt"/>
<line num="20" count="1" type="stmt"/>
<line num="28" count="4" type="stmt"/>
<line num="29" count="3" type="cond" truecount="2" falsecount="0"/>
<line num="30" count="2" type="stmt"/>
<line num="31" count="1" type="stmt"/>
<line num="39" count="4" type="stmt"/>
<line num="40" count="3" type="cond" truecount="2" falsecount="0"/>
<line num="41" count="2" type="stmt"/>
<line num="42" count="1" type="stmt"/>
<line num="50" count="4" type="stmt"/>
<line num="51" count="5" type="cond" truecount="2" falsecount="0"/>
<line num="52" count="3" type="stmt"/>
<line num="53" count="2" type="stmt"/>
</file>
<file name="classes.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\dom\classes.ts">
<metrics statements="19" coveredstatements="19" conditionals="10" coveredconditionals="10" methods="4" coveredmethods="4"/>
<line num="3" count="4" type="stmt"/>
<line num="10" count="4" type="stmt"/>
<line num="11" count="7" type="stmt"/>
<line num="19" count="4" type="stmt"/>
<line num="21" count="11" type="stmt"/>
<line num="23" count="11" type="cond" truecount="2" falsecount="0"/>
<line num="24" count="9" type="cond" truecount="2" falsecount="0"/>
<line num="25" count="9" type="stmt"/>
<line num="26" count="11" type="stmt"/>
<line num="35" count="4" type="stmt"/>
<line num="37" count="7" type="stmt"/>
<line num="39" count="7" type="cond" truecount="2" falsecount="0"/>
<line num="40" count="5" type="cond" truecount="2" falsecount="0"/>
<line num="41" count="5" type="stmt"/>
<line num="42" count="6" type="stmt"/>
<line num="52" count="4" type="stmt"/>
<line num="53" count="4" type="cond" truecount="2" falsecount="0"/>
<line num="54" count="2" type="stmt"/>
<line num="57" count="2" type="stmt"/>
</file>
<file name="create.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\dom\create.ts">
<metrics statements="6" coveredstatements="6" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="3"/>
<line num="5" count="4" type="stmt"/>
<line num="6" count="204" type="stmt"/>
<line num="9" count="4" type="stmt"/>
<line num="10" count="3" type="stmt"/>
<line num="11" count="3" type="stmt"/>
<line num="13" count="9" type="stmt"/>
</file>
<file name="index.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\dom\index.ts">
<metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
</file>
<file name="manipulation.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\dom\manipulation.ts">
<metrics statements="28" coveredstatements="28" conditionals="24" coveredconditionals="24" methods="8" coveredmethods="8"/>
<line num="13" count="4" type="stmt"/>
<line num="14" count="24" type="cond" truecount="2" falsecount="0"/>
<line num="15" count="20" type="stmt"/>
<line num="19" count="20" type="cond" truecount="2" falsecount="0"/>
<line num="20" count="16" type="cond" truecount="2" falsecount="0"/>
<line num="21" count="8" type="stmt"/>
<line num="24" count="8" type="stmt"/>
<line num="25" count="24" type="cond" truecount="2" falsecount="0"/>
<line num="26" count="3" type="stmt"/>
<line num="28" count="24" type="stmt"/>
<line num="32" count="8" type="stmt"/>
<line num="36" count="16" type="cond" truecount="2" falsecount="0"/>
<line num="37" count="12" type="cond" truecount="2" falsecount="0"/>
<line num="38" count="1" type="stmt"/>
<line num="40" count="11" type="cond" truecount="2" falsecount="0"/>
<line num="41" count="2" type="stmt"/>
<line num="45" count="16" type="stmt"/>
<line num="55" count="6" type="stmt"/>
<line num="62" count="6" type="cond" truecount="2" falsecount="0"/>
<line num="69" count="6" type="stmt"/>
<line num="76" count="6" type="cond" truecount="2" falsecount="0"/>
<line num="82" count="4" type="stmt"/>
<line num="83" count="23" type="cond" truecount="2" falsecount="0"/>
<line num="84" count="9" type="stmt"/>
<line num="86" count="21" type="cond" truecount="2" falsecount="0"/>
<line num="87" count="20" type="stmt"/>
<line num="88" count="20" type="cond" truecount="2" falsecount="0"/>
<line num="89" count="15" type="stmt"/>
</file>
<file name="offset.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\dom\offset.ts">
<metrics statements="5" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="0"/>
<line num="1" count="3" type="stmt"/>
<line num="2" count="0" type="stmt"/>
<line num="3" count="0" type="stmt"/>
<line num="9" count="3" type="stmt"/>
<line num="10" count="0" type="stmt"/>
</file>
<file name="style.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\dom\style.ts">
<metrics statements="19" coveredstatements="5" conditionals="12" coveredconditionals="0" methods="5" coveredmethods="0"/>
<line num="5" count="3" type="stmt"/>
<line num="21" count="3" type="stmt"/>
<line num="22" count="0" type="stmt"/>
<line num="23" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="24" count="0" type="stmt"/>
<line num="29" count="3" type="stmt"/>
<line num="30" count="0" type="cond" truecount="0" falsecount="4"/>
<line num="36" count="0" type="stmt"/>
<line num="38" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="39" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="40" count="0" type="stmt"/>
<line num="43" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="46" count="0" type="stmt"/>
<line num="50" count="0" type="stmt"/>
<line num="51" count="0" type="stmt"/>
<line num="55" count="3" type="stmt"/>
<line num="56" count="0" type="stmt"/>
<line num="59" count="3" type="stmt"/>
<line num="60" count="0" type="stmt"/>
</file>
<file name="traversal.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\dom\traversal.ts">
<metrics statements="29" coveredstatements="29" conditionals="25" coveredconditionals="25" methods="9" coveredmethods="9"/>
<line num="3" count="4" type="stmt"/>
<line num="4" count="4" type="cond" truecount="3" falsecount="0"/>
<line num="7" count="4" type="stmt"/>
<line num="8" count="6" type="stmt"/>
<line num="10" count="6" type="cond" truecount="2" falsecount="0"/>
<line num="11" count="18" type="stmt"/>
<line num="14" count="6" type="stmt"/>
<line num="17" count="4" type="stmt"/>
<line num="18" count="19" type="cond" truecount="2" falsecount="0"/>
<line num="21" count="4" type="stmt"/>
<line num="22" count="31" type="cond" truecount="2" falsecount="0"/>
<line num="23" count="22" type="cond" truecount="2" falsecount="0"/>
<line num="24" count="2" type="stmt"/>
<line num="25" count="20" type="cond" truecount="2" falsecount="0"/>
<line num="26" count="2" type="stmt"/>
<line num="27" count="18" type="cond" truecount="2" falsecount="0"/>
<line num="28" count="6" type="stmt"/>
<line num="30" count="21" type="stmt"/>
<line num="33" count="4" type="stmt"/>
<line num="34" count="3" type="stmt"/>
<line num="36" count="3" type="cond" truecount="2" falsecount="0"/>
<line num="37" count="6" type="cond" truecount="2" falsecount="0"/>
<line num="38" count="3" type="cond" truecount="2" falsecount="0"/>
<line num="39" count="1" type="stmt"/>
<line num="42" count="3" type="stmt"/>
<line num="45" count="3" type="stmt"/>
<line num="48" count="4" type="stmt"/>
<line num="49" count="38" type="cond" truecount="2" falsecount="0"/>
<line num="52" count="14" type="cond" truecount="2" falsecount="0"/>
</file>
</package>
<package name="src.core.options">
<metrics statements="53" coveredstatements="53" conditionals="39" coveredconditionals="39" methods="10" coveredmethods="10"/>
<file name="index.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\options\index.ts">
<metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
</file>
<file name="transformation.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\options\transformation.ts">
<metrics statements="6" coveredstatements="6" conditionals="3" coveredconditionals="3" methods="2" coveredmethods="2"/>
<line num="13" count="16" type="stmt"/>
<line num="15" count="16" type="stmt"/>
<line num="16" count="102" type="stmt"/>
<line num="19" count="102" type="cond" truecount="1" falsecount="0"/>
<line num="20" count="90" type="cond" truecount="2" falsecount="0"/>
<line num="25" count="16" type="stmt"/>
</file>
<file name="validation.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\options\validation.ts">
<metrics statements="47" coveredstatements="47" conditionals="36" coveredconditionals="36" methods="8" coveredmethods="8"/>
<line num="5" count="3" type="stmt"/>
<line num="10" count="3" type="stmt"/>
<line num="16" count="3" type="stmt"/>
<line num="25" count="21" type="stmt"/>
<line num="26" count="21" type="stmt"/>
<line num="47" count="3" type="stmt"/>
<line num="48" count="65" type="stmt"/>
<line num="49" count="65" type="stmt"/>
<line num="50" count="372" type="stmt"/>
<line num="52" count="65" type="stmt"/>
<line num="53" count="372" type="cond" truecount="2" falsecount="0"/>
<line num="54" count="372" type="stmt"/>
<line num="55" count="372" type="stmt"/>
<line num="56" count="372" type="stmt"/>
<line num="57" count="372" type="cond" truecount="2" falsecount="0"/>
<line num="60" count="372" type="cond" truecount="4" falsecount="0"/>
<line num="61" count="33" type="stmt"/>
<line num="62" count="33" type="stmt"/>
<line num="63" count="33" type="stmt"/>
<line num="65" count="33" type="stmt"/>
<line num="66" count="66" type="cond" truecount="2" falsecount="0"/>
<line num="67" count="33" type="stmt"/>
<line num="71" count="339" type="cond" truecount="2" falsecount="0"/>
<line num="72" count="336" type="stmt"/>
<line num="73" count="336" type="stmt"/>
<line num="74" count="336" type="stmt"/>
<line num="75" count="336" type="stmt"/>
<line num="76" count="336" type="cond" truecount="2" falsecount="0"/>
<line num="78" count="336" type="stmt"/>
<line num="80" count="417" type="stmt"/>
<line num="81" count="417" type="cond" truecount="4" falsecount="0"/>
<line num="83" count="64" type="stmt"/>
<line num="84" count="121" type="stmt"/>
<line num="87" count="64" type="stmt"/>
<line num="90" count="353" type="stmt"/>
<line num="94" count="417" type="cond" truecount="2" falsecount="0"/>
<line num="97" count="417" type="stmt"/>
<line num="101" count="336" type="cond" truecount="2" falsecount="0"/>
<line num="102" count="310" type="cond" truecount="2" falsecount="0"/>
<line num="103" count="310" type="cond" truecount="4" falsecount="0"/>
<line num="104" count="256" type="stmt"/>
<line num="107" count="26" type="cond" truecount="2" falsecount="0"/>
<line num="108" count="2" type="stmt"/>
<line num="113" count="336" type="stmt"/>
<line num="117" count="65" type="stmt"/>
<line num="140" count="3" type="stmt"/>
<line num="151" count="32" type="cond" truecount="4" falsecount="0"/>
</file>
</package>
<package name="src.core.utils">
<metrics statements="65" coveredstatements="65" conditionals="71" coveredconditionals="71" methods="17" coveredmethods="17"/>
<file name="arrays.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\utils\arrays.ts">
<metrics statements="12" coveredstatements="12" conditionals="8" coveredconditionals="8" methods="2" coveredmethods="2"/>
<line num="19" count="694" type="stmt"/>
<line num="21" count="694" type="cond" truecount="2" falsecount="0"/>
<line num="22" count="688" type="stmt"/>
<line num="23" count="2211" type="cond" truecount="2" falsecount="0"/>
<line num="24" count="320" type="stmt"/>
<line num="27" count="6" type="cond" truecount="2" falsecount="0"/>
<line num="28" count="5" type="stmt"/>
<line num="29" count="13" type="cond" truecount="2" falsecount="0"/>
<line num="30" count="1" type="stmt"/>
<line num="33" count="694" type="stmt"/>
<line num="42" count="9" type="stmt"/>
<line num="43" count="418" type="stmt"/>
</file>
<file name="extend.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\utils\extend.ts">
<metrics statements="21" coveredstatements="21" conditionals="26" coveredconditionals="26" methods="2" coveredmethods="2"/>
<line num="11" count="180" type="stmt"/>
<line num="14" count="180" type="cond" truecount="5" falsecount="0"/>
<line num="15" count="3" type="stmt"/>
<line num="18" count="180" type="stmt"/>
<line num="20" count="1080" type="cond" truecount="2" falsecount="0"/>
<line num="23" count="217" type="stmt"/>
<line num="24" count="632" type="stmt"/>
<line num="28" count="632" type="cond" truecount="4" falsecount="0"/>
<line num="29" count="1" type="stmt"/>
<line num="32" count="631" type="stmt"/>
<line num="35" count="631" type="cond" truecount="5" falsecount="0"/>
<line num="36" count="126" type="stmt"/>
<line num="37" count="126" type="stmt"/>
<line num="40" count="126" type="cond" truecount="4" falsecount="0"/>
<line num="41" count="33" type="stmt"/>
<line num="42" count="93" type="cond" truecount="4" falsecount="0"/>
<line num="43" count="76" type="stmt"/>
<line num="47" count="126" type="stmt"/>
<line num="50" count="505" type="cond" truecount="2" falsecount="0"/>
<line num="51" count="504" type="stmt"/>
<line num="58" count="180" type="stmt"/>
</file>
<file name="index.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\utils\index.ts">
<metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
</file>
<file name="types.ts" path="D:\Github\OverlayScrollbars\packages\overlayscrollbars\src\core\utils\types.ts">
<metrics statements="32" coveredstatements="32" conditionals="37" coveredconditionals="37" methods="13" coveredmethods="13"/>
<line num="3" count="11" type="stmt"/>
<line num="4" count="576" type="cond" truecount="2" falsecount="0"/>
<line num="5" count="1" type="stmt"/>
<line num="6" count="575" type="cond" truecount="2" falsecount="0"/>
<line num="7" count="48" type="stmt"/>
<line num="8" count="527" type="stmt"/>
<line num="12" count="97" type="stmt"/>
<line num="16" count="114" type="stmt"/>
<line num="20" count="28" type="stmt"/>
<line num="24" count="1605" type="cond" truecount="3" falsecount="0"/>
<line num="28" count="464" type="stmt"/>
<line num="32" count="611" type="stmt"/>
<line num="36" count="500" type="stmt"/>
<line num="40" count="2666" type="stmt"/>
<line num="49" count="761" type="cond" truecount="2" falsecount="0"/>
<line num="50" count="761" type="cond" truecount="5" falsecount="0"/>
<line num="58" count="1337" type="cond" truecount="5" falsecount="0"/>
<line num="59" count="1123" type="stmt"/>
<line num="62" count="214" type="stmt"/>
<line num="63" count="214" type="stmt"/>
<line num="64" count="214" type="stmt"/>
<line num="65" count="214" type="cond" truecount="3" falsecount="0"/>
<line num="67" count="214" type="cond" truecount="5" falsecount="0"/>
<line num="68" count="3" type="stmt"/>
<line num="71" count="211" type="stmt"/>
<line num="73" count="211" type="cond" truecount="2" falsecount="0"/>
<line num="81" count="358" type="stmt"/>
<line num="82" count="358" type="cond" truecount="2" falsecount="0"/>
<line num="83" count="358" type="stmt"/>
<line num="93" count="105" type="stmt"/>
<line num="94" count="42" type="stmt"/>
<line num="95" count="63" type="stmt"/>
</file>
</package>
</project>
</coverage>
File diff suppressed because one or more lines are too long
+224
View File
@@ -0,0 +1,224 @@
body, html {
margin:0; padding: 0;
height: 100%;
}
body {
font-family: Helvetica Neue, Helvetica, Arial;
font-size: 14px;
color:#333;
}
.small { font-size: 12px; }
*, *:after, *:before {
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
h1 { font-size: 20px; margin: 0;}
h2 { font-size: 14px; }
pre {
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
margin: 0;
padding: 0;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
}
a { color:#0074D9; text-decoration:none; }
a:hover { text-decoration:underline; }
.strong { font-weight: bold; }
.space-top1 { padding: 10px 0 0 0; }
.pad2y { padding: 20px 0; }
.pad1y { padding: 10px 0; }
.pad2x { padding: 0 20px; }
.pad2 { padding: 20px; }
.pad1 { padding: 10px; }
.space-left2 { padding-left:55px; }
.space-right2 { padding-right:20px; }
.center { text-align:center; }
.clearfix { display:block; }
.clearfix:after {
content:'';
display:block;
height:0;
clear:both;
visibility:hidden;
}
.fl { float: left; }
@media only screen and (max-width:640px) {
.col3 { width:100%; max-width:100%; }
.hide-mobile { display:none!important; }
}
.quiet {
color: #7f7f7f;
color: rgba(0,0,0,0.5);
}
.quiet a { opacity: 0.7; }
.fraction {
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-size: 10px;
color: #555;
background: #E8E8E8;
padding: 4px 5px;
border-radius: 3px;
vertical-align: middle;
}
div.path a:link, div.path a:visited { color: #333; }
table.coverage {
border-collapse: collapse;
margin: 10px 0 0 0;
padding: 0;
}
table.coverage td {
margin: 0;
padding: 0;
vertical-align: top;
}
table.coverage td.line-count {
text-align: right;
padding: 0 5px 0 20px;
}
table.coverage td.line-coverage {
text-align: right;
padding-right: 10px;
min-width:20px;
}
table.coverage td span.cline-any {
display: inline-block;
padding: 0 5px;
width: 100%;
}
.missing-if-branch {
display: inline-block;
margin-right: 5px;
border-radius: 3px;
position: relative;
padding: 0 4px;
background: #333;
color: yellow;
}
.skip-if-branch {
display: none;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: #ccc;
color: white;
}
.missing-if-branch .typ, .skip-if-branch .typ {
color: inherit !important;
}
.coverage-summary {
border-collapse: collapse;
width: 100%;
}
.coverage-summary tr { border-bottom: 1px solid #bbb; }
.keyline-all { border: 1px solid #ddd; }
.coverage-summary td, .coverage-summary th { padding: 10px; }
.coverage-summary tbody { border: 1px solid #bbb; }
.coverage-summary td { border-right: 1px solid #bbb; }
.coverage-summary td:last-child { border-right: none; }
.coverage-summary th {
text-align: left;
font-weight: normal;
white-space: nowrap;
}
.coverage-summary th.file { border-right: none !important; }
.coverage-summary th.pct { }
.coverage-summary th.pic,
.coverage-summary th.abs,
.coverage-summary td.pct,
.coverage-summary td.abs { text-align: right; }
.coverage-summary td.file { white-space: nowrap; }
.coverage-summary td.pic { min-width: 120px !important; }
.coverage-summary tfoot td { }
.coverage-summary .sorter {
height: 10px;
width: 7px;
display: inline-block;
margin-left: 0.5em;
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
}
.coverage-summary .sorted .sorter {
background-position: 0 -20px;
}
.coverage-summary .sorted-desc .sorter {
background-position: 0 -10px;
}
.status-line { height: 10px; }
/* yellow */
.cbranch-no { background: yellow !important; color: #111; }
/* dark red */
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
.low .chart { border:1px solid #C21F39 }
.highlighted,
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
background: #C21F39 !important;
}
/* medium red */
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
/* light red */
.low, .cline-no { background:#FCE1E5 }
/* light green */
.high, .cline-yes { background:rgb(230,245,208) }
/* medium green */
.cstat-yes { background:rgb(161,215,106) }
/* dark green */
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
.high .chart { border:1px solid rgb(77,146,33) }
/* dark yellow (gold) */
.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
.medium .chart { border:1px solid #f9cd0b; }
/* light yellow */
.medium { background: #fff4c2; }
.cstat-skip { background: #ddd; color: #111; }
.fstat-skip { background: #ddd; color: #111 !important; }
.cbranch-skip { background: #ddd !important; color: #111; }
span.cline-neutral { background: #eaeaea; }
.coverage-summary td.empty {
opacity: .5;
padding-top: 4px;
padding-bottom: 4px;
line-height: 1;
color: #888;
}
.cover-fill, .cover-empty {
display:inline-block;
height: 12px;
}
.chart {
line-height: 0;
}
.cover-empty {
background: white;
}
.cover-full {
border-right: none !important;
}
pre.prettyprint {
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
.com { color: #999 !important; }
.ignore-none { color: #999; font-weight: normal; }
.wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -48px;
}
.footer, .push {
height: 48px;
}
+79
View File
@@ -0,0 +1,79 @@
/* eslint-disable */
var jumpToCode = (function init() {
// Classes of code we would like to highlight in the file view
var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
// Elements to highlight in the file listing view
var fileListingElements = ['td.pct.low'];
// We don't want to select elements that are direct descendants of another match
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
// Selecter that finds elements on the page to which we can jump
var selector =
fileListingElements.join(', ') +
', ' +
notSelector +
missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
// The NodeList of matching elements
var missingCoverageElements = document.querySelectorAll(selector);
var currentIndex;
function toggleClass(index) {
missingCoverageElements
.item(currentIndex)
.classList.remove('highlighted');
missingCoverageElements.item(index).classList.add('highlighted');
}
function makeCurrent(index) {
toggleClass(index);
currentIndex = index;
missingCoverageElements.item(index).scrollIntoView({
behavior: 'smooth',
block: 'center',
inline: 'center'
});
}
function goToPrevious() {
var nextIndex = 0;
if (typeof currentIndex !== 'number' || currentIndex === 0) {
nextIndex = missingCoverageElements.length - 1;
} else if (missingCoverageElements.length > 1) {
nextIndex = currentIndex - 1;
}
makeCurrent(nextIndex);
}
function goToNext() {
var nextIndex = 0;
if (
typeof currentIndex === 'number' &&
currentIndex < missingCoverageElements.length - 1
) {
nextIndex = currentIndex + 1;
}
makeCurrent(nextIndex);
}
return function jump(event) {
switch (event.which) {
case 78: // n
case 74: // j
goToNext();
break;
case 66: // b
case 75: // k
case 80: // p
goToPrevious();
break;
}
};
})();
window.addEventListener('keydown', jumpToCode);
Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

+171
View File
@@ -0,0 +1,171 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1>All files</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">94.91% </span>
<span class="quiet">Statements</span>
<span class='fraction'>317/334</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">94.12% </span>
<span class="quiet">Branches</span>
<span class='fraction'>192/204</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">91.14% </span>
<span class="quiet">Functions</span>
<span class='fraction'>72/79</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">94.75% </span>
<span class="quiet">Lines</span>
<span class='fraction'>307/324</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="src"><a href="src/index.html">src</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="33" class="abs high">33/33</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="33" class="abs high">33/33</td>
</tr>
<tr>
<td class="file high" data-value="src/core/compatibility"><a href="src/core/compatibility/index.html">src/core/compatibility</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="50" class="abs high">50/50</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="14" class="abs high">14/14</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="10" class="abs high">10/10</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="49" class="abs high">49/49</td>
</tr>
<tr>
<td class="file high" data-value="src/core/dom"><a href="src/core/dom/index.html">src/core/dom</a></td>
<td data-value="87.02" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 87%"></div><div class="cover-empty" style="width: 13%"></div></div>
</td>
<td data-value="87.02" class="pct high">87.02%</td>
<td data-value="131" class="abs high">114/131</td>
<td data-value="84.81" class="pct high">84.81%</td>
<td data-value="79" class="abs high">67/79</td>
<td data-value="80.56" class="pct high">80.56%</td>
<td data-value="36" class="abs high">29/36</td>
<td data-value="86.29" class="pct high">86.29%</td>
<td data-value="124" class="abs high">107/124</td>
</tr>
<tr>
<td class="file high" data-value="src/core/options"><a href="src/core/options/index.html">src/core/options</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="55" class="abs high">55/55</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="39" class="abs high">39/39</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="10" class="abs high">10/10</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="53" class="abs high">53/53</td>
</tr>
<tr>
<td class="file high" data-value="src/core/utils"><a href="src/core/utils/index.html">src/core/utils</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="65" class="abs high">65/65</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="71" class="abs high">71/71</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="17" class="abs high">17/17</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="65" class="abs high">65/65</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="sorter.js"></script>
<script src="block-navigation.js"></script>
</body>
</html>
+1
View File
@@ -0,0 +1 @@
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

+170
View File
@@ -0,0 +1,170 @@
/* eslint-disable */
var addSorting = (function() {
'use strict';
var cols,
currentSort = {
index: 0,
desc: false
};
// returns the summary table element
function getTable() {
return document.querySelector('.coverage-summary');
}
// returns the thead element of the summary table
function getTableHeader() {
return getTable().querySelector('thead tr');
}
// returns the tbody element of the summary table
function getTableBody() {
return getTable().querySelector('tbody');
}
// returns the th element for nth column
function getNthColumn(n) {
return getTableHeader().querySelectorAll('th')[n];
}
// loads all columns
function loadColumns() {
var colNodes = getTableHeader().querySelectorAll('th'),
colNode,
cols = [],
col,
i;
for (i = 0; i < colNodes.length; i += 1) {
colNode = colNodes[i];
col = {
key: colNode.getAttribute('data-col'),
sortable: !colNode.getAttribute('data-nosort'),
type: colNode.getAttribute('data-type') || 'string'
};
cols.push(col);
if (col.sortable) {
col.defaultDescSort = col.type === 'number';
colNode.innerHTML =
colNode.innerHTML + '<span class="sorter"></span>';
}
}
return cols;
}
// attaches a data attribute to every tr element with an object
// of data values keyed by column name
function loadRowData(tableRow) {
var tableCols = tableRow.querySelectorAll('td'),
colNode,
col,
data = {},
i,
val;
for (i = 0; i < tableCols.length; i += 1) {
colNode = tableCols[i];
col = cols[i];
val = colNode.getAttribute('data-value');
if (col.type === 'number') {
val = Number(val);
}
data[col.key] = val;
}
return data;
}
// loads all row data
function loadData() {
var rows = getTableBody().querySelectorAll('tr'),
i;
for (i = 0; i < rows.length; i += 1) {
rows[i].data = loadRowData(rows[i]);
}
}
// sorts the table using the data for the ith column
function sortByIndex(index, desc) {
var key = cols[index].key,
sorter = function(a, b) {
a = a.data[key];
b = b.data[key];
return a < b ? -1 : a > b ? 1 : 0;
},
finalSorter = sorter,
tableBody = document.querySelector('.coverage-summary tbody'),
rowNodes = tableBody.querySelectorAll('tr'),
rows = [],
i;
if (desc) {
finalSorter = function(a, b) {
return -1 * sorter(a, b);
};
}
for (i = 0; i < rowNodes.length; i += 1) {
rows.push(rowNodes[i]);
tableBody.removeChild(rowNodes[i]);
}
rows.sort(finalSorter);
for (i = 0; i < rows.length; i += 1) {
tableBody.appendChild(rows[i]);
}
}
// removes sort indicators for current column being sorted
function removeSortIndicators() {
var col = getNthColumn(currentSort.index),
cls = col.className;
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
col.className = cls;
}
// adds sort indicators for current column being sorted
function addSortIndicators() {
getNthColumn(currentSort.index).className += currentSort.desc
? ' sorted-desc'
: ' sorted';
}
// adds event listeners for all sorter widgets
function enableUI() {
var i,
el,
ithSorter = function ithSorter(i) {
var col = cols[i];
return function() {
var desc = col.defaultDescSort;
if (currentSort.index === i) {
desc = !currentSort.desc;
}
sortByIndex(i, desc);
removeSortIndicators();
currentSort.index = i;
currentSort.desc = desc;
addSortIndicators();
};
};
for (i = 0; i < cols.length; i += 1) {
if (cols[i].sortable) {
// add the click event handler on the th so users
// dont have to click on those tiny arrows
el = getNthColumn(i).querySelector('.sorter').parentElement;
if (el.addEventListener) {
el.addEventListener('click', ithSorter(i));
} else {
el.attachEvent('onclick', ithSorter(i));
}
}
}
}
// adds sorting functionality to the UI
return function() {
if (!getTable()) {
return;
}
cols = loadColumns();
loadData();
addSortIndicators();
enableUI();
};
})();
window.addEventListener('load', addSorting);
@@ -0,0 +1,111 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/compatibility</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> src/core/compatibility</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>50/50</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>14/14</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>10/10</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>49/49</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="vendors.ts"><a href="vendors.ts.html">vendors.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="50" class="abs high">50/50</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="14" class="abs high">14/14</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="10" class="abs high">10/10</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="49" class="abs high">49/49</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,377 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/compatibility/vendors.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/compatibility</a> vendors.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>50/50</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>14/14</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>10/10</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>49/49</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a>
<a name='L55'></a><a href='#L55'>55</a>
<a name='L56'></a><a href='#L56'>56</a>
<a name='L57'></a><a href='#L57'>57</a>
<a name='L58'></a><a href='#L58'>58</a>
<a name='L59'></a><a href='#L59'>59</a>
<a name='L60'></a><a href='#L60'>60</a>
<a name='L61'></a><a href='#L61'>61</a>
<a name='L62'></a><a href='#L62'>62</a>
<a name='L63'></a><a href='#L63'>63</a>
<a name='L64'></a><a href='#L64'>64</a>
<a name='L65'></a><a href='#L65'>65</a>
<a name='L66'></a><a href='#L66'>66</a>
<a name='L67'></a><a href='#L67'>67</a>
<a name='L68'></a><a href='#L68'>68</a>
<a name='L69'></a><a href='#L69'>69</a>
<a name='L70'></a><a href='#L70'>70</a>
<a name='L71'></a><a href='#L71'>71</a>
<a name='L72'></a><a href='#L72'>72</a>
<a name='L73'></a><a href='#L73'>73</a>
<a name='L74'></a><a href='#L74'>74</a>
<a name='L75'></a><a href='#L75'>75</a>
<a name='L76'></a><a href='#L76'>76</a>
<a name='L77'></a><a href='#L77'>77</a>
<a name='L78'></a><a href='#L78'>78</a>
<a name='L79'></a><a href='#L79'>79</a>
<a name='L80'></a><a href='#L80'>80</a>
<a name='L81'></a><a href='#L81'>81</a>
<a name='L82'></a><a href='#L82'>82</a>
<a name='L83'></a><a href='#L83'>83</a>
<a name='L84'></a><a href='#L84'>84</a>
<a name='L85'></a><a href='#L85'>85</a>
<a name='L86'></a><a href='#L86'>86</a>
<a name='L87'></a><a href='#L87'>87</a>
<a name='L88'></a><a href='#L88'>88</a>
<a name='L89'></a><a href='#L89'>89</a>
<a name='L90'></a><a href='#L90'>90</a>
<a name='L91'></a><a href='#L91'>91</a>
<a name='L92'></a><a href='#L92'>92</a>
<a name='L93'></a><a href='#L93'>93</a>
<a name='L94'></a><a href='#L94'>94</a>
<a name='L95'></a><a href='#L95'>95</a>
<a name='L96'></a><a href='#L96'>96</a>
<a name='L97'></a><a href='#L97'>97</a>
<a name='L98'></a><a href='#L98'>98</a>
<a name='L99'></a><a href='#L99'>99</a>
<a name='L100'></a><a href='#L100'>100</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">20x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">10x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">33x</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-yes">10x</span>
<span class="cline-any cline-yes">42x</span>
<span class="cline-any cline-yes">42x</span>
<span class="cline-any cline-yes">42x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">10x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { each } from 'core/utils';
import { createDiv } from 'core/dom';
&nbsp;
const firstLetterToUpper: (str: string) =&gt; string = (str) =&gt; {
return str.charAt(0).toUpperCase() + str.slice(1);
}
const getDummyStyle: () =&gt; CSSStyleDeclaration = () =&gt; {
return createDiv().style;
}
&nbsp;
//https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix
&nbsp;
export const cssPrefixes: ReadonlyArray&lt;string&gt; = ['-webkit-', '-moz-', '-o-', '-ms-'];
export const jsPrefixes: ReadonlyArray&lt;string&gt; = ['WebKit', 'Moz', 'O', 'MS', 'webkit', 'moz', 'o', 'ms'];
&nbsp;
export const jsCache: { [key: string]: any } = {};
export const cssCache: { [key: string]: string } = {};
&nbsp;
/**
* Gets the name of the given CSS property with vendor prefix if it isn't supported without, or undefined if unsupported.
* @param name The name of the CSS property which shall be get.
*/
export const cssProperty: (name: string) =&gt; string | undefined = (name) =&gt; {
let result: string | undefined = cssCache[name];
&nbsp;
if (cssCache.hasOwnProperty(name))
return result;
&nbsp;
const uppercasedName: string = firstLetterToUpper(name);
const elmStyle: CSSStyleDeclaration = getDummyStyle();
&nbsp;
each(cssPrefixes, (prefix: string) =&gt; {
const prefixWithoutDashes: string = prefix.replace(/-/g, '');
const resultPossibilities: Array&lt;string&gt; = [
name, //transition
prefix + name, //-webkit-transition
prefixWithoutDashes + uppercasedName, //webkitTransition
firstLetterToUpper(prefixWithoutDashes) + uppercasedName //WebkitTransition
];
result = resultPossibilities.find((resultPossibility: string) =&gt; elmStyle[resultPossibility] !== undefined);
return !result;
});
&nbsp;
cssCache[name] = result;
return result;
}
&nbsp;
/**
* Get the name of the given CSS property value(s), with vendor prefix if it isn't supported wuthout, or undefined if no value is supported.
* @param property The CSS property to which the CSS property value(s) belong.
* @param values The value(s) separated by spaces which shall be get.
* @param suffix A suffix which is added to each value in case the value is a function or something else more advanced.
*/
export const cssPropertyValue: (property: string, values: string, suffix?: string) =&gt; string | undefined = (property, values, suffix) =&gt; {
const name: string = property + ' ' + values;
let result: string | undefined = cssCache[name];
&nbsp;
if (cssCache.hasOwnProperty(name))
return result;
&nbsp;
const dummyStyle: CSSStyleDeclaration = getDummyStyle();
const possbleValues: Array&lt;string&gt; = values.split(' ');
const preparedSuffix: string = suffix || '';
const cssPrefixesWithFirstEmpty = [''].concat(cssPrefixes);
&nbsp;
each(possbleValues, (possibleValue: string) =&gt; {
each(cssPrefixesWithFirstEmpty, (prefix: string) =&gt; {
const prop = prefix + possibleValue;
dummyStyle.cssText = property + ':' + prop + preparedSuffix;
if (dummyStyle.length) {
result = prop;
return false;
}
});
return !result;
});
&nbsp;
cssCache[name] = result;
return result;
}
&nbsp;
/**
* Get the requested JS function, object or constructor with vendor prefix if it isn't supported without or undefined if unsupported.
* @param name The name of the JS function, object or constructor.
*/
export const jsAPI: (name: string) =&gt; any = (name) =&gt; {
let result: any = jsCache[name] || window[name];
&nbsp;
if (jsCache.hasOwnProperty(name))
return result;
&nbsp;
each(jsPrefixes, (prefix: string) =&gt; {
result = result || window[prefix + firstLetterToUpper(name)];
return !result;
});
&nbsp;
jsCache[name] = result;
return result;
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,239 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/dom/attributes.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/dom</a> attributes.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>18/18</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>8/8</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>5/5</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>18/18</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
* Gets or sets a attribute with the given attribute of the given element depending whether the value attribute is given.
* Returns null if the element has no attribute with the given name.
* @param elm The element of which the attribute shall be get or set.
* @param attrName The attribute name which shall be get or set.
* @param value The value of the attribute which shall be set.
*/
export const attr: (elm: Element, attrName: string, value?: string) =&gt; string | null | void = (elm, attrName, value) =&gt; {
if (value === undefined)
return elm.getAttribute(attrName);
elm.setAttribute(attrName, value);
}
&nbsp;
/**
* Removes the given attribute from the given element.
* @param elm The element of which the attribute shall be removed.
* @param attrName The attribute name.
*/
export const removeAttr: (elm: Element, attrName: string) =&gt; void = (elm, attrName) =&gt; {
elm.removeAttribute(attrName);
}
&nbsp;
/**
* Gets or sets the scrollLeft value of the given element depending whether the value attribute is given.
* @param elm The element of which the scrollLeft value shall be get or set.
* @param value The scrollLeft value which shall be set.
*/
export const scrollLeft: (elm: HTMLElement, value?: number) =&gt; number | void = (elm, value) =&gt; {
if (value === undefined)
return elm.scrollLeft;
elm.scrollLeft = value;
}
&nbsp;
/**
* Gets or sets the scrollTop value of the given element depending whether the value attribute is given.
* @param elm The element of which the scrollTop value shall be get or set.
* @param value The scrollTop value which shall be set.
*/
export const scrollTop: (elm: HTMLElement, value?: number) =&gt; number | void = (elm, value) =&gt; {
if (value === undefined)
return elm.scrollTop;
elm.scrollTop = value;
}
&nbsp;
/**
* Gets or sets the value of the given input element depending whether the value attribute is given.
* @param elm The input element of which the value shall be get or set.
* @param value The value which shall be set.
*/
export const val: (elm: HTMLInputElement, value?: string) =&gt; string | void = (elm, value) =&gt; {
if (value === undefined)
return elm.value;
elm.value = value;
}</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,254 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/dom/classes.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/dom</a> classes.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>19/19</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>10/10</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>4/4</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>19/19</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a>
<a name='L55'></a><a href='#L55'>55</a>
<a name='L56'></a><a href='#L56'>56</a>
<a name='L57'></a><a href='#L57'>57</a>
<a name='L58'></a><a href='#L58'>58</a>
<a name='L59'></a><a href='#L59'>59</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { isString } from 'core/utils/types';
&nbsp;
const rnothtmlwhite: RegExp = (/[^\x20\t\r\n\f]+/g);
&nbsp;
/**
* Check whether the given element has the given class name.
* @param elm The element.
* @param className The class name.
*/
export const hasClass: (elm: Element, className: string) =&gt; boolean = (elm, className) =&gt; {
return elm.classList.contains(className);
}
&nbsp;
/**
* 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 const addClass: (elm: Element, className: string) =&gt; void = (elm, className) =&gt; {
let clazz: string;
let i: number = 0;
&nbsp;
if (isString(className)) {
const classes: Array&lt;string&gt; = className.match(rnothtmlwhite) || [];
while ((clazz = classes[i++]))
elm.classList.add(clazz);
}
}
&nbsp;
/**
* 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 const removeClass: (elm: Element, className: string) =&gt; void = (elm, className) =&gt; {
let clazz: string;
let i: number = 0;
&nbsp;
if (isString(className)) {
const classes: Array&lt;string&gt; = className.match(rnothtmlwhite) || [];
while ((clazz = classes[i++]))
elm.classList.remove(clazz);
}
}
&nbsp;
/**
* Adds or removes the given class name(s) from the given element depending on the given condition.
* Condition true means add class name(s), false means remove class name(s).
* @param elm The element.
* @param className The class name(s) which shall be added or removed. (separated by spaces)
*/
export const conditionalClass: (elm: Element, className: string, condition: boolean) =&gt; void = (elm, className, condition) =&gt; {
if (condition) {
addClass(elm, className);
}
else {
removeClass(elm, className);
}
}</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,119 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/dom/create.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/dom</a> create.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>7/7</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>3/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>6/6</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">204x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { each } from 'core/utils/arrays';
import { contents } from 'core/dom/traversal';
import { removeElements } from 'core/dom/manipulation';
&nbsp;
export const createDiv: () =&gt; HTMLDivElement = () =&gt; {
return document.createElement('div');
}
&nbsp;
export const createDOM: (html: string) =&gt; ReadonlyArray&lt;Node&gt; = (html) =&gt; {
const elm = createDiv();
elm.innerHTML = html.trim();
&nbsp;
return each(contents(elm), (elm) =&gt; removeElements(elm));
}</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,216 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/dom</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> src/core/dom</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">87.02% </span>
<span class="quiet">Statements</span>
<span class='fraction'>114/131</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">84.81% </span>
<span class="quiet">Branches</span>
<span class='fraction'>67/79</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">80.56% </span>
<span class="quiet">Functions</span>
<span class='fraction'>29/36</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">86.29% </span>
<span class="quiet">Lines</span>
<span class='fraction'>107/124</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="attributes.ts"><a href="attributes.ts.html">attributes.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="18" class="abs high">18/18</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="8" class="abs high">8/8</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="5" class="abs high">5/5</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="18" class="abs high">18/18</td>
</tr>
<tr>
<td class="file high" data-value="classes.ts"><a href="classes.ts.html">classes.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="19" class="abs high">19/19</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="10" class="abs high">10/10</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="4" class="abs high">4/4</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="19" class="abs high">19/19</td>
</tr>
<tr>
<td class="file high" data-value="create.ts"><a href="create.ts.html">create.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="7" class="abs high">7/7</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="3" class="abs high">3/3</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
</tr>
<tr>
<td class="file empty" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
<td data-value="0" class="pic empty">
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
</tr>
<tr>
<td class="file high" data-value="manipulation.ts"><a href="manipulation.ts.html">manipulation.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="33" class="abs high">33/33</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="24" class="abs high">24/24</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="8" class="abs high">8/8</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="28" class="abs high">28/28</td>
</tr>
<tr>
<td class="file low" data-value="offset.ts"><a href="offset.ts.html">offset.ts</a></td>
<td data-value="40" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 40%"></div><div class="cover-empty" style="width: 60%"></div></div>
</td>
<td data-value="40" class="pct low">40%</td>
<td data-value="5" class="abs low">2/5</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="2" class="abs low">0/2</td>
<td data-value="40" class="pct low">40%</td>
<td data-value="5" class="abs low">2/5</td>
</tr>
<tr>
<td class="file low" data-value="style.ts"><a href="style.ts.html">style.ts</a></td>
<td data-value="26.32" class="pic low">
<div class="chart"><div class="cover-fill" style="width: 26%"></div><div class="cover-empty" style="width: 74%"></div></div>
</td>
<td data-value="26.32" class="pct low">26.32%</td>
<td data-value="19" class="abs low">5/19</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="12" class="abs low">0/12</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="5" class="abs low">0/5</td>
<td data-value="26.32" class="pct low">26.32%</td>
<td data-value="19" class="abs low">5/19</td>
</tr>
<tr>
<td class="file high" data-value="traversal.ts"><a href="traversal.ts.html">traversal.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="30" class="abs high">30/30</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="25" class="abs high">25/25</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="29" class="abs high">29/29</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,98 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/dom/index.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/dom</a> index.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Statements</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Lines</span>
<span class='fraction'>0/0</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export * from 'core/dom/attributes';
export * from 'core/dom/classes';
export * from 'core/dom/create';
export * from 'core/dom/style';
export * from 'core/dom/manipulation';
export * from 'core/dom/offset';
export * from 'core/dom/traversal';</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,350 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/dom/manipulation.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/dom</a> manipulation.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>33/33</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>24/24</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>8/8</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>28/28</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a>
<a name='L55'></a><a href='#L55'>55</a>
<a name='L56'></a><a href='#L56'>56</a>
<a name='L57'></a><a href='#L57'>57</a>
<a name='L58'></a><a href='#L58'>58</a>
<a name='L59'></a><a href='#L59'>59</a>
<a name='L60'></a><a href='#L60'>60</a>
<a name='L61'></a><a href='#L61'>61</a>
<a name='L62'></a><a href='#L62'>62</a>
<a name='L63'></a><a href='#L63'>63</a>
<a name='L64'></a><a href='#L64'>64</a>
<a name='L65'></a><a href='#L65'>65</a>
<a name='L66'></a><a href='#L66'>66</a>
<a name='L67'></a><a href='#L67'>67</a>
<a name='L68'></a><a href='#L68'>68</a>
<a name='L69'></a><a href='#L69'>69</a>
<a name='L70'></a><a href='#L70'>70</a>
<a name='L71'></a><a href='#L71'>71</a>
<a name='L72'></a><a href='#L72'>72</a>
<a name='L73'></a><a href='#L73'>73</a>
<a name='L74'></a><a href='#L74'>74</a>
<a name='L75'></a><a href='#L75'>75</a>
<a name='L76'></a><a href='#L76'>76</a>
<a name='L77'></a><a href='#L77'>77</a>
<a name='L78'></a><a href='#L78'>78</a>
<a name='L79'></a><a href='#L79'>79</a>
<a name='L80'></a><a href='#L80'>80</a>
<a name='L81'></a><a href='#L81'>81</a>
<a name='L82'></a><a href='#L82'>82</a>
<a name='L83'></a><a href='#L83'>83</a>
<a name='L84'></a><a href='#L84'>84</a>
<a name='L85'></a><a href='#L85'>85</a>
<a name='L86'></a><a href='#L86'>86</a>
<a name='L87'></a><a href='#L87'>87</a>
<a name='L88'></a><a href='#L88'>88</a>
<a name='L89'></a><a href='#L89'>89</a>
<a name='L90'></a><a href='#L90'>90</a>
<a name='L91'></a><a href='#L91'>91</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">24x</span>
<span class="cline-any cline-yes">20x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">20x</span>
<span class="cline-any cline-yes">16x</span>
<span class="cline-any cline-yes">8x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">8x</span>
<span class="cline-any cline-yes">24x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">24x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">8x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">16x</span>
<span class="cline-any cline-yes">12x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">16x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">23x</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">21x</span>
<span class="cline-any cline-yes">20x</span>
<span class="cline-any cline-yes">20x</span>
<span class="cline-any cline-yes">15x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { isArrayLike, isHTMLElement } from 'core/utils/types';
import { each } from 'core/utils/arrays';
import { parent } from 'core/dom/traversal';
&nbsp;
type NodeCollection = ArrayLike&lt;Node&gt; | Node | undefined | null;
&nbsp;
/**
* Inserts Nodes before the given preferredAnchor element.
* @param parent The parent of the preferredAnchor element or the element which shall be the parent of the inserted Nodes.
* @param preferredAnchor The element before which the Nodes shall be inserted or null if the elements shall be appended at the end.
* @param insertedElms The Nodes which shall be inserted.
*/
const before: (parent: Node | null, preferredAnchor: Node | null, insertedElms: NodeCollection) =&gt; void = (parent, preferredAnchor, insertedElms) =&gt; {
if (insertedElms) {
let anchor: Node | null = preferredAnchor;
let fragment: DocumentFragment | Node | undefined | null;
&nbsp;
// parent must be defined
if (parent) {
if (isArrayLike(insertedElms)) {
fragment = document.createDocumentFragment();
&nbsp;
// append all insertedElms to the fragment and if one of these is the anchor, change the anchor
each(insertedElms, (insertedElm) =&gt; {
if (insertedElm === anchor) {
anchor = insertedElm.previousSibling;
}
fragment!.appendChild(insertedElm);
});
}
else {
fragment = insertedElms;
}
&nbsp;
// if the preferred anchor isn't null set it to a valid anchor
if (preferredAnchor) {
if (!anchor) {
anchor = parent.firstChild;
}
else if (anchor !== preferredAnchor) {
anchor = anchor.nextSibling;
}
}
&nbsp;
parent.insertBefore(fragment, anchor);
}
}
}
&nbsp;
/**
* Appends the given children at the end of the given Node.
* @param node The Node to which the children shall be appended.
* @param children The Nodes which shall be appended.
*/
export const appendChildren: (node: Node | null, children: NodeCollection) =&gt; void = (node, children) =&gt; { before(node, null, children) };
&nbsp;
/**
* Prepends the given children at the start of the given Node.
* @param node The Node to which the children shall be prepended.
* @param children The Nodes which shall be prepended.
*/
export const prependChildren: (node: Node | null, children: NodeCollection) =&gt; void = (node, children) =&gt; { before(node, node &amp;&amp; node.firstChild, children) };
&nbsp;
/**
* Inserts the given Nodes before the given Node.
* @param node The Node before which the given Nodes shall be inserted.
* @param insertedNodes The Nodes which shall be inserted.
*/
export const insertBefore: (node: Node | null, insertedNodes: NodeCollection) =&gt; void = (node, insertedNodes) =&gt; { before(parent(node), node, insertedNodes) };
&nbsp;
/**
* Inserts the given Nodes after the given Node.
* @param node The Node after which the given Nodes shall be inserted.
* @param insertedNodes The Nodes which shall be inserted.
*/
export const insertAfter: (node: Node | null, insertedNodes: NodeCollection) =&gt; void = (node, insertedNodes) =&gt; { before(parent(node), node &amp;&amp; node.nextSibling, insertedNodes) };
&nbsp;
/**
* Removes the given Nodes from their parent.
* @param nodes The Nodes which shall be removed.
*/
export const removeElements: (nodes: NodeCollection) =&gt; void = (nodes) =&gt; {
if (isArrayLike(nodes)) {
each(Array.from(nodes), (e) =&gt; removeElements(e));
}
else if (nodes) {
const parentNode = nodes.parentNode;
if (parentNode)
parentNode.removeChild(nodes);
}
}</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,119 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/dom/offset.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/dom</a> offset.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">40% </span>
<span class="quiet">Statements</span>
<span class='fraction'>2/5</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">40% </span>
<span class="quiet">Lines</span>
<span class='fraction'>2/5</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export const offset = <span class="fstat-no" title="function not covered" >(e</span>lm: HTMLElement) =&gt; {
const rect = <span class="cstat-no" title="statement not covered" >elm.getBoundingClientRect();</span>
<span class="cstat-no" title="statement not covered" > return {</span>
top: rect.top + window.pageXOffset,
left: rect.left + window.pageYOffset
};
}
&nbsp;
export const position = <span class="fstat-no" title="function not covered" >(e</span>lm: HTMLElement) =&gt; {
<span class="cstat-no" title="statement not covered" > return {</span>
top: elm.offsetTop,
left: elm.offsetLeft
};
}</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,266 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/dom/style.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/dom</a> style.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">26.32% </span>
<span class="quiet">Statements</span>
<span class='fraction'>5/19</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/12</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/5</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">26.32% </span>
<span class="quiet">Lines</span>
<span class='fraction'>5/19</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a>
<a name='L55'></a><a href='#L55'>55</a>
<a name='L56'></a><a href='#L56'>56</a>
<a name='L57'></a><a href='#L57'>57</a>
<a name='L58'></a><a href='#L58'>58</a>
<a name='L59'></a><a href='#L59'>59</a>
<a name='L60'></a><a href='#L60'>60</a>
<a name='L61'></a><a href='#L61'>61</a>
<a name='L62'></a><a href='#L62'>62</a>
<a name='L63'></a><a href='#L63'>63</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { isString, isNumber, isUndefined } from 'core/utils/types';
&nbsp;
type cssStyleObj = { [key: string]: string | number };
&nbsp;
const cssNumber = {
animationIterationCount: true,
columnCount: true,
fillOpacity: true,
flexGrow: true,
flexShrink: true,
fontWeight: true,
lineHeight: true,
opacity: true,
order: true,
orphans: true,
widows: true,
zIndex: true,
zoom: true
};
&nbsp;
const setCSSVal: (elm: HTMLElement, prop: string, val: string | number) =&gt; void = <span class="fstat-no" title="function not covered" >(e</span>lm, prop, val) =&gt; {
<span class="cstat-no" title="statement not covered" > try {</span>
<span class="cstat-no" title="statement not covered" > if (elm.style[prop] !== undefined) {</span>
<span class="cstat-no" title="statement not covered" > elm.style[prop] = parseCSSVal(prop, val);</span>
}
} catch (e) { }
}
&nbsp;
const parseCSSVal: (prop: string, val: string | number) =&gt; string | number = <span class="fstat-no" title="function not covered" >(p</span>rop, val) =&gt; {
<span class="cstat-no" title="statement not covered" > return !cssNumber[prop.toLowerCase()] &amp;&amp; isNumber(val) ? val + 'px' : val;</span>
}
&nbsp;
export function style(elm: HTMLElement, styles: string | cssStyleObj): string;
export function style(elm: HTMLElement, styles: string | cssStyleObj, val: string | number): void;
export function <span class="fstat-no" title="function not covered" >style(</span>elm: HTMLElement, styles: string | cssStyleObj, val?: string | number): string | void {
const getCptStyle: Function = <span class="cstat-no" title="statement not covered" >window.getComputedStyle;</span>
&nbsp;
<span class="cstat-no" title="statement not covered" > if (isString(styles)) {</span>
<span class="cstat-no" title="statement not covered" > if (isUndefined(val)) {</span>
const cptStyle: CSSStyleDeclaration = <span class="cstat-no" title="statement not covered" >getCptStyle(elm, null);</span>
&nbsp;
//https://bugzilla.mozilla.org/show_bug.cgi?id=548397 can be null sometimes if iframe with display: none (firefox only!)
<span class="cstat-no" title="statement not covered" > return cptStyle != null ? cptStyle.getPropertyValue(styles) : elm.style[styles];</span>
}
else {
<span class="cstat-no" title="statement not covered" > setCSSVal(elm, styles, val);</span>
}
}
else {
<span class="cstat-no" title="statement not covered" > for (const key in styles)</span>
<span class="cstat-no" title="statement not covered" > setCSSVal(elm, key, styles[key]);</span>
}
}
&nbsp;
export const hide: (elm: HTMLElement) =&gt; void = <span class="fstat-no" title="function not covered" >(e</span>lm) =&gt; {
<span class="cstat-no" title="statement not covered" > elm.style.display = 'none';</span>
}
&nbsp;
export const show: (elm: HTMLElement) =&gt; void = <span class="fstat-no" title="function not covered" >(e</span>lm) =&gt; {
<span class="cstat-no" title="statement not covered" > elm.style.display = 'block';</span>
}
&nbsp;
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,233 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/dom/traversal.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/dom</a> traversal.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>30/30</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>25/25</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>9/9</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>29/29</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">18x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">19x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">31x</span>
<span class="cline-any cline-yes">22x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">20x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">18x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">21x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">38x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">14x</span></td><td class="text"><pre class="prettyprint lang-js">import { each } from 'core/utils/arrays';
&nbsp;
const elementIsVisible: (elm: HTMLElement) =&gt; boolean = (elm) =&gt; {
return !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);
}
&nbsp;
export const find: (selector: string, elm?: Element | null) =&gt; ReadonlyArray&lt;Element&gt; = (selector, elm?) =&gt; {
const arr: Array&lt;Element&gt; = [];
&nbsp;
each((elm || document).querySelectorAll(selector), (e: Element) =&gt; {
arr.push(e);
});
&nbsp;
return arr;
}
&nbsp;
export const findFirst: (selector: string, elm?: Element | null) =&gt; Element | null = (selector, elm?) =&gt; {
return (elm || document).querySelector(selector);
}
&nbsp;
export const is: (elm: Element | null, selector: string) =&gt; boolean = (elm, selector) =&gt; {
if (elm) {
if (selector === ':visible')
return elementIsVisible(elm as HTMLElement);
if (selector === ':hidden')
return !elementIsVisible(elm as HTMLElement);
if (elm.matches(selector))
return true;
}
return false;
}
&nbsp;
export const children: (elm: Element | null, selector?: string) =&gt; ReadonlyArray&lt;Element&gt; = (elm, selector?) =&gt; {
const children: Array&lt;Element&gt; = [];
&nbsp;
each(elm &amp;&amp; elm.children, (child: Element) =&gt; {
if (selector) {
if (child.matches(selector))
children.push(child);
}
else
children.push(child);
});
&nbsp;
return children;
}
&nbsp;
export const contents: (elm: Element | null) =&gt; ReadonlyArray&lt;ChildNode&gt; = (elm) =&gt; {
return elm ? Array.from&lt;ChildNode&gt;(elm.childNodes) : [];
}
&nbsp;
export const parent: (elm: Node | null) =&gt; Node | null = (elm) =&gt; elm ? elm.parentElement : null;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,141 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/options</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> src/core/options</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>55/55</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>39/39</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>10/10</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>53/53</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file empty" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
<td data-value="0" class="pic empty">
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
</tr>
<tr>
<td class="file high" data-value="transformation.ts"><a href="transformation.ts.html">transformation.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="3" class="abs high">3/3</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
</tr>
<tr>
<td class="file high" data-value="validation.ts"><a href="validation.ts.html">validation.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="49" class="abs high">49/49</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="36" class="abs high">36/36</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="8" class="abs high">8/8</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="47" class="abs high">47/47</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,83 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/options/index.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/options</a> index.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Statements</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Lines</span>
<span class='fraction'>0/0</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export * from 'core/options/validation';
export * from 'core/options/transformation';</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,158 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/options/transformation.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/options</a> transformation.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>6/6</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>3/3</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>6/6</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">16x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">16x</span>
<span class="cline-any cline-yes">102x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">102x</span>
<span class="cline-any cline-yes">90x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">16x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { OptionsTemplate, OptionsAndOptionsTemplate, PlainObject, OptionsTemplateTypes } from "core/typings";
import { isArray, isObject } from "core/utils/types";
import { each } from "core/utils/arrays";
&nbsp;
/**
* Transforms the given OptionsAndOptionsTemplate&lt;T&gt; object to its corresponding generic (T) Object or its corresponding Template object.
* @param optionsWithOptionsTemplate The OptionsAndOptionsTemplate&lt;T&gt; object which shall be converted.
* @param toTemplate True if the given OptionsAndOptionsTemplate&lt;T&gt; shall be converted to its corresponding Template object.
*/
export function transform&lt;T extends Required&lt;T&gt;&gt;(optionsWithOptionsTemplate: OptionsAndOptionsTemplate&lt;T&gt;): T;
export function transform&lt;T extends Required&lt;T&gt;&gt;(optionsWithOptionsTemplate: OptionsAndOptionsTemplate&lt;T&gt;, toTemplate: true | void): OptionsTemplate&lt;T&gt;;
export function transform&lt;T extends Required&lt;T&gt;&gt;(optionsWithOptionsTemplate: OptionsAndOptionsTemplate&lt;T&gt;, toTemplate?: true | void): OptionsTemplate&lt;T&gt; | T {
const result: any = {};
&nbsp;
each(Object.keys(optionsWithOptionsTemplate), (key: Extract&lt;keyof T, string&gt;) =&gt; {
const val: PlainObject | OptionsTemplateTypes | Array&lt;OptionsTemplateTypes&gt; = optionsWithOptionsTemplate[key];
&nbsp;
/* istanbul ignore else */
if (isArray(val))
result[key] = val[toTemplate ? 1 : 0];
else if (isObject(val))
result[key] = transform(val as OptionsAndOptionsTemplate&lt;typeof val&gt;, toTemplate);
});
&nbsp;
return result;
};
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,572 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/options/validation.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/options</a> validation.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>49/49</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>36/36</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>8/8</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>47/47</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a>
<a name='L55'></a><a href='#L55'>55</a>
<a name='L56'></a><a href='#L56'>56</a>
<a name='L57'></a><a href='#L57'>57</a>
<a name='L58'></a><a href='#L58'>58</a>
<a name='L59'></a><a href='#L59'>59</a>
<a name='L60'></a><a href='#L60'>60</a>
<a name='L61'></a><a href='#L61'>61</a>
<a name='L62'></a><a href='#L62'>62</a>
<a name='L63'></a><a href='#L63'>63</a>
<a name='L64'></a><a href='#L64'>64</a>
<a name='L65'></a><a href='#L65'>65</a>
<a name='L66'></a><a href='#L66'>66</a>
<a name='L67'></a><a href='#L67'>67</a>
<a name='L68'></a><a href='#L68'>68</a>
<a name='L69'></a><a href='#L69'>69</a>
<a name='L70'></a><a href='#L70'>70</a>
<a name='L71'></a><a href='#L71'>71</a>
<a name='L72'></a><a href='#L72'>72</a>
<a name='L73'></a><a href='#L73'>73</a>
<a name='L74'></a><a href='#L74'>74</a>
<a name='L75'></a><a href='#L75'>75</a>
<a name='L76'></a><a href='#L76'>76</a>
<a name='L77'></a><a href='#L77'>77</a>
<a name='L78'></a><a href='#L78'>78</a>
<a name='L79'></a><a href='#L79'>79</a>
<a name='L80'></a><a href='#L80'>80</a>
<a name='L81'></a><a href='#L81'>81</a>
<a name='L82'></a><a href='#L82'>82</a>
<a name='L83'></a><a href='#L83'>83</a>
<a name='L84'></a><a href='#L84'>84</a>
<a name='L85'></a><a href='#L85'>85</a>
<a name='L86'></a><a href='#L86'>86</a>
<a name='L87'></a><a href='#L87'>87</a>
<a name='L88'></a><a href='#L88'>88</a>
<a name='L89'></a><a href='#L89'>89</a>
<a name='L90'></a><a href='#L90'>90</a>
<a name='L91'></a><a href='#L91'>91</a>
<a name='L92'></a><a href='#L92'>92</a>
<a name='L93'></a><a href='#L93'>93</a>
<a name='L94'></a><a href='#L94'>94</a>
<a name='L95'></a><a href='#L95'>95</a>
<a name='L96'></a><a href='#L96'>96</a>
<a name='L97'></a><a href='#L97'>97</a>
<a name='L98'></a><a href='#L98'>98</a>
<a name='L99'></a><a href='#L99'>99</a>
<a name='L100'></a><a href='#L100'>100</a>
<a name='L101'></a><a href='#L101'>101</a>
<a name='L102'></a><a href='#L102'>102</a>
<a name='L103'></a><a href='#L103'>103</a>
<a name='L104'></a><a href='#L104'>104</a>
<a name='L105'></a><a href='#L105'>105</a>
<a name='L106'></a><a href='#L106'>106</a>
<a name='L107'></a><a href='#L107'>107</a>
<a name='L108'></a><a href='#L108'>108</a>
<a name='L109'></a><a href='#L109'>109</a>
<a name='L110'></a><a href='#L110'>110</a>
<a name='L111'></a><a href='#L111'>111</a>
<a name='L112'></a><a href='#L112'>112</a>
<a name='L113'></a><a href='#L113'>113</a>
<a name='L114'></a><a href='#L114'>114</a>
<a name='L115'></a><a href='#L115'>115</a>
<a name='L116'></a><a href='#L116'>116</a>
<a name='L117'></a><a href='#L117'>117</a>
<a name='L118'></a><a href='#L118'>118</a>
<a name='L119'></a><a href='#L119'>119</a>
<a name='L120'></a><a href='#L120'>120</a>
<a name='L121'></a><a href='#L121'>121</a>
<a name='L122'></a><a href='#L122'>122</a>
<a name='L123'></a><a href='#L123'>123</a>
<a name='L124'></a><a href='#L124'>124</a>
<a name='L125'></a><a href='#L125'>125</a>
<a name='L126'></a><a href='#L126'>126</a>
<a name='L127'></a><a href='#L127'>127</a>
<a name='L128'></a><a href='#L128'>128</a>
<a name='L129'></a><a href='#L129'>129</a>
<a name='L130'></a><a href='#L130'>130</a>
<a name='L131'></a><a href='#L131'>131</a>
<a name='L132'></a><a href='#L132'>132</a>
<a name='L133'></a><a href='#L133'>133</a>
<a name='L134'></a><a href='#L134'>134</a>
<a name='L135'></a><a href='#L135'>135</a>
<a name='L136'></a><a href='#L136'>136</a>
<a name='L137'></a><a href='#L137'>137</a>
<a name='L138'></a><a href='#L138'>138</a>
<a name='L139'></a><a href='#L139'>139</a>
<a name='L140'></a><a href='#L140'>140</a>
<a name='L141'></a><a href='#L141'>141</a>
<a name='L142'></a><a href='#L142'>142</a>
<a name='L143'></a><a href='#L143'>143</a>
<a name='L144'></a><a href='#L144'>144</a>
<a name='L145'></a><a href='#L145'>145</a>
<a name='L146'></a><a href='#L146'>146</a>
<a name='L147'></a><a href='#L147'>147</a>
<a name='L148'></a><a href='#L148'>148</a>
<a name='L149'></a><a href='#L149'>149</a>
<a name='L150'></a><a href='#L150'>150</a>
<a name='L151'></a><a href='#L151'>151</a>
<a name='L152'></a><a href='#L152'>152</a>
<a name='L153'></a><a href='#L153'>153</a>
<a name='L154'></a><a href='#L154'>154</a>
<a name='L155'></a><a href='#L155'>155</a>
<a name='L156'></a><a href='#L156'>156</a>
<a name='L157'></a><a href='#L157'>157</a>
<a name='L158'></a><a href='#L158'>158</a>
<a name='L159'></a><a href='#L159'>159</a>
<a name='L160'></a><a href='#L160'>160</a>
<a name='L161'></a><a href='#L161'>161</a>
<a name='L162'></a><a href='#L162'>162</a>
<a name='L163'></a><a href='#L163'>163</a>
<a name='L164'></a><a href='#L164'>164</a>
<a name='L165'></a><a href='#L165'>165</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">21x</span>
<span class="cline-any cline-yes">21x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">65x</span>
<span class="cline-any cline-yes">65x</span>
<span class="cline-any cline-yes">372x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">65x</span>
<span class="cline-any cline-yes">372x</span>
<span class="cline-any cline-yes">372x</span>
<span class="cline-any cline-yes">372x</span>
<span class="cline-any cline-yes">372x</span>
<span class="cline-any cline-yes">372x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">372x</span>
<span class="cline-any cline-yes">33x</span>
<span class="cline-any cline-yes">33x</span>
<span class="cline-any cline-yes">33x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">33x</span>
<span class="cline-any cline-yes">66x</span>
<span class="cline-any cline-yes">33x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">339x</span>
<span class="cline-any cline-yes">336x</span>
<span class="cline-any cline-yes">336x</span>
<span class="cline-any cline-yes">336x</span>
<span class="cline-any cline-yes">336x</span>
<span class="cline-any cline-yes">336x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">336x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">417x</span>
<span class="cline-any cline-yes">417x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">64x</span>
<span class="cline-any cline-yes">121x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">64x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">353x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">417x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">417x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">336x</span>
<span class="cline-any cline-yes">310x</span>
<span class="cline-any cline-yes">310x</span>
<span class="cline-any cline-yes">256x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">26x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">336x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">65x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">32x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { each, indexOf } from 'core/utils/arrays';
import { type, isArray, isUndefined, isEmptyObject, isPlainObject, isString } from 'core/utils/types';
import { PlainObject, OptionsTemplate, OptionsTemplateTypes, OptionsTemplateType, OptionsValidated, Func, OptionsValidatedResult } from 'core/typings';
&nbsp;
const stringify = JSON.stringify;
&nbsp;
/**
* 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
* value = template type string
*/
const optionsTemplateTypes: OptionsTemplateTypesDictionary = [
'boolean',
'number',
'string',
'array',
'object',
'function',
'null'
].reduce((result, item) =&gt; {
result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];
return result;
}, {} as OptionsTemplateTypesDictionary);
&nbsp;
/**
* Validates the given options object according to the given template object and returns a object which looks like:
* {
* foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)
* validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)
* }
* @param options The options object which shall be validated.
* @param template The template according to which the options object shall be validated.
* @param optionsDiff When provided the returned validated object will only have properties which are different to this objects properties.
* Example (assume all properties are valid to the template):
* Options object : { a: 'a', b: 'b', c: 'c' }
* optionsDiff object : { a: 'a', b: 'b', c: undefined }
* Returned validated object : { c: 'c' }
* Because the value of the properties a and b didn't change, they aren't included in the returned object.
* 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.
* @param propPath The propertyPath which lead to this object. (used for error logging)
*/
const validateRecursive = function &lt;T extends PlainObject&gt;(options: T, template: OptionsTemplate&lt;Required&lt;T&gt;&gt;, optionsDiff: OptionsValidated&lt;T&gt;, doWriteErrors?: boolean, propPath?: string): OptionsValidatedResult&lt;T&gt; {
const validatedOptions: OptionsValidated&lt;T&gt; = {};
const optionsCopy: T = Object.assign({}, options);
const props = Object.keys(template).filter(prop =&gt; options.hasOwnProperty(prop));
&nbsp;
each(props, (prop: Extract&lt;keyof T, string&gt;) =&gt; {
const optionsDiffValue: any = isUndefined(optionsDiff[prop]) ? {} : optionsDiff[prop];
const optionsValue: any = options[prop];
const templateValue: PlainObject | string | OptionsTemplateTypes | Array&lt;OptionsTemplateTypes&gt; = template[prop];
const templateIsComplex = isPlainObject(templateValue);
const propPrefix = propPath ? propPath + '.' : '';
&nbsp;
//if the template has a object as value, it means that the options are complex (verschachtelt)
if (templateIsComplex &amp;&amp; isPlainObject(optionsValue)) {
const validatedResult = validateRecursive(optionsValue, templateValue as PlainObject, optionsDiffValue, doWriteErrors, propPrefix + prop);
validatedOptions[prop] = validatedResult.validated;
optionsCopy[prop] = validatedResult.foreign as any;
&nbsp;
each([optionsCopy, validatedOptions], (value) =&gt; {
if (isEmptyObject(value[prop])) {
delete value[prop];
}
});
}
else if (!templateIsComplex) {
let isValid = false;
const errorEnumStrings: Array&lt;string&gt; = [];
const errorPossibleTypes: Array&lt;string&gt; = [];
const optionsValueType = type(optionsValue);
const templateValueArr: Array&lt;string | OptionsTemplateTypes&gt; = !isArray(templateValue) ? [templateValue as string | OptionsTemplateTypes] : templateValue as Array&lt;OptionsTemplateTypes&gt;;
&nbsp;
each(templateValueArr, (currTemplateType) =&gt; {
//if currType value isn't inside possibleTemplateTypes we assume its a enum string value
const isEnumString = indexOf(Object.values(optionsTemplateTypes), currTemplateType) &lt; 0;
if (isEnumString &amp;&amp; isString(optionsValue)) {
//split it into a array which contains all possible values for example: ["yes", "no", "maybe"]
const enumStringSplit = currTemplateType.split(' ');
isValid = !!enumStringSplit.find(possibility =&gt; possibility === optionsValue);
&nbsp;
// build error message
errorEnumStrings.push(...enumStringSplit);
}
else {
isValid = optionsTemplateTypes[optionsValueType] === currTemplateType;
}
&nbsp;
// build error message
errorPossibleTypes.push(isEnumString ? optionsTemplateTypes.string : currTemplateType);
&nbsp;
// continue if invalid, break if valid
return !isValid;
});
&nbsp;
&nbsp;
if (isValid) {
const doStringifyComparison = isArray(optionsValue) || isPlainObject(optionsValue);
if (doStringifyComparison ? stringify(optionsValue) !== stringify(optionsDiffValue) : optionsValue !== optionsDiffValue) {
validatedOptions[prop] = optionsValue;
}
}
else if (doWriteErrors) {
console.warn(`The option "${propPrefix}${prop}" wasn't set, because it doesn't accept the type [ ${optionsValueType.toUpperCase()} ] with the value of "${optionsValue}".\r\n` +
`Accepted types are: [ ${errorPossibleTypes.join(', ').toUpperCase()} ].\r\n` +
(errorEnumStrings.length &gt; 0 ? `\r\nValid strings are: [ ${errorEnumStrings.join(', ')} ].` : ''))
}
&nbsp;
delete optionsCopy[prop];
}
});
&nbsp;
return {
foreign: optionsCopy,
validated: validatedOptions
};
};
&nbsp;
/**
* Validates the given options object according to the given template object and returns a object which looks like:
* {
* foreign : a object which consists of properties which aren't defined inside the template. (foreign properties)
* validated : a object which consists only of valid properties. (property name is inside the template and value has a correct type)
* }
* @param options The options object which shall be validated.
* @param template The template according to which the options object shall be validated.
* @param optionsDiff When provided the returned validated object will only have properties which are different to this objects properties.
* Example (assume all properties are valid to the template):
* Options object : { a: 'a', b: 'b', c: 'c' }
* optionsDiff object : { a: 'a', b: 'b', c: undefined }
* Returned validated object : { c: 'c' }
* Because the value of the properties a and b didn't change, they aren't included in the returned object.
* 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.
*/
const validate = function &lt;T extends PlainObject&gt;(options: T, template: OptionsTemplate&lt;Required&lt;T&gt;&gt;, optionsDiff?: OptionsValidated&lt;T&gt;, doWriteErrors?: boolean): OptionsValidatedResult&lt;T&gt; {
/*
if (!isEmptyObject(foreign) &amp;&amp; doWriteErrors)
console.warn(`The following options are discarded due to invalidity:\r\n ${window.JSON.stringify(foreign, null, 2)}`);
&nbsp;
//add values, which aren't specified in the template, to the finished validated object to prevent them from being discarded
if (keepForeignProps) {
Object.assign(result.validated, foreign);
}
*/
return validateRecursive(options, template, optionsDiff || {}, doWriteErrors || false);
};
&nbsp;
export { validate, optionsTemplateTypes };
&nbsp;
type OptionsTemplateTypesDictionary = {
readonly boolean: OptionsTemplateType&lt;boolean&gt;;
readonly number: OptionsTemplateType&lt;number&gt;;
readonly string: OptionsTemplateType&lt;string&gt;;
readonly array: OptionsTemplateType&lt;Array&lt;any&gt;&gt;;
readonly object: OptionsTemplateType&lt;object&gt;;
readonly function: OptionsTemplateType&lt;Func&gt;;
readonly null: OptionsTemplateType&lt;null&gt;;
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,209 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/utils/arrays.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/utils</a> arrays.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>12/12</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>8/8</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>12/12</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">694x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">694x</span>
<span class="cline-any cline-yes">688x</span>
<span class="cline-any cline-yes">2211x</span>
<span class="cline-any cline-yes">320x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">5x</span>
<span class="cline-any cline-yes">13x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">694x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-yes">418x</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { isArrayLike } from 'core/utils/types';
import { PlainObject } from 'core/typings';
&nbsp;
&nbsp;
/**
* Iterates through a array or object
* @param arrayLikeOrObject The array or object through which shall be iterated.
* @param callback The function which is responsible for the iteration.
* If the function returns true its treated like a "continue" statement.
* If the function returns false its treated like a "break" statement.
*/
export function each&lt;T&gt;(array: Array&lt;T&gt; | ReadonlyArray&lt;T&gt;, callback: (value: T, indexOrKey: number, source: Array&lt;T&gt;) =&gt; boolean | void): Array&lt;T&gt; | ReadonlyArray&lt;T&gt;;
export function each&lt;T&gt;(array: Array&lt;T&gt; | ReadonlyArray&lt;T&gt; | null, callback: (value: T, indexOrKey: number, source: Array&lt;T&gt;) =&gt; boolean | void): Array&lt;T&gt; | ReadonlyArray&lt;T&gt; | null;
export function each&lt;T&gt;(arrayLikeObject: ArrayLike&lt;T&gt;, callback: (value: T, indexOrKey: number, source: ArrayLike&lt;T&gt;) =&gt; boolean | void): ArrayLike&lt;T&gt;;
export function each&lt;T&gt;(arrayLikeObject: ArrayLike&lt;T&gt; | null, callback: (value: T, indexOrKey: number, source: ArrayLike&lt;T&gt;) =&gt; boolean | void): ArrayLike&lt;T&gt; | null;
export function each(obj: PlainObject, callback: (value: any, indexOrKey: string, source: PlainObject) =&gt; boolean | void): PlainObject;
export function each(obj: PlainObject | null, callback: (value: any, indexOrKey: string, source: PlainObject) =&gt; boolean | void): PlainObject | null;
export function each&lt;T&gt;(source: ArrayLike&lt;T&gt; | PlainObject | null, callback: (value: T | any, indexOrKey: any, source: any) =&gt; boolean | void): Array&lt;T&gt; | ReadonlyArray&lt;T&gt; | ArrayLike&lt;T&gt; | PlainObject | null {
let i: number | string = 0;
&nbsp;
if (isArrayLike(source)) {
for (; i &lt; source.length; i++) {
if (callback(source[i], i, source) === false)
break;
}
}
else if (source) {
for (i in source) {
if (callback(source[i], i, source) === false)
break;
}
}
return source;
};
&nbsp;
/**
* Returns the index of the given inside the given array or -1 if the given item isn't part of the given array.
* @param arr The array.
* @param item The item.
* @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.
*/
export const indexOf: &lt;T = any&gt;(arr: Array&lt;T&gt;, item: T, fromIndex?: number) =&gt; number = (arr, item, fromIndex) =&gt; {
return arr.indexOf(item, fromIndex);
}</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,254 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/utils/extend.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/utils</a> extend.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>21/21</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>26/26</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>2/2</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>21/21</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a>
<a name='L55'></a><a href='#L55'>55</a>
<a name='L56'></a><a href='#L56'>56</a>
<a name='L57'></a><a href='#L57'>57</a>
<a name='L58'></a><a href='#L58'>58</a>
<a name='L59'></a><a href='#L59'>59</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">180x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">180x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">180x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1080x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">217x</span>
<span class="cline-any cline-yes">632x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">632x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">631x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">631x</span>
<span class="cline-any cline-yes">126x</span>
<span class="cline-any cline-yes">126x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">126x</span>
<span class="cline-any cline-yes">33x</span>
<span class="cline-any cline-yes">93x</span>
<span class="cline-any cline-yes">76x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">126x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">505x</span>
<span class="cline-any cline-yes">504x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">180x</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { isArray, isFunction, isPlainObject, isNull } from 'core/utils/types';
import { each } from 'core/utils/arrays';
&nbsp;
// https://github.com/jquery/jquery/blob/master/src/core.js#L116
export function extend&lt;T, U&gt;(target: T, object1: U): T &amp; U;
export function extend&lt;T, U, V&gt;(target: T, object1: U, object2: V): T &amp; U &amp; V;
export function extend&lt;T, U, V, W&gt;(target: T, object1: U, object2: V, object3: W): T &amp; U &amp; V &amp; W;
export function extend&lt;T, U, V, W, X&gt;(target: T, object1: U, object2: V, object3: W, object4: X): T &amp; U &amp; V &amp; W &amp; X;
export function extend&lt;T, U, V, W, X, Y&gt;(target: T, object1: U, object2: V, object3: W, object4: X, object5: Y): T &amp; U &amp; V &amp; W &amp; X &amp; Y;
export function extend&lt;T, U, V, W, X, Y, Z&gt;(target: T, object1?: U, object2?: V, object3?: W, object4?: X, object5?: Y, object6?: Z): T &amp; U &amp; V &amp; W &amp; X &amp; Y &amp; Z {
const sources: Array&lt;any&gt; = [object1, object2, object3, object4, object5, object6];
&nbsp;
// Handle case when target is a string or something (possible in deep copy)
if ((typeof target !== "object" || isNull(target)) &amp;&amp; !isFunction(target)) {
target = {} as T;
}
&nbsp;
each(sources, (source) =&gt; {
// Only deal with non-null/undefined values
if (source != null) {
&nbsp;
// Extend the base object
for (const name in source) {
const copy: any = source[name];
&nbsp;
// Prevent Object.prototype pollution
// Prevent never-ending loop
if (name === "__proto__" || target === copy) {
continue;
}
&nbsp;
const copyIsArray = isArray(copy);
&nbsp;
// Recurse if we're merging plain objects or arrays
if (copy &amp;&amp; (isPlainObject(copy) || copyIsArray)) {
const src = target[name];
let clone: any = src;
&nbsp;
// Ensure proper type for the source value
if (copyIsArray &amp;&amp; !isArray(src)) {
clone = [];
} else if (!copyIsArray &amp;&amp; !isPlainObject(src)) {
clone = {};
}
&nbsp;
// Never move original objects, clone them
target[name] = extend(clone, copy) as any;
&nbsp;
// Don't bring in undefined values
} else if (copy !== undefined) {
target[name] = copy;
}
}
}
});
&nbsp;
// Return the modified object
return target as any;
}</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,156 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/utils</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> src/core/utils</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>65/65</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>71/71</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>17/17</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>65/65</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="arrays.ts"><a href="arrays.ts.html">arrays.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="12" class="abs high">12/12</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="8" class="abs high">8/8</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="12" class="abs high">12/12</td>
</tr>
<tr>
<td class="file high" data-value="extend.ts"><a href="extend.ts.html">extend.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="21" class="abs high">21/21</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="26" class="abs high">26/26</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="21" class="abs high">21/21</td>
</tr>
<tr>
<td class="file empty" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
<td data-value="0" class="pic empty">
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
<td data-value="0" class="pct empty">0%</td>
<td data-value="0" class="abs empty">0/0</td>
</tr>
<tr>
<td class="file high" data-value="types.ts"><a href="types.ts.html">types.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="32" class="abs high">32/32</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="37" class="abs high">37/37</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="13" class="abs high">13/13</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="32" class="abs high">32/32</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,86 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/utils/index.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/utils</a> index.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Statements</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">0% </span>
<span class="quiet">Lines</span>
<span class='fraction'>0/0</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line low'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export * from 'core/utils/arrays';
export * from 'core/utils/extend';
export * from 'core/utils/types';</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
@@ -0,0 +1,365 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/core/utils/types.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../../prettify.css" />
<link rel="stylesheet" href="../../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../../../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/core/utils</a> types.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>32/32</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>37/37</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>13/13</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>32/32</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a>
<a name='L55'></a><a href='#L55'>55</a>
<a name='L56'></a><a href='#L56'>56</a>
<a name='L57'></a><a href='#L57'>57</a>
<a name='L58'></a><a href='#L58'>58</a>
<a name='L59'></a><a href='#L59'>59</a>
<a name='L60'></a><a href='#L60'>60</a>
<a name='L61'></a><a href='#L61'>61</a>
<a name='L62'></a><a href='#L62'>62</a>
<a name='L63'></a><a href='#L63'>63</a>
<a name='L64'></a><a href='#L64'>64</a>
<a name='L65'></a><a href='#L65'>65</a>
<a name='L66'></a><a href='#L66'>66</a>
<a name='L67'></a><a href='#L67'>67</a>
<a name='L68'></a><a href='#L68'>68</a>
<a name='L69'></a><a href='#L69'>69</a>
<a name='L70'></a><a href='#L70'>70</a>
<a name='L71'></a><a href='#L71'>71</a>
<a name='L72'></a><a href='#L72'>72</a>
<a name='L73'></a><a href='#L73'>73</a>
<a name='L74'></a><a href='#L74'>74</a>
<a name='L75'></a><a href='#L75'>75</a>
<a name='L76'></a><a href='#L76'>76</a>
<a name='L77'></a><a href='#L77'>77</a>
<a name='L78'></a><a href='#L78'>78</a>
<a name='L79'></a><a href='#L79'>79</a>
<a name='L80'></a><a href='#L80'>80</a>
<a name='L81'></a><a href='#L81'>81</a>
<a name='L82'></a><a href='#L82'>82</a>
<a name='L83'></a><a href='#L83'>83</a>
<a name='L84'></a><a href='#L84'>84</a>
<a name='L85'></a><a href='#L85'>85</a>
<a name='L86'></a><a href='#L86'>86</a>
<a name='L87'></a><a href='#L87'>87</a>
<a name='L88'></a><a href='#L88'>88</a>
<a name='L89'></a><a href='#L89'>89</a>
<a name='L90'></a><a href='#L90'>90</a>
<a name='L91'></a><a href='#L91'>91</a>
<a name='L92'></a><a href='#L92'>92</a>
<a name='L93'></a><a href='#L93'>93</a>
<a name='L94'></a><a href='#L94'>94</a>
<a name='L95'></a><a href='#L95'>95</a>
<a name='L96'></a><a href='#L96'>96</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">11x</span>
<span class="cline-any cline-yes">576x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">575x</span>
<span class="cline-any cline-yes">48x</span>
<span class="cline-any cline-yes">527x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">97x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">114x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">28x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1605x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">464x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">611x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">500x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2666x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">761x</span>
<span class="cline-any cline-yes">761x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1337x</span>
<span class="cline-any cline-yes">1123x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">214x</span>
<span class="cline-any cline-yes">214x</span>
<span class="cline-any cline-yes">214x</span>
<span class="cline-any cline-yes">214x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">214x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">211x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">211x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">358x</span>
<span class="cline-any cline-yes">358x</span>
<span class="cline-any cline-yes">358x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">105x</span>
<span class="cline-any cline-yes">42x</span>
<span class="cline-any cline-yes">63x</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { PlainObject } from 'core/typings';
&nbsp;
export const type: (obj: any) =&gt; string = (obj) =&gt; {
if (obj === undefined)
return obj + '';
if (obj === null)
return obj + '';
return Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase();
}
&nbsp;
export function isNumber(obj: any): obj is number {
return typeof obj === 'number';
};
&nbsp;
export function isString(obj: any): obj is string {
return typeof obj === 'string';
}
&nbsp;
export function isBoolean(obj: any): obj is boolean {
return typeof obj === 'boolean';
}
&nbsp;
export function isObject(obj: any): boolean {
return typeof obj === 'object' &amp;&amp; !isArray(obj) &amp;&amp; !isNull(obj);
}
&nbsp;
export function isFunction(obj: any): obj is Function {
return typeof obj === 'function';
}
&nbsp;
export function isUndefined(obj: any): obj is undefined {
return obj === undefined;
}
&nbsp;
export function isNull(obj: any): obj is null {
return obj === null;
}
&nbsp;
export function isArray(obj: any): obj is Array&lt;any&gt; {
return Array.isArray(obj);
}
&nbsp;
&nbsp;
/**
* Returns true if the given object is array like, false otherwise.
* @param obj The Object
*/
export function isArrayLike&lt;T extends PlainObject = any&gt;(obj: any): obj is ArrayLike&lt;T&gt; {
const length = !!obj &amp;&amp; obj.length;
return isArray(obj) || (!isFunction(obj) &amp;&amp; isNumber(length) &amp;&amp; length &gt; -1 &amp;&amp; length % 1 == 0);
}
&nbsp;
/**
* Returns true if the given object is a "plain" (e.g. { key: value }) object, false otherwise.
* @param obj The Object.
*/
export function isPlainObject&lt;T = any&gt;(obj: any): obj is PlainObject&lt;T&gt; {
if (!obj || !isObject(obj) || type(obj) !== 'object')
return false;
&nbsp;
let key;
const proto = 'prototype';
const hasOwnProperty = Object[proto].hasOwnProperty;
const hasOwnConstructor = hasOwnProperty.call(obj, 'constructor');
const hasIsPrototypeOf = obj.constructor &amp;&amp; obj.constructor[proto] &amp;&amp; hasOwnProperty.call(obj.constructor[proto], 'isPrototypeOf');
&nbsp;
if (obj.constructor &amp;&amp; !hasOwnConstructor &amp;&amp; !hasIsPrototypeOf) {
return false;
}
&nbsp;
for (key in obj) { /**/ }
&nbsp;
return isUndefined(key) || hasOwnProperty.call(obj, key);
};
&nbsp;
/**
* Checks whether the given object is a HTMLElement.
* @param obj The object which shall be checked.
*/
export function isHTMLElement(obj: any): obj is HTMLElement {
const instaceOfRightHandSide = window.HTMLElement;
const doInstanceOf = isObject(instaceOfRightHandSide) || isFunction(instaceOfRightHandSide);
return !!(
doInstanceOf ? obj instanceof instaceOfRightHandSide : (obj &amp;&amp; isObject(obj) &amp;&amp; obj.nodeType === 1 &amp;&amp; isString(obj.nodeName))
);
}
&nbsp;
/**
* Returns true if the given object is empty, false otherwise.
* @param obj The Object.
*/
export function isEmptyObject(obj: any): boolean {
for (let name in obj)
return false;
return true;
};</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../../../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../../../sorter.js"></script>
<script src="../../../block-navigation.js"></script>
</body>
</html>
+126
View File
@@ -0,0 +1,126 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> src</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>33/33</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>1/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>6/6</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>33/33</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="instances.ts"><a href="instances.ts.html">instances.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="19" class="abs high">19/19</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="19" class="abs high">19/19</td>
</tr>
<tr>
<td class="file high" data-value="options.ts"><a href="options.ts.html">options.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="14" class="abs high">14/14</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="14" class="abs high">14/14</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>
+233
View File
@@ -0,0 +1,233 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/instances.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> / <a href="index.html">src</a> instances.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>19/19</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>1/1</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>6/6</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>19/19</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const targets: Set&lt;Element&gt; = new Set();
const targetInstanceMap: WeakMap&lt;Element, any&gt; = new WeakMap();
&nbsp;
/**
* Adds the given OverlayScrollbars instance to the given element.
* @param target The element which is the target of the OverlayScrollbars instance.
* @param osInstance The OverlayScrollbars instance.
*/
export const addInstance: (target: Element, osInstance: any) =&gt; void = (target, osInstance) =&gt; {
targetInstanceMap.set(target, osInstance);
targets.add(target);
}
&nbsp;
/**
* Removes a OverlayScrollbars instance from the given element.
* @param target The element from which its OverlayScrollbars instance shall be removed.
*/
export const removeInstance: (target: Element) =&gt; void = (target) =&gt; {
targetInstanceMap.delete(target);
targets.delete(target);
}
&nbsp;
/**
* Gets the OverlayScrollbars from the given element or undefined if it doesn't have one.
* @param target The element of which its OverlayScrollbars instance shall be get.
*/
export const getInstance: (target: Element) =&gt; any = (target) =&gt; {
return targetInstanceMap.get(target);
}
&nbsp;
/**
* Gets a Map which represents all active OverayScrollbars instances.
* The Key is the ekement and the value is the instance.
*/
export const allInstances: () =&gt; ReadonlyMap&lt;Element, any&gt; = () =&gt; {
const validTargetInstanceMap: Map&lt;Element, any&gt; = new Map();
&nbsp;
targets.forEach((target: Element) =&gt; {
/* istanbul ignore else */
if (targetInstanceMap.has(target)) {
validTargetInstanceMap.set(target, targetInstanceMap.get(target))
}
});
&nbsp;
targets.clear();
&nbsp;
validTargetInstanceMap.forEach((instance: any, validTarget: Element) =&gt; {
targets.add(validTarget);
});
&nbsp;
return validTargetInstanceMap;
}</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>
+326
View File
@@ -0,0 +1,326 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for src/options.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> / <a href="index.html">src</a> options.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Statements</span>
<span class='fraction'>14/14</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>0/0</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>14/14</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a>
<a name='L55'></a><a href='#L55'>55</a>
<a name='L56'></a><a href='#L56'>56</a>
<a name='L57'></a><a href='#L57'>57</a>
<a name='L58'></a><a href='#L58'>58</a>
<a name='L59'></a><a href='#L59'>59</a>
<a name='L60'></a><a href='#L60'>60</a>
<a name='L61'></a><a href='#L61'>61</a>
<a name='L62'></a><a href='#L62'>62</a>
<a name='L63'></a><a href='#L63'>63</a>
<a name='L64'></a><a href='#L64'>64</a>
<a name='L65'></a><a href='#L65'>65</a>
<a name='L66'></a><a href='#L66'>66</a>
<a name='L67'></a><a href='#L67'>67</a>
<a name='L68'></a><a href='#L68'>68</a>
<a name='L69'></a><a href='#L69'>69</a>
<a name='L70'></a><a href='#L70'>70</a>
<a name='L71'></a><a href='#L71'>71</a>
<a name='L72'></a><a href='#L72'>72</a>
<a name='L73'></a><a href='#L73'>73</a>
<a name='L74'></a><a href='#L74'>74</a>
<a name='L75'></a><a href='#L75'>75</a>
<a name='L76'></a><a href='#L76'>76</a>
<a name='L77'></a><a href='#L77'>77</a>
<a name='L78'></a><a href='#L78'>78</a>
<a name='L79'></a><a href='#L79'>79</a>
<a name='L80'></a><a href='#L80'>80</a>
<a name='L81'></a><a href='#L81'>81</a>
<a name='L82'></a><a href='#L82'>82</a>
<a name='L83'></a><a href='#L83'>83</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { OptionsTemplate, OptionsTemplateValue, OptionsAndOptionsTemplateValue, OptionsAndOptionsTemplate, Func } from "core/typings";
import { optionsTemplateTypes as oTypes, transform } from "core/options";
import { OverlayScrollbars } from "typings";
&nbsp;
const classNameAllowedValues: OptionsTemplateValue&lt;string | null&gt; = [oTypes.string, oTypes.null];
const numberAllowedValues: OptionsTemplateValue&lt;number&gt; = oTypes.number;
const booleanNullAllowedValues: OptionsTemplateValue&lt;boolean | null&gt; = [oTypes.boolean, oTypes.null];
const stringArrayNullAllowedValues: OptionsTemplateValue&lt;string | Array&lt;string&gt; | null&gt; = [oTypes.string, oTypes.array, oTypes.null];
const booleanTrueTemplate: OptionsAndOptionsTemplateValue&lt;boolean&gt; = [true, oTypes.boolean];
const booleanFalseTemplate: OptionsAndOptionsTemplateValue&lt;boolean&gt; = [false, oTypes.boolean];
const callbackTemplate: OptionsAndOptionsTemplateValue&lt;Func | null&gt; = [null, [oTypes.function, oTypes.null]];
const resizeAllowedValues: OptionsTemplateValue&lt;OverlayScrollbars.ResizeBehavior&gt; = 'none both horizontal vertical';
const overflowBehaviorAllowedValues: OptionsTemplateValue&lt;OverlayScrollbars.OverflowBehavior&gt; = 'visible-hidden visible-scroll scroll hidden';
const scrollbarsVisibilityAllowedValues: OptionsTemplateValue&lt;OverlayScrollbars.VisibilityBehavior&gt; = 'visible hidden auto';
const scrollbarsAutoHideAllowedValues: OptionsTemplateValue&lt;OverlayScrollbars.AutoHideBehavior&gt; = 'never scroll leavemove';
&nbsp;
/**
* A object which serves as "default options object" and "options template object".
* I combined these two into one object so that I don't have to define two separate big objects, instead I define one big object.
*
* The property value is a tuple:
* the first value is the default value
* the second value is the template value
* Example:
* {
* a: ['default', [Type.string, Type.null]],
* b: [250, Type.number]
* }
* Property "a" has a default value of 'default' and it can be a string or null
* Property "b" has a default value of 250 and it can be number
*/
const defaultOptionsWithTemplate: OptionsAndOptionsTemplate&lt;Required&lt;OverlayScrollbars.Options&gt;&gt; = {
className: ['os-theme-dark', classNameAllowedValues], //null || string
resize: ['none', resizeAllowedValues], //none || both || horizontal || vertical || n || b || h || v
sizeAutoCapable: booleanTrueTemplate, //true || false
clipAlways: booleanTrueTemplate, //true || false
normalizeRTL: booleanTrueTemplate, //true || false
paddingAbsolute: booleanFalseTemplate, //true || false
autoUpdate: [null, booleanNullAllowedValues], //true || false || null
autoUpdateInterval: [33, numberAllowedValues], //number
updateOnLoad: [['img'], stringArrayNullAllowedValues], //string || array || null
nativeScrollbarsOverlaid: {
showNativeScrollbars: booleanFalseTemplate, //true || false
initialize: booleanFalseTemplate //true || false
},
overflowBehavior: {
x: ['scroll', overflowBehaviorAllowedValues], //visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s
y: ['scroll', overflowBehaviorAllowedValues] //visible-hidden || visible-scroll || hidden || scroll || v-h || v-s || h || s
},
scrollbars: {
visibility: ['auto', scrollbarsVisibilityAllowedValues], //visible || hidden || auto || v || h || a
autoHide: ['never', scrollbarsAutoHideAllowedValues], //never || scroll || leave || move || n || s || l || m
autoHideDelay: [800, numberAllowedValues], //number
dragScrolling: booleanTrueTemplate, //true || false
clickScrolling: booleanFalseTemplate, //true || false
touchSupport: booleanTrueTemplate, //true || false
snapHandle: booleanFalseTemplate //true || false
},
textarea: {
dynWidth: booleanFalseTemplate, //true || false
dynHeight: booleanFalseTemplate, //true || false
inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues], //string || array || null
},
callbacks: {
onInitialized: callbackTemplate, //null || function
onInitializationWithdrawn: callbackTemplate, //null || function
onDestroyed: callbackTemplate, //null || function
onScrollStart: callbackTemplate, //null || function
onScroll: callbackTemplate, //null || function
onScrollStop: callbackTemplate, //null || function
onOverflowChanged: callbackTemplate, //null || function
onOverflowAmountChanged: callbackTemplate, //null || function
onDirectionChanged: callbackTemplate, //null || function
onContentSizeChanged: callbackTemplate, //null || function
onHostSizeChanged: callbackTemplate, //null || function
onUpdated: callbackTemplate //null || function
}
}
&nbsp;
export const optionsTemplate: OptionsTemplate&lt;Required&lt;OverlayScrollbars.Options&gt;&gt; = transform(defaultOptionsWithTemplate, true);
export const defaultOptions: OverlayScrollbars.Options = transform(defaultOptionsWithTemplate);
&nbsp;
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
at Sat Jul 18 2020 20:24:37 GMT+0200 (GMT+02:00)
</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
</body>
</html>
+848
View File
@@ -0,0 +1,848 @@
TN:
SF:packages\overlayscrollbars\src\instances.ts
FN:9,(anonymous_0)
FN:18,(anonymous_1)
FN:27,(anonymous_2)
FN:35,(anonymous_3)
FN:38,(anonymous_4)
FN:47,(anonymous_5)
FNF:6
FNH:6
FNDA:3,(anonymous_0)
FNDA:4,(anonymous_1)
FNDA:1,(anonymous_2)
FNDA:2,(anonymous_3)
FNDA:1,(anonymous_4)
FNDA:1,(anonymous_5)
DA:1,1
DA:2,1
DA:9,1
DA:10,3
DA:11,3
DA:18,1
DA:19,4
DA:20,4
DA:27,1
DA:28,1
DA:35,1
DA:36,2
DA:38,2
DA:40,1
DA:41,1
DA:45,2
DA:47,2
DA:48,1
DA:51,2
LF:19
LH:19
BRDA:40,0,0,1
BRF:1
BRH:1
end_of_record
TN:
SF:packages\overlayscrollbars\src\options.ts
FNF:0
FNH:0
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:10,1
DA:11,1
DA:12,1
DA:13,1
DA:14,1
DA:15,1
DA:32,1
DA:80,1
DA:81,1
LF:14
LH:14
BRF:0
BRH:0
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\compatibility\vendors.ts
FN:4,(anonymous_0)
FN:7,(anonymous_1)
FN:23,(anonymous_2)
FN:32,(anonymous_3)
FN:40,(anonymous_4)
FN:54,(anonymous_5)
FN:66,(anonymous_6)
FN:67,(anonymous_7)
FN:86,(anonymous_8)
FN:92,(anonymous_9)
FNF:10
FNH:10
FNDA:20,(anonymous_0)
FNDA:10,(anonymous_1)
FNDA:4,(anonymous_2)
FNDA:9,(anonymous_3)
FNDA:33,(anonymous_4)
FNDA:11,(anonymous_5)
FNDA:10,(anonymous_6)
FNDA:42,(anonymous_7)
FNDA:5,(anonymous_8)
FNDA:11,(anonymous_9)
DA:4,1
DA:5,20
DA:7,1
DA:8,10
DA:13,1
DA:14,1
DA:16,1
DA:17,1
DA:23,1
DA:24,4
DA:26,4
DA:27,1
DA:29,3
DA:30,3
DA:32,3
DA:33,9
DA:34,9
DA:40,33
DA:41,9
DA:44,3
DA:45,3
DA:54,1
DA:55,11
DA:56,11
DA:58,11
DA:59,4
DA:61,7
DA:62,7
DA:63,7
DA:64,7
DA:66,7
DA:67,10
DA:68,42
DA:69,42
DA:70,42
DA:71,2
DA:72,2
DA:75,10
DA:78,7
DA:79,7
DA:86,1
DA:87,5
DA:89,5
DA:90,1
DA:92,4
DA:93,11
DA:94,11
DA:97,4
DA:98,4
LF:49
LH:49
BRDA:26,0,0,1
BRDA:26,0,1,3
BRDA:58,1,0,4
BRDA:58,1,1,7
BRDA:63,2,0,7
BRDA:63,2,1,5
BRDA:70,3,0,2
BRDA:70,3,1,40
BRDA:87,4,0,5
BRDA:87,4,1,4
BRDA:89,5,0,1
BRDA:89,5,1,4
BRDA:93,6,0,11
BRDA:93,6,1,8
BRF:14
BRH:14
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\dom\attributes.ts
FN:8,(anonymous_0)
FN:19,(anonymous_1)
FN:28,(anonymous_2)
FN:39,(anonymous_3)
FN:50,(anonymous_4)
FNF:5
FNH:5
FNDA:7,(anonymous_0)
FNDA:1,(anonymous_1)
FNDA:3,(anonymous_2)
FNDA:3,(anonymous_3)
FNDA:5,(anonymous_4)
DA:8,4
DA:9,7
DA:10,5
DA:11,2
DA:19,4
DA:20,1
DA:28,4
DA:29,3
DA:30,2
DA:31,1
DA:39,4
DA:40,3
DA:41,2
DA:42,1
DA:50,4
DA:51,5
DA:52,3
DA:53,2
LF:18
LH:18
BRDA:9,0,0,5
BRDA:9,0,1,2
BRDA:29,1,0,2
BRDA:29,1,1,1
BRDA:40,2,0,2
BRDA:40,2,1,1
BRDA:51,3,0,3
BRDA:51,3,1,2
BRF:8
BRH:8
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\dom\classes.ts
FN:10,(anonymous_0)
FN:19,(anonymous_1)
FN:35,(anonymous_2)
FN:52,(anonymous_3)
FNF:4
FNH:4
FNDA:7,(anonymous_0)
FNDA:11,(anonymous_1)
FNDA:7,(anonymous_2)
FNDA:4,(anonymous_3)
DA:3,4
DA:10,4
DA:11,7
DA:19,4
DA:21,11
DA:23,11
DA:24,9
DA:25,9
DA:26,11
DA:35,4
DA:37,7
DA:39,7
DA:40,5
DA:41,5
DA:42,6
DA:52,4
DA:53,4
DA:54,2
DA:57,2
LF:19
LH:19
BRDA:23,0,0,9
BRDA:23,0,1,2
BRDA:24,1,0,9
BRDA:24,1,1,1
BRDA:39,2,0,5
BRDA:39,2,1,2
BRDA:40,3,0,5
BRDA:40,3,1,1
BRDA:53,4,0,2
BRDA:53,4,1,2
BRF:10
BRH:10
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\dom\create.ts
FN:5,(anonymous_0)
FN:9,(anonymous_1)
FN:13,(anonymous_2)
FNF:3
FNH:3
FNDA:204,(anonymous_0)
FNDA:3,(anonymous_1)
FNDA:9,(anonymous_2)
DA:5,4
DA:6,204
DA:9,4
DA:10,3
DA:11,3
DA:13,9
LF:6
LH:6
BRF:0
BRH:0
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\dom\index.ts
FNF:0
FNH:0
LF:0
LH:0
BRF:0
BRH:0
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\dom\manipulation.ts
FN:13,(anonymous_0)
FN:24,(anonymous_1)
FN:55,(anonymous_2)
FN:62,(anonymous_3)
FN:69,(anonymous_4)
FN:76,(anonymous_5)
FN:82,(anonymous_6)
FN:84,(anonymous_7)
FNF:8
FNH:8
FNDA:24,(anonymous_0)
FNDA:24,(anonymous_1)
FNDA:6,(anonymous_2)
FNDA:6,(anonymous_3)
FNDA:6,(anonymous_4)
FNDA:6,(anonymous_5)
FNDA:23,(anonymous_6)
FNDA:9,(anonymous_7)
DA:13,4
DA:14,24
DA:15,20
DA:19,20
DA:20,16
DA:21,8
DA:24,8
DA:25,24
DA:26,3
DA:28,24
DA:32,8
DA:36,16
DA:37,12
DA:38,1
DA:40,11
DA:41,2
DA:45,16
DA:55,6
DA:62,6
DA:69,6
DA:76,6
DA:82,4
DA:83,23
DA:84,9
DA:86,21
DA:87,20
DA:88,20
DA:89,15
LF:28
LH:28
BRDA:14,0,0,20
BRDA:14,0,1,4
BRDA:19,1,0,16
BRDA:19,1,1,4
BRDA:20,2,0,8
BRDA:20,2,1,8
BRDA:25,3,0,3
BRDA:25,3,1,21
BRDA:36,4,0,12
BRDA:36,4,1,4
BRDA:37,5,0,1
BRDA:37,5,1,11
BRDA:40,6,0,2
BRDA:40,6,1,9
BRDA:62,7,0,6
BRDA:62,7,1,5
BRDA:76,8,0,6
BRDA:76,8,1,5
BRDA:83,9,0,2
BRDA:83,9,1,21
BRDA:86,10,0,20
BRDA:86,10,1,1
BRDA:88,11,0,15
BRDA:88,11,1,5
BRF:24
BRH:24
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\dom\offset.ts
FN:1,(anonymous_0)
FN:9,(anonymous_1)
FNF:2
FNH:0
FNDA:0,(anonymous_0)
FNDA:0,(anonymous_1)
DA:1,3
DA:2,0
DA:3,0
DA:9,3
DA:10,0
LF:5
LH:2
BRF:0
BRH:0
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\dom\style.ts
FN:21,(anonymous_0)
FN:29,(anonymous_1)
FN:35,style
FN:55,(anonymous_3)
FN:59,(anonymous_4)
FNF:5
FNH:0
FNDA:0,(anonymous_0)
FNDA:0,(anonymous_1)
FNDA:0,style
FNDA:0,(anonymous_3)
FNDA:0,(anonymous_4)
DA:5,3
DA:21,3
DA:22,0
DA:23,0
DA:24,0
DA:29,3
DA:30,0
DA:36,0
DA:38,0
DA:39,0
DA:40,0
DA:43,0
DA:46,0
DA:50,0
DA:51,0
DA:55,3
DA:56,0
DA:59,3
DA:60,0
LF:19
LH:5
BRDA:23,0,0,0
BRDA:23,0,1,0
BRDA:30,1,0,0
BRDA:30,1,1,0
BRDA:30,2,0,0
BRDA:30,2,1,0
BRDA:38,3,0,0
BRDA:38,3,1,0
BRDA:39,4,0,0
BRDA:39,4,1,0
BRDA:43,5,0,0
BRDA:43,5,1,0
BRF:12
BRH:0
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\dom\traversal.ts
FN:3,(anonymous_0)
FN:7,(anonymous_1)
FN:10,(anonymous_2)
FN:17,(anonymous_3)
FN:21,(anonymous_4)
FN:33,(anonymous_5)
FN:36,(anonymous_6)
FN:48,(anonymous_7)
FN:52,(anonymous_8)
FNF:9
FNH:9
FNDA:4,(anonymous_0)
FNDA:6,(anonymous_1)
FNDA:18,(anonymous_2)
FNDA:19,(anonymous_3)
FNDA:31,(anonymous_4)
FNDA:3,(anonymous_5)
FNDA:6,(anonymous_6)
FNDA:38,(anonymous_7)
FNDA:14,(anonymous_8)
DA:3,4
DA:4,4
DA:7,4
DA:8,6
DA:10,6
DA:11,18
DA:14,6
DA:17,4
DA:18,19
DA:21,4
DA:22,31
DA:23,22
DA:24,2
DA:25,20
DA:26,2
DA:27,18
DA:28,6
DA:30,21
DA:33,4
DA:34,3
DA:36,3
DA:37,6
DA:38,3
DA:39,1
DA:42,3
DA:45,3
DA:48,4
DA:49,38
DA:52,14
LF:29
LH:29
BRDA:4,0,0,4
BRDA:4,0,1,4
BRDA:4,0,2,4
BRDA:10,1,0,6
BRDA:10,1,1,5
BRDA:18,2,0,19
BRDA:18,2,1,18
BRDA:22,3,0,22
BRDA:22,3,1,9
BRDA:23,4,0,2
BRDA:23,4,1,20
BRDA:25,5,0,2
BRDA:25,5,1,18
BRDA:27,6,0,6
BRDA:27,6,1,12
BRDA:36,7,0,3
BRDA:36,7,1,2
BRDA:37,8,0,3
BRDA:37,8,1,3
BRDA:38,9,0,1
BRDA:38,9,1,2
BRDA:49,10,0,37
BRDA:49,10,1,1
BRDA:52,11,0,11
BRDA:52,11,1,3
BRF:25
BRH:25
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\options\index.ts
FNF:0
FNH:0
LF:0
LH:0
BRF:0
BRH:0
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\options\transformation.ts
FN:12,transform
FN:15,(anonymous_1)
FNF:2
FNH:2
FNDA:16,transform
FNDA:102,(anonymous_1)
DA:13,16
DA:15,16
DA:16,102
DA:19,102
DA:20,90
DA:25,16
LF:6
LH:6
BRDA:19,0,0,90
BRDA:20,1,0,45
BRDA:20,1,1,45
BRF:3
BRH:3
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\options\validation.ts
FN:24,(anonymous_0)
FN:47,(anonymous_1)
FN:50,(anonymous_2)
FN:52,(anonymous_3)
FN:65,(anonymous_4)
FN:78,(anonymous_5)
FN:84,(anonymous_6)
FN:140,(anonymous_7)
FNF:8
FNH:8
FNDA:21,(anonymous_0)
FNDA:65,(anonymous_1)
FNDA:372,(anonymous_2)
FNDA:372,(anonymous_3)
FNDA:66,(anonymous_4)
FNDA:417,(anonymous_5)
FNDA:121,(anonymous_6)
FNDA:32,(anonymous_7)
DA:5,3
DA:10,3
DA:16,3
DA:25,21
DA:26,21
DA:47,3
DA:48,65
DA:49,65
DA:50,372
DA:52,65
DA:53,372
DA:54,372
DA:55,372
DA:56,372
DA:57,372
DA:60,372
DA:61,33
DA:62,33
DA:63,33
DA:65,33
DA:66,66
DA:67,33
DA:71,339
DA:72,336
DA:73,336
DA:74,336
DA:75,336
DA:76,336
DA:78,336
DA:80,417
DA:81,417
DA:83,64
DA:84,121
DA:87,64
DA:90,353
DA:94,417
DA:97,417
DA:101,336
DA:102,310
DA:103,310
DA:104,256
DA:107,26
DA:108,2
DA:113,336
DA:117,65
DA:140,3
DA:151,32
LF:47
LH:47
BRDA:53,0,0,295
BRDA:53,0,1,77
BRDA:57,1,0,110
BRDA:57,1,1,262
BRDA:60,2,0,33
BRDA:60,2,1,339
BRDA:60,3,0,372
BRDA:60,3,1,36
BRDA:66,4,0,33
BRDA:66,4,1,33
BRDA:71,5,0,336
BRDA:71,5,1,3
BRDA:76,6,0,227
BRDA:76,6,1,109
BRDA:81,7,0,64
BRDA:81,7,1,353
BRDA:81,8,0,417
BRDA:81,8,1,64
BRDA:94,9,0,64
BRDA:94,9,1,353
BRDA:101,10,0,310
BRDA:101,10,1,26
BRDA:102,11,0,310
BRDA:102,11,1,277
BRDA:103,12,0,256
BRDA:103,12,1,54
BRDA:103,13,0,62
BRDA:103,13,1,248
BRDA:107,14,0,2
BRDA:107,14,1,24
BRDA:110,15,0,1
BRDA:110,15,1,1
BRDA:151,16,0,32
BRDA:151,16,1,20
BRDA:151,17,0,32
BRDA:151,17,1,28
BRF:36
BRH:36
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\utils\arrays.ts
FN:18,each
FN:42,(anonymous_1)
FNF:2
FNH:2
FNDA:694,each
FNDA:418,(anonymous_1)
DA:19,694
DA:21,694
DA:22,688
DA:23,2211
DA:24,320
DA:27,6
DA:28,5
DA:29,13
DA:30,1
DA:33,694
DA:42,9
DA:43,418
LF:12
LH:12
BRDA:21,0,0,688
BRDA:21,0,1,6
BRDA:23,1,0,320
BRDA:23,1,1,1891
BRDA:27,2,0,5
BRDA:27,2,1,1
BRDA:29,3,0,1
BRDA:29,3,1,12
BRF:8
BRH:8
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\utils\extend.ts
FN:10,extend
FN:18,(anonymous_1)
FNF:2
FNH:2
FNDA:180,extend
FNDA:1080,(anonymous_1)
DA:11,180
DA:14,180
DA:15,3
DA:18,180
DA:20,1080
DA:23,217
DA:24,632
DA:28,632
DA:29,1
DA:32,631
DA:35,631
DA:36,126
DA:37,126
DA:40,126
DA:41,33
DA:42,93
DA:43,76
DA:47,126
DA:50,505
DA:51,504
DA:58,180
LF:21
LH:21
BRDA:14,0,0,3
BRDA:14,0,1,177
BRDA:14,1,0,180
BRDA:14,1,1,177
BRDA:14,1,2,4
BRDA:20,2,0,217
BRDA:20,2,1,863
BRDA:28,3,0,1
BRDA:28,3,1,631
BRDA:28,4,0,632
BRDA:28,4,1,632
BRDA:35,5,0,126
BRDA:35,5,1,505
BRDA:35,6,0,631
BRDA:35,6,1,531
BRDA:35,6,2,439
BRDA:40,7,0,33
BRDA:40,7,1,93
BRDA:40,8,0,126
BRDA:40,8,1,34
BRDA:42,9,0,76
BRDA:42,9,1,17
BRDA:42,10,0,93
BRDA:42,10,1,92
BRDA:50,11,0,504
BRDA:50,11,1,1
BRF:26
BRH:26
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\utils\index.ts
FNF:0
FNH:0
LF:0
LH:0
BRF:0
BRH:0
end_of_record
TN:
SF:packages\overlayscrollbars\src\core\utils\types.ts
FN:3,(anonymous_0)
FN:11,isNumber
FN:15,isString
FN:19,isBoolean
FN:23,isObject
FN:27,isFunction
FN:31,isUndefined
FN:35,isNull
FN:39,isArray
FN:48,isArrayLike
FN:57,isPlainObject
FN:80,isHTMLElement
FN:92,isEmptyObject
FNF:13
FNH:13
FNDA:576,(anonymous_0)
FNDA:97,isNumber
FNDA:114,isString
FNDA:28,isBoolean
FNDA:1605,isObject
FNDA:464,isFunction
FNDA:611,isUndefined
FNDA:500,isNull
FNDA:2666,isArray
FNDA:761,isArrayLike
FNDA:1337,isPlainObject
FNDA:358,isHTMLElement
FNDA:105,isEmptyObject
DA:3,11
DA:4,576
DA:5,1
DA:6,575
DA:7,48
DA:8,527
DA:12,97
DA:16,114
DA:20,28
DA:24,1605
DA:28,464
DA:32,611
DA:36,500
DA:40,2666
DA:49,761
DA:50,761
DA:58,1337
DA:59,1123
DA:62,214
DA:63,214
DA:64,214
DA:65,214
DA:67,214
DA:68,3
DA:71,211
DA:73,211
DA:81,358
DA:82,358
DA:83,358
DA:93,105
DA:94,42
DA:95,63
LF:32
LH:32
BRDA:4,0,0,1
BRDA:4,0,1,575
BRDA:6,1,0,48
BRDA:6,1,1,527
BRDA:24,2,0,1605
BRDA:24,2,1,448
BRDA:24,2,2,295
BRDA:49,3,0,761
BRDA:49,3,1,754
BRDA:50,4,0,761
BRDA:50,4,1,74
BRDA:50,4,2,69
BRDA:50,4,3,19
BRDA:50,4,4,19
BRDA:58,5,0,1123
BRDA:58,5,1,214
BRDA:58,6,0,1337
BRDA:58,6,1,1181
BRDA:58,6,2,224
BRDA:65,7,0,214
BRDA:65,7,1,213
BRDA:65,7,2,213
BRDA:67,8,0,3
BRDA:67,8,1,211
BRDA:67,9,0,214
BRDA:67,9,1,213
BRDA:67,9,2,213
BRDA:73,10,0,211
BRDA:73,10,1,205
BRDA:82,11,0,358
BRDA:82,11,1,358
BRDA:84,12,0,327
BRDA:84,12,1,31
BRDA:84,13,0,31
BRDA:84,13,1,26
BRDA:84,13,2,15
BRDA:84,13,3,4
BRF:37
BRH:37
end_of_record
-694
View File
@@ -1,694 +0,0 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.OverlayScrollbars = {}));
}(this, (function (exports) { 'use strict';
const attr = (elm, attrName, value) => {
if (value === undefined)
return elm.getAttribute(attrName);
elm.setAttribute(attrName, value);
};
const removeAttr = (elm, attrName) => {
elm.removeAttribute(attrName);
};
const scrollLeft = (elm, value) => {
if (value === undefined)
return elm.scrollLeft;
elm.scrollLeft = value;
};
const scrollTop = (elm, value) => {
if (value === undefined)
return elm.scrollTop;
elm.scrollTop = value;
};
const val = (elm, value) => {
if (value === undefined)
return elm.value;
elm.value = value;
};
const rnothtmlwhite = (/[^\x20\t\r\n\f]+/g);
const hasClass = (elm, className) => {
return elm.classList.contains(className);
};
const addClass = (elm, className) => {
let clazz;
let i = 0;
if (className) {
const classes = className.match(rnothtmlwhite) || [];
while ((clazz = classes[i++]))
elm.classList.add(clazz);
}
};
const removeClass = (elm, className) => {
let clazz;
let i = 0;
if (className) {
const classes = className.match(rnothtmlwhite) || [];
while ((clazz = classes[i++]))
elm.classList.remove(clazz);
}
};
const conditionalClass = (elm, className, condition) => {
if (condition) {
addClass(elm, className);
}
else {
removeClass(elm, className);
}
};
const type = (obj) => {
if (obj === undefined)
return obj + '';
if (obj === null)
return obj + '';
return Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase();
};
function isNumber(obj) {
return typeof obj === 'number';
}
function isString(obj) {
return typeof obj === 'string';
}
function isBoolean(obj) {
return typeof obj === 'boolean';
}
function isObject(obj) {
return typeof obj === 'object' && !isArray(obj) && !isNull(obj);
}
function isFunction(obj) {
return typeof obj === 'function';
}
function isUndefined(obj) {
return obj === undefined;
}
function isNull(obj) {
return obj === null;
}
function isArray(obj) {
return Array.isArray(obj);
}
function isArrayLike(obj) {
const length = !!obj && obj.length;
return isArray(obj) || (!isFunction(obj) && isNumber(length) && length > -1 && length % 1 == 0);
}
function isPlainObject(obj) {
if (!obj || !isObject(obj) || type(obj) !== 'object')
return false;
let key;
const proto = 'prototype';
const hasOwnProperty = Object[proto].hasOwnProperty;
const hasOwnConstructor = hasOwnProperty.call(obj, 'constructor');
const hasIsPrototypeOf = obj.constructor && obj.constructor[proto] && hasOwnProperty.call(obj.constructor[proto], 'isPrototypeOf');
if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
return false;
}
for (key in obj) { }
return isUndefined(key) || hasOwnProperty.call(obj, key);
}
function isHTMLElement(obj) {
const strOwnerDocument = 'ownerDocument';
const strHTMLElement = 'HTMLElement';
const wnd = obj && obj[strOwnerDocument] ? (obj[strOwnerDocument].parentWindow || window) : window;
return !!(isObject(wnd[strHTMLElement]) ? obj instanceof wnd[strHTMLElement] :
obj && isObject(obj) && obj !== null && obj.nodeType === 1 && isString(obj.nodeName));
}
function isEmptyObject(obj) {
for (let name in obj)
return false;
return true;
}
function each(source, callback) {
let i = 0;
if (isArrayLike(source)) {
for (; i < source.length; i++) {
if (callback(source[i], i, source) === false)
break;
}
}
else if (source) {
for (i in source) {
if (callback(source[i], i, source) === false)
break;
}
}
return source;
}
const indexOf = (arr, item, fromIndex) => {
return arr.indexOf(item, fromIndex);
};
const extend = (target, ...sources) => {
if (typeof target !== "object" && !isFunction(target)) {
target = {};
}
each(sources, (source) => {
if (source != null) {
for (const name in source) {
const copy = source[name];
if (name === "__proto__" || target === copy) {
continue;
}
const copyIsArray = isArray(copy);
if (copy && (isPlainObject(copy) || copyIsArray)) {
const src = target[name];
let clone = src;
if (copyIsArray && !isArray(src)) {
clone = [];
}
else if (!copyIsArray && !isPlainObject(src)) {
clone = {};
}
target[name] = extend(clone, copy);
}
else if (copy !== undefined) {
target[name] = copy;
}
}
}
});
return target;
};
const matchesFallback = (elm, selector) => {
var nodeList = (elm.parentNode || document).querySelectorAll(selector) || [];
var i = nodeList.length;
while (i--)
if (nodeList[i] == elm)
return true;
return false;
};
const matches = (elm, selector) => {
return (elm.matches && elm.matches(selector)) || matchesFallback(elm, selector);
};
const elementIsVisible = (elm) => {
return !!(elm.offsetWidth || elm.offsetHeight || elm.getClientRects().length);
};
const find = (selector, elm) => {
const arr = [];
each((elm || document).querySelectorAll(selector), (e) => {
arr.push(e);
});
return arr;
};
const findFirst = (selector, elm) => {
return (elm || document).querySelector(selector);
};
const is = (elm, selector) => {
if (elm) {
if (selector === ':visible')
return elementIsVisible(elm);
if (selector === ':hidden')
return !elementIsVisible(elm);
if (matches(elm, selector))
return true;
}
return false;
};
const children = (elm, selector) => {
const children = [];
each(elm && elm.children, (child) => {
if (selector) {
if (matches(child, selector))
children.push(child);
}
else
children.push(child);
});
return children;
};
const contents = (elm) => {
return elm ? Array.from(elm.childNodes) : [];
};
const parent = (elm) => elm ? elm.parentElement : null;
const before = (parent, preferredAnchor, insertedElms) => {
if (insertedElms) {
let anchor = preferredAnchor;
let fragment;
if (!parent)
return;
if (isArrayLike(insertedElms)) {
fragment = document.createDocumentFragment();
each(insertedElms, (insertedElm) => {
if (insertedElm === anchor) {
anchor = insertedElm.previousSibling;
}
fragment.appendChild(insertedElm);
});
}
else {
fragment = insertedElms;
}
if (preferredAnchor) {
if (!anchor) {
anchor = parent.firstChild;
}
else if (anchor !== preferredAnchor) {
anchor = anchor.nextSibling;
}
}
parent.insertBefore(fragment, anchor);
}
};
const appendChildren = (node, children) => { before(node, null, children); };
const prependChildren = (node, children) => { before(node, node.firstChild, children); };
const insertBefore = (node, insertedNodes) => { before(parent(node), node, insertedNodes); };
const insertAfter = (node, insertedNodes) => { before(parent(node), node.nextSibling, insertedNodes); };
const removeElements = (nodes) => {
if (isArrayLike(nodes)) {
each(Array.from(nodes), (e) => removeElements(e));
}
else if (nodes) {
const parentNode = nodes.parentNode;
if (parentNode)
parentNode.removeChild(nodes);
}
};
const createDiv = () => {
return document.createElement('div');
};
const createDOM = (html) => {
const elm = createDiv();
elm.innerHTML = html.trim();
return each(contents(elm), (elm) => removeElements(elm));
};
const cssNumber = {
animationIterationCount: true,
columnCount: true,
fillOpacity: true,
flexGrow: true,
flexShrink: true,
fontWeight: true,
lineHeight: true,
opacity: true,
order: true,
orphans: true,
widows: true,
zIndex: true,
zoom: true
};
const setCSSVal = (elm, prop, val) => {
try {
if (elm.style[prop] !== undefined) {
elm.style[prop] = parseCSSVal(prop, val);
}
}
catch (e) { }
};
const parseCSSVal = (prop, val) => {
return !cssNumber[prop.toLowerCase()] && isNumber(val) ? val + 'px' : val;
};
function style(elm, styles, val) {
const getCptStyle = window.getComputedStyle;
if (isString(styles)) {
if (isUndefined(val)) {
const cptStyle = getCptStyle(elm, null);
return cptStyle != null ? cptStyle.getPropertyValue(styles) : elm.style[styles];
}
else {
setCSSVal(elm, styles, val);
}
}
else {
for (const key in styles)
setCSSVal(elm, key, styles[key]);
}
}
const hide = (elm) => {
elm.style.display = 'none';
};
const show = (elm) => {
elm.style.display = 'block';
};
const offset = (elm) => {
const rect = elm.getBoundingClientRect();
return {
top: rect.top + window.pageXOffset,
left: rect.left + window.pageYOffset
};
};
const position = (elm) => {
return {
top: elm.offsetTop,
left: elm.offsetLeft
};
};
const jsCache = {};
const cssCache = {};
const firstLetterToUpper = (str) => {
return str.charAt(0).toUpperCase() + str.slice(1);
};
const getDummyStyle = () => {
return createDiv().style;
};
const cssPrefixes = ['-webkit-', '-moz-', '-o-', '-ms-'];
const jsPrefixes = ['WebKit', 'Moz', 'O', 'MS', 'webkit', 'moz', 'o', 'ms'];
const cssProperty = (name) => {
let result = cssCache[name];
if (cssCache.hasOwnProperty(name))
return result;
const uppercasedName = firstLetterToUpper(name);
const elmStyle = getDummyStyle();
each(cssPrefixes, (prefix) => {
const prefixWithoutDashes = prefix.replace(/-/g, '');
const resultPossibilities = [
name,
prefix + name,
prefixWithoutDashes + uppercasedName,
firstLetterToUpper(prefixWithoutDashes) + uppercasedName
];
each(resultPossibilities, (resultPossibility) => {
if (elmStyle[resultPossibility] !== undefined) {
result = resultPossibility;
return false;
}
});
if (result) {
return false;
}
});
cssCache[name] = result;
return result;
};
const cssPropertyValue = (property, values, suffix) => {
const name = property + ' ' + values;
let result = cssCache[name];
if (cssCache.hasOwnProperty(name))
return result;
const dummyStyle = getDummyStyle();
const possbleValues = values.split(' ');
const preparedSuffix = suffix || '';
const cssPrefixesWithFirstEmpty = [''].concat(cssPrefixes);
each(possbleValues, (possibleValue) => {
each(cssPrefixesWithFirstEmpty, (prefix) => {
const prop = prefix + possibleValue;
dummyStyle.cssText = property + ':' + prop + preparedSuffix;
if (dummyStyle.length) {
result = prop;
return false;
}
});
if (result) {
return false;
}
});
cssCache[name] = result;
return result;
};
const jsAPI = (name) => {
let result = jsCache[name];
if (!jsCache.hasOwnProperty(name)) {
result = window[name];
each(jsPrefixes, (prefix) => {
result = result || window[prefix + firstLetterToUpper(name)];
if (result) {
return false;
}
});
}
return result;
};
const resizeObserver = jsAPI('ResizeObserver');
const mouseButton = (event) => {
const button = event.button;
if (!event.which && button !== undefined)
return (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));
else
return event.which;
};
const templateTypePrefixSuffix = ['__TPL_', '_TYPE__'];
const optionsTemplateTypes = [
'boolean',
'number',
'string',
'array',
'object',
'function',
'null'
].reduce((result, item) => {
result[item] = templateTypePrefixSuffix[0] + item + templateTypePrefixSuffix[1];
return result;
}, {});
const validateInternal = function (options, template, optionsDiff, doWriteErrors, propPath) {
const validatedOptions = {};
const optionsCopy = Object.assign({}, options);
for (const prop in template) {
if (template.hasOwnProperty(prop) && options.hasOwnProperty(prop)) {
const optionsDiffValue = isUndefined(optionsDiff[prop]) ? {} : optionsDiff[prop];
const optionsValue = optionsCopy[prop];
const templateValue = template[prop];
const templateIsComplex = isPlainObject(templateValue);
const propPrefix = propPath ? propPath + '.' : '';
if (templateIsComplex && isPlainObject(optionsValue)) {
const validatedInternal = validateInternal(optionsValue, templateValue, optionsDiffValue, doWriteErrors, propPrefix + prop);
validatedOptions[prop] = validatedInternal.validated;
optionsCopy[prop] = validatedInternal.foreign;
each([optionsCopy, validatedOptions], (value) => {
if (isEmptyObject(value[prop])) {
delete value[prop];
}
});
}
else if (!templateIsComplex) {
let isValid = false;
const errorEnumStrings = [];
const errorPossibleTypes = [];
const optionsValueType = type(optionsValue);
const templateValueArr = !isArray(templateValue) ? [templateValue] : templateValue;
each(templateValueArr, (currTemplateType) => {
const isEnumString = indexOf(Object.values(optionsTemplateTypes), currTemplateType) < 0;
if (isEnumString && isString(optionsValue)) {
const enumStringSplit = currTemplateType.split(' ');
isValid = !!enumStringSplit.find(possibility => possibility === optionsValue);
errorEnumStrings.push(...enumStringSplit);
}
else {
isValid = optionsTemplateTypes[optionsValueType] === currTemplateType;
}
errorPossibleTypes.push(isEnumString ? optionsTemplateTypes.string : currTemplateType);
return !isValid;
});
if (isValid) {
if (optionsValue !== optionsDiffValue) {
validatedOptions[prop] = optionsValue;
}
}
else if (doWriteErrors) {
console.warn(`The option "${propPrefix}${prop}" wasn't set, because it doesn't accept the type [ ${optionsValueType.toUpperCase()} ] with the value of "${optionsValue}".\r\n` +
`Accepted types are: [ ${errorPossibleTypes.join(', ').toUpperCase()} ].\r\n` +
(errorEnumStrings.length > 0 ? `\r\nValid strings are: [ ${errorEnumStrings.join(', ')} ].` : ''));
}
}
delete optionsCopy[prop];
}
}
return {
foreign: optionsCopy,
validated: validatedOptions
};
};
const validate = function (options, template, optionsDiff, doWriteErrors) {
const result = validateInternal(options, template, optionsDiff || {}, doWriteErrors || false);
const foreign = result.foreign;
if (!isEmptyObject(foreign) && doWriteErrors)
console.warn(`The following options are discarded due to invalidity:\r\n ${window.JSON.stringify(foreign, null, 2)}`);
return result.validated;
};
const classNameAllowedValues = [optionsTemplateTypes.string, optionsTemplateTypes.null];
const numberAllowedValues = optionsTemplateTypes.number;
const booleanNullAllowedValues = [optionsTemplateTypes.boolean, optionsTemplateTypes.null];
const stringArrayNullAllowedValues = [optionsTemplateTypes.string, optionsTemplateTypes.array, optionsTemplateTypes.null];
const booleanTrueTemplate = [true, optionsTemplateTypes.boolean];
const booleanFalseTemplate = [false, optionsTemplateTypes.boolean];
const callbackTemplate = [null, [optionsTemplateTypes.function, optionsTemplateTypes.null]];
const resizeAllowedValues = 'none both horizontal vertical';
const overflowBehaviorAllowedValues = 'visible-hidden visible-scroll scroll hidden';
const scrollbarsVisibilityAllowedValues = 'visible hidden auto';
const scrollbarsAutoHideAllowedValues = 'never scroll leavemove';
const defaultOptionsWithTemplate = {
className: ['os-theme-dark', classNameAllowedValues],
resize: ['none', resizeAllowedValues],
sizeAutoCapable: booleanTrueTemplate,
clipAlways: booleanTrueTemplate,
normalizeRTL: booleanTrueTemplate,
paddingAbsolute: booleanFalseTemplate,
autoUpdate: [null, booleanNullAllowedValues],
autoUpdateInterval: [33, numberAllowedValues],
updateOnLoad: [['img'], stringArrayNullAllowedValues],
nativeScrollbarsOverlaid: {
showNativeScrollbars: booleanFalseTemplate,
initialize: booleanFalseTemplate
},
overflowBehavior: {
x: ['scroll', overflowBehaviorAllowedValues],
y: ['scroll', overflowBehaviorAllowedValues]
},
scrollbars: {
visibility: ['auto', scrollbarsVisibilityAllowedValues],
autoHide: ['never', scrollbarsAutoHideAllowedValues],
autoHideDelay: [800, numberAllowedValues],
dragScrolling: booleanTrueTemplate,
clickScrolling: booleanFalseTemplate,
touchSupport: booleanTrueTemplate,
snapHandle: booleanFalseTemplate
},
textarea: {
dynWidth: booleanFalseTemplate,
dynHeight: booleanFalseTemplate,
inheritedAttrs: [['style', 'class'], stringArrayNullAllowedValues],
},
callbacks: {
onInitialized: callbackTemplate,
onInitializationWithdrawn: callbackTemplate,
onDestroyed: callbackTemplate,
onScrollStart: callbackTemplate,
onScroll: callbackTemplate,
onScrollStop: callbackTemplate,
onOverflowChanged: callbackTemplate,
onOverflowAmountChanged: callbackTemplate,
onDirectionChanged: callbackTemplate,
onContentSizeChanged: callbackTemplate,
onHostSizeChanged: callbackTemplate,
onUpdated: callbackTemplate
}
};
function convert(optionsWithTemplateObj, toTemplate) {
const result = {};
for (const key in optionsWithTemplateObj) {
if (optionsWithTemplateObj.hasOwnProperty(key)) {
const val = optionsWithTemplateObj[key];
if (isArray(val))
result[key] = val[toTemplate ? 1 : 0];
else if (isObject(val))
result[key] = convert(val, toTemplate);
}
}
return result;
}
const optionsTemplate = convert(defaultOptionsWithTemplate, true);
const defaultOptions = convert(defaultOptionsWithTemplate);
const targets = new Set();
const targetInstanceMap = new WeakMap();
const addInstance = (target, osInstance) => {
targetInstanceMap.set(target, osInstance);
targets.add(target);
};
const removeInstance = (target) => {
targetInstanceMap.delete(target);
targets.delete(target);
};
const getInstance = (target) => {
return targetInstanceMap.get(target);
};
const allInstances = () => {
const validTargetInstanceMap = new Map();
targets.forEach((target) => {
if (targetInstanceMap.has(target)) {
validTargetInstanceMap.set(target, targetInstanceMap.get(target));
}
});
targets.clear();
validTargetInstanceMap.forEach((instance, validTarget) => {
targets.add(validTarget);
});
return validTargetInstanceMap;
};
window['hi'] = createDOM(`\
<div class="os-host">\
<div class="os-resize-observer-host"></div>\
<div class="os-padding">\
<div class="os-viewport">\
<div class="os-content">\
fdfhdfgh\
</div>\
</div>\
</div>\
<div class="os-scrollbar os-scrollbar-horizontal">\
<div class="os-scrollbar-track">\
<div class="os-scrollbar-handle"></div>\
</div>\
</div>\
<div class="os-scrollbar os-scrollbar-vertical">\
<div class="os-scrollbar-track">\
<div class="os-scrollbar-handle"></div>\
</div>\
</div>\
<div class="os-scrollbar-corner"></div>\
</div>`);
exports.addClass = addClass;
exports.addInstance = addInstance;
exports.allInstances = allInstances;
exports.appendChildren = appendChildren;
exports.attr = attr;
exports.children = children;
exports.conditionalClass = conditionalClass;
exports.contents = contents;
exports.createDOM = createDOM;
exports.createDiv = createDiv;
exports.cssPrefixes = cssPrefixes;
exports.cssProperty = cssProperty;
exports.cssPropertyValue = cssPropertyValue;
exports.defaultOptions = defaultOptions;
exports.each = each;
exports.extend = extend;
exports.find = find;
exports.findFirst = findFirst;
exports.getInstance = getInstance;
exports.hasClass = hasClass;
exports.hide = hide;
exports.indexOf = indexOf;
exports.insertAfter = insertAfter;
exports.insertBefore = insertBefore;
exports.is = is;
exports.isArray = isArray;
exports.isArrayLike = isArrayLike;
exports.isBoolean = isBoolean;
exports.isEmptyObject = isEmptyObject;
exports.isFunction = isFunction;
exports.isHTMLElement = isHTMLElement;
exports.isNull = isNull;
exports.isNumber = isNumber;
exports.isObject = isObject;
exports.isPlainObject = isPlainObject;
exports.isString = isString;
exports.isUndefined = isUndefined;
exports.jsAPI = jsAPI;
exports.jsPrefixes = jsPrefixes;
exports.mouseButton = mouseButton;
exports.offset = offset;
exports.optionsTemplate = optionsTemplate;
exports.optionsTemplateTypes = optionsTemplateTypes;
exports.parent = parent;
exports.position = position;
exports.prependChildren = prependChildren;
exports.removeAttr = removeAttr;
exports.removeClass = removeClass;
exports.removeElements = removeElements;
exports.removeInstance = removeInstance;
exports.resizeObserver = resizeObserver;
exports.scrollLeft = scrollLeft;
exports.scrollTop = scrollTop;
exports.show = show;
exports.style = style;
exports.type = type;
exports.val = val;
exports.validate = validate;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=index.bundle.js.map
File diff suppressed because one or more lines are too long
+3 -164
View File
@@ -2,70 +2,13 @@
// https://jestjs.io/docs/en/configuration.html
module.exports = {
// All imported modules in your tests should be mocked automatically
// automock: false,
// Stop running tests after `n` failures
// bail: 0,
// The directory where Jest should store its cached dependency information
// cacheDirectory: "C:\\Users\\Rene\\AppData\\Local\\Temp\\jest",
// Automatically clear mock calls and instances between every test
clearMocks: true,
// Indicates whether the coverage information should be collected while executing the test
collectCoverage: true,
// An array of glob patterns indicating a set of files for which coverage information should be collected
// collectCoverageFrom: undefined,
// The directory where Jest should output its coverage files
coverageDirectory: "coverage",
// An array of regexp pattern strings used to skip coverage collection
// coveragePathIgnorePatterns: [
// "\\\\node_modules\\\\"
// ],
// A list of reporter names that Jest uses when writing coverage reports
// coverageReporters: [
// "json",
// "text",
// "lcov",
// "clover"
// ],
// An object that configures minimum threshold enforcement for coverage results
// coverageThreshold: undefined,
// A path to a custom dependency extractor
// dependencyExtractor: undefined,
// Make calling deprecated APIs throw helpful error messages
// errorOnDeprecated: false,
// Force coverage collection from ignored files using an array of glob patterns
// forceCoverageMatch: [],
// A path to a module which exports an async function that is triggered once before all test suites
// globalSetup: undefined,
// A path to a module which exports an async function that is triggered once after all test suites
// globalTeardown: undefined,
// A set of global variables that need to be available in all test environments
// globals: {},
// The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
// maxWorkers: "50%",
// An array of directory names to be searched recursively up from the requiring module's location
moduleDirectories: [
"node_modules", "./src"
"src",
"node_modules",
],
// An array of file extensions your modules use
moduleFileExtensions: [
"js",
"json",
@@ -74,112 +17,8 @@ module.exports = {
"tsx",
"node"
],
// A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
// moduleNameMapper: {},
// An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
// modulePathIgnorePatterns: [],
// Activates notifications for test results
// notify: false,
// An enum that specifies notification mode. Requires { notify: true }
// notifyMode: "failure-change",
// A preset that is used as a base for Jest's configuration
// preset: undefined,
// Run tests from one or more projects
// projects: undefined,
// Use this configuration option to add custom reporters to Jest
// reporters: undefined,
// Automatically reset mock state between every test
// resetMocks: false,
// Reset the module registry before running each individual test
// resetModules: false,
// A path to a custom resolver
// resolver: undefined,
// Automatically restore mock state between every test
// restoreMocks: false,
// The root directory that Jest should scan for tests and modules within
// rootDir: undefined,
// A list of paths to directories that Jest should use to search for files in
// roots: [
// "<rootDir>"
// ],
// Allows you to use a custom runner instead of Jest's default test runner
// runner: "jest-runner",
// The paths to modules that run some code to configure or set up the testing environment before each test
// setupFiles: [],
// A list of paths to modules that run some code to configure or set up the testing framework before each test
// setupFilesAfterEnv: [],
// A list of paths to snapshot serializer modules Jest should use for snapshot testing
// snapshotSerializers: [],
// The test environment that will be used for testing
// testEnvironment: "jest-environment-jsdom",
// Options that will be passed to the testEnvironment
// testEnvironmentOptions: {},
// Adds a location field to test results
// testLocationInResults: false,
// The glob patterns Jest uses to detect test files
// testMatch: [
// "**/__tests__/**/*.[jt]s?(x)",
// "**/?(*.)+(spec|test).[tj]s?(x)"
// ],
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
testPathIgnorePatterns: [
"\\\\node_modules\\\\", "./dist"
],
// The regexp pattern or array of patterns that Jest uses to detect test files
// testRegex: [],
// This option allows the use of a custom results processor
// testResultsProcessor: undefined,
// This option allows use of a custom test runner
// testRunner: "jasmine2",
// This option sets the URL for the jsdom environment. It is reflected in properties such as location.href
// testURL: "http://localhost",
// Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout"
// timers: "real",
// A map from regular expressions to paths to transformers
// transform: undefined,
// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
// transformIgnorePatterns: [
// "\\\\node_modules\\\\"
// ],
// An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
// unmockedModulePathPatterns: undefined,
// Indicates whether each individual test should be reported during the run
verbose: true,
// An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
// watchPathIgnorePatterns: [],
// Whether to use watchman for file crawling
// watchman: true,
};
};
+9690
View File
File diff suppressed because it is too large Load Diff
+14 -8
View File
@@ -1,9 +1,11 @@
{
"name": "OverlayScrollbars",
"description": "OverlayScrollbars version 2",
"version": "0.0.1",
"private": true,
"workspaces": [
"packages/*"
],
"devDependencies": {
"@babel/core": "^7.9.6",
"@babel/node": "^7.10.5",
"@babel/plugin-transform-modules-commonjs": "^7.9.6",
"@babel/preset-env": "^7.9.6",
"@babel/preset-typescript": "^7.9.0",
@@ -11,14 +13,18 @@
"@rollup/plugin-typescript": "^4.1.2",
"@types/jest": "^25.2.3",
"babel-jest": "^26.0.1",
"clean-webpack-plugin": "^3.0.0",
"jest": "^26.0.1",
"rollup": "^1.21.4",
"terser-webpack-plugin": "^3.0.7",
"ts-loader": "^8.0.1",
"tslib": "^2.0.0",
"typescript": "^3.9.3"
"typescript": "^3.9.3",
"webpack": "next",
"webpack-cli": "^3.3.12",
"webpack-merge": "^5.0.9"
},
"scripts": {
"build": "tsc && rollup -c",
"prepare": "npm run build",
"test": "jest --coverage"
"test": "jest --coverage",
"build": "npx webpack --env.project=overlayscrollbars --env.production"
}
}
@@ -0,0 +1,62 @@
!function(o, r) {
"object" == typeof exports && "object" == typeof module ? module.exports = r() : "function" == typeof define && define.amd ? define([], r) : "object" == typeof exports ? exports.OverlayScrollbars = r() : o.OverlayScrollbars = r();
}(window, (function() {
return (() => {
"use strict";
var o = {
95: (o, r, e) => {
e.d(r, {
default: () => u
});
function s(o) {
return "function" == typeof o;
}
function t(o) {
return Array.isArray(o);
}
function n(o) {
const r = !!o && o.length;
return t(o) || !s(o) && function(o) {
return "number" == typeof o;
}(r) && r > -1 && r % 1 == 0;
}
function i(o, r) {
let e = 0;
if (n(o)) for (;e < o.length && !1 !== r(o[e], e, o); e++) ; else if (o) for (e in o) if (!1 === r(o[e], e, o)) break;
return o;
}
const c = o => {
if (n(o)) i(Array.from(o), o => c(o)); else if (o) {
const r = o.parentNode;
r && r.removeChild(o);
}
}, l = o => {
const r = document.createElement("div");
return r.innerHTML = o.trim(), i((o => o ? Array.from(o.childNodes) : [])(r), o => c(o));
};
const a = o => o.charAt(0).toUpperCase() + o.slice(1), d = [ "WebKit", "Moz", "O", "MS", "webkit", "moz", "o", "ms" ], f = {}, v = ((o => {
let r = f[o] || window[o];
f.hasOwnProperty(o) || (i(d, e => (r = r || window[e + a(o)], !r)), f[o] = r);
})("ResizeObserver"), JSON.stringify, [ "__TPL_", "_TYPE__" ]);
[ "boolean", "number", "string", "array", "object", "function", "null" ].reduce((o, r) => (o[r] = v[0] + r + v[1],
o), {});
new Set, new WeakMap;
const u = () => l(' <div class="os-host"> <div class="os-resize-observer-host"></div> <div class="os-padding"> <div class="os-viewport"> <div class="os-content"> fdfhdfgh </div> </div> </div> <div class="os-scrollbar os-scrollbar-horizontal"> <div class="os-scrollbar-track"> <div class="os-scrollbar-handle"></div> </div> </div> <div class="os-scrollbar os-scrollbar-vertical"> <div class="os-scrollbar-track"> <div class="os-scrollbar-handle"></div> </div> </div> <div class="os-scrollbar-corner"></div> </div>');
}
}, r = {};
function e(s) {
if (r[s]) return r[s].exports;
var t = r[s] = {
exports: {}
};
return o[s](t, t.exports, e), t.exports;
}
return e.d = (o, r) => {
for (var s in r) e.o(r, s) && !e.o(o, s) && Object.defineProperty(o, s, {
enumerable: !0,
get: r[s]
});
}, e.o = (o, r) => Object.prototype.hasOwnProperty.call(o, r), e(95);
})().default;
}));
//# sourceMappingURL=overlayscrollbars.esm.js.map
File diff suppressed because one or more lines are too long
+77
View File
@@ -0,0 +1,77 @@
!function(r, n) {
"object" == typeof exports && "object" == typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define([], n) : "object" == typeof exports ? exports.OverlayScrollbars = n() : r.OverlayScrollbars = n();
}(window, (function() {
return function() {
"use strict";
var r = {
95: function(r, n, o) {
o.d(n, {
default: function() {
return p;
}
});
function e(r) {
return "function" == typeof r;
}
function t(r) {
return Array.isArray(r);
}
function i(r) {
var n = !!r && r.length;
return t(r) || !e(r) && function(r) {
return "number" == typeof r;
}(n) && n > -1 && n % 1 == 0;
}
function s(r, n) {
var o = 0;
if (i(r)) for (;o < r.length && !1 !== n(r[o], o, r); o++) ; else if (r) for (o in r) if (!1 === n(r[o], o, r)) break;
return r;
}
var c = function(r) {
if (i(r)) s(Array.from(r), (function(r) {
return c(r);
})); else if (r) {
var n = r.parentNode;
n && n.removeChild(r);
}
}, u = function(r) {
var n = document.createElement("div");
return n.innerHTML = r.trim(), s(function(r) {
return r ? Array.from(r.childNodes) : [];
}(n), (function(r) {
return c(r);
}));
};
var a, f, l = function(r) {
return r.charAt(0).toUpperCase() + r.slice(1);
}, d = [ "WebKit", "Moz", "O", "MS", "webkit", "moz", "o", "ms" ], v = {}, b = (f = v[a = "ResizeObserver"] || window[a],
v.hasOwnProperty(a) || (s(d, (function(r) {
return !(f = f || window[r + l(a)]);
})), v[a] = f), JSON.stringify, [ "__TPL_", "_TYPE__" ]);
[ "boolean", "number", "string", "array", "object", "function", "null" ].reduce((function(r, n) {
return r[n] = b[0] + n + b[1], r;
}), {});
new Set, new WeakMap;
var p = function() {
return u(' <div class="os-host"> <div class="os-resize-observer-host"></div> <div class="os-padding"> <div class="os-viewport"> <div class="os-content"> fdfhdfgh </div> </div> </div> <div class="os-scrollbar os-scrollbar-horizontal"> <div class="os-scrollbar-track"> <div class="os-scrollbar-handle"></div> </div> </div> <div class="os-scrollbar os-scrollbar-vertical"> <div class="os-scrollbar-track"> <div class="os-scrollbar-handle"></div> </div> </div> <div class="os-scrollbar-corner"></div> </div>');
};
}
}, n = {};
function o(e) {
if (n[e]) return n[e].exports;
var t = n[e] = {
exports: {}
};
return r[e](t, t.exports, o), t.exports;
}
return o.d = function(r, n) {
for (var e in n) o.o(n, e) && !o.o(r, e) && Object.defineProperty(r, e, {
enumerable: !0,
get: n[e]
});
}, o.o = function(r, n) {
return Object.prototype.hasOwnProperty.call(r, n);
}, o(95);
}().default;
}));
//# sourceMappingURL=overlayscrollbars.js.map
File diff suppressed because one or more lines are too long
@@ -9,8 +9,8 @@
</head>
<body>
<div id="hi">hi</div>
<script type="text/javascript" src="index.bundle.js"></script>
<div id="hi">hi</div>
<script type="text/javascript" src="./dist/overlayscrollbars.js"></script>
</body>
</html>
+5
View File
@@ -0,0 +1,5 @@
{
"private": true,
"description": "OverlayScrollbars version 2",
"version": "0.0.1"
}
@@ -9,7 +9,7 @@ export * from 'instances';
window['hi'] = createDOM(`\
export default () => createDOM(`\
<div class="os-host">\
<div class="os-resize-observer-host"></div>\
<div class="os-padding">\
@@ -39,9 +39,8 @@ export namespace OverlayScrollbars {
| [Position, Position]
| Position
| HTMLElement
| JQuery
| {
el: HTMLElement | JQuery;
el: HTMLElement;
scroll?: ScrollBehavior | { x?: ScrollBehavior; y?: ScrollBehavior } | [ScrollBehavior, ScrollBehavior];
block?: BlockBehavior | { x?: BlockBehavior; y?: BlockBehavior } | [BlockBehavior, BlockBehavior];
margin?: Margin
@@ -333,21 +332,21 @@ interface OverlayScrollbars {
interface OverlayScrollbarsStatic {
(
element: HTMLElement | Element | JQuery,
element: HTMLElement | Element,
options: OverlayScrollbars.Options,
extensions?: OverlayScrollbars.Extensions
): OverlayScrollbars;
(
element: HTMLElement | Element | JQuery | null
element: HTMLElement | Element | null
): OverlayScrollbars | undefined;
(
elements: NodeListOf<Element> | ReadonlyArray<Element> | JQuery,
elements: NodeListOf<Element> | ReadonlyArray<Element>,
options: OverlayScrollbars.Options,
extensions?: OverlayScrollbars.Extensions
): OverlayScrollbars | OverlayScrollbars[] | undefined;
(
elements: NodeListOf<Element> | ReadonlyArray<Element> | JQuery,
elements: NodeListOf<Element> | ReadonlyArray<Element>,
filter?: string | ((element: Element, instance: OverlayScrollbars) => boolean)
): OverlayScrollbars | OverlayScrollbars[] | undefined;
@@ -5,10 +5,8 @@
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"baseUrl": "./src",
"outDir": "./dist",
"target": "es2015",
"target": "es6",
"sourceMap": true,
"inlineSources": true,
"jsx": "react",
"lib": [
"es6",
@@ -17,18 +15,14 @@
"es2017"
],
"declaration": true,
"declarationDir": "./dist/types",
"suppressImplicitAnyIndexErrors": true,
"module": "es2015",
"module": "es6",
"moduleResolution": "node",
"removeComments": true
},
"include": [
"./src",
"./tests"
],
"exclude": [
"./dist",
"**/*.test.*",
"node_modules"
]
}
@@ -0,0 +1 @@
export declare const resizeObserver: any | undefined;
@@ -0,0 +1 @@
export declare const mouseButton: (event: MouseEvent) => number;
@@ -0,0 +1,3 @@
export * from 'core/compatibility/vendors';
export * from 'core/compatibility/apis';
export * from 'core/compatibility/events';
@@ -0,0 +1,11 @@
export declare const cssPrefixes: ReadonlyArray<string>;
export declare const jsPrefixes: ReadonlyArray<string>;
export declare const jsCache: {
[key: string]: any;
};
export declare const cssCache: {
[key: string]: string;
};
export declare const cssProperty: (name: string) => string | undefined;
export declare const cssPropertyValue: (property: string, values: string, suffix?: string) => string | undefined;
export declare const jsAPI: (name: string) => any;
@@ -0,0 +1,5 @@
export declare const attr: (elm: Element, attrName: string, value?: string) => string | null | void;
export declare const removeAttr: (elm: Element, attrName: string) => void;
export declare const scrollLeft: (elm: HTMLElement, value?: number) => number | void;
export declare const scrollTop: (elm: HTMLElement, value?: number) => number | void;
export declare const val: (elm: HTMLInputElement, value?: string) => string | void;
@@ -0,0 +1,4 @@
export declare const hasClass: (elm: Element, className: string) => boolean;
export declare const addClass: (elm: Element, className: string) => void;
export declare const removeClass: (elm: Element, className: string) => void;
export declare const conditionalClass: (elm: Element, className: string, condition: boolean) => void;
+2
View File
@@ -0,0 +1,2 @@
export declare const createDiv: () => HTMLDivElement;
export declare const createDOM: (html: string) => ReadonlyArray<Node>;
+7
View File
@@ -0,0 +1,7 @@
export * from 'core/dom/attributes';
export * from 'core/dom/classes';
export * from 'core/dom/create';
export * from 'core/dom/style';
export * from 'core/dom/manipulation';
export * from 'core/dom/offset';
export * from 'core/dom/traversal';
@@ -0,0 +1,7 @@
declare type NodeCollection = ArrayLike<Node> | Node | undefined | null;
export declare const appendChildren: (node: Node | null, children: NodeCollection) => void;
export declare const prependChildren: (node: Node | null, children: NodeCollection) => void;
export declare const insertBefore: (node: Node | null, insertedNodes: NodeCollection) => void;
export declare const insertAfter: (node: Node | null, insertedNodes: NodeCollection) => void;
export declare const removeElements: (nodes: NodeCollection) => void;
export {};
+8
View File
@@ -0,0 +1,8 @@
export declare const offset: (elm: HTMLElement) => {
top: number;
left: number;
};
export declare const position: (elm: HTMLElement) => {
top: number;
left: number;
};
+8
View File
@@ -0,0 +1,8 @@
declare type cssStyleObj = {
[key: string]: string | number;
};
export declare function style(elm: HTMLElement, styles: string | cssStyleObj): string;
export declare function style(elm: HTMLElement, styles: string | cssStyleObj, val: string | number): void;
export declare const hide: (elm: HTMLElement) => void;
export declare const show: (elm: HTMLElement) => void;
export {};
@@ -0,0 +1,6 @@
export declare const find: (selector: string, elm?: Element | null) => ReadonlyArray<Element>;
export declare const findFirst: (selector: string, elm?: Element | null) => Element | null;
export declare const is: (elm: Element | null, selector: string) => boolean;
export declare const children: (elm: Element | null, selector?: string) => ReadonlyArray<Element>;
export declare const contents: (elm: Element | null) => ReadonlyArray<ChildNode>;
export declare const parent: (elm: Node | null) => Node | null;
@@ -0,0 +1,2 @@
export * from 'core/options/validation';
export * from 'core/options/transformation';
@@ -0,0 +1,3 @@
import { OptionsTemplate, OptionsAndOptionsTemplate } from "core/typings";
export declare function transform<T extends Required<T>>(optionsWithOptionsTemplate: OptionsAndOptionsTemplate<T>): T;
export declare function transform<T extends Required<T>>(optionsWithOptionsTemplate: OptionsAndOptionsTemplate<T>, toTemplate: true | void): OptionsTemplate<T>;
@@ -0,0 +1,13 @@
import { PlainObject, OptionsTemplate, OptionsTemplateType, OptionsValidated, Func, OptionsValidatedResult } from 'core/typings';
declare const optionsTemplateTypes: OptionsTemplateTypesDictionary;
declare const validate: <T extends PlainObject<any>>(options: T, template: OptionsTemplate<Required<T>>, optionsDiff?: OptionsValidated<T> | undefined, doWriteErrors?: boolean | undefined) => OptionsValidatedResult<T>;
export { validate, optionsTemplateTypes };
declare type OptionsTemplateTypesDictionary = {
readonly boolean: OptionsTemplateType<boolean>;
readonly number: OptionsTemplateType<number>;
readonly string: OptionsTemplateType<string>;
readonly array: OptionsTemplateType<Array<any>>;
readonly object: OptionsTemplateType<object>;
readonly function: OptionsTemplateType<Func>;
readonly null: OptionsTemplateType<null>;
};

Some files were not shown because too many files have changed in this diff Show More