imba-localization 0.4.8 → 0.4.9

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 (2) hide show
  1. package/localization.imba +83 -85
  2. package/package.json +1 -1
package/localization.imba CHANGED
@@ -1,3 +1,67 @@
1
+ # Emoji flags mapping - comprehensive list by region
2
+ export const flags = {
3
+ # Europe
4
+ 'gb': '🇬🇧', 'us': '🇺🇸', 'ru': '🇷🇺', 'de': '🇩🇪', 'fr': '🇫🇷',
5
+ 'es': '🇪🇸', 'it': '🇮🇹', 'nl': '🇳🇱', 'pl': '🇵🇱', 'ua': '🇺🇦',
6
+ 'cz': '🇨🇿', 'gr': '🇬🇷', 'hu': '🇭🇺', 'ro': '🇷🇴', 'se': '🇸🇪',
7
+ 'no': '🇳🇴', 'dk': '🇩🇰', 'fi': '🇫🇮', 'pt': '🇵🇹', 'ie': '🇮🇪',
8
+ 'be': '🇧🇪', 'at': '🇦🇹', 'ch': '🇨🇭', 'sk': '🇸🇰', 'bg': '🇧🇬',
9
+ 'hr': '🇭🇷', 'rs': '🇷🇸', 'si': '🇸🇮', 'lt': '🇱🇹', 'lv': '🇱🇻',
10
+ 'ee': '🇪🇪', 'is': '🇮🇸', 'lu': '🇱🇺', 'mt': '🇲🇹', 'cy': '🇨🇾',
11
+ 'ba': '🇧🇦', 'mk': '🇲🇰', 'al': '🇦🇱', 'md': '🇲🇩', 'me': '🇲🇪',
12
+ 'by': '🇧🇾', 'ru': '🇷🇺', 'ge': '🇬🇪', 'am': '🇦🇲', 'az': '🇦🇿',
13
+
14
+ # Asia
15
+ 'cn': '🇨🇳', 'jp': '🇯🇵', 'kr': '🇰🇷', 'in': '🇮🇳', 'id': '🇮🇩',
16
+ 'th': '🇹🇭', 'vn': '🇻🇳', 'ph': '🇵🇭', 'sg': '🇸🇬', 'my': '🇲🇾',
17
+ 'hk': '🇭🇰', 'tw': '🇹🇼', 'pk': '🇵🇰', 'bd': '🇧🇩', 'lk': '🇱🇰',
18
+ 'kh': '🇰🇭', 'la': '🇱🇦', 'mm': '🇲🇲', 'bn': '🇧🇳', 'mo': '🇲🇴',
19
+ 'mn': '🇲🇳', 'np': '🇳🇵', 'bt': '🇧🇹', 'mv': '🇲🇻', 'kz': '🇰🇿',
20
+ 'uz': '🇺🇿', 'tm': '🇹🇲', 'kg': '🇰🇬', 'tj': '🇹🇯', 'af': '🇦🇫',
21
+
22
+ # Middle East
23
+ 'tr': '🇹🇷', 'il': '🇮🇱', 'ae': '🇦🇪', 'sa': '🇸🇦', 'qa': '🇶🇦',
24
+ 'kw': '🇰🇼', 'bh': '🇧🇭', 'om': '🇴🇲', 'jo': '🇯🇴', 'lb': '🇱🇧',
25
+ 'iq': '🇮🇶', 'ir': '🇮🇷', 'sy': '🇸🇾', 'ye': '🇾🇪', 'ps': '🇵🇸',
26
+
27
+ # Americas
28
+ 'br': '🇧🇷', 'mx': '🇲🇽', 'ca': '🇨🇦', 'ar': '🇦🇷', 'cl': '🇨🇱',
29
+ 'co': '🇨🇴', 'pe': '🇵🇪', 've': '🇻🇪', 'ec': '🇪🇨', 'uy': '🇺🇾',
30
+ 'py': '🇵🇾', 'bo': '🇧🇴', 'cr': '🇨🇷', 'pa': '🇵🇦', 'gt': '🇬🇹',
31
+ 'cu': '🇨🇺', 'do': '🇩🇴', 'hn': '🇭🇳', 'sv': '🇸🇻', 'ni': '🇳🇮',
32
+ 'jm': '🇯🇲', 'tt': '🇹🇹', 'bs': '🇧🇸', 'bb': '🇧🇧', 'pr': '🇵🇷',
33
+
34
+ # Africa
35
+ 'za': '🇿🇦', 'eg': '🇪🇬', 'ng': '🇳🇬', 'ke': '🇰🇪', 'gh': '🇬🇭',
36
+ 'ma': '🇲🇦', 'dz': '🇩🇿', 'tn': '🇹🇳', 'et': '🇪🇹', 'tz': '🇹🇿',
37
+ 'ug': '🇺🇬', 'zw': '🇿🇼', 'ao': '🇦🇴', 'cm': '🇨🇲', 'ci': '🇨🇮',
38
+ 'cd': '🇨🇩', 'sn': '🇸🇳', 'ml': '🇲🇱', 'bf': '🇧🇫', 'ne': '🇳🇪',
39
+ 'tg': '🇹🇬', 'bw': '🇧🇼', 'na': '🇳🇦', 'mz': '🇲🇿', 'mg': '🇲🇬',
40
+
41
+ # Oceania
42
+ 'au': '🇦🇺', 'nz': '🇳🇿', 'fj': '🇫🇯', 'pg': '🇵🇬', 'ws': '🇼🇸',
43
+ 'to': '🇹🇴', 'vu': '🇻🇺', 'sb': '🇸🇧', 'nc': '🇳🇨', 'pf': '🇵🇫',
44
+ 'gu': '🇬🇺', 'as': '🇦🇸', 'ck': '🇨🇰', 'nu': '🇳🇺', 'tk': '🇹🇰',
45
+
46
+ # Caribbean & Atlantic
47
+ 'bm': '🇧🇲', 'ky': '🇰🇾', 'vi': '🇻🇮', 'ag': '🇦🇬', 'dm': '🇩🇲',
48
+ 'gd': '🇬🇩', 'kn': '🇰🇳', 'lc': '🇱🇨', 'vc': '🇻🇨', 'ai': '🇦🇮',
49
+ 'ms': '🇲🇸', 'gp': '🇬🇵', 'mq': '🇲🇶', 'gf': '🇬🇫', 'aw': '🇦🇼',
50
+ 'cw': '🇨🇼', 'sx': '🇸🇽', 'bq': '🇧🇶', 'tc': '🇹🇨', 'vg': '🇻🇬',
51
+
52
+ # Indian Ocean
53
+ 'mu': '🇲🇺', 'sc': '🇸🇨', 're': '🇷🇪', 'yt': '🇾🇹', 'km': '🇰🇲',
54
+ 'mv': '🇲🇻', 'io': '🇮🇴', 'cx': '🇨🇽', 'cc': '🇨🇨', 'hm': '🇭🇲',
55
+
56
+ # Arctic & Antarctic
57
+ 'gl': '🇬🇱', 'fo': '🇫🇴', 'sj': '🇸🇯', 'ax': '🇦🇽', 'tf': '🇹🇫',
58
+ 'bv': '🇧🇻', 'gs': '🇬🇸', 'aq': '🇦🇶', 'tf': '🇹🇫',
59
+
60
+ # Special territories
61
+ 'eu': '🇪🇺', 'un': '🇺🇳', 'ac': '🇦🇨', 'ta': '🇹🇦', 'cp': '🇨🇵',
62
+ 'dg': '🇩🇬', 'ea': '🇪🇦', 'ic': '🇮🇨', 'xk': '🇽🇰'
63
+ }
64
+
1
65
  export class Localization
