@zohodesk/react-cli 1.1.7 → 1.1.8-exp.2

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.
Files changed (131) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +180 -180
  3. package/.prettierrc +6 -6
  4. package/Changelog.md +1019 -1019
  5. package/README.md +1293 -1251
  6. package/bin/cli.js +497 -497
  7. package/docs/ComposeMinification.md +13 -13
  8. package/docs/CustomChunks.md +29 -26
  9. package/docs/DevServerPort.md +39 -39
  10. package/docs/DevStart.md +18 -18
  11. package/docs/HoverActive.md +12 -12
  12. package/docs/InstallNode.md +28 -28
  13. package/docs/MarkdownParser.md +17 -17
  14. package/docs/ReactLive.md +13 -13
  15. package/docs/SelectorWeight.md +8 -8
  16. package/docs/TODOS.md +10 -10
  17. package/docs/ValueReplacer.md +60 -60
  18. package/docs/VariableConversion.md +729 -729
  19. package/docs/patternFiltering.md +56 -56
  20. package/docs/warnings_while_install.txt +35 -35
  21. package/files/eslintrc.js +62 -62
  22. package/files/prettierrc.js +3 -3
  23. package/lib/common/splitChunks.js +65 -45
  24. package/lib/common/testPattern.js +9 -9
  25. package/lib/configs/webpack.css.umd.config.js +4 -4
  26. package/lib/configs/webpack.dev.config.js +24 -3
  27. package/lib/configs/webpack.docs.config.js +22 -3
  28. package/lib/configs/webpack.impact.config.js +4 -2
  29. package/lib/configs/webpack.prod.config.js +6 -3
  30. package/lib/deprecationLogger.js +41 -0
  31. package/lib/loaderUtils/configsAssetsLoaders.js +33 -33
  32. package/lib/loaderUtils/getCSSLoaders.js +77 -56
  33. package/lib/loaders/workerLoader.js +9 -9
  34. package/lib/pluginUtils/getDevPlugins.js +8 -7
  35. package/lib/pluginUtils/getProdPlugins.js +6 -6
  36. package/lib/plugins/CustomAttributePlugin.md +35 -35
  37. package/lib/plugins/EFCPlugin.md +6 -6
  38. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  39. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  40. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  41. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  42. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
  43. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  44. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  45. package/lib/plugins/ResourceHintsPlugin.js +30 -20
  46. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
  47. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  48. package/lib/plugins/SelectorPlugin.js +29 -29
  49. package/lib/plugins/ServiceWorkerPlugin.js +9 -9
  50. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  51. package/lib/plugins/VariableConversionCollector.js +59 -59
  52. package/lib/plugins/utils/fileHandling.js +35 -42
  53. package/lib/plugins/variableConvertorUtils.js +9 -9
  54. package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
  55. package/lib/postcss-plugins/__test__/test1Input.css +38 -38
  56. package/lib/postcss-plugins/__test__/test1Output.css +38 -38
  57. package/lib/postcss-plugins/hoverActivePlugin.js +3 -3
  58. package/lib/schemas/index.js +19 -36
  59. package/lib/sh/pre-commit.sh +34 -34
  60. package/lib/sh/reportPublish.sh +45 -45
  61. package/lib/utils/buildstats.html +148 -148
  62. package/lib/utils/cssClassNameGenerate.js +13 -13
  63. package/lib/utils/deprecationSupport.js +123 -0
  64. package/lib/utils/getOptions.js +18 -78
  65. package/lib/utils/resultSchema.json +73 -73
  66. package/npm-shrinkwrap.json +14454 -33393
  67. package/npm8.md +9 -9
  68. package/package.json +123 -123
  69. package/postpublish.js +8 -8
  70. package/result.json +1 -0
  71. package/templates/app/.eslintrc.js +140 -140
  72. package/templates/app/README.md +12 -12
  73. package/templates/app/app/index.html +24 -24
  74. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  75. package/templates/app/app/properties/i18nkeys.json +3 -3
  76. package/templates/app/docs/all.html +69 -69
  77. package/templates/app/mockapi/index.js +18 -18
  78. package/templates/app/package.json +37 -37
  79. package/templates/app/src/actions/SampleActions/index.js +37 -37
  80. package/templates/app/src/actions/index.js +65 -65
  81. package/templates/app/src/appUrls.js +19 -19
  82. package/templates/app/src/components/Alert/Alert.js +134 -134
  83. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  84. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  85. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  86. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  87. package/templates/app/src/components/Sample/SampleList.js +61 -61
  88. package/templates/app/src/components/Slider/Slider.css +41 -41
  89. package/templates/app/src/components/Slider/Slider.js +55 -55
  90. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  91. package/templates/app/src/containers/AppContainer/index.js +96 -96
  92. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  93. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  94. package/templates/app/src/containers/DevTools/index.js +10 -10
  95. package/templates/app/src/containers/Header/index.js +67 -67
  96. package/templates/app/src/containers/Header/index.module.css +43 -43
  97. package/templates/app/src/containers/Redirect/index.js +63 -63
  98. package/templates/app/src/containers/Redirector/index.js +47 -47
  99. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  100. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  101. package/templates/app/src/historyChange.js +5 -5
  102. package/templates/app/src/index.html +10 -10
  103. package/templates/app/src/index.js +24 -24
  104. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  105. package/templates/app/src/reducers/alertData.js +11 -11
  106. package/templates/app/src/reducers/index.js +6 -6
  107. package/templates/app/src/reducers/samples.js +19 -19
  108. package/templates/app/src/store/configureStore.dev.js +51 -51
  109. package/templates/app/src/store/configureStore.js +5 -5
  110. package/templates/app/src/store/configureStore.prod.js +26 -26
  111. package/templates/app/src/util/Common.js +5 -5
  112. package/templates/app/src/util/RequestAPI.js +132 -132
  113. package/templates/docs/all.html +250 -250
  114. package/templates/docs/component.html +179 -179
  115. package/templates/docs/components.html +222 -222
  116. package/templates/docs/css/b.min.css +6 -6
  117. package/templates/docs/css/component.css +42 -42
  118. package/templates/docs/css/componentTest.css +6 -6
  119. package/templates/docs/css/hopscotch.css +585 -585
  120. package/templates/docs/css/markdown.css +202 -202
  121. package/templates/docs/css/style.css +1022 -1022
  122. package/templates/docs/impactReportTemplate.html +154 -154
  123. package/templates/docs/index.html +1502 -1502
  124. package/templates/docs/js/active-line.js +72 -72
  125. package/templates/docs/js/b.min.js +7 -7
  126. package/templates/docs/js/codemirror.js +9680 -9680
  127. package/templates/docs/js/designTokens.js +334 -334
  128. package/templates/docs/js/j.min.js +4 -4
  129. package/templates/docs/js/javascript.js +874 -874
  130. package/templates/docs/js/matchbrackets.js +145 -145
  131. package/unittest/index.html +37 -0
