@zohodesk/react-cli 1.1.11-exp.3 → 1.1.11-exp.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +7 -7
- package/.eslintrc.js +180 -180
- package/.prettierrc +6 -6
- package/.vscode/settings.json +24 -24
- package/Changelog.md +1019 -1019
- package/README.md +1371 -1394
- package/bin/cli.js +458 -458
- package/docs/ComposeMinification.md +13 -13
- package/docs/CustomChunks.md +29 -29
- package/docs/DevServerPort.md +39 -39
- package/docs/DevStart.md +18 -18
- package/docs/HoverActive.md +12 -12
- package/docs/InstallNode.md +28 -28
- package/docs/MarkdownParser.md +17 -17
- package/docs/ReactLive.md +13 -13
- package/docs/SelectorWeight.md +8 -8
- package/docs/TODOS.md +10 -10
- package/docs/ValueReplacer.md +60 -60
- package/docs/VariableConversion.md +729 -729
- package/docs/patternFiltering.md +56 -56
- package/docs/warnings_while_install.txt +35 -35
- package/files/eslintrc.js +62 -62
- package/files/prettierrc.js +3 -3
- package/lib/configs/webpack.css.umd.config.js +4 -4
- package/lib/loaderUtils/configsAssetsLoaders.js +33 -33
- package/lib/loaderUtils/getCSSLoaders.js +50 -50
- package/lib/loaders/workerLoader.js +9 -9
- package/lib/pluginUtils/getDevPlugins.js +5 -5
- package/lib/pluginUtils/getProdPlugins.js +7 -20
- package/lib/plugins/CustomAttributePlugin.md +35 -35
- package/lib/plugins/EFCPlugin.md +6 -6
- package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
- package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
- package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
- package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
- package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
- package/lib/plugins/I18nSplitPlugin/README.md +25 -25
- package/lib/plugins/I18nSplitPlugin/index.js +57 -57
- package/lib/plugins/ResourceHintsPlugin.js +17 -17
- package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
- package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
- package/lib/plugins/SelectorPlugin.js +29 -29
- package/lib/plugins/ServiceWorkerPlugin.js +9 -9
- package/lib/plugins/TPHashMappingPlugin.js +4 -4
- package/lib/plugins/VariableConversionCollector.js +59 -59
- package/lib/plugins/utils/fileHandling.js +4 -4
- package/lib/plugins/variableConvertorUtils.js +13 -11
- package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
- package/lib/postcss-plugins/ValueReplacer.js +7 -0
- package/lib/postcss-plugins/__test__/test1Input.css +38 -38
- package/lib/postcss-plugins/__test__/test1Output.css +38 -38
- package/lib/postcss-plugins/hoverActivePlugin.js +3 -3
- package/lib/postcss-plugins/variableModificationPlugin/index.js +65 -17
- package/lib/schemas/index.js +0 -9
- package/lib/sh/pre-commit.sh +34 -34
- package/lib/sh/reportPublish.sh +45 -45
- package/lib/utils/buildstats.html +148 -148
- package/lib/utils/cssClassNameGenerate.js +13 -13
- package/lib/utils/getOptions.js +1 -2
- package/lib/utils/resultSchema.json +73 -73
- package/npm-shrinkwrap.json +33485 -33485
- package/npm8.md +9 -9
- package/package.json +123 -123
- package/packages/client_build_tool/lib/allCommandsConfigs.js +3 -1
- package/packages/client_build_tool/lib/commands/build/commandExecutor.js +3 -7
- package/packages/client_build_tool/lib/commands/build/config.js +2 -2
- package/packages/client_build_tool/lib/commands/build/optionsProcessor.js +45 -0
- package/packages/client_build_tool/lib/commands/buildEs/commandExecutor.js +20 -4
- package/packages/client_build_tool/lib/commands/buildEs/config.js +2 -2
- package/packages/client_build_tool/lib/commands/buildLib/commandExecutor.js +20 -4
- package/packages/client_build_tool/lib/commands/buildLib/config.js +2 -2
- package/packages/client_build_tool/lib/commands/mockserver/commandExecutor.js +43 -0
- package/packages/client_build_tool/lib/commands/mockserver/config.js +12 -0
- package/packages/client_build_tool/lib/commands/start/commandExecutor.js +0 -1
- package/packages/client_build_tool/lib/commands/start/config.js +2 -2
- package/packages/client_build_tool/lib/commands/start/{optionsProcesser.js → optionsProcessor.js} +14 -10
- package/packages/client_build_tool/lib/commands/start/postProcessor.js +10 -0
- package/packages/client_build_tool/lib/commands/start/preProcessor.js +10 -0
- package/packages/client_build_tool/lib/commands/template/commandExecutor.js +32 -0
- package/packages/client_build_tool/lib/commands/template/config.js +12 -0
- package/packages/client_build_tool/lib/commands/version/commandExecutor.js +14 -0
- package/packages/client_build_tool/lib/commands/version/config.js +12 -0
- package/packages/client_build_tool/lib/commands/version/errorHander.js +10 -0
- package/packages/client_build_tool/lib/commandsRouter.js +21 -16
- package/packages/client_build_tool/lib/index.js +12 -0
- package/packages/client_build_tool/lib/{buildToolLoggers.js → logger.js} +7 -5
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/otherTestCases.test.js +234 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/passingDifferentDataTypesToSchema.test.js +103 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/passingEmptyObjects.test.js +41 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertArray.test.js +68 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertNumber.test.js +68 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertObject.test.js +141 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertString.test.js +68 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByCustomOptions/convertUndefinedAndNull.test.js +132 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertArray.test.js +71 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertNumber.test.js +71 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertObject.test.js +73 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertString.test.js +71 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/__test__/replacingSchemaValueByProcessEnv/convertUndefinedAndNull.test.js +138 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/index.js +34 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/isObject.js +10 -0
- package/packages/client_build_tool/lib/schemas/applyValuesToSchema/isValid.js +14 -0
- package/packages/client_build_tool/lib/{shared/schemas → schemas}/cliArgsToObject.js +12 -10
- package/packages/client_build_tool/lib/schemas/defaultConfigValues.js +244 -0
- package/packages/client_build_tool/lib/schemas/defaultConfigValuesOnly.js +161 -0
- package/packages/client_build_tool/lib/schemas/deprecatedOptionsHandler.js +67 -0
- package/packages/client_build_tool/lib/{shared/schemas → schemas}/getNpmVersion.js +3 -2
- package/packages/client_build_tool/lib/schemas/giveDefaultValue.js +18 -0
- package/packages/client_build_tool/lib/{shared/schemas → schemas}/npmConfigToObject.js +12 -9
- package/packages/client_build_tool/lib/{shared/schemas → schemas}/readOptions.js +11 -12
- package/packages/client_build_tool/lib/{shared/schemas/readOptionsForPackageJson.js → schemas/readOptionsForConfigFile.js} +18 -2
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Map.test.js +15 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/MathAndNumberMethod.test.js +30 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/ObjectAndModules.test.js +47 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Sets.test.js +18 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/Symbol.test.js +25 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/arrowFunction.test.js +34 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/block-scoping.test.js +18 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/classes.test.js +55 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/defaultParameterValues.test.js +18 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/extraFeatures.test.js +82 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/forOf.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/promise.test.js +22 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/spreadOperator.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/spreadParams.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/stringAndArrayMethods.test.js +67 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2015/variables.test.js +21 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2016/array-includes.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2016/exponentationOperator.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/asyncAndawait.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-entries.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-getOwnproperties.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/object-values.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2017/stringMethods.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2018/asynchronous-iterator.test.js +19 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2018/object-rest-spread.test.js +24 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2018/promise-finally.test.js +26 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2018/regularExpressions.test.js +35 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/Json.stringify.test.js +21 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/arrayMethods.test.js +31 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/object-fromEntriesMethod.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/optionalCatchBinding.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/revisedFunctionToString.test.js +17 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2019/trim-startAndend-method.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/AssignmentOperator.test.js +27 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/Dynamic-Import.test.js +19 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/NullishOperator.test.js +15 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/bigInt.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/chainOperator.test.js +17 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/export-namespace-from.test.js +12 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/promiseAllSettledMathod.test.js +17 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2020/stringMatchMethod.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2021/NumericSeparator.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2021/logicalOperatorAssignments.test.js +25 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2021/promiseAny.test.js +16 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2021/stringReplaceMethod.test.js +16 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/Array-atMethod.test.js +13 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/ObjectKeyCheck.test.js +27 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/ObjecthasOwnMethod.test.js +19 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/RegexMatchIndices.test.js +20 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/String-atMethod.test.js +15 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/error.Cause.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/keysCheckinPrivateFields.test.js +27 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/privateMethodsAndFields.test.js +23 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/staticFieldsAndMethod.test.js +54 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/topLevelAwait.test.js +11 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/es2022/weakRef.test.js +17 -0
- package/packages/client_build_tool/lib/shared/babel/__test__/utilities.js +28 -0
- package/packages/client_build_tool/lib/shared/babel/babelWebConfig.js +49 -0
- package/packages/client_build_tool/lib/shared/babel/runBabelForJSFile.js +24 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/common/decidePublicPath.js +1 -3
- package/packages/client_build_tool/lib/shared/bundler/webpack/common/modeUtils.js +31 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/common/nameTemplates.js +32 -13
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/AddManifestJson/addFilesToManifestJson.js +19 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/AddManifestJson/utilities.js +18 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin.js +15 -24
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/EFCTemplatePlugin.js +112 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ContributionGuide.md +10 -10
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nFilesEmitPlugin.js +172 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nKeysIdentifer.js +20 -80
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nRuntimeDealerPlugin.js +203 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nSplit.md +95 -95
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/LocaleChunkAssetsStore.js +73 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ModulesI18nKeysStore.js +88 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/README.md +25 -25
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/createHash.js +5 -5
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nLoadingRuntimeModule.js +9 -14
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/index.js +12 -374
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/iterateModulesInChunk.js +50 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/optionsHandler.js +1 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateFileName.js +6 -12
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateHashHelpers.js +23 -23
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/classesAndObject.test.js +56 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/conditionalOperation.test.js +154 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/function.test.js +89 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/function2.test.js +71 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/loop.test.js +112 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/minifyBooleanValues.test.js +43 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/minimizeVariableNames.test.js +45 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/promise.test.js +53 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/removeCommentsAndEmptySpace.test.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/removeUnusedStrings.test.js +14 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/terser/__test__/variableDeclaration.test.js +30 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectI18nKeys.js +11 -8
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/getChunkModules.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/propertiesUtils.js +14 -12
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/InitialHtmlPlugin.js +54 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/addFilesNamesToManifestJson.test.js +51 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/createInitialEntries.test.js +95 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/__test__/removeHashFromFileName.test.js +91 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/addFilesNamesToManifestJson.js +24 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createInitialEntries.js +17 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createManifestJson.js +35 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/findInitialFileNames.js +18 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/index.js +44 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/removeHashFromFileName.js +18 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ResourceHintsPlugin.js +165 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +4 -5
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtlCssPlugin.js +12 -17
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtrSplit.md +34 -34
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/replaceCssDirTemplate.js +13 -1
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/classHandling.js +20 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/index.js +78 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/selectorWeightPrefixAdder.js +51 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/windowsModification.js +16 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPlugin.js +79 -124
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/SourceMapPlugin/index.js +38 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/uglifyCss1.test.js +74 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/uglifycss.test.js +64 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/__test__/utilities.js +28 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/{UglifyCSSPlugin.js → UglifyCSSPlugin/index.js.js} +2 -2
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/ErrorHandler.js +62 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/index.js +361 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/emitAsset.js +14 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/getInitialAssetsFuncTemplate.js +57 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/getInitialI18nAssetsArrayStr.js +87 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/classesAndObject.test.js +56 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/conditionalOperation.test.js +154 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/function.test.js +89 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/function2.test.js +71 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/loop.test.js +112 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/minifyBooleanValues.test.js +43 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/minimizeVariableNames.test.js +45 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/promise.test.js +53 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/removeCommentsAndEmptySpace.test.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/removeUnusedStrings.test.js +14 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/terser/__test__/variableDeclaration.test.js +30 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/entryConfig.js +28 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/externals.js +13 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/getCSSLoaders.js +9 -12
- package/packages/client_build_tool/lib/shared/bundler/webpack/getSourceMapType.js +10 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/assetLoaders.js +0 -2
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/babelLoaderConfig.js +4 -10
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/checkIsPatternsMatchFilename.js +52 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configPostCssLoader.js +37 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/configsAssetsLoaders.js +44 -44
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/cssClassNameGenerate.js +19 -43
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaderConfigs/getCssLoaderOptions.js +0 -2
- package/packages/client_build_tool/lib/shared/bundler/webpack/loaders/workerLoader.js +8 -8
- package/packages/client_build_tool/lib/shared/bundler/webpack/optimizationConfig.js +9 -5
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configBundleAnalyzer.js +40 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCSSMinifierPlugin.js +24 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCdnChangePlugin.js +13 -4
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCopyPublicFolders.js +80 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configEFCTemplatePlugin.js +46 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configEnvVariables.js +5 -2
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configHtmlWebpackPlugin.js +38 -10
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configI18nSplitPlugin.js +6 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configManifestJsonPlugin.js +32 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configProgressPlugin.js +7 -2
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configResourceHintsPlugin.js +19 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configSelectorWeightPlugin.js +28 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configServiceWorkerPlugin.js +25 -3
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configSourceMapPlugin.js +20 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configVariableConversionPlugin.js +25 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/plugins.js +18 -9
- package/packages/client_build_tool/lib/shared/bundler/webpack/resolvers.js +19 -12
- package/packages/client_build_tool/lib/shared/bundler/webpack/splitChunksConfig.js +117 -1
- package/packages/client_build_tool/lib/shared/bundler/webpack/statsConfig.js +21 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/utils/index.js +26 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/utils/updateArrayWithDefault.js +18 -0
- package/packages/client_build_tool/lib/shared/bundler/webpack/webpackBuild.js +7 -4
- package/packages/client_build_tool/lib/shared/bundler/webpack/webpackConfig.js +15 -13
- package/packages/client_build_tool/lib/shared/commands-utils/doBasicRequirementCheck.js +17 -0
- package/packages/client_build_tool/lib/shared/{commands-utlis → commands-utils}/getCliPath.js +8 -7
- package/packages/client_build_tool/lib/shared/{commands-utlis → commands-utils}/index.js +3 -3
- package/packages/client_build_tool/lib/shared/commands-utils/spawnSyncIO.js +38 -0
- package/packages/client_build_tool/lib/shared/constants.js +17 -5
- package/packages/client_build_tool/lib/shared/fileUtils/copyFile.js +38 -0
- package/packages/client_build_tool/lib/shared/fileUtils/directoryIterator.js +21 -0
- package/packages/client_build_tool/lib/shared/fileUtils/watchRun.js +100 -0
- package/packages/client_build_tool/lib/shared/postcss/__test__/ignoreTestCases.test.js +80 -0
- package/packages/client_build_tool/lib/shared/postcss/__test__/postcss-rtl-all-cases.test.js +119 -0
- package/packages/client_build_tool/lib/shared/postcss/__test__/postcssRtl.spec.js +34 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/EmptyPlugin.js +21 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/constants.js +10 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/handleIgnores.js +66 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/index.js +136 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/insertBefore.js +32 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/isPreviouslyProcessed.js +20 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/replaceUtils.js +20 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/separateHoveredSelectorAndNormalSelector.js +24 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/specialCases.js +43 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/typeCheckUtils.js +52 -0
- package/packages/client_build_tool/lib/shared/{bundler/webpack/custom_postcss_loaders → postcss/custom_postcss_plugins}/RTLSplitPlugin.js +10 -10
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/SelectorReplace.js +90 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/ValueReplacer.js +57 -0
- package/packages/client_build_tool/lib/shared/postcss/custom_postcss_plugins/VariableModificationPlugin/index.js +343 -0
- package/packages/client_build_tool/lib/shared/postcss/filterPluginsAllowedForSpecficFile.js +55 -0
- package/packages/client_build_tool/lib/shared/postcss/getAllowedPostCssPlugins.js +30 -0
- package/packages/client_build_tool/lib/shared/postcss/getSpecificPostCssPlugin.js +58 -0
- package/packages/client_build_tool/lib/shared/postcss/runPostCssForCssFile.js +37 -0
- package/packages/client_build_tool/lib/shared/server/configWebpackDevMiddleware.js +4 -3
- package/packages/client_build_tool/lib/shared/server/{corsHandleing.js → corsHandling.js} +5 -12
- package/packages/client_build_tool/lib/shared/server/getIp.js +3 -3
- package/packages/client_build_tool/lib/shared/server/httpsOptions.js +25 -32
- package/packages/client_build_tool/lib/shared/server/initialHTMLHandling.js +54 -21
- package/packages/client_build_tool/lib/shared/server/mockApiHandler.js +60 -0
- package/packages/client_build_tool/lib/shared/server/mockServer.js +41 -0
- package/packages/client_build_tool/lib/shared/server/serveContextFiles.js +1 -0
- package/packages/client_build_tool/lib/shared/server/serverBywebpackDevMiddleware.js +6 -10
- package/packages/client_build_tool/lib/shared/server/startHttpServer.js +2 -2
- package/packages/client_build_tool/lib/shared/server/startHttpsServer.js +6 -2
- package/packages/client_build_tool/lib/shared/server/unwanted/websocketMockSetup.js +7 -7
- package/packages/client_build_tool/lib/shared/server/urlConcat.js +17 -10
- package/packages/client_build_tool/lib/shared/utils/requireLocalOrGlobal.js +81 -0
- package/packages/client_build_tool/lib/shared/utils/versionPrint.js +20 -0
- package/packages/client_build_tool/node_modules/history/package.json +11 -8
- package/postpublish.js +8 -8
- package/result.json +1 -0
- package/templates/app/.eslintrc.js +140 -140
- package/templates/app/README.md +12 -12
- package/templates/app/app/index.html +24 -24
- package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
- package/templates/app/app/properties/i18nkeys.json +3 -3
- package/templates/app/docs/all.html +69 -69
- package/templates/app/mockapi/index.js +18 -18
- package/templates/app/package.json +37 -37
- package/templates/app/src/actions/SampleActions/index.js +37 -37
- package/templates/app/src/actions/index.js +65 -65
- package/templates/app/src/appUrls.js +19 -19
- package/templates/app/src/components/Alert/Alert.js +134 -134
- package/templates/app/src/components/Alert/Alert.module.css +79 -79
- package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
- package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
- package/templates/app/src/components/Sample/Sample.module.css +11 -11
- package/templates/app/src/components/Sample/SampleList.js +61 -61
- package/templates/app/src/components/Slider/Slider.css +41 -41
- package/templates/app/src/components/Slider/Slider.js +55 -55
- package/templates/app/src/containers/AlertContainer/index.js +15 -15
- package/templates/app/src/containers/AppContainer/index.js +96 -96
- package/templates/app/src/containers/AppContainer/index.module.css +27 -27
- package/templates/app/src/containers/CustomMatch/index.js +65 -65
- package/templates/app/src/containers/DevTools/index.js +10 -10
- package/templates/app/src/containers/Header/index.js +67 -67
- package/templates/app/src/containers/Header/index.module.css +43 -43
- package/templates/app/src/containers/Redirect/index.js +63 -63
- package/templates/app/src/containers/Redirector/index.js +47 -47
- package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
- package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
- package/templates/app/src/historyChange.js +5 -5
- package/templates/app/src/index.html +10 -10
- package/templates/app/src/index.js +24 -24
- package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
- package/templates/app/src/reducers/alertData.js +11 -11
- package/templates/app/src/reducers/index.js +6 -6
- package/templates/app/src/reducers/samples.js +19 -19
- package/templates/app/src/store/configureStore.dev.js +51 -51
- package/templates/app/src/store/configureStore.js +5 -5
- package/templates/app/src/store/configureStore.prod.js +26 -26
- package/templates/app/src/util/Common.js +5 -5
- package/templates/app/src/util/RequestAPI.js +132 -132
- package/templates/docs/all.html +250 -250
- package/templates/docs/component.html +179 -179
- package/templates/docs/components.html +222 -222
- package/templates/docs/css/b.min.css +6 -6
- package/templates/docs/css/component.css +42 -42
- package/templates/docs/css/componentTest.css +6 -6
- package/templates/docs/css/hopscotch.css +585 -585
- package/templates/docs/css/markdown.css +202 -202
- package/templates/docs/css/style.css +988 -988
- package/templates/docs/impactReportTemplate.html +154 -154
- package/templates/docs/index.html +1664 -1664
- package/templates/docs/js/active-line.js +72 -72
- package/templates/docs/js/b.min.js +7 -7
- package/templates/docs/js/codemirror.js +9680 -9680
- package/templates/docs/js/designTokens.js +334 -334
- package/templates/docs/js/j.min.js +4 -4
- package/templates/docs/js/javascript.js +874 -874
- package/templates/docs/js/matchbrackets.js +145 -145
- package/unittest/index.html +37 -0
- package/lib/plugins/StatsPlugin.js +0 -114
- package/packages/client_build_tool/lib/commands/build/index.js +0 -35
- package/packages/client_build_tool/lib/commands/build/optionsProcesser.js +0 -40
- package/packages/client_build_tool/lib/commands/start/postProcesser.js +0 -10
- package/packages/client_build_tool/lib/commands/start/preProcesser.js +0 -10
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/EFCPlugin.js +0 -1
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nDependency.js +0 -99
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nModule.js +0 -201
- package/packages/client_build_tool/lib/shared/bundler/webpack/custom_postcss_loaders/ExcludePlugin.js +0 -58
- package/packages/client_build_tool/lib/shared/bundler/webpack/devServerConfig.js +0 -34
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configCopyThirdpartyFile.js +0 -38
- package/packages/client_build_tool/lib/shared/bundler/webpack/pluginConfigs/configUglifyCSSPlugin.js +0 -15
- package/packages/client_build_tool/lib/shared/bundler/webpack/postcssPlugins.js +0 -36
- package/packages/client_build_tool/lib/shared/bundler/webpack/webpack.dev.config.js +0 -17
- package/packages/client_build_tool/lib/shared/commands-utlis/doBasicRequiermentCheck.js +0 -16
- package/packages/client_build_tool/lib/shared/commands-utlis/spanSync.js +0 -35
- package/packages/client_build_tool/lib/shared/schemas/applyValuesToShema.js +0 -37
- package/packages/client_build_tool/lib/shared/schemas/defaultConfigValues.js +0 -119
- package/packages/client_build_tool/lib/shared/schemas/deprecatedOptionsHandler.js +0 -65
- package/packages/client_build_tool/lib/shared/schemas/getCWD.js +0 -23
- package/packages/client_build_tool/lib/shared/schemas/oldDefaultConfigValues.js +0 -480
- package/packages/client_build_tool/lib/shared/schemas/readOptionsOld.js +0 -152
- package/packages/client_build_tool/lib/shared/server/cert/Tsicsezwild-22-23.crt +0 -37
- package/packages/client_build_tool/lib/shared/server/cert/Tsicsezwild-22-23.key +0 -27
- package/packages/client_build_tool/lib/shared/server/unwanted/devServerUtlis.js +0 -1
- package/packages/client_build_tool/lib/shared/server/unwanted/webpackConfig.js +0 -32
- /package/packages/client_build_tool/lib/shared/{commands-utlis → commands-utils}/log.js +0 -0
- /package/packages/client_build_tool/lib/shared/{commands-utlis → commands-utils}/readArgsFormCommandLine.js +0 -0
- /package/packages/client_build_tool/lib/shared/{commands-utlis → commands-utils}/readOptionFormCommandLine.js +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _postcss = _interopRequireDefault(require("postcss"));
|
|
4
|
+
|
|
5
|
+
var _getSpecificPostCssPlugin = require("../getSpecificPostCssPlugin");
|
|
6
|
+
|
|
7
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
|
+
|
|
9
|
+
/* eslint-disable max-lines */
|
|
10
|
+
|
|
11
|
+
/* eslint-disable no-use-before-define */
|
|
12
|
+
// import { checkIsPatternsMatchFilename } from '../filterPluginsAllowedForSpecficFile';
|
|
13
|
+
const normalize = cssString => cssString.replace(/} /g, '}');
|
|
14
|
+
/* fix extra space added by `postcss-import` */
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
const run = (expect, input, output, opts) => // opts && console.log(opts);
|
|
18
|
+
(0, _postcss.default)([(0, _getSpecificPostCssPlugin.configPostCssRtl)(opts)]).process(input, {
|
|
19
|
+
from: undefined
|
|
20
|
+
}).then(result => {
|
|
21
|
+
expect(normalize(result.css)).toEqual(normalize(output));
|
|
22
|
+
expect(result.warnings().length).toEqual(0);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test('Should NOT add [dir] prefix to symmetric rules', () => run(expect, 'a { font-size: 1em }', 'a { font-size: 1em }'));
|
|
26
|
+
test('Should ONLY create LTR & RTL rules to asymmetric rules', () => run(expect, 'a { font-size: 1em; text-align: left }', 'a { font-size: 1em }' + '[dir=ltr] a { text-align: left }' + '[dir=rtl] a { text-align: right }'));
|
|
27
|
+
xtest('Should add [dir] prefix to symmetric rules with direction related declarations', () => run(expect, 'a { text-align: center }', '[dir] a { text-align: center }'));
|
|
28
|
+
xtest('Should add [dir] prefix to symmetric rules with direction related declarations (2)', () => run(expect, 'a { font-size: 1em; text-align: center }', 'a { font-size: 1em }[dir] a { text-align: center }'));
|
|
29
|
+
xtest('Should add [dir] prefix to symmetric rules with direction related declarations (3)', () => run(expect, 'a { text-align: left }a { text-align: center }', '[dir=ltr] a { text-align: left }' + '[dir=rtl] a { text-align: right }' + '[dir] a { text-align: center }'));
|
|
30
|
+
xtest('Should add [dir] prefix to symmetric rules with direction related declarations (4)', () => run(expect, 'a { margin: 0 10px 0 0 }a { margin-top: 20px }', '[dir=ltr] a { margin: 0 10px 0 0 }' + '[dir=rtl] a { margin: 0 0 0 10px }' + '[dir] a { margin-top: 20px }'));
|
|
31
|
+
test('Creates both LTR & RTL rules for asymmetric declarations', () => run(expect, 'a { text-align: left }', '[dir=ltr] a { text-align: left }[dir=rtl] a { text-align: right }'));
|
|
32
|
+
test('Removes original rule without symmetric declarations', () => run(expect, 'a { text-align: left }', '[dir=ltr] a { text-align: left }[dir=rtl] a { text-align: right }'));
|
|
33
|
+
xtest('Adds prefix to the html element', () => run(expect, 'html { text-align: left }', 'html[dir=ltr] { text-align: left }html[dir=rtl] { text-align: right }'));
|
|
34
|
+
xtest('Adds prefix to the html element with class', () => run(expect, 'html.foo { text-align: left }', 'html[dir=ltr].foo { text-align: left }' + 'html[dir=rtl].foo { text-align: right }'));
|
|
35
|
+
test('Adds prefix to the :root element', () => run(expect, ':root { text-align: left }', '[dir=ltr]:root { text-align: left }' + '[dir=rtl]:root { text-align: right }'));
|
|
36
|
+
xtest('Adds prefix to the :root element with class', () => run(expect, ':root.foo { text-align: left }', '[dir=ltr]:root.foo { text-align: left }' + '[dir=rtl]:root.foo { text-align: right }'));
|
|
37
|
+
xtest('Use custom `addPrefixToSelector` function', () => run(expect, 'a { text-align: left }', '[dir=ltr] > a { text-align: left }' + '[dir=rtl] > a { text-align: right }', {
|
|
38
|
+
addPrefixToSelector(selector, prefix) {
|
|
39
|
+
return `${prefix} > ${selector}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
}));
|
|
43
|
+
test('Should correctly process values containing commas', () => run(expect, // eslint-disable-next-line no-useless-concat
|
|
44
|
+
'div { background: url(\'ht' + 'tp://placecage.com/400/400\') 0 0 }', // eslint-disable-next-line no-useless-concat
|
|
45
|
+
'[dir=ltr] div { background: url(\'ht' + 'tp://placecage.com/400/400\') 0 0 }' + // eslint-disable-next-line no-useless-concat
|
|
46
|
+
'[dir=rtl] div { background: url(\'ht' + 'tp://placecage.com/400/400\') 100% 0 }'));
|
|
47
|
+
test('Should correctly process values containing !important', () => run(expect, '.test { margin-left: 0 !important; padding-left: 0 !important }', '[dir=ltr] .test { margin-left: 0 !important; padding-left: 0 !important }' + '[dir=rtl] .test { margin-right: 0 !important; padding-right: 0 !important }'));
|
|
48
|
+
test('Shouldn not create unnecessary duplications with !important', () => run(expect, '.test { display: none !important }', '.test { display: none !important }'));
|
|
49
|
+
test('Should correctly process values containing _display', () => run(expect, '.test { float: left; _display: inline }', '.test { _display: inline }' + '[dir=ltr] .test { float: left }' + '[dir=rtl] .test { float: right }'));
|
|
50
|
+
test('Should ignore declarations prefixed with /* rtl:ignore */', () => run(expect, '/* rtl:ignore */ .test { margin-left:0; padding-left:0 }', '.test { margin-left:0; padding-left:0 }'));
|
|
51
|
+
test('/* rtl:ignore */: Should leave other selectors alone', () => run(expect, '/* rtl:ignore */ .test { margin-left:0 } ' + '.rtled { margin-left:0; padding-left:0 }', '.test { margin-left:0 } ' + '[dir=ltr] .rtled { margin-left:0; padding-left:0 } ' + '[dir=rtl] .rtled { margin-right:0; padding-right:0 }'));
|
|
52
|
+
test('/* rtl:ignore */: should understand overrides', () => run(expect, '.x { left: 0 } /* rtl:ignore */.x { direction: ltr }', '[dir=ltr] .x { left: 0 }' + '[dir=rtl] .x { right: 0 }' + '.x { direction: ltr }'));
|
|
53
|
+
test('/* rtl:begin:ignore */ starts ignore mode', () => run(expect, '/* rtl:begin:ignore */' + '.foo { padding-left: 0 }' + '.bar { direction: ltr }', '.foo { padding-left: 0 }.bar { direction: ltr }'));
|
|
54
|
+
test('/* rtl:end:ignore */ stops ignore mode', () => run(expect, '/* rtl:begin:ignore */' + '.foo { padding-left: 0 }' + '/* rtl:end:ignore */' + '.bar { direction: ltr }', '.foo { padding-left: 0 }' + '[dir=ltr] .bar { direction: ltr }' + '[dir=rtl] .bar { direction: rtl }'));
|
|
55
|
+
test('/* rtl:ignore */ can be used inside /* rtl:begin:ignore */ and /* rtl:end:ignore */', () => run(expect, '/* rtl:begin:ignore */' + '.foo { padding-left: 0 }' + '/* rtl:ignore */' + '.bar { direction: ltr }' + '.baz { left: 0 }' + '/* rtl:end:ignore */', '.foo { padding-left: 0 }.bar { direction: ltr }.baz { left: 0 }'));
|
|
56
|
+
test('that it ignores normal comments', () => run(expect, '/* some comment */ .foo { padding-left: 0 }', '/* some comment */ [dir=ltr] .foo { padding-left: 0 } [dir=rtl] .foo { padding-right: 0 }'));
|
|
57
|
+
test('Value based ignore comments are honored', () => run(expect, '.foo { margin-left: 12px; padding-left: 12px /* rtl:ignore */; }', '.foo { padding-left: 12px /* rtl:ignore */; }' + '[dir=ltr] .foo { margin-left: 12px; }' + '[dir=rtl] .foo { margin-right: 12px; }'));
|
|
58
|
+
test('/*! rtl:ignore */ should consider as a valid directive', () => run(expect, '/*! rtl:ignore */ .test { margin-left:0; padding-left:0 }', '.test { margin-left:0; padding-left:0 }'));
|
|
59
|
+
test('/*! rtl:begin:ignore */ and /*! rtl:end:ignore */ should consider as a valid directive', () => run(expect, '/*! rtl:begin:ignore */' + '.foo { padding-left: 0 }' + '/*! rtl:end:ignore */' + '.bar { direction: ltr }', '.foo { padding-left: 0 }' + '[dir=ltr] .bar { direction: ltr }' + '[dir=rtl] .bar { direction: rtl }'));
|
|
60
|
+
test('Should add direction to flippable keyframes-animations', () => run(expect, '@keyframes bar { 100% { transform: rotate(360deg); } }', '@keyframes bar-ltr { 100% { transform: rotate(360deg); } }' + '@keyframes bar-rtl { 100% { transform: rotate(-360deg); } }'));
|
|
61
|
+
test('Should handle multiple keyframes-animations', () => run(expect, '.loader {animation: load6 1.7s infinite ease, spinner 1.7s infinite ease;}' + '@keyframes load6 { 100% { transform: rotate(1deg) } }' + '@keyframes spinner { 100% { transform: rotate(-1deg) } }', '[dir=ltr] .loader {animation: load6-ltr 1.7s infinite ease, spinner-ltr 1.7s infinite ease;}' + '[dir=rtl] .loader {animation: load6-rtl 1.7s infinite ease, spinner-rtl 1.7s infinite ease;}' + '@keyframes load6-ltr { 100% { transform: rotate(1deg) } }' + '@keyframes load6-rtl { 100% { transform: rotate(-1deg) } }' + '@keyframes spinner-ltr { 100% { transform: rotate(-1deg) } }' + '@keyframes spinner-rtl { 100% { transform: rotate(1deg) } }'));
|
|
62
|
+
test('Should ignore keyframes-animation prefixed with /* rtl:ignore */', () => run(expect, '/* rtl:ignore */ @keyframes bar { 100% { transform: rotate(360deg); } }', '@keyframes bar { 100% { transform: rotate(360deg); } }'));
|
|
63
|
+
test('/* rtl:begin:ignore */ starts ignore mode for both keyframes and rules', () => run(expect, '/* rtl:begin:ignore */ @keyframes bar { 100% { transform: rotate(360deg); } } .foo { left: 5px }', '@keyframes bar { 100% { transform: rotate(360deg); } } .foo { left: 5px }'));
|
|
64
|
+
test('/* rtl:end:ignore */ stops ignore mode for keyframes', () => run(expect, '/* rtl:begin:ignore */ @keyframes bar { 100% { transform: rotate(360deg); } } /* rtl:end:ignore */' + '.foo { left: 5px }', '@keyframes bar { 100% { transform: rotate(360deg); } }' + '[dir=ltr] .foo { left: 5px }' + '[dir=rtl] .foo { right: 5px }'));
|
|
65
|
+
test('Should create only LTR version', () => run(expect, 'a { font-size: 1em; text-align: left }' + '@keyframes bar { 100% { transform: rotate(360deg); } }', 'a { font-size: 1em }' + '[dir=ltr] a { text-align: left }' + '@keyframes bar-ltr { 100% { transform: rotate(360deg); } }', {
|
|
66
|
+
onlyDirection: 'ltr'
|
|
67
|
+
}));
|
|
68
|
+
test('Should create only RTL version', () => run(expect, 'a { font-size: 1em; text-align: left }' + '@keyframes bar { 100% { transform: rotate(360deg); } }', 'a { font-size: 1em }' + '[dir=rtl] a { text-align: right }' + '@keyframes bar-rtl { 100% { transform: rotate(-360deg); } }', {
|
|
69
|
+
onlyDirection: 'rtl'
|
|
70
|
+
}));
|
|
71
|
+
test('Value replacement directives are honored', () => run(expect, '.foo { font-weight: bold; flex-direction: row/* rtl:row-reverse */; }', '.foo { font-weight: bold; }[dir=ltr] .foo { flex-direction: row/* rtl:row-reverse */; }[dir=rtl] .foo { flex-direction: row-reverse; }'));
|
|
72
|
+
test('Value prepend directives are honored', () => run(expect, '.foo { font-weight: bold; font-family: "Droid Sans", "Helvetica Neue", Arial, sans-serif/*rtl:prepend:"Droid Arabic Kufi",*/; }', '.foo { font-weight: bold; }[dir=ltr] .foo { font-family: "Droid Sans", "Helvetica Neue", Arial, sans-serif/*rtl:prepend:"Droid Arabic Kufi",*/; }[dir=rtl] .foo { font-family: "Droid Arabic Kufi", "Droid Sans", "Helvetica Neue", Arial, sans-serif; }'));
|
|
73
|
+
test('Value append directives are honored', () => run(expect, '.foo { font-weight: bold; transform: rotate(45deg)/* rtl:append: scaleX(-1) */; }', '.foo { font-weight: bold; }[dir=ltr] .foo { transform: rotate(45deg)/* rtl:append: scaleX(-1) */; }[dir=rtl] .foo { transform: rotate(45deg) scaleX(-1); }'));
|
|
74
|
+
test('Value based ignore important comments are honored', () => run(expect, '.foo { margin-left: 12px; padding-left: 12px /*! rtl:ignore */; }', '.foo { padding-left: 12px /*! rtl:ignore */; }' + '[dir=ltr] .foo { margin-left: 12px; }' + '[dir=rtl] .foo { margin-right: 12px; }'));
|
|
75
|
+
test('Value replacement directives with important comments are honored', () => run(expect, '.foo { font-weight: bold; flex-direction: row/*! rtl:row-reverse */; }', '.foo { font-weight: bold; }[dir=ltr] .foo { flex-direction: row/*! rtl:row-reverse */; }[dir=rtl] .foo { flex-direction: row-reverse; }'));
|
|
76
|
+
test('Value prepend directives with important comments are honored', () => run(expect, '.foo { font-weight: bold; font-family: "Droid Sans", "Helvetica Neue", Arial, sans-serif/*!rtl:prepend:"Droid Arabic Kufi",*/; }', '.foo { font-weight: bold; }[dir=ltr] .foo { font-family: "Droid Sans", "Helvetica Neue", Arial, sans-serif/*!rtl:prepend:"Droid Arabic Kufi",*/; }[dir=rtl] .foo { font-family: "Droid Arabic Kufi", "Droid Sans", "Helvetica Neue", Arial, sans-serif; }'));
|
|
77
|
+
test('Value append directives with important comments are honored', () => run(expect, '.foo { font-weight: bold; transform: rotate(45deg)/*! rtl:append: scaleX(-1) */; }', '.foo { font-weight: bold; }[dir=ltr] .foo { transform: rotate(45deg)/*! rtl:append: scaleX(-1) */; }[dir=rtl] .foo { transform: rotate(45deg) scaleX(-1); }'));
|
|
78
|
+
test('Should keep comments', () => run(expect, '/* rtl:ignore */ a { text-align: left }', '/* rtl:ignore */ a { text-align: left }', {
|
|
79
|
+
removeComments: false
|
|
80
|
+
}));
|
|
81
|
+
test('Should respect custom prefix (attribute)', () => run(expect, 'a { text-align: left }', '[custom-dir-prefix=ltr] a { text-align: left }' + '[custom-dir-prefix=rtl] a { text-align: right }', {
|
|
82
|
+
prefix: 'custom-dir-prefix'
|
|
83
|
+
}));
|
|
84
|
+
test('Should respect custom prefix (class)', () => run(expect, 'a { text-align: left }', '.custom-dir-prefix-ltr a { text-align: left }' + '.custom-dir-prefix-rtl a { text-align: right }', {
|
|
85
|
+
prefix: 'custom-dir-prefix',
|
|
86
|
+
prefixType: 'class'
|
|
87
|
+
}));
|
|
88
|
+
test('Should not swap "left" and "right" subparts of selectors', () => run(expect, '.arrowLeft { margin-right: -3px }', '[dir=ltr] .arrowLeft { margin-right: -3px }' + '[dir=rtl] .arrowLeft { margin-left: -3px }'));
|
|
89
|
+
test('Should respect multiline values', () => run(expect, `.multiline {
|
|
90
|
+
background: rgba(0, 0, 0, 0, .5),
|
|
91
|
+
linear-gradient(to right, transparent, #000);
|
|
92
|
+
}`, `[dir=ltr] .multiline {
|
|
93
|
+
background: rgba(0, 0, 0, 0, .5),
|
|
94
|
+
linear-gradient(to right, transparent, #000);
|
|
95
|
+
}` + `[dir=rtl] .multiline {
|
|
96
|
+
background: rgba(0, 0, 0, 0, .5),
|
|
97
|
+
linear-gradient(to left, transparent, #000);
|
|
98
|
+
}`));
|
|
99
|
+
test('rtl:as: directive', () => run(expect, ':root { --padding /* rtl:as:padding */: 1px 2px 3px 4px }', '[dir=ltr]:root { --padding /* rtl:as:padding */: 1px 2px 3px 4px }' + '[dir=rtl]:root { --padding /* rtl:as:padding */: 1px 4px 3px 2px }'));
|
|
100
|
+
test('rtl aliases', () => run(expect, ':root { --padding: 1px 2px 3px 4px }', '[dir=ltr]:root { --padding: 1px 2px 3px 4px }' + '[dir=rtl]:root { --padding: 1px 4px 3px 2px }', {
|
|
101
|
+
aliases: {
|
|
102
|
+
'--padding': 'padding'
|
|
103
|
+
}
|
|
104
|
+
}));
|
|
105
|
+
test('should ignore blacklist properties', () => run(expect, '.test {padding-left: 1rem;padding: 1rem 2rem 3rem 4rem}', '.test {padding: 1rem 2rem 3rem 4rem}' + '[dir=ltr] .test {padding-left: 1rem}' + '[dir=rtl] .test {padding-right: 1rem}', {
|
|
106
|
+
blacklist: ['padding']
|
|
107
|
+
}));
|
|
108
|
+
test('should process whitelist properties only', () => run(expect, '.test {padding-left: 1rem;padding: 1rem 2rem 3rem 4rem}', '.test {padding-left: 1rem}' + '[dir=ltr] .test {padding: 1rem 2rem 3rem 4rem}' + '[dir=rtl] .test {padding: 1rem 4rem 3rem 2rem}', {
|
|
109
|
+
whitelist: ['padding']
|
|
110
|
+
}));
|
|
111
|
+
/* ignored test cases */
|
|
112
|
+
// it('should ignore ignored @import', () =>
|
|
113
|
+
// run(
|
|
114
|
+
// expect,
|
|
115
|
+
// '/* rtl:begin:ignore */' +
|
|
116
|
+
// `@import "${__dirname}/../test-import.css";` +
|
|
117
|
+
// '/* rtl:end:ignore */',
|
|
118
|
+
// '.test-import { padding-left: 1rem }'
|
|
119
|
+
// ));
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _postcss = _interopRequireDefault(require("postcss"));
|
|
4
|
+
|
|
5
|
+
var _getSpecificPostCssPlugin = require("../getSpecificPostCssPlugin");
|
|
6
|
+
|
|
7
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
|
+
|
|
9
|
+
/* eslint-disable no-use-before-define */
|
|
10
|
+
// import { checkIsPatternsMatchFilename } from '../filterPluginsAllowedForSpecficFile';
|
|
11
|
+
describe('postcss-rtl plugin basic requirement tests', () => {
|
|
12
|
+
it('is creating rtl css code for for margin-left', () => {
|
|
13
|
+
const cssInputStr = '.main{margin-left:20px}';
|
|
14
|
+
const cssOutputStr = '[dir=ltr] .main{margin-left:20px}[dir=rtl] .main{margin-right:20px}';
|
|
15
|
+
const result = runRTLPostCssPluginForCssString(cssInputStr);
|
|
16
|
+
expect(result.css).toEqual(cssOutputStr);
|
|
17
|
+
});
|
|
18
|
+
it('is creating rtl css code for for margin-right', cb => {
|
|
19
|
+
const cssInputStr = '.main{margin-right:20px}';
|
|
20
|
+
const cssOutputStr = '[dir=ltr] .main{margin-right:20px}[dir=rtl] .main{margin-left:20px}'; // console.log(postcss);
|
|
21
|
+
|
|
22
|
+
runRTLPostCssPluginForCssString(cssInputStr).then(res => {
|
|
23
|
+
expect(res.css).toEqual(cssOutputStr);
|
|
24
|
+
cb();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
function runRTLPostCssPluginForCssString(cssInputStr) {
|
|
30
|
+
return (0, _postcss.default)([(0, _getSpecificPostCssPlugin.configPostCssRtl)()]).process(cssInputStr, {
|
|
31
|
+
from: '',
|
|
32
|
+
to: ''
|
|
33
|
+
});
|
|
34
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
// eslint-disable-next-line no-unused-vars
|
|
9
|
+
const EmptyPlugin = (opts = {}) => ({
|
|
10
|
+
postcssPlugin: 'postcss-empty',
|
|
11
|
+
|
|
12
|
+
// eslint-disable-next-line no-unused-vars
|
|
13
|
+
Once(root, {
|
|
14
|
+
result
|
|
15
|
+
}) {}
|
|
16
|
+
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
EmptyPlugin.postcss = true;
|
|
20
|
+
var _default = EmptyPlugin;
|
|
21
|
+
exports.default = _default;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.handleIgnores = handleIgnores;
|
|
7
|
+
|
|
8
|
+
var _typeCheckUtils = require("./typeCheckUtils");
|
|
9
|
+
|
|
10
|
+
const hoverIgnoreQuery = 'Hover:ignore';
|
|
11
|
+
const activeIgnoreQuery = 'Active:ignore';
|
|
12
|
+
const hoverActiveIgnoreQuery = 'HoverActive:ignore';
|
|
13
|
+
|
|
14
|
+
function handleIgnore() {
|
|
15
|
+
let isIgnored = false;
|
|
16
|
+
return {
|
|
17
|
+
isIgnored: () => isIgnored,
|
|
18
|
+
update: isGoingTobeIgnored => {
|
|
19
|
+
isIgnored = isGoingTobeIgnored;
|
|
20
|
+
},
|
|
21
|
+
reset: () => {
|
|
22
|
+
isIgnored = false;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
} // eslint-disable-next-line no-unused-vars
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
function handleIgnores(options) {
|
|
29
|
+
const hoverHandler = handleIgnore();
|
|
30
|
+
const activeHandler = handleIgnore();
|
|
31
|
+
|
|
32
|
+
function generateReturnValue() {
|
|
33
|
+
return {
|
|
34
|
+
hoverIgnored: hoverHandler.isIgnored(),
|
|
35
|
+
activeIgnored: activeHandler.isIgnored()
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const ignoreCommentMap = {
|
|
40
|
+
[hoverIgnoreQuery]: () => {
|
|
41
|
+
hoverHandler.update(true);
|
|
42
|
+
},
|
|
43
|
+
[activeIgnoreQuery]: () => {
|
|
44
|
+
activeHandler.update(true);
|
|
45
|
+
},
|
|
46
|
+
[hoverActiveIgnoreQuery]: () => {
|
|
47
|
+
hoverHandler.update(true);
|
|
48
|
+
activeHandler.update(true);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
return node => {
|
|
52
|
+
if ((0, _typeCheckUtils.isComment)(node)) {
|
|
53
|
+
const commentText = node.text.trim();
|
|
54
|
+
ignoreCommentMap[commentText] && ignoreCommentMap[commentText](); // NOTE: we return here because this is just comment we can skip it.
|
|
55
|
+
|
|
56
|
+
return generateReturnValue();
|
|
57
|
+
} // NOTE: we get the here. But return after resetting for next. Because these comment Only works for once.
|
|
58
|
+
// Even If we support multiple line Skip we must do it in reset or separate method.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
const returnValue = generateReturnValue();
|
|
62
|
+
hoverHandler.reset();
|
|
63
|
+
activeHandler.reset();
|
|
64
|
+
return returnValue;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _handleIgnores = require("./handleIgnores");
|
|
9
|
+
|
|
10
|
+
var _typeCheckUtils = require("./typeCheckUtils");
|
|
11
|
+
|
|
12
|
+
var _isPreviouslyProcessed = require("./isPreviouslyProcessed");
|
|
13
|
+
|
|
14
|
+
var _insertBefore = require("./insertBefore");
|
|
15
|
+
|
|
16
|
+
var _separateHoveredSelectorAndNormalSelector = require("./separateHoveredSelectorAndNormalSelector");
|
|
17
|
+
|
|
18
|
+
var _replaceUtils = require("./replaceUtils");
|
|
19
|
+
|
|
20
|
+
var _specialCases = require("./specialCases");
|
|
21
|
+
|
|
22
|
+
var _default = config => {
|
|
23
|
+
const hoverMedQuerySuffix = config.hover;
|
|
24
|
+
const activeMedQuerySuffix = config.active;
|
|
25
|
+
return {
|
|
26
|
+
postcssPlugin: 'postcss-mobile-hover',
|
|
27
|
+
Once: function Once(root, params) {
|
|
28
|
+
const getIgnoreStatus = (0, _handleIgnores.handleIgnores)(); // eslint-disable-next-line no-use-before-define
|
|
29
|
+
|
|
30
|
+
const mediaRuleCreatorMap = getMediaRuleMap(params, hoverMedQuerySuffix, activeMedQuerySuffix);
|
|
31
|
+
root.walk(node => {
|
|
32
|
+
const ignoreStatus = getIgnoreStatus(node);
|
|
33
|
+
|
|
34
|
+
if ((0, _typeCheckUtils.isRule)(node) === false) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if ((0, _typeCheckUtils.isAtRule)(node.parent) && !(0, _typeCheckUtils.isMediaQuery)(node.parent)) {
|
|
39
|
+
return;
|
|
40
|
+
} // NOTE: after previous return we expect rule that are only normal rule or rules that inside media query
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
const rule = node;
|
|
44
|
+
|
|
45
|
+
if ((0, _isPreviouslyProcessed.isPreviouslyProcessed)(rule, {
|
|
46
|
+
hoverMedQuerySuffix,
|
|
47
|
+
activeMedQuerySuffix
|
|
48
|
+
})) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const {
|
|
53
|
+
hoveredSelectors,
|
|
54
|
+
normalSelectors
|
|
55
|
+
} = (0, _separateHoveredSelectorAndNormalSelector.separateHoveredSelectorAndNormalSelector)(rule.selector); // NOTE: this if will remove rule if the rule has no normal selectors. and return So be aware.
|
|
56
|
+
|
|
57
|
+
if (hoveredSelectors.length === 0) {
|
|
58
|
+
// || isRuleHasHover(rule) === false
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
let newHoverMediaQuery = null;
|
|
63
|
+
let newActiveMediaQuery = null;
|
|
64
|
+
let prefix = '';
|
|
65
|
+
|
|
66
|
+
if ((0, _typeCheckUtils.isAtRule)(rule.parent)) {
|
|
67
|
+
prefix = rule.parent.params;
|
|
68
|
+
} else {
|
|
69
|
+
// NOTE: for usual rules we don't need prefix, So use prefix as empty string
|
|
70
|
+
prefix = '';
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (!ignoreStatus.hoverIgnored) {
|
|
74
|
+
newHoverMediaQuery = mediaRuleCreatorMap.hoverRule({
|
|
75
|
+
rule,
|
|
76
|
+
hoveredSelectors,
|
|
77
|
+
prefix
|
|
78
|
+
}, params);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (!ignoreStatus.activeIgnored) {
|
|
82
|
+
newActiveMediaQuery = mediaRuleCreatorMap.activeRule({
|
|
83
|
+
rule,
|
|
84
|
+
hoveredSelectors,
|
|
85
|
+
prefix
|
|
86
|
+
}, params);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
(0, _insertBefore.insertNearBy)(rule, newHoverMediaQuery);
|
|
90
|
+
(0, _insertBefore.insertNearBy)(rule, newActiveMediaQuery);
|
|
91
|
+
(0, _specialCases.hackForComposes)(rule, hoveredSelectors, params);
|
|
92
|
+
(0, _specialCases.removeRuleIfNoNormalSelectors)(normalSelectors, rule);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
exports.default = _default;
|
|
99
|
+
|
|
100
|
+
function getMediaRuleMap(params, hoverMedQuerySuffix, activeMedQuerySuffix) {
|
|
101
|
+
const {
|
|
102
|
+
AtRule
|
|
103
|
+
} = params;
|
|
104
|
+
return {
|
|
105
|
+
hoverRule({
|
|
106
|
+
rule,
|
|
107
|
+
hoveredSelectors,
|
|
108
|
+
prefix
|
|
109
|
+
}) {
|
|
110
|
+
const newMediaQuery = new AtRule({
|
|
111
|
+
name: 'media',
|
|
112
|
+
params: (0, _isPreviouslyProcessed.concatMediaParams)(prefix, hoverMedQuerySuffix)
|
|
113
|
+
});
|
|
114
|
+
const clonedRule = rule.clone();
|
|
115
|
+
clonedRule.selector = hoveredSelectors.join(',');
|
|
116
|
+
newMediaQuery.append(clonedRule);
|
|
117
|
+
return newMediaQuery;
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
activeRule({
|
|
121
|
+
rule,
|
|
122
|
+
hoveredSelectors,
|
|
123
|
+
prefix
|
|
124
|
+
}) {
|
|
125
|
+
const newMediaQuery = new AtRule({
|
|
126
|
+
name: 'media',
|
|
127
|
+
params: (0, _isPreviouslyProcessed.concatMediaParams)(prefix, activeMedQuerySuffix)
|
|
128
|
+
});
|
|
129
|
+
const clonedRule = rule.clone();
|
|
130
|
+
clonedRule.selector = hoveredSelectors.map(_replaceUtils.replaceHoverToActiveInSelector).join(',');
|
|
131
|
+
newMediaQuery.append(clonedRule);
|
|
132
|
+
return newMediaQuery;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
};
|
|
136
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.insertBefore = insertBefore;
|
|
7
|
+
exports.insertNearBy = insertNearBy;
|
|
8
|
+
|
|
9
|
+
var _typeCheckUtils = require("./typeCheckUtils");
|
|
10
|
+
|
|
11
|
+
function insertBefore(node, newNode) {
|
|
12
|
+
newNode && node.parent.insertBefore(node, newNode);
|
|
13
|
+
return newNode;
|
|
14
|
+
} // function insertAfter(node, newNode) {
|
|
15
|
+
// newNode && node.parent.insertAfter(node, newNode);
|
|
16
|
+
// return newNode;
|
|
17
|
+
// }
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
function insertNearBy(node, newNode) {
|
|
21
|
+
if (!newNode) {
|
|
22
|
+
return newNode;
|
|
23
|
+
} // we use insertBefore Because we wouldn't end up recursive (repeated) check and creation
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
if ((0, _typeCheckUtils.isParentAtRule)(node) && (0, _typeCheckUtils.isAtRule)(newNode)) {
|
|
27
|
+
return insertNearBy(node.parent, newNode);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return insertBefore(node, newNode); // return insertAfter(node, newNode);
|
|
31
|
+
// return newNode;
|
|
32
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.concatMediaParams = concatMediaParams;
|
|
7
|
+
exports.isPreviouslyProcessed = isPreviouslyProcessed;
|
|
8
|
+
|
|
9
|
+
var _typeCheckUtils = require("./typeCheckUtils");
|
|
10
|
+
|
|
11
|
+
function concatMediaParams(prefix, suffix) {
|
|
12
|
+
return prefix ? `${prefix} and ${suffix}` : `${suffix}`;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function isPreviouslyProcessed(rule, {
|
|
16
|
+
hoverMedQuerySuffix,
|
|
17
|
+
activeMedQuerySuffix
|
|
18
|
+
}) {
|
|
19
|
+
return (0, _typeCheckUtils.isParentAtRule)(rule) && ((0, _typeCheckUtils.isParentAtRuleContainsParam)(rule, hoverMedQuerySuffix) || (0, _typeCheckUtils.isParentAtRuleContainsParam)(rule, activeMedQuerySuffix));
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.replaceHoverToActiveInSelector = exports.removeHoverFromSelector = void 0;
|
|
7
|
+
|
|
8
|
+
var _constants = require("./constants");
|
|
9
|
+
|
|
10
|
+
// function isRuleHasHover(rule) {
|
|
11
|
+
// return isSelectorHasHover(rule.selector);
|
|
12
|
+
// }
|
|
13
|
+
function generateReplacer(baseStr, replaceStr) {
|
|
14
|
+
return (inputStr = '') => inputStr.replaceAll(baseStr, replaceStr);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const removeHoverFromSelector = generateReplacer(_constants.HOVER_NOTATION, '');
|
|
18
|
+
exports.removeHoverFromSelector = removeHoverFromSelector;
|
|
19
|
+
const replaceHoverToActiveInSelector = generateReplacer(_constants.HOVER_NOTATION, ':active');
|
|
20
|
+
exports.replaceHoverToActiveInSelector = replaceHoverToActiveInSelector;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.separateHoveredSelectorAndNormalSelector = separateHoveredSelectorAndNormalSelector;
|
|
7
|
+
|
|
8
|
+
var _typeCheckUtils = require("./typeCheckUtils");
|
|
9
|
+
|
|
10
|
+
function separateHoveredSelectorAndNormalSelector(fullselector = '') {
|
|
11
|
+
const hoveredSelectors = [];
|
|
12
|
+
const normalSelectors = [];
|
|
13
|
+
fullselector.split(/\s*,\s*/).forEach(selector => {
|
|
14
|
+
if ((0, _typeCheckUtils.isSelectorHasHover)(selector)) {
|
|
15
|
+
hoveredSelectors.push(selector);
|
|
16
|
+
} else {
|
|
17
|
+
normalSelectors.push(selector);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
hoveredSelectors,
|
|
22
|
+
normalSelectors
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.hackForComposes = hackForComposes;
|
|
7
|
+
exports.removeRuleIfNoNormalSelectors = removeRuleIfNoNormalSelectors;
|
|
8
|
+
|
|
9
|
+
var _insertBefore = require("./insertBefore");
|
|
10
|
+
|
|
11
|
+
var _replaceUtils = require("./replaceUtils");
|
|
12
|
+
|
|
13
|
+
function hackForComposes(rule, hoveredSelectors, params) {
|
|
14
|
+
const {
|
|
15
|
+
Rule
|
|
16
|
+
} = params;
|
|
17
|
+
|
|
18
|
+
if (hoveredSelectors.length === 0) {
|
|
19
|
+
return;
|
|
20
|
+
} // NOTE: we create Empty Rule with hovered selectors that :hover removed from hover selector
|
|
21
|
+
// Reason: when composes looking for selector it most be at least empty rule other wise composes will throw error.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
(0, _insertBefore.insertBefore)(rule, new Rule({
|
|
25
|
+
selector: hoveredSelectors.map(_replaceUtils.removeHoverFromSelector).join(',')
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* NOTE: this function will remove rule if the rule has no normal selectors.
|
|
30
|
+
* @param {Rule} rule
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
function removeRuleIfNoNormalSelectors(normalSelectors, rule) {
|
|
36
|
+
if (normalSelectors.length) {
|
|
37
|
+
// NOTE: removed hovered selectors
|
|
38
|
+
// eslint-disable-next-line no-param-reassign
|
|
39
|
+
rule.selector = normalSelectors.join(',');
|
|
40
|
+
} else {
|
|
41
|
+
rule.remove();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isAtRule = isAtRule;
|
|
7
|
+
exports.isAtRuleContainsParam = isAtRuleContainsParam;
|
|
8
|
+
exports.isComment = isComment;
|
|
9
|
+
exports.isMediaQuery = isMediaQuery;
|
|
10
|
+
exports.isParentAtRule = isParentAtRule;
|
|
11
|
+
exports.isParentAtRuleContainsParam = isParentAtRuleContainsParam;
|
|
12
|
+
exports.isRule = isRule;
|
|
13
|
+
exports.isRuleNotInsideAtRule = isRuleNotInsideAtRule;
|
|
14
|
+
exports.isSelectorHasHover = isSelectorHasHover;
|
|
15
|
+
|
|
16
|
+
var _constants = require("./constants");
|
|
17
|
+
|
|
18
|
+
function isComment(node) {
|
|
19
|
+
return node.type === 'comment';
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function isRule(node) {
|
|
23
|
+
return node.type === 'rule';
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function isMediaQuery(node) {
|
|
27
|
+
return node.name === 'media';
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function isAtRule(node) {
|
|
31
|
+
return node.type === 'atrule';
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function isAtRuleContainsParam(atRule, content) {
|
|
35
|
+
return atRule.params.includes(content);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function isParentAtRuleContainsParam(rule, content) {
|
|
39
|
+
return isAtRuleContainsParam(rule.parent, content);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function isParentAtRule(rule) {
|
|
43
|
+
return isAtRule(rule.parent);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function isRuleNotInsideAtRule(node) {
|
|
47
|
+
return isRule(node) && node && !isAtRule(node.parent);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function isSelectorHasHover(selector) {
|
|
51
|
+
return selector.indexOf(_constants.HOVER_NOTATION) !== -1;
|
|
52
|
+
}
|
|
@@ -39,11 +39,11 @@ function selectorMinifySameDir(selector, direction) {
|
|
|
39
39
|
const regex = getRegex(direction);
|
|
40
40
|
return selector.replace(regex, '').trim();
|
|
41
41
|
}
|
|
42
|
-
/**
|
|
43
|
-
* this funtion will remove given rule,
|
|
44
|
-
* if given selector and it's previous sibiling rule selector are same
|
|
45
|
-
* current rule properties will move to previous sibiling rule.
|
|
46
|
-
* @param {Rule} rule current rule
|
|
42
|
+
/**
|
|
43
|
+
* this funtion will remove given rule,
|
|
44
|
+
* if given selector and it's previous sibiling rule selector are same
|
|
45
|
+
* current rule properties will move to previous sibiling rule.
|
|
46
|
+
* @param {Rule} rule current rule
|
|
47
47
|
*/
|
|
48
48
|
|
|
49
49
|
|
|
@@ -58,11 +58,11 @@ function mergeIfSameSelector(rule) {
|
|
|
58
58
|
rule.remove();
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
/**
|
|
62
|
-
* this funtion will remove given rule,
|
|
63
|
-
* if given selector and it's previous sibiling rule selector are same
|
|
64
|
-
* current rule properties will move to previous sibiling rule.
|
|
65
|
-
* @param {Rule} rule current rule
|
|
61
|
+
/**
|
|
62
|
+
* this funtion will remove given rule,
|
|
63
|
+
* if given selector and it's previous sibiling rule selector are same
|
|
64
|
+
* current rule properties will move to previous sibiling rule.
|
|
65
|
+
* @param {Rule} rule current rule
|
|
66
66
|
*/
|
|
67
67
|
|
|
68
68
|
|