2
66
  onready
3
67
  onerror
@@ -65,70 +129,6 @@ export class Localization
65
129
 
66
130
  export const path-arrow-down = <path d="M213.66,165.66a8,8,0,0,1-11.32,0L128,91.31,53.66,165.66a8,8,0,0,1-11.32-11.32l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,213.66,165.66Z">
67
131
 
68
- # Emoji flags mapping - comprehensive list by region
69
- const flags = {
70
- # Europe
71
- 'gb': '🇬🇧', 'us': '🇺🇸', 'ru': '🇷🇺', 'de': '🇩🇪', 'fr': '🇫🇷',
72
- 'es': '🇪🇸', 'it': '🇮🇹', 'nl': '🇳🇱', 'pl': '🇵🇱', 'ua': '🇺🇦',
73
- 'cz': '🇨🇿', 'gr': '🇬🇷', 'hu': '🇭🇺', 'ro': '🇷🇴', 'se': '🇸🇪',
74
- 'no': '🇳🇴', 'dk': '🇩🇰', 'fi': '🇫🇮', 'pt': '🇵🇹', 'ie': '🇮🇪',
75
- 'be': '🇧🇪', 'at': '🇦🇹', 'ch': '🇨🇭', 'sk': '🇸🇰', 'bg': '🇧🇬',
76
- 'hr': '🇭🇷', 'rs': '🇷🇸', 'si': '🇸🇮', 'lt': '🇱🇹', 'lv': '🇱🇻',
77
- 'ee': '🇪🇪', 'is': '🇮🇸', 'lu': '🇱🇺', 'mt': '🇲🇹', 'cy': '🇨🇾',
78
- 'ba': '🇧🇦', 'mk': '🇲🇰', 'al': '🇦🇱', 'md': '🇲🇩', 'me': '🇲🇪',
79
- 'by': '🇧🇾', 'ru': '🇷🇺', 'ge': '🇬🇪', 'am': '🇦🇲', 'az': '🇦🇿',
80
-
81
- # Asia
82
- 'cn': '🇨🇳', 'jp': '🇯🇵', 'kr': '🇰🇷', 'in': '🇮🇳', 'id': '🇮🇩',
83
- 'th': '🇹🇭', 'vn': '🇻🇳', 'ph': '🇵🇭', 'sg': '🇸🇬', 'my': '🇲🇾',
84
- 'hk': '🇭🇰', 'tw': '🇹🇼', 'pk': '🇵🇰', 'bd': '🇧🇩', 'lk': '🇱🇰',
85
- 'kh': '🇰🇭', 'la': '🇱🇦', 'mm': '🇲🇲', 'bn': '🇧🇳', 'mo': '🇲🇴',
86
- 'mn': '🇲🇳', 'np': '🇳🇵', 'bt': '🇧🇹', 'mv': '🇲🇻', 'kz': '🇰🇿',
87
- 'uz': '🇺🇿', 'tm': '🇹🇲', 'kg': '🇰🇬', 'tj': '🇹🇯', 'af': '🇦🇫',
88
-
89
- # Middle East
90
- 'tr': '🇹🇷', 'il': '🇮🇱', 'ae': '🇦🇪', 'sa': '🇸🇦', 'qa': '🇶🇦',
91
- 'kw': '🇰🇼', 'bh': '🇧🇭', 'om': '🇴🇲', 'jo': '🇯🇴', 'lb': '🇱🇧',
92
- 'iq': '🇮🇶', 'ir': '🇮🇷', 'sy': '🇸🇾', 'ye': '🇾🇪', 'ps': '🇵🇸',
93
-
94
- # Americas
95
- 'br': '🇧🇷', 'mx': '🇲🇽', 'ca': '🇨🇦', 'ar': '🇦🇷', 'cl': '🇨🇱',
96
- 'co': '🇨🇴', 'pe': '🇵🇪', 've': '🇻🇪', 'ec': '🇪🇨', 'uy': '🇺🇾',
97
- 'py': '🇵🇾', 'bo': '🇧🇴', 'cr': '🇨🇷', 'pa': '🇵🇦', 'gt': '🇬🇹',
98
- 'cu': '🇨🇺', 'do': '🇩🇴', 'hn': '🇭🇳', 'sv': '🇸🇻', 'ni': '🇳🇮',
99
- 'jm': '🇯🇲', 'tt': '🇹🇹', 'bs': '🇧🇸', 'bb': '🇧🇧', 'pr': '🇵🇷',
100
-
101
- # Africa
102
- 'za': '🇿🇦', 'eg': '🇪🇬', 'ng': '🇳🇬', 'ke': '🇰🇪', 'gh': '🇬🇭',
103
- 'ma': '🇲🇦', 'dz': '🇩🇿', 'tn': '🇹🇳', 'et': '🇪🇹', 'tz': '🇹🇿',
104
- 'ug': '🇺🇬', 'zw': '🇿🇼', 'ao': '🇦🇴', 'cm': '🇨🇲', 'ci': '🇨🇮',
105
- 'cd': '🇨🇩', 'sn': '🇸🇳', 'ml': '🇲🇱', 'bf': '🇧🇫', 'ne': '🇳🇪',
106
- 'tg': '🇹🇬', 'bw': '🇧🇼', 'na': '🇳🇦', 'mz': '🇲🇿', 'mg': '🇲🇬',
107
-
108
- # Oceania
109
- 'au': '🇦🇺', 'nz': '🇳🇿', 'fj': '🇫🇯', 'pg': '🇵🇬', 'ws': '🇼🇸',
110
- 'to': '🇹🇴', 'vu': '🇻🇺', 'sb': '🇸🇧', 'nc': '🇳🇨', 'pf': '🇵🇫',
111
- 'gu': '🇬🇺', 'as': '🇦🇸', 'ck': '🇨🇰', 'nu': '🇳🇺', 'tk': '🇹🇰',
112
-
113
- # Caribbean & Atlantic
114
- 'bm': '🇧🇲', 'ky': '🇰🇾', 'vi': '🇻🇮', 'ag': '🇦🇬', 'dm': '🇩🇲',
115
- 'gd': '🇬🇩', 'kn': '🇰🇳', 'lc': '🇱🇨', 'vc': '🇻🇨', 'ai': '🇦🇮',
116
- 'ms': '🇲🇸', 'gp': '🇬🇵', 'mq': '🇲🇶', 'gf': '🇬🇫', 'aw': '🇦🇼',
117
- 'cw': '🇨🇼', 'sx': '🇸🇽', 'bq': '🇧🇶', 'tc': '🇹🇨', 'vg': '🇻🇬',
118
-
119
- # Indian Ocean
120
- 'mu': '🇲🇺', 'sc': '🇸🇨', 're': '🇷🇪', 'yt': '🇾🇹', 'km': '🇰🇲',
121
- 'mv': '🇲🇻', 'io': '🇮🇴', 'cx': '🇨🇽', 'cc': '🇨🇨', 'hm': '🇭🇲',
122
-
123
- # Arctic & Antarctic
124
- 'gl': '🇬🇱', 'fo': '🇫🇴', 'sj': '🇸🇯', 'ax': '🇦🇽', 'tf': '🇹🇫',
125
- 'bv': '🇧🇻', 'gs': '🇬🇸', 'aq': '🇦🇶', 'tf': '🇹🇫',
126
-
127
- # Special territories
128
- 'eu': '🇪🇺', 'un': '🇺🇳', 'ac': '🇦🇨', 'ta': '🇹🇦', 'cp': '🇨🇵',
129
- 'dg': '🇩🇬', 'ea': '🇪🇦', 'ic': '🇮🇨', 'xk': '🇽🇰'
130
- }
131
-
132
132
  tag language-selector
