@@ -12,14 +12,8 @@ Description:
12
12
Select a component
13
13
</div >
14
14
<div v-else >{{ `${this.activeComponent}.vue` }}</div >
15
- <prism-editor
16
- v-model =" code"
17
- :highlight =" highlighter"
18
- line-numbers
19
- class =" my-editor"
20
- readonly
21
- />
22
- </div >
15
+ <prism-editor v-model =" code" :highlight =" highlighter" line-numbers class =" my-editor" readonly />
16
+ </div >
23
17
</template >
24
18
25
19
<script >
@@ -28,6 +22,7 @@ import { mapState } from "vuex";
28
22
import { PrismEditor } from " vue-prism-editor" ;
29
23
import " vue-prism-editor/dist/prismeditor.min.css" ;
30
24
import { highlight , languages } from " prismjs/components/prism-core" ;
25
+ import styleClassMap from ' ../../store/state/styleClassMap'
31
26
import " prismjs/components/prism-clike" ;
32
27
import " prismjs/components/prism-javascript" ;
33
28
import " prismjs/themes/prism-tomorrow.css" ; // import syntax highlighting styles
@@ -44,18 +39,19 @@ export default {
44
39
PrismEditor,
45
40
},
46
41
computed: {
42
+ // add
47
43
// needs access to current component aka activeComponent
48
44
... mapState ([" componentMap" , " activeComponent" , " activeComponentObj" , " exportAsTypescript" ]),
49
45
},
50
46
methods: {
51
- snippetInvoke (){
52
- if (this .activeComponent !== ' ' ){
47
+ snippetInvoke () {
48
+ if (this .activeComponent !== ' ' ) {
53
49
this .code = this .createCodeSnippet (
54
50
this .componentMap [this .activeComponent ].componentName ,
55
51
this .componentMap [this .activeComponent ].children
56
52
)
57
- } else {
58
- this .code = ' Your component boilerplate will be displayed here.'
53
+ } else {
54
+ this .code = ' Your component boilerplate will be displayed here.'
59
55
}
60
56
},
61
57
// highlighter does not work: OverVue 6.0;
@@ -95,32 +91,16 @@ export default {
95
91
" list-ul" : [" <ul" , " </ul>" ],
96
92
input: [" <input" , " " ], // single
97
93
navbar: [" <nav" , " </nav>" ],
98
- header: [" <header" ," </header>" ],
99
- footer: [" <footer" , " </footer>" ],
94
+ header: [" <header" , " </header>" ],
95
+ footer: [" <footer" , " </footer>" ],
100
96
meta: [" <meta" , " </meta>" ],
101
- h1: [" <h1" , " </h1>" ],
102
- h2: [" <h2" , " </h2>" ],
103
- h3: [" <h3" , " </h3>" ],
104
- h4: [" <h4" , " </h4>" ],
105
- h5: [" <h5" , " </h5>" ],
106
- h6: [" <h6" , " </h6>" ],
97
+ h1: [" <h1" , " </h1>" ],
98
+ h2: [" <h2" , " </h2>" ],
99
+ h3: [" <h3" , " </h3>" ],
100
+ h4: [" <h4" , " </h4>" ],
101
+ h5: [" <h5" , " </h5>" ],
102
+ h6: [" <h6" , " </h6>" ],
107
103
};
108
- // test//
109
- // function writeClass(componentName) {
110
- // if (this.componentMap[componentName]?.classList?.length > 0) {
111
- // let commentStr = '<!--'
112
- // this.componentMap[componentName].classList.forEach((el) => {
113
- // commentStr += "\n"
114
- // commentStr += el;
115
- // })
116
- // commentStr += '\n-->\n\n'
117
- // return commentStr;
118
- // } else {
119
- // return ''
120
- // }
121
- // };
122
- // Helper function that recursively iterates through the given html element's children and their children's children.
123
- // also adds proper indentation to code snippet
124
104
function writeNested (childrenArray , indent ) {
125
105
if (! childrenArray .length ) {
126
106
return " " ;
@@ -134,13 +114,13 @@ export default {
134
114
nestedString += ` <${ child} />\n ` ;
135
115
} else {
136
116
nestedString += htmlElementMap[child .text ][0 ];
137
- if (child .class !== " " ) {
138
- nestedString += " " + " class = " + ` "${ el .class } "` ;
139
- }
140
- if (child .text === " img" || child .text === " input" || child .text === " link" ) {
141
- nestedString += " />" ;
142
- } else {nestedString += " >" ;}
143
-
117
+ if (child .class !== " " ) {
118
+ nestedString += " " + " class = " + ` "${ el .class } "` ;
119
+ }
120
+ if (child .text === " img" || child .text === " input" || child .text === " link" ) {
121
+ nestedString += " />" ;
122
+ } else { nestedString += " >" ; }
123
+
144
124
if (child .children .length ) {
145
125
nestedString += " \n " ;
146
126
nestedString += writeNested (child .children , indented);
@@ -158,17 +138,17 @@ export default {
158
138
let htmlArr = this .componentMap [componentName].htmlList ;
159
139
let outputStr = ` ` ;
160
140
// eslint-disable-next-line no-unused-vars
161
- for (let el of htmlArr) {
141
+ for (const el of htmlArr) {
162
142
if (! el .text ) {
163
143
outputStr += ` <${ el} />\n ` ;
164
144
} else {
165
145
outputStr += ` ` ;
166
- outputStr += htmlElementMap[el .text ][0 ]
167
- // if conditional to check class
168
- if (el .class !== " " ) {
169
- outputStr += " " + " class = " + ` "${ el .class } "` ;
170
- }
171
- outputStr += " >" ;
146
+ outputStr += htmlElementMap[el .text ][0 ]
147
+ // if conditional to check class
148
+ if (el .class !== " " ) {
149
+ outputStr += " " + " class = " + ` "${ el .class } "` ;
150
+ }
151
+ outputStr += " >" ;
172
152
if (el .children .length ) {
173
153
outputStr += " \n " ;
174
154
outputStr += writeNested (el .children , ` ` );
@@ -201,7 +181,7 @@ export default {
201
181
imports += ' } from "vuex";\n ' ;
202
182
}
203
183
204
- // if Typescript toggle is on, import defineComponent
184
+ // if Typescript toggle is on, import defineComponent
205
185
if (this .exportAsTypescript === " on" ) {
206
186
imports += ' import { defineComponent } from "vue";\n ' ;
207
187
}
@@ -253,6 +233,15 @@ export default {
253
233
methods += " },\n " ;
254
234
}
255
235
236
+ let htmlArray = this .componentMap [componentName].htmlList ;
237
+ let styleString = " " ;
238
+ for (const html of htmlArray) {
239
+ if (html .class === ' ' ) styleString = " " ;
240
+ if (html .class ) {
241
+ styleString += ` .${ html .class } {\n }\n `
242
+ }
243
+ }
244
+
256
245
// concat all code within script tags
257
246
// if exportAsTypescript is on, out should be <script lang="ts">
258
247
let output;
@@ -273,28 +262,28 @@ export default {
273
262
output += " });\n <\/ script>\n\n <style scoped>\n </style>"
274
263
275
264
} else {
276
- output += " }; \n <\/ script>\n\n <style scoped>\n </style> "
265
+ output += ` }; \n <\/ script>\n\n <style scoped>\n ${ styleString } </style > `
277
266
}
278
- return output;
267
+ return output
279
268
},
280
269
},
281
270
watch: {
282
271
// watches activeComponentObj for changes to make it reactive upon mutation
283
272
// // // watches componentMap for changes to make it reactive upon mutation
284
273
activeComponent: {
285
- handler () {
274
+ handler () {
286
275
this .snippetInvoke ();
287
276
},
288
277
deep: true
289
278
},
290
279
componentMap: {
291
- handler () {
280
+ handler () {
292
281
this .snippetInvoke ();
293
282
},
294
283
deep: true
295
284
},
296
285
exportAsTypescript: {
297
- handler () {
286
+ handler () {
298
287
this .snippetInvoke ();
299
288
},
300
289
}
0 commit comments