@@ -1,222 +1,222 @@
1
- <!DOCTYPE html>
2
- <html class="isRem" dir="ltr">
3
- <head>
4
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <link rel="stylesheet" href="./css/component.css" />
7
- <link rel="stylesheet" href="./css/componentTest.css" />
8
- <link rel="stylesheet" href="/docs/css/main.css" />
9
- <link rel="stylesheet" href="./css/markdown.css">
10
- </head>
11
- <body>
12
- <div id="react" class="ssTest appContainer"></div>
13
- <div id="reactUserEdit"></div>
14
- <script src="/docs/js/vendor.js" defer="true"></script>
15
- <script src="/docs/js/main.js" defer="true"></script>
16
- <script src="/docs/js/babel.min.js"></script>
17
- <script type="text/babel">
18
- var test = 'test';
19
- var ReactDOM = Component.ReactDOM;
20
- var React = Component.React;
21
- var ReactDOMServer = Component.ReactDOMServer;
22
- class RenderComponent extends React.Component {
23
- constructor(props) {
24
- super(props);
25
- this.state = {
26
- Components: Component,
27
- isError: false,
28
- selectedComponent:
29
- location.hash != '' ? location.hash.substring(1) : null,
30
- componentList: window.componentList
31
- ? window.componentList
32
- : Component,
33
- };
34
- this.hashChange = this.hashChange.bind(this);
35
- }
36
- hashChange() {
37
- let parentFrameNode = parent.document.getElementById('loadingText');
38
- this.setState(
39
- {
40
- selectedComponent:
41
- location.hash != '' ? location.hash.substring(1) : null,
42
- },
43
- () => {
44
- if (this.error) {
45
- location.reload();
46
- parentFrameNode
47
- ? (parentFrameNode.style.display = 'block')
48
- : (parentFrameNode.style.display = 'none');
49
- this.error = false;
50
- }
51
- }
52
- );
53
- }
54
-
55
- componentDidMount() {
56
- window.addEventListener('hashchange', this.hashChange);
57
- let parentFrameNode = parent.document.getElementById('loadingText');
58
- if (parentFrameNode) parentFrameNode.style.display = 'none';
59
- }
60
-
61
- componentWillUnmount() {
62
- window.removeEventListener('hashchange', this.hashChange);
63
- }
64
-
65
- componentDidCatch() {
66
- this.error = true;
67
- this.setState({ isError: this.error });
68
- }
69
- render() {
70
- const { Components, selectedComponent, componentList } = this.state;
71
- // var CLG=[]
72
- // var complistGroup=Object.keys(componentList).map((item,i)=>{
73
- // if(Array.isArray(componentList[item].docs.testProps)){
74
- // CLG.push(item)
75
- // }
76
- // })
77
- let msg = componentList[selectedComponent]
78
- ? 'Sorry! for the inconvenience.'
79
- : 'Sorry! Request URL not found.';
80
- var ComponentClass =
81
- selectedComponent && componentList[selectedComponent];
82
- var keysSingleAr =
83
- (ComponentClass &&
84
- ComponentClass.docs &&
85
- ComponentClass.docs.testProps &&
86
- Object.keys(ComponentClass.docs.testProps)) ||
87
- [];
88
- var ErrorMessage = (
89
- <div className={'emptyState'}>
90
- <svg
91
- x='0px'
92
- y='0px'
93
- viewBox='0 0 512 512'
94
- style={{ enableBackground: 'new 0 0 512 512' }}
95
- xmlSpace='preserve'
96
- className={'smileIcon'}
97
- >
98
- <path
99
- style={{ fill: '#f00' }}
100
- d='M344.354,381.58c-1.33-1.651-33.207-40.458-88.354-40.458
101
- c-55.832,0-87.972,39.974-88.29,40.378l-31.42-24.756c1.79-2.271,44.687-55.622,119.71-55.622s117.92,53.352,119.71,55.622
102
- L344.29,381.5L344.354,381.58z M437.02,437.02C485.371,388.668,512,324.38,512,256s-26.629-132.667-74.98-181.02
103
- C388.667,26.629,324.38,0,256,0S123.333,26.629,74.98,74.98C26.629,123.333,0,187.62,0,256s26.629,132.668,74.98,181.02
104
- C123.333,485.371,187.62,512,256,512S388.667,485.371,437.02,437.02z M472,256c0,119.103-96.897,216-216,216S40,375.103,40,256
105
- S136.897,40,256,40S472,136.897,472,256z M168,212.122c17.673,0,32-14.327,32-32s-14.327-32-32-32s-32,14.327-32,32
106
- S150.327,212.122,168,212.122z M344,212.122c17.673,0,32-14.327,32-32s-14.327-32-32-32s-32,14.327-32,32
107
- S326.327,212.122,344,212.122z'
108
- />
109
- </svg>
110
- <div>{msg}</div>
111
- </div>
112
- );
113
- let renderElement = (
114
- <div className='root' id='root'>
115
- {this.state.isError || componentList[selectedComponent] ? (
116
- <ComponentClass {...ComponentClass.docs.testProps} />
117
- ) : (
118
- ErrorMessage
119
- )}
120
- </div>
121
- );
122
-
123
- return componentList._provider ? (
124
- <componentList._provider>
125
- {this.state.isError ? ErrorMessage : renderElement}
126
- </componentList._provider>
127
- ) : this.state.isError ? (
128
- ErrorMessage
129
- ) : (
130
- renderElement
131
- );
132
- }
133
- }
134
- var compList;
135
- var componentList = {};
136
- var compGroupObj = function (comp, key, compGroup) {
137
- if (
138
- comp == 'React' ||
139
- comp == 'ReactDOM' ||
140
- comp == 'renderToStaticMarkup'
141
- ) {
142
- return;
143
- }
144
- if (comp == 'default') {
145
- componentList[key] = compGroup[comp];
146
- return componentList;
147
- } else {
148
- componentList[comp] = compGroup[comp];
149
- return componentList;
150
- }
151
- };
152
- Promise.all(
153
- Object.keys(Component).map((key) => {
154
- let componentKey = Component[key];
155
- if (
156
- key == 'React' ||
157
- key == 'ReactDOM' ||
158
- key == 'renderToStaticMarkup'
159
- ) {
160
- return;
161
- }
162
- try {
163
- return (
164
- componentKey &&
165
- componentKey.then((res) => {
166
- Object.keys(res).forEach((comp) => {
167
- let compGroup = res[comp];
168
- Object.keys(compGroup).forEach((comps) => {
169
- compList = compGroupObj(comps, key, compGroup);
170
- return compList;
171
- });
172
- });
173
- })
174
- );
175
- } catch (error) {
176
- return Component;
177
- }
178
- })
179
- ).then(() => {
180
- Object.keys(componentList).length > 1
181
- ? (window.componentList = componentList)
182
- : (window.componentList = Component);
183
- ReactDOM.render(<RenderComponent />, react, () => {
184
- let attr = document.createAttribute('id');
185
- attr.value = 'check';
186
- let node = document.createElement('DIV');
187
- node.setAttributeNode(attr);
188
- document.getElementById('root').appendChild(node);
189
- });
190
- });
191
- </script>
192
-
193
- <script type="text/javascript">
194
- var err = null;
195
- var comName = '';
196
- var findErr = (window.onerror = function (e, line) {
197
- err = e;
198
- comName = window.location.hash.substr(1);
199
- });
200
- var funct = function () {
201
- return { error: err, name: comName };
202
- };
203
-
204
- let hideCursorBlink = function (documentElement) {
205
- var style = documentElement.createElement('style');
206
- style.innerText =
207
- '[contenteditable], input,textarea {color: transparent ! important; text-shadow: 0 0 0 black ! important;}';
208
- documentElement.head.append(style);
209
- };
210
-
211
- let hideAllCursorBlink = function (documentElement) {
212
- hideCursorBlink(documentElement);
213
- var frameElements = documentElement.getElementsByTagName('iframe');
214
- for (i = 0; i < frameElements.length; i++) {
215
- if (frameElements[i].contentDocument) {
216
- hideAllCursorBlink(frameElements[i].contentDocument);
217
- }
218
- }
219
- };
220
- </script>
221
- </body>
222
- </html>
1
+ <!DOCTYPE html>
2
+ <html class="isRem" dir="ltr">
3
+ <head>
4
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <link rel="stylesheet" href="./css/component.css" />
7
+ <link rel="stylesheet" href="./css/componentTest.css" />
8
+ <link rel="stylesheet" href="/docs/css/main.css" />
9
+ <link rel="stylesheet" href="./css/markdown.css">
10
+ </head>
11
+ <body>
12
+ <div id="react" class="ssTest appContainer"></div>
13
+ <div id="reactUserEdit"></div>
14
+ <script src="/docs/js/vendor.js" defer="true"></script>
15
+ <script src="/docs/js/main.js" defer="true"></script>
16
+ <script src="/docs/js/babel.min.js"></script>
17
+ <script type="text/babel">
18
+ var test = 'test';
19
+ var ReactDOM = Component.ReactDOM;
20
+ var React = Component.React;
21
+ var ReactDOMServer = Component.ReactDOMServer;
22
+ class RenderComponent extends React.Component {
23
+ constructor(props) {
24
+ super(props);
25
+ this.state = {
26
+ Components: Component,
27
+ isError: false,
28
+ selectedComponent:
29
+ location.hash != '' ? location.hash.substring(1) : null,
30
+ componentList: window.componentList
31
+ ? window.componentList
32
+ : Component,
33
+ };
34
+ this.hashChange = this.hashChange.bind(this);
35
+ }
36
+ hashChange() {
37
+ let parentFrameNode = parent.document.getElementById('loadingText');
38
+ this.setState(
39
+ {
40
+ selectedComponent:
41
+ location.hash != '' ? location.hash.substring(1) : null,
42
+ },
43
+ () => {
44
+ if (this.error) {
45
+ location.reload();
46
+ parentFrameNode
47
+ ? (parentFrameNode.style.display = 'block')
48
+ : (parentFrameNode.style.display = 'none');
49
+ this.error = false;
50
+ }
51
+ }
52
+ );
53
+ }
54
+
55
+ componentDidMount() {
56
+ window.addEventListener('hashchange', this.hashChange);
57
+ let parentFrameNode = parent.document.getElementById('loadingText');
58
+ if (parentFrameNode) parentFrameNode.style.display = 'none';
59
+ }
60
+
61
+ componentWillUnmount() {
62
+ window.removeEventListener('hashchange', this.hashChange);
63
+ }
64
+
65
+ componentDidCatch() {
66
+ this.error = true;
67
+ this.setState({ isError: this.error });
68
+ }
69
+ render() {
70
+ const { Components, selectedComponent, componentList } = this.state;
71
+ // var CLG=[]
72
+ // var complistGroup=Object.keys(componentList).map((item,i)=>{
73
+ // if(Array.isArray(componentList[item].docs.testProps)){
74
+ // CLG.push(item)
75
+ // }
76
+ // })
77
+ let msg = componentList[selectedComponent]
78
+ ? 'Sorry! for the inconvenience.'
79
+ : 'Sorry! Request URL not found.';
80
+ var ComponentClass =
81
+ selectedComponent && componentList[selectedComponent];
82
+ var keysSingleAr =
83
+ (ComponentClass &&
84
+ ComponentClass.docs &&
85
+ ComponentClass.docs.testProps &&
86
+ Object.keys(ComponentClass.docs.testProps)) ||
87
+ [];
88
+ var ErrorMessage = (
89
+ <div className={'emptyState'}>
90
+ <svg
91
+ x='0px'
92
+ y='0px'
93
+ viewBox='0 0 512 512'
94
+ style={{ enableBackground: 'new 0 0 512 512' }}
95
+ xmlSpace='preserve'
96
+ className={'smileIcon'}
97
+ >
98
+ <path
99
+ style={{ fill: '#f00' }}
100
+ d='M344.354,381.58c-1.33-1.651-33.207-40.458-88.354-40.458
101
+ c-55.832,0-87.972,39.974-88.29,40.378l-31.42-24.756c1.79-2.271,44.687-55.622,119.71-55.622s117.92,53.352,119.71,55.622
102
+ L344.29,381.5L344.354,381.58z M437.02,437.02C485.371,388.668,512,324.38,512,256s-26.629-132.667-74.98-181.02
103
+ C388.667,26.629,324.38,0,256,0S123.333,26.629,74.98,74.98C26.629,123.333,0,187.62,0,256s26.629,132.668,74.98,181.02
104
+ C123.333,485.371,187.62,512,256,512S388.667,485.371,437.02,437.02z M472,256c0,119.103-96.897,216-216,216S40,375.103,40,256
105
+ S136.897,40,256,40S472,136.897,472,256z M168,212.122c17.673,0,32-14.327,32-32s-14.327-32-32-32s-32,14.327-32,32
106
+ S150.327,212.122,168,212.122z M344,212.122c17.673,0,32-14.327,32-32s-14.327-32-32-32s-32,14.327-32,32
107
+ S326.327,212.122,344,212.122z'
108
+ />
109
+ </svg>
110
+ <div>{msg}</div>
111
+ </div>
112
+ );
113
+ let renderElement = (
114
+ <div className='root' id='root'>
115
+ {this.state.isError || componentList[selectedComponent] ? (
116
+ <ComponentClass {...ComponentClass.docs.testProps} />
117
+ ) : (
118
+ ErrorMessage
119
+ )}
120
+ </div>
121
+ );
122
+
123
+ return componentList._provider ? (
124
+ <componentList._provider>
125
+ {this.state.isError ? ErrorMessage : renderElement}
126
+ </componentList._provider>
127
+ ) : this.state.isError ? (
128
+ ErrorMessage
129
+ ) : (
130
+ renderElement
131
+ );
132
+ }
133
+ }
134
+ var compList;
135
+ var componentList = {};
136
+ var compGroupObj = function (comp, key, compGroup) {
137
+ if (
138
+ comp == 'React' ||
139
+ comp == 'ReactDOM' ||
140
+ comp == 'renderToStaticMarkup'
141
+ ) {
142
+ return;
143
+ }
144
+ if (comp == 'default') {
145
+ componentList[key] = compGroup[comp];
146
+ return componentList;
147
+ } else {
148
+ componentList[comp] = compGroup[comp];
149
+ return componentList;
150
+ }
151
+ };
152
+ Promise.all(
153
+ Object.keys(Component).map((key) => {
154
+ let componentKey = Component[key];
155
+ if (
156
+ key == 'React' ||
157
+ key == 'ReactDOM' ||
158
+ key == 'renderToStaticMarkup'
159
+ ) {
160
+ return;
161
+ }
162
+ try {
163
+ return (
164
+ componentKey &&
165
+ componentKey.then((res) => {
166
+ Object.keys(res).forEach((comp) => {
167
+ let compGroup = res[comp];
168
+ Object.keys(compGroup).forEach((comps) => {
169
+ compList = compGroupObj(comps, key, compGroup);
170
+ return compList;
171
+ });
172
+ });
173
+ })
174
+ );
175
+ } catch (error) {
176
+ return Component;
177
+ }
178
+ })
179
+ ).then(() => {
180
+ Object.keys(componentList).length > 1
181
+ ? (window.componentList = componentList)
182
+ : (window.componentList = Component);
183
+ ReactDOM.render(<RenderComponent />, react, () => {
184
+ let attr = document.createAttribute('id');
185
+ attr.value = 'check';
186
+ let node = document.createElement('DIV');
187
+ node.setAttributeNode(attr);
188
+ document.getElementById('root').appendChild(node);
189
+ });
190
+ });
191
+ </script>
192
+
193
+ <script type="text/javascript">
194
+ var err = null;
195
+ var comName = '';
196
+ var findErr = (window.onerror = function (e, line) {
197
+ err = e;
198
+ comName = window.location.hash.substr(1);
199
+ });
200
+ var funct = function () {
201
+ return { error: err, name: comName };
202
+ };
203
+
204
+ let hideCursorBlink = function (documentElement) {
205
+ var style = documentElement.createElement('style');
206
+ style.innerText =
207
+ '[contenteditable], input,textarea {color: transparent ! important; text-shadow: 0 0 0 black ! important;}';
208
+ documentElement.head.append(style);
209
+ };
210
+
211
+ let hideAllCursorBlink = function (documentElement) {
212
+ hideCursorBlink(documentElement);
213
+ var frameElements = documentElement.getElementsByTagName('iframe');
214
+ for (i = 0; i < frameElements.length; i++) {
215
+ if (frameElements[i].contentDocument) {
216
+ hideAllCursorBlink(frameElements[i].contentDocument);
217
+ }
218
+ }
219
+ };
220
+ </script>
221
+ </body>
222
+ </html>