From f60449c08d7c06252092c9b61fb2221379685720 Mon Sep 17 00:00:00 2001 From: dapize Date: Thu, 23 Jun 2022 05:02:02 -0500 Subject: [PATCH] :bricks: Changing to Vite JS --- .editorconfig | 18 + .gitignore | 24 + DOCS.md | 989 ++++++ LICENSE | 21 + README.md | 166 + coverage/clover.xml | 933 ++++++ coverage/coverage-final.json | 65 + coverage/lcov-report/base.css | 224 ++ coverage/lcov-report/block-navigation.js | 87 + coverage/lcov-report/favicon.png | Bin 0 -> 540 bytes coverage/lcov-report/index.html | 176 + coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 2 + coverage/lcov-report/sort-arrow-sprite.png | Bin 0 -> 209 bytes coverage/lcov-report/sorter.js | 196 ++ coverage/lcov-report/src/config/flex.ts.html | 172 + coverage/lcov-report/src/config/index.html | 146 + coverage/lcov-report/src/config/main.ts.html | 484 +++ .../lcov-report/src/config/processors.ts.html | 427 +++ .../src/helpers/breakpointsNums.ts.html | 229 ++ .../src/helpers/breakpointsOrdered.ts.html | 118 + .../lcov-report/src/helpers/buildAttr.ts.html | 196 ++ .../lcov-report/src/helpers/buildCss.ts.html | 187 ++ .../src/helpers/calPercentage.ts.html | 109 + .../src/helpers/createScopeStyles.ts.html | 292 ++ .../src/helpers/createStyles.ts.html | 328 ++ .../src/helpers/getScopeByclassName.ts.html | 235 ++ coverage/lcov-report/src/helpers/index.html | 341 ++ .../src/helpers/initAutoProcessor.ts.html | 148 + .../src/helpers/mainObserver.ts.html | 208 ++ .../src/helpers/nameCleaner.ts.html | 157 + .../src/helpers/percentageConverter.ts.html | 100 + .../src/helpers/prepareParam.ts.html | 199 ++ .../src/helpers/processedNumber.ts.html | 169 + .../lcov-report/src/helpers/regError.ts.html | 142 + .../src/helpers/scopesStylesBuilder.ts.html | 160 + coverage/lcov-report/src/index.html | 116 + coverage/lcov-report/src/main.ts.html | 913 ++++++ .../lcov-report/src/methods/SetCols.ts.html | 196 ++ .../lcov-report/src/methods/build.ts.html | 295 ++ .../lcov-report/src/methods/buildCols.ts.html | 292 ++ .../lcov-report/src/methods/buildFlex.ts.html | 289 ++ .../src/methods/buildHeight.ts.html | 115 + .../src/methods/buildMarBottom.ts.html | 115 + .../src/methods/buildMarLeft.ts.html | 115 + .../src/methods/buildMarRight.ts.html | 115 + .../src/methods/buildMarTop.ts.html | 115 + .../lcov-report/src/methods/buildMars.ts.html | 115 + .../src/methods/buildMaxHeight.ts.html | 115 + .../src/methods/buildMaxWidth.ts.html | 115 + .../src/methods/buildMinHeight.ts.html | 115 + .../src/methods/buildMinWidth.ts.html | 115 + .../src/methods/buildPadBottom.ts.html | 115 + .../src/methods/buildPadLeft.ts.html | 115 + .../src/methods/buildPadRight.ts.html | 115 + .../src/methods/buildPadTop.ts.html | 115 + .../lcov-report/src/methods/buildPads.ts.html | 115 + .../src/methods/buildWidth.ts.html | 115 + .../src/methods/getParameters.ts.html | 145 + coverage/lcov-report/src/methods/index.html | 731 +++++ .../src/methods/insertRules.ts.html | 142 + .../lcov-report/src/methods/reset.ts.html | 229 ++ coverage/lcov-report/src/methods/set.ts.html | 229 ++ .../lcov-report/src/methods/setAttr.ts.html | 190 ++ .../lcov-report/src/methods/setFlex.ts.html | 199 ++ .../lcov-report/src/methods/setHeight.ts.html | 115 + .../src/methods/setMarBottom.ts.html | 115 + .../src/methods/setMarLeft.ts.html | 115 + .../src/methods/setMarRight.ts.html | 115 + .../lcov-report/src/methods/setMarTop.ts.html | 115 + .../lcov-report/src/methods/setMars.ts.html | 115 + .../src/methods/setMaxHeight.ts.html | 115 + .../src/methods/setMaxWidth.ts.html | 115 + .../src/methods/setMinHeight.ts.html | 115 + .../src/methods/setMinWidth.ts.html | 115 + .../src/methods/setPadBottom.ts.html | 115 + .../src/methods/setPadLeft.ts.html | 115 + .../src/methods/setPadRight.ts.html | 115 + .../lcov-report/src/methods/setPadTop.ts.html | 115 + .../lcov-report/src/methods/setPads.ts.html | 115 + .../lcov-report/src/methods/setWidth.ts.html | 115 + .../lcov-report/src/utils/addClasses.ts.html | 226 ++ coverage/lcov-report/src/utils/index.html | 131 + .../lcov-report/src/utils/removeAttr.ts.html | 229 ++ coverage/lcov.info | 1682 ++++++++++ favicon.png | Bin 0 -> 5263 bytes favicon.svg | 15 + header.png | Bin 0 -> 8695 bytes index.html | 67 + jest.config.js | 5 + layout-responsive.png | Bin 0 -> 38024 bytes package.json | 45 + src/config/flex.ts | 29 + src/config/main.ts | 133 + src/config/processors.ts | 114 + src/helpers/breakpointsNums.ts | 48 + src/helpers/breakpointsOrdered.ts | 11 + src/helpers/buildAttr.ts | 37 + src/helpers/buildCss.ts | 34 + src/helpers/calPercentage.ts | 8 + src/helpers/createScopeStyles.ts | 69 + src/helpers/createStyles.ts | 81 + src/helpers/getScopeByclassName.ts | 50 + src/helpers/initAutoProcessor.ts | 21 + src/helpers/mainObserver.ts | 41 + src/helpers/nameCleaner.ts | 24 + src/helpers/percentageConverter.ts | 5 + src/helpers/prepareParam.ts | 38 + src/helpers/processedNumber.ts | 28 + src/helpers/regError.ts | 19 + src/helpers/scopesStylesBuilder.ts | 25 + src/main.ts | 276 ++ src/methods/SetCols.ts | 37 + src/methods/build.ts | 70 + src/methods/buildCols.ts | 69 + src/methods/buildFlex.ts | 68 + src/methods/buildHeight.ts | 10 + src/methods/buildMarBottom.ts | 10 + src/methods/buildMarLeft.ts | 10 + src/methods/buildMarRight.ts | 10 + src/methods/buildMarTop.ts | 10 + src/methods/buildMars.ts | 10 + src/methods/buildMaxHeight.ts | 10 + src/methods/buildMaxWidth.ts | 10 + src/methods/buildMinHeight.ts | 10 + src/methods/buildMinWidth.ts | 10 + src/methods/buildPadBottom.ts | 10 + src/methods/buildPadLeft.ts | 10 + src/methods/buildPadRight.ts | 10 + src/methods/buildPadTop.ts | 10 + src/methods/buildPads.ts | 10 + src/methods/buildWidth.ts | 10 + src/methods/getParameters.ts | 20 + src/methods/insertRules.ts | 19 + src/methods/reset.ts | 48 + src/methods/set.ts | 48 + src/methods/setAttr.ts | 35 + src/methods/setFlex.ts | 38 + src/methods/setHeight.ts | 10 + src/methods/setMarBottom.ts | 10 + src/methods/setMarLeft.ts | 10 + src/methods/setMarRight.ts | 10 + src/methods/setMarTop.ts | 10 + src/methods/setMars.ts | 10 + src/methods/setMaxHeight.ts | 10 + src/methods/setMaxWidth.ts | 10 + src/methods/setMinHeight.ts | 10 + src/methods/setMinWidth.ts | 10 + src/methods/setPadBottom.ts | 10 + src/methods/setPadLeft.ts | 10 + src/methods/setPadRight.ts | 10 + src/methods/setPadTop.ts | 10 + src/methods/setPads.ts | 10 + src/methods/setWidth.ts | 10 + src/utils/addClasses.ts | 47 + src/utils/removeAttr.ts | 48 + src/vite-env.d.ts | 1 + test/config/main.test.ts | 61 + test/helpers/breakpointsNums.test.ts | 40 + test/helpers/breakpointsOrdered.test.ts | 45 + test/helpers/buildAttr.test.ts | 17 + test/helpers/calPercentage.test.ts | 8 + test/helpers/createScopeStyles.test.ts | 42 + test/helpers/createStyles.test.ts | 18 + test/helpers/getScopeByclassName.test.ts | 27 + test/helpers/percentageConverter.test.ts | 8 + test/helpers/regError.test.ts | 12 + test/helpers/scopesStylesBuilder.test.ts | 16 + test/index.test.ts | 51 + test/methods/SetCols.test.ts | 42 + test/methods/build.test.ts | 128 + test/methods/buildCols.test.ts | 60 + test/methods/buildFlex.test.ts | 49 + test/methods/buildHeight.test.ts | 50 + test/methods/buildMarBottom.test.ts | 38 + test/methods/buildMarLeft.test.ts | 38 + test/methods/buildMarRight.test.ts | 54 + test/methods/buildMarTop.test.ts | 44 + test/methods/buildMars.test.ts | 44 + test/methods/buildMaxHeight.test.ts | 34 + test/methods/buildMaxWidth.test.ts | 34 + test/methods/buildMinHeight.test.ts | 34 + test/methods/buildMinWidth.test.ts | 34 + test/methods/buildPadBottom.test.ts | 38 + test/methods/buildPadLeft.test.ts | 38 + test/methods/buildPadRight.test.ts | 54 + test/methods/buildPadTop.test.ts | 28 + test/methods/buildPads.test.ts | 38 + test/methods/buildWidth.test.ts | 34 + test/methods/getParameters.test.ts | 46 + test/methods/reset.test.ts | 37 + test/methods/set.test.ts | 94 + test/methods/setFlex.test.ts | 78 + test/methods/setHeight.test.ts | 33 + test/methods/setMarBottom.test.ts | 22 + test/methods/setMarLeft.test.ts | 22 + test/methods/setMarRight.test.ts | 29 + test/methods/setMarTop.test.ts | 22 + test/methods/setMars.test.ts | 22 + test/methods/setMaxHeight.test.ts | 22 + test/methods/setMaxWidth.test.ts | 22 + test/methods/setMinHeight.test.ts | 22 + test/methods/setMinWidth.test.ts | 22 + test/methods/setPadBottom.test.ts | 24 + test/methods/setPadLeft.test.ts | 22 + test/methods/setPadRight.test.ts | 22 + test/methods/setPadTop.test.ts | 22 + test/methods/setPads.test.ts | 22 + test/methods/setWidth.test.ts | 22 + test/utils/addClasses.test.ts | 16 + test/utils/removeProp.test.ts | 15 + tsconfig.json | 20 + vite.config.js | 12 + yarn.lock | 2900 +++++++++++++++++ 214 files changed, 24302 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 DOCS.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 coverage/clover.xml create mode 100644 coverage/coverage-final.json create mode 100644 coverage/lcov-report/base.css create mode 100644 coverage/lcov-report/block-navigation.js create mode 100644 coverage/lcov-report/favicon.png create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov-report/sort-arrow-sprite.png create mode 100644 coverage/lcov-report/sorter.js create mode 100644 coverage/lcov-report/src/config/flex.ts.html create mode 100644 coverage/lcov-report/src/config/index.html create mode 100644 coverage/lcov-report/src/config/main.ts.html create mode 100644 coverage/lcov-report/src/config/processors.ts.html create mode 100644 coverage/lcov-report/src/helpers/breakpointsNums.ts.html create mode 100644 coverage/lcov-report/src/helpers/breakpointsOrdered.ts.html create mode 100644 coverage/lcov-report/src/helpers/buildAttr.ts.html create mode 100644 coverage/lcov-report/src/helpers/buildCss.ts.html create mode 100644 coverage/lcov-report/src/helpers/calPercentage.ts.html create mode 100644 coverage/lcov-report/src/helpers/createScopeStyles.ts.html create mode 100644 coverage/lcov-report/src/helpers/createStyles.ts.html create mode 100644 coverage/lcov-report/src/helpers/getScopeByclassName.ts.html create mode 100644 coverage/lcov-report/src/helpers/index.html create mode 100644 coverage/lcov-report/src/helpers/initAutoProcessor.ts.html create mode 100644 coverage/lcov-report/src/helpers/mainObserver.ts.html create mode 100644 coverage/lcov-report/src/helpers/nameCleaner.ts.html create mode 100644 coverage/lcov-report/src/helpers/percentageConverter.ts.html create mode 100644 coverage/lcov-report/src/helpers/prepareParam.ts.html create mode 100644 coverage/lcov-report/src/helpers/processedNumber.ts.html create mode 100644 coverage/lcov-report/src/helpers/regError.ts.html create mode 100644 coverage/lcov-report/src/helpers/scopesStylesBuilder.ts.html create mode 100644 coverage/lcov-report/src/index.html create mode 100644 coverage/lcov-report/src/main.ts.html create mode 100644 coverage/lcov-report/src/methods/SetCols.ts.html create mode 100644 coverage/lcov-report/src/methods/build.ts.html create mode 100644 coverage/lcov-report/src/methods/buildCols.ts.html create mode 100644 coverage/lcov-report/src/methods/buildFlex.ts.html create mode 100644 coverage/lcov-report/src/methods/buildHeight.ts.html create mode 100644 coverage/lcov-report/src/methods/buildMarBottom.ts.html create mode 100644 coverage/lcov-report/src/methods/buildMarLeft.ts.html create mode 100644 coverage/lcov-report/src/methods/buildMarRight.ts.html create mode 100644 coverage/lcov-report/src/methods/buildMarTop.ts.html create mode 100644 coverage/lcov-report/src/methods/buildMars.ts.html create mode 100644 coverage/lcov-report/src/methods/buildMaxHeight.ts.html create mode 100644 coverage/lcov-report/src/methods/buildMaxWidth.ts.html create mode 100644 coverage/lcov-report/src/methods/buildMinHeight.ts.html create mode 100644 coverage/lcov-report/src/methods/buildMinWidth.ts.html create mode 100644 coverage/lcov-report/src/methods/buildPadBottom.ts.html create mode 100644 coverage/lcov-report/src/methods/buildPadLeft.ts.html create mode 100644 coverage/lcov-report/src/methods/buildPadRight.ts.html create mode 100644 coverage/lcov-report/src/methods/buildPadTop.ts.html create mode 100644 coverage/lcov-report/src/methods/buildPads.ts.html create mode 100644 coverage/lcov-report/src/methods/buildWidth.ts.html create mode 100644 coverage/lcov-report/src/methods/getParameters.ts.html create mode 100644 coverage/lcov-report/src/methods/index.html create mode 100644 coverage/lcov-report/src/methods/insertRules.ts.html create mode 100644 coverage/lcov-report/src/methods/reset.ts.html create mode 100644 coverage/lcov-report/src/methods/set.ts.html create mode 100644 coverage/lcov-report/src/methods/setAttr.ts.html create mode 100644 coverage/lcov-report/src/methods/setFlex.ts.html create mode 100644 coverage/lcov-report/src/methods/setHeight.ts.html create mode 100644 coverage/lcov-report/src/methods/setMarBottom.ts.html create mode 100644 coverage/lcov-report/src/methods/setMarLeft.ts.html create mode 100644 coverage/lcov-report/src/methods/setMarRight.ts.html create mode 100644 coverage/lcov-report/src/methods/setMarTop.ts.html create mode 100644 coverage/lcov-report/src/methods/setMars.ts.html create mode 100644 coverage/lcov-report/src/methods/setMaxHeight.ts.html create mode 100644 coverage/lcov-report/src/methods/setMaxWidth.ts.html create mode 100644 coverage/lcov-report/src/methods/setMinHeight.ts.html create mode 100644 coverage/lcov-report/src/methods/setMinWidth.ts.html create mode 100644 coverage/lcov-report/src/methods/setPadBottom.ts.html create mode 100644 coverage/lcov-report/src/methods/setPadLeft.ts.html create mode 100644 coverage/lcov-report/src/methods/setPadRight.ts.html create mode 100644 coverage/lcov-report/src/methods/setPadTop.ts.html create mode 100644 coverage/lcov-report/src/methods/setPads.ts.html create mode 100644 coverage/lcov-report/src/methods/setWidth.ts.html create mode 100644 coverage/lcov-report/src/utils/addClasses.ts.html create mode 100644 coverage/lcov-report/src/utils/index.html create mode 100644 coverage/lcov-report/src/utils/removeAttr.ts.html create mode 100644 coverage/lcov.info create mode 100644 favicon.png create mode 100644 favicon.svg create mode 100644 header.png create mode 100644 index.html create mode 100644 jest.config.js create mode 100644 layout-responsive.png create mode 100644 package.json create mode 100644 src/config/flex.ts create mode 100644 src/config/main.ts create mode 100644 src/config/processors.ts create mode 100644 src/helpers/breakpointsNums.ts create mode 100644 src/helpers/breakpointsOrdered.ts create mode 100644 src/helpers/buildAttr.ts create mode 100644 src/helpers/buildCss.ts create mode 100644 src/helpers/calPercentage.ts create mode 100644 src/helpers/createScopeStyles.ts create mode 100644 src/helpers/createStyles.ts create mode 100644 src/helpers/getScopeByclassName.ts create mode 100644 src/helpers/initAutoProcessor.ts create mode 100644 src/helpers/mainObserver.ts create mode 100644 src/helpers/nameCleaner.ts create mode 100644 src/helpers/percentageConverter.ts create mode 100644 src/helpers/prepareParam.ts create mode 100644 src/helpers/processedNumber.ts create mode 100644 src/helpers/regError.ts create mode 100644 src/helpers/scopesStylesBuilder.ts create mode 100644 src/main.ts create mode 100644 src/methods/SetCols.ts create mode 100644 src/methods/build.ts create mode 100644 src/methods/buildCols.ts create mode 100644 src/methods/buildFlex.ts create mode 100644 src/methods/buildHeight.ts create mode 100644 src/methods/buildMarBottom.ts create mode 100644 src/methods/buildMarLeft.ts create mode 100644 src/methods/buildMarRight.ts create mode 100644 src/methods/buildMarTop.ts create mode 100644 src/methods/buildMars.ts create mode 100644 src/methods/buildMaxHeight.ts create mode 100644 src/methods/buildMaxWidth.ts create mode 100644 src/methods/buildMinHeight.ts create mode 100644 src/methods/buildMinWidth.ts create mode 100644 src/methods/buildPadBottom.ts create mode 100644 src/methods/buildPadLeft.ts create mode 100644 src/methods/buildPadRight.ts create mode 100644 src/methods/buildPadTop.ts create mode 100644 src/methods/buildPads.ts create mode 100644 src/methods/buildWidth.ts create mode 100644 src/methods/getParameters.ts create mode 100644 src/methods/insertRules.ts create mode 100644 src/methods/reset.ts create mode 100644 src/methods/set.ts create mode 100644 src/methods/setAttr.ts create mode 100644 src/methods/setFlex.ts create mode 100644 src/methods/setHeight.ts create mode 100644 src/methods/setMarBottom.ts create mode 100644 src/methods/setMarLeft.ts create mode 100644 src/methods/setMarRight.ts create mode 100644 src/methods/setMarTop.ts create mode 100644 src/methods/setMars.ts create mode 100644 src/methods/setMaxHeight.ts create mode 100644 src/methods/setMaxWidth.ts create mode 100644 src/methods/setMinHeight.ts create mode 100644 src/methods/setMinWidth.ts create mode 100644 src/methods/setPadBottom.ts create mode 100644 src/methods/setPadLeft.ts create mode 100644 src/methods/setPadRight.ts create mode 100644 src/methods/setPadTop.ts create mode 100644 src/methods/setPads.ts create mode 100644 src/methods/setWidth.ts create mode 100644 src/utils/addClasses.ts create mode 100644 src/utils/removeAttr.ts create mode 100644 src/vite-env.d.ts create mode 100644 test/config/main.test.ts create mode 100644 test/helpers/breakpointsNums.test.ts create mode 100644 test/helpers/breakpointsOrdered.test.ts create mode 100644 test/helpers/buildAttr.test.ts create mode 100644 test/helpers/calPercentage.test.ts create mode 100644 test/helpers/createScopeStyles.test.ts create mode 100644 test/helpers/createStyles.test.ts create mode 100644 test/helpers/getScopeByclassName.test.ts create mode 100644 test/helpers/percentageConverter.test.ts create mode 100644 test/helpers/regError.test.ts create mode 100644 test/helpers/scopesStylesBuilder.test.ts create mode 100644 test/index.test.ts create mode 100644 test/methods/SetCols.test.ts create mode 100644 test/methods/build.test.ts create mode 100644 test/methods/buildCols.test.ts create mode 100644 test/methods/buildFlex.test.ts create mode 100644 test/methods/buildHeight.test.ts create mode 100644 test/methods/buildMarBottom.test.ts create mode 100644 test/methods/buildMarLeft.test.ts create mode 100644 test/methods/buildMarRight.test.ts create mode 100644 test/methods/buildMarTop.test.ts create mode 100644 test/methods/buildMars.test.ts create mode 100644 test/methods/buildMaxHeight.test.ts create mode 100644 test/methods/buildMaxWidth.test.ts create mode 100644 test/methods/buildMinHeight.test.ts create mode 100644 test/methods/buildMinWidth.test.ts create mode 100644 test/methods/buildPadBottom.test.ts create mode 100644 test/methods/buildPadLeft.test.ts create mode 100644 test/methods/buildPadRight.test.ts create mode 100644 test/methods/buildPadTop.test.ts create mode 100644 test/methods/buildPads.test.ts create mode 100644 test/methods/buildWidth.test.ts create mode 100644 test/methods/getParameters.test.ts create mode 100644 test/methods/reset.test.ts create mode 100644 test/methods/set.test.ts create mode 100644 test/methods/setFlex.test.ts create mode 100644 test/methods/setHeight.test.ts create mode 100644 test/methods/setMarBottom.test.ts create mode 100644 test/methods/setMarLeft.test.ts create mode 100644 test/methods/setMarRight.test.ts create mode 100644 test/methods/setMarTop.test.ts create mode 100644 test/methods/setMars.test.ts create mode 100644 test/methods/setMaxHeight.test.ts create mode 100644 test/methods/setMaxWidth.test.ts create mode 100644 test/methods/setMinHeight.test.ts create mode 100644 test/methods/setMinWidth.test.ts create mode 100644 test/methods/setPadBottom.test.ts create mode 100644 test/methods/setPadLeft.test.ts create mode 100644 test/methods/setPadRight.test.ts create mode 100644 test/methods/setPadTop.test.ts create mode 100644 test/methods/setPads.test.ts create mode 100644 test/methods/setWidth.test.ts create mode 100644 test/utils/addClasses.test.ts create mode 100644 test/utils/removeProp.test.ts create mode 100644 tsconfig.json create mode 100644 vite.config.js create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..69fc0aa --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +indent_size = 4 +indent_style = space +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab +tab_width = 2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/DOCS.md b/DOCS.md new file mode 100644 index 0000000..4424e36 --- /dev/null +++ b/DOCS.md @@ -0,0 +1,989 @@ +# Documentación + +Los estilos creados por el layouter se crean al vuelo **(on the fly)**, *[cuando el navegador termina de cargar la web]*. Podemos definir las columnas, los paddings, los margenes, el ancho y alto de un elemento y hasta si tendrá display 'flex'. + +## Configuración + +Opción | Típo | Por Defecto | Descripción +------ | ---- | ------- | ----------- +[**breakpoints**](#breakpoints) | object | [`...`](#breakpoints) | Objeto que contiene definido [los breakpoints](#breakpoints) que usará el sistema. +prefix | string | '' | Define cual será el prefijo para todas las clases CSS que se agregarán a los nodos, esto con el fin de salvaguardar alguna colición con otras clases definidas. +debug | boolean | true | Sirve para habilitar el `console.error` para cuando ocurre alguna configuración inconsistente o se presenta un error. +bridge | boolean | true | Permite insertar los estilos creados por el sistema a travez del método 'insert' del tag scope, sin agregarlo como nodo de texto hijo. **OJO:** *Deshabilita esta opción si el DOM es manipulado por otra librería.* +**ready** | function | null | Sirve como callback para indicar que el procesamiento inicial a finalizado. Se puede usar para quitar el loading overlay de la web (si es que se tiene, claro) + + +## Breakpoints + +Cada breakpoint es un objeto que deve tener como nombre de propiedad un **'alias'** y dentro de ese objeto debe tener las siguientes propiedades: + +Propiedad | Type | Description +------ | ---- | ------- +width | number | Ancho máximo +cols | number | Número de columnas + +**Ejemplo**: + +```javascript +{ + ..., + breakpoints: { + xs: { + width: 320, + cols: 15 + }, + sm: { + width: 768, + cols: 21 + }, + md: { + width: 1024, + cols: 31 + }, + xlg: { + width: 1536, + cols: 51 + } + } +} +``` + +Ese alias definidos se usará para determinar el breakpoint en cada valor. + +### A tomar en cuenta: +- Se pueden definir cuantos breakpoints se requiera, no hay límite. +- Devido a que normalmente se maqueta en 'mobile first' **el breakpoint 'xs' no necesita un 'media query' (osea: @media).** +- Si no se define ninguna unidad de medida en el valor de cualquier directiva (que no sea naturalmente porcentual), se tomará en pixeles [me refiero a esto 📌](#unidades-de-medida-definidas) + +## Directivas + +Nombre | Ejemplo | Descripción +------ | ------- | ------- +[Cols](#cols) | `cols="13/15"` | Determinará las columnas, osea el 'width' de manera porcentual. +[Mart](#mart) | `mart="10"` | Determina el **margen** superior de un nodo. +[Marr](#marr-marb-marl) | `marr="2/15"` | Determinar el **margen** derecho de un nodo. +[Marb](#marr-marb-marl) | `marb="30"` | Determinar el **margen** inferior de un nodo. +[Marl](#marr-marb-marl) | `marl="3/15"` | Determinar el **margen** izquierdo de un nodo. +[Mar](#mar) | `mar="20-2/15-30-3/15"` | Es un shorthand de las directivas: [mart, marr, marb, y marl](#mart-marr-marb-marl). +[Padt](#padt) | `padt="10"` | Determina el **padding** superior de un nodo. +[Padr](#padr-padb-padl) | `padr="2/15"` | Determinar el **padding** derecho de un nodo. +[Padb](#padr-padb-padl) | `padb="30"` | Determinar el **padding** inferior de un nodo. +[Padl](#padr-padb-padl) | `padl="3/15"` | Determinar el **padding** izquierdo de un nodo. +[Pad](#pad) | `pad="20-2/15-30-3/15"` | Es un shorthand de las directivas: [padt, padr, padb, y padl](#mart,-marr,-marb,-marl). +[Flex](#flex) | `flex="jc:ce ai:fs fd:co"` | Determina el **display flex** del nodo, y sus derivados. +[Wdh](#width) | `wdh="100"` | Determina el **ancho** del nodo en pixeles u otra [unidad de medida](#unidades-de-medida-definidas). +[Hgt](#height) | `hgt="100"` | Determina el **alto** del nodo en pixeles u otra [unidad de medida](#unidades-de-medida-definidas). +[Mxw](#maxwidth) | `mxw="200"` | Determina el **máximo ancho** del nodo en píxeles u otra [unidad de medida](#unidades-de-medida-definidas). +[Mxh](#maxheight) | `mxh="100 150@sm"` | Determina el **máximo alto** del nodo en píxeles u otra [unidad de medida](#unidades-de-medida-definidas). +[Miw](#minwidth) | `miw="200"` | Determina el **mínimo ancho** del nodo en píxeles u otra [unidad de medida](#unidades-de-medida-definidas). +[Mih](#minheight) | `mih="100 150@sm"` | Determina el **mínimo alto** del nodo en píxeles u otra [unidad de medida](#unidades-de-medida-definidas). + +## Métodos + +Nombre | Argumentos | Devuelve | Descripción +------ | ------- | ------- | ------- +[setCols](#SetCols) | `Node: HTMLElement \| Element, parameters?: IParams` | `Promise` | Procesa la directiva **'cols'** +[set](#Set) | `Promise` | Procesa un nodo con cualquier directiva. + +- [set](#Set) + - [setCols](#SetCols) + - [setPads](#SetPads) + - [setPadTop](#SetPadTop) + - [setPadRight](#SetPadRight) + - [setPadBottom](#SetPadBottom) + - [setPadLeft](#SetPadLeft) + - [setMars](#SetMars) + - [setMarTop](#SetMarTop) + - [setMarRight](#SetMarRight) + - [setMarBottom](#SetMarBottom) + - [setMarLeft](#SetMarLeft) + - [setFlex](#setFlex) + - [setWidth](#setWidth) + - [setHeight](#setHeight) + - [setMaxWidth](#setMaxWidth) + - [setMaxHeight](#setMaxHeight) + - [setMinWidth](#setMinWidth) + - [setMinHeight](#setMinHeight) + +- [build](#Build) + - [buildCols](#BuildCols) + + - [buildMars](#BuildMars) + - [buildMarTop](#BuildMarTop) + - [buildMarRight](#BuildMarRight) + - [buildMarBottom](#BuildMarBottom) + - [buildMarLeft](#BuildMarLeft) + + - [buildPads](#BuildPads) + - [buildPadTop](#BuildPadTop) + - [buildPadRight](#BuildPadRight) + - [buildPadBottom](#BuildPadBottom) + - [buildPadLeft](#BuildPadLeft) + + - [buildFlex](#BuildFlex) + + - [buildWidth](#BuildWidth) + - [buildHeight](#BuildHeight) + + - [buildMaxWidth](#BuildMaxWidth) + - [buildMaxHeight](#BuildMaxHeight) + - [buildMinWidth](#BuildMinWidth) + - [buildMinHeight](#BuildMinHeight) + +- [getParameters](#getParameters) +- [reset](#reset) + +## Ejemplos + +### Cols + +#### Ejemplo 1: Con breakpoints simples (min-width) +Tenemos un 'DIV' al cual queremos designarle 13 de 15 columnas en mobile, 10 columnas de 31 en tablet y 15 columnas de 27 en desktop, así que creamos **la directiva llamada 'cols'** con el siguiente valor: +```html +
...
+``` +> El sufijo arroba significa que esas columnas aplicarán a partir del breakpoint determinado + +**Explicación:** + +Para el DIV del ejemplo de arriba se determinó que: + +- Tendrá 13 columnas de 15, y como no tiene como sufijo el signo arroba, significa que las tendrá en el 'breakpoint con width más bajo osea el **'xs'**. Si el **DIV** solo tendría esa directiva definida, luego de su auto procesamiento obtendríamos este resultado: +```html +
...
+``` +> Vemos que la directiva 'cols' desapareció del elemento, esto es porque ya no lo necesita una vez procesado + +Y como estilos tendríamos disponible una clase llamada 'cols-13/15' la cual nos daría estos estilos: +```css +.cols-13\/15 { + width: 86.666% +} +``` +**Seguimos**... +- Para el breakpoint 'sm' (osea 'tablet') se determinó que se tendrá 10 columnas de 31, luego de procesarlo obtendríamos este resultado: +```html +
...
+``` +Pero como se determinó en un breakpoint, los estilos estarían regidos por él +```css +@media screen and (min-width: 768px) { + .cols-10\/31\@sm { + width: 32.2580% + } +} +``` +- Para el breakpoint 'md' (osea 'desktop') se determinó que se tendrá 15 columnas de 27, y luego de auto procesarce obtendríamos este resultado: +```html +
...
+``` +```css +@media screen and (min-width: 1024px) { + .cols-15\/27\@sm { + width: 55.5556% + } +} +``` +**Finalmente** si procesamos el valor completo del parametro 'cols' (13/15 10/31@sm 15/27@md) obtendríamos este resultado: +```html +
...
+``` +y pues, estos estilos: +```css +.cols-13\/15 { + width: 86.666% +} + +@media screen and (min-width: 768px) { + .cols-10\/31\@sm { + width: 32.2580% + } +} + +@media screen and (min-width: 1024px) { + .cols-15\/27\@sm { + width: 55.5556% + } +} +``` +> **OJO**: Estas clases estarán disponibles para todos los elementos que necesiten de ellas, son generales. + +#### Ejemplo 2: Con breakpoint min-width y max-width +Tenemos un DIV que a parte de tener 13 columnas de 15 en mobile (el breakpoint 'xs') queremos designarle 20 columnas de 27 desde tablet hasta desktop (desde 'sm' hasta 'md') y a partir de 'lg', osea monitores más grandes, que continue con las 13 columnas de 15 que se le puso en mobile. Entonces... + +```html +
+``` +El guión (-) indica 'desde / hasta' donde se quiere determinar las columnas. En estilos tendríamos esto: +```css +.cols-13\/15 { + width: 86.666% +} + +@media screen and (min-width: 768px) and (max-width: 1023px) { + .cols-20\/27\@sm { + width: 74.0740% + } +} +``` +...aunque tambien se puede usar solo el 'hasta', así: +```html +
+``` +> Esto le dará 20 columnas de 27 hasta 'desktop' (en el breakpoint 'md') + +y en estilos obtendremos esto: +```css +@media screen and (max-width: 1023px) { + .cols-20\/27\@sm { + width: 74.0740% + } +} +``` +#### Ejemplo 3: Columnas explicitas por breakpoint. +Cuando queremos determinar un número de columnas en un breakpoint específico pero sin designarle el número de columnas de donde sacarlas (o máximas), podemos hacerlo así: +```html +
...
+``` +Eso es lo mismo que poner esto: `
...
` + + +Se obvia el número de columnas de donde se sacarán las columnas designadas, yá que el breakpoint tomará el número de columnas designadas para ese breakpoint, osea: el sistema reconocerá que son 13 columnas de 15 xq no se determinó breakpoint, y 15 son las columnas máximas que tiene el breakpoint 'xs' (mobile), y tambien reconocerá que son 20 columnas de 31, xq se determinó 20 columnas en el breakpoint 'sm' (tablet) y las columnas máximas disponibles en tablet son 31. +> **OJO**: **NO se puede** determinar columnas explicitas en breakpoints compuestos, osea en el 'desde / hasta', solo en breakpoints 'desde', osea estos '@sm', si no tirará un mensaje de error y no procesará. + +```html + +
...
+``` + +Este método de columnas explicitas solo es para ahorrarnos un poco de tiempo al designar las columnas que queremos en la directiva 'cols'. Sin embargo podría ser provechoso determinar así por si en algún momento las columnas designadas para un breakpoint en específico cambian, digamos que en el breakpoint 'sm' (tablet), yá no son 31 columnas sino 32, pues con la designación de columna explicitas nos ahorraríamos tener que cambiar en cada elemento donde determinamos `cols="20/31@sm"` + +[↑ Volver Arriba](#directivas) + +### Mar +Es una abreviación del shorthand 'margin' **(y a su vez es un shorthand de las directivas: mart, marr, marb, y marl)** y sirve para determinar los margenes superiores, derechos, inferiores e izquierdos de un elemento. +#### Ejemplo: + +```html +
...
+``` +> Usa la misma sintaxis del margin combencional, osea: margin-top, margin-right, margin-bottom, margin-left. Pero solo para el margin left y right se puede declarar 'auto', si es que se requiere claro. Mini Ejemplo: mar="20-auto" + +**Solo los margenes superiores e inferiores son procesados como pixeles**, los derechos e izquierdos son procesados porcentualmente. + +**Explicación:** En el ejemplo de arriba se está determinando que el DIV : +- Tendrá 20 pixeles de margen superior (margin-top) e inferior, tambien 2 columnas de 15, en mobile. +- Tendrá 40 pixeles de margen superior, 3 columnas de 31 de margin derecho e izquierdo y 20 pixeles de margen inferior en tablet. +- y en desktop, tendrá 60 pixeles de margin superior e inferior y 2 columnas de 31 de margin derecho e izquierdo. + +...luego de auto procesarce obtendríamos este resultado: + +```html +
...
+``` + +> Vemos que la directiva **'mar'** desapareció del elemento, esto es porque yá no lo necesita una vez procesado. + +y pues, estos estilos: +```css +.mar-20-2\/15 { + margin: 20px 13.3333%; +} + +@media screen and (min-width: 768px) { + .mar-40-3\/31-20\@sm { + margin: 40px 9.67742% 20px; + } +} + +@media screen and (min-width: 1024px) { + .mar-60-2\/31\@md { + margin: 60px 6.45161%; + } +} + +``` +> Aquí aplica lo mismo de 'cols', con los breakpoints compuestos, (desde / hasta) + +[↑ Volver Arriba](#directivas) + +> Si se desea determinar los margenes de formar separada es decir solo el margen: superior, derecho, inferior o izquierdo entonces usamos mart, marr, marb, y marl respectivamente, veamoslos a continuación: + +### Mart +Sirve para determinar los margenes superiores de un elemento. + +#### Ejemplo: + +```html +
...
+``` + +**Explicación:** En el ejemplo de arriba se está determinando que el margen superior del DIV sea: +- 10 pixeles en mobile. +- 20.5 pixeles en tablet. +- y 30 pixeles en desktop. + +...luego de auto procesarce obtendríamos este resultado: + +```html +
...
+``` + +> Vemos que la directiva **'mart'** desapareció del elemento, esto es porque yá no lo necesita una vez procesado + +y pues, estos estilos: + +```css +.mart-10 { + margin-top: 10px; +} + +@media screen and (min-width: 768px) { + .mart-20_5\@sm { + margin-top: 20.5px; + } +} + +@media screen and (min-width: 1024px) { + .mart-30\@md { + margin-top: 30px; + } +} +``` + +[↑ Volver Arriba](#directivas) + +### Marr, Marb, Marl +Sirven para determinar los margenes derechos, inferiores e izquierdos respectivamente a un nodo. Es lo mismo que 'mart' + +#### Un simple ejemplo: + +```html +
...
+
...
+
...
+``` +...luego de auto procesarce obtendríamos este resultado: + +```html +
...
+
...
+
...
+``` + +y pues, estos estilos: + +```css +.marr-10 { + margin-right: 10px; +} + +.marb-20 { + margin-bottom: 20px; +} + +.marl-30 { + margin-left: 30px; +} + +@media screen and (min-width: 768px) { + .marr-20_5\@sm { + margin-right: 20.5px; + } + .marr-30_5\@sm { + margin-bottom: 30.5px; + } + .marr-40_5\@sm { + margin-left: 40.5px; + } +} + +@media screen and (min-width: 1024px) { + .marr-30\@md { + margin-right: 30px; + } + .marr-40\@md { + margin-bottom: 40px; + } + .marr-50\@md { + margin-left: 50px; + } +} +``` + +[↑ Volver Arriba](#directivas) + +### Unidades de medida definidas +Para las definiciones de la mayoría de directivas que se auto definen como pixeles, como el 'mart', 'marb', y cualquier otra más, es posible definirle una unidad de medida relativa, las cuales pueden ser: **%, rem, em, ex, vw y vh**, + +**Por ejemplo:** + +```html +
...
+``` +... luego de auto procesarce obtendríamos este resultado: + +```html +
...
+``` + +y pues, estos estilo: + +```css +.mart-0¯20 { + margin-top: 20%; +} +``` +**OJO**: Esto aplica para cualquier otro valor que se auto define como pixeles: **mih, mxw, padt, padb, etc.** + +### Pad +Sirve para determinar los paddings que se le dará. Al igual que la directiva **'mar'**, solo el padding top y bottom se tomarán como pixeles y el left y right como porcentual. + +Tiene exactamente la misma sintaxis que 'mar' + +#### Ejemplo: + +```html +
...
+``` +...luego de auto procesarce obtendríamos este resultado: + +```html +
...
+``` + +y pues, estos estilos: + +```css +.pad-20-1\/15 { + padding: 20px 6.66667%; +} + +@media screen and (min-width: 768px) { + .pad-40-3\/31\@sm { + padding: 40px 9.67742%; + } +} + +@media screen and (min-width: 1024px) { + .pad-60-2\/31\@md { + padding: 60px 6.45161%; + } +} +``` +[↑ Volver Arriba](#directivas) + +### Padt +Sirve para determinar los paddings superiores de un elemento. + +#### Ejemplo: + +```html +
...
+``` + +**Explicación:** En el ejemplo de arriba se está determinando que el padding superior del DIV sea: +- 10 pixeles en mobile. +- 20.5 pixeles en tablet. +- y 30 pixeles en desktop. + +...luego de auto procesarce obtendríamos este resultado: + +```html +
...
+``` + +y pues, estos estilos: + +```css +.padt-10 { + padding-top: 10px; +} + +@media screen and (min-width: 768px) { + .padt-20_5\@sm { + padding-top: 20.5px; + } +} + +@media screen and (min-width: 1024px) { + .padt-30\@md { + padding-top: 30px; + } +} +``` + +[↑ Volver Arriba](#directivas) + +### Padr, Padb, Padl + +Sirven para determinar los paddings derechos, inferiores e izquierdos respectivamente en un elemento. Es lo mismo que 'padt' + +#### Un simple ejemplo: + +```html +
...
+
...
+
...
+``` +...luego de auto procesarce obtendríamos este resultado: + +```html +
...
+
...
+
...
+``` + +y pues, estos estilos: + +```css +.padr-10 { + padding-right: 10px; +} + +.padb-20 { + padding-bottom: 20px; +} + +.padl-30 { + padding-left: 30px; +} + +@media screen and (min-width: 768px) { + .padr-20_5\@sm { + padding-right: 20.5px; + } + .padb-30_5\@sm { + padding-bottom: 30.5px; + } + .padl-40_5\@sm { + padding-left: 40.5px; + } +} + +@media screen and (min-width: 1024px) { + .padr-30\@md { + padding-right: 30px; + } + .padb-40\@md { + padding-bottom: 40px; + } + .padl-50\@md { + padding-left: 50px; + } +} +``` + +[↑ Volver Arriba](#directivas) + +### Flex +Esta es la directiva más interesante, porque es el que determina el **'display'** del elemento. El valor de la directiva **'flex'** se separa entre dos puntos, y no convencionalmente con guión como se hace en **'cols', 'mar' y 'pad'.** + +#### Equivalencias de abreviaciones: +- **jc:** justify-content +- **ai:** align-items +- **ce:** center +- **fs:** flex-start +- **fe:** flex-end +- **sb:** space-between +- **sa:** space-around +- **fw:** flex-wrap +- **nw:** nowrap +- **w:** wrap +- **wr:** wrap-reverse +- **fd:** flex-direction +- **r:** row +- **rr:** row-reverse +- **co:** column +- **cor:** column-reverse +- **fg:** flex-grow +- **fh:** flex-shrink +- **as:** align-self +- **or:** order +- **au:** auto +- **st:** stretch +- **bl:** baseline +- **in:** initial +- **ih:** inheri + +#### Ejemplo: +```html +
...
+``` +> **OJO**: Es posible determinar más de un estilo en el mismo breakpoint, en el caso del ejemplo de arriba, se determinó el `justify-content: flex-start y align-items: flex-start` para el breakpoint 'sm' osea (tablet) + +...luego de auto procesarce obtendríamos este resultado: + +```html +
...
+``` + +y pues, estos estilos: + +```css +.flex-jc\\:c { + justify-content: center; +} + +@media screen and (min-width: 768px) { + .flex-jc\\:fs-ai\\:fs\@sm { + display: flex; + justify-content: flex-start; + align-items: flex-start; + } +} + +@media screen and (min-width: 1024px) { + .flex-jc\\:fe\@md { + display: flex; + justify-content: flex-end; + } +} +``` + +> Nota: cuando determinamos más de un estilo para un mismo breakpoint, el nombre de las clases generadas son concatenadas, solo para ahorrar espacio. + +[↑ Volver Arriba](#directivas) + +### Width +Sirve para determinar el ancho de un nodo en pixeles, siempre y cuando no se defina una unidad de medida. + +#### Ejemplo 1: +```html +
...
+``` + +...luego de auto procesarce .obtendríamos este resultado: + +```html +
...
+``` +y pues, estos estilos: +```css +.wdh-100{ + width:100px +} + +@media screen and (min-width: 768px){ + .wdh-150\@sm{ + width:150px + } +} + +``` + +Es posible determinar las únidades relativas: **%, rem, em, ex, vw y vh.** + +#### Ejemplo 2: +```html +
...
+``` + +...luego de de autoprocesarce obtendríamos este resultado: + +```html +
...
+``` +y pues, estos estilos: +```css +.wdh-0¯100{ + width:100% +} + +@media screen and (min-width: 768px){ + .wdh-0¯150\@sm{ + width:150% + } +} + +``` + +[↑ Volver Arriba](#directivas) + + +### Height +Es lo mismo que el 'Width' pero para determinar el alto, y tambien acepta determinar con unidades de medidas relativas. + +#### Ejemplo 1: +```html +
...
+``` + +#### Ejemplo 2: +```html +
...
+``` + +[↑ Volver Arriba](#directivas) + + +### MaxWidth +Sirve para determinar el máximo ancho que tendrá un nodo en pixeles, siempre y cuando no se defina + +#### Ejemplo: +```html +
...
+``` + +...luego de auto procesarce obtendríamos este resultado: +```html +
...
+``` +y pues, estos estilos: +```css +.mxw-100{ + max-width:100px +} + +@media screen and (min-width: 768px){ + .mxw-150\@sm{ + max-width:150px + } +} + +``` + +[↑ Volver Arriba](#directivas) + + +### MaxHeight +Sirve para determinar el máximo alto que tendrá un nodo en pixeles. + +#### Ejemplo: +```html +
...
+``` + +...luego de auto procesarce obtendríamos este resultado: +```html +
...
+``` +y pues, estos estilos: +```css +.mxh-100{ + max-height:100px +} + +@media screen and (min-width: 768px){ + .mxh-150\@sm{ + max-height:150px + } +} + +``` + +[↑ Volver Arriba](#directivas) + +### MinWidth, MinHeight + +Sirven para determinar el mínimo ancho y mínimo alto en pixeles respectivamente, es lo mismo que el max-width y max-height nombrados más arriba. + +#### Ejemplo: +```html +
...
+
...
+``` + +...luego de auto procesarce obtendríamos este resultado: + +```html +
...
+
...
+``` +y pues, estos estilos: +```css +.miw-100{ + min-width:100px +} + +@media screen and (min-width: 768px){ + .miw-150\@sm{ + min-width:150px + } +} + +@media screen and (min-width: 1024px){ + .miw-200\@sm{ + min-width:200px + } +} + +.mih-300{ + min-height:300px +} + +@media screen and (min-width: 768px){ + .mih-350\@sm{ + min-height:350px + } +} + +@media screen and (min-width: 1024px){ + .mih-400\@sm{ + min-height:400px + } +} + +``` + +[↑ Volver Arriba](#directivas) + +## Métodos: + +### Set +Sirve para procesar todas las directivas aceptados por el sistema, normalmente no se necesitaría usar este método ni los demás métodos de tipo 'set', pero se pueden usar **para procesar nodos virtuales [aquellos que no esstán en el DOM todabía]** + +#### Ejemplo: +Imaginemos que tenemos un DIV en donde hemos designado darle columnas, margenes, paddings y flex todo de un tiron: + +```html +
+``` + +No sería recomendable aplicar los métodos separados de **'setCols', 'setPads', 'setMars' y 'setFlex'** para procesar la directiva, en ese caso procesamos con el método 'set', y éste procesará todos los demás mencionados: + +```javascript +const myDiv = document.createElement('div'); +myDiv.setAttribute('cols', '13/15 10/31@sm-md 15/27@md') +myDiv.setAttribute('pad', '20-1/15 40-3/31@sm 60-2/31@md') +myDiv.setAttribute('mar', '20-2/15 40-3/31@sm 60-2/31@md') +myDiv.setAttribute('flex', 'jc:c jc:fs@sm jc:fe@md ai:fs@sm') +layouter.set(myDiv); +``` +Lo cual nos dará un resultado así: + +```html +
+``` + +Con los siguientes estilos + +```css +.flex-jc\:c { + display: flex; + justify-content: center; +} + +.cols-13\/15 { + width: 86.6667%; +} + +.pad-20-1\/15 { + padding: 20px 6.66667%; +} + +.mar-20-2\/15 { + margin: 20px 13.3333%; +} + +@media screen and (min-width: 768px) { + .cols-10\/31\@sm-md { + width: 32.2581%; + } + + .pad-40-3\/31\@sm { + padding: 40px 9.67742%; + } + + .mar-40-3\/31\@sm { + margin: 40px 9.67742%; + } + + .flex-jc\:fs-ai\:fs\@sm { + display: flex; + justify-content: flex-start; + align-items: flex-start; + } +} + +@media screen and (min-width: 1024px) { + .cols-15\/27\@md { + width: 55.5556%; + } + + .pad-60-2\/31\@md { + padding: 60px 6.45161%; + } + + .mar-60-2\/31\@md { + margin: 60px 6.45161%; + } + + .flex-jc\:fe\@md { + display: flex; + justify-content: flex-end; + } +} +``` + +> OJO: El método **'set'** también procesa las directivas de los margenes y paddings por separado, osea **'mart, marr, padb, padl, etc'** + +> Los estilos creados por el método **'set'** se auto insertan en el sistema para poder ser usado por los nodos virtuales cuando se agreguen al DOM. + +[↑ Volver Arriba](#directivas) + +### SetCols +Es exactamente igual que el método 'set' pero procesa solamente las columnas, de echo... + +### SetPads, SetPadTop, SetPadRight, SetPadBottom, SetPadLeft, SetMars, SetMarTop, SetMarRight, SetMarBottom, SetMarLeft, setMaxWidth, setMaxHeight, setMinWidth, setMinHeight, setFlex + +Son iguales a SetCols pero referencian a procesar los paddings, el padding Top, right, bottom left, los margenes, el margen Top, right, bottom, left, el max/min width y height respectivamente, ah! y casí me olvido el 'setFlex' procesa lo que es pues... la directiva 'flex' XD. + +[↑ Volver Arriba](#directivas) + +## Important Flag + +Es posible, pero no recomendable, adicionar un caracter especial en la declaración de las columnas, margenes, padding, y el display, el cual agregará el "!important" comun que se usa en CSS, este caracter es el 'signo de exclamación'. +> Siempre se debe agregar al final de la sentencia declarada + +**Ejemplo:** + +```html +
+``` + +El cual nos dará el siguiente CSS: + +```css +.cols-13\/15\! { + width:86.667% !important +} + +@media screen and (min-width: 768px) { + .cols-20\/27\@sm-md { + width:74.074% !important + } +} +``` + +## Getters +Podemos acceder a los siguientes getters desde la **variable 'layouter' del objeto 'window'**: + +Propiedad | Type | Description +------ | ------- | ------- +breakpoints | string[] | Devuelve un array con los breakpoints definidos en la configuración. +sizes | { [alias: string]: number } | Devuelve un objeto en donde cada propiedad es el nombre del breakpoint y como valor de esas propiedades los pixeles de ancho designados para esos breakpoints. +cols | { [ alias: string ]: number } | Devuelve un objeto en donde cada propiedad es el nombre del breakpoint y como valor de esas propiedades el número de columnas designadas para esos breakpoints. +styles | { [ alias: string ]: number } | Este getter es interesante, porque devuelve un objeto con todos los estilos creados de forma general. +version | string | Nos devolverá la versión actual de la librería. + +> Tomando en cuenta el ejemplo de breakpoints de más arriba, los getters nos devolverán lo siguiente: + +```javascript +layouter.breakpoints = [ "xs", "sm", "md" ] +layouter.sizes = { xs: 0, sm: 768, md: 1024, } +layouter.cols = { xs: 15, sm: 11, md: 31 } +layouter.styles = { + "cols-10\\/31@sm-md": "@media screen and (min-width: 768px) and (max-width: 1023px){.cols-10\\/31\\@sm-md{width:32.258%}}" + "cols-13\\/15": ".cols-13\\/15{width:86.667%}" + "cols-15\\/27@md": "@media screen and (min-width: 1024px){.cols-15\\/27\\@md{width:55.556%}}" + "flex-jc\\:c": ".flex-jc\\:c{justify-content:center;display: flex}", +} +layouter.version = '1.2' +``` +[↑ Volver Arriba](#documentación) diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b64fd52 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 daniel + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2db3364 --- /dev/null +++ b/README.md @@ -0,0 +1,166 @@ +
+ Layouter +

+
+ ⚡️Arma todo el layout de tu web sin CSS ⚡️ +
+ www.layouter.io +

+
+ +# Layouter +Es una librería que nos permite armar todo el layout **de forma rápida y sencilla**, usando directivas sobre los nodos HTML. Principalmente funciona **basándonos en el uso de una grilla**, *especialmente para la definición de columnas*. + + +- 🚀 **Procesamiento super rápido y paralelo:** Procesa de forma automática todos los nodos que se encuentran al cargar la web y tambien cualquier nuevo nodo que se agregue o empiece a usar alguna directiva. +- 🎉 **Estilos compartidos automáticamente:** Comparte los estilos yá creados de otros nodos previamente procesados. +- ⚗️ **Pre procesamiento de nodos virtuales**: Puede pre procesar nodos virtuales antes de agregarlos al DOM. + +## 🔧 Instalación +Solo hay que llamar en el HTML al script **layouter.umd.js** que se encuentra dentro de la carpeta **'dist'** de este repositorio: + +```html + +``` + +**Y listo!**, eso es todo lo que necesitas para usar el **layouter** con su configuración base. + +## ✨ Ejemplo de uso +Digamos que queremos definir el siguiente layout: +> *teniendo en cuenta que necesitamos definir margenes, altura, ancho por columnas, etc, y cada uno en sus respectivos breakpoints* + +

+ + Layouter Logo +
+ ⚓ Link de esta demo +
+

+ +Entonces haríamos este HTML con las siguientes directivas: + +```html +
+ +
+
+
+
+ +
+ +
+
+
+
+
+ +
+``` +
+Veamos que a pasado + +- para la etiqueta **`
`** se determinó el siguiente layout: + + - Un padding superior e inferior de 24 pixeles en su breakpoint inicial (es decir en mobile), tambien un padding derecho e izquierdo de 1 columna, relativa a las 15 columnas definidas para ese breakpoint. + - Al llegar al breakpoint de **sm** se mantendrá el padding superior e inferior de 24 píxeles pero se determina que se requiere 1 columna de 25 columnas para ese breakpoint. + - Luego, para el breakpoint de **md** se cambia el padding superior e inferior a 30 píxeles y luego se determina que el padding derecho e izquierdo será de 1 columna de 31 columnas para ese breakpoint. + - Finalmente para el breakpoint de **lg** se determinó que el padding superior e inferior sería de 29.26 píxeles y para el padding derecho e izquierdo se tomará 1 columna de 41 columnas de ese breakpoint. + - Por otra parte tambien se determinó que su ancho máximo sería de 1280 píxeles. + - Así como tambien tendrá un margen superior e inferior de 0 y derecho e izquierdo en 'auto'. + +- para la etiqueta **`
`** se determinadó el siguiente layout: + + - Display **'flex'** con 'justify-content' en 'space-between' a partir del breakpoint de **md** es decir a tablet en landscape. + - Margen inferior de 24 pixeles en el breakpoint inicial y 30 píxeles a partir del breakpoint de **md**. + - Para sus dos **divs** hijos se determinó una altura de 100 píxeles. + - Para el primero **div** 11.1 columnas de 29 columnas a partir del breakpoint **md** y solo 24 píxeles de margen inferior hasta el breakpoint de **md**. + - Para el segundo **div** hijo se determinó 16.9 columnas de 29 columnas a partir del breakpoint **md**. + + +- para la etiqueta **`
`** se determinó el siguiente layout: + + - Una altura de 320 pixeles. + - Un margen inferior de 24 pixeles para su breakpoint inicial, 25 pixeles para el breakpoint de **sm** y finalmente 30 pixeles para el breakpoint de **md**. + +- para la etiqueta **`
`** se determinó el siguiente layout: + + - Un display **'flex'** con 'justify-content' de 'space-between'. + - Para sus **divs** hijos se determinó una altura de 200 píxeles y un ancho de 7 columnas de 23 columnas para el breakpoint de **sm**, seguido de 9 columnas de 29 columnas para el breakpoint de **md** y finalmente 12.33 columnas de 39 columnas para el breakpoint de **lg** + +
+ +## ⚙️ Configuración +Por defecto la librería funcionará con la siguiente configuración base: + +```javascript +{ + breakpoints: { + xs: { + width: 360, + cols: 15 + }, + sm: { + width: 600, + cols: 25 + }, + md: { + width: 900, + cols: 31 + }, + lg: { + width: 1200, + cols: 41 + }, + xlg: { + width: 1536, + cols: 51 + } + }, + debug: true, + bridge: false, + prefix: '', + ready: () => { + // initial process completed! + } +} +``` + +Uno puede escribir su propia configuración creando una variable llamada **'layouterConfig' en el objeto 'window'.** Ésta tiene que estar antes de la llamada a la librería. Para saber más revisa la [tabla de opciones de configuración](DOCS.md) + +## ⚡ Directivas + +Nombre | Ejemplo | Descripción +------ | ------- | ------- +[Cols](DOCS.md#cols) | `cols="13/15"` | Determinará las columnas, osea el 'width' de manera porcentual. +[Mart](DOCS.md#mart) | `mart="10"` | Determina el **margen** superior de un nodo. +[Marr](DOCS.md#marr-marb-marl) | `marr="2/15"` | Determinar el **margen** derecho de un nodo. +[Marb](DOCS.md#marr-marb-marl) | `marb="30"` | Determinar el **margen** inferior de un nodo. +[Marl](DOCS.md#marr-marb-marl) | `marl="3/15"` | Determinar el **margen** izquierdo de un nodo. +[Mar](DOCS.md#mar) | `mar="20-2/15-30-3/15"` | Es un shorthand de las directivas: [mart, marr, marb, y marl](DOCS.md#mart-marr-marb-marl). +[Padt](DOCS.md#padt) | `padt="10"` | Determina el **padding** superior de un nodo. +[Padr](DOCS.md#padr-padb-padl) | `padr="2/15"` | Determinar el **padding** derecho de un nodo. +[Padb](DOCS.md#padr-padb-padl) | `padb="30"` | Determinar el **padding** inferior de un nodo. +[Padl](DOCS.md#padr-padb-padl) | `padl="3/15"` | Determinar el **padding** izquierdo de un nodo. +[Pad](DOCS.md#pad) | `pad="20-2/15-30-3/15"` | Es un shorthand de las directivas: [padt, padr, padb, y padl](DOCS.md#mart,-marr,-marb,-marl). +[Flex](DOCS.md#flex) | `flex="jc:ce ai:fs fd:co"` | Determina el **display flex** del nodo, y sus derivados. +[Wdh](DOCS.md#width) | `wdh="100"` | Determina el **ancho** del nodo en pixeles u otra [unidad de medida](DOCS.md#unidades-de-medida-definidas). +[Hgt](DOCS.md#height) | `hgt="100"` | Determina el **alto** del nodo en pixeles u otra [unidad de medida](DOCS.md#unidades-de-medida-definidas). +[Mxw](DOCS.md#maxwidth) | `mxw="200"` | Determina el **máximo ancho** del nodo en píxeles u otra [unidad de medida](DOCS.md#unidades-de-medida-definidas). +[Mxh](DOCS.md#maxheight) | `mxh="200"` | Determina el **máximo alto** del nodo en píxeles u otra [unidad de medida](DOCS.md#unidades-de-medida-definidas). +[Miw](DOCS.md#minwidth) | `miw="300"` | Determina el **mínimo ancho** del nodo en píxeles u otra [unidad de medida](DOCS.md#unidades-de-medida-definidas). +[Mih](DOCS.md#minheight) | `mih="300"` | Determina el **mínimo alto** del nodo en píxeles u otra [unidad de medida](DOCS.md#unidades-de-medida-definidas). + +## 📚 ¿Dónde obtener ayuda? +Hay una extensa documentación en el archivo [DOCS.md](DOCS.md). + +## 📝 Trabajo planeado +1. Adicionar una directiva para el posicionamiento. **En progreso...** 🏗️ +2. Adicionar alias más semánticos para las directivas. (Ejm: de **'mar'** a **'margin'** o solo **'m'**) +3. Crear componente para [React JS](https://reactjs.org) +4. Crear componente para [Vue JS](https://vuejs.org) +5. Crear componente para [Svelte JS](https://svelte.dev) + +## 🧾 Licencia + +El código y la documentación se publican bajo la [Licencia MIT](LICENSE). diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 0000000..6951252 --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,933 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 0000000..d0d1138 --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1,65 @@ +{"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\main.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\main.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":78}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":52}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":44}},"6":{"start":{"line":8,"column":0},"end":{"line":8,"column":48}},"7":{"start":{"line":9,"column":0},"end":{"line":9,"column":52}},"8":{"start":{"line":10,"column":0},"end":{"line":10,"column":54}},"9":{"start":{"line":11,"column":0},"end":{"line":11,"column":50}},"10":{"start":{"line":12,"column":0},"end":{"line":12,"column":44}},"11":{"start":{"line":13,"column":0},"end":{"line":13,"column":48}},"12":{"start":{"line":14,"column":0},"end":{"line":14,"column":52}},"13":{"start":{"line":15,"column":0},"end":{"line":15,"column":54}},"14":{"start":{"line":16,"column":0},"end":{"line":16,"column":50}},"15":{"start":{"line":17,"column":0},"end":{"line":17,"column":52}},"16":{"start":{"line":18,"column":0},"end":{"line":18,"column":54}},"17":{"start":{"line":19,"column":0},"end":{"line":19,"column":52}},"18":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"19":{"start":{"line":21,"column":0},"end":{"line":21,"column":48}},"20":{"start":{"line":22,"column":0},"end":{"line":22,"column":46}},"21":{"start":{"line":24,"column":0},"end":{"line":24,"column":32}},"22":{"start":{"line":25,"column":0},"end":{"line":25,"column":40}},"23":{"start":{"line":26,"column":0},"end":{"line":26,"column":40}},"24":{"start":{"line":27,"column":0},"end":{"line":27,"column":44}},"25":{"start":{"line":28,"column":0},"end":{"line":28,"column":50}},"26":{"start":{"line":29,"column":0},"end":{"line":29,"column":46}},"27":{"start":{"line":30,"column":0},"end":{"line":30,"column":48}},"28":{"start":{"line":31,"column":0},"end":{"line":31,"column":40}},"29":{"start":{"line":32,"column":0},"end":{"line":32,"column":44}},"30":{"start":{"line":33,"column":0},"end":{"line":33,"column":48}},"31":{"start":{"line":34,"column":0},"end":{"line":34,"column":50}},"32":{"start":{"line":35,"column":0},"end":{"line":35,"column":48}},"33":{"start":{"line":36,"column":0},"end":{"line":36,"column":50}},"34":{"start":{"line":37,"column":0},"end":{"line":37,"column":46}},"35":{"start":{"line":38,"column":0},"end":{"line":38,"column":48}},"36":{"start":{"line":39,"column":0},"end":{"line":39,"column":40}},"37":{"start":{"line":40,"column":0},"end":{"line":40,"column":44}},"38":{"start":{"line":41,"column":0},"end":{"line":41,"column":42}},"39":{"start":{"line":42,"column":0},"end":{"line":42,"column":50}},"40":{"start":{"line":44,"column":0},"end":{"line":44,"column":48}},"41":{"start":{"line":45,"column":0},"end":{"line":45,"column":36}},"42":{"start":{"line":49,"column":0},"end":{"line":49,"column":60}},"43":{"start":{"line":50,"column":0},"end":{"line":50,"column":50}},"44":{"start":{"line":214,"column":17},"end":{"line":270,"column":1}},"45":{"start":{"line":215,"column":17},"end":{"line":215,"column":38}},"46":{"start":{"line":217,"column":19},"end":{"line":261,"column":4}},"47":{"start":{"line":264,"column":2},"end":{"line":267,"column":5}},"48":{"start":{"line":265,"column":4},"end":{"line":265,"column":49}},"49":{"start":{"line":265,"column":24},"end":{"line":265,"column":49}},"50":{"start":{"line":266,"column":4},"end":{"line":266,"column":27}},"51":{"start":{"line":269,"column":2},"end":{"line":269,"column":null}},"52":{"start":{"line":272,"column":0},"end":{"line":274,"column":null}},"53":{"start":{"line":273,"column":2},"end":{"line":273,"column":31}},"54":{"start":{"line":276,"column":0},"end":{"line":276,"column":24}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":214,"column":17},"end":{"line":214,"column":18}},"loc":{"start":{"line":214,"column":70},"end":{"line":270,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":264,"column":35},"end":{"line":264,"column":38}},"loc":{"start":{"line":264,"column":40},"end":{"line":267,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":214,"column":18},"end":{"line":214,"column":55}},"type":"default-arg","locations":[{"start":{"line":214,"column":53},"end":{"line":214,"column":55}}]},"1":{"loc":{"start":{"line":265,"column":4},"end":{"line":265,"column":49}},"type":"if","locations":[{"start":{"line":265,"column":4},"end":{"line":265,"column":49}}]},"2":{"loc":{"start":{"line":272,"column":0},"end":{"line":274,"column":null}},"type":"if","locations":[{"start":{"line":272,"column":0},"end":{"line":274,"column":null}}]},"3":{"loc":{"start":{"line":272,"column":4},"end":{"line":272,"column":44}},"type":"binary-expr","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":10}},{"start":{"line":272,"column":14},"end":{"line":272,"column":44}}]}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":1,"50":2,"51":2,"52":2,"53":0,"54":2},"f":{"0":2,"1":2},"b":{"0":[2],"1":[1],"2":[0],"3":[2,2]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\config\\flex.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\config\\flex.ts","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":27,"column":2}},"1":{"start":{"line":29,"column":13},"end":{"line":29,"column":48}}},"fnMap":{},"branchMap":{},"s":{"0":44,"1":44},"f":{},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\config\\main.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\config\\main.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":75}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":78}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":63}},"3":{"start":{"line":37,"column":38},"end":{"line":58,"column":2}},"4":{"start":{"line":60,"column":11},"end":{"line":65,"column":2}},"5":{"start":{"line":69,"column":19},"end":{"line":82,"column":1}},"6":{"start":{"line":74,"column":16},"end":{"line":74,"column":45}},"7":{"start":{"line":75,"column":19},"end":{"line":75,"column":49}},"8":{"start":{"line":76,"column":2},"end":{"line":81,"column":4}},"9":{"start":{"line":84,"column":25},"end":{"line":107,"column":1}},"10":{"start":{"line":85,"column":2},"end":{"line":98,"column":null}},"11":{"start":{"line":86,"column":4},"end":{"line":90,"column":6}},"12":{"start":{"line":92,"column":4},"end":{"line":97,"column":null}},"13":{"start":{"line":93,"column":6},"end":{"line":96,"column":8}},"14":{"start":{"line":100,"column":2},"end":{"line":104,"column":4}},"15":{"start":{"line":106,"column":2},"end":{"line":106,"column":16}},"16":{"start":{"line":84,"column":13},"end":{"line":84,"column":25}},"17":{"start":{"line":109,"column":25},"end":{"line":111,"column":1}},"18":{"start":{"line":110,"column":2},"end":{"line":110,"column":37}},"19":{"start":{"line":109,"column":13},"end":{"line":109,"column":25}},"20":{"start":{"line":113,"column":18},"end":{"line":115,"column":1}},"21":{"start":{"line":114,"column":2},"end":{"line":114,"column":38}},"22":{"start":{"line":117,"column":28},"end":{"line":131,"column":1}},"23":{"start":{"line":118,"column":2},"end":{"line":121,"column":4}},"24":{"start":{"line":123,"column":2},"end":{"line":128,"column":null}},"25":{"start":{"line":124,"column":4},"end":{"line":127,"column":6}},"26":{"start":{"line":130,"column":2},"end":{"line":130,"column":16}},"27":{"start":{"line":117,"column":13},"end":{"line":117,"column":28}},"28":{"start":{"line":133,"column":0},"end":{"line":133,"column":25}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":69,"column":19},"end":{"line":69,"column":null}},"loc":{"start":{"line":73,"column":17},"end":{"line":82,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":84,"column":25},"end":{"line":84,"column":26}},"loc":{"start":{"line":84,"column":75},"end":{"line":107,"column":1}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":109,"column":25},"end":{"line":109,"column":27}},"loc":{"start":{"line":109,"column":64},"end":{"line":111,"column":1}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":113,"column":18},"end":{"line":113,"column":19}},"loc":{"start":{"line":113,"column":54},"end":{"line":115,"column":1}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":117,"column":28},"end":{"line":117,"column":29}},"loc":{"start":{"line":117,"column":74},"end":{"line":131,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":84,"column":26},"end":{"line":84,"column":62}},"type":"default-arg","locations":[{"start":{"line":84,"column":60},"end":{"line":84,"column":62}}]},"1":{"loc":{"start":{"line":85,"column":2},"end":{"line":98,"column":null}},"type":"if","locations":[{"start":{"line":85,"column":2},"end":{"line":98,"column":null}},{"start":{"line":91,"column":9},"end":{"line":98,"column":null}}]},"2":{"loc":{"start":{"line":85,"column":6},"end":{"line":85,"column":37}},"type":"binary-expr","locations":[{"start":{"line":85,"column":6},"end":{"line":85,"column":12}},{"start":{"line":85,"column":16},"end":{"line":85,"column":37}}]},"3":{"loc":{"start":{"line":92,"column":4},"end":{"line":97,"column":null}},"type":"if","locations":[{"start":{"line":92,"column":4},"end":{"line":97,"column":null}}]},"4":{"loc":{"start":{"line":113,"column":19},"end":{"line":113,"column":41}},"type":"default-arg","locations":[{"start":{"line":113,"column":36},"end":{"line":113,"column":41}}]},"5":{"loc":{"start":{"line":114,"column":9},"end":{"line":114,"column":37}},"type":"cond-expr","locations":[{"start":{"line":114,"column":17},"end":{"line":114,"column":28}},{"start":{"line":114,"column":31},"end":{"line":114,"column":37}}]},"6":{"loc":{"start":{"line":123,"column":2},"end":{"line":128,"column":null}},"type":"if","locations":[{"start":{"line":123,"column":2},"end":{"line":128,"column":null}}]}},"s":{"0":47,"1":47,"2":47,"3":47,"4":47,"5":47,"6":49,"7":49,"8":49,"9":47,"10":48,"11":2,"12":46,"13":46,"14":48,"15":48,"16":47,"17":47,"18":117,"19":47,"20":47,"21":575,"22":47,"23":1,"24":1,"25":1,"26":1,"27":47,"28":47},"f":{"0":49,"1":48,"2":117,"3":575,"4":1},"b":{"0":[36],"1":[2,46],"2":[48,48],"3":[46],"4":[574],"5":[1,574],"6":[1]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\config\\processors.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\config\\processors.ts","statementMap":{"0":{"start":{"line":9,"column":13},"end":{"line":114,"column":2}}},"fnMap":{},"branchMap":{},"s":{"0":45},"f":{},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\breakpointsNums.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\breakpointsNums.ts","statementMap":{"0":{"start":{"line":19,"column":24},"end":{"line":46,"column":1}},"1":{"start":{"line":23,"column":32},"end":{"line":23,"column":34}},"2":{"start":{"line":25,"column":2},"end":{"line":43,"column":null}},"3":{"start":{"line":26,"column":4},"end":{"line":38,"column":9}},"4":{"start":{"line":28,"column":8},"end":{"line":31,"column":10}},"5":{"start":{"line":34,"column":8},"end":{"line":34,"column":58}},"6":{"start":{"line":37,"column":8},"end":{"line":37,"column":66}},"7":{"start":{"line":40,"column":4},"end":{"line":42,"column":7}},"8":{"start":{"line":41,"column":6},"end":{"line":41,"column":39}},"9":{"start":{"line":45,"column":2},"end":{"line":45,"column":15}},"10":{"start":{"line":48,"column":0},"end":{"line":48,"column":31}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":19,"column":24},"end":{"line":19,"column":null}},"loc":{"start":{"line":22,"column":20},"end":{"line":46,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":27,"column":11},"end":{"line":27,"column":12}},"loc":{"start":{"line":27,"column":26},"end":{"line":32,"column":7}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":33,"column":12},"end":{"line":33,"column":13}},"loc":{"start":{"line":34,"column":8},"end":{"line":34,"column":58}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":36,"column":15},"end":{"line":36,"column":16}},"loc":{"start":{"line":36,"column":50},"end":{"line":38,"column":7}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":40,"column":32},"end":{"line":40,"column":34}},"loc":{"start":{"line":40,"column":37},"end":{"line":42,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":2},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":2},"end":{"line":43,"column":null}},{"start":{"line":39,"column":9},"end":{"line":43,"column":null}}]},"1":{"loc":{"start":{"line":34,"column":8},"end":{"line":34,"column":58}},"type":"cond-expr","locations":[{"start":{"line":34,"column":28},"end":{"line":34,"column":29}},{"start":{"line":34,"column":32},"end":{"line":34,"column":58}}]},"2":{"loc":{"start":{"line":34,"column":32},"end":{"line":34,"column":58}},"type":"cond-expr","locations":[{"start":{"line":34,"column":52},"end":{"line":34,"column":54}},{"start":{"line":34,"column":57},"end":{"line":34,"column":58}}]},"3":{"loc":{"start":{"line":37,"column":26},"end":{"line":37,"column":65}},"type":"cond-expr","locations":[{"start":{"line":37,"column":35},"end":{"line":37,"column":36}},{"start":{"line":37,"column":39},"end":{"line":37,"column":65}}]}},"s":{"0":49,"1":101,"2":101,"3":51,"4":241,"5":194,"6":241,"7":50,"8":237,"9":101,"10":49},"f":{"0":101,"1":241,"2":194,"3":241,"4":237},"b":{"0":[51,50],"1":[189,5],"2":[5,0],"3":[51,190]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\breakpointsOrdered.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\breakpointsOrdered.ts","statementMap":{"0":{"start":{"line":4,"column":27},"end":{"line":8,"column":1}},"1":{"start":{"line":5,"column":35},"end":{"line":5,"column":37}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":74}},"3":{"start":{"line":6,"column":40},"end":{"line":6,"column":72}},"4":{"start":{"line":7,"column":2},"end":{"line":7,"column":20}},"5":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":27},"end":{"line":4,"column":29}},"loc":{"start":{"line":4,"column":65},"end":{"line":8,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":30},"end":{"line":6,"column":36}},"loc":{"start":{"line":6,"column":40},"end":{"line":6,"column":72}}}},"branchMap":{},"s":{"0":48,"1":50,"2":50,"3":237,"4":50,"5":48},"f":{"0":50,"1":237},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\buildAttr.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\buildAttr.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":47}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":42}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":48}},"3":{"start":{"line":6,"column":18},"end":{"line":35,"column":1}},"4":{"start":{"line":11,"column":24},"end":{"line":11,"column":26}},"5":{"start":{"line":13,"column":2},"end":{"line":27,"column":5}},"6":{"start":{"line":14,"column":27},"end":{"line":14,"column":46}},"7":{"start":{"line":15,"column":20},"end":{"line":15,"column":46}},"8":{"start":{"line":18,"column":20},"end":{"line":21,"column":16}},"9":{"start":{"line":20,"column":16},"end":{"line":20,"column":34}},"10":{"start":{"line":22,"column":4},"end":{"line":22,"column":61}},"11":{"start":{"line":22,"column":34},"end":{"line":22,"column":61}},"12":{"start":{"line":23,"column":4},"end":{"line":26,"column":6}},"13":{"start":{"line":30,"column":2},"end":{"line":34,"column":5}},"14":{"start":{"line":37,"column":0},"end":{"line":37,"column":25}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":18},"end":{"line":6,"column":null}},"loc":{"start":{"line":10,"column":4},"end":{"line":35,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":28},"end":{"line":13,"column":33}},"loc":{"start":{"line":13,"column":36},"end":{"line":27,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":20,"column":11},"end":{"line":20,"column":12}},"loc":{"start":{"line":20,"column":16},"end":{"line":20,"column":34}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":31}},"type":"default-arg","locations":[{"start":{"line":9,"column":26},"end":{"line":9,"column":31}}]},"1":{"loc":{"start":{"line":22,"column":4},"end":{"line":22,"column":61}},"type":"if","locations":[{"start":{"line":22,"column":4},"end":{"line":22,"column":61}}]}},"s":{"0":39,"1":39,"2":39,"3":39,"4":135,"5":135,"6":252,"7":252,"8":252,"9":298,"10":252,"11":52,"12":252,"13":135,"14":39},"f":{"0":135,"1":252,"2":298},"b":{"0":[1],"1":[52]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\buildCss.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\buildCss.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":49}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":55}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"3":{"start":{"line":21,"column":17},"end":{"line":32,"column":1}},"4":{"start":{"line":23,"column":20},"end":{"line":23,"column":53}},"5":{"start":{"line":26,"column":2},"end":{"line":28,"column":null}},"6":{"start":{"line":27,"column":4},"end":{"line":27,"column":27}},"7":{"start":{"line":31,"column":2},"end":{"line":31,"column":32}},"8":{"start":{"line":34,"column":0},"end":{"line":34,"column":24}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":17},"end":{"line":21,"column":18}},"loc":{"start":{"line":21,"column":46},"end":{"line":32,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":2},"end":{"line":28,"column":null}},"type":"if","locations":[{"start":{"line":26,"column":2},"end":{"line":28,"column":null}}]}},"s":{"0":43,"1":43,"2":43,"3":43,"4":165,"5":165,"6":76,"7":165,"8":43},"f":{"0":165},"b":{"0":[76]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\calPercentage.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\calPercentage.ts","statementMap":{"0":{"start":{"line":1,"column":22},"end":{"line":6,"column":1}},"1":{"start":{"line":2,"column":14},"end":{"line":2,"column":29}},"2":{"start":{"line":3,"column":22},"end":{"line":3,"column":49}},"3":{"start":{"line":4,"column":17},"end":{"line":4,"column":51}},"4":{"start":{"line":5,"column":2},"end":{"line":5,"column":22}},"5":{"start":{"line":8,"column":0},"end":{"line":8,"column":29}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":22},"end":{"line":1,"column":23}},"loc":{"start":{"line":1,"column":57},"end":{"line":6,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":17},"end":{"line":4,"column":51}},"type":"cond-expr","locations":[{"start":{"line":4,"column":31},"end":{"line":4,"column":45}},{"start":{"line":4,"column":48},"end":{"line":4,"column":51}}]}},"s":{"0":42,"1":48,"2":48,"3":48,"4":48,"5":42},"f":{"0":48},"b":{"0":[32,16]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\createScopeStyles.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\createScopeStyles.ts","statementMap":{"0":{"start":{"line":20,"column":26},"end":{"line":67,"column":1}},"1":{"start":{"line":26,"column":20},"end":{"line":26,"column":61}},"2":{"start":{"line":27,"column":2},"end":{"line":45,"column":null}},"3":{"start":{"line":28,"column":4},"end":{"line":28,"column":50}},"4":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"5":{"start":{"line":30,"column":23},"end":{"line":30,"column":56}},"6":{"start":{"line":31,"column":4},"end":{"line":43,"column":null}},"7":{"start":{"line":33,"column":8},"end":{"line":33,"column":51}},"8":{"start":{"line":34,"column":8},"end":{"line":34,"column":14}},"9":{"start":{"line":36,"column":8},"end":{"line":38,"column":48}},"10":{"start":{"line":39,"column":8},"end":{"line":39,"column":14}},"11":{"start":{"line":41,"column":8},"end":{"line":41,"column":38}},"12":{"start":{"line":42,"column":8},"end":{"line":42,"column":14}},"13":{"start":{"line":44,"column":4},"end":{"line":44,"column":38}},"14":{"start":{"line":48,"column":2},"end":{"line":65,"column":null}},"15":{"start":{"line":49,"column":4},"end":{"line":52,"column":6}},"16":{"start":{"line":54,"column":4},"end":{"line":64,"column":6}},"17":{"start":{"line":57,"column":11},"end":{"line":59,"column":12}},"18":{"start":{"line":66,"column":2},"end":{"line":66,"column":16}},"19":{"start":{"line":69,"column":0},"end":{"line":69,"column":33}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":20,"column":26},"end":{"line":20,"column":27}},"loc":{"start":{"line":25,"column":46},"end":{"line":67,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":56,"column":20},"end":{"line":56,"column":21}},"loc":{"start":{"line":56,"column":40},"end":{"line":60,"column":9}}}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":2},"end":{"line":45,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":2},"end":{"line":45,"column":null}}]},"1":{"loc":{"start":{"line":31,"column":4},"end":{"line":43,"column":null}},"type":"switch","locations":[{"start":{"line":32,"column":6},"end":{"line":34,"column":14}},{"start":{"line":35,"column":6},"end":{"line":39,"column":14}},{"start":{"line":40,"column":6},"end":{"line":42,"column":14}}]},"2":{"loc":{"start":{"line":36,"column":8},"end":{"line":38,"column":47}},"type":"cond-expr","locations":[{"start":{"line":37,"column":12},"end":{"line":37,"column":66}},{"start":{"line":38,"column":12},"end":{"line":38,"column":47}}]},"3":{"loc":{"start":{"line":48,"column":2},"end":{"line":65,"column":null}},"type":"if","locations":[{"start":{"line":48,"column":2},"end":{"line":65,"column":null}},{"start":{"line":53,"column":9},"end":{"line":65,"column":null}}]}},"s":{"0":48,"1":245,"2":245,"3":237,"4":237,"5":237,"6":237,"7":4,"8":4,"9":3,"10":3,"11":230,"12":230,"13":237,"14":245,"15":236,"16":9,"17":1,"18":245,"19":48},"f":{"0":245,"1":1},"b":{"0":[237],"1":[4,3,230],"2":[2,1],"3":[236,9]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\createStyles.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\createStyles.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":47}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":36}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":66}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":56}},"4":{"start":{"line":11,"column":21},"end":{"line":79,"column":1}},"5":{"start":{"line":12,"column":20},"end":{"line":12,"column":28}},"6":{"start":{"line":13,"column":16},"end":{"line":13,"column":31}},"7":{"start":{"line":14,"column":17},"end":{"line":14,"column":33}},"8":{"start":{"line":15,"column":15},"end":{"line":15,"column":44}},"9":{"start":{"line":16,"column":26},"end":{"line":16,"column":28}},"10":{"start":{"line":18,"column":2},"end":{"line":77,"column":5}},"11":{"start":{"line":20,"column":27},"end":{"line":20,"column":39}},"12":{"start":{"line":23,"column":20},"end":{"line":23,"column":34}},"13":{"start":{"line":24,"column":4},"end":{"line":26,"column":null}},"14":{"start":{"line":25,"column":6},"end":{"line":25,"column":94}},"15":{"start":{"line":28,"column":24},"end":{"line":28,"column":50}},"16":{"start":{"line":29,"column":4},"end":{"line":29,"column":142}},"17":{"start":{"line":33,"column":4},"end":{"line":53,"column":null}},"18":{"start":{"line":34,"column":6},"end":{"line":34,"column":33}},"19":{"start":{"line":35,"column":28},"end":{"line":37,"column":26}},"20":{"start":{"line":40,"column":29},"end":{"line":42,"column":76}},"21":{"start":{"line":42,"column":32},"end":{"line":42,"column":75}},"22":{"start":{"line":43,"column":6},"end":{"line":50,"column":null}},"23":{"start":{"line":45,"column":8},"end":{"line":47,"column":null}},"24":{"start":{"line":46,"column":10},"end":{"line":46,"column":38}},"25":{"start":{"line":49,"column":8},"end":{"line":49,"column":36}},"26":{"start":{"line":52,"column":6},"end":{"line":52,"column":46}},"27":{"start":{"line":55,"column":15},"end":{"line":55,"column":35}},"28":{"start":{"line":56,"column":17},"end":{"line":56,"column":22}},"29":{"start":{"line":57,"column":4},"end":{"line":71,"column":null}},"30":{"start":{"line":59,"column":6},"end":{"line":64,"column":null}},"31":{"start":{"line":60,"column":8},"end":{"line":60,"column":51}},"32":{"start":{"line":62,"column":8},"end":{"line":62,"column":77}},"33":{"start":{"line":63,"column":8},"end":{"line":63,"column":22}},"34":{"start":{"line":66,"column":24},"end":{"line":66,"column":37}},"35":{"start":{"line":67,"column":18},"end":{"line":67,"column":30}},"36":{"start":{"line":68,"column":6},"end":{"line":68,"column":64}},"37":{"start":{"line":68,"column":15},"end":{"line":68,"column":64}},"38":{"start":{"line":69,"column":18},"end":{"line":69,"column":30}},"39":{"start":{"line":70,"column":6},"end":{"line":70,"column":56}},"40":{"start":{"line":73,"column":4},"end":{"line":75,"column":null}},"41":{"start":{"line":74,"column":6},"end":{"line":74,"column":78}},"42":{"start":{"line":76,"column":4},"end":{"line":76,"column":29}},"43":{"start":{"line":78,"column":2},"end":{"line":78,"column":16}},"44":{"start":{"line":81,"column":0},"end":{"line":81,"column":28}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":21},"end":{"line":11,"column":22}},"loc":{"start":{"line":11,"column":74},"end":{"line":79,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":27},"end":{"line":18,"column":29}},"loc":{"start":{"line":18,"column":32},"end":{"line":77,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":42,"column":16},"end":{"line":42,"column":28}},"loc":{"start":{"line":42,"column":32},"end":{"line":42,"column":75}}}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":null}}]},"1":{"loc":{"start":{"line":28,"column":24},"end":{"line":28,"column":50}},"type":"cond-expr","locations":[{"start":{"line":28,"column":33},"end":{"line":28,"column":45}},{"start":{"line":28,"column":48},"end":{"line":28,"column":50}}]},"2":{"loc":{"start":{"line":33,"column":4},"end":{"line":53,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":53,"column":null}},{"start":{"line":51,"column":11},"end":{"line":53,"column":null}}]},"3":{"loc":{"start":{"line":35,"column":28},"end":{"line":37,"column":26}},"type":"cond-expr","locations":[{"start":{"line":36,"column":10},"end":{"line":36,"column":37}},{"start":{"line":37,"column":10},"end":{"line":37,"column":26}}]},"4":{"loc":{"start":{"line":43,"column":6},"end":{"line":50,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":6},"end":{"line":50,"column":null}},{"start":{"line":48,"column":13},"end":{"line":50,"column":null}}]},"5":{"loc":{"start":{"line":45,"column":8},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":8},"end":{"line":47,"column":null}}]},"6":{"loc":{"start":{"line":57,"column":4},"end":{"line":71,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":4},"end":{"line":71,"column":null}},{"start":{"line":65,"column":11},"end":{"line":71,"column":null}}]},"7":{"loc":{"start":{"line":59,"column":6},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":6},"end":{"line":64,"column":null}},{"start":{"line":61,"column":13},"end":{"line":64,"column":null}}]},"8":{"loc":{"start":{"line":68,"column":6},"end":{"line":68,"column":64}},"type":"if","locations":[{"start":{"line":68,"column":6},"end":{"line":68,"column":64}}]},"9":{"loc":{"start":{"line":73,"column":4},"end":{"line":75,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":75,"column":null}}]}},"s":{"0":44,"1":44,"2":44,"3":44,"4":44,"5":166,"6":166,"7":166,"8":166,"9":166,"10":166,"11":303,"12":303,"13":303,"14":2,"15":303,"16":303,"17":303,"18":24,"19":24,"20":24,"21":96,"22":24,"23":2,"24":1,"25":22,"26":279,"27":303,"28":303,"29":303,"30":294,"31":142,"32":152,"33":152,"34":9,"35":9,"36":9,"37":4,"38":9,"39":9,"40":303,"41":151,"42":303,"43":166,"44":44},"f":{"0":166,"1":303,"2":96},"b":{"0":[2],"1":[1,302],"2":[24,279],"3":[3,21],"4":[2,22],"5":[1],"6":[294,9],"7":[142,152],"8":[4],"9":[151]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\getScopeByclassName.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\getScopeByclassName.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":77}},"2":{"start":{"line":4,"column":28},"end":{"line":48,"column":1}},"3":{"start":{"line":5,"column":20},"end":{"line":5,"column":47}},"4":{"start":{"line":6,"column":18},"end":{"line":6,"column":40}},"5":{"start":{"line":7,"column":20},"end":{"line":7,"column":28}},"6":{"start":{"line":8,"column":16},"end":{"line":8,"column":31}},"7":{"start":{"line":9,"column":17},"end":{"line":9,"column":33}},"8":{"start":{"line":12,"column":2},"end":{"line":15,"column":null}},"9":{"start":{"line":13,"column":20},"end":{"line":13,"column":57}},"10":{"start":{"line":14,"column":4},"end":{"line":14,"column":36}},"11":{"start":{"line":18,"column":13},"end":{"line":18,"column":45}},"12":{"start":{"line":19,"column":2},"end":{"line":19,"column":42}},"13":{"start":{"line":19,"column":25},"end":{"line":19,"column":42}},"14":{"start":{"line":22,"column":2},"end":{"line":32,"column":null}},"15":{"start":{"line":23,"column":4},"end":{"line":23,"column":51}},"16":{"start":{"line":23,"column":34},"end":{"line":23,"column":51}},"17":{"start":{"line":24,"column":20},"end":{"line":24,"column":35}},"18":{"start":{"line":25,"column":4},"end":{"line":30,"column":7}},"19":{"start":{"line":31,"column":4},"end":{"line":31,"column":21}},"20":{"start":{"line":35,"column":2},"end":{"line":37,"column":null}},"21":{"start":{"line":36,"column":4},"end":{"line":36,"column":21}},"22":{"start":{"line":39,"column":17},"end":{"line":39,"column":33}},"23":{"start":{"line":40,"column":2},"end":{"line":45,"column":5}},"24":{"start":{"line":47,"column":2},"end":{"line":47,"column":19}},"25":{"start":{"line":50,"column":0},"end":{"line":50,"column":35}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":28},"end":{"line":4,"column":29}},"loc":{"start":{"line":4,"column":71},"end":{"line":48,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":2},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":12,"column":2},"end":{"line":15,"column":null}}]},"1":{"loc":{"start":{"line":19,"column":2},"end":{"line":19,"column":42}},"type":"if","locations":[{"start":{"line":19,"column":2},"end":{"line":19,"column":42}}]},"2":{"loc":{"start":{"line":22,"column":2},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":22,"column":2},"end":{"line":32,"column":null}}]},"3":{"loc":{"start":{"line":23,"column":4},"end":{"line":23,"column":51}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":23,"column":51}}]},"4":{"loc":{"start":{"line":35,"column":2},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":2},"end":{"line":37,"column":null}}]}},"s":{"0":43,"1":43,"2":43,"3":120,"4":120,"5":120,"6":120,"7":120,"8":120,"9":49,"10":49,"11":71,"12":71,"13":62,"14":9,"15":6,"16":3,"17":3,"18":3,"19":3,"20":3,"21":1,"22":2,"23":2,"24":2,"25":43},"f":{"0":120},"b":{"0":[49],"1":[62],"2":[6],"3":[3],"4":[1]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\initAutoProcessor.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\initAutoProcessor.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":50}},"1":{"start":{"line":4,"column":26},"end":{"line":19,"column":1}},"2":{"start":{"line":5,"column":2},"end":{"line":18,"column":5}},"3":{"start":{"line":6,"column":18},"end":{"line":6,"column":41}},"4":{"start":{"line":7,"column":18},"end":{"line":7,"column":59}},"5":{"start":{"line":7,"column":36},"end":{"line":7,"column":47}},"6":{"start":{"line":8,"column":18},"end":{"line":8,"column":50}},"7":{"start":{"line":9,"column":21},"end":{"line":9,"column":30}},"8":{"start":{"line":10,"column":4},"end":{"line":12,"column":7}},"9":{"start":{"line":11,"column":6},"end":{"line":11,"column":29}},"10":{"start":{"line":13,"column":38},"end":{"line":13,"column":40}},"11":{"start":{"line":14,"column":4},"end":{"line":16,"column":7}},"12":{"start":{"line":15,"column":6},"end":{"line":15,"column":65}},"13":{"start":{"line":17,"column":4},"end":{"line":17,"column":40}},"14":{"start":{"line":21,"column":0},"end":{"line":21,"column":33}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":26},"end":{"line":4,"column":27}},"loc":{"start":{"line":4,"column":50},"end":{"line":19,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":5,"column":21},"end":{"line":5,"column":28}},"loc":{"start":{"line":5,"column":31},"end":{"line":18,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":7,"column":28},"end":{"line":7,"column":32}},"loc":{"start":{"line":7,"column":36},"end":{"line":7,"column":47}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":10,"column":40},"end":{"line":10,"column":48}},"loc":{"start":{"line":10,"column":51},"end":{"line":12,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":14,"column":21},"end":{"line":14,"column":25}},"loc":{"start":{"line":14,"column":28},"end":{"line":16,"column":5}}}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":36,"6":2,"7":2,"8":2,"9":1,"10":2,"11":2,"12":1,"13":2,"14":2},"f":{"0":2,"1":2,"2":36,"3":1,"4":1},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\mainObserver.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\mainObserver.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":50}},"1":{"start":{"line":4,"column":21},"end":{"line":39,"column":1}},"2":{"start":{"line":5,"column":16},"end":{"line":5,"column":39}},"3":{"start":{"line":6,"column":18},"end":{"line":30,"column":4}},"4":{"start":{"line":7,"column":4},"end":{"line":29,"column":null}},"5":{"start":{"line":8,"column":6},"end":{"line":28,"column":null}},"6":{"start":{"line":9,"column":8},"end":{"line":11,"column":null}},"7":{"start":{"line":10,"column":10},"end":{"line":10,"column":19}},"8":{"start":{"line":12,"column":8},"end":{"line":19,"column":11}},"9":{"start":{"line":13,"column":10},"end":{"line":18,"column":null}},"10":{"start":{"line":14,"column":26},"end":{"line":14,"column":54}},"11":{"start":{"line":15,"column":12},"end":{"line":17,"column":null}},"12":{"start":{"line":16,"column":14},"end":{"line":16,"column":40}},"13":{"start":{"line":20,"column":13},"end":{"line":28,"column":null}},"14":{"start":{"line":21,"column":21},"end":{"line":21,"column":36}},"15":{"start":{"line":22,"column":8},"end":{"line":27,"column":null}},"16":{"start":{"line":23,"column":24},"end":{"line":23,"column":52}},"17":{"start":{"line":24,"column":10},"end":{"line":26,"column":null}},"18":{"start":{"line":25,"column":12},"end":{"line":25,"column":38}},"19":{"start":{"line":31,"column":26},"end":{"line":37,"column":4}},"20":{"start":{"line":38,"column":2},"end":{"line":38,"column":50}},"21":{"start":{"line":41,"column":0},"end":{"line":41,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":21},"end":{"line":4,"column":22}},"loc":{"start":{"line":4,"column":45},"end":{"line":39,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":39},"end":{"line":6,"column":48}},"loc":{"start":{"line":6,"column":51},"end":{"line":30,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":36},"end":{"line":12,"column":40}},"loc":{"start":{"line":12,"column":43},"end":{"line":19,"column":9}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":6},"end":{"line":28,"column":null}},"type":"if","locations":[{"start":{"line":8,"column":6},"end":{"line":28,"column":null}},{"start":{"line":20,"column":13},"end":{"line":28,"column":null}}]},"1":{"loc":{"start":{"line":9,"column":8},"end":{"line":11,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":8},"end":{"line":11,"column":null}}]},"2":{"loc":{"start":{"line":13,"column":10},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":10},"end":{"line":18,"column":null}}]},"3":{"loc":{"start":{"line":15,"column":12},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":12},"end":{"line":17,"column":null}}]},"4":{"loc":{"start":{"line":20,"column":13},"end":{"line":28,"column":null}},"type":"if","locations":[{"start":{"line":20,"column":13},"end":{"line":28,"column":null}}]},"5":{"loc":{"start":{"line":22,"column":8},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":22,"column":8},"end":{"line":27,"column":null}}]},"6":{"loc":{"start":{"line":24,"column":10},"end":{"line":26,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":10},"end":{"line":26,"column":null}}]}},"s":{"0":2,"1":2,"2":2,"3":2,"4":12,"5":21,"6":4,"7":1,"8":3,"9":3,"10":3,"11":3,"12":2,"13":17,"14":17,"15":17,"16":17,"17":17,"18":7,"19":2,"20":2,"21":2},"f":{"0":2,"1":12,"2":3},"b":{"0":[4,17],"1":[1],"2":[3],"3":[2],"4":[17],"5":[17],"6":[7]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\nameCleaner.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\nameCleaner.ts","statementMap":{"0":{"start":{"line":3,"column":20},"end":{"line":10,"column":2}},"1":{"start":{"line":12,"column":20},"end":{"line":22,"column":1}},"2":{"start":{"line":13,"column":23},"end":{"line":13,"column":25}},"3":{"start":{"line":14,"column":2},"end":{"line":20,"column":null}},"4":{"start":{"line":15,"column":18},"end":{"line":15,"column":22}},"5":{"start":{"line":16,"column":4},"end":{"line":18,"column":7}},"6":{"start":{"line":17,"column":6},"end":{"line":17,"column":57}},"7":{"start":{"line":19,"column":4},"end":{"line":19,"column":35}},"8":{"start":{"line":21,"column":2},"end":{"line":21,"column":13}},"9":{"start":{"line":24,"column":0},"end":{"line":24,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":20},"end":{"line":12,"column":21}},"loc":{"start":{"line":12,"column":43},"end":{"line":22,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":24},"end":{"line":16,"column":30}},"loc":{"start":{"line":16,"column":33},"end":{"line":18,"column":5}}}},"branchMap":{},"s":{"0":43,"1":43,"2":165,"3":165,"4":302,"5":302,"6":1812,"7":302,"8":165,"9":43},"f":{"0":165,"1":1812},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\percentageConverter.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\percentageConverter.ts","statementMap":{"0":{"start":{"line":1,"column":28},"end":{"line":3,"column":1}},"1":{"start":{"line":2,"column":2},"end":{"line":2,"column":44}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":35}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":28},"end":{"line":1,"column":29}},"loc":{"start":{"line":1,"column":51},"end":{"line":3,"column":1}}}},"branchMap":{},"s":{"0":45,"1":3,"2":45},"f":{"0":3},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\prepareParam.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\prepareParam.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":39}},"1":{"start":{"line":10,"column":21},"end":{"line":36,"column":1}},"2":{"start":{"line":12,"column":17},"end":{"line":12,"column":22}},"3":{"start":{"line":13,"column":18},"end":{"line":13,"column":23}},"4":{"start":{"line":14,"column":17},"end":{"line":14,"column":39}},"5":{"start":{"line":15,"column":2},"end":{"line":22,"column":null}},"6":{"start":{"line":16,"column":22},"end":{"line":16,"column":41}},"7":{"start":{"line":17,"column":4},"end":{"line":17,"column":28}},"8":{"start":{"line":18,"column":4},"end":{"line":18,"column":22}},"9":{"start":{"line":20,"column":19},"end":{"line":20,"column":30}},"10":{"start":{"line":21,"column":4},"end":{"line":21,"column":44}},"11":{"start":{"line":24,"column":2},"end":{"line":28,"column":null}},"12":{"start":{"line":25,"column":4},"end":{"line":25,"column":21}},"13":{"start":{"line":26,"column":4},"end":{"line":26,"column":30}},"14":{"start":{"line":27,"column":4},"end":{"line":27,"column":42}},"15":{"start":{"line":30,"column":2},"end":{"line":35,"column":4}},"16":{"start":{"line":38,"column":0},"end":{"line":38,"column":28}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":21},"end":{"line":10,"column":22}},"loc":{"start":{"line":10,"column":57},"end":{"line":36,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":2},"end":{"line":22,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":2},"end":{"line":22,"column":null}},{"start":{"line":19,"column":9},"end":{"line":22,"column":null}}]},"1":{"loc":{"start":{"line":24,"column":2},"end":{"line":28,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":2},"end":{"line":28,"column":null}}]}},"s":{"0":43,"1":43,"2":322,"3":322,"4":322,"5":322,"6":156,"7":156,"8":156,"9":166,"10":166,"11":322,"12":57,"13":57,"14":57,"15":322,"16":43},"f":{"0":322},"b":{"0":[156,166],"1":[57]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\processedNumber.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\processedNumber.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":44}},"1":{"start":{"line":3,"column":25},"end":{"line":3,"column":61}},"2":{"start":{"line":5,"column":24},"end":{"line":26,"column":1}},"3":{"start":{"line":7,"column":2},"end":{"line":24,"column":null}},"4":{"start":{"line":8,"column":4},"end":{"line":8,"column":30}},"5":{"start":{"line":9,"column":4},"end":{"line":12,"column":6}},"6":{"start":{"line":13,"column":9},"end":{"line":24,"column":null}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":24}},"8":{"start":{"line":16,"column":26},"end":{"line":18,"column":6}},"9":{"start":{"line":17,"column":6},"end":{"line":17,"column":30}},"10":{"start":{"line":19,"column":4},"end":{"line":23,"column":null}},"11":{"start":{"line":20,"column":6},"end":{"line":20,"column":21}},"12":{"start":{"line":22,"column":6},"end":{"line":22,"column":44}},"13":{"start":{"line":25,"column":2},"end":{"line":25,"column":20}},"14":{"start":{"line":28,"column":0},"end":{"line":28,"column":31}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":5,"column":24},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":38},"end":{"line":26,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":50},"end":{"line":16,"column":54}},"loc":{"start":{"line":16,"column":57},"end":{"line":18,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":2},"end":{"line":24,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":2},"end":{"line":24,"column":null}},{"start":{"line":13,"column":9},"end":{"line":24,"column":null}}]},"1":{"loc":{"start":{"line":13,"column":9},"end":{"line":24,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":9},"end":{"line":24,"column":null}},{"start":{"line":15,"column":9},"end":{"line":24,"column":null}}]},"2":{"loc":{"start":{"line":19,"column":4},"end":{"line":23,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":23,"column":null}},{"start":{"line":21,"column":11},"end":{"line":23,"column":null}}]},"3":{"loc":{"start":{"line":22,"column":19},"end":{"line":22,"column":43}},"type":"cond-expr","locations":[{"start":{"line":22,"column":31},"end":{"line":22,"column":32}},{"start":{"line":22,"column":35},"end":{"line":22,"column":43}}]}},"s":{"0":39,"1":39,"2":39,"3":298,"4":21,"5":21,"6":277,"7":1,"8":276,"9":1656,"10":276,"11":8,"12":268,"13":298,"14":39},"f":{"0":298,"1":1656},"b":{"0":[21,277],"1":[1,276],"2":[8,268],"3":[28,240]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\regError.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\regError.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}},"1":{"start":{"line":3,"column":17},"end":{"line":17,"column":1}},"2":{"start":{"line":8,"column":14},"end":{"line":8,"column":25}},"3":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"4":{"start":{"line":10,"column":2},"end":{"line":10,"column":24}},"5":{"start":{"line":11,"column":20},"end":{"line":11,"column":28}},"6":{"start":{"line":12,"column":2},"end":{"line":15,"column":null}},"7":{"start":{"line":13,"column":4},"end":{"line":13,"column":23}},"8":{"start":{"line":14,"column":4},"end":{"line":14,"column":32}},"9":{"start":{"line":14,"column":14},"end":{"line":14,"column":32}},"10":{"start":{"line":16,"column":2},"end":{"line":16,"column":13}},"11":{"start":{"line":19,"column":0},"end":{"line":19,"column":24}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"loc":{"start":{"line":7,"column":11},"end":{"line":17,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":2},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":12,"column":2},"end":{"line":15,"column":null}}]},"1":{"loc":{"start":{"line":14,"column":4},"end":{"line":14,"column":32}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":14,"column":32}}]}},"s":{"0":27,"1":27,"2":9,"3":9,"4":9,"5":9,"6":9,"7":2,"8":2,"9":1,"10":9,"11":27},"f":{"0":9},"b":{"0":[2],"1":[1]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\scopesStylesBuilder.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\helpers\\scopesStylesBuilder.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":77}},"1":{"start":{"line":8,"column":35},"end":{"line":25,"column":1}},"2":{"start":{"line":13,"column":26},"end":{"line":13,"column":37}},"3":{"start":{"line":14,"column":2},"end":{"line":23,"column":5}},"4":{"start":{"line":15,"column":4},"end":{"line":22,"column":null}},"5":{"start":{"line":16,"column":6},"end":{"line":21,"column":9}},"6":{"start":{"line":24,"column":2},"end":{"line":24,"column":16}},"7":{"start":{"line":8,"column":13},"end":{"line":8,"column":35}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":35},"end":{"line":8,"column":null}},"loc":{"start":{"line":12,"column":13},"end":{"line":25,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":35},"end":{"line":14,"column":36}},"loc":{"start":{"line":14,"column":50},"end":{"line":23,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":26},"end":{"line":13,"column":37}},"type":"binary-expr","locations":[{"start":{"line":13,"column":26},"end":{"line":13,"column":31}},{"start":{"line":13,"column":35},"end":{"line":13,"column":37}}]},"1":{"loc":{"start":{"line":15,"column":4},"end":{"line":22,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":22,"column":null}}]}},"s":{"0":47,"1":47,"2":50,"3":50,"4":238,"5":237,"6":50,"7":47},"f":{"0":50,"1":238},"b":{"0":[50,49],"1":[237]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\SetCols.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\SetCols.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}},"4":{"start":{"line":6,"column":16},"end":{"line":35,"column":1}},"5":{"start":{"line":10,"column":2},"end":{"line":34,"column":5}},"6":{"start":{"line":11,"column":17},"end":{"line":11,"column":53}},"7":{"start":{"line":12,"column":4},"end":{"line":20,"column":null}},"8":{"start":{"line":13,"column":18},"end":{"line":16,"column":null}},"9":{"start":{"line":18,"column":6},"end":{"line":18,"column":18}},"10":{"start":{"line":19,"column":6},"end":{"line":19,"column":13}},"11":{"start":{"line":23,"column":22},"end":{"line":23,"column":45}},"12":{"start":{"line":24,"column":4},"end":{"line":27,"column":null}},"13":{"start":{"line":25,"column":6},"end":{"line":25,"column":24}},"14":{"start":{"line":26,"column":6},"end":{"line":26,"column":13}},"15":{"start":{"line":28,"column":25},"end":{"line":28,"column":57}},"16":{"start":{"line":31,"column":4},"end":{"line":33,"column":21}},"17":{"start":{"line":32,"column":18},"end":{"line":32,"column":48}},"18":{"start":{"line":37,"column":0},"end":{"line":37,"column":23}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":null}},"loc":{"start":{"line":9,"column":27},"end":{"line":35,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":21},"end":{"line":10,"column":22}},"loc":{"start":{"line":10,"column":41},"end":{"line":34,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":32,"column":12},"end":{"line":32,"column":15}},"loc":{"start":{"line":32,"column":18},"end":{"line":32,"column":48}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":17},"end":{"line":11,"column":53}},"type":"binary-expr","locations":[{"start":{"line":11,"column":17},"end":{"line":11,"column":24}},{"start":{"line":11,"column":28},"end":{"line":11,"column":53}}]},"1":{"loc":{"start":{"line":12,"column":4},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":12,"column":4},"end":{"line":20,"column":null}}]},"2":{"loc":{"start":{"line":24,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":27,"column":null}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":4,"6":4,"7":4,"8":1,"9":1,"10":1,"11":3,"12":3,"13":1,"14":1,"15":2,"16":2,"17":2,"18":3},"f":{"0":4,"1":4,"2":2},"b":{"0":[4,4],"1":[1],"2":[1]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\build.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\build.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":66}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":36}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":40}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":46}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":42}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":36}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":40}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":44}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":46}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":42}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":44}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":46}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":44}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":46}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":40}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":38}},"19":{"start":{"line":22,"column":17},"end":{"line":41,"column":2}},"20":{"start":{"line":47,"column":14},"end":{"line":68,"column":1}},"21":{"start":{"line":51,"column":38},"end":{"line":51,"column":40}},"22":{"start":{"line":52,"column":29},"end":{"line":52,"column":34}},"23":{"start":{"line":53,"column":2},"end":{"line":65,"column":null}},"24":{"start":{"line":54,"column":21},"end":{"line":54,"column":55}},"25":{"start":{"line":55,"column":39},"end":{"line":57,"column":null}},"26":{"start":{"line":59,"column":4},"end":{"line":64,"column":null}},"27":{"start":{"line":60,"column":6},"end":{"line":60,"column":22}},"28":{"start":{"line":61,"column":6},"end":{"line":61,"column":12}},"29":{"start":{"line":63,"column":6},"end":{"line":63,"column":29}},"30":{"start":{"line":66,"column":2},"end":{"line":66,"column":24}},"31":{"start":{"line":66,"column":13},"end":{"line":66,"column":24}},"32":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"33":{"start":{"line":70,"column":0},"end":{"line":70,"column":21}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":47,"column":14},"end":{"line":47,"column":null}},"loc":{"start":{"line":50,"column":35},"end":{"line":68,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":49,"column":2},"end":{"line":49,"column":31}},"type":"default-arg","locations":[{"start":{"line":49,"column":26},"end":{"line":49,"column":31}}]},"1":{"loc":{"start":{"line":59,"column":4},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":64,"column":null}},{"start":{"line":62,"column":11},"end":{"line":64,"column":null}}]},"2":{"loc":{"start":{"line":66,"column":2},"end":{"line":66,"column":24}},"type":"if","locations":[{"start":{"line":66,"column":2},"end":{"line":66,"column":24}}]}},"s":{"0":5,"1":5,"2":5,"3":5,"4":5,"5":5,"6":5,"7":5,"8":5,"9":5,"10":5,"11":5,"12":5,"13":5,"14":5,"15":5,"16":5,"17":5,"18":5,"19":5,"20":5,"21":25,"22":25,"23":25,"24":43,"25":43,"26":43,"27":1,"28":1,"29":42,"30":25,"31":1,"32":24,"33":5},"f":{"0":25},"b":{"0":[11],"1":[1,42],"2":[1]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildCols.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildCols.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":51}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":53}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":56}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"5":{"start":{"line":9,"column":18},"end":{"line":67,"column":1}},"6":{"start":{"line":15,"column":24},"end":{"line":15,"column":26}},"7":{"start":{"line":16,"column":17},"end":{"line":16,"column":28}},"8":{"start":{"line":20,"column":19},"end":{"line":20,"column":53}},"9":{"start":{"line":22,"column":29},"end":{"line":22,"column":34}},"10":{"start":{"line":24,"column":2},"end":{"line":57,"column":null}},"11":{"start":{"line":25,"column":16},"end":{"line":25,"column":20}},"12":{"start":{"line":26,"column":4},"end":{"line":26,"column":25}},"13":{"start":{"line":27,"column":4},"end":{"line":27,"column":40}},"14":{"start":{"line":28,"column":4},"end":{"line":28,"column":35}},"15":{"start":{"line":29,"column":4},"end":{"line":29,"column":34}},"16":{"start":{"line":31,"column":4},"end":{"line":48,"column":null}},"17":{"start":{"line":32,"column":27},"end":{"line":32,"column":43}},"18":{"start":{"line":33,"column":6},"end":{"line":33,"column":64}},"19":{"start":{"line":35,"column":6},"end":{"line":47,"column":null}},"20":{"start":{"line":36,"column":8},"end":{"line":44,"column":null}},"21":{"start":{"line":37,"column":10},"end":{"line":40,"column":12}},"22":{"start":{"line":41,"column":10},"end":{"line":41,"column":16}},"23":{"start":{"line":43,"column":10},"end":{"line":43,"column":60}},"24":{"start":{"line":46,"column":8},"end":{"line":46,"column":64}},"25":{"start":{"line":50,"column":4},"end":{"line":50,"column":48}},"26":{"start":{"line":51,"column":4},"end":{"line":51,"column":60}},"27":{"start":{"line":51,"column":33},"end":{"line":51,"column":60}},"28":{"start":{"line":53,"column":4},"end":{"line":56,"column":6}},"29":{"start":{"line":59,"column":2},"end":{"line":59,"column":22}},"30":{"start":{"line":59,"column":11},"end":{"line":59,"column":22}},"31":{"start":{"line":62,"column":2},"end":{"line":66,"column":5}},"32":{"start":{"line":69,"column":0},"end":{"line":69,"column":25}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":18},"end":{"line":9,"column":null}},"loc":{"start":{"line":12,"column":21},"end":{"line":67,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":2},"end":{"line":11,"column":31}},"type":"default-arg","locations":[{"start":{"line":11,"column":26},"end":{"line":11,"column":31}}]},"1":{"loc":{"start":{"line":31,"column":4},"end":{"line":48,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":48,"column":null}},{"start":{"line":34,"column":11},"end":{"line":48,"column":null}}]},"2":{"loc":{"start":{"line":35,"column":6},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":6},"end":{"line":47,"column":null}},{"start":{"line":45,"column":13},"end":{"line":47,"column":null}}]},"3":{"loc":{"start":{"line":36,"column":8},"end":{"line":44,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":8},"end":{"line":44,"column":null}},{"start":{"line":42,"column":15},"end":{"line":44,"column":null}}]},"4":{"loc":{"start":{"line":51,"column":4},"end":{"line":51,"column":60}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":51,"column":60}}]},"5":{"loc":{"start":{"line":59,"column":2},"end":{"line":59,"column":22}},"type":"if","locations":[{"start":{"line":59,"column":2},"end":{"line":59,"column":22}}]}},"s":{"0":7,"1":7,"2":7,"3":7,"4":7,"5":7,"6":14,"7":14,"8":14,"9":14,"10":14,"11":28,"12":28,"13":28,"14":28,"15":28,"16":28,"17":23,"18":23,"19":5,"20":3,"21":2,"22":2,"23":1,"24":2,"25":26,"26":26,"27":1,"28":26,"29":14,"30":2,"31":12,"32":7},"f":{"0":14},"b":{"0":[5],"1":[23,5],"2":[3,2],"3":[2,1],"4":[1],"5":[2]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildFlex.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildFlex.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":64}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":39}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":56}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":51}},"4":{"start":{"line":7,"column":0},"end":{"line":7,"column":43}},"5":{"start":{"line":9,"column":18},"end":{"line":66,"column":1}},"6":{"start":{"line":13,"column":24},"end":{"line":13,"column":26}},"7":{"start":{"line":16,"column":29},"end":{"line":16,"column":34}},"8":{"start":{"line":17,"column":17},"end":{"line":17,"column":28}},"9":{"start":{"line":18,"column":18},"end":{"line":18,"column":52}},"10":{"start":{"line":20,"column":2},"end":{"line":56,"column":null}},"11":{"start":{"line":22,"column":23},"end":{"line":22,"column":28}},"12":{"start":{"line":23,"column":26},"end":{"line":23,"column":45}},"13":{"start":{"line":24,"column":20},"end":{"line":24,"column":45}},"14":{"start":{"line":25,"column":24},"end":{"line":25,"column":56}},"15":{"start":{"line":26,"column":21},"end":{"line":26,"column":67}},"16":{"start":{"line":27,"column":20},"end":{"line":27,"column":66}},"17":{"start":{"line":29,"column":4},"end":{"line":41,"column":null}},"18":{"start":{"line":30,"column":6},"end":{"line":33,"column":null}},"19":{"start":{"line":31,"column":8},"end":{"line":31,"column":105}},"20":{"start":{"line":32,"column":8},"end":{"line":32,"column":14}},"21":{"start":{"line":34,"column":6},"end":{"line":37,"column":null}},"22":{"start":{"line":35,"column":8},"end":{"line":35,"column":104}},"23":{"start":{"line":36,"column":8},"end":{"line":36,"column":14}},"24":{"start":{"line":38,"column":6},"end":{"line":38,"column":75}},"25":{"start":{"line":40,"column":6},"end":{"line":40,"column":58}},"26":{"start":{"line":43,"column":4},"end":{"line":43,"column":58}},"27":{"start":{"line":43,"column":33},"end":{"line":43,"column":58}},"28":{"start":{"line":45,"column":4},"end":{"line":55,"column":null}},"29":{"start":{"line":46,"column":6},"end":{"line":49,"column":null}},"30":{"start":{"line":51,"column":6},"end":{"line":51,"column":80}},"31":{"start":{"line":51,"column":38},"end":{"line":51,"column":80}},"32":{"start":{"line":52,"column":20},"end":{"line":52,"column":60}},"33":{"start":{"line":53,"column":6},"end":{"line":53,"column":95}},"34":{"start":{"line":54,"column":6},"end":{"line":54,"column":45}},"35":{"start":{"line":58,"column":2},"end":{"line":58,"column":22}},"36":{"start":{"line":58,"column":11},"end":{"line":58,"column":22}},"37":{"start":{"line":61,"column":2},"end":{"line":65,"column":5}},"38":{"start":{"line":68,"column":0},"end":{"line":68,"column":25}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":18},"end":{"line":9,"column":null}},"loc":{"start":{"line":12,"column":21},"end":{"line":66,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":2},"end":{"line":11,"column":31}},"type":"default-arg","locations":[{"start":{"line":11,"column":26},"end":{"line":11,"column":31}}]},"1":{"loc":{"start":{"line":29,"column":4},"end":{"line":41,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":41,"column":null}},{"start":{"line":39,"column":11},"end":{"line":41,"column":null}}]},"2":{"loc":{"start":{"line":30,"column":6},"end":{"line":33,"column":null}},"type":"if","locations":[{"start":{"line":30,"column":6},"end":{"line":33,"column":null}}]},"3":{"loc":{"start":{"line":34,"column":6},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":6},"end":{"line":37,"column":null}}]},"4":{"loc":{"start":{"line":43,"column":4},"end":{"line":43,"column":58}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":43,"column":58}}]},"5":{"loc":{"start":{"line":45,"column":4},"end":{"line":55,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":55,"column":null}},{"start":{"line":50,"column":11},"end":{"line":55,"column":null}}]},"6":{"loc":{"start":{"line":51,"column":6},"end":{"line":51,"column":80}},"type":"if","locations":[{"start":{"line":51,"column":6},"end":{"line":51,"column":80}}]},"7":{"loc":{"start":{"line":52,"column":20},"end":{"line":52,"column":60}},"type":"cond-expr","locations":[{"start":{"line":52,"column":42},"end":{"line":52,"column":44}},{"start":{"line":52,"column":47},"end":{"line":52,"column":60}}]},"8":{"loc":{"start":{"line":58,"column":2},"end":{"line":58,"column":22}},"type":"if","locations":[{"start":{"line":58,"column":2},"end":{"line":58,"column":22}}]}},"s":{"0":7,"1":7,"2":7,"3":7,"4":7,"5":7,"6":20,"7":20,"8":20,"9":20,"10":20,"11":42,"12":42,"13":42,"14":42,"15":42,"16":42,"17":42,"18":39,"19":1,"20":1,"21":38,"22":1,"23":1,"24":37,"25":3,"26":40,"27":4,"28":40,"29":24,"30":16,"31":3,"32":16,"33":16,"34":16,"35":20,"36":2,"37":18,"38":7},"f":{"0":20},"b":{"0":[5],"1":[39,3],"2":[1],"3":[1],"4":[4],"5":[24,16],"6":[3],"7":[13,3],"8":[2]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildHeight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildHeight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":20},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":51}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":4,"3":6},"f":{"0":4},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMarBottom.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMarBottom.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":23},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":55}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":15,"3":6},"f":{"0":15},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMarLeft.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMarLeft.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":21},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":53}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":6,"3":6},"f":{"0":6},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMarRight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMarRight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":22},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":54}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":29}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":22},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":6,"3":6},"f":{"0":6},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMarTop.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMarTop.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":20},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":52}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":8,"3":6},"f":{"0":8},"b":{"0":[5]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMars.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMars.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":18},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":49}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":18},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":8,"3":6},"f":{"0":8},"b":{"0":[5]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMaxHeight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMaxHeight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":23},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":54}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":4,"3":6},"f":{"0":4},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMaxWidth.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMaxWidth.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":22},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":53}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":29}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":22},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":4,"3":6},"f":{"0":4},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMinHeight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMinHeight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":23},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":54}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":4,"3":6},"f":{"0":4},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMinWidth.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildMinWidth.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":22},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":53}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":29}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":22},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":4,"3":6},"f":{"0":4},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPadBottom.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPadBottom.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":23},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":55}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":6,"3":6},"f":{"0":6},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPadLeft.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPadLeft.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":21},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":53}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":6,"3":6},"f":{"0":6},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPadRight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPadRight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":22},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":54}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":29}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":22},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":6,"3":6},"f":{"0":6},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPadTop.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPadTop.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":20},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":52}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":5,"3":6},"f":{"0":5},"b":{"0":[3]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPads.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildPads.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":18},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":49}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":18},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":7,"3":6},"f":{"0":7},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildWidth.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\buildWidth.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":19},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":50}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":4},"end":{"line":8,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":5,"column":31}},"type":"default-arg","locations":[{"start":{"line":5,"column":26},"end":{"line":5,"column":31}}]}},"s":{"0":6,"1":6,"2":4,"3":6},"f":{"0":4},"b":{"0":[4]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\getParameters.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\getParameters.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":66}},"1":{"start":{"line":3,"column":22},"end":{"line":18,"column":1}},"2":{"start":{"line":4,"column":58},"end":{"line":4,"column":60}},"3":{"start":{"line":5,"column":16},"end":{"line":5,"column":31}},"4":{"start":{"line":6,"column":21},"end":{"line":6,"column":44}},"5":{"start":{"line":7,"column":2},"end":{"line":16,"column":5}},"6":{"start":{"line":8,"column":4},"end":{"line":15,"column":null}},"7":{"start":{"line":9,"column":6},"end":{"line":14,"column":21}},"8":{"start":{"line":10,"column":8},"end":{"line":14,"column":21}},"9":{"start":{"line":13,"column":36},"end":{"line":13,"column":40}},"10":{"start":{"line":17,"column":2},"end":{"line":17,"column":16}},"11":{"start":{"line":20,"column":0},"end":{"line":20,"column":29}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":22},"end":{"line":3,"column":23}},"loc":{"start":{"line":3,"column":95},"end":{"line":18,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":38},"end":{"line":7,"column":42}},"loc":{"start":{"line":7,"column":45},"end":{"line":16,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":18},"end":{"line":13,"column":19}},"loc":{"start":{"line":13,"column":36},"end":{"line":13,"column":40}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":8,"column":4},"end":{"line":15,"column":null}}]},"1":{"loc":{"start":{"line":9,"column":6},"end":{"line":14,"column":21}},"type":"if","locations":[{"start":{"line":9,"column":6},"end":{"line":14,"column":21}}]}},"s":{"0":5,"1":5,"2":30,"3":30,"4":30,"5":30,"6":42,"7":37,"8":37,"9":74,"10":30,"11":5},"f":{"0":30,"1":42,"2":74},"b":{"0":[37],"1":[37]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\insertRules.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\insertRules.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":51}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":65}},"2":{"start":{"line":5,"column":20},"end":{"line":17,"column":1}},"3":{"start":{"line":6,"column":20},"end":{"line":6,"column":28}},"4":{"start":{"line":8,"column":2},"end":{"line":16,"column":null}},"5":{"start":{"line":9,"column":4},"end":{"line":15,"column":null}},"6":{"start":{"line":10,"column":22},"end":{"line":10,"column":52}},"7":{"start":{"line":11,"column":23},"end":{"line":11,"column":43}},"8":{"start":{"line":12,"column":20},"end":{"line":12,"column":42}},"9":{"start":{"line":13,"column":6},"end":{"line":13,"column":70}},"10":{"start":{"line":14,"column":6},"end":{"line":14,"column":37}},"11":{"start":{"line":19,"column":0},"end":{"line":19,"column":27}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":5,"column":20},"end":{"line":5,"column":21}},"loc":{"start":{"line":5,"column":43},"end":{"line":17,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":15,"column":null}}]},"1":{"loc":{"start":{"line":13,"column":44},"end":{"line":13,"column":68}},"type":"cond-expr","locations":[{"start":{"line":13,"column":52},"end":{"line":13,"column":64}},{"start":{"line":13,"column":67},"end":{"line":13,"column":68}}]}},"s":{"0":43,"1":43,"2":43,"3":76,"4":76,"5":136,"6":117,"7":117,"8":117,"9":117,"10":117,"11":43},"f":{"0":76},"b":{"0":[117],"1":[0,117]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\reset.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\reset.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":45}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":45}},"3":{"start":{"line":5,"column":14},"end":{"line":46,"column":1}},"4":{"start":{"line":6,"column":2},"end":{"line":45,"column":null}},"5":{"start":{"line":7,"column":28},"end":{"line":7,"column":51}},"6":{"start":{"line":8,"column":32},"end":{"line":8,"column":34}},"7":{"start":{"line":9,"column":4},"end":{"line":34,"column":9}},"8":{"start":{"line":13,"column":8},"end":{"line":16,"column":null}},"9":{"start":{"line":14,"column":10},"end":{"line":14,"column":31}},"10":{"start":{"line":15,"column":10},"end":{"line":15,"column":23}},"11":{"start":{"line":17,"column":22},"end":{"line":17,"column":46}},"12":{"start":{"line":18,"column":19},"end":{"line":18,"column":43}},"13":{"start":{"line":19,"column":24},"end":{"line":19,"column":51}},"14":{"start":{"line":21,"column":8},"end":{"line":24,"column":null}},"15":{"start":{"line":22,"column":10},"end":{"line":22,"column":31}},"16":{"start":{"line":23,"column":10},"end":{"line":23,"column":23}},"17":{"start":{"line":25,"column":8},"end":{"line":25,"column":44}},"18":{"start":{"line":27,"column":8},"end":{"line":33,"column":null}},"19":{"start":{"line":28,"column":10},"end":{"line":28,"column":22}},"20":{"start":{"line":31,"column":10},"end":{"line":31,"column":31}},"21":{"start":{"line":32,"column":10},"end":{"line":32,"column":23}},"22":{"start":{"line":35,"column":4},"end":{"line":44,"column":null}},"23":{"start":{"line":36,"column":26},"end":{"line":36,"column":45}},"24":{"start":{"line":37,"column":6},"end":{"line":39,"column":null}},"25":{"start":{"line":38,"column":8},"end":{"line":38,"column":18}},"26":{"start":{"line":41,"column":6},"end":{"line":43,"column":null}},"27":{"start":{"line":42,"column":8},"end":{"line":42,"column":18}},"28":{"start":{"line":48,"column":0},"end":{"line":48,"column":21}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":5,"column":14},"end":{"line":5,"column":15}},"loc":{"start":{"line":5,"column":62},"end":{"line":46,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":6,"column":21},"end":{"line":6,"column":28}},"loc":{"start":{"line":6,"column":31},"end":{"line":45,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":11,"column":15},"end":{"line":11,"column":19}},"loc":{"start":{"line":11,"column":22},"end":{"line":34,"column":7}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":37,"column":47},"end":{"line":37,"column":50}},"loc":{"start":{"line":37,"column":52},"end":{"line":39,"column":7}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":41,"column":37},"end":{"line":41,"column":40}},"loc":{"start":{"line":41,"column":42},"end":{"line":43,"column":7}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":8},"end":{"line":16,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":8},"end":{"line":16,"column":null}}]},"1":{"loc":{"start":{"line":17,"column":22},"end":{"line":17,"column":46}},"type":"cond-expr","locations":[{"start":{"line":17,"column":41},"end":{"line":17,"column":42}},{"start":{"line":17,"column":45},"end":{"line":17,"column":46}}]},"2":{"loc":{"start":{"line":21,"column":8},"end":{"line":24,"column":null}},"type":"if","locations":[{"start":{"line":21,"column":8},"end":{"line":24,"column":null}}]},"3":{"loc":{"start":{"line":27,"column":8},"end":{"line":33,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":33,"column":null}},{"start":{"line":29,"column":15},"end":{"line":33,"column":null}}]},"4":{"loc":{"start":{"line":35,"column":4},"end":{"line":44,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":44,"column":null}},{"start":{"line":40,"column":11},"end":{"line":44,"column":null}}]}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":13,"9":1,"10":1,"11":12,"12":12,"13":12,"14":12,"15":2,"16":2,"17":10,"18":10,"19":9,"20":1,"21":1,"22":3,"23":2,"24":2,"25":2,"26":1,"27":1,"28":3},"f":{"0":3,"1":3,"2":13,"3":2,"4":1},"b":{"0":[1],"1":[11,1],"2":[2],"3":[9,1],"4":[2,1]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\set.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\set.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":45}},"5":{"start":{"line":9,"column":12},"end":{"line":46,"column":1}},"6":{"start":{"line":13,"column":2},"end":{"line":45,"column":5}},"7":{"start":{"line":14,"column":19},"end":{"line":14,"column":52}},"8":{"start":{"line":15,"column":22},"end":{"line":15,"column":41}},"9":{"start":{"line":16,"column":4},"end":{"line":20,"column":null}},"10":{"start":{"line":17,"column":18},"end":{"line":17,"column":94}},"11":{"start":{"line":18,"column":6},"end":{"line":18,"column":18}},"12":{"start":{"line":19,"column":6},"end":{"line":19,"column":13}},"13":{"start":{"line":22,"column":61},"end":{"line":22,"column":63}},"14":{"start":{"line":23,"column":4},"end":{"line":25,"column":null}},"15":{"start":{"line":24,"column":6},"end":{"line":24,"column":71}},"16":{"start":{"line":28,"column":23},"end":{"line":28,"column":77}},"17":{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},"18":{"start":{"line":30,"column":6},"end":{"line":30,"column":25}},"19":{"start":{"line":31,"column":6},"end":{"line":31,"column":13}},"20":{"start":{"line":35,"column":20},"end":{"line":35,"column":55}},"21":{"start":{"line":36,"column":25},"end":{"line":39,"column":16}},"22":{"start":{"line":37,"column":29},"end":{"line":37,"column":66}},"23":{"start":{"line":42,"column":4},"end":{"line":44,"column":21}},"24":{"start":{"line":43,"column":18},"end":{"line":43,"column":48}},"25":{"start":{"line":48,"column":0},"end":{"line":48,"column":19}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":12},"end":{"line":9,"column":null}},"loc":{"start":{"line":12,"column":19},"end":{"line":46,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":21},"end":{"line":13,"column":22}},"loc":{"start":{"line":13,"column":41},"end":{"line":45,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":37,"column":11},"end":{"line":37,"column":12}},"loc":{"start":{"line":37,"column":29},"end":{"line":37,"column":66}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":43,"column":12},"end":{"line":43,"column":15}},"loc":{"start":{"line":43,"column":18},"end":{"line":43,"column":48}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":19},"end":{"line":14,"column":52}},"type":"binary-expr","locations":[{"start":{"line":14,"column":19},"end":{"line":14,"column":29}},{"start":{"line":14,"column":33},"end":{"line":14,"column":52}}]},"1":{"loc":{"start":{"line":16,"column":4},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":20,"column":null}}]},"2":{"loc":{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":32,"column":null}}]}},"s":{"0":4,"1":4,"2":4,"3":4,"4":4,"5":4,"6":15,"7":15,"8":15,"9":15,"10":1,"11":1,"12":1,"13":14,"14":14,"15":29,"16":14,"17":14,"18":1,"19":1,"20":13,"21":13,"22":28,"23":13,"24":13,"25":4},"f":{"0":15,"1":15,"2":28,"3":13},"b":{"0":[15,6],"1":[1],"2":[1]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setAttr.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setAttr.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":45}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}},"4":{"start":{"line":7,"column":16},"end":{"line":33,"column":1}},"5":{"start":{"line":12,"column":2},"end":{"line":32,"column":5}},"6":{"start":{"line":13,"column":26},"end":{"line":13,"column":64}},"7":{"start":{"line":14,"column":4},"end":{"line":22,"column":null}},"8":{"start":{"line":15,"column":18},"end":{"line":18,"column":null}},"9":{"start":{"line":20,"column":6},"end":{"line":20,"column":18}},"10":{"start":{"line":21,"column":6},"end":{"line":21,"column":13}},"11":{"start":{"line":25,"column":22},"end":{"line":25,"column":65}},"12":{"start":{"line":26,"column":25},"end":{"line":26,"column":57}},"13":{"start":{"line":29,"column":4},"end":{"line":31,"column":21}},"14":{"start":{"line":30,"column":18},"end":{"line":30,"column":48}},"15":{"start":{"line":35,"column":0},"end":{"line":35,"column":23}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":null}},"loc":{"start":{"line":11,"column":19},"end":{"line":33,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":21},"end":{"line":12,"column":22}},"loc":{"start":{"line":12,"column":41},"end":{"line":32,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":30,"column":12},"end":{"line":30,"column":15}},"loc":{"start":{"line":30,"column":18},"end":{"line":30,"column":48}}}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":26},"end":{"line":13,"column":64}},"type":"binary-expr","locations":[{"start":{"line":13,"column":26},"end":{"line":13,"column":32}},{"start":{"line":13,"column":36},"end":{"line":13,"column":64}}]},"1":{"loc":{"start":{"line":14,"column":4},"end":{"line":22,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":22,"column":null}}]}},"s":{"0":19,"1":19,"2":19,"3":19,"4":19,"5":37,"6":37,"7":37,"8":1,"9":1,"10":1,"11":36,"12":36,"13":36,"14":36,"15":19},"f":{"0":37,"1":37,"2":36},"b":{"0":[37,37],"1":[1]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setFlex.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setFlex.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":45}},"4":{"start":{"line":6,"column":16},"end":{"line":36,"column":1}},"5":{"start":{"line":10,"column":2},"end":{"line":35,"column":5}},"6":{"start":{"line":11,"column":17},"end":{"line":11,"column":56}},"7":{"start":{"line":12,"column":4},"end":{"line":20,"column":null}},"8":{"start":{"line":13,"column":18},"end":{"line":16,"column":null}},"9":{"start":{"line":18,"column":6},"end":{"line":18,"column":18}},"10":{"start":{"line":19,"column":6},"end":{"line":19,"column":13}},"11":{"start":{"line":23,"column":22},"end":{"line":23,"column":45}},"12":{"start":{"line":24,"column":4},"end":{"line":27,"column":null}},"13":{"start":{"line":25,"column":6},"end":{"line":25,"column":24}},"14":{"start":{"line":26,"column":6},"end":{"line":26,"column":13}},"15":{"start":{"line":29,"column":25},"end":{"line":29,"column":57}},"16":{"start":{"line":32,"column":4},"end":{"line":34,"column":21}},"17":{"start":{"line":33,"column":18},"end":{"line":33,"column":48}},"18":{"start":{"line":38,"column":0},"end":{"line":38,"column":23}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":null}},"loc":{"start":{"line":9,"column":27},"end":{"line":36,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":21},"end":{"line":10,"column":22}},"loc":{"start":{"line":10,"column":41},"end":{"line":35,"column":3}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":33,"column":12},"end":{"line":33,"column":15}},"loc":{"start":{"line":33,"column":18},"end":{"line":33,"column":48}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":17},"end":{"line":11,"column":56}},"type":"binary-expr","locations":[{"start":{"line":11,"column":17},"end":{"line":11,"column":27}},{"start":{"line":11,"column":31},"end":{"line":11,"column":56}}]},"1":{"loc":{"start":{"line":12,"column":4},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":12,"column":4},"end":{"line":20,"column":null}}]},"2":{"loc":{"start":{"line":24,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":27,"column":null}}]}},"s":{"0":4,"1":4,"2":4,"3":4,"4":4,"5":11,"6":11,"7":11,"8":1,"9":1,"10":1,"11":10,"12":10,"13":1,"14":1,"15":9,"16":9,"17":9,"18":4},"f":{"0":11,"1":11,"2":9},"b":{"0":[11,11],"1":[1],"2":[1]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setHeight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setHeight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":18},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":38}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":18},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3},"f":{"0":3},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMarBottom.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMarBottom.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":21},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":39}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMarLeft.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMarLeft.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":19},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":39}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMarRight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMarRight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":20},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":39}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":3,"3":3},"f":{"0":3},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMarTop.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMarTop.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":18},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":39}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":18},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":4,"1":4,"2":5,"3":4},"f":{"0":5},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMars.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMars.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":16},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":38}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":23}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMaxHeight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMaxHeight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":21},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":38}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMaxWidth.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMaxWidth.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":20},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":38}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMinHeight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMinHeight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":21},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":38}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMinWidth.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setMinWidth.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":20},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":38}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPadBottom.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPadBottom.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":21},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":39}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPadLeft.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPadLeft.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":19},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":39}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":19},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPadRight.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPadRight.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":20},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":39}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":27}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPadTop.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPadTop.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":18},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":39}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":18},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPads.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setPads.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":16},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":38}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":23}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setWidth.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\methods\\setWidth.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"1":{"start":{"line":3,"column":17},"end":{"line":8,"column":1}},"2":{"start":{"line":7,"column":2},"end":{"line":7,"column":38}},"3":{"start":{"line":10,"column":0},"end":{"line":10,"column":24}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"loc":{"start":{"line":6,"column":19},"end":{"line":8,"column":1}}}},"branchMap":{},"s":{"0":3,"1":3,"2":2,"3":3},"f":{"0":2},"b":{}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\utils\\addClasses.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\utils\\addClasses.ts","statementMap":{"0":{"start":{"line":1,"column":19},"end":{"line":45,"column":1}},"1":{"start":{"line":6,"column":2},"end":{"line":44,"column":5}},"2":{"start":{"line":7,"column":18},"end":{"line":7,"column":41}},"3":{"start":{"line":8,"column":33},"end":{"line":8,"column":38}},"4":{"start":{"line":9,"column":4},"end":{"line":17,"column":null}},"5":{"start":{"line":10,"column":6},"end":{"line":12,"column":8}},"6":{"start":{"line":11,"column":16},"end":{"line":11,"column":46}},"7":{"start":{"line":13,"column":6},"end":{"line":16,"column":null}},"8":{"start":{"line":14,"column":8},"end":{"line":14,"column":18}},"9":{"start":{"line":15,"column":8},"end":{"line":15,"column":15}},"10":{"start":{"line":19,"column":20},"end":{"line":29,"column":6}},"11":{"start":{"line":20,"column":21},"end":{"line":20,"column":40}},"12":{"start":{"line":21,"column":30},"end":{"line":21,"column":69}},"13":{"start":{"line":22,"column":26},"end":{"line":23,"column":null}},"14":{"start":{"line":23,"column":8},"end":{"line":23,"column":40}},"15":{"start":{"line":25,"column":6},"end":{"line":28,"column":null}},"16":{"start":{"line":26,"column":8},"end":{"line":26,"column":29}},"17":{"start":{"line":27,"column":8},"end":{"line":27,"column":18}},"18":{"start":{"line":30,"column":4},"end":{"line":36,"column":7}},"19":{"start":{"line":38,"column":4},"end":{"line":43,"column":null}},"20":{"start":{"line":39,"column":6},"end":{"line":39,"column":36}},"21":{"start":{"line":41,"column":20},"end":{"line":41,"column":57}},"22":{"start":{"line":42,"column":6},"end":{"line":42,"column":55}},"23":{"start":{"line":47,"column":0},"end":{"line":47,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":19},"end":{"line":1,"column":null}},"loc":{"start":{"line":5,"column":19},"end":{"line":45,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":21},"end":{"line":6,"column":28}},"loc":{"start":{"line":6,"column":31},"end":{"line":44,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":8},"end":{"line":11,"column":12}},"loc":{"start":{"line":11,"column":16},"end":{"line":11,"column":46}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":19,"column":41},"end":{"line":19,"column":50}},"loc":{"start":{"line":19,"column":53},"end":{"line":29,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":38},"end":{"line":22,"column":45}},"loc":{"start":{"line":23,"column":8},"end":{"line":23,"column":40}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":4},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":17,"column":null}}]},"1":{"loc":{"start":{"line":13,"column":6},"end":{"line":16,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":6},"end":{"line":16,"column":null}}]},"2":{"loc":{"start":{"line":25,"column":6},"end":{"line":28,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":6},"end":{"line":28,"column":null}}]},"3":{"loc":{"start":{"line":38,"column":4},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":43,"column":null}},{"start":{"line":40,"column":11},"end":{"line":43,"column":null}}]},"4":{"loc":{"start":{"line":41,"column":20},"end":{"line":41,"column":57}},"type":"cond-expr","locations":[{"start":{"line":41,"column":49},"end":{"line":41,"column":52}},{"start":{"line":41,"column":55},"end":{"line":41,"column":57}}]}},"s":{"0":24,"1":63,"2":63,"3":63,"4":63,"5":61,"6":136,"7":61,"8":8,"9":8,"10":55,"11":55,"12":55,"13":55,"14":132,"15":55,"16":55,"17":55,"18":55,"19":55,"20":2,"21":53,"22":53,"23":24},"f":{"0":63,"1":63,"2":136,"3":55,"4":132},"b":{"0":[61],"1":[8],"2":[55],"3":[2,53],"4":[3,50]}} +,"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\utils\\removeAttr.ts": {"path":"C:\\Users\\Polystation\\Documents\\Layouter JS\\Repo\\src\\utils\\removeAttr.ts","statementMap":{"0":{"start":{"line":1,"column":26},"end":{"line":23,"column":1}},"1":{"start":{"line":5,"column":2},"end":{"line":22,"column":5}},"2":{"start":{"line":6,"column":4},"end":{"line":9,"column":null}},"3":{"start":{"line":7,"column":6},"end":{"line":7,"column":16}},"4":{"start":{"line":8,"column":6},"end":{"line":8,"column":13}},"5":{"start":{"line":10,"column":20},"end":{"line":13,"column":6}},"6":{"start":{"line":11,"column":6},"end":{"line":11,"column":27}},"7":{"start":{"line":12,"column":6},"end":{"line":12,"column":16}},"8":{"start":{"line":14,"column":4},"end":{"line":20,"column":7}},"9":{"start":{"line":21,"column":4},"end":{"line":21,"column":35}},"10":{"start":{"line":1,"column":13},"end":{"line":1,"column":26}},"11":{"start":{"line":25,"column":27},"end":{"line":33,"column":1}},"12":{"start":{"line":29,"column":2},"end":{"line":32,"column":5}},"13":{"start":{"line":30,"column":21},"end":{"line":30,"column":66}},"14":{"start":{"line":30,"column":43},"end":{"line":30,"column":65}},"15":{"start":{"line":31,"column":4},"end":{"line":31,"column":48}},"16":{"start":{"line":31,"column":37},"end":{"line":31,"column":46}},"17":{"start":{"line":25,"column":13},"end":{"line":25,"column":27}},"18":{"start":{"line":35,"column":19},"end":{"line":46,"column":1}},"19":{"start":{"line":39,"column":2},"end":{"line":45,"column":5}},"20":{"start":{"line":40,"column":4},"end":{"line":44,"column":null}},"21":{"start":{"line":41,"column":6},"end":{"line":41,"column":49}},"22":{"start":{"line":43,"column":6},"end":{"line":43,"column":48}},"23":{"start":{"line":48,"column":0},"end":{"line":48,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"loc":{"start":{"line":4,"column":19},"end":{"line":23,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":5,"column":21},"end":{"line":5,"column":28}},"loc":{"start":{"line":5,"column":31},"end":{"line":22,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":41},"end":{"line":10,"column":44}},"loc":{"start":{"line":10,"column":46},"end":{"line":13,"column":5}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":25,"column":27},"end":{"line":25,"column":null}},"loc":{"start":{"line":28,"column":19},"end":{"line":33,"column":1}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":29,"column":21},"end":{"line":29,"column":28}},"loc":{"start":{"line":29,"column":31},"end":{"line":32,"column":3}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":30,"column":35},"end":{"line":30,"column":39}},"loc":{"start":{"line":30,"column":43},"end":{"line":30,"column":65}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":31,"column":31},"end":{"line":31,"column":34}},"loc":{"start":{"line":31,"column":37},"end":{"line":31,"column":46}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":35,"column":19},"end":{"line":35,"column":null}},"loc":{"start":{"line":38,"column":19},"end":{"line":46,"column":1}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":39,"column":21},"end":{"line":39,"column":28}},"loc":{"start":{"line":39,"column":31},"end":{"line":45,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":4},"end":{"line":9,"column":null}},"type":"if","locations":[{"start":{"line":6,"column":4},"end":{"line":9,"column":null}}]},"1":{"loc":{"start":{"line":40,"column":4},"end":{"line":44,"column":null}},"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":44,"column":null}},{"start":{"line":42,"column":11},"end":{"line":44,"column":null}}]}},"s":{"0":24,"1":77,"2":77,"3":1,"4":1,"5":76,"6":76,"7":76,"8":76,"9":76,"10":24,"11":24,"12":13,"13":13,"14":28,"15":13,"16":13,"17":24,"18":24,"19":62,"20":62,"21":13,"22":49,"23":24},"f":{"0":77,"1":77,"2":76,"3":13,"4":13,"5":28,"6":13,"7":62,"8":62},"b":{"0":[1],"1":[13,49]}} +} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/coverage/lcov-report/base.css @@ -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; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* 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) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + 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); diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6691817834a957c938e7f09640a37a645fb31457 GIT binary patch literal 540 zcmV+%0^|LOP)wSzy{h>9elhJ=8GnBQmf?)AI(^#wDA_`!QTxaXXE&bjxo zTGCc%V|W`}Lwz0rDO*qBbGY-M@aNENIZ1rK?nOAibaC*vb%CF;I_~lkJawax%_+1J zLn(#pv_v{f0`v`Cfp6()7MB(>IoTAiQdKxgxX?VyV&KVZ7b$vn<8|Z<9$35C+G_8SH0x6Y(xB&~bmn%r}ceRwbc0000 + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 99.86% + Statements + 741/742 +
+ + +
+ 98.12% + Branches + 157/160 +
+ + +
+ 100% + Functions + 113/113 +
+ + +
+ 99.86% + Lines + 719/720 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src +
+
98.18%54/5580%4/5100%2/298.14%53/54
src/config +
+
100%32/32100%10/10100%5/5100%29/29
src/helpers +
+
100%240/24098.48%65/66100%35/35100%232/232
src/methods +
+
100%367/36798.55%68/69100%57/57100%361/361
src/utils +
+
100%48/48100%10/10100%14/14100%44/44
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -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} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..03f704a609c6fd0dbfdac63466a7d7c958b5cbf3 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; + } + } + 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(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov-report/src/config/flex.ts.html b/coverage/lcov-report/src/config/flex.ts.html new file mode 100644 index 0000000..a9a3b38 --- /dev/null +++ b/coverage/lcov-report/src/config/flex.ts.html @@ -0,0 +1,172 @@ + + + + + + Code coverage report for src/config/flex.ts + + + + + + + + + +
+
+

All files / src/config flex.ts

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +3044x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +44x + 
export const flexProsAndVals = {
+  jc: 'justify-content',
+  ai: 'align-items',
+  ce: 'center',
+  fs: 'flex-start',
+  fe: 'flex-end',
+  sb: 'space-between',
+  sa: 'space-around',
+  fw: 'flex-wrap',
+  nw: 'nowrap',
+  w: 'wrap',
+  wr: 'wrap-reverse',
+  fd: 'flex-direction',
+  r: 'row',
+  rr: 'row-reverse',
+  co: 'column',
+  cor: 'column-reverse',
+  fg: 'flex-grow',
+  fh: 'flex-shrink',
+  as: 'align-self',
+  or: 'order',
+  au: 'auto',
+  st: 'stretch',
+  bl: 'baseline',
+  in: 'initial',
+  ih: 'inherit',
+};
+ 
+export const flexAttrsSelf = ['fg', 'fh', 'or'];
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/config/index.html b/coverage/lcov-report/src/config/index.html new file mode 100644 index 0000000..9a040f9 --- /dev/null +++ b/coverage/lcov-report/src/config/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for src/config + + + + + + + + + +
+
+

All files src/config

+
+ +
+ 100% + Statements + 32/32 +
+ + +
+ 100% + Branches + 10/10 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 29/29 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
flex.ts +
+
100%2/2100%0/0100%0/0100%2/2
main.ts +
+
100%29/29100%10/10100%5/5100%26/26
processors.ts +
+
100%1/1100%0/0100%0/0100%1/1
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/config/main.ts.html b/coverage/lcov-report/src/config/main.ts.html new file mode 100644 index 0000000..974f0dd --- /dev/null +++ b/coverage/lcov-report/src/config/main.ts.html @@ -0,0 +1,484 @@ + + + + + + Code coverage report for src/config/main.ts + + + + + + + + + +
+
+

All files / src/config main.ts

+
+ +
+ 100% + Statements + 29/29 +
+ + +
+ 100% + Branches + 10/10 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 26/26 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134  +47x +47x +47x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +47x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +47x +  +  +  +  +  +  +  +  +47x +  +  +  +  +49x +49x +49x +  +  +  +  +  +  +  +47x +48x +2x +  +  +  +  +  +46x +46x +  +  +  +  +  +  +48x +  +  +  +  +  +48x +  +  +47x +117x +  +  +47x +575x +  +  +47x +1x +  +  +  +  +1x +1x +  +  +  +  +  +1x +  +  +47x + 
import { ILayouter } from './../main';
+import breakpointsNums, { IBreakpoints } from '../helpers/breakpointsNums';
+import { IScopes, scopesStylesBuilder } from '../helpers/scopesStylesBuilder';
+import breakpointsOrdered from '../helpers/breakpointsOrdered';
+ 
+export interface ICols {
+  [colAlias: string]: number;
+}
+ 
+export interface IConfigUser {
+  prefix: string;
+  breakpoints: IBreakpoints;
+  bridge: boolean;
+  debug?: boolean;
+  ready?: (instance: ILayouter) => void;
+}
+ 
+interface IConfigNums {
+  scope: IScopes;
+  cols: ICols;
+  sizes: ICols;
+  breakpoints: IBreakpoints;
+}
+ 
+export interface IConfig extends Omit<IConfigUser, 'breakpoints'>, IConfigNums {
+  styles: {
+    [className: string]: string;
+  };
+}
+ 
+declare global {
+  interface Window {
+    layouterConfig: Partial<IConfigUser>;
+  }
+}
+ 
+const breakpointsInit: IBreakpoints = {
+  xs: {
+    width: 360,
+    cols: 15,
+  },
+  sm: {
+    width: 600,
+    cols: 25
+  },
+  md: {
+    width: 900,
+    cols: 31
+  },
+  lg: {
+    width: 1200,
+    cols: 41
+  },
+  xlg: {
+    width: 1536,
+    cols: 51
+  }
+};
+ 
+export let baseConfig: IConfigUser = {
+  prefix: '',
+  breakpoints: breakpointsInit,
+  bridge: true,
+  debug: true,
+};
+ 
+let config: IConfig;
+ 
+const configNums = (
+  bps: IBreakpoints,
+  bridge: boolean,
+  scope?: IScopes
+): IConfigNums => {
+  const sizes = breakpointsNums(bps, 'width');
+  const finalBps = breakpointsOrdered(bps, sizes);
+  return {
+    sizes,
+    cols: breakpointsNums(bps, 'cols'),
+    scope: scopesStylesBuilder(finalBps, bridge, scope),
+    breakpoints: finalBps,
+  };
+};
+ 
+export const setConfig = (customCfg: Partial<IConfigUser> = {}): IConfig => {
+  if (window && window.layouterConfig) {
+    baseConfig = {
+      ...baseConfig,
+      ...window.layouterConfig,
+      ...customCfg,
+    };
+  } else {
+    if (customCfg) {
+      baseConfig = {
+        ...baseConfig,
+        ...customCfg,
+      };
+    }
+  }
+ 
+  config = {
+    ...baseConfig,
+    ...configNums(baseConfig.breakpoints, baseConfig.bridge),
+    styles: {},
+  };
+ 
+  return config;
+};
+ 
+export const setStyles = ( className: string, value: string ) => {
+  config.styles[ className ] = value;
+}
+ 
+const getConfig = (reset: boolean = false): IConfig => {
+  return reset ? setConfig() : config;
+};
+ 
+export const updateConfig = (userConfig: Partial<IConfigUser>): IConfig => {
+  config = {
+    ...config,
+    ...userConfig,
+  };
+ 
+  if (userConfig.breakpoints) {
+    config = {
+      ...config,
+      ...configNums(config.breakpoints, config.bridge, config.scope),
+    };
+  }
+ 
+  return config;
+};
+ 
+export default getConfig;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/config/processors.ts.html b/coverage/lcov-report/src/config/processors.ts.html new file mode 100644 index 0000000..451c52d --- /dev/null +++ b/coverage/lcov-report/src/config/processors.ts.html @@ -0,0 +1,427 @@ + + + + + + Code coverage report for src/config/processors.ts + + + + + + + + + +
+
+

All files / src/config processors.ts

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115  +  +  +  +  +  +  +  +45x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export type TDirectiveName = 'cols' | 'pad' | 'padt' | 'padr' | 'padb' | 'padl' | 'mar' | 'mart' | 'marr' | 'marb' | 'marl' | 'flex' | 'mxw' | 'mxh' | 'miw' | 'mih' | 'wdh' | 'hgt';
+ 
+export interface IProcessor {
+  set: string;
+  build: string;
+  ruleCss: string;
+}
+ 
+export const processors: Record<TDirectiveName, IProcessor> = {
+  cols: {
+    set: 'setCols',
+    build: 'buildCols',
+    ruleCss: 'width',
+  },
+ 
+  // Paddings
+  pad: {
+    set: 'setPads',
+    build: 'buildPads',
+    ruleCss: 'padding',
+  },
+  padt: {
+    set: 'setPadTop',
+    build: 'buildPadTop',
+    ruleCss: 'padding-top',
+  },
+  padr: {
+    set: 'setPadRight',
+    build: 'buildPadRight',
+    ruleCss: 'padding-right',
+  },
+  padb: {
+    set: 'setPadBottom',
+    build: 'buildPadBottom',
+    ruleCss: 'padding-bottom',
+  },
+  padl: {
+    set: 'setPadLeft',
+    build: 'buildPadLeft',
+    ruleCss: 'padding-left',
+  },
+ 
+  // Margin
+  mar: {
+    set: 'setMars',
+    build: 'buildMars',
+    ruleCss: 'margin',
+  },
+  mart: {
+    set: 'setMarTop',
+    build: 'buildMarTop',
+    ruleCss: 'margin-top',
+  },
+  marr: {
+    set: 'setMarRight',
+    build: 'buildMarRight',
+    ruleCss: 'margin-right',
+  },
+  marb: {
+    set: 'setMarBottom',
+    build: 'buildMarBottom',
+    ruleCss: 'margin-bottom',
+  },
+  marl: {
+    set: 'setMarLeft',
+    build: 'buildMarLeft',
+    ruleCss: 'margin-left',
+  },
+ 
+  // Flex Box
+  flex: {
+    set: 'setFlex',
+    build: 'buildFlex',
+    ruleCss: 'display: flex',
+  },
+ 
+  // Max & Min Width & Height
+  mxw: {
+    set: 'setMaxWidth',
+    build: 'buildMaxWidth',
+    ruleCss: 'max-width',
+  },
+ 
+  mxh: {
+    set: 'setMaxHeight',
+    build: 'buildMaxHeight',
+    ruleCss: 'max-height',
+  },
+ 
+  miw: {
+    set: 'setMinWidth',
+    build: 'buildMinWidth',
+    ruleCss: 'min-width',
+  },
+ 
+  mih: {
+    set: 'setMinHeight',
+    build: 'buildMinHeight',
+    ruleCss: 'min-height',
+  },
+ 
+  // Width & Height
+  wdh: {
+    set: 'setWidth',
+    build: 'buildWidth',
+    ruleCss: 'width',
+  },
+ 
+  hgt: {
+    set: 'setHeight',
+    build: 'buildHeight',
+    ruleCss: 'height',
+  },
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/breakpointsNums.ts.html b/coverage/lcov-report/src/helpers/breakpointsNums.ts.html new file mode 100644 index 0000000..dce6a12 --- /dev/null +++ b/coverage/lcov-report/src/helpers/breakpointsNums.ts.html @@ -0,0 +1,229 @@ + + + + + + Code coverage report for src/helpers/breakpointsNums.ts + + + + + + + + + +
+
+

All files / src/helpers breakpointsNums.ts

+
+ +
+ 100% + Statements + 11/11 +
+ + +
+ 87.5% + Branches + 7/8 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +49x +  +  +  +101x +  +101x +51x +  +241x +  +  +  +  +  +194x +  +  +241x +  +  +50x +237x +  +  +  +101x +  +  +49x + 
export type TNumProp = 'width' | 'cols';
+ 
+export interface IBreakpoint {
+  alias: string;
+  width: number;
+}
+ 
+export interface IBreakpoints {
+  [alias: string]: {
+    width: number;
+    cols: number;
+  };
+}
+ 
+export interface IBreakpointObj {
+  [alias: string]: number;
+}
+ 
+const breakpointsNums = (
+  objBps: IBreakpoints,
+  propName: TNumProp
+): IBreakpointObj => {
+  const sizes: IBreakpointObj = {};
+ 
+  if (propName === 'width') {
+    Object.keys(objBps)
+      .map((bp: string) => {
+        return {
+          alias: bp,
+          width: objBps[bp].width,
+        };
+      })
+      .sort((a: IBreakpoint, b: IBreakpoint) =>
+        a.width > b.width ? 1 : b.width > a.width ? -1 : 0
+      )
+      .forEach((bp: IBreakpoint, index: number) => {
+        sizes[bp.alias] = !index ? 0 : objBps[bp.alias][propName];
+      });
+  } else {
+    Object.keys(objBps).forEach(bp => {
+      sizes[bp] = objBps[bp][propName];
+    });
+  }
+ 
+  return sizes;
+};
+ 
+export default breakpointsNums;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/breakpointsOrdered.ts.html b/coverage/lcov-report/src/helpers/breakpointsOrdered.ts.html new file mode 100644 index 0000000..b96e4bb --- /dev/null +++ b/coverage/lcov-report/src/helpers/breakpointsOrdered.ts.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for src/helpers/breakpointsOrdered.ts + + + + + + + + + +
+
+

All files / src/helpers breakpointsOrdered.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12  +  +  +48x +50x +237x +50x +  +  +48x +  + 
import { ICols } from '../config/main';
+import { IBreakpoints } from './breakpointsNums';
+ 
+const breakpointsOrdered = ( bps: IBreakpoints, sizes: ICols ) => {
+  const bpsOrdered: IBreakpoints = {};
+  Object.keys(sizes).forEach( bpName => bpsOrdered[bpName] = bps[bpName]);
+  return bpsOrdered;
+}
+ 
+export default breakpointsOrdered;
+ 
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/buildAttr.ts.html b/coverage/lcov-report/src/helpers/buildAttr.ts.html new file mode 100644 index 0000000..da318ab --- /dev/null +++ b/coverage/lcov-report/src/helpers/buildAttr.ts.html @@ -0,0 +1,196 @@ + + + + + + Code coverage report for src/helpers/buildAttr.ts + + + + + + + + + +
+
+

All files / src/helpers buildAttr.ts

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38  +39x +39x +39x +  +39x +  +  +  +  +135x +  +135x +252x +252x +  +  +252x +  +298x +  +252x +252x +  +  +  +  +  +  +135x +  +  +  +  +  +  +39x + 
import { TDirectiveName } from '../config/processors';
+import buildCss, { IBpCals } from './buildCss';
+import prepareParam from './prepareParam';
+import processedNumber from './processedNumber';
+ 
+const buildAttr = (
+  values: string,
+  prop: TDirectiveName,
+  insertStyles: boolean = false
+) => {
+  let bpCals: IBpCals = {};
+ 
+  values.split(' ').forEach(param => {
+    const paramProcessed = prepareParam(param);
+    const bpNames = paramProcessed.breakPoints;
+ 
+    // processing number values
+    let propValue = paramProcessed.numbers
+      .split('-')
+      .map(n => processedNumber(n))
+      .join(' ');
+    if (paramProcessed.important) propValue += ' !important';
+    bpCals[bpNames] = {
+      name: param,
+      value: propValue,
+    };
+  });
+ 
+  // Building the classNames and the styles to use.
+  return buildCss({
+    type: prop,
+    bps: bpCals,
+    deep: insertStyles,
+  });
+};
+ 
+export default buildAttr;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/buildCss.ts.html b/coverage/lcov-report/src/helpers/buildCss.ts.html new file mode 100644 index 0000000..7a0cfaf --- /dev/null +++ b/coverage/lcov-report/src/helpers/buildCss.ts.html @@ -0,0 +1,187 @@ + + + + + + Code coverage report for src/helpers/buildCss.ts + + + + + + + + + +
+
+

All files / src/helpers buildCss.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35  +43x +43x +43x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +43x +  +165x +  +  +165x +76x +  +  +  +165x +  +  +43x + 
import { TDirectiveName } from '../config/processors';
+import insertRules from '../methods/insertRules';
+import createStyles, { IStyles } from './createStyles';
+import nameCleaner from './nameCleaner';
+ 
+export interface IRBuildStyles {
+  name: string;
+  value: string;
+}
+ 
+export interface IBpCals {
+  [bpName: string]: IRBuildStyles;
+}
+ 
+export interface IBuildCss {
+  type: TDirectiveName;
+  bps: IBpCals;
+  deep: boolean;
+}
+ 
+const buildCss = (data: IBuildCss): IStyles => {
+  // creating the styles
+  const objStyles = createStyles(data.type, data.bps);
+ 
+  // Inserting CSS rules
+  if (data.deep) {
+    insertRules(objStyles);
+  }
+ 
+  // name classes cleaner
+  return nameCleaner(objStyles);
+};
+ 
+export default buildCss;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/calPercentage.ts.html b/coverage/lcov-report/src/helpers/calPercentage.ts.html new file mode 100644 index 0000000..2a5d03b --- /dev/null +++ b/coverage/lcov-report/src/helpers/calPercentage.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for src/helpers/calPercentage.ts + + + + + + + + + +
+
+

All files / src/helpers calPercentage.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +942x +48x +48x +48x +48x +  +  +42x + 
const calPercentage = (n1: number, n2: number): string => {
+  const cal = (n1 * 100) / n2;
+  const haveDecimal = cal - Math.floor(cal) !== 0;
+  const result = haveDecimal ? cal.toFixed(3) : cal;
+  return result + '%';
+};
+ 
+export default calPercentage;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/createScopeStyles.ts.html b/coverage/lcov-report/src/helpers/createScopeStyles.ts.html new file mode 100644 index 0000000..96410b4 --- /dev/null +++ b/coverage/lcov-report/src/helpers/createScopeStyles.ts.html @@ -0,0 +1,292 @@ + + + + + + Code coverage report for src/helpers/createScopeStyles.ts + + + + + + + + + +
+
+

All files / src/helpers createScopeStyles.ts

+
+ +
+ 100% + Statements + 20/20 +
+ + +
+ 100% + Branches + 8/8 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 20/20 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +48x +  +  +  +  +  +245x +245x +237x +237x +237x +237x +  +4x +4x +  +3x +  +  +3x +  +230x +230x +  +237x +  +  +  +245x +236x +  +  +  +  +9x +  +  +1x +  +  +  +  +  +  +  +  +245x +  +  +48x + 
export type TInsertion = 'before' | 'after' | 'append';
+ 
+export interface ICreateScopeStyles {
+  bridge?: boolean;
+  bp: string;
+  insertionType: TInsertion;
+  node: HTMLElement;
+}
+ 
+export interface IRCreateScopeStyles {
+  method:
+    | CSSStyleSheet
+    | {
+        insertRule: (ruleCss: string) => void;
+        rules: string[];
+      };
+  node: HTMLElement;
+}
+ 
+const createScopeStyles = ({
+  bridge: withBridge,
+  bp,
+  insertionType,
+  node,
+}: ICreateScopeStyles): IRCreateScopeStyles => {
+  let stylesScope = document.getElementById('layouter-' + bp);
+  if (!stylesScope) {
+    stylesScope = document.createElement('style');
+    stylesScope.appendChild(document.createTextNode('')); // WebKit hack :(
+    const nodeParent = node.parentNode as HTMLDivElement;
+    switch (insertionType) {
+      case 'before':
+        nodeParent.insertBefore(stylesScope, node);
+        break;
+      case 'after':
+        node.nextSibling
+          ? nodeParent.insertBefore(stylesScope, node.nextSibling)
+          : nodeParent.appendChild(stylesScope);
+        break;
+      case 'append':
+        node.appendChild(stylesScope);
+        break;
+    }
+    stylesScope.id = 'layouter-' + bp;
+  }
+ 
+  let bridge: IRCreateScopeStyles;
+  if (withBridge) {
+    bridge = {
+      method: (stylesScope as HTMLStyleElement).sheet as CSSStyleSheet,
+      node: stylesScope,
+    };
+  } else {
+    bridge = {
+      method: {
+        insertRule: (ruleCss: string) => {
+          (stylesScope as HTMLDivElement).appendChild(
+            document.createTextNode(ruleCss)
+          );
+        },
+        rules: [],
+      },
+      node: stylesScope,
+    };
+  }
+  return bridge;
+};
+ 
+export default createScopeStyles;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/createStyles.ts.html b/coverage/lcov-report/src/helpers/createStyles.ts.html new file mode 100644 index 0000000..781eaec --- /dev/null +++ b/coverage/lcov-report/src/helpers/createStyles.ts.html @@ -0,0 +1,328 @@ + + + + + + Code coverage report for src/helpers/createStyles.ts + + + + + + + + + +
+
+

All files / src/helpers createStyles.ts

+
+ +
+ 100% + Statements + 45/45 +
+ + +
+ 100% + Branches + 16/16 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 44/44 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +8244x +44x +44x +  +44x +  +  +  +  +  +44x +166x +166x +166x +166x +166x +  +166x +  +303x +  +  +303x +303x +2x +  +  +303x +303x +  +  +  +303x +24x +24x +  +  +  +  +24x +  +96x +24x +  +2x +1x +  +  +22x +  +  +279x +  +  +303x +303x +303x +  +294x +142x +  +152x +152x +  +  +9x +9x +9x +9x +9x +  +  +303x +151x +  +303x +  +166x +  +  +44x + 
import { flexAttrsSelf } from '../config/flex';
+import config from '../config/main';
+import { processors, TDirectiveName } from '../config/processors';
+import { IBpCals } from './buildCss';
+import percentageConverter from './percentageConverter';
+ 
+export interface IStyles {
+  [name: string]: string;
+}
+ 
+const createStyles = (directive: TDirectiveName, bps: IBpCals): IStyles => {
+  const intConfig = config();
+  const sizes = intConfig.sizes;
+  const prefix = intConfig.prefix;
+  const prop = processors[directive].ruleCss;
+  const styles: IStyles = {};
+ 
+  Object.keys(bps).forEach(bp => {
+    // preparing the className
+    const shortNameClass = bps[bp].name;
+ 
+    // just if have a percentage
+    let nameClass = shortNameClass;
+    if (shortNameClass.includes('%')) {
+      nameClass = shortNameClass.replace(shortNameClass, percentageConverter(shortNameClass));
+    }
+ 
+    const finalPrefix = prefix ? prefix + '-' : '';
+    nameClass = finalPrefix + directive + '-' + nameClass.replace(/\//g, '\\/').replace(/:/g, '\\:').replace('@', '\\@').split('.').join('_');
+ 
+    // Property and value
+    let propAndVal;
+    if (directive === 'flex') {
+      propAndVal = bps[bp].value;
+      const flexImportant = shortNameClass.includes('!')
+        ? ';display:flex !important;'
+        : ';display:flex;';
+ 
+      // Searching a flex self inside. ['as' for 'align-self']
+      const attrsFlexSelfs = ['as']
+        .concat(flexAttrsSelf)
+        .filter(nameAttrFlex => shortNameClass.includes(nameAttrFlex + ':'));
+      if (attrsFlexSelfs.length) {
+        // if the items number of flex selft (+1) is diferrent so exists other flex attribute. Example: as:ce jc:ce
+        if ((attrsFlexSelfs.length + 1) !== shortNameClass.split(':').length) {
+          propAndVal += flexImportant;
+        }
+      } else {
+        propAndVal += flexImportant;
+      }
+    } else {
+      propAndVal = prop + ':' + bps[bp].value;
+    }
+ 
+    let rule = '@media screen and ';
+    let direct = false;
+    if (!bp.includes('-')) {
+      // no tiene until
+      if (sizes[bp]) {
+        rule += '(min-width: ' + sizes[bp] + 'px)';
+      } else {
+        rule = '.' + nameClass.replace(/!/g, '\\!') + '{' + propAndVal + '}';
+        direct = true;
+      }
+    } else {
+      const bpSplited = bp.split('-');
+      const bp1 = bpSplited[0];
+      if (bp1) rule += '(min-width: ' + sizes[bp1] + 'px) and ';
+      const bp2 = bpSplited[1];
+      rule += '(max-width: ' + (sizes[bp2] - 1) + 'px)';
+    }
+ 
+    if (!direct) {
+      rule += '{.' + nameClass.replace(/!/g, '\\!') + '{' + propAndVal + '}}';
+    }
+    styles[nameClass] = rule;
+  });
+  return styles;
+};
+ 
+export default createStyles;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/getScopeByclassName.ts.html b/coverage/lcov-report/src/helpers/getScopeByclassName.ts.html new file mode 100644 index 0000000..781a8aa --- /dev/null +++ b/coverage/lcov-report/src/helpers/getScopeByclassName.ts.html @@ -0,0 +1,235 @@ + + + + + + Code coverage report for src/helpers/getScopeByclassName.ts + + + + + + + + + +
+
+

All files / src/helpers getScopeByclassName.ts

+
+ +
+ 100% + Statements + 26/26 +
+ + +
+ 100% + Branches + 5/5 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 24/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +5143x +43x +  +43x +120x +120x +120x +120x +120x +  +  +120x +49x +49x +  +  +  +71x +71x +  +  +9x +6x +3x +3x +  +  +  +  +  +3x +  +  +  +3x +1x +  +  +2x +2x +  +  +  +  +  +  +2x +  +  +43x + 
import config from '../config/main';
+import createScopeStyles, { IRCreateScopeStyles } from './createScopeStyles';
+ 
+const getScopeByclassName = (className: string): IRCreateScopeStyles => {
+  const nameClass = className.replace(/!/g, '');
+  const atIndex = nameClass.indexOf('@');
+  const intConfig = config();
+  const scope = intConfig.scope;
+  const bridge = intConfig.bridge;
+ 
+  // Haven´t a BP designed
+  if (atIndex === -1) {
+    const firstBp = Object.keys(intConfig.breakpoints)[0];
+    return scope[firstBp as string];
+  }
+ 
+  // Have a BP designed, a normal BP.
+  const bp = nameClass.substring(atIndex + 1);
+  if (!bp.includes('-')) return scope[bp]; // A simple BP (13/15@lg), not compound (like this: 13/15@sm-md).
+ 
+  // A BP until. Example 13/15@-md
+  if (bp.substring(0, 1) === '-') {
+    if (scope.hasOwnProperty(bp)) return scope[bp]; // exists the Scope.
+    const bpUntil = bp.substring(1);
+    scope[bp] = createScopeStyles({
+      bridge: bridge,
+      bp,
+      insertionType: 'before',
+      node: scope[bpUntil].node,
+    });
+    return scope[bp]; // returning a new scope created
+  }
+ 
+  // A BP from and until (a BP compound). Example: Example 13/15@sm-md
+  if (scope.hasOwnProperty(bp)) {
+    return scope[bp]; // exists the Scope.
+  }
+ 
+  const fromBp = bp.split('-')[0];
+  scope[bp] = createScopeStyles({
+    bridge: bridge,
+    bp,
+    insertionType: 'after',
+    node: scope[fromBp].node,
+  });
+ 
+  return scope[bp]; // returning a new scope compounded created
+};
+ 
+export default getScopeByclassName;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/index.html b/coverage/lcov-report/src/helpers/index.html new file mode 100644 index 0000000..a6c3ee8 --- /dev/null +++ b/coverage/lcov-report/src/helpers/index.html @@ -0,0 +1,341 @@ + + + + + + Code coverage report for src/helpers + + + + + + + + + +
+
+

All files src/helpers

+
+ +
+ 100% + Statements + 240/240 +
+ + +
+ 98.48% + Branches + 65/66 +
+ + +
+ 100% + Functions + 35/35 +
+ + +
+ 100% + Lines + 232/232 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
breakpointsNums.ts +
+
100%11/1187.5%7/8100%5/5100%11/11
breakpointsOrdered.ts +
+
100%6/6100%0/0100%2/2100%5/5
buildAttr.ts +
+
100%15/15100%2/2100%3/3100%14/14
buildCss.ts +
+
100%9/9100%1/1100%1/1100%9/9
calPercentage.ts +
+
100%6/6100%2/2100%1/1100%6/6
createScopeStyles.ts +
+
100%20/20100%8/8100%2/2100%20/20
createStyles.ts +
+
100%45/45100%16/16100%3/3100%44/44
getScopeByclassName.ts +
+
100%26/26100%5/5100%1/1100%24/24
initAutoProcessor.ts +
+
100%15/15100%0/0100%5/5100%14/14
mainObserver.ts +
+
100%22/22100%8/8100%3/3100%22/22
nameCleaner.ts +
+
100%10/10100%0/0100%2/2100%10/10
percentageConverter.ts +
+
100%3/3100%0/0100%1/1100%3/3
prepareParam.ts +
+
100%17/17100%3/3100%1/1100%17/17
processedNumber.ts +
+
100%15/15100%8/8100%2/2100%15/15
regError.ts +
+
100%12/12100%2/2100%1/1100%11/11
scopesStylesBuilder.ts +
+
100%8/8100%3/3100%2/2100%7/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/initAutoProcessor.ts.html b/coverage/lcov-report/src/helpers/initAutoProcessor.ts.html new file mode 100644 index 0000000..8162ee2 --- /dev/null +++ b/coverage/lcov-report/src/helpers/initAutoProcessor.ts.html @@ -0,0 +1,148 @@ + + + + + + Code coverage report for src/helpers/initAutoProcessor.ts + + + + + + + + + +
+
+

All files / src/helpers initAutoProcessor.ts

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22  +2x +  +2x +2x +2x +36x +2x +2x +2x +1x +  +2x +2x +1x +  +2x +  +  +  +2x + 
import { ILayouter } from './../main';
+import { processors } from '../config/processors';
+ 
+const initAutoProcessor = (layouter: ILayouter) => {
+  return new Promise(resolve => {
+    const props = Object.keys(processors);
+    const attrs = props.map(prop => `[${prop}]`).join(', ');
+    const nodes = document.querySelectorAll(attrs);
+    const setNodes = new Set();
+    Array.prototype.forEach.call(nodes, itemNode => {
+      setNodes.add(itemNode);
+    });
+    const promises: Promise<void>[] = [];
+    setNodes.forEach(node => {
+      promises.push(layouter.set(node as Element | HTMLElement));
+    });
+    Promise.all(promises).then(resolve);
+  });
+};
+ 
+export default initAutoProcessor;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/mainObserver.ts.html b/coverage/lcov-report/src/helpers/mainObserver.ts.html new file mode 100644 index 0000000..b4cef7a --- /dev/null +++ b/coverage/lcov-report/src/helpers/mainObserver.ts.html @@ -0,0 +1,208 @@ + + + + + + Code coverage report for src/helpers/mainObserver.ts + + + + + + + + + +
+
+

All files / src/helpers mainObserver.ts

+
+ +
+ 100% + Statements + 22/22 +
+ + +
+ 100% + Branches + 8/8 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 22/22 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42  +2x +  +2x +2x +2x +12x +21x +4x +1x +  +3x +3x +3x +3x +2x +  +  +  +17x +17x +17x +17x +17x +7x +  +  +  +  +  +2x +  +  +  +  +  +  +2x +  +  +2x + 
import { ILayouter } from './../main';
+import { processors } from '../config/processors';
+ 
+const mainObserver = (layouter: ILayouter) => {
+  const props = Object.keys(processors);
+  const obsBody = new MutationObserver(mutations => {
+    for (let mutation of mutations) {
+      if (mutation.type === 'childList') {
+        if (!mutation.addedNodes.length) {
+          continue;
+        }
+        mutation.addedNodes.forEach(node => {
+          if (node instanceof HTMLElement) {
+            const props = layouter.getParameters(node);
+            if (Object.keys(props).length) {
+              layouter.set(node, props);
+            }
+          }
+        });
+      } else if (mutation.type === 'attributes') {
+        const node = mutation.target;
+        if (node instanceof HTMLElement) {
+          const props = layouter.getParameters(node);
+          if (Object.keys(props).length) {
+            layouter.set(node, props);
+          }
+        }
+      }
+    }
+  });
+  const observerOptions = {
+    childList: true,
+    subtree: true,
+    attributes: true,
+    attributeFilter: props,
+    characterData: false,
+  };
+  obsBody.observe(document.body, observerOptions);
+};
+ 
+export default mainObserver;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/nameCleaner.ts.html b/coverage/lcov-report/src/helpers/nameCleaner.ts.html new file mode 100644 index 0000000..1515d5e --- /dev/null +++ b/coverage/lcov-report/src/helpers/nameCleaner.ts.html @@ -0,0 +1,157 @@ + + + + + + Code coverage report for src/helpers/nameCleaner.ts + + + + + + + + + +
+
+

All files / src/helpers nameCleaner.ts

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25  +  +43x +  +  +  +  +  +  +  +  +43x +165x +165x +302x +302x +1812x +  +302x +  +165x +  +  +43x + 
import { IStyles } from './createStyles';
+ 
+const replaceList = [
+  ['\/', ''],
+  ['\\', '/'],
+  ['/:', ':'],
+  ['\\:', ':'],
+  ['\\@', '@'],
+  ['/@', '@'],
+];
+ 
+const nameCleaner = (objStyles: IStyles) => {
+  const obj: IStyles = {};
+  for (const name in objStyles) {
+    let newName = name;
+    replaceList.forEach(reItem => {
+      newName = newName.split(reItem[0]).join(reItem[1]);
+    });
+    obj[newName] = objStyles[name];
+  }
+  return obj;
+};
+ 
+export default nameCleaner;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/percentageConverter.ts.html b/coverage/lcov-report/src/helpers/percentageConverter.ts.html new file mode 100644 index 0000000..1d1febd --- /dev/null +++ b/coverage/lcov-report/src/helpers/percentageConverter.ts.html @@ -0,0 +1,100 @@ + + + + + + Code coverage report for src/helpers/percentageConverter.ts + + + + + + + + + +
+
+

All files / src/helpers percentageConverter.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +645x +3x +  +  +45x + 
const percentageConverter = (percentage: string) => {
+  return '0¯' + percentage.replace('%', '');
+};
+ 
+export default percentageConverter;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/prepareParam.ts.html b/coverage/lcov-report/src/helpers/prepareParam.ts.html new file mode 100644 index 0000000..c50f2ed --- /dev/null +++ b/coverage/lcov-report/src/helpers/prepareParam.ts.html @@ -0,0 +1,199 @@ + + + + + + Code coverage report for src/helpers/prepareParam.ts + + + + + + + + + +
+
+

All files / src/helpers prepareParam.ts

+
+ +
+ 100% + Statements + 17/17 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 17/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +3943x +  +  +  +  +  +  +  +  +43x +  +322x +322x +322x +322x +156x +156x +156x +  +166x +166x +  +  +322x +57x +57x +57x +  +  +322x +  +  +  +  +  +  +  +43x + 
import getConfig from '../config/main';
+ 
+export interface IPrepareParamObj {
+  widthBp: boolean;
+  numbers: string;
+  breakPoints: string;
+  important: boolean;
+}
+ 
+const prepareParam = (param: string): IPrepareParamObj => {
+  let bp: string;
+  let argParam = param;
+  let important = false;
+  const haveBp = argParam.includes('@');
+  if (haveBp) {
+    const bpSplited = argParam.split('@');
+    argParam = bpSplited[0];
+    bp = bpSplited[1];
+  } else {
+    const config = getConfig();
+    bp = Object.keys(config.breakpoints)[0];
+  }
+ 
+  if (param.includes('!')) {
+    important = true;
+    bp = bp.replace(/!/g, '');
+    argParam = argParam.replace(/!/g, '');
+  }
+ 
+  return {
+    widthBp: haveBp,
+    numbers: argParam,
+    breakPoints: bp,
+    important,
+  };
+};
+ 
+export default prepareParam;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/processedNumber.ts.html b/coverage/lcov-report/src/helpers/processedNumber.ts.html new file mode 100644 index 0000000..306ca03 --- /dev/null +++ b/coverage/lcov-report/src/helpers/processedNumber.ts.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for src/helpers/processedNumber.ts + + + + + + + + + +
+
+

All files / src/helpers processedNumber.ts

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 100% + Branches + 8/8 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 15/15 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +2939x +  +39x +  +39x +  +298x +21x +21x +  +  +  +277x +1x +  +276x +1656x +  +276x +8x +  +268x +  +  +298x +  +  +39x + 
import calPercentage from './calPercentage';
+ 
+const relativeMeasures = ['%', 'rem', 'em', 'ex', 'vw', 'vh'];
+ 
+const processedNumber = (n: string) => {
+  let nProcessed;
+  if (n.includes('/')) {
+    nProcessed = n.split('/');
+    nProcessed = calPercentage(
+      parseFloat(nProcessed[0]),
+      parseFloat(nProcessed[1])
+    );
+  } else if (n === 'auto') {
+    nProcessed = 'auto';
+  } else {
+    const relativeUnits = relativeMeasures.filter(unit => {
+      return n.includes(unit);
+    });
+    if (relativeUnits.length) {
+      nProcessed = n;
+    } else {
+      nProcessed = n === '0' ? n : n + 'px';
+    }
+  }
+  return nProcessed;
+};
+ 
+export default processedNumber;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/regError.ts.html b/coverage/lcov-report/src/helpers/regError.ts.html new file mode 100644 index 0000000..30bb644 --- /dev/null +++ b/coverage/lcov-report/src/helpers/regError.ts.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for src/helpers/regError.ts + + + + + + + + + +
+
+

All files / src/helpers regError.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +2027x +  +27x +  +  +  +  +9x +9x +9x +9x +9x +2x +2x +  +9x +  +  +27x + 
import config from "../config/main";
+ 
+const regError = (
+  name: string,
+  message: string,
+  Node?: Element | HTMLElement
+): Error => {
+  const err = new Error();
+  err.name = name;
+  err.message = message;
+  const intConfig = config();
+  if ( intConfig.debug ) {
+    console.error(err);
+    if (Node) console.log(Node);
+  }
+  return err;
+};
+ 
+export default regError;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/helpers/scopesStylesBuilder.ts.html b/coverage/lcov-report/src/helpers/scopesStylesBuilder.ts.html new file mode 100644 index 0000000..c73792c --- /dev/null +++ b/coverage/lcov-report/src/helpers/scopesStylesBuilder.ts.html @@ -0,0 +1,160 @@ + + + + + + Code coverage report for src/helpers/scopesStylesBuilder.ts + + + + + + + + + +
+
+

All files / src/helpers scopesStylesBuilder.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26  +47x +  +  +  +  +  +47x +  +  +  +  +50x +50x +238x +237x +  +  +  +  +  +  +  +50x +  + 
import { IBreakpoints } from './breakpointsNums';
+import createScopeStyles, { IRCreateScopeStyles } from './createScopeStyles';
+ 
+export interface IScopes {
+  [name: string]: IRCreateScopeStyles;
+}
+ 
+export const scopesStylesBuilder = (
+  breakpoints: IBreakpoints,
+  bridge: boolean,
+  scope?: IScopes
+): IScopes => {
+  const scopes: IScopes = scope || {};
+  Object.keys(breakpoints).forEach((bp: string) => {
+    if (!scopes.hasOwnProperty(bp)) {
+      scopes[bp] = createScopeStyles({
+        bridge,
+        bp,
+        insertionType: 'append',
+        node: document.body,
+      });
+    }
+  });
+  return scopes;
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/index.html b/coverage/lcov-report/src/index.html new file mode 100644 index 0000000..79ee98d --- /dev/null +++ b/coverage/lcov-report/src/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 98.18% + Statements + 54/55 +
+ + +
+ 80% + Branches + 4/5 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 98.14% + Lines + 53/54 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
main.ts +
+
98.18%54/5580%4/5100%2/298.14%53/54
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/main.ts.html b/coverage/lcov-report/src/main.ts.html new file mode 100644 index 0000000..65a7553 --- /dev/null +++ b/coverage/lcov-report/src/main.ts.html @@ -0,0 +1,913 @@ + + + + + + Code coverage report for src/main.ts + + + + + + + + + +
+
+

All files / src main.ts

+
+ +
+ 98.18% + Statements + 54/55 +
+ + +
+ 80% + Branches + 4/5 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 98.14% + Lines + 53/54 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +2772x +2x +  +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +  +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +  +2x +2x +  +  +  +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +  +  +2x +  +  +2x +  +  +  +2x + 
import { IConfig, IConfigUser, setConfig, updateConfig } from './config/main';
+import getParameters from './methods/getParameters';
+ 
+import build from './methods/build';
+import buildCols from './methods/buildCols';
+import buildFlex from './methods/buildFlex';
+import buildPads from './methods/buildPads';
+import buildPadTop from './methods/buildPadTop';
+import buildPadRight from './methods/buildPadRight';
+import buildPadBottom from './methods/buildPadBottom';
+import buildPadLeft from './methods/buildPadLeft';
+import buildMars from './methods/buildMars';
+import buildMarTop from './methods/buildMarTop';
+import buildMarRight from './methods/buildMarRight';
+import buildMarBottom from './methods/buildMarBottom';
+import buildMarLeft from './methods/buildMarLeft';
+import buildMaxWidth from './methods/buildMaxWidth';
+import buildMaxHeight from './methods/buildMaxHeight';
+import buildMinWidth from './methods/buildMinWidth';
+import buildMinHeight from './methods/buildMinHeight';
+import buildHeight from './methods/buildHeight';
+import buildWidth from './methods/buildWidth';
+ 
+import set from './methods/set';
+import setFlex from './methods/setFlex';
+import setCols from './methods/SetCols';
+import setHeight from './methods/setHeight';
+import setMarBottom from './methods/setMarBottom';
+import setMarLeft from './methods/setMarLeft';
+import setMarRight from './methods/setMarRight';
+import setMars from './methods/setMars';
+import setMarTop from './methods/setMarTop';
+import setMaxWidth from './methods/setMaxWidth';
+import setMinHeight from './methods/setMinHeight';
+import setMinWidth from './methods/setMinWidth';
+import setPadBottom from './methods/setPadBottom';
+import setPadLeft from './methods/setPadLeft';
+import setPadRight from './methods/setPadRight';
+import setPads from './methods/setPads';
+import setPadTop from './methods/setPadTop';
+import setWidth from './methods/setWidth';
+import setMaxHeight from './methods/setMaxHeight';
+ 
+import insertRules from './methods/insertRules';
+import reset from './methods/reset';
+ 
+import { IStyles } from './helpers/createStyles';
+import { IBuildResult } from './methods/build';
+import initAutoProcessor from './helpers/initAutoProcessor';
+import mainObserver from './helpers/mainObserver';
+import { TDirectiveName } from './config/processors';
+ 
+export interface ILayouter extends IConfig {
+  getParameters: (Node: HTMLElement | Element) => Partial<Record<TDirectiveName, string>>;
+  updateConfig: (userConfig: Partial<Omit<IConfigUser, 'bridge'>>) => IConfig;
+ 
+  build: (
+    obj: Partial<Record<TDirectiveName, string>>,
+    insertStyles?: boolean
+  ) => Partial<IBuildResult> | Error;
+  buildCols: (
+    valCols: string,
+    insertStyles?: boolean
+  ) => IStyles | Error;
+  buildFlex: (
+    valFlex: string,
+    insertStyles?: boolean
+  ) => IStyles | Error;
+ 
+  buildPads: (
+    valPads: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildPadTop: (
+    valPadTop: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildPadRight: (
+    valPadRight: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildPadBottom: (
+    valPadBottom: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildPadLeft: (
+    valPadLeft: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildMars: (
+    valMars: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildMarTop: (
+    valMarTop: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildMarRight: (
+    valMarRight: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildMarBottom: (
+    valMarBottom: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildMarLeft: (
+    valMarLeft: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildMaxWidth: (
+    valMaxWidth: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildMaxHeight: (
+    valMaxHeight: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildMinWidth: (
+    valMinWidth: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildMinHeight: (
+    valMinHeight: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildHeight: (
+    valHeight: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+  buildWidth: (
+    valWidth: string,
+    insertStyles?: boolean
+  ) => IStyles | boolean;
+ 
+  set: (Node: HTMLElement | Element, parameters?: Partial<Record<TDirectiveName, string>>) => Promise<void>;
+  setCols: (Node: HTMLElement | Element, values?: string) => Promise<void | Error>;
+  setFlex: (Node: HTMLElement | Element, values?: string) => Promise<void | Error>;
+ 
+  setMars: (Node: HTMLElement | Element, values?: string) => Promise<void>;
+  setMarTop: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setMarRight: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setMarBottom: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setMarLeft: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+ 
+  setPads: (Node: HTMLElement | Element, values?: string) => Promise<void>;
+  setPadTop: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setPadRight: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setPadBottom: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setPadLeft: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+ 
+  setWidth: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setMinWidth: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setMaxWidth: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+ 
+  setHeight: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setMinHeight: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+  setMaxHeight: (
+    Node: HTMLElement | Element,
+    values?: string
+  ) => Promise<void>;
+ 
+  insertRules: (objStyles: IStyles) => void;
+ 
+  reset: (
+    Node: HTMLElement | Element
+  ) => Promise<void>;
+}
+ 
+declare global {
+  interface Window {
+    layouter: ILayouter;
+  }
+}
+ 
+const layouter = (userConfig: Partial<IConfigUser> = {}): ILayouter => {
+  const config = setConfig(userConfig);
+ 
+  const instance = {
+    ...config,
+    getParameters,
+    updateConfig,
+    insertRules,
+    build,
+    buildCols,
+    buildFlex,
+    buildPads,
+    buildPadTop,
+    buildPadRight,
+    buildPadBottom,
+    buildPadLeft,
+    buildMars,
+    buildMarTop,
+    buildMarRight,
+    buildMarBottom,
+    buildMarLeft,
+    buildMaxWidth,
+    buildMaxHeight,
+    buildMinWidth,
+    buildMinHeight,
+    buildHeight,
+    buildWidth,
+    set,
+    setCols,
+    setFlex,
+    setMars,
+    setMarTop,
+    setMarRight,
+    setMarBottom,
+    setMarLeft,
+    setPads,
+    setPadTop,
+    setPadRight,
+    setPadBottom,
+    setPadLeft,
+    setWidth,
+    setMinWidth,
+    setMaxWidth,
+    setHeight,
+    setMinHeight,
+    setMaxHeight,
+    reset,
+  };
+ 
+  // Auto init process
+  initAutoProcessor(instance).then(() => {
+    if (instance.ready) instance.ready(instance);
+    mainObserver(instance);
+  });
+ 
+  return instance
+};
+ 
+Iif (window && typeof exports === 'undefined') {
+  window.layouter = layouter();
+}
+ 
+export default layouter;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/SetCols.ts.html b/coverage/lcov-report/src/methods/SetCols.ts.html new file mode 100644 index 0000000..7b620d5 --- /dev/null +++ b/coverage/lcov-report/src/methods/SetCols.ts.html @@ -0,0 +1,196 @@ + + + + + + Code coverage report for src/methods/SetCols.ts + + + + + + + + + +
+
+

All files / src/methods SetCols.ts

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 19/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +383x +3x +3x +3x +  +3x +  +  +  +4x +4x +4x +1x +  +  +  +  +1x +1x +  +  +  +3x +3x +1x +1x +  +2x +  +  +2x +2x +  +  +  +  +3x + 
import addClasses from '../utils/addClasses';
+import regError from '../helpers/regError';
+import buildCols from './buildCols';
+import removeAttr from '../utils/removeAttr';
+ 
+const setCols = (
+  Node: HTMLElement | Element,
+  columns?: string
+): Promise<void | Error> => {
+  return new Promise((resolve, reject) => {
+    let values = columns || Node.getAttribute('cols');
+    if (!values) {
+      const err = regError(
+        'Empty',
+        "The value of the directive 'cols' is empty",
+        Node
+      );
+      reject(err);
+      return;
+    }
+ 
+    // Creating, inserting, and adding classNames of rules in Node.
+    const objStyles = buildCols(values, true);
+    if (objStyles instanceof Error) {
+      reject(objStyles);
+      return;
+    }
+    const classesToAdd = Object.keys(objStyles).join(' ');
+ 
+    // removing prop of Node and adding the corresponding classes
+    removeAttr(Node, 'cols')
+      .then(() => addClasses(Node, classesToAdd))
+      .then(resolve);
+  });
+};
+ 
+export default setCols;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/build.ts.html b/coverage/lcov-report/src/methods/build.ts.html new file mode 100644 index 0000000..ed2f64b --- /dev/null +++ b/coverage/lcov-report/src/methods/build.ts.html @@ -0,0 +1,295 @@ + + + + + + Code coverage report for src/methods/build.ts + + + + + + + + + +
+
+

All files / src/methods build.ts

+
+ +
+ 100% + Statements + 34/34 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 33/33 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +715x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +5x +  +  +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +5x +  +  +  +25x +25x +25x +43x +43x +  +  +  +43x +1x +1x +  +42x +  +  +25x +24x +  +  +5x + 
import { processors, TDirectiveName } from '../config/processors';
+import buildCols from './buildCols';
+import buildFlex from './buildFlex';
+import buildPads from './buildPads';
+import buildPadTop from './buildPadTop';
+import buildPadRight from './buildPadRight';
+import buildPadBottom from './buildPadBottom';
+import buildPadLeft from './buildPadLeft';
+import buildMars from './buildMars';
+import buildMarTop from './buildMarTop';
+import buildMarRight from './buildMarRight';
+import buildMarBottom from './buildMarBottom';
+import buildMarLeft from './buildMarLeft';
+import buildMaxWidth from './buildMaxWidth';
+import buildMaxHeight from './buildMaxHeight';
+import buildMinWidth from './buildMinWidth';
+import buildMinHeight from './buildMinHeight';
+import buildHeight from './buildHeight';
+import buildWidth from './buildWidth';
+import { IStyles } from '../helpers/createStyles';
+ 
+const builders = {
+  buildCols,
+  buildFlex,
+  buildPads,
+  buildPadTop,
+  buildPadRight,
+  buildPadBottom,
+  buildPadLeft,
+  buildMars,
+  buildMarTop,
+  buildMarRight,
+  buildMarBottom,
+  buildMarLeft,
+  buildMaxWidth,
+  buildMaxHeight,
+  buildMinWidth,
+  buildMinHeight,
+  buildHeight,
+  buildWidth,
+};
+ 
+export interface IBuildResult {
+  [prop: string]: IStyles | boolean;
+}
+ 
+const build = (
+  obj: Partial<Record<TDirectiveName, string>>,
+  insertStyles: boolean = false
+): Partial<IBuildResult> | Error => {
+  const rObj: Partial<IBuildResult> = {};
+  let err: Error | boolean = false;
+  for (const prop in obj) {
+    const propData = processors[prop as TDirectiveName];
+    const objStyles: IStyles | Error = builders[propData.build as keyof typeof builders](
+      obj[prop as TDirectiveName] as string,
+      insertStyles
+    );
+    if ( objStyles instanceof Error ) {
+      err = objStyles;
+      break;
+    } else {
+      rObj[prop] = objStyles;
+    }
+  }
+  if ( err ) return err;
+  return rObj
+};
+ 
+export default build;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildCols.ts.html b/coverage/lcov-report/src/methods/buildCols.ts.html new file mode 100644 index 0000000..11e00a3 --- /dev/null +++ b/coverage/lcov-report/src/methods/buildCols.ts.html @@ -0,0 +1,292 @@ + + + + + + Code coverage report for src/methods/buildCols.ts + + + + + + + + + +
+
+

All files / src/methods buildCols.ts

+
+ +
+ 100% + Statements + 33/33 +
+ + +
+ 100% + Branches + 9/9 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 31/31 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +707x +7x +7x +  +7x +7x +  +  +7x +  +  +  +  +  +14x +14x +  +  +  +14x +  +14x +  +14x +28x +28x +28x +28x +28x +  +28x +23x +23x +  +5x +3x +2x +  +  +  +2x +  +1x +  +  +2x +  +  +  +26x +26x +  +26x +  +  +  +  +  +14x +  +  +12x +  +  +  +  +  +  +7x + 
import prepareParam from '../helpers/prepareParam';
+import regError from '../helpers/regError';
+import calPercentage from '../helpers/calPercentage';
+ 
+import buildCss, { IBpCals } from '../helpers/buildCss';
+import getConfig from '../config/main';
+import { IStyles } from '../helpers/createStyles';
+ 
+const buildCols = (
+  values: string,
+  insertStyles: boolean = false
+): IStyles | Error => {
+  let cols: number[];
+  let bp;
+  let bpCals: IBpCals = {};
+  const config = getConfig();
+ 
+  // Getting numbers
+  let selectorName, propValue, paramPrepared;
+  const directBp = Object.keys(config.breakpoints)[0];
+ 
+  let err: boolean | Error = false;
+ 
+  for (const item of values.split(' ')) {
+    let param = item;
+    selectorName = param;
+    paramPrepared = prepareParam(param);
+    bp = paramPrepared.breakPoints;
+    param = paramPrepared.numbers;
+ 
+    if (param.includes('/')) {
+      const paramSplited = param.split('/');
+      cols = [Number(paramSplited[0]), Number(paramSplited[1])];
+    } else {
+      if (paramPrepared.widthBp) {
+        if (bp.includes('-')) {
+          err = regError(
+            'SyntaxError',
+            "You can't determine a 'until breakpoint' when use the explicit columns max: " + values
+          );
+          break;
+        } else {
+          cols = [Number(param), config.cols[bp] as number];
+        }
+      } else {
+        cols = [Number(param), config.cols[directBp] as number];
+      }
+    }
+ 
+    propValue = calPercentage(cols[0], cols[1]);
+    if (paramPrepared.important) propValue += ' !important';
+ 
+    bpCals[bp] = {
+      name: selectorName,
+      value: propValue,
+    };
+  }
+ 
+  if (err) return err;
+ 
+  // Building the classNames and the styles to use.
+  return buildCss({
+    type: 'cols',
+    bps: bpCals,
+    deep: insertStyles,
+  });
+};
+ 
+export default buildCols;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildFlex.ts.html b/coverage/lcov-report/src/methods/buildFlex.ts.html new file mode 100644 index 0000000..b6e7d19 --- /dev/null +++ b/coverage/lcov-report/src/methods/buildFlex.ts.html @@ -0,0 +1,289 @@ + + + + + + Code coverage report for src/methods/buildFlex.ts + + + + + + + + + +
+
+

All files / src/methods buildFlex.ts

+
+ +
+ 100% + Statements + 39/39 +
+ + +
+ 100% + Branches + 12/12 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 36/36 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +697x +7x +  +7x +  +7x +7x +  +7x +  +  +  +20x +  +  +20x +20x +20x +  +20x +  +42x +42x +42x +42x +42x +42x +  +42x +39x +1x +1x +  +38x +1x +1x +  +37x +  +3x +  +  +40x +  +40x +24x +  +  +  +  +16x +16x +16x +16x +  +  +  +20x +  +  +18x +  +  +  +  +  +  +7x + 
import { flexAttrsSelf, flexProsAndVals } from '../config/flex';
+import getConfig from '../config/main';
+ 
+import buildCss, { IBpCals } from '../helpers/buildCss';
+import { IStyles } from '../helpers/createStyles';
+import prepareParam from '../helpers/prepareParam';
+import regError from '../helpers/regError';
+ 
+const buildFlex = (
+  valFlex: string,
+  insertStyles: boolean = false
+): IStyles | Error => {
+  let bpCals: IBpCals = {};
+ 
+  // Getting numbers
+  let err: boolean | Error = false;
+  const config = getConfig();
+  const firstBp = Object.keys(config.breakpoints)[0];
+ 
+  for (const param of valFlex.split(' ')) {
+    let propVal;
+    let selectorName = param;
+    const paramPrepared = prepareParam(param);
+    const bpNames = paramPrepared.breakPoints;
+    const flexSplited = paramPrepared.numbers.split(':');
+    const nameProp = flexSplited[0] as keyof typeof flexProsAndVals; // 'fc' o 'or'
+    const valProp = flexSplited[1] as keyof typeof flexProsAndVals; // 'ce' o '1'
+ 
+    if (!flexAttrsSelf.includes(nameProp)) {
+      if (!flexProsAndVals.hasOwnProperty(nameProp)) {
+        err = regError('Non-existent Alias', "Don't exists the alias '" + nameProp + "' in Flex vault.");
+        break;
+      }
+      if (!flexProsAndVals.hasOwnProperty(valProp)) {
+        err = regError('Non-existent Alias', "Don't exists the alias '" + valProp + "' in Flex vault.");
+        break;
+      }
+      propVal = flexProsAndVals[nameProp] + ':' + flexProsAndVals[valProp];
+    } else {
+      propVal = flexProsAndVals[nameProp] + ':' + valProp;
+    }
+ 
+    if (paramPrepared.important) propVal += ' !important';
+ 
+    if (!bpCals.hasOwnProperty(bpNames)) {
+      bpCals[bpNames] = {
+        name: selectorName,
+        value: propVal,
+      }
+    } else {
+      if (selectorName.includes('@')) selectorName = selectorName.split('@')[0];
+      let sufixBp = bpNames === firstBp ? '' : '@' + bpNames;
+      bpCals[bpNames].name = bpCals[bpNames].name.split('@')[0] + '-' + selectorName + sufixBp;
+      bpCals[bpNames].value += ';' + propVal;
+    }
+  }
+ 
+  if (err) return err;
+ 
+  // Building the classNames and the styles to use.
+  return buildCss({
+    type: 'flex',
+    bps: bpCals,
+    deep: insertStyles,
+  });
+};
+ 
+export default buildFlex;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildHeight.ts.html b/coverage/lcov-report/src/methods/buildHeight.ts.html new file mode 100644 index 0000000..c6b82cb --- /dev/null +++ b/coverage/lcov-report/src/methods/buildHeight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildHeight.ts + + + + + + + + + +
+
+

All files / src/methods buildHeight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +4x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildHeight = (
+  valHeight: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valHeight, 'hgt', insertStyles);
+};
+ 
+export default buildHeight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildMarBottom.ts.html b/coverage/lcov-report/src/methods/buildMarBottom.ts.html new file mode 100644 index 0000000..aa15cf1 --- /dev/null +++ b/coverage/lcov-report/src/methods/buildMarBottom.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildMarBottom.ts + + + + + + + + + +
+
+

All files / src/methods buildMarBottom.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +15x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildMarBottom = (
+  valMarBottom: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valMarBottom, 'marb', insertStyles);
+};
+ 
+export default buildMarBottom;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildMarLeft.ts.html b/coverage/lcov-report/src/methods/buildMarLeft.ts.html new file mode 100644 index 0000000..6f49c0e --- /dev/null +++ b/coverage/lcov-report/src/methods/buildMarLeft.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildMarLeft.ts + + + + + + + + + +
+
+

All files / src/methods buildMarLeft.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +6x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildMarLeft = (
+  valMarLeft: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valMarLeft, 'marl', insertStyles);
+};
+ 
+export default buildMarLeft;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildMarRight.ts.html b/coverage/lcov-report/src/methods/buildMarRight.ts.html new file mode 100644 index 0000000..b94455c --- /dev/null +++ b/coverage/lcov-report/src/methods/buildMarRight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildMarRight.ts + + + + + + + + + +
+
+

All files / src/methods buildMarRight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +6x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildMarRight = (
+  valMarRight: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valMarRight, 'marr', insertStyles);
+};
+ 
+export default buildMarRight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildMarTop.ts.html b/coverage/lcov-report/src/methods/buildMarTop.ts.html new file mode 100644 index 0000000..8e9a72f --- /dev/null +++ b/coverage/lcov-report/src/methods/buildMarTop.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildMarTop.ts + + + + + + + + + +
+
+

All files / src/methods buildMarTop.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +8x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildMarTop = (
+  valMarTop: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valMarTop, 'mart', insertStyles);
+};
+ 
+export default buildMarTop;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildMars.ts.html b/coverage/lcov-report/src/methods/buildMars.ts.html new file mode 100644 index 0000000..f6b26da --- /dev/null +++ b/coverage/lcov-report/src/methods/buildMars.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildMars.ts + + + + + + + + + +
+
+

All files / src/methods buildMars.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +8x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildMars = (
+  valMars: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valMars, 'mar', insertStyles);
+};
+ 
+export default buildMars;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildMaxHeight.ts.html b/coverage/lcov-report/src/methods/buildMaxHeight.ts.html new file mode 100644 index 0000000..5be2988 --- /dev/null +++ b/coverage/lcov-report/src/methods/buildMaxHeight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildMaxHeight.ts + + + + + + + + + +
+
+

All files / src/methods buildMaxHeight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +4x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildMaxHeight = (
+  valMaxHeight: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valMaxHeight, 'mxh', insertStyles);
+};
+ 
+export default buildMaxHeight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildMaxWidth.ts.html b/coverage/lcov-report/src/methods/buildMaxWidth.ts.html new file mode 100644 index 0000000..84c8c1b --- /dev/null +++ b/coverage/lcov-report/src/methods/buildMaxWidth.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildMaxWidth.ts + + + + + + + + + +
+
+

All files / src/methods buildMaxWidth.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +4x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildMaxWidth = (
+  valMaxWidth: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valMaxWidth, 'mxw', insertStyles);
+};
+ 
+export default buildMaxWidth;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildMinHeight.ts.html b/coverage/lcov-report/src/methods/buildMinHeight.ts.html new file mode 100644 index 0000000..3a779fd --- /dev/null +++ b/coverage/lcov-report/src/methods/buildMinHeight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildMinHeight.ts + + + + + + + + + +
+
+

All files / src/methods buildMinHeight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +4x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildMinHeight = (
+  valMinHeight: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valMinHeight, 'mih', insertStyles);
+};
+ 
+export default buildMinHeight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildMinWidth.ts.html b/coverage/lcov-report/src/methods/buildMinWidth.ts.html new file mode 100644 index 0000000..0af9610 --- /dev/null +++ b/coverage/lcov-report/src/methods/buildMinWidth.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildMinWidth.ts + + + + + + + + + +
+
+

All files / src/methods buildMinWidth.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +4x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildMinWidth = (
+  valMinWidth: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valMinWidth, 'miw', insertStyles);
+};
+ 
+export default buildMinWidth;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildPadBottom.ts.html b/coverage/lcov-report/src/methods/buildPadBottom.ts.html new file mode 100644 index 0000000..50feb5d --- /dev/null +++ b/coverage/lcov-report/src/methods/buildPadBottom.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildPadBottom.ts + + + + + + + + + +
+
+

All files / src/methods buildPadBottom.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +6x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildPadBottom = (
+  valPadBottom: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valPadBottom, 'padb', insertStyles);
+};
+ 
+export default buildPadBottom;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildPadLeft.ts.html b/coverage/lcov-report/src/methods/buildPadLeft.ts.html new file mode 100644 index 0000000..bd1187a --- /dev/null +++ b/coverage/lcov-report/src/methods/buildPadLeft.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildPadLeft.ts + + + + + + + + + +
+
+

All files / src/methods buildPadLeft.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +6x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildPadLeft = (
+  valPadLeft: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valPadLeft, 'padl', insertStyles);
+};
+ 
+export default buildPadLeft;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildPadRight.ts.html b/coverage/lcov-report/src/methods/buildPadRight.ts.html new file mode 100644 index 0000000..785d49f --- /dev/null +++ b/coverage/lcov-report/src/methods/buildPadRight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildPadRight.ts + + + + + + + + + +
+
+

All files / src/methods buildPadRight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +6x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildPadRight = (
+  valPadRight: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valPadRight, 'padr', insertStyles);
+};
+ 
+export default buildPadRight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildPadTop.ts.html b/coverage/lcov-report/src/methods/buildPadTop.ts.html new file mode 100644 index 0000000..8092411 --- /dev/null +++ b/coverage/lcov-report/src/methods/buildPadTop.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildPadTop.ts + + + + + + + + + +
+
+

All files / src/methods buildPadTop.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +5x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildPadTop = (
+  valPadTop: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valPadTop, 'padt', insertStyles);
+};
+ 
+export default buildPadTop;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildPads.ts.html b/coverage/lcov-report/src/methods/buildPads.ts.html new file mode 100644 index 0000000..9c48ac2 --- /dev/null +++ b/coverage/lcov-report/src/methods/buildPads.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildPads.ts + + + + + + + + + +
+
+

All files / src/methods buildPads.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +7x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildPads = (
+  valPads: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valPads, 'pad', insertStyles);
+};
+ 
+export default buildPads;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/buildWidth.ts.html b/coverage/lcov-report/src/methods/buildWidth.ts.html new file mode 100644 index 0000000..d67795b --- /dev/null +++ b/coverage/lcov-report/src/methods/buildWidth.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/buildWidth.ts + + + + + + + + + +
+
+

All files / src/methods buildWidth.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +116x +  +6x +  +  +  +4x +  +  +6x + 
import buildAttr from '../helpers/buildAttr';
+ 
+const buildWidth = (
+  valWidth: string,
+  insertStyles: boolean = false
+) => {
+  return buildAttr(valWidth, 'wdh', insertStyles);
+};
+ 
+export default buildWidth;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/getParameters.ts.html b/coverage/lcov-report/src/methods/getParameters.ts.html new file mode 100644 index 0000000..be5e3ea --- /dev/null +++ b/coverage/lcov-report/src/methods/getParameters.ts.html @@ -0,0 +1,145 @@ + + + + + + Code coverage report for src/methods/getParameters.ts + + + + + + + + + +
+
+

All files / src/methods getParameters.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +215x +  +5x +30x +30x +30x +30x +42x +37x +37x +  +  +74x +  +  +  +30x +  +  +5x + 
import { processors, TDirectiveName } from '../config/processors';
+ 
+const getParameters = (Node: HTMLElement | Element): Partial<Record<TDirectiveName, string>> => {
+  const params: Partial<Record<TDirectiveName, string>> = {};
+  const attrs = Node.attributes;
+  const paramNames = Object.keys(processors);
+  Array.prototype.forEach.call(attrs, attr => {
+    if (paramNames.includes(attr.name)) {
+      if (attr.value !== '')
+        params[attr.name as TDirectiveName] = attr.value
+          .trim()
+          .split(' ')
+          .filter((item: string) => item)
+          .join(' ');
+    }
+  });
+  return params;
+};
+ 
+export default getParameters;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/index.html b/coverage/lcov-report/src/methods/index.html new file mode 100644 index 0000000..a2f5496 --- /dev/null +++ b/coverage/lcov-report/src/methods/index.html @@ -0,0 +1,731 @@ + + + + + + Code coverage report for src/methods + + + + + + + + + +
+
+

All files src/methods

+
+ +
+ 100% + Statements + 367/367 +
+ + +
+ 98.55% + Branches + 68/69 +
+ + +
+ 100% + Functions + 57/57 +
+ + +
+ 100% + Lines + 361/361 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
SetCols.ts +
+
100%19/19100%4/4100%3/3100%19/19
build.ts +
+
100%34/34100%4/4100%1/1100%33/33
buildCols.ts +
+
100%33/33100%9/9100%1/1100%31/31
buildFlex.ts +
+
100%39/39100%12/12100%1/1100%36/36
buildHeight.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildMarBottom.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildMarLeft.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildMarRight.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildMarTop.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildMars.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildMaxHeight.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildMaxWidth.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildMinHeight.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildMinWidth.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildPadBottom.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildPadLeft.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildPadRight.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildPadTop.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildPads.ts +
+
100%4/4100%1/1100%1/1100%4/4
buildWidth.ts +
+
100%4/4100%1/1100%1/1100%4/4
getParameters.ts +
+
100%12/12100%2/2100%3/3100%12/12
insertRules.ts +
+
100%12/1266.66%2/3100%1/1100%12/12
reset.ts +
+
100%29/29100%8/8100%5/5100%29/29
set.ts +
+
100%26/26100%4/4100%4/4100%26/26
setAttr.ts +
+
100%16/16100%3/3100%3/3100%16/16
setFlex.ts +
+
100%19/19100%4/4100%3/3100%19/19
setHeight.ts +
+
100%4/4100%0/0100%1/1100%4/4
setMarBottom.ts +
+
100%4/4100%0/0100%1/1100%4/4
setMarLeft.ts +
+
100%4/4100%0/0100%1/1100%4/4
setMarRight.ts +
+
100%4/4100%0/0100%1/1100%4/4
setMarTop.ts +
+
100%4/4100%0/0100%1/1100%4/4
setMars.ts +
+
100%4/4100%0/0100%1/1100%4/4
setMaxHeight.ts +
+
100%4/4100%0/0100%1/1100%4/4
setMaxWidth.ts +
+
100%4/4100%0/0100%1/1100%4/4
setMinHeight.ts +
+
100%4/4100%0/0100%1/1100%4/4
setMinWidth.ts +
+
100%4/4100%0/0100%1/1100%4/4
setPadBottom.ts +
+
100%4/4100%0/0100%1/1100%4/4
setPadLeft.ts +
+
100%4/4100%0/0100%1/1100%4/4
setPadRight.ts +
+
100%4/4100%0/0100%1/1100%4/4
setPadTop.ts +
+
100%4/4100%0/0100%1/1100%4/4
setPads.ts +
+
100%4/4100%0/0100%1/1100%4/4
setWidth.ts +
+
100%4/4100%0/0100%1/1100%4/4
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/insertRules.ts.html b/coverage/lcov-report/src/methods/insertRules.ts.html new file mode 100644 index 0000000..58eda9c --- /dev/null +++ b/coverage/lcov-report/src/methods/insertRules.ts.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for src/methods/insertRules.ts + + + + + + + + + +
+
+

All files / src/methods insertRules.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 66.66% + Branches + 2/3 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +2043x +  +43x +  +43x +76x +  +76x +136x +117x +117x +117x +117x +117x +  +  +  +  +43x + 
import config, { setStyles } from '../config/main';
+import { IStyles } from '../helpers/createStyles';
+import getScopeByclassName from '../helpers/getScopeByclassName';
+ 
+const insertRules = (objStyles: IStyles) => {
+  const intConfig = config();
+ 
+  for (const className in objStyles) {
+    if (!intConfig.styles.hasOwnProperty(className)) {
+      let nodeScope = getScopeByclassName(className);
+      const valClass = objStyles[className];
+      const rules = nodeScope.method.rules;
+      nodeScope.method.insertRule(valClass, rules ? rules.length : 0);
+      setStyles(className, valClass) // saving in styles vault
+    }
+  }
+};
+ 
+export default insertRules;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/reset.ts.html b/coverage/lcov-report/src/methods/reset.ts.html new file mode 100644 index 0000000..92f88df --- /dev/null +++ b/coverage/lcov-report/src/methods/reset.ts.html @@ -0,0 +1,229 @@ + + + + + + Code coverage report for src/methods/reset.ts + + + + + + + + + +
+
+

All files / src/methods reset.ts

+
+ +
+ 100% + Statements + 29/29 +
+ + +
+ 100% + Branches + 8/8 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 29/29 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +493x +3x +3x +  +3x +3x +3x +3x +3x +  +  +  +13x +1x +1x +  +12x +12x +12x +  +12x +2x +2x +  +10x +  +10x +9x +  +  +1x +1x +  +  +3x +2x +2x +2x +  +  +1x +1x +  +  +  +  +  +3x + 
import { processors } from "../config/processors";
+import addClasses from "../utils/addClasses";
+import removeAttr from "../utils/removeAttr";
+ 
+const reset = (Node: HTMLElement | Element ): Promise<void> => {
+  return new Promise(resolve => {
+    const layouterClasses = Object.keys(processors);
+    const restClass: string[] = [];
+    Node.className
+      .split(' ')
+      .filter( name => {
+        // the name of a class with minus of 4 letters dont follow the syntax of a class name created by the system, so is a normal class name
+        if (name.length < 4) {
+          restClass.push(name);
+          return false;
+        }
+        const nPrex = name.length >= 5 ? 5 : 4;
+        let prex = name.substring(0, nPrex);
+        let lineIndex = prex.split('').indexOf('-');
+        // if the class name haven't a line can't be a class name created by the system
+        if (lineIndex === -1) {
+          restClass.push(name);
+          return false;
+        }
+        prex = prex.substring(0, lineIndex);
+        // if the extraction of the prefix of the class name follow the name of a directive is a class name created by the system
+        if (layouterClasses.includes(prex)) {
+          return true;
+        } else {
+          // if dont, so is a coincidence, but is not a valid class name created by the system
+          restClass.push(name);
+          return false;
+        }
+      });
+    if (restClass.length) {
+      const classesName = restClass.join(' ');
+      addClasses(Node, classesName, true).then(() => {
+        resolve();
+      })
+    } else {
+      removeAttr(Node, 'class').then(() => {
+        resolve();
+      })
+    }
+  })
+};
+ 
+export default reset;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/set.ts.html b/coverage/lcov-report/src/methods/set.ts.html new file mode 100644 index 0000000..849c8e7 --- /dev/null +++ b/coverage/lcov-report/src/methods/set.ts.html @@ -0,0 +1,229 @@ + + + + + + Code coverage report for src/methods/set.ts + + + + + + + + + +
+
+

All files / src/methods set.ts

+
+ +
+ 100% + Statements + 26/26 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 26/26 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +494x +  +4x +4x +4x +4x +  +  +4x +  +  +  +15x +15x +15x +15x +1x +1x +1x +  +  +14x +14x +29x +  +  +  +14x +14x +1x +1x +  +  +  +13x +13x +28x +  +  +  +  +13x +13x +  +  +  +  +4x + 
import addClasses from '../utils/addClasses';
+import { IStyles } from '../helpers/createStyles';
+import regError from '../helpers/regError';
+import build, { IBuildResult } from './build';
+import getParameters from './getParameters';
+import removeAttr from '../utils/removeAttr';
+import { TDirectiveName } from '../config/processors';
+ 
+const set = (
+  Node: HTMLElement | Element,
+  parameters?: Partial<Record<TDirectiveName, string>>
+): Promise<void> => {
+  return new Promise((resolve, reject) => {
+    const params = parameters || getParameters(Node);
+    const arrParams = Object.keys(params);
+    if (!arrParams.length) {
+      const err = regError('Parameter Missing', "don't exists any parameter to process", Node);
+      reject(err);
+      return;
+    }
+ 
+    const toBuild: Partial<Record<TDirectiveName, string>> = {};
+    for (let prop in params) {
+      toBuild[prop as TDirectiveName] = params[prop as TDirectiveName];
+    }
+ 
+    // creating classes names and inserting that classes to the core
+    const classesObj = build(toBuild as Record<TDirectiveName, string>, true);
+    if (classesObj instanceof Error) {
+      reject(classesObj);
+      return;
+    }
+ 
+    // adding classes
+    const classes = classesObj as Partial<IBuildResult>;
+    const classesNames = Object.keys(classes)
+      .map((name: string) => Object.keys(classes[name] as IStyles))
+      .flat()
+      .join(' ');
+ 
+    // removing unnecessary props
+    removeAttr(Node, arrParams)
+      .then(() => addClasses(Node, classesNames))
+      .then(resolve);
+  });
+};
+ 
+export default set;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setAttr.ts.html b/coverage/lcov-report/src/methods/setAttr.ts.html new file mode 100644 index 0000000..1376e94 --- /dev/null +++ b/coverage/lcov-report/src/methods/setAttr.ts.html @@ -0,0 +1,190 @@ + + + + + + Code coverage report for src/methods/setAttr.ts + + + + + + + + + +
+
+

All files / src/methods setAttr.ts

+
+ +
+ 100% + Statements + 16/16 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 16/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +3619x +19x +19x +19x +  +  +19x +  +  +  +  +37x +37x +37x +1x +  +  +  +  +1x +1x +  +  +  +36x +36x +  +  +36x +36x +  +  +  +  +19x + 
import addClasses from '../utils/addClasses';
+import buildAttr from '../helpers/buildAttr';
+import regError from '../helpers/regError';
+import removeAttr from '../utils/removeAttr';
+import { TDirectiveName } from '../config/processors';
+ 
+const setAttr = (
+  Node: HTMLElement | Element,
+  directive: TDirectiveName,
+  values?: string
+): Promise<void> => {
+  return new Promise((resolve, reject) => {
+    let directiveValues = values || Node.getAttribute(directive);
+    if (!directiveValues) {
+      const err = regError(
+        'Empty',
+        'The value of the directive "' + directive + '" is empty',
+        Node
+      );
+      reject(err);
+      return;
+    }
+ 
+    // Creating, inserting, and adding classNames of rules in Node.
+    const objStyles = buildAttr(directiveValues, directive, true);
+    const classesToAdd = Object.keys(objStyles).join(' ');
+ 
+    // removing prop of Node and adding the corresponding classes
+    removeAttr(Node, directive)
+      .then(() => addClasses(Node, classesToAdd))
+      .then(resolve);
+  });
+};
+ 
+export default setAttr;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setFlex.ts.html b/coverage/lcov-report/src/methods/setFlex.ts.html new file mode 100644 index 0000000..f45ef64 --- /dev/null +++ b/coverage/lcov-report/src/methods/setFlex.ts.html @@ -0,0 +1,199 @@ + + + + + + Code coverage report for src/methods/setFlex.ts + + + + + + + + + +
+
+

All files / src/methods setFlex.ts

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 19/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +394x +4x +4x +4x +  +4x +  +  +  +11x +11x +11x +1x +  +  +  +  +1x +1x +  +  +  +10x +10x +1x +1x +  +  +9x +  +  +9x +9x +  +  +  +  +4x + 
import addClasses from '../utils/addClasses';
+import regError from '../helpers/regError';
+import buildFlex from './buildFlex';
+import removeAttr from '../utils/removeAttr';
+ 
+const setFlex = (
+  Node: HTMLElement | Element,
+  flexValues?: string
+): Promise<void | Error> => {
+  return new Promise((resolve, reject) => {
+    let values = flexValues || Node.getAttribute('flex');
+    if (!values) {
+      const err = regError(
+        'Empty',
+        'The value of the directive "flex" is empty',
+        Node
+      );
+      reject(err);
+      return;
+    }
+ 
+    // Creating, inserting, and adding classNames of rules in Node.
+    const objStyles = buildFlex(values, true);
+    if (objStyles instanceof Error) {
+      reject(objStyles);
+      return;
+    }
+ 
+    const classesToAdd = Object.keys(objStyles).join(' ');
+ 
+    // removing prop of Node and adding the corresponding classes
+    removeAttr(Node, 'flex')
+      .then(() => addClasses(Node, classesToAdd))
+      .then(resolve);
+  });
+};
+ 
+export default setFlex;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setHeight.ts.html b/coverage/lcov-report/src/methods/setHeight.ts.html new file mode 100644 index 0000000..5b19435 --- /dev/null +++ b/coverage/lcov-report/src/methods/setHeight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setHeight.ts + + + + + + + + + +
+
+

All files / src/methods setHeight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +3x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setHeight = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'hgt', values);
+};
+ 
+export default setHeight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setMarBottom.ts.html b/coverage/lcov-report/src/methods/setMarBottom.ts.html new file mode 100644 index 0000000..d8d2af4 --- /dev/null +++ b/coverage/lcov-report/src/methods/setMarBottom.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setMarBottom.ts + + + + + + + + + +
+
+

All files / src/methods setMarBottom.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setMarBottom = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'marb', values);
+};
+ 
+export default setMarBottom;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setMarLeft.ts.html b/coverage/lcov-report/src/methods/setMarLeft.ts.html new file mode 100644 index 0000000..6fa94f1 --- /dev/null +++ b/coverage/lcov-report/src/methods/setMarLeft.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setMarLeft.ts + + + + + + + + + +
+
+

All files / src/methods setMarLeft.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setMarLeft = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'marl', values);
+};
+ 
+export default setMarLeft;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setMarRight.ts.html b/coverage/lcov-report/src/methods/setMarRight.ts.html new file mode 100644 index 0000000..8b54dc8 --- /dev/null +++ b/coverage/lcov-report/src/methods/setMarRight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setMarRight.ts + + + + + + + + + +
+
+

All files / src/methods setMarRight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +3x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setMarRight = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'marr', values);
+};
+ 
+export default setMarRight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setMarTop.ts.html b/coverage/lcov-report/src/methods/setMarTop.ts.html new file mode 100644 index 0000000..43616a4 --- /dev/null +++ b/coverage/lcov-report/src/methods/setMarTop.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setMarTop.ts + + + + + + + + + +
+
+

All files / src/methods setMarTop.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +114x +  +4x +  +  +  +5x +  +  +4x + 
import setAttr from './setAttr';
+ 
+const setMarTop = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'mart', values);
+};
+ 
+export default setMarTop;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setMars.ts.html b/coverage/lcov-report/src/methods/setMars.ts.html new file mode 100644 index 0000000..457f3a9 --- /dev/null +++ b/coverage/lcov-report/src/methods/setMars.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setMars.ts + + + + + + + + + +
+
+

All files / src/methods setMars.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setMars = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'mar', values);
+};
+ 
+export default setMars;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setMaxHeight.ts.html b/coverage/lcov-report/src/methods/setMaxHeight.ts.html new file mode 100644 index 0000000..9f2a8ad --- /dev/null +++ b/coverage/lcov-report/src/methods/setMaxHeight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setMaxHeight.ts + + + + + + + + + +
+
+

All files / src/methods setMaxHeight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setMaxHeight = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'mxh', values);
+};
+ 
+export default setMaxHeight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setMaxWidth.ts.html b/coverage/lcov-report/src/methods/setMaxWidth.ts.html new file mode 100644 index 0000000..2a0d6e4 --- /dev/null +++ b/coverage/lcov-report/src/methods/setMaxWidth.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setMaxWidth.ts + + + + + + + + + +
+
+

All files / src/methods setMaxWidth.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setMaxWidth = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'mxw', values);
+};
+ 
+export default setMaxWidth;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setMinHeight.ts.html b/coverage/lcov-report/src/methods/setMinHeight.ts.html new file mode 100644 index 0000000..80cccaf --- /dev/null +++ b/coverage/lcov-report/src/methods/setMinHeight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setMinHeight.ts + + + + + + + + + +
+
+

All files / src/methods setMinHeight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setMinHeight = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'mih', values);
+};
+ 
+export default setMinHeight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setMinWidth.ts.html b/coverage/lcov-report/src/methods/setMinWidth.ts.html new file mode 100644 index 0000000..f219af6 --- /dev/null +++ b/coverage/lcov-report/src/methods/setMinWidth.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setMinWidth.ts + + + + + + + + + +
+
+

All files / src/methods setMinWidth.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setMinWidth = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'miw', values);
+};
+ 
+export default setMinWidth;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setPadBottom.ts.html b/coverage/lcov-report/src/methods/setPadBottom.ts.html new file mode 100644 index 0000000..2381488 --- /dev/null +++ b/coverage/lcov-report/src/methods/setPadBottom.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setPadBottom.ts + + + + + + + + + +
+
+

All files / src/methods setPadBottom.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setPadBottom = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'padb', values);
+};
+ 
+export default setPadBottom;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setPadLeft.ts.html b/coverage/lcov-report/src/methods/setPadLeft.ts.html new file mode 100644 index 0000000..a12a074 --- /dev/null +++ b/coverage/lcov-report/src/methods/setPadLeft.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setPadLeft.ts + + + + + + + + + +
+
+

All files / src/methods setPadLeft.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setPadLeft = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'padl', values);
+};
+ 
+export default setPadLeft;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setPadRight.ts.html b/coverage/lcov-report/src/methods/setPadRight.ts.html new file mode 100644 index 0000000..732f7fb --- /dev/null +++ b/coverage/lcov-report/src/methods/setPadRight.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setPadRight.ts + + + + + + + + + +
+
+

All files / src/methods setPadRight.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setPadRight = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'padr', values);
+};
+ 
+export default setPadRight;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setPadTop.ts.html b/coverage/lcov-report/src/methods/setPadTop.ts.html new file mode 100644 index 0000000..1f94acb --- /dev/null +++ b/coverage/lcov-report/src/methods/setPadTop.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setPadTop.ts + + + + + + + + + +
+
+

All files / src/methods setPadTop.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setPadTop = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'padt', values);
+};
+ 
+export default setPadTop;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setPads.ts.html b/coverage/lcov-report/src/methods/setPads.ts.html new file mode 100644 index 0000000..702007f --- /dev/null +++ b/coverage/lcov-report/src/methods/setPads.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setPads.ts + + + + + + + + + +
+
+

All files / src/methods setPads.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setPads = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'pad', values);
+};
+ 
+export default setPads;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/methods/setWidth.ts.html b/coverage/lcov-report/src/methods/setWidth.ts.html new file mode 100644 index 0000000..a38cb10 --- /dev/null +++ b/coverage/lcov-report/src/methods/setWidth.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/methods/setWidth.ts + + + + + + + + + +
+
+

All files / src/methods setWidth.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +113x +  +3x +  +  +  +2x +  +  +3x + 
import setAttr from './setAttr';
+ 
+const setWidth = (
+  Node: HTMLElement | Element,
+  values?: string
+): Promise<void> => {
+  return setAttr(Node, 'wdh', values);
+};
+ 
+export default setWidth;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/utils/addClasses.ts.html b/coverage/lcov-report/src/utils/addClasses.ts.html new file mode 100644 index 0000000..6a1e654 --- /dev/null +++ b/coverage/lcov-report/src/utils/addClasses.ts.html @@ -0,0 +1,226 @@ + + + + + + Code coverage report for src/utils/addClasses.ts + + + + + + + + + +
+
+

All files / src/utils addClasses.ts

+
+ +
+ 100% + Statements + 24/24 +
+ + +
+ 100% + Branches + 7/7 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 24/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +4824x +  +  +  +  +63x +63x +63x +63x +61x +136x +  +61x +8x +8x +  +  +  +55x +55x +55x +55x +132x +  +55x +55x +55x +  +  +55x +  +  +  +  +  +  +  +55x +2x +  +53x +53x +  +  +  +  +24x + 
const addClasses = (
+  Node: HTMLElement | Element,
+  classesNames: string,
+  overwrite?: boolean
+): Promise<void> => {
+  return new Promise(resolve => {
+    const names = classesNames.split(' ');
+    let classesToAdd: string[] = names;
+    if ( !overwrite ) {
+      classesToAdd = names.filter(
+        name => !Node.classList.contains(name)
+      );
+      if (!classesToAdd.length) {
+        resolve();
+        return;
+      }
+    }
+ 
+    const obsNode = new MutationObserver(mutations => {
+      const target = mutations[0].target;
+      const currentClasses = (target as Element).className.split(' ');
+      const containsAll = names.every(element =>
+        currentClasses.includes(element)
+      );
+      if (containsAll) {
+        obsNode.disconnect();
+        resolve();
+      }
+    });
+    obsNode.observe(Node, {
+      childList: false,
+      subtree: false,
+      attributes: true,
+      attributeFilter: ['class'],
+      characterData: false,
+    });
+ 
+    if ( overwrite ) {
+      Node.className = classesNames;
+    } else {
+      const space = Node.hasAttribute('class') ? ' ' : '';
+      Node.className += space + classesToAdd.join(' ');
+    }
+  });
+};
+ 
+export default addClasses;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/utils/index.html b/coverage/lcov-report/src/utils/index.html new file mode 100644 index 0000000..afc29f4 --- /dev/null +++ b/coverage/lcov-report/src/utils/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/utils + + + + + + + + + +
+
+

All files src/utils

+
+ +
+ 100% + Statements + 48/48 +
+ + +
+ 100% + Branches + 10/10 +
+ + +
+ 100% + Functions + 14/14 +
+ + +
+ 100% + Lines + 44/44 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
addClasses.ts +
+
100%24/24100%7/7100%5/5100%24/24
removeAttr.ts +
+
100%24/24100%3/3100%9/9100%20/20
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/src/utils/removeAttr.ts.html b/coverage/lcov-report/src/utils/removeAttr.ts.html new file mode 100644 index 0000000..de24b0b --- /dev/null +++ b/coverage/lcov-report/src/utils/removeAttr.ts.html @@ -0,0 +1,229 @@ + + + + + + Code coverage report for src/utils/removeAttr.ts + + + + + + + + + +
+
+

All files / src/utils removeAttr.ts

+
+ +
+ 100% + Statements + 24/24 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 9/9 +
+ + +
+ 100% + Lines + 20/20 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +4924x +  +  +  +77x +77x +1x +1x +  +76x +76x +76x +  +76x +  +  +  +  +  +  +76x +  +  +  +24x +  +  +  +13x +28x +13x +  +  +  +24x +  +  +  +62x +62x +13x +  +49x +  +  +  +  +24x + 
export const removeProp = (
+  Node: HTMLElement | Element,
+  propName: string
+): Promise<void> => {
+  return new Promise(resolve => {
+    if (!Node.hasAttribute(propName)) {
+      resolve();
+      return;
+    }
+    const obsNode = new MutationObserver(() => {
+      obsNode.disconnect();
+      resolve();
+    });
+    obsNode.observe(Node, {
+      childList: false,
+      subtree: false,
+      attributes: true,
+      attributeFilter: [propName],
+      characterData: false,
+    });
+    Node.removeAttribute(propName);
+  });
+};
+ 
+export const removeProps = (
+  Node: HTMLElement | Element,
+  propNames: string[]
+): Promise<void> => {
+  return new Promise(resolve => {
+    const promises = propNames.map(name => removeProp(Node, name));
+    Promise.all(promises).then(() => resolve());
+  });
+};
+ 
+const removeAttr = (
+  Node: HTMLElement | Element,
+  propNames: string | string[]
+): Promise<void> => {
+  return new Promise(resolve => {
+    if (Array.isArray(propNames)) {
+      removeProps(Node, propNames).then(resolve);
+    } else {
+      removeProp(Node, propNames).then(resolve);
+    }
+  });
+};
+ 
+export default removeAttr;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 0000000..b8f3d96 --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,1682 @@ +TN: +SF:src\main.ts +FN:214,(anonymous_1) +FN:264,(anonymous_2) +FNF:2 +FNH:2 +FNDA:2,(anonymous_1) +FNDA:2,(anonymous_2) +DA:1,2 +DA:2,2 +DA:4,2 +DA:5,2 +DA:6,2 +DA:7,2 +DA:8,2 +DA:9,2 +DA:10,2 +DA:11,2 +DA:12,2 +DA:13,2 +DA:14,2 +DA:15,2 +DA:16,2 +DA:17,2 +DA:18,2 +DA:19,2 +DA:20,2 +DA:21,2 +DA:22,2 +DA:24,2 +DA:25,2 +DA:26,2 +DA:27,2 +DA:28,2 +DA:29,2 +DA:30,2 +DA:31,2 +DA:32,2 +DA:33,2 +DA:34,2 +DA:35,2 +DA:36,2 +DA:37,2 +DA:38,2 +DA:39,2 +DA:40,2 +DA:41,2 +DA:42,2 +DA:44,2 +DA:45,2 +DA:49,2 +DA:50,2 +DA:214,2 +DA:215,2 +DA:217,2 +DA:264,2 +DA:265,2 +DA:266,2 +DA:269,2 +DA:272,2 +DA:273,0 +DA:276,2 +LF:54 +LH:53 +BRDA:214,0,0,2 +BRDA:265,1,0,1 +BRDA:272,2,0,0 +BRDA:272,3,0,2 +BRDA:272,3,1,2 +BRF:5 +BRH:4 +end_of_record +TN: +SF:src\config\flex.ts +FNF:0 +FNH:0 +DA:1,44 +DA:29,44 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\config\main.ts +FN:69,(anonymous_1) +FN:84,(anonymous_2) +FN:109,(anonymous_3) +FN:113,(anonymous_4) +FN:117,(anonymous_5) +FNF:5 +FNH:5 +FNDA:49,(anonymous_1) +FNDA:48,(anonymous_2) +FNDA:117,(anonymous_3) +FNDA:575,(anonymous_4) +FNDA:1,(anonymous_5) +DA:2,47 +DA:3,47 +DA:4,47 +DA:37,47 +DA:60,47 +DA:69,47 +DA:74,49 +DA:75,49 +DA:76,49 +DA:84,47 +DA:85,48 +DA:86,2 +DA:92,46 +DA:93,46 +DA:100,48 +DA:106,48 +DA:109,47 +DA:110,117 +DA:113,47 +DA:114,575 +DA:117,47 +DA:118,1 +DA:123,1 +DA:124,1 +DA:130,1 +DA:133,47 +LF:26 +LH:26 +BRDA:84,0,0,36 +BRDA:85,1,0,2 +BRDA:85,1,1,46 +BRDA:85,2,0,48 +BRDA:85,2,1,48 +BRDA:92,3,0,46 +BRDA:113,4,0,574 +BRDA:114,5,0,1 +BRDA:114,5,1,574 +BRDA:123,6,0,1 +BRF:10 +BRH:10 +end_of_record +TN: +SF:src\config\processors.ts +FNF:0 +FNH:0 +DA:9,45 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\helpers\breakpointsNums.ts +FN:19,(anonymous_0) +FN:27,(anonymous_1) +FN:33,(anonymous_2) +FN:36,(anonymous_3) +FN:40,(anonymous_4) +FNF:5 +FNH:5 +FNDA:101,(anonymous_0) +FNDA:241,(anonymous_1) +FNDA:194,(anonymous_2) +FNDA:241,(anonymous_3) +FNDA:237,(anonymous_4) +DA:19,49 +DA:23,101 +DA:25,101 +DA:26,51 +DA:28,241 +DA:34,194 +DA:37,241 +DA:40,50 +DA:41,237 +DA:45,101 +DA:48,49 +LF:11 +LH:11 +BRDA:25,0,0,51 +BRDA:25,0,1,50 +BRDA:34,1,0,189 +BRDA:34,1,1,5 +BRDA:34,2,0,5 +BRDA:34,2,1,0 +BRDA:37,3,0,51 +BRDA:37,3,1,190 +BRF:8 +BRH:7 +end_of_record +TN: +SF:src\helpers\breakpointsOrdered.ts +FN:4,(anonymous_0) +FN:6,(anonymous_1) +FNF:2 +FNH:2 +FNDA:50,(anonymous_0) +FNDA:237,(anonymous_1) +DA:4,48 +DA:5,50 +DA:6,237 +DA:7,50 +DA:10,48 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\helpers\buildAttr.ts +FN:6,(anonymous_1) +FN:13,(anonymous_2) +FN:20,(anonymous_3) +FNF:3 +FNH:3 +FNDA:135,(anonymous_1) +FNDA:252,(anonymous_2) +FNDA:298,(anonymous_3) +DA:2,39 +DA:3,39 +DA:4,39 +DA:6,39 +DA:11,135 +DA:13,135 +DA:14,252 +DA:15,252 +DA:18,252 +DA:20,298 +DA:22,252 +DA:23,252 +DA:30,135 +DA:37,39 +LF:14 +LH:14 +BRDA:9,0,0,1 +BRDA:22,1,0,52 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src\helpers\buildCss.ts +FN:21,(anonymous_1) +FNF:1 +FNH:1 +FNDA:165,(anonymous_1) +DA:2,43 +DA:3,43 +DA:4,43 +DA:21,43 +DA:23,165 +DA:26,165 +DA:27,76 +DA:31,165 +DA:34,43 +LF:9 +LH:9 +BRDA:26,0,0,76 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\helpers\calPercentage.ts +FN:1,(anonymous_0) +FNF:1 +FNH:1 +FNDA:48,(anonymous_0) +DA:1,42 +DA:2,48 +DA:3,48 +DA:4,48 +DA:5,48 +DA:8,42 +LF:6 +LH:6 +BRDA:4,0,0,32 +BRDA:4,0,1,16 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src\helpers\createScopeStyles.ts +FN:20,(anonymous_0) +FN:56,(anonymous_1) +FNF:2 +FNH:2 +FNDA:245,(anonymous_0) +FNDA:1,(anonymous_1) +DA:20,48 +DA:26,245 +DA:27,245 +DA:28,237 +DA:29,237 +DA:30,237 +DA:31,237 +DA:33,4 +DA:34,4 +DA:36,3 +DA:39,3 +DA:41,230 +DA:42,230 +DA:44,237 +DA:48,245 +DA:49,236 +DA:54,9 +DA:57,1 +DA:66,245 +DA:69,48 +LF:20 +LH:20 +BRDA:27,0,0,237 +BRDA:31,1,0,4 +BRDA:31,1,1,3 +BRDA:31,1,2,230 +BRDA:36,2,0,2 +BRDA:36,2,1,1 +BRDA:48,3,0,236 +BRDA:48,3,1,9 +BRF:8 +BRH:8 +end_of_record +TN: +SF:src\helpers\createStyles.ts +FN:11,(anonymous_1) +FN:18,(anonymous_2) +FN:42,(anonymous_3) +FNF:3 +FNH:3 +FNDA:166,(anonymous_1) +FNDA:303,(anonymous_2) +FNDA:96,(anonymous_3) +DA:1,44 +DA:2,44 +DA:3,44 +DA:5,44 +DA:11,44 +DA:12,166 +DA:13,166 +DA:14,166 +DA:15,166 +DA:16,166 +DA:18,166 +DA:20,303 +DA:23,303 +DA:24,303 +DA:25,2 +DA:28,303 +DA:29,303 +DA:33,303 +DA:34,24 +DA:35,24 +DA:40,24 +DA:42,96 +DA:43,24 +DA:45,2 +DA:46,1 +DA:49,22 +DA:52,279 +DA:55,303 +DA:56,303 +DA:57,303 +DA:59,294 +DA:60,142 +DA:62,152 +DA:63,152 +DA:66,9 +DA:67,9 +DA:68,9 +DA:69,9 +DA:70,9 +DA:73,303 +DA:74,151 +DA:76,303 +DA:78,166 +DA:81,44 +LF:44 +LH:44 +BRDA:24,0,0,2 +BRDA:28,1,0,1 +BRDA:28,1,1,302 +BRDA:33,2,0,24 +BRDA:33,2,1,279 +BRDA:35,3,0,3 +BRDA:35,3,1,21 +BRDA:43,4,0,2 +BRDA:43,4,1,22 +BRDA:45,5,0,1 +BRDA:57,6,0,294 +BRDA:57,6,1,9 +BRDA:59,7,0,142 +BRDA:59,7,1,152 +BRDA:68,8,0,4 +BRDA:73,9,0,151 +BRF:16 +BRH:16 +end_of_record +TN: +SF:src\helpers\getScopeByclassName.ts +FN:4,(anonymous_1) +FNF:1 +FNH:1 +FNDA:120,(anonymous_1) +DA:1,43 +DA:2,43 +DA:4,43 +DA:5,120 +DA:6,120 +DA:7,120 +DA:8,120 +DA:9,120 +DA:12,120 +DA:13,49 +DA:14,49 +DA:18,71 +DA:19,71 +DA:22,9 +DA:23,6 +DA:24,3 +DA:25,3 +DA:31,3 +DA:35,3 +DA:36,1 +DA:39,2 +DA:40,2 +DA:47,2 +DA:50,43 +LF:24 +LH:24 +BRDA:12,0,0,49 +BRDA:19,1,0,62 +BRDA:22,2,0,6 +BRDA:23,3,0,3 +BRDA:35,4,0,1 +BRF:5 +BRH:5 +end_of_record +TN: +SF:src\helpers\initAutoProcessor.ts +FN:4,(anonymous_0) +FN:5,(anonymous_1) +FN:7,(anonymous_2) +FN:10,(anonymous_3) +FN:14,(anonymous_4) +FNF:5 +FNH:5 +FNDA:2,(anonymous_0) +FNDA:2,(anonymous_1) +FNDA:36,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:1,(anonymous_4) +DA:2,2 +DA:4,2 +DA:5,2 +DA:6,2 +DA:7,36 +DA:8,2 +DA:9,2 +DA:10,2 +DA:11,1 +DA:13,2 +DA:14,2 +DA:15,1 +DA:17,2 +DA:21,2 +LF:14 +LH:14 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\helpers\mainObserver.ts +FN:4,(anonymous_0) +FN:6,(anonymous_1) +FN:12,(anonymous_2) +FNF:3 +FNH:3 +FNDA:2,(anonymous_0) +FNDA:12,(anonymous_1) +FNDA:3,(anonymous_2) +DA:2,2 +DA:4,2 +DA:5,2 +DA:6,2 +DA:7,12 +DA:8,21 +DA:9,4 +DA:10,1 +DA:12,3 +DA:13,3 +DA:14,3 +DA:15,3 +DA:16,2 +DA:20,17 +DA:21,17 +DA:22,17 +DA:23,17 +DA:24,17 +DA:25,7 +DA:31,2 +DA:38,2 +DA:41,2 +LF:22 +LH:22 +BRDA:8,0,0,4 +BRDA:8,0,1,17 +BRDA:9,1,0,1 +BRDA:13,2,0,3 +BRDA:15,3,0,2 +BRDA:20,4,0,17 +BRDA:22,5,0,17 +BRDA:24,6,0,7 +BRF:8 +BRH:8 +end_of_record +TN: +SF:src\helpers\nameCleaner.ts +FN:12,(anonymous_0) +FN:16,(anonymous_1) +FNF:2 +FNH:2 +FNDA:165,(anonymous_0) +FNDA:1812,(anonymous_1) +DA:3,43 +DA:12,43 +DA:13,165 +DA:14,165 +DA:15,302 +DA:16,302 +DA:17,1812 +DA:19,302 +DA:21,165 +DA:24,43 +LF:10 +LH:10 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\helpers\percentageConverter.ts +FN:1,(anonymous_0) +FNF:1 +FNH:1 +FNDA:3,(anonymous_0) +DA:1,45 +DA:2,3 +DA:5,45 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\helpers\prepareParam.ts +FN:10,(anonymous_1) +FNF:1 +FNH:1 +FNDA:322,(anonymous_1) +DA:1,43 +DA:10,43 +DA:12,322 +DA:13,322 +DA:14,322 +DA:15,322 +DA:16,156 +DA:17,156 +DA:18,156 +DA:20,166 +DA:21,166 +DA:24,322 +DA:25,57 +DA:26,57 +DA:27,57 +DA:30,322 +DA:38,43 +LF:17 +LH:17 +BRDA:15,0,0,156 +BRDA:15,0,1,166 +BRDA:24,1,0,57 +BRF:3 +BRH:3 +end_of_record +TN: +SF:src\helpers\processedNumber.ts +FN:5,(anonymous_1) +FN:16,(anonymous_2) +FNF:2 +FNH:2 +FNDA:298,(anonymous_1) +FNDA:1656,(anonymous_2) +DA:1,39 +DA:3,39 +DA:5,39 +DA:7,298 +DA:8,21 +DA:9,21 +DA:13,277 +DA:14,1 +DA:16,276 +DA:17,1656 +DA:19,276 +DA:20,8 +DA:22,268 +DA:25,298 +DA:28,39 +LF:15 +LH:15 +BRDA:7,0,0,21 +BRDA:7,0,1,277 +BRDA:13,1,0,1 +BRDA:13,1,1,276 +BRDA:19,2,0,8 +BRDA:19,2,1,268 +BRDA:22,3,0,28 +BRDA:22,3,1,240 +BRF:8 +BRH:8 +end_of_record +TN: +SF:src\helpers\regError.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:9,(anonymous_1) +DA:1,27 +DA:3,27 +DA:8,9 +DA:9,9 +DA:10,9 +DA:11,9 +DA:12,9 +DA:13,2 +DA:14,2 +DA:16,9 +DA:19,27 +LF:11 +LH:11 +BRDA:12,0,0,2 +BRDA:14,1,0,1 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src\helpers\scopesStylesBuilder.ts +FN:8,(anonymous_1) +FN:14,(anonymous_2) +FNF:2 +FNH:2 +FNDA:50,(anonymous_1) +FNDA:238,(anonymous_2) +DA:2,47 +DA:8,47 +DA:13,50 +DA:14,50 +DA:15,238 +DA:16,237 +DA:24,50 +LF:7 +LH:7 +BRDA:13,0,0,50 +BRDA:13,0,1,49 +BRDA:15,1,0,237 +BRF:3 +BRH:3 +end_of_record +TN: +SF:src\methods\SetCols.ts +FN:6,(anonymous_1) +FN:10,(anonymous_2) +FN:32,(anonymous_3) +FNF:3 +FNH:3 +FNDA:4,(anonymous_1) +FNDA:4,(anonymous_2) +FNDA:2,(anonymous_3) +DA:1,3 +DA:2,3 +DA:3,3 +DA:4,3 +DA:6,3 +DA:10,4 +DA:11,4 +DA:12,4 +DA:13,1 +DA:18,1 +DA:19,1 +DA:23,3 +DA:24,3 +DA:25,1 +DA:26,1 +DA:28,2 +DA:31,2 +DA:32,2 +DA:37,3 +LF:19 +LH:19 +BRDA:11,0,0,4 +BRDA:11,0,1,4 +BRDA:12,1,0,1 +BRDA:24,2,0,1 +BRF:4 +BRH:4 +end_of_record +TN: +SF:src\methods\build.ts +FN:47,(anonymous_1) +FNF:1 +FNH:1 +FNDA:25,(anonymous_1) +DA:1,5 +DA:2,5 +DA:3,5 +DA:4,5 +DA:5,5 +DA:6,5 +DA:7,5 +DA:8,5 +DA:9,5 +DA:10,5 +DA:11,5 +DA:12,5 +DA:13,5 +DA:14,5 +DA:15,5 +DA:16,5 +DA:17,5 +DA:18,5 +DA:19,5 +DA:22,5 +DA:47,5 +DA:51,25 +DA:52,25 +DA:53,25 +DA:54,43 +DA:55,43 +DA:59,43 +DA:60,1 +DA:61,1 +DA:63,42 +DA:66,25 +DA:67,24 +DA:70,5 +LF:33 +LH:33 +BRDA:49,0,0,11 +BRDA:59,1,0,1 +BRDA:59,1,1,42 +BRDA:66,2,0,1 +BRF:4 +BRH:4 +end_of_record +TN: +SF:src\methods\buildCols.ts +FN:9,(anonymous_1) +FNF:1 +FNH:1 +FNDA:14,(anonymous_1) +DA:1,7 +DA:2,7 +DA:3,7 +DA:5,7 +DA:6,7 +DA:9,7 +DA:15,14 +DA:16,14 +DA:20,14 +DA:22,14 +DA:24,14 +DA:25,28 +DA:26,28 +DA:27,28 +DA:28,28 +DA:29,28 +DA:31,28 +DA:32,23 +DA:33,23 +DA:35,5 +DA:36,3 +DA:37,2 +DA:41,2 +DA:43,1 +DA:46,2 +DA:50,26 +DA:51,26 +DA:53,26 +DA:59,14 +DA:62,12 +DA:69,7 +LF:31 +LH:31 +BRDA:11,0,0,5 +BRDA:31,1,0,23 +BRDA:31,1,1,5 +BRDA:35,2,0,3 +BRDA:35,2,1,2 +BRDA:36,3,0,2 +BRDA:36,3,1,1 +BRDA:51,4,0,1 +BRDA:59,5,0,2 +BRF:9 +BRH:9 +end_of_record +TN: +SF:src\methods\buildFlex.ts +FN:9,(anonymous_1) +FNF:1 +FNH:1 +FNDA:20,(anonymous_1) +DA:1,7 +DA:2,7 +DA:4,7 +DA:6,7 +DA:7,7 +DA:9,7 +DA:13,20 +DA:16,20 +DA:17,20 +DA:18,20 +DA:20,20 +DA:22,42 +DA:23,42 +DA:24,42 +DA:25,42 +DA:26,42 +DA:27,42 +DA:29,42 +DA:30,39 +DA:31,1 +DA:32,1 +DA:34,38 +DA:35,1 +DA:36,1 +DA:38,37 +DA:40,3 +DA:43,40 +DA:45,40 +DA:46,24 +DA:51,16 +DA:52,16 +DA:53,16 +DA:54,16 +DA:58,20 +DA:61,18 +DA:68,7 +LF:36 +LH:36 +BRDA:11,0,0,5 +BRDA:29,1,0,39 +BRDA:29,1,1,3 +BRDA:30,2,0,1 +BRDA:34,3,0,1 +BRDA:43,4,0,4 +BRDA:45,5,0,24 +BRDA:45,5,1,16 +BRDA:51,6,0,3 +BRDA:52,7,0,13 +BRDA:52,7,1,3 +BRDA:58,8,0,2 +BRF:12 +BRH:12 +end_of_record +TN: +SF:src\methods\buildHeight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:4,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,4 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildMarBottom.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:15,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,15 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildMarLeft.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:6,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,6 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildMarRight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:6,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,6 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildMarTop.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:8,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,8 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,5 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildMars.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:8,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,8 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,5 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildMaxHeight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:4,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,4 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildMaxWidth.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:4,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,4 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildMinHeight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:4,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,4 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildMinWidth.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:4,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,4 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildPadBottom.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:6,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,6 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildPadLeft.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:6,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,6 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildPadRight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:6,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,6 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildPadTop.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:5,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,5 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,3 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildPads.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:7,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,7 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\buildWidth.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:4,(anonymous_1) +DA:1,6 +DA:3,6 +DA:7,4 +DA:10,6 +LF:4 +LH:4 +BRDA:5,0,0,4 +BRF:1 +BRH:1 +end_of_record +TN: +SF:src\methods\getParameters.ts +FN:3,(anonymous_0) +FN:7,(anonymous_1) +FN:13,(anonymous_2) +FNF:3 +FNH:3 +FNDA:30,(anonymous_0) +FNDA:42,(anonymous_1) +FNDA:74,(anonymous_2) +DA:1,5 +DA:3,5 +DA:4,30 +DA:5,30 +DA:6,30 +DA:7,30 +DA:8,42 +DA:9,37 +DA:10,37 +DA:13,74 +DA:17,30 +DA:20,5 +LF:12 +LH:12 +BRDA:8,0,0,37 +BRDA:9,1,0,37 +BRF:2 +BRH:2 +end_of_record +TN: +SF:src\methods\insertRules.ts +FN:5,(anonymous_7) +FNF:1 +FNH:1 +FNDA:76,(anonymous_7) +DA:1,43 +DA:3,43 +DA:5,43 +DA:6,76 +DA:8,76 +DA:9,136 +DA:10,117 +DA:11,117 +DA:12,117 +DA:13,117 +DA:14,117 +DA:19,43 +LF:12 +LH:12 +BRDA:9,0,0,117 +BRDA:13,1,0,0 +BRDA:13,1,1,117 +BRF:3 +BRH:2 +end_of_record +TN: +SF:src\methods\reset.ts +FN:5,(anonymous_1) +FN:6,(anonymous_2) +FN:11,(anonymous_3) +FN:37,(anonymous_4) +FN:41,(anonymous_5) +FNF:5 +FNH:5 +FNDA:3,(anonymous_1) +FNDA:3,(anonymous_2) +FNDA:13,(anonymous_3) +FNDA:2,(anonymous_4) +FNDA:1,(anonymous_5) +DA:1,3 +DA:2,3 +DA:3,3 +DA:5,3 +DA:6,3 +DA:7,3 +DA:8,3 +DA:9,3 +DA:13,13 +DA:14,1 +DA:15,1 +DA:17,12 +DA:18,12 +DA:19,12 +DA:21,12 +DA:22,2 +DA:23,2 +DA:25,10 +DA:27,10 +DA:28,9 +DA:31,1 +DA:32,1 +DA:35,3 +DA:36,2 +DA:37,2 +DA:38,2 +DA:41,1 +DA:42,1 +DA:48,3 +LF:29 +LH:29 +BRDA:13,0,0,1 +BRDA:17,1,0,11 +BRDA:17,1,1,1 +BRDA:21,2,0,2 +BRDA:27,3,0,9 +BRDA:27,3,1,1 +BRDA:35,4,0,2 +BRDA:35,4,1,1 +BRF:8 +BRH:8 +end_of_record +TN: +SF:src\methods\set.ts +FN:9,(anonymous_1) +FN:13,(anonymous_2) +FN:37,(anonymous_3) +FN:43,(anonymous_4) +FNF:4 +FNH:4 +FNDA:15,(anonymous_1) +FNDA:15,(anonymous_2) +FNDA:28,(anonymous_3) +FNDA:13,(anonymous_4) +DA:1,4 +DA:3,4 +DA:4,4 +DA:5,4 +DA:6,4 +DA:9,4 +DA:13,15 +DA:14,15 +DA:15,15 +DA:16,15 +DA:17,1 +DA:18,1 +DA:19,1 +DA:22,14 +DA:23,14 +DA:24,29 +DA:28,14 +DA:29,14 +DA:30,1 +DA:31,1 +DA:35,13 +DA:36,13 +DA:37,28 +DA:42,13 +DA:43,13 +DA:48,4 +LF:26 +LH:26 +BRDA:14,0,0,15 +BRDA:14,0,1,6 +BRDA:16,1,0,1 +BRDA:29,2,0,1 +BRF:4 +BRH:4 +end_of_record +TN: +SF:src\methods\setAttr.ts +FN:7,(anonymous_1) +FN:12,(anonymous_2) +FN:30,(anonymous_3) +FNF:3 +FNH:3 +FNDA:37,(anonymous_1) +FNDA:37,(anonymous_2) +FNDA:36,(anonymous_3) +DA:1,19 +DA:2,19 +DA:3,19 +DA:4,19 +DA:7,19 +DA:12,37 +DA:13,37 +DA:14,37 +DA:15,1 +DA:20,1 +DA:21,1 +DA:25,36 +DA:26,36 +DA:29,36 +DA:30,36 +DA:35,19 +LF:16 +LH:16 +BRDA:13,0,0,37 +BRDA:13,0,1,37 +BRDA:14,1,0,1 +BRF:3 +BRH:3 +end_of_record +TN: +SF:src\methods\setFlex.ts +FN:6,(anonymous_1) +FN:10,(anonymous_2) +FN:33,(anonymous_3) +FNF:3 +FNH:3 +FNDA:11,(anonymous_1) +FNDA:11,(anonymous_2) +FNDA:9,(anonymous_3) +DA:1,4 +DA:2,4 +DA:3,4 +DA:4,4 +DA:6,4 +DA:10,11 +DA:11,11 +DA:12,11 +DA:13,1 +DA:18,1 +DA:19,1 +DA:23,10 +DA:24,10 +DA:25,1 +DA:26,1 +DA:29,9 +DA:32,9 +DA:33,9 +DA:38,4 +LF:19 +LH:19 +BRDA:11,0,0,11 +BRDA:11,0,1,11 +BRDA:12,1,0,1 +BRDA:24,2,0,1 +BRF:4 +BRH:4 +end_of_record +TN: +SF:src\methods\setHeight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:3,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,3 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setMarBottom.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setMarLeft.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setMarRight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:3,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,3 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setMarTop.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:5,(anonymous_1) +DA:1,4 +DA:3,4 +DA:7,5 +DA:10,4 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setMars.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setMaxHeight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setMaxWidth.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setMinHeight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setMinWidth.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setPadBottom.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setPadLeft.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setPadRight.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setPadTop.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setPads.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\methods\setWidth.ts +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:2,(anonymous_1) +DA:1,3 +DA:3,3 +DA:7,2 +DA:10,3 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\utils\addClasses.ts +FN:1,(anonymous_0) +FN:6,(anonymous_1) +FN:11,(anonymous_2) +FN:19,(anonymous_3) +FN:22,(anonymous_4) +FNF:5 +FNH:5 +FNDA:63,(anonymous_0) +FNDA:63,(anonymous_1) +FNDA:136,(anonymous_2) +FNDA:55,(anonymous_3) +FNDA:132,(anonymous_4) +DA:1,24 +DA:6,63 +DA:7,63 +DA:8,63 +DA:9,63 +DA:10,61 +DA:11,136 +DA:13,61 +DA:14,8 +DA:15,8 +DA:19,55 +DA:20,55 +DA:21,55 +DA:22,55 +DA:23,132 +DA:25,55 +DA:26,55 +DA:27,55 +DA:30,55 +DA:38,55 +DA:39,2 +DA:41,53 +DA:42,53 +DA:47,24 +LF:24 +LH:24 +BRDA:9,0,0,61 +BRDA:13,1,0,8 +BRDA:25,2,0,55 +BRDA:38,3,0,2 +BRDA:38,3,1,53 +BRDA:41,4,0,3 +BRDA:41,4,1,50 +BRF:7 +BRH:7 +end_of_record +TN: +SF:src\utils\removeAttr.ts +FN:1,(anonymous_0) +FN:5,(anonymous_1) +FN:10,(anonymous_2) +FN:25,(anonymous_3) +FN:29,(anonymous_4) +FN:30,(anonymous_5) +FN:31,(anonymous_6) +FN:35,(anonymous_7) +FN:39,(anonymous_8) +FNF:9 +FNH:9 +FNDA:77,(anonymous_0) +FNDA:77,(anonymous_1) +FNDA:76,(anonymous_2) +FNDA:13,(anonymous_3) +FNDA:13,(anonymous_4) +FNDA:28,(anonymous_5) +FNDA:13,(anonymous_6) +FNDA:62,(anonymous_7) +FNDA:62,(anonymous_8) +DA:1,24 +DA:5,77 +DA:6,77 +DA:7,1 +DA:8,1 +DA:10,76 +DA:11,76 +DA:12,76 +DA:14,76 +DA:21,76 +DA:25,24 +DA:29,13 +DA:30,28 +DA:31,13 +DA:35,24 +DA:39,62 +DA:40,62 +DA:41,13 +DA:43,49 +DA:48,24 +LF:20 +LH:20 +BRDA:6,0,0,1 +BRDA:40,1,0,13 +BRDA:40,1,1,49 +BRF:3 +BRH:3 +end_of_record diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8ea2d5d8d6a408ac76899304d3c4ad90ea0c31 GIT binary patch literal 5263 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 V-f%&Ttswva002ovPDHLkV1h`+Q5OIJ literal 0 HcmV?d00001 diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 0000000..de4aedd --- /dev/null +++ b/favicon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/header.png b/header.png new file mode 100644 index 0000000000000000000000000000000000000000..dce1e243adbb73fca33299e2e7cce45764634932 GIT binary patch literal 8695 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 O1E8v;saP!!4gY@|35Eaw literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..60cad22 --- /dev/null +++ b/index.html @@ -0,0 +1,67 @@ + + + + + + + Layouter DEMO + + + +
+ +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ + + + + + + diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..cbabb34 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,5 @@ +/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'jsdom', +}; diff --git a/layout-responsive.png b/layout-responsive.png new file mode 100644 index 0000000000000000000000000000000000000000..1f76f712b69ef7e4ae9985455eac79c18ca9d62b GIT binary patch literal 38024 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", + "files": [ + "dist", + "src" + ], + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "test": "jest", + "test:full": "jest --ci --coverage --maxWorkers=2 --silent" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/dapize/layouter.git" + }, + "keywords": [ + "layouter", + "danielpz", + "layout" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/dapize/layouter/issues" + }, + "devDependencies": { + "@testing-library/dom": "^8.14.0", + "@testing-library/jest-dom": "^5.16.4", + "@types/jest": "^28.1.3", + "jest": "^28.1.1", + "jest-environment-jsdom": "^28.1.1", + "ts-jest": "^28.0.5", + "tslib": "^2.4.0", + "typescript": "^4.5.4", + "vite": "^2.9.9" + } +} diff --git a/src/config/flex.ts b/src/config/flex.ts new file mode 100644 index 0000000..dec1bf4 --- /dev/null +++ b/src/config/flex.ts @@ -0,0 +1,29 @@ +export const flexProsAndVals = { + jc: 'justify-content', + ai: 'align-items', + ce: 'center', + fs: 'flex-start', + fe: 'flex-end', + sb: 'space-between', + sa: 'space-around', + fw: 'flex-wrap', + nw: 'nowrap', + w: 'wrap', + wr: 'wrap-reverse', + fd: 'flex-direction', + r: 'row', + rr: 'row-reverse', + co: 'column', + cor: 'column-reverse', + fg: 'flex-grow', + fh: 'flex-shrink', + as: 'align-self', + or: 'order', + au: 'auto', + st: 'stretch', + bl: 'baseline', + in: 'initial', + ih: 'inherit', +}; + +export const flexAttrsSelf = ['fg', 'fh', 'or']; diff --git a/src/config/main.ts b/src/config/main.ts new file mode 100644 index 0000000..d13287c --- /dev/null +++ b/src/config/main.ts @@ -0,0 +1,133 @@ +import { ILayouter } from './../main'; +import breakpointsNums, { IBreakpoints } from '../helpers/breakpointsNums'; +import { IScopes, scopesStylesBuilder } from '../helpers/scopesStylesBuilder'; +import breakpointsOrdered from '../helpers/breakpointsOrdered'; + +export interface ICols { + [colAlias: string]: number; +} + +export interface IConfigUser { + prefix: string; + breakpoints: IBreakpoints; + bridge: boolean; + debug?: boolean; + ready?: (instance: ILayouter) => void; +} + +interface IConfigNums { + scope: IScopes; + cols: ICols; + sizes: ICols; + breakpoints: IBreakpoints; +} + +export interface IConfig extends Omit, IConfigNums { + styles: { + [className: string]: string; + }; +} + +declare global { + interface Window { + layouterConfig: Partial; + } +} + +const breakpointsInit: IBreakpoints = { + xs: { + width: 360, + cols: 15, + }, + sm: { + width: 600, + cols: 25 + }, + md: { + width: 900, + cols: 31 + }, + lg: { + width: 1200, + cols: 41 + }, + xlg: { + width: 1536, + cols: 51 + } +}; + +export let baseConfig: IConfigUser = { + prefix: '', + breakpoints: breakpointsInit, + bridge: true, + debug: true, +}; + +let config: IConfig; + +const configNums = ( + bps: IBreakpoints, + bridge: boolean, + scope?: IScopes +): IConfigNums => { + const sizes = breakpointsNums(bps, 'width'); + const finalBps = breakpointsOrdered(bps, sizes); + return { + sizes, + cols: breakpointsNums(bps, 'cols'), + scope: scopesStylesBuilder(finalBps, bridge, scope), + breakpoints: finalBps, + }; +}; + +export const setConfig = (customCfg: Partial = {}): IConfig => { + if (window && window.layouterConfig) { + baseConfig = { + ...baseConfig, + ...window.layouterConfig, + ...customCfg, + }; + } else { + if (customCfg) { + baseConfig = { + ...baseConfig, + ...customCfg, + }; + } + } + + config = { + ...baseConfig, + ...configNums(baseConfig.breakpoints, baseConfig.bridge), + styles: {}, + }; + + return config; +}; + +export const setStyles = ( className: string, value: string ) => { + config.styles[ className ] = value; +} + +const getConfig = (reset: boolean = false): IConfig => { + return reset ? setConfig() : config; +}; + +export const updateConfig = (userConfig: Partial): IConfig => { + config = { + ...config, + ...userConfig, + }; + + if (userConfig.breakpoints) { + config = { + ...config, + ...configNums(config.breakpoints, config.bridge, config.scope), + }; + } + + return config; +}; + +export default getConfig; diff --git a/src/config/processors.ts b/src/config/processors.ts new file mode 100644 index 0000000..fd6be2f --- /dev/null +++ b/src/config/processors.ts @@ -0,0 +1,114 @@ +export type TDirectiveName = 'cols' | 'pad' | 'padt' | 'padr' | 'padb' | 'padl' | 'mar' | 'mart' | 'marr' | 'marb' | 'marl' | 'flex' | 'mxw' | 'mxh' | 'miw' | 'mih' | 'wdh' | 'hgt'; + +export interface IProcessor { + set: string; + build: string; + ruleCss: string; +} + +export const processors: Record = { + cols: { + set: 'setCols', + build: 'buildCols', + ruleCss: 'width', + }, + + // Paddings + pad: { + set: 'setPads', + build: 'buildPads', + ruleCss: 'padding', + }, + padt: { + set: 'setPadTop', + build: 'buildPadTop', + ruleCss: 'padding-top', + }, + padr: { + set: 'setPadRight', + build: 'buildPadRight', + ruleCss: 'padding-right', + }, + padb: { + set: 'setPadBottom', + build: 'buildPadBottom', + ruleCss: 'padding-bottom', + }, + padl: { + set: 'setPadLeft', + build: 'buildPadLeft', + ruleCss: 'padding-left', + }, + + // Margin + mar: { + set: 'setMars', + build: 'buildMars', + ruleCss: 'margin', + }, + mart: { + set: 'setMarTop', + build: 'buildMarTop', + ruleCss: 'margin-top', + }, + marr: { + set: 'setMarRight', + build: 'buildMarRight', + ruleCss: 'margin-right', + }, + marb: { + set: 'setMarBottom', + build: 'buildMarBottom', + ruleCss: 'margin-bottom', + }, + marl: { + set: 'setMarLeft', + build: 'buildMarLeft', + ruleCss: 'margin-left', + }, + + // Flex Box + flex: { + set: 'setFlex', + build: 'buildFlex', + ruleCss: 'display: flex', + }, + + // Max & Min Width & Height + mxw: { + set: 'setMaxWidth', + build: 'buildMaxWidth', + ruleCss: 'max-width', + }, + + mxh: { + set: 'setMaxHeight', + build: 'buildMaxHeight', + ruleCss: 'max-height', + }, + + miw: { + set: 'setMinWidth', + build: 'buildMinWidth', + ruleCss: 'min-width', + }, + + mih: { + set: 'setMinHeight', + build: 'buildMinHeight', + ruleCss: 'min-height', + }, + + // Width & Height + wdh: { + set: 'setWidth', + build: 'buildWidth', + ruleCss: 'width', + }, + + hgt: { + set: 'setHeight', + build: 'buildHeight', + ruleCss: 'height', + }, +}; diff --git a/src/helpers/breakpointsNums.ts b/src/helpers/breakpointsNums.ts new file mode 100644 index 0000000..27d2a42 --- /dev/null +++ b/src/helpers/breakpointsNums.ts @@ -0,0 +1,48 @@ +export type TNumProp = 'width' | 'cols'; + +export interface IBreakpoint { + alias: string; + width: number; +} + +export interface IBreakpoints { + [alias: string]: { + width: number; + cols: number; + }; +} + +export interface IBreakpointObj { + [alias: string]: number; +} + +const breakpointsNums = ( + objBps: IBreakpoints, + propName: TNumProp +): IBreakpointObj => { + const sizes: IBreakpointObj = {}; + + if (propName === 'width') { + Object.keys(objBps) + .map((bp: string) => { + return { + alias: bp, + width: objBps[bp].width, + }; + }) + .sort((a: IBreakpoint, b: IBreakpoint) => + a.width > b.width ? 1 : b.width > a.width ? -1 : 0 + ) + .forEach((bp: IBreakpoint, index: number) => { + sizes[bp.alias] = !index ? 0 : objBps[bp.alias][propName]; + }); + } else { + Object.keys(objBps).forEach(bp => { + sizes[bp] = objBps[bp][propName]; + }); + } + + return sizes; +}; + +export default breakpointsNums; diff --git a/src/helpers/breakpointsOrdered.ts b/src/helpers/breakpointsOrdered.ts new file mode 100644 index 0000000..95ba75f --- /dev/null +++ b/src/helpers/breakpointsOrdered.ts @@ -0,0 +1,11 @@ +import { ICols } from '../config/main'; +import { IBreakpoints } from './breakpointsNums'; + +const breakpointsOrdered = ( bps: IBreakpoints, sizes: ICols ) => { + const bpsOrdered: IBreakpoints = {}; + Object.keys(sizes).forEach( bpName => bpsOrdered[bpName] = bps[bpName]); + return bpsOrdered; +} + +export default breakpointsOrdered; + diff --git a/src/helpers/buildAttr.ts b/src/helpers/buildAttr.ts new file mode 100644 index 0000000..8393201 --- /dev/null +++ b/src/helpers/buildAttr.ts @@ -0,0 +1,37 @@ +import { TDirectiveName } from '../config/processors'; +import buildCss, { IBpCals } from './buildCss'; +import prepareParam from './prepareParam'; +import processedNumber from './processedNumber'; + +const buildAttr = ( + values: string, + prop: TDirectiveName, + insertStyles: boolean = false +) => { + let bpCals: IBpCals = {}; + + values.split(' ').forEach(param => { + const paramProcessed = prepareParam(param); + const bpNames = paramProcessed.breakPoints; + + // processing number values + let propValue = paramProcessed.numbers + .split('-') + .map(n => processedNumber(n)) + .join(' '); + if (paramProcessed.important) propValue += ' !important'; + bpCals[bpNames] = { + name: param, + value: propValue, + }; + }); + + // Building the classNames and the styles to use. + return buildCss({ + type: prop, + bps: bpCals, + deep: insertStyles, + }); +}; + +export default buildAttr; diff --git a/src/helpers/buildCss.ts b/src/helpers/buildCss.ts new file mode 100644 index 0000000..6f001a5 --- /dev/null +++ b/src/helpers/buildCss.ts @@ -0,0 +1,34 @@ +import { TDirectiveName } from '../config/processors'; +import insertRules from '../methods/insertRules'; +import createStyles, { IStyles } from './createStyles'; +import nameCleaner from './nameCleaner'; + +export interface IRBuildStyles { + name: string; + value: string; +} + +export interface IBpCals { + [bpName: string]: IRBuildStyles; +} + +export interface IBuildCss { + type: TDirectiveName; + bps: IBpCals; + deep: boolean; +} + +const buildCss = (data: IBuildCss): IStyles => { + // creating the styles + const objStyles = createStyles(data.type, data.bps); + + // Inserting CSS rules + if (data.deep) { + insertRules(objStyles); + } + + // name classes cleaner + return nameCleaner(objStyles); +}; + +export default buildCss; diff --git a/src/helpers/calPercentage.ts b/src/helpers/calPercentage.ts new file mode 100644 index 0000000..08f8ff8 --- /dev/null +++ b/src/helpers/calPercentage.ts @@ -0,0 +1,8 @@ +const calPercentage = (n1: number, n2: number): string => { + const cal = (n1 * 100) / n2; + const haveDecimal = cal - Math.floor(cal) !== 0; + const result = haveDecimal ? cal.toFixed(3) : cal; + return result + '%'; +}; + +export default calPercentage; diff --git a/src/helpers/createScopeStyles.ts b/src/helpers/createScopeStyles.ts new file mode 100644 index 0000000..3ea8e97 --- /dev/null +++ b/src/helpers/createScopeStyles.ts @@ -0,0 +1,69 @@ +export type TInsertion = 'before' | 'after' | 'append'; + +export interface ICreateScopeStyles { + bridge?: boolean; + bp: string; + insertionType: TInsertion; + node: HTMLElement; +} + +export interface IRCreateScopeStyles { + method: + | CSSStyleSheet + | { + insertRule: (ruleCss: string) => void; + rules: string[]; + }; + node: HTMLElement; +} + +const createScopeStyles = ({ + bridge: withBridge, + bp, + insertionType, + node, +}: ICreateScopeStyles): IRCreateScopeStyles => { + let stylesScope = document.getElementById('layouter-' + bp); + if (!stylesScope) { + stylesScope = document.createElement('style'); + stylesScope.appendChild(document.createTextNode('')); // WebKit hack :( + const nodeParent = node.parentNode as HTMLDivElement; + switch (insertionType) { + case 'before': + nodeParent.insertBefore(stylesScope, node); + break; + case 'after': + node.nextSibling + ? nodeParent.insertBefore(stylesScope, node.nextSibling) + : nodeParent.appendChild(stylesScope); + break; + case 'append': + node.appendChild(stylesScope); + break; + } + stylesScope.id = 'layouter-' + bp; + } + + let bridge: IRCreateScopeStyles; + if (withBridge) { + bridge = { + method: (stylesScope as HTMLStyleElement).sheet as CSSStyleSheet, + node: stylesScope, + }; + } else { + bridge = { + method: { + insertRule: (ruleCss: string) => { + (stylesScope as HTMLDivElement).appendChild( + document.createTextNode(ruleCss) + ); + }, + rules: [], + }, + node: stylesScope, + }; + } + return bridge; +}; + +export default createScopeStyles; diff --git a/src/helpers/createStyles.ts b/src/helpers/createStyles.ts new file mode 100644 index 0000000..75021d0 --- /dev/null +++ b/src/helpers/createStyles.ts @@ -0,0 +1,81 @@ +import { flexAttrsSelf } from '../config/flex'; +import config from '../config/main'; +import { processors, TDirectiveName } from '../config/processors'; +import { IBpCals } from './buildCss'; +import percentageConverter from './percentageConverter'; + +export interface IStyles { + [name: string]: string; +} + +const createStyles = (directive: TDirectiveName, bps: IBpCals): IStyles => { + const intConfig = config(); + const sizes = intConfig.sizes; + const prefix = intConfig.prefix; + const prop = processors[directive].ruleCss; + const styles: IStyles = {}; + + Object.keys(bps).forEach(bp => { + // preparing the className + const shortNameClass = bps[bp].name; + + // just if have a percentage + let nameClass = shortNameClass; + if (shortNameClass.includes('%')) { + nameClass = shortNameClass.replace(shortNameClass, percentageConverter(shortNameClass)); + } + + const finalPrefix = prefix ? prefix + '-' : ''; + nameClass = finalPrefix + directive + '-' + nameClass.replace(/\//g, '\\/').replace(/:/g, '\\:').replace('@', '\\@').split('.').join('_'); + + // Property and value + let propAndVal; + if (directive === 'flex') { + propAndVal = bps[bp].value; + const flexImportant = shortNameClass.includes('!') + ? ';display:flex !important;' + : ';display:flex;'; + + // Searching a flex self inside. ['as' for 'align-self'] + const attrsFlexSelfs = ['as'] + .concat(flexAttrsSelf) + .filter(nameAttrFlex => shortNameClass.includes(nameAttrFlex + ':')); + if (attrsFlexSelfs.length) { + // if the items number of flex selft (+1) is diferrent so exists other flex attribute. Example: as:ce jc:ce + if ((attrsFlexSelfs.length + 1) !== shortNameClass.split(':').length) { + propAndVal += flexImportant; + } + } else { + propAndVal += flexImportant; + } + } else { + propAndVal = prop + ':' + bps[bp].value; + } + + let rule = '@media screen and '; + let direct = false; + if (!bp.includes('-')) { + // no tiene until + if (sizes[bp]) { + rule += '(min-width: ' + sizes[bp] + 'px)'; + } else { + rule = '.' + nameClass.replace(/!/g, '\\!') + '{' + propAndVal + '}'; + direct = true; + } + } else { + const bpSplited = bp.split('-'); + const bp1 = bpSplited[0]; + if (bp1) rule += '(min-width: ' + sizes[bp1] + 'px) and '; + const bp2 = bpSplited[1]; + rule += '(max-width: ' + (sizes[bp2] - 1) + 'px)'; + } + + if (!direct) { + rule += '{.' + nameClass.replace(/!/g, '\\!') + '{' + propAndVal + '}}'; + } + styles[nameClass] = rule; + }); + return styles; +}; + +export default createStyles; diff --git a/src/helpers/getScopeByclassName.ts b/src/helpers/getScopeByclassName.ts new file mode 100644 index 0000000..9db949f --- /dev/null +++ b/src/helpers/getScopeByclassName.ts @@ -0,0 +1,50 @@ +import config from '../config/main'; +import createScopeStyles, { IRCreateScopeStyles } from './createScopeStyles'; + +const getScopeByclassName = (className: string): IRCreateScopeStyles => { + const nameClass = className.replace(/!/g, ''); + const atIndex = nameClass.indexOf('@'); + const intConfig = config(); + const scope = intConfig.scope; + const bridge = intConfig.bridge; + + // Haven´t a BP designed + if (atIndex === -1) { + const firstBp = Object.keys(intConfig.breakpoints)[0]; + return scope[firstBp as string]; + } + + // Have a BP designed, a normal BP. + const bp = nameClass.substring(atIndex + 1); + if (!bp.includes('-')) return scope[bp]; // A simple BP (13/15@lg), not compound (like this: 13/15@sm-md). + + // A BP until. Example 13/15@-md + if (bp.substring(0, 1) === '-') { + if (scope.hasOwnProperty(bp)) return scope[bp]; // exists the Scope. + const bpUntil = bp.substring(1); + scope[bp] = createScopeStyles({ + bridge: bridge, + bp, + insertionType: 'before', + node: scope[bpUntil].node, + }); + return scope[bp]; // returning a new scope created + } + + // A BP from and until (a BP compound). Example: Example 13/15@sm-md + if (scope.hasOwnProperty(bp)) { + return scope[bp]; // exists the Scope. + } + + const fromBp = bp.split('-')[0]; + scope[bp] = createScopeStyles({ + bridge: bridge, + bp, + insertionType: 'after', + node: scope[fromBp].node, + }); + + return scope[bp]; // returning a new scope compounded created +}; + +export default getScopeByclassName; diff --git a/src/helpers/initAutoProcessor.ts b/src/helpers/initAutoProcessor.ts new file mode 100644 index 0000000..0725c02 --- /dev/null +++ b/src/helpers/initAutoProcessor.ts @@ -0,0 +1,21 @@ +import { ILayouter } from './../main'; +import { processors } from '../config/processors'; + +const initAutoProcessor = (layouter: ILayouter) => { + return new Promise(resolve => { + const props = Object.keys(processors); + const attrs = props.map(prop => `[${prop}]`).join(', '); + const nodes = document.querySelectorAll(attrs); + const setNodes = new Set(); + Array.prototype.forEach.call(nodes, itemNode => { + setNodes.add(itemNode); + }); + const promises: Promise[] = []; + setNodes.forEach(node => { + promises.push(layouter.set(node as Element | HTMLElement)); + }); + Promise.all(promises).then(resolve); + }); +}; + +export default initAutoProcessor; diff --git a/src/helpers/mainObserver.ts b/src/helpers/mainObserver.ts new file mode 100644 index 0000000..54496d2 --- /dev/null +++ b/src/helpers/mainObserver.ts @@ -0,0 +1,41 @@ +import { ILayouter } from './../main'; +import { processors } from '../config/processors'; + +const mainObserver = (layouter: ILayouter) => { + const props = Object.keys(processors); + const obsBody = new MutationObserver(mutations => { + for (let mutation of mutations) { + if (mutation.type === 'childList') { + if (!mutation.addedNodes.length) { + continue; + } + mutation.addedNodes.forEach(node => { + if (node instanceof HTMLElement) { + const props = layouter.getParameters(node); + if (Object.keys(props).length) { + layouter.set(node, props); + } + } + }); + } else if (mutation.type === 'attributes') { + const node = mutation.target; + if (node instanceof HTMLElement) { + const props = layouter.getParameters(node); + if (Object.keys(props).length) { + layouter.set(node, props); + } + } + } + } + }); + const observerOptions = { + childList: true, + subtree: true, + attributes: true, + attributeFilter: props, + characterData: false, + }; + obsBody.observe(document.body, observerOptions); +}; + +export default mainObserver; diff --git a/src/helpers/nameCleaner.ts b/src/helpers/nameCleaner.ts new file mode 100644 index 0000000..bf47018 --- /dev/null +++ b/src/helpers/nameCleaner.ts @@ -0,0 +1,24 @@ +import { IStyles } from './createStyles'; + +const replaceList = [ + ['\/', ''], + ['\\', '/'], + ['/:', ':'], + ['\\:', ':'], + ['\\@', '@'], + ['/@', '@'], +]; + +const nameCleaner = (objStyles: IStyles) => { + const obj: IStyles = {}; + for (const name in objStyles) { + let newName = name; + replaceList.forEach(reItem => { + newName = newName.split(reItem[0]).join(reItem[1]); + }); + obj[newName] = objStyles[name]; + } + return obj; +}; + +export default nameCleaner; diff --git a/src/helpers/percentageConverter.ts b/src/helpers/percentageConverter.ts new file mode 100644 index 0000000..63ed002 --- /dev/null +++ b/src/helpers/percentageConverter.ts @@ -0,0 +1,5 @@ +const percentageConverter = (percentage: string) => { + return '0¯' + percentage.replace('%', ''); +}; + +export default percentageConverter; diff --git a/src/helpers/prepareParam.ts b/src/helpers/prepareParam.ts new file mode 100644 index 0000000..1d30162 --- /dev/null +++ b/src/helpers/prepareParam.ts @@ -0,0 +1,38 @@ +import getConfig from '../config/main'; + +export interface IPrepareParamObj { + widthBp: boolean; + numbers: string; + breakPoints: string; + important: boolean; +} + +const prepareParam = (param: string): IPrepareParamObj => { + let bp: string; + let argParam = param; + let important = false; + const haveBp = argParam.includes('@'); + if (haveBp) { + const bpSplited = argParam.split('@'); + argParam = bpSplited[0]; + bp = bpSplited[1]; + } else { + const config = getConfig(); + bp = Object.keys(config.breakpoints)[0]; + } + + if (param.includes('!')) { + important = true; + bp = bp.replace(/!/g, ''); + argParam = argParam.replace(/!/g, ''); + } + + return { + widthBp: haveBp, + numbers: argParam, + breakPoints: bp, + important, + }; +}; + +export default prepareParam; diff --git a/src/helpers/processedNumber.ts b/src/helpers/processedNumber.ts new file mode 100644 index 0000000..d153400 --- /dev/null +++ b/src/helpers/processedNumber.ts @@ -0,0 +1,28 @@ +import calPercentage from './calPercentage'; + +const relativeMeasures = ['%', 'rem', 'em', 'ex', 'vw', 'vh']; + +const processedNumber = (n: string) => { + let nProcessed; + if (n.includes('/')) { + nProcessed = n.split('/'); + nProcessed = calPercentage( + parseFloat(nProcessed[0]), + parseFloat(nProcessed[1]) + ); + } else if (n === 'auto') { + nProcessed = 'auto'; + } else { + const relativeUnits = relativeMeasures.filter(unit => { + return n.includes(unit); + }); + if (relativeUnits.length) { + nProcessed = n; + } else { + nProcessed = n === '0' ? n : n + 'px'; + } + } + return nProcessed; +}; + +export default processedNumber; diff --git a/src/helpers/regError.ts b/src/helpers/regError.ts new file mode 100644 index 0000000..ee9016d --- /dev/null +++ b/src/helpers/regError.ts @@ -0,0 +1,19 @@ +import config from "../config/main"; + +const regError = ( + name: string, + message: string, + Node?: Element | HTMLElement +): Error => { + const err = new Error(); + err.name = name; + err.message = message; + const intConfig = config(); + if ( intConfig.debug ) { + console.error(err); + if (Node) console.log(Node); + } + return err; +}; + +export default regError; diff --git a/src/helpers/scopesStylesBuilder.ts b/src/helpers/scopesStylesBuilder.ts new file mode 100644 index 0000000..50df870 --- /dev/null +++ b/src/helpers/scopesStylesBuilder.ts @@ -0,0 +1,25 @@ +import { IBreakpoints } from './breakpointsNums'; +import createScopeStyles, { IRCreateScopeStyles } from './createScopeStyles'; + +export interface IScopes { + [name: string]: IRCreateScopeStyles; +} + +export const scopesStylesBuilder = ( + breakpoints: IBreakpoints, + bridge: boolean, + scope?: IScopes +): IScopes => { + const scopes: IScopes = scope || {}; + Object.keys(breakpoints).forEach((bp: string) => { + if (!scopes.hasOwnProperty(bp)) { + scopes[bp] = createScopeStyles({ + bridge, + bp, + insertionType: 'append', + node: document.body, + }); + } + }); + return scopes; +}; diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..59e0831 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,276 @@ +import { IConfig, IConfigUser, setConfig, updateConfig } from './config/main'; +import getParameters from './methods/getParameters'; + +import build from './methods/build'; +import buildCols from './methods/buildCols'; +import buildFlex from './methods/buildFlex'; +import buildPads from './methods/buildPads'; +import buildPadTop from './methods/buildPadTop'; +import buildPadRight from './methods/buildPadRight'; +import buildPadBottom from './methods/buildPadBottom'; +import buildPadLeft from './methods/buildPadLeft'; +import buildMars from './methods/buildMars'; +import buildMarTop from './methods/buildMarTop'; +import buildMarRight from './methods/buildMarRight'; +import buildMarBottom from './methods/buildMarBottom'; +import buildMarLeft from './methods/buildMarLeft'; +import buildMaxWidth from './methods/buildMaxWidth'; +import buildMaxHeight from './methods/buildMaxHeight'; +import buildMinWidth from './methods/buildMinWidth'; +import buildMinHeight from './methods/buildMinHeight'; +import buildHeight from './methods/buildHeight'; +import buildWidth from './methods/buildWidth'; + +import set from './methods/set'; +import setFlex from './methods/setFlex'; +import setCols from './methods/SetCols'; +import setHeight from './methods/setHeight'; +import setMarBottom from './methods/setMarBottom'; +import setMarLeft from './methods/setMarLeft'; +import setMarRight from './methods/setMarRight'; +import setMars from './methods/setMars'; +import setMarTop from './methods/setMarTop'; +import setMaxWidth from './methods/setMaxWidth'; +import setMinHeight from './methods/setMinHeight'; +import setMinWidth from './methods/setMinWidth'; +import setPadBottom from './methods/setPadBottom'; +import setPadLeft from './methods/setPadLeft'; +import setPadRight from './methods/setPadRight'; +import setPads from './methods/setPads'; +import setPadTop from './methods/setPadTop'; +import setWidth from './methods/setWidth'; +import setMaxHeight from './methods/setMaxHeight'; + +import insertRules from './methods/insertRules'; +import reset from './methods/reset'; + +import { IStyles } from './helpers/createStyles'; +import { IBuildResult } from './methods/build'; +import initAutoProcessor from './helpers/initAutoProcessor'; +import mainObserver from './helpers/mainObserver'; +import { TDirectiveName } from './config/processors'; + +export interface ILayouter extends IConfig { + getParameters: (Node: HTMLElement | Element) => Partial>; + updateConfig: (userConfig: Partial>) => IConfig; + + build: ( + obj: Partial>, + insertStyles?: boolean + ) => Partial | Error; + buildCols: ( + valCols: string, + insertStyles?: boolean + ) => IStyles | Error; + buildFlex: ( + valFlex: string, + insertStyles?: boolean + ) => IStyles | Error; + + buildPads: ( + valPads: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildPadTop: ( + valPadTop: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildPadRight: ( + valPadRight: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildPadBottom: ( + valPadBottom: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildPadLeft: ( + valPadLeft: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildMars: ( + valMars: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildMarTop: ( + valMarTop: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildMarRight: ( + valMarRight: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildMarBottom: ( + valMarBottom: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildMarLeft: ( + valMarLeft: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildMaxWidth: ( + valMaxWidth: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildMaxHeight: ( + valMaxHeight: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildMinWidth: ( + valMinWidth: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildMinHeight: ( + valMinHeight: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildHeight: ( + valHeight: string, + insertStyles?: boolean + ) => IStyles | boolean; + buildWidth: ( + valWidth: string, + insertStyles?: boolean + ) => IStyles | boolean; + + set: (Node: HTMLElement | Element, parameters?: Partial>) => Promise; + setCols: (Node: HTMLElement | Element, values?: string) => Promise; + setFlex: (Node: HTMLElement | Element, values?: string) => Promise; + + setMars: (Node: HTMLElement | Element, values?: string) => Promise; + setMarTop: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setMarRight: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setMarBottom: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setMarLeft: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + + setPads: (Node: HTMLElement | Element, values?: string) => Promise; + setPadTop: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setPadRight: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setPadBottom: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setPadLeft: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + + setWidth: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setMinWidth: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setMaxWidth: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + + setHeight: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setMinHeight: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + setMaxHeight: ( + Node: HTMLElement | Element, + values?: string + ) => Promise; + + insertRules: (objStyles: IStyles) => void; + + reset: ( + Node: HTMLElement | Element + ) => Promise; +} + +declare global { + interface Window { + layouter: ILayouter; + } +} + +const layouter = (userConfig: Partial = {}): ILayouter => { + const config = setConfig(userConfig); + + const instance = { + ...config, + getParameters, + updateConfig, + insertRules, + build, + buildCols, + buildFlex, + buildPads, + buildPadTop, + buildPadRight, + buildPadBottom, + buildPadLeft, + buildMars, + buildMarTop, + buildMarRight, + buildMarBottom, + buildMarLeft, + buildMaxWidth, + buildMaxHeight, + buildMinWidth, + buildMinHeight, + buildHeight, + buildWidth, + set, + setCols, + setFlex, + setMars, + setMarTop, + setMarRight, + setMarBottom, + setMarLeft, + setPads, + setPadTop, + setPadRight, + setPadBottom, + setPadLeft, + setWidth, + setMinWidth, + setMaxWidth, + setHeight, + setMinHeight, + setMaxHeight, + reset, + }; + + // Auto init process + initAutoProcessor(instance).then(() => { + if (instance.ready) instance.ready(instance); + mainObserver(instance); + }); + + return instance +}; + +if (window && typeof exports === 'undefined') { + window.layouter = layouter(); +} + +export default layouter; diff --git a/src/methods/SetCols.ts b/src/methods/SetCols.ts new file mode 100644 index 0000000..563fa02 --- /dev/null +++ b/src/methods/SetCols.ts @@ -0,0 +1,37 @@ +import addClasses from '../utils/addClasses'; +import regError from '../helpers/regError'; +import buildCols from './buildCols'; +import removeAttr from '../utils/removeAttr'; + +const setCols = ( + Node: HTMLElement | Element, + columns?: string +): Promise => { + return new Promise((resolve, reject) => { + let values = columns || Node.getAttribute('cols'); + if (!values) { + const err = regError( + 'Empty', + "The value of the directive 'cols' is empty", + Node + ); + reject(err); + return; + } + + // Creating, inserting, and adding classNames of rules in Node. + const objStyles = buildCols(values, true); + if (objStyles instanceof Error) { + reject(objStyles); + return; + } + const classesToAdd = Object.keys(objStyles).join(' '); + + // removing prop of Node and adding the corresponding classes + removeAttr(Node, 'cols') + .then(() => addClasses(Node, classesToAdd)) + .then(resolve); + }); +}; + +export default setCols; diff --git a/src/methods/build.ts b/src/methods/build.ts new file mode 100644 index 0000000..a46f04c --- /dev/null +++ b/src/methods/build.ts @@ -0,0 +1,70 @@ +import { processors, TDirectiveName } from '../config/processors'; +import buildCols from './buildCols'; +import buildFlex from './buildFlex'; +import buildPads from './buildPads'; +import buildPadTop from './buildPadTop'; +import buildPadRight from './buildPadRight'; +import buildPadBottom from './buildPadBottom'; +import buildPadLeft from './buildPadLeft'; +import buildMars from './buildMars'; +import buildMarTop from './buildMarTop'; +import buildMarRight from './buildMarRight'; +import buildMarBottom from './buildMarBottom'; +import buildMarLeft from './buildMarLeft'; +import buildMaxWidth from './buildMaxWidth'; +import buildMaxHeight from './buildMaxHeight'; +import buildMinWidth from './buildMinWidth'; +import buildMinHeight from './buildMinHeight'; +import buildHeight from './buildHeight'; +import buildWidth from './buildWidth'; +import { IStyles } from '../helpers/createStyles'; + +const builders = { + buildCols, + buildFlex, + buildPads, + buildPadTop, + buildPadRight, + buildPadBottom, + buildPadLeft, + buildMars, + buildMarTop, + buildMarRight, + buildMarBottom, + buildMarLeft, + buildMaxWidth, + buildMaxHeight, + buildMinWidth, + buildMinHeight, + buildHeight, + buildWidth, +}; + +export interface IBuildResult { + [prop: string]: IStyles | boolean; +} + +const build = ( + obj: Partial>, + insertStyles: boolean = false +): Partial | Error => { + const rObj: Partial = {}; + let err: Error | boolean = false; + for (const prop in obj) { + const propData = processors[prop as TDirectiveName]; + const objStyles: IStyles | Error = builders[propData.build as keyof typeof builders]( + obj[prop as TDirectiveName] as string, + insertStyles + ); + if ( objStyles instanceof Error ) { + err = objStyles; + break; + } else { + rObj[prop] = objStyles; + } + } + if ( err ) return err; + return rObj +}; + +export default build; diff --git a/src/methods/buildCols.ts b/src/methods/buildCols.ts new file mode 100644 index 0000000..9e81e8a --- /dev/null +++ b/src/methods/buildCols.ts @@ -0,0 +1,69 @@ +import prepareParam from '../helpers/prepareParam'; +import regError from '../helpers/regError'; +import calPercentage from '../helpers/calPercentage'; + +import buildCss, { IBpCals } from '../helpers/buildCss'; +import getConfig from '../config/main'; +import { IStyles } from '../helpers/createStyles'; + +const buildCols = ( + values: string, + insertStyles: boolean = false +): IStyles | Error => { + let cols: number[]; + let bp; + let bpCals: IBpCals = {}; + const config = getConfig(); + + // Getting numbers + let selectorName, propValue, paramPrepared; + const directBp = Object.keys(config.breakpoints)[0]; + + let err: boolean | Error = false; + + for (const item of values.split(' ')) { + let param = item; + selectorName = param; + paramPrepared = prepareParam(param); + bp = paramPrepared.breakPoints; + param = paramPrepared.numbers; + + if (param.includes('/')) { + const paramSplited = param.split('/'); + cols = [Number(paramSplited[0]), Number(paramSplited[1])]; + } else { + if (paramPrepared.widthBp) { + if (bp.includes('-')) { + err = regError( + 'SyntaxError', + "You can't determine a 'until breakpoint' when use the explicit columns max: " + values + ); + break; + } else { + cols = [Number(param), config.cols[bp] as number]; + } + } else { + cols = [Number(param), config.cols[directBp] as number]; + } + } + + propValue = calPercentage(cols[0], cols[1]); + if (paramPrepared.important) propValue += ' !important'; + + bpCals[bp] = { + name: selectorName, + value: propValue, + }; + } + + if (err) return err; + + // Building the classNames and the styles to use. + return buildCss({ + type: 'cols', + bps: bpCals, + deep: insertStyles, + }); +}; + +export default buildCols; diff --git a/src/methods/buildFlex.ts b/src/methods/buildFlex.ts new file mode 100644 index 0000000..56a7b11 --- /dev/null +++ b/src/methods/buildFlex.ts @@ -0,0 +1,68 @@ +import { flexAttrsSelf, flexProsAndVals } from '../config/flex'; +import getConfig from '../config/main'; + +import buildCss, { IBpCals } from '../helpers/buildCss'; +import { IStyles } from '../helpers/createStyles'; +import prepareParam from '../helpers/prepareParam'; +import regError from '../helpers/regError'; + +const buildFlex = ( + valFlex: string, + insertStyles: boolean = false +): IStyles | Error => { + let bpCals: IBpCals = {}; + + // Getting numbers + let err: boolean | Error = false; + const config = getConfig(); + const firstBp = Object.keys(config.breakpoints)[0]; + + for (const param of valFlex.split(' ')) { + let propVal; + let selectorName = param; + const paramPrepared = prepareParam(param); + const bpNames = paramPrepared.breakPoints; + const flexSplited = paramPrepared.numbers.split(':'); + const nameProp = flexSplited[0] as keyof typeof flexProsAndVals; // 'fc' o 'or' + const valProp = flexSplited[1] as keyof typeof flexProsAndVals; // 'ce' o '1' + + if (!flexAttrsSelf.includes(nameProp)) { + if (!flexProsAndVals.hasOwnProperty(nameProp)) { + err = regError('Non-existent Alias', "Don't exists the alias '" + nameProp + "' in Flex vault."); + break; + } + if (!flexProsAndVals.hasOwnProperty(valProp)) { + err = regError('Non-existent Alias', "Don't exists the alias '" + valProp + "' in Flex vault."); + break; + } + propVal = flexProsAndVals[nameProp] + ':' + flexProsAndVals[valProp]; + } else { + propVal = flexProsAndVals[nameProp] + ':' + valProp; + } + + if (paramPrepared.important) propVal += ' !important'; + + if (!bpCals.hasOwnProperty(bpNames)) { + bpCals[bpNames] = { + name: selectorName, + value: propVal, + } + } else { + if (selectorName.includes('@')) selectorName = selectorName.split('@')[0]; + let sufixBp = bpNames === firstBp ? '' : '@' + bpNames; + bpCals[bpNames].name = bpCals[bpNames].name.split('@')[0] + '-' + selectorName + sufixBp; + bpCals[bpNames].value += ';' + propVal; + } + } + + if (err) return err; + + // Building the classNames and the styles to use. + return buildCss({ + type: 'flex', + bps: bpCals, + deep: insertStyles, + }); +}; + +export default buildFlex; diff --git a/src/methods/buildHeight.ts b/src/methods/buildHeight.ts new file mode 100644 index 0000000..48f4edf --- /dev/null +++ b/src/methods/buildHeight.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildHeight = ( + valHeight: string, + insertStyles: boolean = false +) => { + return buildAttr(valHeight, 'hgt', insertStyles); +}; + +export default buildHeight; diff --git a/src/methods/buildMarBottom.ts b/src/methods/buildMarBottom.ts new file mode 100644 index 0000000..7702980 --- /dev/null +++ b/src/methods/buildMarBottom.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildMarBottom = ( + valMarBottom: string, + insertStyles: boolean = false +) => { + return buildAttr(valMarBottom, 'marb', insertStyles); +}; + +export default buildMarBottom; diff --git a/src/methods/buildMarLeft.ts b/src/methods/buildMarLeft.ts new file mode 100644 index 0000000..d8bd817 --- /dev/null +++ b/src/methods/buildMarLeft.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildMarLeft = ( + valMarLeft: string, + insertStyles: boolean = false +) => { + return buildAttr(valMarLeft, 'marl', insertStyles); +}; + +export default buildMarLeft; diff --git a/src/methods/buildMarRight.ts b/src/methods/buildMarRight.ts new file mode 100644 index 0000000..07dd074 --- /dev/null +++ b/src/methods/buildMarRight.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildMarRight = ( + valMarRight: string, + insertStyles: boolean = false +) => { + return buildAttr(valMarRight, 'marr', insertStyles); +}; + +export default buildMarRight; diff --git a/src/methods/buildMarTop.ts b/src/methods/buildMarTop.ts new file mode 100644 index 0000000..90e8fbd --- /dev/null +++ b/src/methods/buildMarTop.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildMarTop = ( + valMarTop: string, + insertStyles: boolean = false +) => { + return buildAttr(valMarTop, 'mart', insertStyles); +}; + +export default buildMarTop; diff --git a/src/methods/buildMars.ts b/src/methods/buildMars.ts new file mode 100644 index 0000000..3e694f3 --- /dev/null +++ b/src/methods/buildMars.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildMars = ( + valMars: string, + insertStyles: boolean = false +) => { + return buildAttr(valMars, 'mar', insertStyles); +}; + +export default buildMars; diff --git a/src/methods/buildMaxHeight.ts b/src/methods/buildMaxHeight.ts new file mode 100644 index 0000000..8aad9fc --- /dev/null +++ b/src/methods/buildMaxHeight.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildMaxHeight = ( + valMaxHeight: string, + insertStyles: boolean = false +) => { + return buildAttr(valMaxHeight, 'mxh', insertStyles); +}; + +export default buildMaxHeight; diff --git a/src/methods/buildMaxWidth.ts b/src/methods/buildMaxWidth.ts new file mode 100644 index 0000000..5864413 --- /dev/null +++ b/src/methods/buildMaxWidth.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildMaxWidth = ( + valMaxWidth: string, + insertStyles: boolean = false +) => { + return buildAttr(valMaxWidth, 'mxw', insertStyles); +}; + +export default buildMaxWidth; diff --git a/src/methods/buildMinHeight.ts b/src/methods/buildMinHeight.ts new file mode 100644 index 0000000..841b56a --- /dev/null +++ b/src/methods/buildMinHeight.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildMinHeight = ( + valMinHeight: string, + insertStyles: boolean = false +) => { + return buildAttr(valMinHeight, 'mih', insertStyles); +}; + +export default buildMinHeight; diff --git a/src/methods/buildMinWidth.ts b/src/methods/buildMinWidth.ts new file mode 100644 index 0000000..2af143d --- /dev/null +++ b/src/methods/buildMinWidth.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildMinWidth = ( + valMinWidth: string, + insertStyles: boolean = false +) => { + return buildAttr(valMinWidth, 'miw', insertStyles); +}; + +export default buildMinWidth; diff --git a/src/methods/buildPadBottom.ts b/src/methods/buildPadBottom.ts new file mode 100644 index 0000000..aae7390 --- /dev/null +++ b/src/methods/buildPadBottom.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildPadBottom = ( + valPadBottom: string, + insertStyles: boolean = false +) => { + return buildAttr(valPadBottom, 'padb', insertStyles); +}; + +export default buildPadBottom; diff --git a/src/methods/buildPadLeft.ts b/src/methods/buildPadLeft.ts new file mode 100644 index 0000000..8a2d44c --- /dev/null +++ b/src/methods/buildPadLeft.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildPadLeft = ( + valPadLeft: string, + insertStyles: boolean = false +) => { + return buildAttr(valPadLeft, 'padl', insertStyles); +}; + +export default buildPadLeft; diff --git a/src/methods/buildPadRight.ts b/src/methods/buildPadRight.ts new file mode 100644 index 0000000..0b43f3e --- /dev/null +++ b/src/methods/buildPadRight.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildPadRight = ( + valPadRight: string, + insertStyles: boolean = false +) => { + return buildAttr(valPadRight, 'padr', insertStyles); +}; + +export default buildPadRight; diff --git a/src/methods/buildPadTop.ts b/src/methods/buildPadTop.ts new file mode 100644 index 0000000..a4801d8 --- /dev/null +++ b/src/methods/buildPadTop.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildPadTop = ( + valPadTop: string, + insertStyles: boolean = false +) => { + return buildAttr(valPadTop, 'padt', insertStyles); +}; + +export default buildPadTop; diff --git a/src/methods/buildPads.ts b/src/methods/buildPads.ts new file mode 100644 index 0000000..cfddd21 --- /dev/null +++ b/src/methods/buildPads.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildPads = ( + valPads: string, + insertStyles: boolean = false +) => { + return buildAttr(valPads, 'pad', insertStyles); +}; + +export default buildPads; diff --git a/src/methods/buildWidth.ts b/src/methods/buildWidth.ts new file mode 100644 index 0000000..be445e7 --- /dev/null +++ b/src/methods/buildWidth.ts @@ -0,0 +1,10 @@ +import buildAttr from '../helpers/buildAttr'; + +const buildWidth = ( + valWidth: string, + insertStyles: boolean = false +) => { + return buildAttr(valWidth, 'wdh', insertStyles); +}; + +export default buildWidth; diff --git a/src/methods/getParameters.ts b/src/methods/getParameters.ts new file mode 100644 index 0000000..7da9167 --- /dev/null +++ b/src/methods/getParameters.ts @@ -0,0 +1,20 @@ +import { processors, TDirectiveName } from '../config/processors'; + +const getParameters = (Node: HTMLElement | Element): Partial> => { + const params: Partial> = {}; + const attrs = Node.attributes; + const paramNames = Object.keys(processors); + Array.prototype.forEach.call(attrs, attr => { + if (paramNames.includes(attr.name)) { + if (attr.value !== '') + params[attr.name as TDirectiveName] = attr.value + .trim() + .split(' ') + .filter((item: string) => item) + .join(' '); + } + }); + return params; +}; + +export default getParameters; diff --git a/src/methods/insertRules.ts b/src/methods/insertRules.ts new file mode 100644 index 0000000..af8dec8 --- /dev/null +++ b/src/methods/insertRules.ts @@ -0,0 +1,19 @@ +import config, { setStyles } from '../config/main'; +import { IStyles } from '../helpers/createStyles'; +import getScopeByclassName from '../helpers/getScopeByclassName'; + +const insertRules = (objStyles: IStyles) => { + const intConfig = config(); + + for (const className in objStyles) { + if (!intConfig.styles.hasOwnProperty(className)) { + let nodeScope = getScopeByclassName(className); + const valClass = objStyles[className]; + const rules = nodeScope.method.rules; + nodeScope.method.insertRule(valClass, rules ? rules.length : 0); + setStyles(className, valClass) // saving in styles vault + } + } +}; + +export default insertRules; diff --git a/src/methods/reset.ts b/src/methods/reset.ts new file mode 100644 index 0000000..902c586 --- /dev/null +++ b/src/methods/reset.ts @@ -0,0 +1,48 @@ +import { processors } from "../config/processors"; +import addClasses from "../utils/addClasses"; +import removeAttr from "../utils/removeAttr"; + +const reset = (Node: HTMLElement | Element ): Promise => { + return new Promise(resolve => { + const layouterClasses = Object.keys(processors); + const restClass: string[] = []; + Node.className + .split(' ') + .filter( name => { + // the name of a class with minus of 4 letters dont follow the syntax of a class name created by the system, so is a normal class name + if (name.length < 4) { + restClass.push(name); + return false; + } + const nPrex = name.length >= 5 ? 5 : 4; + let prex = name.substring(0, nPrex); + let lineIndex = prex.split('').indexOf('-'); + // if the class name haven't a line can't be a class name created by the system + if (lineIndex === -1) { + restClass.push(name); + return false; + } + prex = prex.substring(0, lineIndex); + // if the extraction of the prefix of the class name follow the name of a directive is a class name created by the system + if (layouterClasses.includes(prex)) { + return true; + } else { + // if dont, so is a coincidence, but is not a valid class name created by the system + restClass.push(name); + return false; + } + }); + if (restClass.length) { + const classesName = restClass.join(' '); + addClasses(Node, classesName, true).then(() => { + resolve(); + }) + } else { + removeAttr(Node, 'class').then(() => { + resolve(); + }) + } + }) +}; + +export default reset; diff --git a/src/methods/set.ts b/src/methods/set.ts new file mode 100644 index 0000000..35beb12 --- /dev/null +++ b/src/methods/set.ts @@ -0,0 +1,48 @@ +import addClasses from '../utils/addClasses'; +import { IStyles } from '../helpers/createStyles'; +import regError from '../helpers/regError'; +import build, { IBuildResult } from './build'; +import getParameters from './getParameters'; +import removeAttr from '../utils/removeAttr'; +import { TDirectiveName } from '../config/processors'; + +const set = ( + Node: HTMLElement | Element, + parameters?: Partial> +): Promise => { + return new Promise((resolve, reject) => { + const params = parameters || getParameters(Node); + const arrParams = Object.keys(params); + if (!arrParams.length) { + const err = regError('Parameter Missing', "don't exists any parameter to process", Node); + reject(err); + return; + } + + const toBuild: Partial> = {}; + for (let prop in params) { + toBuild[prop as TDirectiveName] = params[prop as TDirectiveName]; + } + + // creating classes names and inserting that classes to the core + const classesObj = build(toBuild as Record, true); + if (classesObj instanceof Error) { + reject(classesObj); + return; + } + + // adding classes + const classes = classesObj as Partial; + const classesNames = Object.keys(classes) + .map((name: string) => Object.keys(classes[name] as IStyles)) + .flat() + .join(' '); + + // removing unnecessary props + removeAttr(Node, arrParams) + .then(() => addClasses(Node, classesNames)) + .then(resolve); + }); +}; + +export default set; diff --git a/src/methods/setAttr.ts b/src/methods/setAttr.ts new file mode 100644 index 0000000..6b7711b --- /dev/null +++ b/src/methods/setAttr.ts @@ -0,0 +1,35 @@ +import addClasses from '../utils/addClasses'; +import buildAttr from '../helpers/buildAttr'; +import regError from '../helpers/regError'; +import removeAttr from '../utils/removeAttr'; +import { TDirectiveName } from '../config/processors'; + +const setAttr = ( + Node: HTMLElement | Element, + directive: TDirectiveName, + values?: string +): Promise => { + return new Promise((resolve, reject) => { + let directiveValues = values || Node.getAttribute(directive); + if (!directiveValues) { + const err = regError( + 'Empty', + 'The value of the directive "' + directive + '" is empty', + Node + ); + reject(err); + return; + } + + // Creating, inserting, and adding classNames of rules in Node. + const objStyles = buildAttr(directiveValues, directive, true); + const classesToAdd = Object.keys(objStyles).join(' '); + + // removing prop of Node and adding the corresponding classes + removeAttr(Node, directive) + .then(() => addClasses(Node, classesToAdd)) + .then(resolve); + }); +}; + +export default setAttr; diff --git a/src/methods/setFlex.ts b/src/methods/setFlex.ts new file mode 100644 index 0000000..70ff47c --- /dev/null +++ b/src/methods/setFlex.ts @@ -0,0 +1,38 @@ +import addClasses from '../utils/addClasses'; +import regError from '../helpers/regError'; +import buildFlex from './buildFlex'; +import removeAttr from '../utils/removeAttr'; + +const setFlex = ( + Node: HTMLElement | Element, + flexValues?: string +): Promise => { + return new Promise((resolve, reject) => { + let values = flexValues || Node.getAttribute('flex'); + if (!values) { + const err = regError( + 'Empty', + 'The value of the directive "flex" is empty', + Node + ); + reject(err); + return; + } + + // Creating, inserting, and adding classNames of rules in Node. + const objStyles = buildFlex(values, true); + if (objStyles instanceof Error) { + reject(objStyles); + return; + } + + const classesToAdd = Object.keys(objStyles).join(' '); + + // removing prop of Node and adding the corresponding classes + removeAttr(Node, 'flex') + .then(() => addClasses(Node, classesToAdd)) + .then(resolve); + }); +}; + +export default setFlex; diff --git a/src/methods/setHeight.ts b/src/methods/setHeight.ts new file mode 100644 index 0000000..46d7372 --- /dev/null +++ b/src/methods/setHeight.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setHeight = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'hgt', values); +}; + +export default setHeight; diff --git a/src/methods/setMarBottom.ts b/src/methods/setMarBottom.ts new file mode 100644 index 0000000..1696ff6 --- /dev/null +++ b/src/methods/setMarBottom.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setMarBottom = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'marb', values); +}; + +export default setMarBottom; diff --git a/src/methods/setMarLeft.ts b/src/methods/setMarLeft.ts new file mode 100644 index 0000000..f4b6052 --- /dev/null +++ b/src/methods/setMarLeft.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setMarLeft = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'marl', values); +}; + +export default setMarLeft; diff --git a/src/methods/setMarRight.ts b/src/methods/setMarRight.ts new file mode 100644 index 0000000..45f68cb --- /dev/null +++ b/src/methods/setMarRight.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setMarRight = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'marr', values); +}; + +export default setMarRight; diff --git a/src/methods/setMarTop.ts b/src/methods/setMarTop.ts new file mode 100644 index 0000000..a026c6b --- /dev/null +++ b/src/methods/setMarTop.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setMarTop = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'mart', values); +}; + +export default setMarTop; diff --git a/src/methods/setMars.ts b/src/methods/setMars.ts new file mode 100644 index 0000000..81676cb --- /dev/null +++ b/src/methods/setMars.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setMars = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'mar', values); +}; + +export default setMars; diff --git a/src/methods/setMaxHeight.ts b/src/methods/setMaxHeight.ts new file mode 100644 index 0000000..3b347a9 --- /dev/null +++ b/src/methods/setMaxHeight.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setMaxHeight = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'mxh', values); +}; + +export default setMaxHeight; diff --git a/src/methods/setMaxWidth.ts b/src/methods/setMaxWidth.ts new file mode 100644 index 0000000..effd4ac --- /dev/null +++ b/src/methods/setMaxWidth.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setMaxWidth = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'mxw', values); +}; + +export default setMaxWidth; diff --git a/src/methods/setMinHeight.ts b/src/methods/setMinHeight.ts new file mode 100644 index 0000000..0e0ebd4 --- /dev/null +++ b/src/methods/setMinHeight.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setMinHeight = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'mih', values); +}; + +export default setMinHeight; diff --git a/src/methods/setMinWidth.ts b/src/methods/setMinWidth.ts new file mode 100644 index 0000000..1ae4126 --- /dev/null +++ b/src/methods/setMinWidth.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setMinWidth = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'miw', values); +}; + +export default setMinWidth; diff --git a/src/methods/setPadBottom.ts b/src/methods/setPadBottom.ts new file mode 100644 index 0000000..ad86282 --- /dev/null +++ b/src/methods/setPadBottom.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setPadBottom = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'padb', values); +}; + +export default setPadBottom; diff --git a/src/methods/setPadLeft.ts b/src/methods/setPadLeft.ts new file mode 100644 index 0000000..d78e4d4 --- /dev/null +++ b/src/methods/setPadLeft.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setPadLeft = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'padl', values); +}; + +export default setPadLeft; diff --git a/src/methods/setPadRight.ts b/src/methods/setPadRight.ts new file mode 100644 index 0000000..78887ed --- /dev/null +++ b/src/methods/setPadRight.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setPadRight = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'padr', values); +}; + +export default setPadRight; diff --git a/src/methods/setPadTop.ts b/src/methods/setPadTop.ts new file mode 100644 index 0000000..31c90d5 --- /dev/null +++ b/src/methods/setPadTop.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setPadTop = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'padt', values); +}; + +export default setPadTop; diff --git a/src/methods/setPads.ts b/src/methods/setPads.ts new file mode 100644 index 0000000..c32db89 --- /dev/null +++ b/src/methods/setPads.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setPads = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'pad', values); +}; + +export default setPads; diff --git a/src/methods/setWidth.ts b/src/methods/setWidth.ts new file mode 100644 index 0000000..3740abf --- /dev/null +++ b/src/methods/setWidth.ts @@ -0,0 +1,10 @@ +import setAttr from './setAttr'; + +const setWidth = ( + Node: HTMLElement | Element, + values?: string +): Promise => { + return setAttr(Node, 'wdh', values); +}; + +export default setWidth; diff --git a/src/utils/addClasses.ts b/src/utils/addClasses.ts new file mode 100644 index 0000000..9e057c9 --- /dev/null +++ b/src/utils/addClasses.ts @@ -0,0 +1,47 @@ +const addClasses = ( + Node: HTMLElement | Element, + classesNames: string, + overwrite?: boolean +): Promise => { + return new Promise(resolve => { + const names = classesNames.split(' '); + let classesToAdd: string[] = names; + if ( !overwrite ) { + classesToAdd = names.filter( + name => !Node.classList.contains(name) + ); + if (!classesToAdd.length) { + resolve(); + return; + } + } + + const obsNode = new MutationObserver(mutations => { + const target = mutations[0].target; + const currentClasses = (target as Element).className.split(' '); + const containsAll = names.every(element => + currentClasses.includes(element) + ); + if (containsAll) { + obsNode.disconnect(); + resolve(); + } + }); + obsNode.observe(Node, { + childList: false, + subtree: false, + attributes: true, + attributeFilter: ['class'], + characterData: false, + }); + + if ( overwrite ) { + Node.className = classesNames; + } else { + const space = Node.hasAttribute('class') ? ' ' : ''; + Node.className += space + classesToAdd.join(' '); + } + }); +}; + +export default addClasses; diff --git a/src/utils/removeAttr.ts b/src/utils/removeAttr.ts new file mode 100644 index 0000000..e55ec7a --- /dev/null +++ b/src/utils/removeAttr.ts @@ -0,0 +1,48 @@ +export const removeProp = ( + Node: HTMLElement | Element, + propName: string +): Promise => { + return new Promise(resolve => { + if (!Node.hasAttribute(propName)) { + resolve(); + return; + } + const obsNode = new MutationObserver(() => { + obsNode.disconnect(); + resolve(); + }); + obsNode.observe(Node, { + childList: false, + subtree: false, + attributes: true, + attributeFilter: [propName], + characterData: false, + }); + Node.removeAttribute(propName); + }); +}; + +export const removeProps = ( + Node: HTMLElement | Element, + propNames: string[] +): Promise => { + return new Promise(resolve => { + const promises = propNames.map(name => removeProp(Node, name)); + Promise.all(promises).then(() => resolve()); + }); +}; + +const removeAttr = ( + Node: HTMLElement | Element, + propNames: string | string[] +): Promise => { + return new Promise(resolve => { + if (Array.isArray(propNames)) { + removeProps(Node, propNames).then(resolve); + } else { + removeProp(Node, propNames).then(resolve); + } + }); +}; + +export default removeAttr; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/test/config/main.test.ts b/test/config/main.test.ts new file mode 100644 index 0000000..07c3bfe --- /dev/null +++ b/test/config/main.test.ts @@ -0,0 +1,61 @@ +import config, { baseConfig } from '../../src/config/main'; +import lib from '../../src/main'; + +const readyCb = jest.fn(); +window.layouterConfig = { + ready: readyCb +}; + +describe('Config', () => { + const layouter = lib(); + + it('Default config', () => { + expect(layouter).toMatchObject({ + ...baseConfig, + }); + expect(layouter).toHaveProperty('scope'); + expect(layouter).toHaveProperty('styles'); + }); + + it('Setting by Window', () => { + const myConfig = { + prefix: 'my-prefix', + breakpoints: { + xs: { + width: 320, + cols: 4, + }, + sm: { + width: 600, + cols: 8, + }, + }, + bridge: false, + }; + window.layouterConfig = myConfig; + const defaultConfig = config(true); + expect(defaultConfig.prefix).toEqual(myConfig.prefix); + expect(defaultConfig.breakpoints).toEqual(myConfig.breakpoints); + expect(defaultConfig.bridge).toEqual(myConfig.bridge); + }); + + it('Updating breakpoints', () => { + const bps = { + xs: { + width: 600, + cols: 21 + }, + md: { + width: 1200, + cols: 31 + } + } + layouter.updateConfig({ breakpoints: bps }) + const { breakpoints } = config(); + expect(breakpoints).toEqual(bps) + }) + + it('ready callback', () => { + expect(readyCb).toBeCalled(); + }) +}); diff --git a/test/helpers/breakpointsNums.test.ts b/test/helpers/breakpointsNums.test.ts new file mode 100644 index 0000000..1d206f4 --- /dev/null +++ b/test/helpers/breakpointsNums.test.ts @@ -0,0 +1,40 @@ +import breakpointsNums from '../../src/helpers/breakpointsNums'; + +export const bps = { + md: { + width: 1024, + cols: 31, + }, + sm: { + width: 768, + cols: 25, + }, + xs: { + width: 360, + cols: 15, + }, + lg: { + width: 1280, + cols: 40, + }, +}; + +describe('Getting Widths and Cols', () => { + it('Widths', () => { + expect(breakpointsNums({ ...bps }, 'width')).toEqual({ + xs: 0, + sm: 768, + md: 1024, + lg: 1280, + }); + }); + + it('Cols', () => { + expect(breakpointsNums({ ...bps }, 'cols')).toEqual({ + xs: 15, + sm: 25, + md: 31, + lg: 40, + }); + }); +}); diff --git a/test/helpers/breakpointsOrdered.test.ts b/test/helpers/breakpointsOrdered.test.ts new file mode 100644 index 0000000..2d15cc3 --- /dev/null +++ b/test/helpers/breakpointsOrdered.test.ts @@ -0,0 +1,45 @@ +import breakpointsNums from '../../src/helpers/breakpointsNums'; +import breakpointsOrdered from '../../src/helpers/breakpointsOrdered'; + +const bpsUnordered = { + md: { + width: 1024, + cols: 31, + }, + sm: { + width: 768, + cols: 25, + }, + lg: { + width: 1280, + cols: 40, + }, + xs: { + width: 360, + cols: 15, + }, +}; + +describe('Ordering the breakpoints object', () => { + it('Widths', () => { + const sizes = breakpointsNums(bpsUnordered, 'width'); + expect(breakpointsOrdered(bpsUnordered, sizes)).toEqual({ + xs: { + width: 360, + cols: 15, + }, + sm: { + width: 768, + cols: 25, + }, + md: { + width: 1024, + cols: 31, + }, + lg: { + width: 1280, + cols: 40, + } + }); + }); +}); diff --git a/test/helpers/buildAttr.test.ts b/test/helpers/buildAttr.test.ts new file mode 100644 index 0000000..cbb3100 --- /dev/null +++ b/test/helpers/buildAttr.test.ts @@ -0,0 +1,17 @@ +import config, { setConfig } from '../../src/config/main'; +import buildAttr from '../../src/helpers/buildAttr'; + +describe('buildAttr', () => { + setConfig(); + const { styles } = config() + + it('simple without insert the styles', () => { + buildAttr('500', 'hgt'); + expect(styles).not.toHaveProperty('hgt-500'); + }) + + it('simple and inserting the styles', () => { + buildAttr('300', 'hgt', true); + expect(styles).toHaveProperty('hgt-300'); + }) +}) diff --git a/test/helpers/calPercentage.test.ts b/test/helpers/calPercentage.test.ts new file mode 100644 index 0000000..19cfe89 --- /dev/null +++ b/test/helpers/calPercentage.test.ts @@ -0,0 +1,8 @@ +import calPercentage from '../../src/helpers/calPercentage'; + +describe('calPercentage', () => { + it('Simple', () => { + const cal = calPercentage(2, 3); + expect(cal).toEqual('66.667%'); + }); +}); diff --git a/test/helpers/createScopeStyles.test.ts b/test/helpers/createScopeStyles.test.ts new file mode 100644 index 0000000..1d519a4 --- /dev/null +++ b/test/helpers/createScopeStyles.test.ts @@ -0,0 +1,42 @@ +import createScopeStyles from '../../src/helpers/createScopeStyles'; + +describe('Create Scope Styles', () => { + const myBody = document.body; + const div = document.createElement('div'); + myBody.appendChild(div); + + it('Before', () => { + createScopeStyles({ + bridge: true, + bp: 'xs', + insertionType: 'before', + node: div, + }); + const styleNode = myBody.querySelector('#layouter-xs'); + expect(styleNode).toBeTruthy(); + }); + + it('After', () => { + createScopeStyles({ + bridge: true, + bp: 'sm', + insertionType: 'after', + node: div, + }); + const styleNode = myBody.querySelector('#layouter-sm'); + expect(styleNode).toBeTruthy(); + }); + + it('Bridge false', () => { + const bridge = createScopeStyles({ + bridge: false, + bp: 'lg', + insertionType: 'append', + node: div, + }); + bridge.method.insertRule('hello'); + + expect(bridge).toHaveProperty('method'); + expect(bridge).toHaveProperty('node'); + }); +}); diff --git a/test/helpers/createStyles.test.ts b/test/helpers/createStyles.test.ts new file mode 100644 index 0000000..d26ed73 --- /dev/null +++ b/test/helpers/createStyles.test.ts @@ -0,0 +1,18 @@ +import { setConfig } from '../../src/config/main'; +import createStyles from '../../src/helpers/createStyles'; + +describe('createStyles', () => { + setConfig({ + prefix: 'dpz' + }); + + it('With DPZ prefix', () => { + const styles = createStyles('mart', { + xs: { + name: '500', + value: '500px' + } + }) + expect(styles).toEqual( { 'dpz-mart-500': '.dpz-mart-500{margin-top:500px}' }) + }) +}) diff --git a/test/helpers/getScopeByclassName.test.ts b/test/helpers/getScopeByclassName.test.ts new file mode 100644 index 0000000..8dc0de2 --- /dev/null +++ b/test/helpers/getScopeByclassName.test.ts @@ -0,0 +1,27 @@ +import { setConfig } from '../../src/config/main'; +import getScopeByclassName from '../../src/helpers/getScopeByclassName'; +import setMarTop from '../../src/methods/setMarTop'; + +describe('getScopeByclassName', () => { + setConfig(); + + it('Processing two nodes with the same "until" breakpoint', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mart', '40@-sm'); + await setMarTop(myDiv); + const firstScope = getScopeByclassName('mart-40@-sm'); + + const myDiv2 = document.createElement('div'); + myDiv2.setAttribute('mart', '50@-sm'); + await setMarTop(myDiv2); + const secondScope = getScopeByclassName('mart-50@-sm'); + + const myDiv3 = document.createElement('div'); + myDiv3.setAttribute('mart', '60@sm'); + await setMarTop(myDiv3); + const thirdScope = getScopeByclassName('mart-60@sm'); + + expect(firstScope).toEqual(secondScope); + expect(firstScope).not.toEqual(thirdScope); + }); +}); diff --git a/test/helpers/percentageConverter.test.ts b/test/helpers/percentageConverter.test.ts new file mode 100644 index 0000000..38acb27 --- /dev/null +++ b/test/helpers/percentageConverter.test.ts @@ -0,0 +1,8 @@ +import percentageConverter from '../../src/helpers/percentageConverter'; + +describe('percentageConverter helper', () => { + test('Simple', () => { + const result = percentageConverter('20%'); + expect(result).toEqual('0¯20'); + }); +}); diff --git a/test/helpers/regError.test.ts b/test/helpers/regError.test.ts new file mode 100644 index 0000000..a7207b6 --- /dev/null +++ b/test/helpers/regError.test.ts @@ -0,0 +1,12 @@ +import { setConfig } from '../../src/config/main'; +import regError from '../../src/helpers/regError'; + +describe('regError', () => { + setConfig(); + + it('width Node', () => { + const myDiv = document.createElement('div'); + const err = regError('Err Test', 'This is a error test', myDiv); + expect(err).toBeInstanceOf(Error); + }) +}) diff --git a/test/helpers/scopesStylesBuilder.test.ts b/test/helpers/scopesStylesBuilder.test.ts new file mode 100644 index 0000000..8f961d4 --- /dev/null +++ b/test/helpers/scopesStylesBuilder.test.ts @@ -0,0 +1,16 @@ +import config, { setConfig } from '../../src/config/main'; +import { scopesStylesBuilder } from '../../src/helpers/scopesStylesBuilder'; + +describe('Scopes Styles Builder', () => { + setConfig(); + const { breakpoints } = config(); + + it('Simple', () => { + const scopes = scopesStylesBuilder(breakpoints, false); + expect(scopes).toHaveProperty('xs'); + expect(scopes).toHaveProperty('sm'); + expect(scopes).toHaveProperty('md'); + expect(scopes).toHaveProperty('lg'); + expect(scopes).toHaveProperty('xlg'); + }); +}); diff --git a/test/index.test.ts b/test/index.test.ts new file mode 100644 index 0000000..25dca51 --- /dev/null +++ b/test/index.test.ts @@ -0,0 +1,51 @@ +import { waitFor, screen } from '@testing-library/dom' +import '@testing-library/jest-dom' +import layouter from '../src/main'; + +describe('Init', () => { + it('With Nodes already in the DOM', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mart', '40'); + myDiv.textContent = 'Simple' + document.body.appendChild(myDiv); + layouter(); + await waitFor(() => { + expect(screen.getByText('Simple')).toHaveClass('mart-40') + }) + }) + + it('Adding a paragraph to the DOM', async () => { + const paragraph = document.createElement('p'); + paragraph.setAttribute('marb', '50'); + paragraph.textContent = 'Parrafo' + document.body.appendChild(paragraph); + await waitFor(() => { + expect(screen.getByText('Parrafo')).toHaveClass('marb-50') + }) + }) + + it('Adding a directive to a Node already added to the DOM', async () => { + const myDiv = document.createElement('div'); + myDiv.textContent = 'Content' + document.body.appendChild(myDiv); + await waitFor(() => { + myDiv.setAttribute('marb', '60') + expect(screen.getByText('Content')).toHaveClass('marb-60') + }) + }) + + it('Removing a Node from the DOM', async () => { + const myDiv = document.createElement('div'); + myDiv.textContent = 'Content' + document.body.appendChild(myDiv); + await waitFor(() => { + myDiv.parentNode?.removeChild(myDiv); + expect(myDiv).not.toBeInTheDocument(); + }) + }) + + // it('Cheking if Layouter is attached in Window', () => { + // console.log('window layouter: ', window.layouter); + // expect(window).toHaveProperty('layouter'); + // }) +}) diff --git a/test/methods/SetCols.test.ts b/test/methods/SetCols.test.ts new file mode 100644 index 0000000..2d53db0 --- /dev/null +++ b/test/methods/SetCols.test.ts @@ -0,0 +1,42 @@ +import { setConfig } from '../../src/config/main'; +import setCols from '../../src/methods/SetCols'; + +describe('Setting cols', () => { + setConfig({ + debug: false + }); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.className = 'test'; + myDiv.setAttribute('cols', '3/13'); + await setCols(myDiv); + expect(myDiv.classList.contains('cols-3/13')).toBeTruthy(); + }); + + it('Without Cols property', () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('padt', '3/13'); + setCols(myDiv).catch(response => { + expect(response).toBeInstanceOf(Error) + }); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('cols', '3/15 8/31@sm 20.5/31@md'); + await setCols(myDiv); + ['cols-3/15', 'cols-8/31@sm', 'cols-20_5/31@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + expect(myDiv.classList.contains('cols-1/1')).toBeFalsy(); + }); + + it('Simple with implicit columns and until breakpoint', () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('cols', '3@-md'); + setCols(myDiv).catch(e => { + expect(e).toBeInstanceOf(Error); + }); + }); +}); diff --git a/test/methods/build.test.ts b/test/methods/build.test.ts new file mode 100644 index 0000000..4e62f7d --- /dev/null +++ b/test/methods/build.test.ts @@ -0,0 +1,128 @@ +import { setConfig } from '../../src/config/main'; +import build, { IBuildResult } from '../../src/methods/build'; + +describe('Building all', () => { + setConfig(); + + it('All Together', () => { + const buildResponse = build({ + flex: 'jc:ce ai:ce', + cols: '3/13 21/21@sm 27/27@md', + mar: '0-2/13-0-0@-sm 0-0-20-0@sm', + pad: '20-0@sm', + }); + const builded = buildResponse as Partial; + expect(builded.flex).toEqual({ + 'flex-jc:ce-ai:ce': + '.flex-jc\\:ce-ai\\:ce{justify-content:center;align-items:center;display:flex;}', + }); + expect(builded.cols).toEqual({ + 'cols-21/21@sm': + '@media screen and (min-width: 600px){.cols-21\\/21\\@sm{width:100%}}', + 'cols-27/27@md': + '@media screen and (min-width: 900px){.cols-27\\/27\\@md{width:100%}}', + 'cols-3/13': '.cols-3\\/13{width:23.077%}', + }); + expect(builded.mar).toEqual({ + 'mar-0-0-20-0@sm': + '@media screen and (min-width: 600px){.mar-0-0-20-0\\@sm{margin:0 0 20px 0}}', + 'mar-0-2/13-0-0@-sm': + '@media screen and (max-width: 599px){.mar-0-2\\/13-0-0\\@-sm{margin:0 15.385% 0 0}}', + }); + expect(builded.pad).toEqual({ + 'pad-20-0@sm': + '@media screen and (min-width: 600px){.pad-20-0\\@sm{padding:20px 0}}', + }); + }); + + it('Separated', () => { + expect(build({ flex: 'jc:ce ai:ce' })).toEqual({ + flex: { + 'flex-jc:ce-ai:ce': + '.flex-jc\\:ce-ai\\:ce{justify-content:center;align-items:center;display:flex;}', + }, + }); + expect(build({ cols: '3/13 21/21@sm 27/27@md' })).toEqual({ + cols: { + 'cols-21/21@sm': + '@media screen and (min-width: 600px){.cols-21\\/21\\@sm{width:100%}}', + 'cols-27/27@md': + '@media screen and (min-width: 900px){.cols-27\\/27\\@md{width:100%}}', + 'cols-3/13': '.cols-3\\/13{width:23.077%}', + }, + }); + expect(build({ padt: '10 40.5@sm 30@md' })).toEqual({ + padt: { + 'padt-10': '.padt-10{padding-top:10px}', + 'padt-30@md': + '@media screen and (min-width: 900px){.padt-30\\@md{padding-top:30px}}', + 'padt-40_5@sm': + '@media screen and (min-width: 600px){.padt-40_5\\@sm{padding-top:40.5px}}', + }, + }); + expect(build({ padr: '20 50.5@sm 40@md' })).toEqual({ + padr: { + 'padr-20': '.padr-20{padding-right:20px}', + 'padr-40@md': + '@media screen and (min-width: 900px){.padr-40\\@md{padding-right:40px}}', + 'padr-50_5@sm': + '@media screen and (min-width: 600px){.padr-50_5\\@sm{padding-right:50.5px}}', + }, + }); + expect(build({ padb: '30 60.5@sm 50@md' })).toEqual({ + padb: { + 'padb-30': '.padb-30{padding-bottom:30px}', + 'padb-50@md': + '@media screen and (min-width: 900px){.padb-50\\@md{padding-bottom:50px}}', + 'padb-60_5@sm': + '@media screen and (min-width: 600px){.padb-60_5\\@sm{padding-bottom:60.5px}}', + }, + }); + expect(build({ padl: '40 70.5@sm 60@md' })).toEqual({ + padl: { + 'padl-60@md': + '@media screen and (min-width: 900px){.padl-60\\@md{padding-left:60px}}', + 'padl-70_5@sm': + '@media screen and (min-width: 600px){.padl-70_5\\@sm{padding-left:70.5px}}', + 'padl-40': '.padl-40{padding-left:40px}', + }, + }); + + expect(build({ mart: '50 30.5@sm 70@md' })).toEqual({ + mart: { + 'mart-30_5@sm': + '@media screen and (min-width: 600px){.mart-30_5\\@sm{margin-top:30.5px}}', + 'mart-50': '.mart-50{margin-top:50px}', + 'mart-70@md': + '@media screen and (min-width: 900px){.mart-70\\@md{margin-top:70px}}', + }, + }); + expect(build({ marr: '60 20.5@sm 80@md' })).toEqual({ + marr: { + 'marr-20_5@sm': + '@media screen and (min-width: 600px){.marr-20_5\\@sm{margin-right:20.5px}}', + 'marr-60': '.marr-60{margin-right:60px}', + 'marr-80@md': + '@media screen and (min-width: 900px){.marr-80\\@md{margin-right:80px}}', + }, + }); + expect(build({ marb: '70 40.5@sm 90@md' })).toEqual({ + marb: { + 'marb-40_5@sm': + '@media screen and (min-width: 600px){.marb-40_5\\@sm{margin-bottom:40.5px}}', + 'marb-70': '.marb-70{margin-bottom:70px}', + 'marb-90@md': + '@media screen and (min-width: 900px){.marb-90\\@md{margin-bottom:90px}}', + }, + }); + expect(build({ marl: '80 5.5@sm 100@md' })).toEqual({ + marl: { + 'marl-100@md': + '@media screen and (min-width: 900px){.marl-100\\@md{margin-left:100px}}', + 'marl-5_5@sm': + '@media screen and (min-width: 600px){.marl-5_5\\@sm{margin-left:5.5px}}', + 'marl-80': '.marl-80{margin-left:80px}', + }, + }); + }); +}); diff --git a/test/methods/buildCols.test.ts b/test/methods/buildCols.test.ts new file mode 100644 index 0000000..a0cf598 --- /dev/null +++ b/test/methods/buildCols.test.ts @@ -0,0 +1,60 @@ +import { setConfig } from '../../src/config/main'; +import buildCols from '../../src/methods/buildCols'; + +describe('Build Cols params ', () => { + setConfig({ + debug: false + }); + + it('Simple', () => { + const styles = buildCols('3/13'); + expect(styles).toEqual({ + 'cols-3/13': '.cols-3\\/13{width:23.077%}', + }); + expect(document.querySelector('#layouter-xs')?.outerHTML).toEqual( + '' + ); + }); + + it('Simple with important!', () => { + const styles = buildCols('3!'); + expect(styles).toEqual({ + 'cols-3!': '.cols-3\\!{width:20% !important}', + }); + }); + + it('Simple with implicit columns', () => { + const styles = buildCols('3@sm'); + expect(styles).toEqual({ + 'cols-3@sm': + '@media screen and (min-width: 600px){.cols-3\\@sm{width:12%}}', + }); + }); + + it('Simple with implicit columns and withouth breakpoint', () => { + const styles = buildCols('3'); + expect(styles).toEqual({ + 'cols-3': '.cols-3{width:20%}', + }); + }); + + it('Compound', () => { + const styles = buildCols('3/13 21/21@sm 27/27@md'); + expect(styles).toEqual({ + 'cols-21/21@sm': + '@media screen and (min-width: 600px){.cols-21\\/21\\@sm{width:100%}}', + 'cols-27/27@md': + '@media screen and (min-width: 900px){.cols-27\\/27\\@md{width:100%}}', + 'cols-3/13': '.cols-3\\/13{width:23.077%}', + }); + expect(document.querySelector('#layouter-xs')?.outerHTML).toEqual( + '' + ); + expect(document.querySelector('#layouter-sm')?.outerHTML).toEqual( + '' + ); + expect(document.querySelector('#layouter-md')?.outerHTML).toEqual( + '' + ); + }); +}); diff --git a/test/methods/buildFlex.test.ts b/test/methods/buildFlex.test.ts new file mode 100644 index 0000000..9daf695 --- /dev/null +++ b/test/methods/buildFlex.test.ts @@ -0,0 +1,49 @@ +import { setConfig } from '../../src/config/main'; +import buildFlex from '../../src/methods/buildFlex'; + +describe('Building Flex', () => { + setConfig(); + + it('simple', () => { + expect(buildFlex('jc:ce')).toEqual({ + 'flex-jc:ce': '.flex-jc\\:ce{justify-content:center;display:flex;}', + }); + }); + + it('simple with important flag', () => { + expect(buildFlex('jc:ce!')).toEqual({ + 'flex-jc:ce!': + '.flex-jc\\:ce\\!{justify-content:center !important;display:flex !important;}', + }); + }); + + it('With breakpoints', () => { + expect(buildFlex('jc:ce ai:ce fw:w@sm jc:sb@sm fd:co@md')).toEqual( + { + 'flex-fd:co@md': + '@media screen and (min-width: 900px){.flex-fd\\:co\\@md{flex-direction:column;display:flex;}}', + 'flex-fw:w-jc:sb@sm': + '@media screen and (min-width: 600px){.flex-fw\\:w-jc\\:sb\\@sm{flex-wrap:wrap;justify-content:space-between;display:flex;}}', + 'flex-jc:ce-ai:ce': + '.flex-jc\\:ce-ai\\:ce{justify-content:center;align-items:center;display:flex;}', + } + ); + }); + + it('With breakpoints and important flag', () => { + expect( + buildFlex('jc:ce! ai:ce fw:w@sm! jc:sb@sm fd:co@md!') + ).toEqual({ + 'flex-fd:co@md!': + '@media screen and (min-width: 900px){.flex-fd\\:co\\@md\\!{flex-direction:column !important;display:flex !important;}}', + 'flex-fw:w-jc:sb@sm': + '@media screen and (min-width: 600px){.flex-fw\\:w-jc\\:sb\\@sm{flex-wrap:wrap !important;justify-content:space-between;display:flex;}}', + 'flex-jc:ce!-ai:ce': + '.flex-jc\\:ce\\!-ai\\:ce{justify-content:center !important;align-items:center;display:flex !important;}', + }); + }); + + it('With a invalid alias', async () => { + expect(buildFlex('aa:bb')).toBeInstanceOf(Error); + }) +}); diff --git a/test/methods/buildHeight.test.ts b/test/methods/buildHeight.test.ts new file mode 100644 index 0000000..7163a00 --- /dev/null +++ b/test/methods/buildHeight.test.ts @@ -0,0 +1,50 @@ +import { setConfig } from '../../src/config/main'; +import buildHeight from '../../src/methods/buildHeight'; + +describe('Buildings width', () => { + setConfig({ + breakpoints: { + xs: { + width: 320, + cols: 15, + }, + sm: { + width: 768, + cols: 31, + }, + md: { + width: 1024, + cols: 31, + }, + }, + debug: false, + }); + + it('simple', () => { + expect(buildHeight('100')).toEqual({ + 'hgt-100': '.hgt-100{height:100px}', + }); + }); + + it('simple with important flag', () => { + expect(buildHeight('100!')).toEqual({ + 'hgt-100!': '.hgt-100\\!{height:100px !important}', + }); + }); + + it('simple with units relative', () => { + expect(buildHeight('40vw')).toEqual({ + 'hgt-40vw': '.hgt-40vw{height:40vw}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildHeight('100! 200@sm 300@md!')).toEqual({ + 'hgt-100!': '.hgt-100\\!{height:100px !important}', + 'hgt-200@sm': + '@media screen and (min-width: 768px){.hgt-200\\@sm{height:200px}}', + 'hgt-300@md!': + '@media screen and (min-width: 1024px){.hgt-300\\@md\\!{height:300px !important}}', + }); + }); +}); diff --git a/test/methods/buildMarBottom.test.ts b/test/methods/buildMarBottom.test.ts new file mode 100644 index 0000000..e0ecf7d --- /dev/null +++ b/test/methods/buildMarBottom.test.ts @@ -0,0 +1,38 @@ +import { setConfig } from '../../src/config/main'; +import buildMarBottom from '../../src/methods/buildMarBottom'; + +describe('Buildings margin-bottom', () => { + setConfig(); + + it('simple', () => { + expect(buildMarBottom('40')).toEqual({ + 'marb-40': '.marb-40{margin-bottom:40px}', + }); + }); + + it('simple with important flag', () => { + expect(buildMarBottom('40!')).toEqual({ + 'marb-40!': '.marb-40\\!{margin-bottom:40px !important}', + }); + }); + + it('With breakpoints', () => { + expect(buildMarBottom('10 20.5@sm 30@md')).toEqual({ + 'marb-10': '.marb-10{margin-bottom:10px}', + 'marb-20_5@sm': + '@media screen and (min-width: 600px){.marb-20_5\\@sm{margin-bottom:20.5px}}', + 'marb-30@md': + '@media screen and (min-width: 900px){.marb-30\\@md{margin-bottom:30px}}', + }); + }); + + it('With breakpoints and Important Flag', () => { + expect(buildMarBottom('10! 20.5@sm! 30@md')).toEqual({ + 'marb-10!': '.marb-10\\!{margin-bottom:10px !important}', + 'marb-20_5@sm!': + '@media screen and (min-width: 600px){.marb-20_5\\@sm\\!{margin-bottom:20.5px !important}}', + 'marb-30@md': + '@media screen and (min-width: 900px){.marb-30\\@md{margin-bottom:30px}}', + }); + }); +}); diff --git a/test/methods/buildMarLeft.test.ts b/test/methods/buildMarLeft.test.ts new file mode 100644 index 0000000..30f4dd5 --- /dev/null +++ b/test/methods/buildMarLeft.test.ts @@ -0,0 +1,38 @@ +import { setConfig } from '../../src/config/main'; +import buildMarLeft from '../../src/methods/buildMarLeft'; + +describe('Buildings Margin Left', () => { + setConfig(); + + it('simple', () => { + expect(buildMarLeft('40')).toEqual({ + 'marl-40': '.marl-40{margin-left:40px}', + }); + }); + + it('simple with important flag', () => { + expect(buildMarLeft('40!')).toEqual({ + 'marl-40!': '.marl-40\\!{margin-left:40px !important}', + }); + }); + + it('With breakpoints', () => { + expect(buildMarLeft('10 20.5@sm 30@md')).toEqual({ + 'marl-10': '.marl-10{margin-left:10px}', + 'marl-20_5@sm': + '@media screen and (min-width: 600px){.marl-20_5\\@sm{margin-left:20.5px}}', + 'marl-30@md': + '@media screen and (min-width: 900px){.marl-30\\@md{margin-left:30px}}', + }); + }); + + it('With breakpoints and Important Flag', () => { + expect(buildMarLeft('10 20.5@sm! 30@md!')).toEqual({ + 'marl-10': '.marl-10{margin-left:10px}', + 'marl-20_5@sm!': + '@media screen and (min-width: 600px){.marl-20_5\\@sm\\!{margin-left:20.5px !important}}', + 'marl-30@md!': + '@media screen and (min-width: 900px){.marl-30\\@md\\!{margin-left:30px !important}}', + }); + }); +}); diff --git a/test/methods/buildMarRight.test.ts b/test/methods/buildMarRight.test.ts new file mode 100644 index 0000000..2af612e --- /dev/null +++ b/test/methods/buildMarRight.test.ts @@ -0,0 +1,54 @@ +import { setConfig } from '../../src/config/main'; +import buildMarRight from '../../src/methods/buildMarRight'; + +describe('Buildings Margin-right', () => { + setConfig({ + breakpoints: { + xs: { + width: 320, + cols: 15, + }, + sm: { + width: 768, + cols: 31, + }, + md: { + width: 1024, + cols: 31, + }, + }, + debug: false + }); + + it('simple', () => { + expect(buildMarRight('40')).toEqual({ + 'marr-40': '.marr-40{margin-right:40px}', + }); + }); + + it('simple with flag important', () => { + expect(buildMarRight('40!')).toEqual({ + 'marr-40!': '.marr-40\\!{margin-right:40px !important}', + }); + }); + + it('With breakpoints', () => { + expect(buildMarRight('10 20.5@sm 30@md')).toEqual({ + 'marr-10': '.marr-10{margin-right:10px}', + 'marr-20_5@sm': + '@media screen and (min-width: 768px){.marr-20_5\\@sm{margin-right:20.5px}}', + 'marr-30@md': + '@media screen and (min-width: 1024px){.marr-30\\@md{margin-right:30px}}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildMarRight('10! 20.5@sm 30@md!')).toEqual({ + 'marr-10!': '.marr-10\\!{margin-right:10px !important}', + 'marr-20_5@sm': + '@media screen and (min-width: 768px){.marr-20_5\\@sm{margin-right:20.5px}}', + 'marr-30@md!': + '@media screen and (min-width: 1024px){.marr-30\\@md\\!{margin-right:30px !important}}', + }); + }); +}); diff --git a/test/methods/buildMarTop.test.ts b/test/methods/buildMarTop.test.ts new file mode 100644 index 0000000..244f0aa --- /dev/null +++ b/test/methods/buildMarTop.test.ts @@ -0,0 +1,44 @@ +import { setConfig } from '../../src/config/main'; +import buildMarTop from '../../src/methods/buildMarTop'; + +describe('Buildings margin-top', () => { + setConfig(); + + it('simple', () => { + expect(buildMarTop('40')).toEqual({ + 'mart-40': '.mart-40{margin-top:40px}', + }); + }); + + it('simple with important flag', () => { + expect(buildMarTop('40!')).toEqual({ + 'mart-40!': '.mart-40\\!{margin-top:40px !important}', + }); + }); + + it('simple with units relative', () => { + expect(buildMarTop('40%')).toEqual({ + 'mart-0¯40': '.mart-0¯40{margin-top:40%}', + }); + }); + + it('With breakpoints', () => { + expect(buildMarTop('10 20.5@sm 30@md')).toEqual({ + 'mart-10': '.mart-10{margin-top:10px}', + 'mart-20_5@sm': + '@media screen and (min-width: 600px){.mart-20_5\\@sm{margin-top:20.5px}}', + 'mart-30@md': + '@media screen and (min-width: 900px){.mart-30\\@md{margin-top:30px}}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildMarTop('10! 20.5@sm! 30@md!')).toEqual({ + 'mart-10!': '.mart-10\\!{margin-top:10px !important}', + 'mart-20_5@sm!': + '@media screen and (min-width: 600px){.mart-20_5\\@sm\\!{margin-top:20.5px !important}}', + 'mart-30@md!': + '@media screen and (min-width: 900px){.mart-30\\@md\\!{margin-top:30px !important}}', + }); + }); +}); diff --git a/test/methods/buildMars.test.ts b/test/methods/buildMars.test.ts new file mode 100644 index 0000000..ae1f273 --- /dev/null +++ b/test/methods/buildMars.test.ts @@ -0,0 +1,44 @@ +import { setConfig } from '../../src/config/main'; +import buildMars from '../../src/methods/buildMars'; + +describe('Buildings Margins', () => { + setConfig(); + + it('simple', () => { + expect(buildMars('40-0')).toEqual({ + 'mar-40-0': '.mar-40-0{margin:40px 0}', + }); + }); + + it('simple with important flag', () => { + expect(buildMars('40-0!')).toEqual({ + 'mar-40-0!': '.mar-40-0\\!{margin:40px 0 !important}', + }); + }); + + it('simple with units relative', () => { + expect(buildMars('40%-0!')).toEqual({ + 'mar-0¯40-0!': '.mar-0¯40-0\\!{margin:40% 0 !important}', + }); + }); + + it('With breakpoints', () => { + expect(buildMars('10-1/15 20.5-3/31@sm 30-2/31@md')).toEqual({ + 'mar-10-1/15': '.mar-10-1\\/15{margin:10px 6.667%}', + 'mar-20_5-3/31@sm': + '@media screen and (min-width: 600px){.mar-20_5-3\\/31\\@sm{margin:20.5px 9.677%}}', + 'mar-30-2/31@md': + '@media screen and (min-width: 900px){.mar-30-2\\/31\\@md{margin:30px 6.452%}}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildMars('10-1/15! 20.5-3/31@sm 30-2/31@md!')).toEqual({ + 'mar-10-1/15!': '.mar-10-1\\/15\\!{margin:10px 6.667% !important}', + 'mar-20_5-3/31@sm': + '@media screen and (min-width: 600px){.mar-20_5-3\\/31\\@sm{margin:20.5px 9.677%}}', + 'mar-30-2/31@md!': + '@media screen and (min-width: 900px){.mar-30-2\\/31\\@md\\!{margin:30px 6.452% !important}}', + }); + }); +}); diff --git a/test/methods/buildMaxHeight.test.ts b/test/methods/buildMaxHeight.test.ts new file mode 100644 index 0000000..a6ad49e --- /dev/null +++ b/test/methods/buildMaxHeight.test.ts @@ -0,0 +1,34 @@ +import { setConfig } from '../../src/config/main'; +import buildMaxHeight from '../../src/methods/buildMaxHeight'; + +describe('Buildings Max-height', () => { + setConfig(); + + it('simple', () => { + expect(buildMaxHeight('100')).toEqual({ + 'mxh-100': '.mxh-100{max-height:100px}', + }); + }); + + it('simple with important flag', () => { + expect(buildMaxHeight('100!')).toEqual({ + 'mxh-100!': '.mxh-100\\!{max-height:100px !important}', + }); + }); + + it('simple with units relative', () => { + expect(buildMaxHeight('100vh!')).toEqual({ + 'mxh-100vh!': '.mxh-100vh\\!{max-height:100vh !important}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildMaxHeight('100! 200@sm 300@md!')).toEqual({ + 'mxh-100!': '.mxh-100\\!{max-height:100px !important}', + 'mxh-200@sm': + '@media screen and (min-width: 600px){.mxh-200\\@sm{max-height:200px}}', + 'mxh-300@md!': + '@media screen and (min-width: 900px){.mxh-300\\@md\\!{max-height:300px !important}}', + }); + }); +}); diff --git a/test/methods/buildMaxWidth.test.ts b/test/methods/buildMaxWidth.test.ts new file mode 100644 index 0000000..1092403 --- /dev/null +++ b/test/methods/buildMaxWidth.test.ts @@ -0,0 +1,34 @@ +import { setConfig } from '../../src/config/main'; +import buildMaxWidth from '../../src/methods/buildMaxWidth'; + +describe('Buildings Max-width', () => { + setConfig(); + + it('simple', () => { + expect(buildMaxWidth('100')).toEqual({ + 'mxw-100': '.mxw-100{max-width:100px}', + }); + }); + + it('simple with important flag', () => { + expect(buildMaxWidth('100!')).toEqual({ + 'mxw-100!': '.mxw-100\\!{max-width:100px !important}', + }); + }); + + it('simple with units relative', () => { + expect(buildMaxWidth('40rem')).toEqual({ + 'mxw-40rem': '.mxw-40rem{max-width:40rem}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildMaxWidth('100! 200@sm 300@md!')).toEqual({ + 'mxw-100!': '.mxw-100\\!{max-width:100px !important}', + 'mxw-200@sm': + '@media screen and (min-width: 600px){.mxw-200\\@sm{max-width:200px}}', + 'mxw-300@md!': + '@media screen and (min-width: 900px){.mxw-300\\@md\\!{max-width:300px !important}}', + }); + }); +}); diff --git a/test/methods/buildMinHeight.test.ts b/test/methods/buildMinHeight.test.ts new file mode 100644 index 0000000..6b1286d --- /dev/null +++ b/test/methods/buildMinHeight.test.ts @@ -0,0 +1,34 @@ +import { setConfig } from '../../src/config/main'; +import buildMinHeight from '../../src/methods/buildMinHeight'; + +describe('Buildings Min-height', () => { + setConfig(); + + it('simple', () => { + expect(buildMinHeight('100')).toEqual({ + 'mih-100': '.mih-100{min-height:100px}', + }); + }); + + it('simple with important flag', () => { + expect(buildMinHeight('100!')).toEqual({ + 'mih-100!': '.mih-100\\!{min-height:100px !important}', + }); + }); + + it('simple with units relative', () => { + expect(buildMinHeight('100ex')).toEqual({ + 'mih-100ex': '.mih-100ex{min-height:100ex}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildMinHeight('100! 200@sm 300@md!')).toEqual({ + 'mih-100!': '.mih-100\\!{min-height:100px !important}', + 'mih-200@sm': + '@media screen and (min-width: 600px){.mih-200\\@sm{min-height:200px}}', + 'mih-300@md!': + '@media screen and (min-width: 900px){.mih-300\\@md\\!{min-height:300px !important}}', + }); + }); +}); diff --git a/test/methods/buildMinWidth.test.ts b/test/methods/buildMinWidth.test.ts new file mode 100644 index 0000000..8894c97 --- /dev/null +++ b/test/methods/buildMinWidth.test.ts @@ -0,0 +1,34 @@ +import { setConfig } from '../../src/config/main'; +import buildMinWidth from '../../src/methods/buildMinWidth'; + +describe('Buildings Min-width', () => { + setConfig(); + + it('simple', () => { + expect(buildMinWidth('100')).toEqual({ + 'miw-100': '.miw-100{min-width:100px}', + }); + }); + + it('simple with important flag', () => { + expect(buildMinWidth('100!')).toEqual({ + 'miw-100!': '.miw-100\\!{min-width:100px !important}', + }); + }); + + it('simple with units relative', () => { + expect(buildMinWidth('40vw')).toEqual({ + 'miw-40vw': '.miw-40vw{min-width:40vw}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildMinWidth('100! 200@sm 300@md!')).toEqual({ + 'miw-100!': '.miw-100\\!{min-width:100px !important}', + 'miw-200@sm': + '@media screen and (min-width: 600px){.miw-200\\@sm{min-width:200px}}', + 'miw-300@md!': + '@media screen and (min-width: 900px){.miw-300\\@md\\!{min-width:300px !important}}', + }); + }); +}); diff --git a/test/methods/buildPadBottom.test.ts b/test/methods/buildPadBottom.test.ts new file mode 100644 index 0000000..75615bd --- /dev/null +++ b/test/methods/buildPadBottom.test.ts @@ -0,0 +1,38 @@ +import { setConfig } from '../../src/config/main'; +import buildPadBottom from '../../src/methods/buildPadBottom'; + +describe('Buildings Padding-bottom', () => { + setConfig(); + + it('simple', () => { + expect(buildPadBottom('40')).toEqual({ + 'padb-40': '.padb-40{padding-bottom:40px}', + }); + }); + + it('simple with important flag', () => { + expect(buildPadBottom('40!')).toEqual({ + 'padb-40!': '.padb-40\\!{padding-bottom:40px !important}', + }); + }); + + it('With breakpoints', () => { + expect(buildPadBottom('10 20.5@sm 30@md')).toEqual({ + 'padb-10': '.padb-10{padding-bottom:10px}', + 'padb-20_5@sm': + '@media screen and (min-width: 600px){.padb-20_5\\@sm{padding-bottom:20.5px}}', + 'padb-30@md': + '@media screen and (min-width: 900px){.padb-30\\@md{padding-bottom:30px}}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildPadBottom('10! 20.5@sm! 30@md')).toEqual({ + 'padb-10!': '.padb-10\\!{padding-bottom:10px !important}', + 'padb-20_5@sm!': + '@media screen and (min-width: 600px){.padb-20_5\\@sm\\!{padding-bottom:20.5px !important}}', + 'padb-30@md': + '@media screen and (min-width: 900px){.padb-30\\@md{padding-bottom:30px}}', + }); + }); +}); diff --git a/test/methods/buildPadLeft.test.ts b/test/methods/buildPadLeft.test.ts new file mode 100644 index 0000000..886ebcf --- /dev/null +++ b/test/methods/buildPadLeft.test.ts @@ -0,0 +1,38 @@ +import { setConfig } from '../../src/config/main'; +import buildPadLeft from '../../src/methods/buildPadLeft'; + +describe('Buildings Padding-bottom', () => { + setConfig(); + + it('simple', () => { + expect(buildPadLeft('40')).toEqual({ + 'padl-40': '.padl-40{padding-left:40px}', + }); + }); + + it('simple with important flag', () => { + expect(buildPadLeft('40!')).toEqual({ + 'padl-40!': '.padl-40\\!{padding-left:40px !important}', + }); + }); + + it('With breakpoints', () => { + expect(buildPadLeft('10 20.5@sm 30@md')).toEqual({ + 'padl-10': '.padl-10{padding-left:10px}', + 'padl-20_5@sm': + '@media screen and (min-width: 600px){.padl-20_5\\@sm{padding-left:20.5px}}', + 'padl-30@md': + '@media screen and (min-width: 900px){.padl-30\\@md{padding-left:30px}}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildPadLeft('10! 20.5@sm 30@md!')).toEqual({ + 'padl-10!': '.padl-10\\!{padding-left:10px !important}', + 'padl-20_5@sm': + '@media screen and (min-width: 600px){.padl-20_5\\@sm{padding-left:20.5px}}', + 'padl-30@md!': + '@media screen and (min-width: 900px){.padl-30\\@md\\!{padding-left:30px !important}}', + }); + }); +}); diff --git a/test/methods/buildPadRight.test.ts b/test/methods/buildPadRight.test.ts new file mode 100644 index 0000000..79444d8 --- /dev/null +++ b/test/methods/buildPadRight.test.ts @@ -0,0 +1,54 @@ +import { setConfig } from '../../src/config/main'; +import buildPadRight from '../../src/methods/buildPadRight'; + +describe('Buildings Padding-right', () => { + setConfig({ + breakpoints: { + xs: { + width: 320, + cols: 15, + }, + sm: { + width: 768, + cols: 31, + }, + md: { + width: 1024, + cols: 31, + }, + }, + debug:false, + }); + + it('simple', () => { + expect(buildPadRight('40')).toEqual({ + 'padr-40': '.padr-40{padding-right:40px}', + }); + }); + + it('simple with important flag', () => { + expect(buildPadRight('40!')).toEqual({ + 'padr-40!': '.padr-40\\!{padding-right:40px !important}', + }); + }); + + it('With breakpoints', () => { + expect(buildPadRight('10 20.5@sm 30@md')).toEqual({ + 'padr-10': '.padr-10{padding-right:10px}', + 'padr-20_5@sm': + '@media screen and (min-width: 768px){.padr-20_5\\@sm{padding-right:20.5px}}', + 'padr-30@md': + '@media screen and (min-width: 1024px){.padr-30\\@md{padding-right:30px}}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildPadRight('10! 20.5@sm! 30@md!')).toEqual({ + 'padr-10!': '.padr-10\\!{padding-right:10px !important}', + 'padr-20_5@sm!': + '@media screen and (min-width: 768px){.padr-20_5\\@sm\\!{padding-right:20.5px !important}}', + 'padr-30@md!': + '@media screen and (min-width: 1024px){.padr-30\\@md\\!{padding-right:30px !important}}', + }); + }); +}); diff --git a/test/methods/buildPadTop.test.ts b/test/methods/buildPadTop.test.ts new file mode 100644 index 0000000..6ed788b --- /dev/null +++ b/test/methods/buildPadTop.test.ts @@ -0,0 +1,28 @@ +import { setConfig } from '../../src/config/main'; +import buildPadTop from '../../src/methods/buildPadTop'; + +describe('Buildings Padding-top', () => { + setConfig(); + + it('simple', () => { + expect(buildPadTop('40')).toEqual({ + 'padt-40': '.padt-40{padding-top:40px}', + }); + }); + + it('simple with important flag', () => { + expect(buildPadTop('40!')).toEqual({ + 'padt-40!': '.padt-40\\!{padding-top:40px !important}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildPadTop('10! 20.5@sm 30@md!')).toEqual({ + 'padt-10!': '.padt-10\\!{padding-top:10px !important}', + 'padt-20_5@sm': + '@media screen and (min-width: 600px){.padt-20_5\\@sm{padding-top:20.5px}}', + 'padt-30@md!': + '@media screen and (min-width: 900px){.padt-30\\@md\\!{padding-top:30px !important}}', + }); + }); +}); diff --git a/test/methods/buildPads.test.ts b/test/methods/buildPads.test.ts new file mode 100644 index 0000000..a052dc8 --- /dev/null +++ b/test/methods/buildPads.test.ts @@ -0,0 +1,38 @@ +import { setConfig } from '../../src/config/main'; +import buildPads from '../../src/methods/buildPads'; + +describe('Buildings Paddings', () => { + setConfig(); + + it('simple', () => { + expect(buildPads('40-0')).toEqual({ + 'pad-40-0': '.pad-40-0{padding:40px 0}', + }); + }); + + it('simple with important flag', () => { + expect(buildPads('40-0!')).toEqual({ + 'pad-40-0!': '.pad-40-0\\!{padding:40px 0 !important}', + }); + }); + + it('With breakpoints', () => { + expect(buildPads('10-1/15 20.5-3/31@sm 30-2/31@md')).toEqual({ + 'pad-10-1/15': '.pad-10-1\\/15{padding:10px 6.667%}', + 'pad-20_5-3/31@sm': + '@media screen and (min-width: 600px){.pad-20_5-3\\/31\\@sm{padding:20.5px 9.677%}}', + 'pad-30-2/31@md': + '@media screen and (min-width: 900px){.pad-30-2\\/31\\@md{padding:30px 6.452%}}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildPads('10-1/15! 20.5-3/31@sm! 30-2/31@md')).toEqual({ + 'pad-10-1/15!': '.pad-10-1\\/15\\!{padding:10px 6.667% !important}', + 'pad-20_5-3/31@sm!': + '@media screen and (min-width: 600px){.pad-20_5-3\\/31\\@sm\\!{padding:20.5px 9.677% !important}}', + 'pad-30-2/31@md': + '@media screen and (min-width: 900px){.pad-30-2\\/31\\@md{padding:30px 6.452%}}', + }); + }); +}); diff --git a/test/methods/buildWidth.test.ts b/test/methods/buildWidth.test.ts new file mode 100644 index 0000000..89429da --- /dev/null +++ b/test/methods/buildWidth.test.ts @@ -0,0 +1,34 @@ +import { setConfig } from '../../src/config/main'; +import buildWidth from '../../src/methods/buildWidth'; + +describe('Buildings width', () => { + setConfig(); + + it('simple', () => { + expect(buildWidth('100')).toEqual({ + 'wdh-100': '.wdh-100{width:100px}', + }); + }); + + it('simple with important flag', () => { + expect(buildWidth('100!')).toEqual({ + 'wdh-100!': '.wdh-100\\!{width:100px !important}', + }); + }); + + it('simple with units relative', () => { + expect(buildWidth('40vw')).toEqual({ + 'wdh-40vw': '.wdh-40vw{width:40vw}', + }); + }); + + it('With breakpoints and important flag', () => { + expect(buildWidth('100! 200@sm 300@md!')).toEqual({ + 'wdh-100!': '.wdh-100\\!{width:100px !important}', + 'wdh-200@sm': + '@media screen and (min-width: 600px){.wdh-200\\@sm{width:200px}}', + 'wdh-300@md!': + '@media screen and (min-width: 900px){.wdh-300\\@md\\!{width:300px !important}}', + }); + }); +}); diff --git a/test/methods/getParameters.test.ts b/test/methods/getParameters.test.ts new file mode 100644 index 0000000..4261dd3 --- /dev/null +++ b/test/methods/getParameters.test.ts @@ -0,0 +1,46 @@ +import { setConfig } from '../../src/config/main'; +import getParameters from '../../src/methods/getParameters'; + +describe('Get Parameters on a Node', () => { + setConfig(); + + it('One prop', () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mar', '40-20'); + const parParams = getParameters(myDiv); + expect(parParams).toEqual({ mar: '40-20' }); + }); + + it('just "mar" parameter - with breakpoints', () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mar', '40-0 20-0@sm 45-20@md'); + const parParams = getParameters(myDiv); + expect(parParams).toEqual({ mar: '40-0 20-0@sm 45-20@md' }); + }); + + it('"mar" and "pad" parameters - with breakpoints', () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mar', '40-0 20-0@sm 45-20@md'); + myDiv.setAttribute('pad', '10-1/15 20-3/31@sm 30-2/31@md'); + const parParams = getParameters(myDiv); + expect(parParams).toEqual({ + mar: '40-0 20-0@sm 45-20@md', + pad: '10-1/15 20-3/31@sm 30-2/31@md', + }); + }); + + it('"mar", "pad", "cols" and "flex" parameters - with breakpoints', () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('cols', '3/13 21/21@sm 27/27@md'); + myDiv.setAttribute('mar', '0-2/13-0-0@-sm 0-0-20-0@sm'); + myDiv.setAttribute('flex', 'jc:ce ai:ce'); + myDiv.setAttribute('pad', '20-0@sm'); + const parParams = getParameters(myDiv); + expect(parParams).toEqual({ + cols: '3/13 21/21@sm 27/27@md', + flex: 'jc:ce ai:ce', + mar: '0-2/13-0-0@-sm 0-0-20-0@sm', + pad: '20-0@sm', + }); + }); +}); diff --git a/test/methods/reset.test.ts b/test/methods/reset.test.ts new file mode 100644 index 0000000..feb3860 --- /dev/null +++ b/test/methods/reset.test.ts @@ -0,0 +1,37 @@ +import { setConfig } from '../../src/config/main'; +import reset from '../../src/methods/reset'; +import set from '../../src/methods/set'; +import setFlex from '../../src/methods/setFlex'; + +describe('Building all', () => { + setConfig(); + + it('Simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'jc:ce ai:ce'); + myDiv.setAttribute('cols', '3/13 21/21@sm 27/27@md'); + myDiv.setAttribute('mar', '0-2/13-0-0@-sm 0-0-20-0@sm'); + myDiv.setAttribute('pad', '20-0@sm'); + await set(myDiv); + myDiv.classList.add('lol'); + myDiv.classList.add('test1'); + myDiv.classList.add('test2'); + await reset(myDiv); + expect(myDiv.className).toEqual('lol test1 test2'); + }) + + it('Without any class name', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'jc:ce ai:ce'); + await setFlex(myDiv); + await reset(myDiv); + expect(myDiv.className).toEqual(''); + }) + + it('With a class name that following the syntax of one created by the system', async () => { + const myDiv = document.createElement('div'); + myDiv.className = 'cols-3/13 dpz-' + await reset(myDiv); + expect(myDiv.className).toEqual('dpz-'); + }) +}) diff --git a/test/methods/set.test.ts b/test/methods/set.test.ts new file mode 100644 index 0000000..2249977 --- /dev/null +++ b/test/methods/set.test.ts @@ -0,0 +1,94 @@ +import { setConfig } from '../../src/config/main'; +import set from '../../src/methods/set'; + +describe('Building all', () => { + setConfig({ + debug: false + }); + + it('All Together', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'jc:ce ai:ce'); + myDiv.setAttribute('cols', '3/13 21/21@sm 27/27@md'); + myDiv.setAttribute('mar', '0-2/13-0-0@-sm 0-0-20-0@sm'); + myDiv.setAttribute('pad', '20-0@sm'); + await set(myDiv); + [ + 'flex-jc:ce-ai:ce', + 'cols-3/13', + 'cols-21/21@sm', + 'cols-27/27@md', + 'mar-0-2/13-0-0@-sm', + 'mar-0-0-20-0@sm', + 'pad-20-0@sm', + ].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); + + it('Separated', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'jc:ce ai:ce'); + myDiv.setAttribute('cols', '3/13 21/21@sm 27/27@md'); + + myDiv.setAttribute('padt', '10 40.5@sm 30@md'); + myDiv.setAttribute('padr', '20 50.5@sm 40@md'); + myDiv.setAttribute('padb', '30 60.5@sm 50@md'); + myDiv.setAttribute('padl', '40 70.5@sm 60@md'); + + myDiv.setAttribute('mart', '50 30.5@sm 70@md'); + myDiv.setAttribute('marr', '60 20.5@sm 80@md'); + myDiv.setAttribute('marb', '70 40.5@sm 90@md'); + myDiv.setAttribute('marl', '80 5.5@sm 100@md'); + + await set(myDiv); + + [ + 'flex-jc:ce-ai:ce', + 'cols-3/13', + 'cols-21/21@sm', + 'cols-27/27@md', + 'padt-10', + 'padt-40_5@sm', + 'padt-30@md', + 'padr-20', + 'padr-50_5@sm', + 'padr-40@md', + 'padb-30', + 'padb-60_5@sm', + 'padb-50@md', + 'padl-40', + 'padl-70_5@sm', + 'padl-60@md', + 'mart-50', + 'mart-30_5@sm', + 'mart-70@md', + 'marr-60', + 'marr-20_5@sm', + 'marr-80@md', + 'marb-70', + 'marb-40_5@sm', + 'marb-90@md', + 'marl-80', + 'marl-5_5@sm', + 'marl-100@md', + ].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); + + it('Without any directive valid', () => { + const myDiv = document.createElement('div'); + set(myDiv).catch(e => { + expect(e).toBeInstanceOf(Error) + }); + }) + + it('With a invalid value declarated ', () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('cols', '20@sm-md'); + set(myDiv).catch(e => { + expect(e).toBeInstanceOf(Error) + }) + }) +}); diff --git a/test/methods/setFlex.test.ts b/test/methods/setFlex.test.ts new file mode 100644 index 0000000..5d2d412 --- /dev/null +++ b/test/methods/setFlex.test.ts @@ -0,0 +1,78 @@ +import { setConfig } from '../../src/config/main'; +import setFlex from '../../src/methods/setFlex'; + +describe('Setting Flex', () => { + setConfig({ + debug: false + }); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'jc:ce'); + await setFlex(myDiv); + expect(myDiv.classList.contains('flex-jc:ce')).toBeTruthy(); + }); + + it('simple without "flex" prop', () => { + const myDiv = document.createElement('div'); + setFlex(myDiv).catch(response => { + expect(response).toBeInstanceOf(Error) + }); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'jc:ce ai:ce fw:w@sm jc:sb@sm fd:co@md'); + await setFlex(myDiv); + + expect(myDiv.className).toEqual('flex-jc:ce-ai:ce flex-fw:w-jc:sb@sm flex-fd:co@md'); + }); + + it('With equal breakpoints compound created separately', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'jc:ce@sm-md'); + await setFlex(myDiv); + expect(myDiv.className).toEqual('flex-jc:ce@sm-md'); + + myDiv.setAttribute('flex', 'ai:ce@sm-md'); + await setFlex(myDiv); + expect(myDiv.className).toEqual('flex-jc:ce@sm-md flex-ai:ce@sm-md'); + }); + + it('With breakpoints compound different created separately', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'jc:ce@xs-md'); + await setFlex(myDiv); + expect(myDiv.className).toEqual('flex-jc:ce@xs-md'); + + myDiv.setAttribute('flex', 'ai:ce@sm-md'); + await setFlex(myDiv); + expect(myDiv.className).toEqual('flex-jc:ce@xs-md flex-ai:ce@sm-md'); + }); + + it('Attributes for Flex Items', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'fg:1 fh:1 as:ce or:1'); + await setFlex(myDiv); + expect( + myDiv.classList.contains('flex-fg:1-fh:1-as:ce-or:1') + ).toBeTruthy(); + }); + + it('Attributes for Flex Items only', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'as:ce jc:ce'); + await setFlex(myDiv); + expect( + myDiv.classList.contains('flex-as:ce-jc:ce') + ).toBeTruthy(); + }); + + it('With a invalid alias', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('flex', 'as:tt'); + setFlex(myDiv).catch( e => { + expect(e).toBeInstanceOf(Error); + }) + }) +}); diff --git a/test/methods/setHeight.test.ts b/test/methods/setHeight.test.ts new file mode 100644 index 0000000..97b9293 --- /dev/null +++ b/test/methods/setHeight.test.ts @@ -0,0 +1,33 @@ +import { setConfig } from '../../src/config/main'; +import setHeight from '../../src/methods/setHeight'; + +describe('Setting Height', () => { + setConfig({ + debug: false, + }); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('hgt', '100'); + await setHeight(myDiv); + expect(myDiv.classList.contains('hgt-100')).toBeTruthy(); + }); + + it('simple without directive', async () => { + try { + const myDiv = document.createElement('div'); + await setHeight(myDiv); + } catch (e) { + expect(e).toBeInstanceOf(Error); + } + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('hgt', '100 200@sm 300@md'); + await setHeight(myDiv); + ['hgt-100', 'hgt-200@sm', 'hgt-300@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setMarBottom.test.ts b/test/methods/setMarBottom.test.ts new file mode 100644 index 0000000..bcad4b0 --- /dev/null +++ b/test/methods/setMarBottom.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setMarBottom from '../../src/methods/setMarBottom'; + +describe('Setting Margin Right', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('marb', '40'); + await setMarBottom(myDiv); + expect(myDiv.classList.contains('marb-40')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('marb', '10 20.5@sm 30@md'); + await setMarBottom(myDiv); + ['marb-10', 'marb-20_5@sm', 'marb-30@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setMarLeft.test.ts b/test/methods/setMarLeft.test.ts new file mode 100644 index 0000000..e776053 --- /dev/null +++ b/test/methods/setMarLeft.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setMarLeft from '../../src/methods/setMarLeft'; + +describe('Setting Margin Right', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('marl', '40'); + await setMarLeft(myDiv); + expect(myDiv.classList.contains('marl-40')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('marl', '10 20.5@sm 30@md'); + await setMarLeft(myDiv); + ['marl-10', 'marl-20_5@sm', 'marl-30@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setMarRight.test.ts b/test/methods/setMarRight.test.ts new file mode 100644 index 0000000..d1138b7 --- /dev/null +++ b/test/methods/setMarRight.test.ts @@ -0,0 +1,29 @@ +import { setConfig } from '../../src/config/main'; +import setMarRight from '../../src/methods/setMarRight'; + +describe('Setting Margin Right', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('marr', '40'); + await setMarRight(myDiv); + expect(myDiv.classList.contains('marr-40')).toBeTruthy(); + }); + + it('simple with auto', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('marr', 'auto'); + await setMarRight(myDiv); + expect(myDiv.classList.contains('marr-auto')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('marr', '10 20.5@sm 30@md'); + await setMarRight(myDiv); + ['marr-10', 'marr-20_5@sm', 'marr-30@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setMarTop.test.ts b/test/methods/setMarTop.test.ts new file mode 100644 index 0000000..beacff0 --- /dev/null +++ b/test/methods/setMarTop.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setMarTop from '../../src/methods/setMarTop'; + +describe('Setting Margin Top', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mart', '40'); + await setMarTop(myDiv); + expect(myDiv.classList.contains('mart-40')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mart', '10 20.5@sm 30@md'); + await setMarTop(myDiv); + ['mart-10', 'mart-20_5@sm', 'mart-30@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setMars.test.ts b/test/methods/setMars.test.ts new file mode 100644 index 0000000..d1c8ef2 --- /dev/null +++ b/test/methods/setMars.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setMars from '../../src/methods/setMars'; + +describe('Setting Mars', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mar', '40-0'); + await setMars(myDiv); + expect(myDiv.classList.contains('mar-40-0')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mar', '10-1/15 20.5-3/31@sm 30-2/31@md'); + await setMars(myDiv); + ['mar-10-1/15', 'mar-20_5-3/31@sm', 'mar-30-2/31@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setMaxHeight.test.ts b/test/methods/setMaxHeight.test.ts new file mode 100644 index 0000000..8e5d776 --- /dev/null +++ b/test/methods/setMaxHeight.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setMaxHeight from '../../src/methods/setMaxHeight'; + +describe('Setting max height', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mxh', '100'); + await setMaxHeight(myDiv); + expect(myDiv.classList.contains('mxh-100')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mxh', '100 200@sm 300@md'); + await setMaxHeight(myDiv); + ['mxh-100', 'mxh-200@sm', 'mxh-300@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setMaxWidth.test.ts b/test/methods/setMaxWidth.test.ts new file mode 100644 index 0000000..286bd24 --- /dev/null +++ b/test/methods/setMaxWidth.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setMaxWidth from '../../src/methods/setMaxWidth'; + +describe('Setting max width', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mxw', '100'); + await setMaxWidth(myDiv); + expect(myDiv.classList.contains('mxw-100')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mxw', '100 200@sm 300@md'); + await setMaxWidth(myDiv); + ['mxw-100', 'mxw-200@sm', 'mxw-300@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setMinHeight.test.ts b/test/methods/setMinHeight.test.ts new file mode 100644 index 0000000..b16e38f --- /dev/null +++ b/test/methods/setMinHeight.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setMinHeight from '../../src/methods/setMinHeight'; + +describe('Setting mix height', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mih', '100'); + await setMinHeight(myDiv); + expect(myDiv.classList.contains('mih-100')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('mih', '100 200@sm 300@md'); + await setMinHeight(myDiv); + ['mih-100', 'mih-200@sm', 'mih-300@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setMinWidth.test.ts b/test/methods/setMinWidth.test.ts new file mode 100644 index 0000000..32bf12c --- /dev/null +++ b/test/methods/setMinWidth.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setMinWidth from '../../src/methods/setMinWidth'; + +describe('Setting min width', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('miw', '100'); + await setMinWidth(myDiv); + expect(myDiv.classList.contains('miw-100')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('miw', '100 200@sm 300@md'); + await setMinWidth(myDiv); + ['miw-100', 'miw-200@sm', 'miw-300@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setPadBottom.test.ts b/test/methods/setPadBottom.test.ts new file mode 100644 index 0000000..58bdb95 --- /dev/null +++ b/test/methods/setPadBottom.test.ts @@ -0,0 +1,24 @@ +import { setConfig } from '../../src/config/main'; +import setPadBottom from '../../src/methods/setPadBottom'; + +describe('Setting padding bottom', () => { + setConfig({ + debug: false, + }); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('padb', '40'); + await setPadBottom(myDiv); + expect(myDiv.classList.contains('padb-40')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('padb', '10 20.5@sm 30@md'); + await setPadBottom(myDiv); + ['padb-10', 'padb-20_5@sm', 'padb-30@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setPadLeft.test.ts b/test/methods/setPadLeft.test.ts new file mode 100644 index 0000000..d298bf6 --- /dev/null +++ b/test/methods/setPadLeft.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setPadLeft from '../../src/methods/setPadLeft'; + +describe('Setting padding left', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('padl', '40'); + await setPadLeft(myDiv); + expect(myDiv.classList.contains('padl-40')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('padl', '10 20.5@sm 30@md'); + await setPadLeft(myDiv); + ['padl-10', 'padl-20_5@sm', 'padl-30@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setPadRight.test.ts b/test/methods/setPadRight.test.ts new file mode 100644 index 0000000..60bdd12 --- /dev/null +++ b/test/methods/setPadRight.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setPadRight from '../../src/methods/setPadRight'; + +describe('Setting padding right', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('padr', '40'); + await setPadRight(myDiv); + expect(myDiv.classList.contains('padr-40')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('padr', '10 20.5@sm 30@md'); + await setPadRight(myDiv); + ['padr-10', 'padr-20_5@sm', 'padr-30@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setPadTop.test.ts b/test/methods/setPadTop.test.ts new file mode 100644 index 0000000..7100f63 --- /dev/null +++ b/test/methods/setPadTop.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setPadTop from '../../src/methods/setPadTop'; + +describe('Setting padding top', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('padt', '40'); + await setPadTop(myDiv); + expect(myDiv.classList.contains('padt-40')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('padt', '10 20.5@sm 30@md'); + await setPadTop(myDiv); + ['padt-10', 'padt-20_5@sm', 'padt-30@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setPads.test.ts b/test/methods/setPads.test.ts new file mode 100644 index 0000000..4716c81 --- /dev/null +++ b/test/methods/setPads.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setPads from '../../src/methods/setPads'; + +describe('Setting pads', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('pad', '40-0'); + await setPads(myDiv); + expect(myDiv.classList.contains('pad-40-0')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('pad', '10-1/15 20.5-3/31@sm 30-2/31@md'); + await setPads(myDiv); + ['pad-10-1/15', 'pad-20_5-3/31@sm', 'pad-30-2/31@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/methods/setWidth.test.ts b/test/methods/setWidth.test.ts new file mode 100644 index 0000000..8f2581d --- /dev/null +++ b/test/methods/setWidth.test.ts @@ -0,0 +1,22 @@ +import { setConfig } from '../../src/config/main'; +import setWidth from '../../src/methods/setWidth'; + +describe('Setting Width', () => { + setConfig(); + + it('simple', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('wdh', '100'); + await setWidth(myDiv); + expect(myDiv.classList.contains('wdh-100')).toBeTruthy(); + }); + + it('With breakpoints', async () => { + const myDiv = document.createElement('div'); + myDiv.setAttribute('wdh', '100 200@sm 300@md'); + await setWidth(myDiv); + ['wdh-100', 'wdh-200@sm', 'wdh-300@md'].forEach(item => { + expect(myDiv.classList.contains(item)).toBeTruthy(); + }); + }); +}); diff --git a/test/utils/addClasses.test.ts b/test/utils/addClasses.test.ts new file mode 100644 index 0000000..faae5cd --- /dev/null +++ b/test/utils/addClasses.test.ts @@ -0,0 +1,16 @@ +import addClasses from '../../src/utils/addClasses'; + +describe('addClasses', () => { + it('addClasses a class already existent', async () => { + let response: boolean; + try { + const myDiv = document.createElement('div'); + myDiv.className = 'test'; + await addClasses(myDiv, 'test'); + response = true + } catch (e) { + response = false; + } + expect(response).toBeTruthy() + }) +}) diff --git a/test/utils/removeProp.test.ts b/test/utils/removeProp.test.ts new file mode 100644 index 0000000..011b5af --- /dev/null +++ b/test/utils/removeProp.test.ts @@ -0,0 +1,15 @@ +import removeAttr from '../../src/utils/removeAttr'; + +describe('removeProp', () => { + it('Removing a attribute non-existent', async () => { + let response: boolean; + try { + const myDiv = document.createElement('div'); + await removeAttr(myDiv, 'class'); + response = true + } catch (e) { + response = false; + } + expect(response).toBeTruthy() + }) +}) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ef7a669 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,20 @@ +{ + "include": ["src", "types", "@testing-library/jest-dom"], + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ESNext", "DOM"], + "moduleResolution": "Node", + "strict": true, + "sourceMap": true, + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "skipLibCheck": true + } +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..fb92391 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,12 @@ +const path = require('path') +const { defineConfig } = require('vite') + +module.exports = defineConfig({ + build: { + lib: { + entry: path.resolve(__dirname, 'src/main.ts'), + name: 'Layouter', + fileName: (format) => `layouter.${format}.js` + } + } +}) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..061df12 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2900 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.17.10": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" + integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + +"@babel/helper-simple-access@^7.17.7": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== + dependencies: + "@babel/types" "^7.18.2" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/highlight@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" + integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" + integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.16.7", "@babel/template@^7.3.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.2": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" + integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.5" + "@babel/types" "^7.18.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.1.tgz#305f8ca50b6e70413839f54c0e002b60a0f2fd7d" + integrity sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA== + dependencies: + "@jest/types" "^28.1.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^28.1.1" + jest-util "^28.1.1" + slash "^3.0.0" + +"@jest/core@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.1.tgz#086830bec6267accf9af5ca76f794858e9f9f092" + integrity sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw== + dependencies: + "@jest/console" "^28.1.1" + "@jest/reporters" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^28.0.2" + jest-config "^28.1.1" + jest-haste-map "^28.1.1" + jest-message-util "^28.1.1" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.1" + jest-resolve-dependencies "^28.1.1" + jest-runner "^28.1.1" + jest-runtime "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" + jest-watcher "^28.1.1" + micromatch "^4.0.4" + pretty-format "^28.1.1" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f" + integrity sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw== + dependencies: + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + jest-mock "^28.1.1" + +"@jest/expect-utils@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.1.tgz#d84c346025b9f6f3886d02c48a6177e2b0360587" + integrity sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw== + dependencies: + jest-get-type "^28.0.2" + +"@jest/expect@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.1.tgz#ea4fcc8504b45835029221c0dc357c622a761326" + integrity sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg== + dependencies: + expect "^28.1.1" + jest-snapshot "^28.1.1" + +"@jest/fake-timers@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1" + integrity sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA== + dependencies: + "@jest/types" "^28.1.1" + "@sinonjs/fake-timers" "^9.1.1" + "@types/node" "*" + jest-message-util "^28.1.1" + jest-mock "^28.1.1" + jest-util "^28.1.1" + +"@jest/globals@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.1.tgz#c0a7977f85e26279cc090d9adcdf82b8a34c4061" + integrity sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/expect" "^28.1.1" + "@jest/types" "^28.1.1" + +"@jest/reporters@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.1.tgz#9389f4bb3cce4d9b586f6195f83c79cd2a1c8662" + integrity sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@jridgewell/trace-mapping" "^0.3.7" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^28.1.1" + jest-util "^28.1.1" + jest-worker "^28.1.1" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + terminal-link "^2.0.0" + v8-to-istanbul "^9.0.0" + +"@jest/schemas@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613" + integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA== + dependencies: + "@sinclair/typebox" "^0.23.3" + +"@jest/source-map@^28.0.2": + version "28.0.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90" + integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.7" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.1.tgz#c6f18d1bbb01aa88925dd687872a75f8414b317a" + integrity sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ== + dependencies: + "@jest/console" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz#f594ee2331df75000afe0d1ae3237630ecec732e" + integrity sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA== + dependencies: + "@jest/test-result" "^28.1.1" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + slash "^3.0.0" + +"@jest/transform@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27" + integrity sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^28.1.1" + "@jridgewell/trace-mapping" "^0.3.7" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + jest-regex-util "^28.0.2" + jest-util "^28.1.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.1" + +"@jest/types@^28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b" + integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw== + dependencies: + "@jest/schemas" "^28.0.2" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@sinclair/typebox@^0.23.3": + version "0.23.5" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" + integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^9.1.1": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@testing-library/dom@^8.14.0": + version "8.14.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.14.0.tgz#c9830a21006d87b9ef6e1aae306cf49b0283e28e" + integrity sha512-m8FOdUo77iMTwVRCyzWcqxlEIk+GnopbrRI15a0EaLbpZSCinIVI4kSQzWhkShK83GogvEFJSsHF3Ws0z1vrqA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^5.16.4": + version "5.16.4" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd" + integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA== + dependencies: + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^5.0.0" + chalk "^3.0.0" + css "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@types/aria-query@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + +"@types/babel__core@^7.1.14": + version "7.1.19" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" + integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.17.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" + integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/graceful-fs@^4.1.3": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@*", "@types/jest@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.3.tgz#52f3f3e50ce59191ff5fbb1084896cc0cf30c9ce" + integrity sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw== + dependencies: + jest-matcher-utils "^28.0.0" + pretty-format "^28.0.0" + +"@types/jsdom@^16.2.4": + version "16.2.14" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.14.tgz#26fe9da6a8870715b154bb84cd3b2e53433d8720" + integrity sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w== + dependencies: + "@types/node" "*" + "@types/parse5" "*" + "@types/tough-cookie" "*" + +"@types/node@*": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" + integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== + +"@types/parse5@*": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + +"@types/prettier@^2.1.5": + version "2.6.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" + integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.5" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f" + integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ== + dependencies: + "@types/jest" "*" + +"@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" + integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== + dependencies: + "@types/yargs-parser" "*" + +abab@^2.0.5, abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.5.0: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" + integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +babel-jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586" + integrity sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw== + dependencies: + "@jest/transform" "^28.1.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^28.1.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11" + integrity sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4" + integrity sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g== + dependencies: + babel-plugin-jest-hoist "^28.1.1" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.20.2: + version "4.21.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" + integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== + dependencies: + caniuse-lite "^1.0.30001358" + electron-to-chromium "^1.4.164" + node-releases "^2.0.5" + update-browserslist-db "^1.0.0" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001358: + version "1.0.30001358" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz#473d35dabf5e448b463095cab7924e96ccfb8c00" + integrity sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +ci-info@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +data-urls@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decimal.js@^10.3.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== + +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.14" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz#56082f71b1dc7aac69d83c4285eef39c15d93f56" + integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg== + +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + +electron-to-chromium@^1.4.164: + version "1.4.167" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz#72424aebc85df12c5331d37b1bcfd1ae01322c55" + integrity sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q== + +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +esbuild-android-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.47.tgz#ef95b42c67bcf4268c869153fa3ad1466c4cea6b" + integrity sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g== + +esbuild-android-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.47.tgz#4ebd7ce9fb250b4695faa3ee46fd3b0754ecd9e6" + integrity sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ== + +esbuild-darwin-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.47.tgz#e0da6c244f497192f951807f003f6a423ed23188" + integrity sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA== + +esbuild-darwin-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.47.tgz#cd40fd49a672fca581ed202834239dfe540a9028" + integrity sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw== + +esbuild-freebsd-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.47.tgz#8da6a14c095b29c01fc8087a16cb7906debc2d67" + integrity sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ== + +esbuild-freebsd-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.47.tgz#ad31f9c92817ff8f33fd253af7ab5122dc1b83f6" + integrity sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ== + +esbuild-linux-32@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.47.tgz#de085e4db2e692ea30c71208ccc23fdcf5196c58" + integrity sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw== + +esbuild-linux-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.47.tgz#2a9321bbccb01f01b04cebfcfccbabeba3658ba1" + integrity sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw== + +esbuild-linux-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.47.tgz#b9da7b6fc4b0ca7a13363a0c5b7bb927e4bc535a" + integrity sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw== + +esbuild-linux-arm@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.47.tgz#56fec2a09b9561c337059d4af53625142aded853" + integrity sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA== + +esbuild-linux-mips64le@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.47.tgz#9db21561f8f22ed79ef2aedb7bbef082b46cf823" + integrity sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg== + +esbuild-linux-ppc64le@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.47.tgz#dc3a3da321222b11e96e50efafec9d2de408198b" + integrity sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w== + +esbuild-linux-riscv64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.47.tgz#9bd6dcd3dca6c0357084ecd06e1d2d4bf105335f" + integrity sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g== + +esbuild-linux-s390x@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.47.tgz#a458af939b52f2cd32fc561410d441a51f69d41f" + integrity sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw== + +esbuild-netbsd-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.47.tgz#6388e785d7e7e4420cb01348d7483ab511b16aa8" + integrity sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ== + +esbuild-openbsd-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.47.tgz#309af806db561aa886c445344d1aacab850dbdc5" + integrity sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw== + +esbuild-sunos-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.47.tgz#3f19612dcdb89ba6c65283a7ff6e16f8afbf8aaa" + integrity sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ== + +esbuild-windows-32@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.47.tgz#a92d279c8458d5dc319abcfeb30aa49e8f2e6f7f" + integrity sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ== + +esbuild-windows-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.47.tgz#2564c3fcf0c23d701edb71af8c52d3be4cec5f8a" + integrity sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ== + +esbuild-windows-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.47.tgz#86d9db1a22d83360f726ac5fba41c2f625db6878" + integrity sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ== + +esbuild@^0.14.27: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.47.tgz#0d6415f6bd8eb9e73a58f7f9ae04c5276cda0e4d" + integrity sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA== + optionalDependencies: + esbuild-android-64 "0.14.47" + esbuild-android-arm64 "0.14.47" + esbuild-darwin-64 "0.14.47" + esbuild-darwin-arm64 "0.14.47" + esbuild-freebsd-64 "0.14.47" + esbuild-freebsd-arm64 "0.14.47" + esbuild-linux-32 "0.14.47" + esbuild-linux-64 "0.14.47" + esbuild-linux-arm "0.14.47" + esbuild-linux-arm64 "0.14.47" + esbuild-linux-mips64le "0.14.47" + esbuild-linux-ppc64le "0.14.47" + esbuild-linux-riscv64 "0.14.47" + esbuild-linux-s390x "0.14.47" + esbuild-netbsd-64 "0.14.47" + esbuild-openbsd-64 "0.14.47" + esbuild-sunos-64 "0.14.47" + esbuild-windows-32 "0.14.47" + esbuild-windows-64 "0.14.47" + esbuild-windows-arm64 "0.14.47" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.1.tgz#ca6fff65f6517cf7220c2e805a49c19aea30b420" + integrity sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w== + dependencies: + "@jest/expect-utils" "^28.1.1" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-util "^28.1.1" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531" + integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA== + dependencies: + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.1.tgz#3d27da6a974d85a466dc0cdc6ddeb58daaa57bb4" + integrity sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/expect" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^28.1.1" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-runtime "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + pretty-format "^28.1.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.1.tgz#23ddfde8940e1818585ae4a568877b33b0e51cfe" + integrity sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ== + dependencies: + "@jest/core" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" + prompts "^2.0.1" + yargs "^17.3.1" + +jest-config@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.1.tgz#e90b97b984f14a6c24a221859e81b258990fce2f" + integrity sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^28.1.1" + "@jest/types" "^28.1.1" + babel-jest "^28.1.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^28.1.1" + jest-environment-node "^28.1.1" + jest-get-type "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.1" + jest-runner "^28.1.1" + jest-util "^28.1.1" + jest-validate "^28.1.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^28.1.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.1.tgz#1a3eedfd81ae79810931c63a1d0f201b9120106c" + integrity sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg== + dependencies: + chalk "^4.0.0" + diff-sequences "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.1" + +jest-docblock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" + integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== + dependencies: + detect-newline "^3.0.0" + +jest-each@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.1.tgz#ba5238dacf4f31d9fe23ddc2c44c01e7c23885c4" + integrity sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw== + dependencies: + "@jest/types" "^28.1.1" + chalk "^4.0.0" + jest-get-type "^28.0.2" + jest-util "^28.1.1" + pretty-format "^28.1.1" + +jest-environment-jsdom@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.1.tgz#8bd721915b32f9b196723292c4461a0ad548b55b" + integrity sha512-41ZvgSoPNcKG5q3LuuOcAczdBxRq9DbZkPe24okN6ZCmiZdAfFtPg3z+lOtsT1fM6OAERApKT+3m0MRDQH2zIA== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/jsdom" "^16.2.4" + "@types/node" "*" + jest-mock "^28.1.1" + jest-util "^28.1.1" + jsdom "^19.0.0" + +jest-environment-node@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.1.tgz#1c86c59003a7d319fa06ea3b1bbda6c193715c67" + integrity sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + jest-mock "^28.1.1" + jest-util "^28.1.1" + +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== + +jest-haste-map@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3" + integrity sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ== + dependencies: + "@jest/types" "^28.1.1" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^28.0.2" + jest-util "^28.1.1" + jest-worker "^28.1.1" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz#537f37afd610a4b3f4cab15e06baf60484548efb" + integrity sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw== + dependencies: + jest-get-type "^28.0.2" + pretty-format "^28.1.1" + +jest-matcher-utils@^28.0.0, jest-matcher-utils@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz#a7c4653c2b782ec96796eb3088060720f1e29304" + integrity sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw== + dependencies: + chalk "^4.0.0" + jest-diff "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.1" + +jest-message-util@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.1.tgz#60aa0b475cfc08c8a9363ed2fb9108514dd9ab89" + integrity sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.1.tgz#37903d269427fa1ef5b2447be874e1c62a39a371" + integrity sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw== + dependencies: + "@jest/types" "^28.1.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-resolve-dependencies@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz#3dffaaa56f4b41bc6b61053899d1756401763a27" + integrity sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ== + dependencies: + jest-regex-util "^28.0.2" + jest-snapshot "^28.1.1" + +jest-resolve@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.1.tgz#bc2eaf384abdcc1aaf3ba7c50d1adf01e59095e5" + integrity sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + jest-pnp-resolver "^1.2.2" + jest-util "^28.1.1" + jest-validate "^28.1.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.1.tgz#9ecdb3f27a00059986797aa6b012ba8306aa436c" + integrity sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA== + dependencies: + "@jest/console" "^28.1.1" + "@jest/environment" "^28.1.1" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.10.2" + graceful-fs "^4.2.9" + jest-docblock "^28.1.1" + jest-environment-node "^28.1.1" + jest-haste-map "^28.1.1" + jest-leak-detector "^28.1.1" + jest-message-util "^28.1.1" + jest-resolve "^28.1.1" + jest-runtime "^28.1.1" + jest-util "^28.1.1" + jest-watcher "^28.1.1" + jest-worker "^28.1.1" + source-map-support "0.5.13" + throat "^6.0.1" + +jest-runtime@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.1.tgz#569e1dc3c36c6c4c0b29516c1c49b6ad580abdaf" + integrity sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg== + dependencies: + "@jest/environment" "^28.1.1" + "@jest/fake-timers" "^28.1.1" + "@jest/globals" "^28.1.1" + "@jest/source-map" "^28.0.2" + "@jest/test-result" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.1" + jest-message-util "^28.1.1" + jest-mock "^28.1.1" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.1" + jest-snapshot "^28.1.1" + jest-util "^28.1.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.1.tgz#ab825c16c8d8b5e883bd57eee6ca8748c42ab848" + integrity sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^28.1.1" + "@jest/transform" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^28.1.1" + graceful-fs "^4.2.9" + jest-diff "^28.1.1" + jest-get-type "^28.0.2" + jest-haste-map "^28.1.1" + jest-matcher-utils "^28.1.1" + jest-message-util "^28.1.1" + jest-util "^28.1.1" + natural-compare "^1.4.0" + pretty-format "^28.1.1" + semver "^7.3.5" + +jest-util@^28.0.0, jest-util@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" + integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== + dependencies: + "@jest/types" "^28.1.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.1.tgz#59b7b339b3c85b5144bd0c06ad3600f503a4acc8" + integrity sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug== + dependencies: + "@jest/types" "^28.1.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^28.0.2" + leven "^3.1.0" + pretty-format "^28.1.1" + +jest-watcher@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.1.tgz#533597fb3bfefd52b5cd115cd916cffd237fb60c" + integrity sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug== + dependencies: + "@jest/test-result" "^28.1.1" + "@jest/types" "^28.1.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^28.1.1" + string-length "^4.0.1" + +jest-worker@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28" + integrity sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e" + integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA== + dependencies: + "@jest/core" "^28.1.1" + "@jest/types" "^28.1.1" + import-local "^3.0.2" + jest-cli "^28.1.1" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsdom@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" + integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== + dependencies: + abab "^2.0.5" + acorn "^8.5.0" + acorn-globals "^6.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.1" + decimal.js "^10.3.1" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^10.0.0" + ws "^8.2.3" + xml-name-validator "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +postcss@^8.4.13: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^28.0.0, pretty-format@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb" + integrity sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw== + dependencies: + "@jest/schemas" "^28.0.2" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.20.0, resolve@^1.22.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup@^2.59.0: + version "2.75.7" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" + integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== + optionalDependencies: + fsevents "~2.3.2" + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +semver@7.x, semver@^7.3.5: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +ts-jest@^28.0.5: + version "28.0.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-28.0.5.tgz#31776f768fba6dfc8c061d488840ed0c8eeac8b9" + integrity sha512-Sx9FyP9pCY7pUzQpy4FgRZf2bhHY3za576HMKJFs+OnQ9jS96Du5vNsDKkyedQkik+sEabbKAnCliv9BEsHZgQ== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^28.0.0" + json5 "^2.2.1" + lodash.memoize "4.x" + make-error "1.x" + semver "7.x" + yargs-parser "^21.0.1" + +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript@^4.5.4: + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + +universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +update-browserslist-db@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz#6c47cb996f34afb363e924748e2f6e4d983c6fc1" + integrity sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +v8-to-istanbul@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +vite@^2.9.9: + version "2.9.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.12.tgz#b1d636b0a8ac636afe9d83e3792d4895509a941b" + integrity sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew== + dependencies: + esbuild "^0.14.27" + postcss "^8.4.13" + resolve "^1.22.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" + integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== + dependencies: + xml-name-validator "^4.0.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" + integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@^8.2.3: + version "8.8.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769" + integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^21.0.0, yargs-parser@^21.0.1: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + +yargs@^17.3.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0"