133
133
  state
134
134
  #dropdown = false
@@ -136,9 +136,6 @@ tag language-selector
136
136
  passive = false
137
137
  first = true # Show selected language first in dropdown
138
138
 
139
- def setup
140
- data = state.active
141
-
142
139
  def onselect key
143
140
  #dropdown = false
144
141
  data = key
@@ -195,22 +192,23 @@ tag language-selector
195
192
  .text fs:13px bd:1px solid transparent
196
193
 
197
194
  <self [pos:rel] @mouseenter=mouseenter @mouseleave=mouseleave @click=click>
198
- <div.container [pos:rel d:hcc] .active=#dropdown [cursor:pointer]=(Object.keys(state.languages).length > 1)>
199
- <span.flag> flag(state[data])
200
- <div.name> name(state[data])
201
- if Object.keys(state.languages).length > 1
202
- <svg.arrow [ead:$ease] .active=#dropdown viewBox="0 0 256 256">
203
- <{arrow}>
195
+ <global @click.outside=(do #dropdown = false)>
196
+ <div.container [pos:rel d:hcc] .active=#dropdown [cursor:pointer]=(Object.keys(state.languages).length > 1)>
197
+ <span.flag> flag(state.languages[data])
198
+ <div.name> name(state.languages[data])
199
+ if Object.keys(state.languages).length > 1
200
+ <svg.arrow [ead:$ease] .active=#dropdown viewBox="0 0 256 256">
201
+ <{arrow}>
204
202
 
205
- if #dropdown and Object.keys(state.languages).length > 1
206
- <div$menu.menu [pos:abs w:100% > max-content o@off:0] ease>
207
- # Current language first (if first is true)
208
- if first
209
- <div.item @click.trap=onselect(data)>
210
- <span.icon> flag(state[data])
211
- <span.text> name(state[data])
212
- # Other languages
213
- for own key, value of state.languages
214
- <div.item @click.trap=onselect(key) [d:none]=(key == data && first)>
215
- <span.icon> flag(value)
216
- <span.text> name(value)
203
+ if #dropdown and Object.keys(state.languages).length > 1
204
+ <div$menu.menu [pos:abs w:100% > max-content o@off:0] ease>
205
+ # Current language first (if first is true)
206
+ if first
207
+ <div.item>
208
+ <span.icon> flag(state.languages[data])
209
+ <span.text> name(state.languages[data])
210
+ # Other languages
211
+ for own key, value of state.languages
212
+ <div.item @click.trap=onselect(key) [d:none]=(key == data && first)>
213
+ <span.icon> flag(value)
214
+ <span.text> name(value)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "imba-localization",
3
- "version": "0.4.8",
3
+ "version": "0.4.9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/HeapVoid/imba-localization.git"