Move some assets to the 'tagRenderings'-directory as they are only needed there, add 'smoking' question, add 'nightclubs' to 'pub_cafe'-layer
|  | @ -99,7 +99,7 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> { | |||
|                 } | ||||
|                 if (image.match(/[a-z]*/)) { | ||||
| 
 | ||||
|                     if(Svg.All[image + ".svg"] !== undefined){ | ||||
|                     if (Svg.All[image + ".svg"] !== undefined) { | ||||
|                         // This is a builtin img, e.g. 'checkmark' or 'crosshair'
 | ||||
|                         continue;// =>
 | ||||
|                     } | ||||
|  | @ -124,12 +124,12 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> { | |||
| 
 | ||||
|                         const w = parseInt(width); | ||||
|                         const h = parseInt(height) | ||||
|                         if(w < 370 || h < 370){ | ||||
|                             const e : string = [ | ||||
|                         if (w < 370 || h < 370) { | ||||
|                             const e: string = [ | ||||
|                                 `the icon for theme ${json.id} is too small. Please rescale the icon at ${json.icon}`, | ||||
|                                 `Even though an SVG is 'infinitely scaleable', the icon should be dimensioned bigger. One of the build steps of the theme does convert the image to a PNG (to serve as PWA-icon) and having a small dimension will cause blurry images.`, | ||||
|                                 ` Width = ${width} height = ${height}; we recommend a size of at least 500px * 500px and to use a square aspect ratio.`, | ||||
|                                 ].join("\n"); | ||||
|                             ].join("\n"); | ||||
|                             (json.hideFromOverview ? warnings : errors).push(e) | ||||
|                         } | ||||
| 
 | ||||
|  | @ -186,7 +186,7 @@ export class ValidateThemeAndLayers extends Fuse<LayoutConfigJson> { | |||
|     constructor(knownImagePaths: Set<string>, path: string, isBuiltin: boolean, sharedTagRenderings: Map<string, any>) { | ||||
|         super("Validates a theme and the contained layers", | ||||
|             new ValidateTheme(knownImagePaths, path, isBuiltin, sharedTagRenderings), | ||||
|             new On("layers", new Each(new ValidateLayer(undefined, false))) | ||||
|             new On("layers", new Each(new ValidateLayer(undefined, false, knownImagePaths))) | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|  | @ -222,22 +222,22 @@ class OverrideShadowingCheck extends DesugaringStep<LayoutConfigJson> { | |||
| 
 | ||||
| } | ||||
| 
 | ||||
| class MiscThemeChecks extends DesugaringStep<LayoutConfigJson>{ | ||||
| class MiscThemeChecks extends DesugaringStep<LayoutConfigJson> { | ||||
|     constructor() { | ||||
|         super("Miscelleanous checks on the theme", [],"MiscThemesChecks"); | ||||
|         super("Miscelleanous checks on the theme", [], "MiscThemesChecks"); | ||||
|     } | ||||
| 
 | ||||
|     convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors?: string[]; warnings?: string[]; information?: string[] } { | ||||
|         const warnings = [] | ||||
|         const errors = [] | ||||
|         if(json.id !== "personal" && (json.layers === undefined || json.layers.length === 0)){ | ||||
|             errors.push("The theme "+json.id+" has no 'layers' defined ("+context+")") | ||||
|         if (json.id !== "personal" && (json.layers === undefined || json.layers.length === 0)) { | ||||
|             errors.push("The theme " + json.id + " has no 'layers' defined (" + context + ")") | ||||
|         } | ||||
|         if(json.socialImage === ""){ | ||||
|             warnings.push("Social image for theme "+json.id+" is the emtpy string") | ||||
|         if (json.socialImage === "") { | ||||
|             warnings.push("Social image for theme " + json.id + " is the emtpy string") | ||||
|         } | ||||
|         return { | ||||
|             result :json, | ||||
|             result: json, | ||||
|             warnings, | ||||
|             errors | ||||
|         }; | ||||
|  | @ -258,6 +258,7 @@ export class PrevalidateTheme extends Fuse<LayoutConfigJson> { | |||
| 
 | ||||
| export class DetectShadowedMappings extends DesugaringStep<QuestionableTagRenderingConfigJson> { | ||||
|     private readonly _calculatedTagNames: string[]; | ||||
| 
 | ||||
|     constructor(layerConfig?: LayerConfigJson) { | ||||
|         super("Checks that the mappings don't shadow each other", [], "DetectShadowedMappings"); | ||||
|         this._calculatedTagNames = DetectShadowedMappings.extractCalculatedTagNames(layerConfig); | ||||
|  | @ -268,9 +269,9 @@ export class DetectShadowedMappings extends DesugaringStep<QuestionableTagRender | |||
|      * DetectShadowedMappings.extractCalculatedTagNames({calculatedTags: ["_abc:=js()"]}) // => ["_abc"]
 | ||||
|      * DetectShadowedMappings.extractCalculatedTagNames({calculatedTags: ["_abc=js()"]}) // => ["_abc"]
 | ||||
|      */ | ||||
|     private static extractCalculatedTagNames(layerConfig?: LayerConfigJson | {calculatedTags : string []}){ | ||||
|     private static extractCalculatedTagNames(layerConfig?: LayerConfigJson | { calculatedTags: string [] }) { | ||||
|         return layerConfig?.calculatedTags?.map(ct => { | ||||
|             if(ct.indexOf(':=') >= 0){ | ||||
|             if (ct.indexOf(':=') >= 0) { | ||||
|                 return ct.split(':=')[0] | ||||
|             } | ||||
|             return ct.split("=")[0] | ||||
|  | @ -319,20 +320,20 @@ export class DetectShadowedMappings extends DesugaringStep<QuestionableTagRender | |||
|         } | ||||
|         const defaultProperties = {} | ||||
|         for (const calculatedTagName of this._calculatedTagNames) { | ||||
|             defaultProperties[calculatedTagName] = "some_calculated_tag_value_for_"+calculatedTagName | ||||
|             defaultProperties[calculatedTagName] = "some_calculated_tag_value_for_" + calculatedTagName | ||||
|         } | ||||
|         const parsedConditions = json.mappings.map((m,i) => { | ||||
|         const parsedConditions = json.mappings.map((m, i) => { | ||||
|             const ctx = `${context}.mappings[${i}]` | ||||
|             const ifTags = TagUtils.Tag(m.if, ctx); | ||||
|             if(m.hideInAnswer !== undefined && m.hideInAnswer !== false && m.hideInAnswer !== true){ | ||||
|                 let conditionTags = TagUtils.Tag( m.hideInAnswer) | ||||
|             if (m.hideInAnswer !== undefined && m.hideInAnswer !== false && m.hideInAnswer !== true) { | ||||
|                 let conditionTags = TagUtils.Tag(m.hideInAnswer) | ||||
|                 // Merge the condition too!
 | ||||
|                 return new And([conditionTags, ifTags]) | ||||
|             } | ||||
|             return ifTags | ||||
|         }) | ||||
|         for (let i = 0; i < json.mappings.length; i++) { | ||||
|             if(!parsedConditions[i].isUsableAsAnswer()){ | ||||
|             if (!parsedConditions[i].isUsableAsAnswer()) { | ||||
|                 // There is no straightforward way to convert this mapping.if into a properties-object, so we simply skip this one
 | ||||
|                 // Yes, it might be shadowed, but running this check is to difficult right now
 | ||||
|                 continue | ||||
|  | @ -372,8 +373,10 @@ export class DetectShadowedMappings extends DesugaringStep<QuestionableTagRender | |||
| } | ||||
| 
 | ||||
| export class DetectMappingsWithImages extends DesugaringStep<TagRenderingConfigJson> { | ||||
|     constructor() { | ||||
|     private knownImagePaths: Set<string>; | ||||
|     constructor(knownImagePaths: Set<string>) { | ||||
|         super("Checks that 'then'clauses in mappings don't have images, but use 'icon' instead", [], "DetectMappingsWithImages"); | ||||
|         this.knownImagePaths = knownImagePaths; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -407,21 +410,29 @@ export class DetectMappingsWithImages extends DesugaringStep<TagRenderingConfigJ | |||
|         for (let i = 0; i < json.mappings.length; i++) { | ||||
| 
 | ||||
|             const mapping = json.mappings[i] | ||||
|             const ignore = mapping["#"]?.indexOf(ignoreToken) >=0 | ||||
|             const ignore = mapping["#"]?.indexOf(ignoreToken) >= 0 | ||||
|             const images = Utils.Dedup(Translations.T(mapping.then)?.ExtractImages() ?? []) | ||||
|             const ctx = `${context}.mappings[${i}]` | ||||
|             if (images.length > 0) { | ||||
|                 if(!ignore){ | ||||
|                 if (!ignore) { | ||||
|                     errors.push(`${ctx}: A mapping has an image in the 'then'-clause. Remove the image there and use \`"icon": <your-image>\` instead. The images found are ${images.join(", ")}. (This check can be turned of by adding "#": "${ignoreToken}" in the mapping, but this is discouraged`) | ||||
|                 }else{ | ||||
|                 } else { | ||||
|                     information.push(`${ctx}: Ignored image ${images.join(", ")} in 'then'-clause of a mapping as this check has been disabled`) | ||||
| 
 | ||||
|                     for (const image of images) { | ||||
|                         if (this.knownImagePaths !== undefined && !this.knownImagePaths.has(image)) { | ||||
|                             const ctx = context === undefined ? "" : ` in a layer defined in the theme ${context}` | ||||
|                             errors.push(`Image with path ${image} not found or not attributed; it is used in ${json.id}${ctx}`) | ||||
|                         } | ||||
|                     } | ||||
|                      | ||||
|                 } | ||||
|             }else if (ignore){ | ||||
|             } else if (ignore) { | ||||
|                 warnings.push(`${ctx}: unused '${ignoreToken}' - please remove this`) | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|          return { | ||||
|         return { | ||||
|             errors, | ||||
|             warnings, | ||||
|             information, | ||||
|  | @ -431,10 +442,10 @@ export class DetectMappingsWithImages extends DesugaringStep<TagRenderingConfigJ | |||
| } | ||||
| 
 | ||||
| export class ValidateTagRenderings extends Fuse<TagRenderingConfigJson> { | ||||
|     constructor(layerConfig: LayerConfigJson) { | ||||
|     constructor(layerConfig?: LayerConfigJson, knownImagePaths?: Set<string>) { | ||||
|         super("Various validation on tagRenderingConfigs", | ||||
|             new DetectShadowedMappings( layerConfig), | ||||
|             new DetectMappingsWithImages()     | ||||
|             new DetectShadowedMappings(layerConfig), | ||||
|             new DetectMappingsWithImages(knownImagePaths) | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|  | @ -446,11 +457,13 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> { | |||
|      */ | ||||
|     private readonly _path?: string; | ||||
|     private readonly _isBuiltin: boolean; | ||||
|     private knownImagePaths: Set<string>; | ||||
| 
 | ||||
|     constructor(path: string, isBuiltin: boolean) { | ||||
|     constructor(path: string, isBuiltin: boolean, knownImagePaths: Set<string>) { | ||||
|         super("Doesn't change anything, but emits warnings and errors", [], "ValidateLayer"); | ||||
|         this._path = path; | ||||
|         this._isBuiltin = isBuiltin; | ||||
|         this.knownImagePaths = knownImagePaths | ||||
|     } | ||||
| 
 | ||||
|     convert(json: LayerConfigJson, context: string): { result: LayerConfigJson; errors: string[]; warnings?: string[], information?: string[] } { | ||||
|  | @ -475,10 +488,10 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> { | |||
| 
 | ||||
|         { | ||||
|             // duplicate ids in tagrenderings check
 | ||||
|           const duplicates = Utils.Dedup(Utils.Dupiclates( Utils.NoNull((json.tagRenderings ?? []).map(tr => tr["id"])))) | ||||
|               .filter(dupl => dupl !== "questions") | ||||
|             if(duplicates.length > 0){ | ||||
|                 errors.push("At "+context+": some tagrenderings have a duplicate id: "+duplicates.join(", ")) | ||||
|             const duplicates = Utils.Dedup(Utils.Dupiclates(Utils.NoNull((json.tagRenderings ?? []).map(tr => tr["id"])))) | ||||
|                 .filter(dupl => dupl !== "questions") | ||||
|             if (duplicates.length > 0) { | ||||
|                 errors.push("At " + context + ": some tagrenderings have a duplicate id: " + duplicates.join(", ")) | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  | @ -538,10 +551,10 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> { | |||
|                 } | ||||
|             } | ||||
|             if (json.tagRenderings !== undefined) { | ||||
|                const r = new On("tagRenderings", new Each(new ValidateTagRenderings(json))).convert(json, context) | ||||
|                 warnings.push(...(r.warnings??[])) | ||||
|                 errors.push(...(r.errors??[])) | ||||
|                 information.push(...(r.information??[])) | ||||
|                 const r = new On("tagRenderings", new Each(new ValidateTagRenderings(json, this.knownImagePaths))).convert(json, context) | ||||
|                 warnings.push(...(r.warnings ?? [])) | ||||
|                 errors.push(...(r.errors ?? [])) | ||||
|                 information.push(...(r.information ?? [])) | ||||
|             } | ||||
| 
 | ||||
|             if (json.presets !== undefined) { | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| { | ||||
|   "id": "cafe_pub", | ||||
|   "name": { | ||||
|     "nl": "Cafés", | ||||
|     "en": "Cafés and pubs", | ||||
|     "nl": "Cafés en nachtclubs", | ||||
|     "en": "Cafés, pubs and nightclubs", | ||||
|     "de": "Cafés und Kneipen", | ||||
|     "fr": "Cafés et pubs", | ||||
|     "zh_Hant": "咖啡廳與酒吧", | ||||
|  | @ -16,7 +16,8 @@ | |||
|         "amenity=bar", | ||||
|         "amenity=pub", | ||||
|         "amenity=cafe", | ||||
|         "amenity=biergarten" | ||||
|         "amenity=biergarten", | ||||
|         "amenity=nightclub" | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|  | @ -94,6 +95,22 @@ | |||
|       "preciseInput": { | ||||
|         "preferredBackground": "map" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "tags": [ | ||||
|         "amenity=nightclub" | ||||
|       ], | ||||
|       "title": { | ||||
|         "en": "a nightclub or disco", | ||||
|         "nl": "een nachtclub of disco" | ||||
|       }, | ||||
|       "description": { | ||||
|         "en": "A <b>nightclub</b> or disco with a focus on dancing, music by a DJ with accompanying light show and a bar to get (alcoholic) drinks", | ||||
|         "nl": "Een <b>nachtclub</b> met dansvloer, DJ met bijhorende lichteffecten en bar waar men (alcoholische) dranken kan nuttigen" | ||||
|       }, | ||||
|       "preciseInput": { | ||||
|         "preferredBackground": "map" | ||||
|       } | ||||
|     } | ||||
|   ], | ||||
|   "title": { | ||||
|  | @ -137,8 +154,8 @@ | |||
|         "es": "¿Cual es el nombre de este pub?" | ||||
|       }, | ||||
|       "render": { | ||||
|         "nl": "De naam van dit café is {name}", | ||||
|         "en": "This pub is named {name}", | ||||
|         "nl": "De naam van deze zaak is {name}", | ||||
|         "en": "This place is named {name}", | ||||
|         "de": "Diese Kneipe heißt {name}", | ||||
|         "fr": "Ce pub se nomme {name}", | ||||
|         "hu": "A kocsma neve: {name}", | ||||
|  | @ -209,6 +226,14 @@ | |||
|             "es": "Un espacio abierto donde se sirve cerveza, típico de Alemania" | ||||
|           }, | ||||
|           "hideInAnswer": "_country!=de" | ||||
|         }, | ||||
|         { | ||||
|           "if": "amenity=nightclub", | ||||
|           "then": { | ||||
|             "en": "This is a <b>nightclub</b> or disco with a focus on dancing, music by a DJ with accompanying light show and a bar to get (alcoholic) drinks", | ||||
|             "nl": "Dit is een <b>nachtclub</b> met dansvloer, DJ met bijhorende lichteffecten en bar waar men (alcoholische) dranken kan nuttigen" | ||||
| 
 | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "id": "Classification" | ||||
|  | @ -219,6 +244,7 @@ | |||
|     "phone", | ||||
|     "payment-options", | ||||
|     "wheelchair-access", | ||||
|     "smoking", | ||||
|     "service:electricity", | ||||
|     "dog-access" | ||||
|   ], | ||||
|  | @ -271,6 +297,10 @@ | |||
|           { | ||||
|             "if": "amenity=cafe", | ||||
|             "then": "circle:white;./assets/layers/cafe_pub/cafe.svg" | ||||
|           }, | ||||
|           { | ||||
|             "if": "amenity=nightclub", | ||||
|             "then": "circle:white;./assets/layers/cafe_pub/nightclub.svg" | ||||
|           } | ||||
|         ] | ||||
|       }, | ||||
|  | @ -295,9 +325,9 @@ | |||
|     } | ||||
|   ], | ||||
|   "description": { | ||||
|     "en": "A layer showing cafés and pubs where one can gather around a drink. The layer asks for some relevant questions", | ||||
|     "en": "A layer showing cafés, pubs, biergartens and nightclubs where one can gather around a drink. The layer asks for some relevant questions", | ||||
|     "hu": "Egy olyan réteg, amely kávézókat és kocsmákat jelenít meg, ahol össze lehet gyűlni egy ital köré. A réteg néhány lényeges kérdést tesz fel", | ||||
|     "nl": "Een laag die kroegen en koffiehuizen toont waar je iets kunt drinken. De laag zal je enkele vragen stellen", | ||||
|     "nl": "Een laag die kroegen, koffiehuizen, biergartens en nachtclubs toont waar je iets kunt drinken. De laag zal je enkele vragen stellen", | ||||
|     "de": "Eine Ebene mit Cafés und Kneipen, in denen man sich auf ein Getränk treffen kann. Die Ebene fragt nach einigen relevanten Eigenschaften", | ||||
|     "es": "Una capa que muestra cafeterías y bares donde uno se puede reunir con una bebida. La capa hace algunas preguntas relevantes", | ||||
|     "da": "Et lag med caféer og pubber, hvor man kan samles omkring en drink. Laget stiller nogle relevante spørgsmål" | ||||
|  |  | |||
|  | @ -9,6 +9,16 @@ | |||
|       "https://wiki.openstreetmap.org/wiki/File:Cafe-16.svg" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "nightclub.svg", | ||||
|     "license": "CC0", | ||||
|     "authors": [ | ||||
|       "Osm Carto" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://wiki.openstreetmap.org/wiki/File:Nightclub-16.svg" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "pub.svg", | ||||
|     "license": "CC0", | ||||
|  |  | |||
							
								
								
									
										27
									
								
								assets/layers/cafe_pub/nightclub.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,27 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    version="1.1" | ||||
|    width="16" | ||||
|    height="16" | ||||
|    viewBox="0 0 16 16" | ||||
|    id="svg2"> | ||||
|   <metadata id="metadata8"> | ||||
|     <rdf:RDF> | ||||
|       <cc:Work rdf:about=""> | ||||
|         <dc:format>image/svg+xml</dc:format> | ||||
|         <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> | ||||
|         <dc:title/> | ||||
|       </cc:Work> | ||||
|     </rdf:RDF> | ||||
|   </metadata> | ||||
|   <defs id="defs6"/> | ||||
|   <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/> | ||||
|   <path d="M 13.006803,0.00308957 3.0068028,2.0030896 l 0,8.5624994 c -0.385369,-0.06933 -0.787572,-0.07549 -1.1875,0.03125 -1.15478198,0.308194 -2.01331698,1.387352 -1.78124998,2.25 0.232067,0.862648 1.50146898,1.370694 2.65624998,1.0625 1.154781,-0.308194 1.8125,-1.336236 1.8125,-2.25 l 0,-6.9687494 7.0000002,-1.375 0,5.6249997 c -0.385334,-0.06124 -0.787622,-0.04422 -1.1875,0.0625 -1.1546372,0.308156 -2.0130612,1.3561497 -1.7812502,2.2187497 0.232265,0.862479 1.5016132,1.370655 2.6562502,1.0625 1.154637,-0.308156 1.8125,-1.28125 1.8125,-2.28125 z" | ||||
|   id="nightclub" | ||||
|   style="fill:#C77400;fill-opacity:1;fill-rule:nonzero;stroke:none" transform="translate(1,1)"/> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 1.4 KiB | 
|  | @ -17,6 +17,22 @@ | |||
|     ], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "SocialImageBanner.png", | ||||
|     "license": "CC0", | ||||
|     "authors": [ | ||||
|       "Pieter Vander Vennet" | ||||
|     ], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "SocialImageBanner.svg", | ||||
|     "license": "CC0", | ||||
|     "authors": [ | ||||
|       "Pieter Vander Vennet" | ||||
|     ], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "SocialImageSmall.png", | ||||
|     "license": "CC-BY-SA 4.0", | ||||
|  |  | |||
|  | @ -141,16 +141,6 @@ | |||
|       "https://commons.wikimedia.org/wiki/File:Camera_font_awesome.svg" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "cash.svg", | ||||
|     "license": "CC-BY 3.0", | ||||
|     "authors": [ | ||||
|       "Online Web Fonts" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://www.onlinewebfonts.com/icon/464494" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "checkbox-empty.svg", | ||||
|     "license": "CC0", | ||||
|  | @ -859,16 +849,6 @@ | |||
|     ], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "nfc_card.svg", | ||||
|     "license": "CC0", | ||||
|     "authors": [ | ||||
|       "Stijn Wens" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://wens.be/free-antwerpenize-bicycle-font" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "no_checkmark.svg", | ||||
|     "license": "CC0; trivial", | ||||
|  | @ -951,16 +931,6 @@ | |||
|       "https://github.com/twitter/twemoji" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "payment_card.svg", | ||||
|     "license": "CC0", | ||||
|     "authors": [ | ||||
|       " \tMaxi Koichi (maxixam)" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://commons.wikimedia.org/wiki/File:Credit_Card_-_The_Noun_Project.svg" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "pencil.svg", | ||||
|     "license": "MIT", | ||||
|  | @ -983,26 +953,6 @@ | |||
|       " https://commons.wikimedia.org/wiki/File:Octicons-pencil.svg" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "phone.svg", | ||||
|     "license": "CC-BY 3.0", | ||||
|     "authors": [ | ||||
|       "@ tyskrat" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://www.onlinewebfonts.com/icon/1059" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "phone.svg", | ||||
|     "license": "CC-BY 3.0", | ||||
|     "authors": [ | ||||
|       "@ tyskrat" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://www.onlinewebfonts.com/icon/1059" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "pin.svg", | ||||
|     "license": "CC0; trivial", | ||||
|  | @ -1151,18 +1101,6 @@ | |||
|       "https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/AUTHORS.txt" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "send_email.svg", | ||||
|     "license": "CC0; trivial", | ||||
|     "authors": [], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "send_email.svg", | ||||
|     "license": "CC0; trivial", | ||||
|     "authors": [], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "share.svg", | ||||
|     "license": "CC0; trivial", | ||||
|  | @ -1175,16 +1113,6 @@ | |||
|     "authors": [], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "smartphone.svg", | ||||
|     "license": "CC-BY 3.0", | ||||
|     "authors": [ | ||||
|       "To Uyen" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://commons.wikimedia.org/wiki/File:Smartphone_icon_-_Noun_Project_283536.svg" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "speech_bubble.svg", | ||||
|     "license": "CC-BY 4.0", | ||||
|  |  | |||
| Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB | 
|  | @ -5,6 +5,7 @@ | |||
|       "phonelink", | ||||
|       "emaillink", | ||||
|       "wikipedialink", | ||||
|       "smokingicon", | ||||
|       "osmlink", | ||||
|       "sharelink" | ||||
|     ], | ||||
|  | @ -20,6 +21,7 @@ | |||
|     }, | ||||
|     "mappings": [ | ||||
|       { | ||||
|         "#": "ignore-image-in-then", | ||||
|         "if": "wikipedia=", | ||||
|         "then": "<a href='https://www.wikidata.org/wiki/{wikidata}' target='_blank'><img src='./assets/svg/wikidata.svg' alt='WD'/></a>" | ||||
|       } | ||||
|  | @ -59,13 +61,27 @@ | |||
|     ] | ||||
|   }, | ||||
|   "phonelink": { | ||||
|     "render": "<a href='tel:{phone}'><img textmode='\uD83D\uDCDE' alt='phone' src='./assets/svg/phone.svg'/></a>", | ||||
|     "render": "<a href='tel:{phone}'><img textmode='\uD83D\uDCDE' alt='phone' src='./assets/tagRenderings/phone.svg'/></a>", | ||||
|     "condition": "phone~*" | ||||
|   }, | ||||
|   "emaillink": { | ||||
|     "render": "<a href='mailto:{email}'><img textmode='✉️' alt='email' src='./assets/svg/send_email.svg'/></a>", | ||||
|     "render": "<a href='mailto:{email}'><img textmode='✉️' alt='email' src='./assets/tagRenderings/send_email.svg'/></a>", | ||||
|     "condition": "email~*" | ||||
|   }, | ||||
|   "smokingicon": { | ||||
|     "mappings": [ | ||||
|       { | ||||
|         "#": "ignore-image-in-then", | ||||
|         "if": "smoking=no", | ||||
|         "then": "<img textmode='\uD83D\uDEAD️' alt='no-smoking' src='./assets/tagRenderings/no_smoking.svg'/>" | ||||
|       }, | ||||
|       { | ||||
|         "#": "ignore-image-in-then", | ||||
|         "if": "smoking=yes", | ||||
|         "then": "<img textmode='\uD83D\uDEAC️' alt='smoking-allowed' src='./assets/tagRenderings/smoking.svg'/>" | ||||
|       } | ||||
|     ] | ||||
|   }, | ||||
|   "osmlink": { | ||||
|     "render": "<a href='https://openstreetmap.org/{id}' target='_blank'><img alt='on osm' textmode='\uD83D\uDDFA️' src='./assets/svg/osm-logo-us.svg'/></a>", | ||||
|     "mappings": [ | ||||
|  | @ -74,6 +90,7 @@ | |||
|         "then": "" | ||||
|       }, | ||||
|       { | ||||
|         "#": "ignore-image-in-then", | ||||
|         "if": "_backend~*", | ||||
|         "then": "<a href='{_backend}/{id}' target='_blank'><img src='./assets/svg/osm-logo-us.svg'/></a>" | ||||
|       } | ||||
|  |  | |||
							
								
								
									
										96
									
								
								assets/tagRenderings/license_info.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,96 @@ | |||
| [ | ||||
|   { | ||||
|     "path": "cash.svg", | ||||
|     "license": "CC-BY 3.0", | ||||
|     "authors": [ | ||||
|       "Online Web Fonts" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://www.onlinewebfonts.com/icon/464494" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "nfc_card.svg", | ||||
|     "license": "CC0", | ||||
|     "authors": [ | ||||
|       "Stijn Wens" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://wens.be/free-antwerpenize-bicycle-font" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "no_smoking.svg", | ||||
|     "license": "CC0", | ||||
|     "authors": [ | ||||
|       "AIGA" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://upload.wikimedia.org/wikipedia/commons/6/6b/No_Smoking.svg", | ||||
|       "https://www.aiga.org/content.cfm/symbol-signs" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "payment_card.svg", | ||||
|     "license": "CC0", | ||||
|     "authors": [ | ||||
|       " \tMaxi Koichi (maxixam)" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://commons.wikimedia.org/wiki/File:Credit_Card_-_The_Noun_Project.svg" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "phone.svg", | ||||
|     "license": "CC-BY 3.0", | ||||
|     "authors": [ | ||||
|       "@ tyskrat" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://www.onlinewebfonts.com/icon/1059" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "phone.svg", | ||||
|     "license": "CC-BY 3.0", | ||||
|     "authors": [ | ||||
|       "@ tyskrat" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://www.onlinewebfonts.com/icon/1059" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "send_email.svg", | ||||
|     "license": "CC0; trivial", | ||||
|     "authors": [], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "send_email.svg", | ||||
|     "license": "CC0; trivial", | ||||
|     "authors": [], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "smartphone.svg", | ||||
|     "license": "CC-BY 3.0", | ||||
|     "authors": [ | ||||
|       "To Uyen" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://commons.wikimedia.org/wiki/File:Smartphone_icon_-_Noun_Project_283536.svg" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "smoking.svg", | ||||
|     "license": "CC0", | ||||
|     "authors": [ | ||||
|       "Wiki-User03", | ||||
|       "ZooFari" | ||||
|     ], | ||||
|     "sources": [ | ||||
|       "https://commons.wikimedia.org/wiki/File:Smoking_pictogram_(black).svg" | ||||
|     ] | ||||
|   } | ||||
| ] | ||||
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB | 
							
								
								
									
										160
									
								
								assets/tagRenderings/no_smoking.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,160 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  --> | ||||
| 
 | ||||
| <svg | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|    version="1.0" | ||||
|    id="Layer_1" | ||||
|    x="0px" | ||||
|    y="0px" | ||||
|    width="439.54999" | ||||
|    height="439.548" | ||||
|    viewBox="0 0 439.54999 439.548" | ||||
|    xml:space="preserve" | ||||
|    inkscape:version="0.47 r22583" | ||||
|    sodipodi:docname="No_Smoking.svg"><metadata | ||||
|    id="metadata53"><rdf:RDF><cc:Work | ||||
|        rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type | ||||
|          rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs | ||||
|    id="defs51"><inkscape:perspective | ||||
|      sodipodi:type="inkscape:persp3d" | ||||
|      inkscape:vp_x="0 : 250 : 1" | ||||
|      inkscape:vp_y="0 : 1000 : 0" | ||||
|      inkscape:vp_z="500 : 250 : 1" | ||||
|      inkscape:persp3d-origin="250 : 166.66667 : 1" | ||||
|      id="perspective55" /></defs><sodipodi:namedview | ||||
|    pagecolor="#ffffff" | ||||
|    bordercolor="#666666" | ||||
|    borderopacity="1" | ||||
|    objecttolerance="10" | ||||
|    gridtolerance="10" | ||||
|    guidetolerance="10" | ||||
|    inkscape:pageopacity="0" | ||||
|    inkscape:pageshadow="2" | ||||
|    inkscape:window-width="1280" | ||||
|    inkscape:window-height="750" | ||||
|    id="namedview49" | ||||
|    showgrid="false" | ||||
|    inkscape:zoom="0.472" | ||||
|    inkscape:cx="219.747" | ||||
|    inkscape:cy="221.158" | ||||
|    inkscape:window-x="-8" | ||||
|    inkscape:window-y="-8" | ||||
|    inkscape:window-maximized="1" | ||||
|    inkscape:current-layer="Layer_1" /> | ||||
| <circle | ||||
|    style="fill:#ffffff;stroke:#000000" | ||||
|    cx="249.5" | ||||
|    cy="249.5" | ||||
|    r="205" | ||||
|    id="circle3" | ||||
|    sodipodi:cx="249.5" | ||||
|    sodipodi:cy="249.5" | ||||
|    sodipodi:rx="205" | ||||
|    sodipodi:ry="205" | ||||
|    transform="translate(-30.253,-31.61)" /> | ||||
| <g | ||||
|    id="g5" | ||||
|    transform="translate(-30.253,-31.61)"> | ||||
| 	<g | ||||
|    id="g7"> | ||||
| 		<g | ||||
|    id="g9"> | ||||
| 			<g | ||||
|    id="g11"> | ||||
| 				<rect | ||||
|    x="105.403" | ||||
|    y="257.423" | ||||
|    width="246.02901" | ||||
|    height="39.354" | ||||
|    id="rect13" /> | ||||
| 			</g> | ||||
| 			<g | ||||
|    id="g15"> | ||||
| 				<g | ||||
|    id="g17"> | ||||
| 					<path | ||||
|    style="fill:none;stroke:#000000;stroke-width:13.18700027;stroke-linejoin:round;stroke-miterlimit:10" | ||||
|    d="m 274.445,100.269 c -23.356,0 -32.885,18.899 -32.885,33.48 0,16.618 13.668,34.512 39.566,32.992 -8.953,15.205 -1.094,39.916 20.144,39.916 0.06,0 35.414,0 35.414,0 18.898,0 28.707,10.047 28.707,25.579 v 18.056" | ||||
|    id="path19" /> | ||||
| 				</g> | ||||
| 				<g | ||||
|    id="g21"> | ||||
| 					<path | ||||
|    style="fill:none;stroke:#000000;stroke-width:13.18700027;stroke-linejoin:round;stroke-miterlimit:10" | ||||
|    d="m 285.789,113.105 c 23.736,0 39.488,16.49 39.488,36.692 0,7.809 -2.933,17.27 -8.881,25.473 h 20.938 c 30.438,0 48.593,25.359 48.593,50.775 v 24.247" | ||||
|    id="path23" /> | ||||
| 				</g> | ||||
| 				<g | ||||
|    id="g25"> | ||||
| 					 | ||||
| 						<line | ||||
|    style="fill:none;stroke:#000000;stroke-width:13.18700027;stroke-linejoin:round;stroke-miterlimit:10" | ||||
|    x1="365.39099" | ||||
|    y1="256.79901" | ||||
|    x2="365.39099" | ||||
|    y2="296.621" | ||||
|    id="line27" /> | ||||
| 				</g> | ||||
| 				<g | ||||
|    id="g29"> | ||||
| 					 | ||||
| 						<line | ||||
|    style="fill:none;stroke:#000000;stroke-width:13.18700027;stroke-linejoin:round;stroke-miterlimit:10" | ||||
|    x1="386.005" | ||||
|    y1="256.79901" | ||||
|    x2="386.005" | ||||
|    y2="296.621" | ||||
|    id="line31" /> | ||||
| 				</g> | ||||
| 			</g> | ||||
| 		</g> | ||||
| 		<g | ||||
|    id="g33"> | ||||
| 			<rect | ||||
|    x="273.44101" | ||||
|    y="89.786003" | ||||
|    style="fill:#ffffff" | ||||
|    width="13.187" | ||||
|    height="32.618999" | ||||
|    id="rect35" /> | ||||
| 		</g> | ||||
| 	</g> | ||||
| 	<g | ||||
|    id="g37"> | ||||
| 		 | ||||
| 			<line | ||||
|    style="fill:none;stroke:#ffffff;stroke-width:55;stroke-miterlimit:10" | ||||
|    x1="393.35001" | ||||
|    y1="392.509" | ||||
|    x2="110.112" | ||||
|    y2="109.275" | ||||
|    id="line39" /> | ||||
| 		<g | ||||
|    id="g41"> | ||||
| 			<path | ||||
|    style="fill:none;stroke:#ff0000;stroke-width:49;stroke-miterlimit:10" | ||||
|    d="m 250.029,446.658 c -107.846,0 -195.276,-87.428 -195.276,-195.271 0,-107.848 87.43,-195.277 195.276,-195.277 107.845,0 195.274,87.429 195.274,195.277 0,107.843 -87.429,195.271 -195.274,195.271 z" | ||||
|    id="path43" /> | ||||
| 			<path | ||||
|    style="fill:none;stroke:#000000;stroke-width:49;stroke-miterlimit:10" | ||||
|    d="M 250.029,251.387" | ||||
|    id="path45" /> | ||||
| 		</g> | ||||
| 		 | ||||
| 			<line | ||||
|    style="fill:none;stroke:#ff0000;stroke-width:51.11999893;stroke-miterlimit:10" | ||||
|    x1="392.86801" | ||||
|    y1="392.19101" | ||||
|    x2="109.63" | ||||
|    y2="108.957" | ||||
|    id="line47" /> | ||||
| 	</g> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 4.3 KiB | 
| Before Width: | Height: | Size: 670 B After Width: | Height: | Size: 670 B | 
| Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB | 
|  | @ -745,7 +745,7 @@ | |||
|       { | ||||
|         "if": "payment:cash=yes", | ||||
|         "ifnot": "payment:cash=no", | ||||
|         "icon": "./assets/svg/cash.svg", | ||||
|         "icon": "./assets/tagRenderings/cash.svg", | ||||
|         "then": { | ||||
|           "en": "Cash is accepted here", | ||||
|           "nl": "Cash geld wordt hier aanvaard", | ||||
|  | @ -773,7 +773,7 @@ | |||
|       { | ||||
|         "if": "payment:cards=yes", | ||||
|         "ifnot": "payment:cards=no", | ||||
|         "icon": "./assets/svg/payment_card.svg", | ||||
|         "icon": "./assets/tagRenderings/payment_card.svg", | ||||
|         "then": { | ||||
|           "en": "Payment cards are accepted here", | ||||
|           "nl": "Betalen met bankkaarten kan hier", | ||||
|  | @ -807,7 +807,7 @@ | |||
|         { | ||||
|           "if": "payment:app=yes", | ||||
|           "ifnot": "payment:app=no", | ||||
|           "icon": "./assets/svg/smartphone.svg", | ||||
|           "icon": "./assets/tagRenderings/smartphone.svg", | ||||
|           "then": { | ||||
|             "en": "Payment is done using a dedicated app", | ||||
|             "nl": "Betalen via een app van het netwerk", | ||||
|  | @ -828,7 +828,7 @@ | |||
|         { | ||||
|           "if": "payment:membership_card=yes", | ||||
|           "ifnot": "payment:membership_card=no", | ||||
|           "icon": "./assets/svg/nfc_card.svg", | ||||
|           "icon": "./assets/tagRenderings/nfc_card.svg", | ||||
|           "then": { | ||||
|             "en": "Payment is done using a membership card", | ||||
|             "nl": "Betalen via een lidkaart van het netwerk", | ||||
|  | @ -1031,5 +1031,40 @@ | |||
|         } | ||||
|       } | ||||
|     ] | ||||
|   }, | ||||
|   "smoking": { | ||||
|     "question": { | ||||
|       "en": "Is smoking allowed at {title()}?" | ||||
|     }, | ||||
|     "#condition": "Based on https://en.wikipedia.org/wiki/List_of_smoking_bans", | ||||
|     "condition": "_country!~al|be", | ||||
|     "mappings": [ | ||||
|       { | ||||
|         "if": "smoking=yes", | ||||
|         "icon": { | ||||
|           "path": "./assets/tagRenderings/smoking.svg", | ||||
|           "size": "small" | ||||
|         }, | ||||
|         "then": { | ||||
|           "en": "Smoking is <b>allowed</b>" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
|         "if": "smoking=no", | ||||
|         "icon": { | ||||
|           "path": "./assets/tagRenderings/no_smoking.svg", | ||||
|           "size": "small" | ||||
|         }, | ||||
|         "then": { | ||||
|           "en": "Smoking is <b>not allowed</b>" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
|         "if": "smoking=outside", | ||||
|         "then": { | ||||
|           "en": "Smoking is <b>allowed outside</b>." | ||||
|         } | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
| } | ||||
| Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB | 
| Before Width: | Height: | Size: 702 B After Width: | Height: | Size: 702 B | 
							
								
								
									
										8
									
								
								assets/tagRenderings/smoking.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,8 @@ | |||
| <svg enable-background="new -4.333 -4.333 520.278 520.278" height="520.278px" version="1.1" viewBox="-4.333 -4.333 520.278 520.278" width="520.278px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"> | ||||
| <defs> | ||||
| </defs> | ||||
| <g transform="translate(-607.435, -195.365)"> | ||||
| 	<path d="M955.58,363.71c-16.461,1.609-25.673,17.126-25.969,31.875-0.285,14.252,8.423,26.381,21.25,29.281,5.662,1.28,3.225,1.647,3.5,5.781,2.688,40.218,40.279,17.878,56.094,29.343,8.143,5.903,6.139,10.834,6.781,20.344h8.906c0-13.286,1.794-20.888-11.094-28.5-14.037-8.291-33.764,1.58-46.344-8.156-5.124-3.966-5.494-12.199-2.719-18.812,1.838-4.379-0.617-8.315-5.625-8.219-11.188,0.215-19.953-6.958-21.188-18.125-1.258-11.377,4.419-22.228,16.406-24.531v-10.257zm10.37,10.31v9.844c8.9,1.657,17.617,4.822,21.281,13.844,3.242,7.983,1.651,16.891-2.312,24.406-1.902,3.606-0.29,10.151,8.781,10,16.79-0.279,30.641,6.578,35.625,24.125,2.84,9.996,2.136,14.072,1.938,23.875h9.5c0.024-19.672,0.699-15.814-2.219-25.844-6.508-22.367-17.854-29.955-39.438-31.343-3.1-0.2-3.885,0.312-2.75-3.062,2.551-7.58,3.64-18.591-3.125-29.719-5.78-9.60-16.10-16.28-27.23-16.14zm-286.22,112.07v44.969h318.031v-44.969h-318.03zm324.47,0v44.969h7.656v-44.969h-7.697zm13.2,0v44.969h9v-44.969h-9.041zm14.4,0v44.969h9.219v-44.969h-9.172z"/> | ||||
| 		<path d="M1101.7,451.17c0,131.69-106.76,238.45-238.45,238.45s-238.46-106.76-238.46-238.45,106.76-238.45,238.45-238.45,238.46,106.76,238.46,238.45z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="43.3749"/> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 1.7 KiB | 
|  | @ -8,7 +8,7 @@ | |||
|   "main": "index.js", | ||||
|   "scripts": { | ||||
|     "start": "npm run generate:layeroverview && npm run strt", | ||||
|     "strt": "export NODE_OPTIONS=--max_old_space_size=8364 && parcel serve *.html UI/** Logic/** assets/*.json assets/svg/* assets/generated/* assets/layers/*/*.svg assets/layers/*/*/*/*.svg assets/layers/*/*.jpg assets/layers/*/*.png assets/layers/*/*.css assets/tagRenderings/*.json assets/themes/*/*.svg assets/themes/*/*.ttf assets/themes/*/*/*.ttf assets/themes/*/*.otf assets/themes/*/*/*.otf assets/themes/*/*.css assets/themes/*/*.jpg assets/themes/*/*.woff assets/themes/*/*.png vendor/* vendor/*/*", | ||||
|     "strt": "export NODE_OPTIONS=--max_old_space_size=8364 && parcel serve *.html UI/** Logic/** assets/*.json assets/svg/* assets/generated/* assets/layers/*/*.svg assets/layers/*/*/*/*.svg assets/layers/*/*.jpg assets/layers/*/*.png assets/layers/*/*.css assets/tagRenderings/*.json assets/themes/*/*.svg assets/themes/*/*.ttf assets/themes/*/*/*.ttf assets/themes/*/*.otf assets/themes/*/*/*.otf assets/themes/*/*.css assets/themes/*/*.jpg assets/themes/*/*.woff assets/themes/*/*.png vendor/* vendor/*/* assets/tagRenderings/*.svg", | ||||
|     "strttest": "export NODE_OPTIONS=--max_old_space_size=8364 && parcel serve test.html", | ||||
|     "watch:css": "tailwindcss -i index.css -o css/index-tailwind-output.css --watch", | ||||
|     "generate:css": "tailwindcss -i index.css -o css/index-tailwind-output.css", | ||||
|  |  | |||