@liquidcommercedev/rmn-sdk 1.5.0-beta.30 → 1.5.0-beta.32

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/dist/index.esm.js CHANGED
@@ -6130,773 +6130,1161 @@ function getEventTypeFromRawEvent(event) {
6130
6130
  return null;
6131
6131
  }
6132
6132
 
6133
- const SPOT_EVENTS_EXAMPLE = [
6134
- {
6135
- event: RMN_SPOT_EVENT.CLICK,
6136
- url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwidXIiOm51bGx9&s=hWz37kbxi_u95EVNn2aoQhc5Aas',
6137
- },
6138
- {
6139
- event: RMN_SPOT_EVENT.IMPRESSION,
6140
- url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiYmEiOjEsImZxIjowfQ&s=djoysjCimurf-5T11AlNAwwLSS8',
6141
- },
6142
- {
6143
- event: RMN_SPOT_EVENT.PURCHASE,
6144
- url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiZXQiOjU5fQ&s=AAPAw-3SfZ0JMzjEGFSwt9L-2S4',
6145
- },
6146
- {
6147
- event: RMN_SPOT_EVENT.ADD_TO_CART,
6148
- url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiZXQiOjYwfQ&s=uzQFcjgL7m9XqUG8FvTPVN5YkZY',
6149
- },
6150
- {
6151
- event: RMN_SPOT_EVENT.ADD_TO_WISHLIST,
6152
- url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiZXQiOjYzfQ&s=m3ISU_iIy-OFtXrTKpI6cJAEC0k',
6153
- },
6154
- {
6155
- event: RMN_SPOT_EVENT.BUY_NOW,
6156
- url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiZXQiOjY5fQ&s=l6MOscQC-q-FkC2Ksd7w6jjySCQ',
6157
- },
6158
- ];
6159
- ({
6160
- rbHomepageHero: [
6161
- {
6162
- id: 'abc123',
6163
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6164
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6165
- width: 1140,
6166
- height: 640,
6167
- header: 'Premium Wine Collection',
6168
- description: 'Discover our exclusive selection of vintage wines',
6169
- ctaText: 'Shop Wines',
6170
- textColor: '#ffffff',
6171
- ctaTextColor: '#ffffff',
6172
- primaryImage: 'https://placehold.co/1140x640/png?text=Wine+Collection',
6173
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Wine',
6174
- events: SPOT_EVENTS_EXAMPLE,
6175
- productIds: [1, 2, 3],
6176
- },
6177
- {
6178
- id: 'jkl012',
6179
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6180
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6181
- width: 1140,
6182
- height: 640,
6183
- header: 'Whiskey Collection',
6184
- description: 'Premium whiskeys from around the world',
6185
- ctaText: 'Shop Whiskeys',
6186
- textColor: '#ffffff',
6187
- backgroundColor: '#2c1810',
6188
- ctaTextColor: '#2c1810',
6189
- primaryImage: 'https://placehold.co/1140x640/png?text=Whiskey',
6190
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Whiskey',
6191
- events: SPOT_EVENTS_EXAMPLE,
6192
- productIds: [10, 11],
6193
- },
6194
- {
6195
- id: 'stu901',
6196
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6197
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6198
- width: 1140,
6199
- height: 640,
6200
- header: 'Summer Cocktails',
6201
- description: 'Essential spirits for summer mixing',
6202
- ctaText: 'Mix It Up',
6203
- textColor: '#ffffff',
6204
- backgroundColor: '#4d3a0a',
6205
- ctaTextColor: '#4d3a0a',
6206
- primaryImage: 'https://placehold.co/1140x640/png?text=Cocktails',
6207
- secondaryImage: 'https://placehold.co/1140x640/png?text=Mixers',
6208
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Cocktails',
6209
- mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Mixers',
6210
- events: SPOT_EVENTS_EXAMPLE,
6211
- productIds: [16, 17, 18],
6212
- },
6213
- {
6214
- id: 'def456',
6215
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6216
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6217
- width: 1140,
6218
- height: 640,
6219
- header: 'Craft Beer Festival',
6220
- description: 'Local breweries and exclusive releases',
6221
- ctaText: 'Explore Beers',
6222
- textColor: '#ffffff',
6223
- ctaTextColor: '#ffffff',
6224
- primaryImage: 'https://placehold.co/1140x640/png?text=Beer+Festival',
6225
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Beer',
6226
- events: SPOT_EVENTS_EXAMPLE,
6227
- productIds: [4, 5, 6],
6228
- },
6229
- {
6230
- id: 'mno345',
6231
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6232
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6233
- width: 1140,
6234
- height: 640,
6235
- header: 'Champagne Selection',
6236
- description: 'Finest champagnes for every occasion',
6237
- ctaText: 'View Champagnes',
6238
- textColor: '#ffffff',
6239
- backgroundColor: '#1a1a1a',
6240
- ctaTextColor: '#1a1a1a',
6241
- primaryImage: 'https://placehold.co/1140x640/png?text=Champagne',
6242
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Champagne',
6243
- events: SPOT_EVENTS_EXAMPLE,
6244
- productIds: [12, 13],
6245
- },
6246
- {
6247
- id: 'vwx234',
6248
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6249
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6250
- width: 1140,
6251
- height: 640,
6252
- header: 'Wine Regions',
6253
- description: 'Explore wines from top regions',
6254
- ctaText: 'Tour Regions',
6255
- textColor: '#ffffff',
6256
- backgroundColor: '#4d0a0a',
6257
- ctaTextColor: '#4d0a0a',
6258
- primaryImage: 'https://placehold.co/1140x640/png?text=Wine+Regions',
6259
- secondaryImage: 'https://placehold.co/1140x640/png?text=Vineyards',
6260
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Regions',
6261
- mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Vineyards',
6262
- events: SPOT_EVENTS_EXAMPLE,
6263
- productIds: [19, 20, 21],
6264
- },
6265
- {
6266
- id: 'ghi789',
6267
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6268
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6269
- width: 1140,
6270
- height: 640,
6271
- header: 'Rare Spirits',
6272
- description: 'Limited edition spirits collection',
6273
- ctaText: 'View Collection',
6274
- textColor: '#ffffff',
6275
- ctaTextColor: '#ffffff',
6276
- primaryImage: 'https://placehold.co/1140x640/png?text=Rare+Spirits',
6277
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Spirits',
6278
- events: SPOT_EVENTS_EXAMPLE,
6279
- productIds: [7, 8, 9],
6280
- },
6281
- {
6282
- id: 'pqr678',
6283
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6284
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6285
- width: 1140,
6286
- height: 640,
6287
- header: 'Gin Collection',
6288
- description: 'Artisanal gins and botanicals',
6289
- ctaText: 'Explore Gins',
6290
- textColor: '#ffffff',
6291
- backgroundColor: '#0a4d4d',
6292
- ctaTextColor: '#0a4d4d',
6293
- primaryImage: 'https://placehold.co/1140x640/png?text=Gin',
6294
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Gin',
6295
- events: SPOT_EVENTS_EXAMPLE,
6296
- productIds: [14, 15],
6297
- },
6298
- {
6299
- id: 'yz5678',
6300
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6301
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6302
- width: 1140,
6303
- height: 640,
6304
- header: 'Tequila Collection',
6305
- description: 'Premium tequilas and mezcals',
6306
- ctaText: 'Shop Tequila',
6307
- textColor: '#ffffff',
6308
- backgroundColor: '#0a4d2b',
6309
- ctaTextColor: '#0a4d2b',
6310
- primaryImage: 'https://placehold.co/1140x640/png?text=Tequila',
6311
- secondaryImage: 'https://placehold.co/1140x640/png?text=Mezcal',
6312
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Tequila',
6313
- mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Mezcal',
6314
- events: SPOT_EVENTS_EXAMPLE,
6315
- productIds: [22, 23, 24],
6316
- },
6317
- ],
6318
- rbHomepageHeroFullImage: [
6319
- {
6320
- id: 'hjk567',
6321
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6322
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6323
- width: 1140,
6324
- height: 640,
6325
- header: 'Holiday Gift Guide',
6326
- description: 'Perfect spirits for every occasion',
6327
- ctaText: 'Shop Gifts',
6328
- textColor: '#ffffff',
6329
- ctaTextColor: '#ffffff',
6330
- primaryImage: 'https://placehold.co/1140x640/png?text=Gift+Guide',
6331
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Gifts',
6332
- events: SPOT_EVENTS_EXAMPLE,
6333
- productIds: [25, 26],
6334
- },
6335
- {
6336
- id: 'qwe890',
6337
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6338
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
6339
- width: 1140,
6340
- height: 640,
6341
- header: 'Summer Wine Festival',
6342
- description: 'Refreshing wines for summer',
6343
- ctaText: 'Shop Festival',
6344
- textColor: '#ffffff',
6345
- ctaTextColor: '#ffffff',
6346
- primaryImage: 'https://placehold.co/1140x640/png?text=Wine+Festival',
6347
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Festival',
6348
- events: SPOT_EVENTS_EXAMPLE,
6349
- productIds: [27, 28],
6350
- },
6351
- ],
6352
- rbHomepageHeroTwoTile: [
6353
- {
6354
- id: 'iop987',
6355
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6356
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6357
- width: 1140,
6358
- height: 640,
6359
- header: 'Bourbon Selection',
6360
- description: "Kentucky's finest bourbons",
6361
- ctaText: 'Shop Bourbon',
6362
- textColor: '#ffffff',
6363
- backgroundColor: '#2c1810',
6364
- ctaTextColor: '#2c1810',
6365
- primaryImage: 'https://placehold.co/1140x640/png?text=Bourbon',
6366
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Bourbon',
6367
- events: SPOT_EVENTS_EXAMPLE,
6368
- productIds: [29, 30],
6369
- },
6370
- {
6371
- id: 'lkj012',
6372
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6373
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
6374
- width: 1140,
6375
- height: 640,
6376
- header: 'Vodka Collection',
6377
- description: 'Premium vodkas from around the world',
6378
- ctaText: 'Shop Vodka',
6379
- textColor: '#ffffff',
6380
- backgroundColor: '#1a1a1a',
6381
- ctaTextColor: '#1a1a1a',
6382
- primaryImage: 'https://placehold.co/1140x640/png?text=Vodka',
6383
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Vodka',
6384
- events: SPOT_EVENTS_EXAMPLE,
6385
- productIds: [31, 32],
6386
- },
6387
- ],
6388
- rbHomepageHeroThreeTile: [
6389
- {
6390
- id: 'bnm345',
6391
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6392
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6393
- width: 1140,
6394
- height: 640,
6395
- header: 'Rum Collection',
6396
- description: 'Caribbean and craft rums',
6397
- ctaText: 'Shop Rum',
6398
- textColor: '#ffffff',
6399
- backgroundColor: '#4d3a0a',
6400
- ctaTextColor: '#4d3a0a',
6401
- primaryImage: 'https://placehold.co/1140x640/png?text=Rum',
6402
- secondaryImage: 'https://placehold.co/1140x640/png?text=Craft+Rum',
6403
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Rum',
6404
- mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Craft',
6405
- events: SPOT_EVENTS_EXAMPLE,
6406
- productIds: [33, 34],
6407
- },
6408
- {
6409
- id: 'fgh678',
6410
- spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6411
- variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
6412
- width: 1140,
6413
- height: 640,
6414
- header: 'Scotch Selection',
6415
- description: 'Single malts and blends',
6416
- ctaText: 'Shop Scotch',
6417
- textColor: '#ffffff',
6418
- backgroundColor: '#4d0a0a',
6419
- ctaTextColor: '#4d0a0a',
6420
- primaryImage: 'https://placehold.co/1140x640/png?text=Scotch',
6421
- secondaryImage: 'https://placehold.co/1140x640/png?text=Single+Malts',
6422
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Scotch',
6423
- mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Malts',
6424
- events: SPOT_EVENTS_EXAMPLE,
6425
- productIds: [35, 36],
6426
- },
6427
- ],
6428
- rbLargeCategoryImageTout: [
6429
- {
6430
- id: 'cde567',
6431
- spot: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
6432
- variant: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
6433
- width: 468,
6434
- height: 410,
6435
- header: 'Rare & Limited Edition',
6436
- description: 'Discover our collection of hard-to-find and limited release spirits.',
6437
- textColor: '#ffffff',
6438
- ctaTextColor: '#ffffff',
6439
- primaryImage: 'https://placehold.co/468x410/png?text=Rare+Spirits',
6440
- mobilePrimaryImage: 'https://placehold.co/468x410/png?text=Mobile+Rare+Spirits',
6441
- ctaText: 'Shop Rare Spirits',
6442
- events: SPOT_EVENTS_EXAMPLE,
6443
- productIds: [37, 38, 39, 40, 41],
6444
- },
6445
- {
6446
- id: 'efg789',
6447
- spot: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
6448
- variant: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
6449
- width: 468,
6450
- height: 410,
6451
- header: 'Vintage Champagnes',
6452
- description: 'Explore our prestigious collection of aged champagnes.',
6453
- textColor: '#ffffff',
6454
- ctaTextColor: '#ffffff',
6455
- primaryImage: 'https://placehold.co/468x410/png?text=Vintage+Champagne',
6456
- mobilePrimaryImage: 'https://placehold.co/468x410/png?text=Mobile+Champagne',
6457
- ctaText: 'View Collection',
6458
- events: SPOT_EVENTS_EXAMPLE,
6459
- productIds: [42, 43, 44, 45, 46],
6460
- },
6461
- {
6462
- id: 'ghi012',
6463
- spot: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
6464
- variant: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
6465
- width: 468,
6466
- height: 410,
6467
- header: 'Small Batch Bourbon',
6468
- description: 'Hand-selected premium bourbon from craft distilleries.',
6469
- textColor: '#ffffff',
6470
- ctaTextColor: '#ffffff',
6471
- primaryImage: 'https://placehold.co/468x410/png?text=Craft+Bourbon',
6472
- mobilePrimaryImage: 'https://placehold.co/468x410/png?text=Mobile+Bourbon',
6473
- ctaText: 'Explore Bourbon',
6474
- events: SPOT_EVENTS_EXAMPLE,
6475
- productIds: [47, 48, 49, 50, 51],
6476
- },
6477
- ],
6478
- rbSmallDiscoverTout: [
6479
- {
6480
- id: 'jkl345',
6481
- spot: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
6482
- variant: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
6483
- width: 224,
6484
- height: 378,
6485
- header: 'Château Margaux 2015 Bordeaux',
6486
- textColor: '#ffffff',
6487
- primaryImage: 'https://placehold.co/224x378/png?text=Château+Margaux',
6488
- mobilePrimaryImage: 'https://placehold.co/224x378/png?text=Mobile+Château+Margaux',
6489
- events: SPOT_EVENTS_EXAMPLE,
6490
- productIds: [52, 53, 54, 55, 56],
6491
- },
6492
- {
6493
- id: 'lmn678',
6494
- spot: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
6495
- variant: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
6496
- width: 224,
6497
- height: 378,
6498
- header: 'Macallan 25 Year',
6499
- textColor: '#ffffff',
6500
- primaryImage: 'https://placehold.co/224x378/png?text=Macallan+25',
6501
- mobilePrimaryImage: 'https://placehold.co/224x378/png?text=Mobile+Macallan',
6502
- events: SPOT_EVENTS_EXAMPLE,
6503
- productIds: [57, 58, 59, 60, 61],
6504
- },
6505
- {
6506
- id: 'nop901',
6507
- spot: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
6508
- variant: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
6509
- width: 224,
6510
- height: 378,
6511
- header: 'Louis XIII Cognac',
6512
- textColor: '#ffffff',
6513
- primaryImage: 'https://placehold.co/224x378/png?text=Louis+XIII',
6514
- mobilePrimaryImage: 'https://placehold.co/224x378/png?text=Mobile+Louis+XIII',
6515
- events: SPOT_EVENTS_EXAMPLE,
6516
- productIds: [62, 63, 64, 65, 66],
6517
- },
6518
- ],
6519
- rbSmallCategoryImageTout: [
6520
- {
6521
- id: 'qrs234',
6522
- spot: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
6523
- variant: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
6524
- width: 224,
6525
- height: 410,
6526
- header: 'Japanese Sake',
6527
- textColor: '#ffffff',
6528
- primaryImage: 'https://placehold.co/224x410/png?text=Japanese+Sake',
6529
- mobilePrimaryImage: 'https://placehold.co/224x410/png?text=Mobile+Japanese+Sake',
6530
- events: SPOT_EVENTS_EXAMPLE,
6531
- productIds: [67, 68, 69, 70, 71],
6532
- },
6533
- {
6534
- id: 'stu567',
6535
- spot: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
6536
- variant: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
6537
- width: 224,
6538
- height: 410,
6539
- header: 'Craft Vermouth',
6540
- textColor: '#ffffff',
6541
- primaryImage: 'https://placehold.co/224x410/png?text=Craft+Vermouth',
6542
- mobilePrimaryImage: 'https://placehold.co/224x410/png?text=Mobile+Vermouth',
6543
- events: SPOT_EVENTS_EXAMPLE,
6544
- productIds: [72, 73, 74, 75, 76],
6545
- },
6546
- {
6547
- id: 'vwx890',
6548
- spot: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
6549
- variant: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
6550
- width: 224,
6551
- height: 410,
6552
- header: 'Premium Mezcal',
6553
- textColor: '#ffffff',
6554
- primaryImage: 'https://placehold.co/224x410/png?text=Premium+Mezcal',
6555
- mobilePrimaryImage: 'https://placehold.co/224x410/png?text=Mobile+Mezcal',
6556
- events: SPOT_EVENTS_EXAMPLE,
6557
- productIds: [77, 78, 79, 80, 81],
6558
- },
6559
- ],
6560
- rbCollectionBannerWithoutTextBlock: [
6561
- {
6562
- id: 'yz1234',
6563
- spot: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
6564
- variant: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
6565
- width: 887,
6566
- height: 344,
6567
- primaryImage: 'https://placehold.co/887x344/png?text=Summer+Cocktails',
6568
- mobilePrimaryImage: 'https://placehold.co/887x344/png?text=Mobile+Summer+Cocktails',
6569
- events: SPOT_EVENTS_EXAMPLE,
6570
- productIds: [82, 83, 84, 85, 86],
6571
- },
6572
- {
6573
- id: 'abc567',
6574
- spot: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
6575
- variant: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
6576
- width: 887,
6577
- height: 344,
6578
- primaryImage: 'https://placehold.co/887x344/png?text=Holiday+Spirits',
6579
- mobilePrimaryImage: 'https://placehold.co/887x344/png?text=Mobile+Holiday+Spirits',
6580
- events: SPOT_EVENTS_EXAMPLE,
6581
- productIds: [87, 88, 89, 90, 91],
6582
- },
6583
- {
6584
- id: 'def901',
6585
- spot: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
6586
- variant: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
6587
- width: 887,
6588
- height: 344,
6589
- primaryImage: 'https://placehold.co/887x344/png?text=Wine+Essentials',
6590
- mobilePrimaryImage: 'https://placehold.co/887x344/png?text=Mobile+Wine+Essentials',
6591
- events: SPOT_EVENTS_EXAMPLE,
6592
- productIds: [92, 93, 94, 95, 96],
6593
- },
6594
- ],
6595
- rbNavigationBanner: [
6596
- {
6597
- id: 'ghi234',
6598
- spot: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
6599
- variant: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
6600
- width: 440,
6601
- height: 220,
6602
- header: 'Explore Tequilas',
6603
- textColor: '#ffffff',
6604
- primaryImage: 'https://placehold.co/440x220/png?text=Tequila+Collection',
6605
- mobilePrimaryImage: 'https://placehold.co/440x220/png?text=Mobile+Tequila+Collection',
6606
- events: SPOT_EVENTS_EXAMPLE,
6607
- productIds: [97, 98, 99, 100, 101],
6608
- },
6609
- {
6610
- id: 'jkl678',
6611
- spot: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
6612
- variant: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
6613
- width: 440,
6614
- height: 220,
6615
- header: 'Craft Gin Selection',
6616
- textColor: '#ffffff',
6617
- primaryImage: 'https://placehold.co/440x220/png?text=Gin+Selection',
6618
- mobilePrimaryImage: 'https://placehold.co/440x220/png?text=Mobile+Gin+Selection',
6619
- events: SPOT_EVENTS_EXAMPLE,
6620
- productIds: [102, 103, 104, 105, 106],
6621
- },
6622
- {
6623
- id: 'mno012',
6624
- spot: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
6625
- variant: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
6626
- width: 440,
6627
- height: 220,
6628
- header: 'Premium Vodka',
6629
- textColor: '#ffffff',
6630
- primaryImage: 'https://placehold.co/440x220/png?text=Vodka+Premium',
6631
- mobilePrimaryImage: 'https://placehold.co/440x220/png?text=Mobile+Vodka+Premium',
6632
- events: SPOT_EVENTS_EXAMPLE,
6633
- productIds: [107, 108, 109, 110, 111],
6634
- },
6635
- ],
6636
- rbInText: [
6637
- {
6638
- id: 'mxo259',
6639
- spot: RMN_SPOT_TYPE.RB_IN_TEXT,
6640
- variant: RMN_SPOT_TYPE.RB_IN_TEXT,
6641
- width: 1,
6642
- height: 1,
6643
- header: 'Premium Vodka',
6644
- textColor: '#ffffff',
6645
- backgroundColor: '#000000',
6646
- events: SPOT_EVENTS_EXAMPLE,
6647
- productIds: [107, 108, 109, 110, 111],
6648
- },
6649
- ],
6650
- rbVideoPlayer: [
6651
- {
6652
- id: 'mxo259',
6653
- spot: RMN_SPOT_TYPE.RB_VIDEO_PLAYER,
6654
- variant: RMN_SPOT_TYPE.RB_VIDEO_PLAYER,
6655
- width: 1280,
6656
- height: 720,
6657
- videoUrl: 'https://www.youtube.com/watch?v=9bZkp7q19f0',
6658
- videoOverlayImage: 'https://placehold.co/1280x720/png?text=Video+Overlay',
6659
- videoOverlayHeader: 'Watch Our Story',
6660
- videoOverlayDescription: 'Discover the history of our distillery',
6661
- videoControls: true,
6662
- videoAutoPlay: true,
6663
- videoMute: true,
6664
- videoLoop: true,
6665
- events: SPOT_EVENTS_EXAMPLE,
6666
- productIds: [107, 108, 109, 110, 111],
6667
- },
6668
- ],
6669
- });
6670
- ({
6671
- banner: [],
6672
- billboard: [
6673
- {
6674
- id: 'kol567',
6675
- spot: RMN_SPOT_TYPE.BILLBOARD,
6676
- variant: `${RMN_SPOT_TYPE.BILLBOARD}V2`,
6677
- width: 1140,
6678
- height: 640,
6679
- header: 'Holiday Gift Guide',
6680
- description: 'Perfect spirits for every occasion',
6681
- ctaText: 'Shop Gifts',
6682
- textColor: '#ffffff',
6683
- ctaTextColor: '#ffffff',
6684
- primaryImage: 'https://placehold.co/1140x640/png?text=Gift+Guide',
6685
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Gifts',
6686
- events: SPOT_EVENTS_EXAMPLE,
6687
- productIds: [25, 26],
6688
- },
6689
- {
6690
- id: 'hpm390',
6691
- spot: RMN_SPOT_TYPE.BILLBOARD,
6692
- variant: `${RMN_SPOT_TYPE.BILLBOARD}V2`,
6693
- width: 1140,
6694
- height: 640,
6695
- header: 'Summer Wine Festival',
6696
- description: 'Refreshing wines for summer',
6697
- ctaText: 'Shop Festival',
6698
- textColor: '#ffffff',
6699
- ctaTextColor: '#ffffff',
6700
- primaryImage: 'https://placehold.co/1140x640/png?text=Wine+Festival',
6701
- mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Festival',
6702
- events: SPOT_EVENTS_EXAMPLE,
6703
- productIds: [27, 28],
6704
- },
6705
- ],
6706
- button2: [],
6707
- featurePhoneLargeBanner: [],
6708
- featurePhoneMediumBanner: [],
6709
- featurePhoneSmallBanner: [],
6710
- halfPage: [],
6711
- inText: [],
6712
- largeLeaderboard: [],
6713
- largeRectangle: [],
6714
- leaderboard: [],
6715
- mediumRectangle: [],
6716
- microBar: [],
6717
- mobilePhoneInterstitial1: [],
6718
- mobilePhoneInterstitial2: [],
6719
- mobilePhoneInterstitial3: [],
6720
- popUp: [],
6721
- portrait: [],
6722
- rbProductUpcs: [],
6723
- skyscraper: [],
6724
- smallRectangle: [],
6725
- smallSquare: [],
6726
- smartphoneBanner1: [],
6727
- smartphoneBanner2: [],
6728
- square: [],
6729
- verticalBanner: [],
6730
- verticalRectangle: [],
6731
- wideSkyscraper: [],
6732
- });
6733
-
6734
- const SPECIAL_CHARACTER_MAPPING = {
6735
- // Latin-1 Supplement and Latin Extended-A
6736
- æ: 'ae',
6133
+ const LATIN_MAP = {
6134
+ À: 'A',
6135
+ Á: 'A',
6136
+ Â: 'A',
6137
+ Ã: 'A',
6138
+ Ä: 'A',
6139
+ Å: 'A',
6140
+ Æ: 'AE',
6141
+ Ç: 'C',
6142
+ È: 'E',
6143
+ É: 'E',
6144
+ Ê: 'E',
6145
+ Ë: 'E',
6146
+ Ì: 'I',
6147
+ Í: 'I',
6148
+ Î: 'I',
6149
+ Ï: 'I',
6150
+ Ð: 'D',
6151
+ Ñ: 'N',
6152
+ Ò: 'O',
6153
+ Ó: 'O',
6154
+ Ô: 'O',
6155
+ Õ: 'O',
6156
+ Ö: 'O',
6157
+ Ő: 'O',
6158
+ Ø: 'O',
6159
+ Ù: 'U',
6160
+ Ú: 'U',
6161
+ Û: 'U',
6162
+ Ü: 'U',
6163
+ Ű: 'U',
6164
+ Ý: 'Y',
6165
+ Þ: 'TH',
6166
+ Ÿ: 'Y',
6737
6167
  ß: 'ss',
6168
+ à: 'a',
6169
+ á: 'a',
6170
+ â: 'a',
6171
+ ã: 'a',
6172
+ ä: 'a',
6173
+ å: 'a',
6174
+ æ: 'ae',
6175
+ ç: 'c',
6176
+ è: 'e',
6177
+ é: 'e',
6178
+ ê: 'e',
6179
+ ë: 'e',
6180
+ ì: 'i',
6181
+ í: 'i',
6182
+ î: 'i',
6183
+ ï: 'i',
6738
6184
  ð: 'd',
6185
+ ñ: 'n',
6186
+ ò: 'o',
6187
+ ó: 'o',
6188
+ ô: 'o',
6189
+ õ: 'o',
6190
+ ö: 'o',
6191
+ ő: 'o',
6739
6192
  ø: 'o',
6193
+ ù: 'u',
6194
+ ú: 'u',
6195
+ û: 'u',
6196
+ ü: 'u',
6197
+ ű: 'u',
6198
+ ý: 'y',
6740
6199
  þ: 'th',
6741
- ł: 'l',
6742
- đ: 'd',
6743
- ħ: 'h',
6744
- ı: 'i',
6745
- ij: 'ij',
6746
- ŀ: 'l',
6747
- ʼn: 'n',
6748
- ŋ: 'n',
6200
+ ÿ: 'y',
6749
6201
  œ: 'oe',
6750
- ŧ: 't',
6751
- ƀ: 'b',
6752
- ƃ: 'b',
6753
- ƅ: 'h',
6754
- ƈ: 'c',
6755
- ƌ: 'd',
6756
- ƍ: 'd',
6757
- ƒ: 'f',
6758
- ƕ: 'hv',
6759
- ƙ: 'k',
6760
- ƚ: 'l',
6761
- ƛ: 'l',
6762
- ƞ: 'n',
6763
- ơ: 'o',
6764
- ƣ: 'oi',
6765
- ƥ: 'p',
6766
- ƨ: 's',
6767
- ƭ: 't',
6768
- ư: 'u',
6769
- ƴ: 'y',
6770
- ƶ: 'z',
6771
- ƹ: 'zh',
6772
- ƽ: 'y',
6773
- dž: 'dz',
6774
- lj: 'lj',
6775
- nj: 'nj',
6776
- ǎ: 'a',
6777
- ǐ: 'i',
6778
- ǒ: 'o',
6779
- ǔ: 'u',
6780
- ǖ: 'u',
6781
- ǘ: 'u',
6782
- ǚ: 'u',
6783
- ǜ: 'u',
6784
- ǟ: 'a',
6785
- ǡ: 'a',
6786
- ǣ: 'ae',
6787
- ǥ: 'g',
6788
- ǧ: 'g',
6789
- ǩ: 'k',
6790
- ǫ: 'o',
6791
- ǭ: 'o',
6792
- ǯ: 'zh',
6793
- ǰ: 'j',
6794
- dz: 'dz',
6795
- ǵ: 'g',
6796
- ǹ: 'n',
6797
- ǻ: 'a',
6798
- ǽ: 'ae',
6799
- ǿ: 'o',
6800
- // Latin Extended-B
6801
- ȁ: 'a',
6802
- ȃ: 'a',
6803
- ȅ: 'e',
6804
- ȇ: 'e',
6805
- ȉ: 'i',
6806
- ȋ: 'i',
6807
- ȍ: 'o',
6808
- ȏ: 'o',
6809
- ȑ: 'r',
6810
- ȓ: 'r',
6811
- ȕ: 'u',
6812
- ȗ: 'u',
6202
+ };
6203
+ const GREEK_MAP = {
6204
+ α: 'a',
6205
+ β: 'b',
6206
+ γ: 'g',
6207
+ δ: 'd',
6208
+ ε: 'e',
6209
+ ζ: 'z',
6210
+ η: 'h',
6211
+ θ: '8',
6212
+ ι: 'i',
6213
+ κ: 'k',
6214
+ λ: 'l',
6215
+ μ: 'm',
6216
+ ν: 'n',
6217
+ ξ: '3',
6218
+ ο: 'o',
6219
+ π: 'p',
6220
+ ρ: 'r',
6221
+ σ: 's',
6222
+ τ: 't',
6223
+ υ: 'y',
6224
+ φ: 'f',
6225
+ χ: 'x',
6226
+ ψ: 'ps',
6227
+ ω: 'w',
6228
+ ά: 'a',
6229
+ έ: 'e',
6230
+ ί: 'i',
6231
+ ό: 'o',
6232
+ ύ: 'y',
6233
+ ή: 'h',
6234
+ ώ: 'w',
6235
+ ς: 's',
6236
+ ϊ: 'i',
6237
+ ΰ: 'y',
6238
+ ϋ: 'y',
6239
+ ΐ: 'i',
6240
+ Α: 'A',
6241
+ Β: 'B',
6242
+ Γ: 'G',
6243
+ Δ: 'D',
6244
+ Ε: 'E',
6245
+ Ζ: 'Z',
6246
+ Η: 'H',
6247
+ Θ: '8',
6248
+ Ι: 'I',
6249
+ Κ: 'K',
6250
+ Λ: 'L',
6251
+ Μ: 'M',
6252
+ Ν: 'N',
6253
+ Ξ: '3',
6254
+ Ο: 'O',
6255
+ Π: 'P',
6256
+ Ρ: 'R',
6257
+ Σ: 'S',
6258
+ Τ: 'T',
6259
+ Υ: 'Y',
6260
+ Φ: 'F',
6261
+ Χ: 'X',
6262
+ Ψ: 'PS',
6263
+ Ω: 'W',
6264
+ Ά: 'A',
6265
+ Έ: 'E',
6266
+ Ί: 'I',
6267
+ Ό: 'O',
6268
+ Ύ: 'Y',
6269
+ Ή: 'H',
6270
+ Ώ: 'W',
6271
+ Ϊ: 'I',
6272
+ Ϋ: 'Y',
6273
+ };
6274
+ const ROMANIAN_MAP = {
6275
+ ă: 'a',
6276
+ î: 'i',
6813
6277
  ș: 's',
6814
6278
  ț: 't',
6815
- ȝ: 'y',
6816
- ȟ: 'h',
6817
- ȥ: 'z',
6818
- ȧ: 'a',
6819
- ȩ: 'e',
6820
- ȫ: 'o',
6821
- ȭ: 'o',
6822
- ȯ: 'o',
6823
- ȱ: 'o',
6824
- ȳ: 'y',
6825
- ȴ: 'l',
6826
- ȵ: 'n',
6827
- ȶ: 't',
6828
- ȷ: 'j',
6829
- ȸ: 'db',
6830
- ȹ: 'qp',
6831
- ⱥ: 'a',
6832
- ⱦ: 't',
6833
- // IPA Extensions
6834
- ɐ: 'a',
6835
- ɑ: 'a',
6836
- ɒ: 'a',
6837
- ɓ: 'b',
6838
- ɔ: 'o',
6839
- ɕ: 'c',
6840
- ɖ: 'd',
6841
- ɗ: 'd',
6842
- ɘ: 'e',
6279
+ â: 'a',
6280
+ Ă: 'A',
6281
+ Î: 'I',
6282
+ Ș: 'S',
6283
+ Ț: 'T',
6284
+ Â: 'A',
6285
+ };
6286
+ const GERMAN_MAP = {
6287
+ ä: 'a',
6288
+ ö: 'o',
6289
+ ü: 'u',
6290
+ ß: 'ss',
6291
+ };
6292
+ const FRENCH_MAP = {
6293
+ é: 'e',
6294
+ è: 'e',
6295
+ ê: 'e',
6296
+ ë: 'e',
6297
+ à: 'a',
6298
+ â: 'a',
6299
+ î: 'i',
6300
+ ï: 'i',
6301
+ ô: 'o',
6302
+ û: 'u',
6303
+ ù: 'u',
6304
+ ç: 'c',
6305
+ };
6306
+ const ITALIAN_MAP = {
6307
+ à: 'a',
6308
+ è: 'e',
6309
+ é: 'e',
6310
+ ì: 'i',
6311
+ ò: 'o',
6312
+ ù: 'u',
6313
+ };
6314
+ const SPANISH_MAP = {
6315
+ á: 'a',
6316
+ í: 'i',
6317
+ ó: 'o',
6318
+ ú: 'u',
6319
+ ñ: 'n',
6320
+ ü: 'u',
6321
+ };
6322
+ const PORTUGUESE_MAP = {
6323
+ ã: 'a',
6324
+ õ: 'o',
6325
+ â: 'a',
6326
+ ê: 'e',
6327
+ ô: 'o',
6328
+ };
6329
+ const NORDIC_MAP = {
6330
+ å: 'a',
6331
+ æ: 'ae',
6332
+ ø: 'o',
6333
+ ě: 'e',
6334
+ };
6335
+ const TURKISH_MAP = {
6336
+ ğ: 'g',
6337
+ ı: 'i',
6338
+ İ: 'i',
6339
+ ş: 's',
6340
+ Ş: 'S',
6341
+ ç: 'c',
6342
+ Ç: 'C',
6343
+ ü: 'u',
6344
+ Ü: 'U',
6345
+ ö: 'o',
6346
+ Ö: 'O',
6347
+ Ğ: 'G',
6348
+ };
6349
+ const HUNGARIAN_MAP = {
6350
+ ő: 'o',
6351
+ ű: 'u',
6352
+ };
6353
+ const VIETNAMESE_MAP = {
6354
+ ạ: 'a',
6355
+ ả: 'a',
6356
+ ấ: 'a',
6357
+ ầ: 'a',
6358
+ ẩ: 'a',
6359
+ ẫ: 'a',
6360
+ ậ: 'a',
6361
+ đ: 'd',
6362
+ };
6363
+ const CROATIOAN_SEERBIAN_MAP = {
6364
+ đ: 'd',
6365
+ ć: 'c',
6366
+ č: 'c',
6367
+ };
6368
+ const BALLTIC_MAP = {
6369
+ ā: 'a',
6370
+ ē: 'e',
6371
+ ģ: 'g',
6372
+ ī: 'i',
6373
+ ķ: 'k',
6374
+ ļ: 'l',
6375
+ ņ: 'n',
6376
+ ū: 'u',
6377
+ ų: 'u',
6378
+ };
6379
+ const CHINESE_JAPANESE_PUNCTUATION_MAP = {
6380
+ '。': '.',
6381
+ '、': ',',
6382
+ '?': '?',
6383
+ '!': '!',
6384
+ ':': ':',
6385
+ ';': ';',
6386
+ '(': '(',
6387
+ ')': ')',
6388
+ '《': '<',
6389
+ '》': '>',
6390
+ };
6391
+ const RUSSIAN_MAP = {
6392
+ а: 'a',
6393
+ б: 'b',
6394
+ в: 'v',
6395
+ г: 'g',
6396
+ д: 'd',
6397
+ е: 'e',
6398
+ ё: 'yo',
6399
+ ж: 'zh',
6400
+ з: 'z',
6401
+ и: 'i',
6402
+ й: 'j',
6403
+ к: 'k',
6404
+ л: 'l',
6405
+ м: 'm',
6406
+ н: 'n',
6407
+ о: 'o',
6408
+ п: 'p',
6409
+ р: 'r',
6410
+ с: 's',
6411
+ т: 't',
6412
+ у: 'u',
6413
+ ф: 'f',
6414
+ х: 'h',
6415
+ ц: 'c',
6416
+ ч: 'ch',
6417
+ ш: 'sh',
6418
+ щ: 'sh',
6419
+ ъ: '',
6420
+ ы: 'y',
6421
+ ь: '',
6422
+ э: 'e',
6423
+ ю: 'yu',
6424
+ я: 'ya',
6425
+ А: 'A',
6426
+ Б: 'B',
6427
+ В: 'V',
6428
+ Г: 'G',
6429
+ Д: 'D',
6430
+ Е: 'E',
6431
+ Ё: 'Yo',
6432
+ Ж: 'Zh',
6433
+ З: 'Z',
6434
+ И: 'I',
6435
+ Й: 'J',
6436
+ К: 'K',
6437
+ Л: 'L',
6438
+ М: 'M',
6439
+ Н: 'N',
6440
+ О: 'O',
6441
+ П: 'P',
6442
+ Р: 'R',
6443
+ С: 'S',
6444
+ Т: 'T',
6445
+ У: 'U',
6446
+ Ф: 'F',
6447
+ Х: 'H',
6448
+ Ц: 'C',
6449
+ Ч: 'Ch',
6450
+ Ш: 'Sh',
6451
+ Щ: 'Sh',
6452
+ Ъ: '',
6453
+ Ы: 'Y',
6454
+ Ь: '',
6455
+ Э: 'E',
6456
+ Ю: 'Yu',
6457
+ Я: 'Ya',
6458
+ };
6459
+ const UKRAINIAN_MAP = {
6460
+ Є: 'Ye',
6461
+ І: 'I',
6462
+ Ї: 'Yi',
6463
+ Ґ: 'G',
6464
+ є: 'ye',
6465
+ і: 'i',
6466
+ ї: 'yi',
6467
+ ґ: 'g',
6468
+ };
6469
+ const CZECH_MAP = {
6470
+ č: 'c',
6471
+ ď: 'd',
6472
+ ě: 'e',
6473
+ ň: 'n',
6474
+ ř: 'r',
6475
+ š: 's',
6476
+ ť: 't',
6477
+ ů: 'u',
6478
+ ž: 'z',
6479
+ Č: 'C',
6480
+ Ď: 'D',
6481
+ Ě: 'E',
6482
+ Ň: 'N',
6483
+ Ř: 'R',
6484
+ Š: 'S',
6485
+ Ť: 'T',
6486
+ Ů: 'U',
6487
+ Ž: 'Z',
6488
+ };
6489
+ const SLOVAK_MAP = {
6490
+ á: 'a',
6491
+ ä: 'a',
6492
+ č: 'c',
6493
+ ď: 'd',
6494
+ é: 'e',
6495
+ í: 'i',
6496
+ ľ: 'l',
6497
+ ĺ: 'l',
6498
+ ň: 'n',
6499
+ ó: 'o',
6500
+ ô: 'o',
6501
+ ŕ: 'r',
6502
+ š: 's',
6503
+ ť: 't',
6504
+ ú: 'u',
6505
+ ý: 'y',
6506
+ ž: 'z',
6507
+ Á: 'a',
6508
+ Ä: 'A',
6509
+ Č: 'C',
6510
+ Ď: 'D',
6511
+ É: 'E',
6512
+ Í: 'I',
6513
+ Ľ: 'L',
6514
+ Ĺ: 'L',
6515
+ Ň: 'N',
6516
+ Ó: 'O',
6517
+ Ô: 'O',
6518
+ Ŕ: 'R',
6519
+ Š: 'S',
6520
+ Ť: 'T',
6521
+ Ú: 'U',
6522
+ Ý: 'Y',
6523
+ Ž: 'Z',
6524
+ };
6525
+ const POLISH_MAP = {
6526
+ ą: 'a',
6527
+ ć: 'c',
6528
+ ę: 'e',
6529
+ ł: 'l',
6530
+ ń: 'n',
6531
+ ó: 'o',
6532
+ ś: 's',
6533
+ ź: 'z',
6534
+ ż: 'z',
6535
+ Ą: 'A',
6536
+ Ć: 'C',
6537
+ Ę: 'E',
6538
+ Ł: 'L',
6539
+ Ń: 'N',
6540
+ Ó: 'O',
6541
+ Ś: 'S',
6542
+ Ź: 'Z',
6543
+ Ż: 'Z',
6544
+ };
6545
+ const LATVIAN_MAP = {
6546
+ ā: 'a',
6547
+ č: 'c',
6548
+ ē: 'e',
6549
+ ģ: 'g',
6550
+ ī: 'i',
6551
+ ķ: 'k',
6552
+ ļ: 'l',
6553
+ ņ: 'n',
6554
+ š: 's',
6555
+ ū: 'u',
6556
+ ž: 'z',
6557
+ Ā: 'A',
6558
+ Č: 'C',
6559
+ Ē: 'E',
6560
+ Ģ: 'G',
6561
+ Ī: 'I',
6562
+ Ķ: 'K',
6563
+ Ļ: 'L',
6564
+ Ņ: 'N',
6565
+ Š: 'S',
6566
+ Ū: 'U',
6567
+ Ž: 'Z',
6568
+ };
6569
+ const ARABIC_MAP = {
6570
+ أ: 'a',
6571
+ ب: 'b',
6572
+ ت: 't',
6573
+ ث: 'th',
6574
+ ج: 'g',
6575
+ ح: 'h',
6576
+ خ: 'kh',
6577
+ د: 'd',
6578
+ ذ: 'th',
6579
+ ر: 'r',
6580
+ ز: 'z',
6581
+ س: 's',
6582
+ ش: 'sh',
6583
+ ص: 's',
6584
+ ض: 'd',
6585
+ ط: 't',
6586
+ ظ: 'th',
6587
+ ع: 'aa',
6588
+ غ: 'gh',
6589
+ ف: 'f',
6590
+ ق: 'k',
6591
+ ك: 'k',
6592
+ ل: 'l',
6593
+ م: 'm',
6594
+ ن: 'n',
6595
+ ه: 'h',
6596
+ و: 'o',
6597
+ ي: 'y',
6598
+ '٠': '0',
6599
+ '١': '1',
6600
+ '٢': '2',
6601
+ '٣': '3',
6602
+ '٤': '4',
6603
+ '٥': '5',
6604
+ '٦': '6',
6605
+ '٧': '7',
6606
+ '٨': '8',
6607
+ '٩': '9',
6608
+ };
6609
+ const LITHUANIAN_MAP = {
6610
+ ą: 'a',
6611
+ č: 'c',
6612
+ ę: 'e',
6613
+ ė: 'e',
6614
+ į: 'i',
6615
+ š: 's',
6616
+ ų: 'u',
6617
+ ū: 'u',
6618
+ ž: 'z',
6619
+ Ą: 'A',
6620
+ Č: 'C',
6621
+ Ę: 'E',
6622
+ Ė: 'E',
6623
+ Į: 'I',
6624
+ Š: 'S',
6625
+ Ų: 'U',
6626
+ Ū: 'U',
6627
+ Ž: 'Z',
6628
+ };
6629
+ const SERBIAN_MAP = {
6630
+ ђ: 'dj',
6631
+ ј: 'j',
6632
+ љ: 'lj',
6633
+ њ: 'nj',
6634
+ ћ: 'c',
6635
+ џ: 'dz',
6636
+ đ: 'dj',
6637
+ Ђ: 'Dj',
6638
+ Ј: 'j',
6639
+ Љ: 'Lj',
6640
+ Њ: 'Nj',
6641
+ Ћ: 'C',
6642
+ Џ: 'Dz',
6643
+ Đ: 'Dj',
6644
+ };
6645
+ const AZERBAIJANI_MAP = {
6646
+ ç: 'c',
6843
6647
  ə: 'e',
6844
- ɚ: 'e',
6845
- ɛ: 'e',
6846
- ɜ: 'e',
6847
- ɝ: 'e',
6848
- ɞ: 'e',
6849
- ɟ: 'j',
6850
- ɠ: 'g',
6851
- ɡ: 'g',
6852
- ɢ: 'g',
6853
- ɣ: 'g',
6854
- ɤ: 'g',
6855
- ɥ: 'h',
6856
- ɦ: 'h',
6857
- ɧ: 'h',
6858
- ɨ: 'i',
6859
- ɩ: 'i',
6860
- ɪ: 'i',
6861
- ɫ: 'l',
6862
- ɬ: 'l',
6863
- ɭ: 'l',
6864
- ɮ: 'lz',
6865
- ɯ: 'm',
6866
- ɰ: 'm',
6867
- ɱ: 'm',
6868
- ɲ: 'n',
6869
- ɳ: 'n',
6870
- ɴ: 'n',
6871
- ɵ: 'o',
6872
- ɶ: 'oe',
6873
- ɷ: 'o',
6874
- ɸ: 'f',
6875
- ɹ: 'r',
6876
- ɺ: 'r',
6877
- ɻ: 'r',
6878
- ɼ: 'r',
6879
- ɽ: 'r',
6880
- ɾ: 'r',
6881
- ɿ: 'r',
6882
- // Spacing Modifier Letters
6883
- ʰ: 'h',
6884
- ʱ: 'h',
6885
- ʲ: 'j',
6886
- ʳ: 'r',
6887
- ʴ: 'r',
6888
- ʵ: 'r',
6889
- ʶ: 'r',
6890
- ʷ: 'w',
6891
- ʸ: 'y',
6892
- ʹ: "'",
6893
- ʺ: '"',
6894
- ʻ: "'",
6895
- ʼ: "'",
6896
- ʽ: "'",
6897
- ʾ: "'",
6898
- ʿ: "'",
6899
- // Combining Diacritical Marks
6648
+ ğ: 'g',
6649
+ ı: 'i',
6650
+ ö: 'o',
6651
+ ş: 's',
6652
+ ü: 'u',
6653
+ Ç: 'C',
6654
+ Ə: 'E',
6655
+ Ğ: 'G',
6656
+ İ: 'I',
6657
+ Ö: 'O',
6658
+ Ş: 'S',
6659
+ Ü: 'U',
6660
+ };
6661
+ const GEORGIAN_MAP = {
6662
+ ა: 'a',
6663
+ ბ: 'b',
6664
+ გ: 'g',
6665
+ დ: 'd',
6666
+ ე: 'e',
6667
+ ვ: 'v',
6668
+ ზ: 'z',
6669
+ თ: 't',
6670
+ ი: 'i',
6671
+ კ: 'k',
6672
+ ლ: 'l',
6673
+ მ: 'm',
6674
+ ნ: 'n',
6675
+ ო: 'o',
6676
+ პ: 'p',
6677
+ ჟ: 'j',
6678
+ რ: 'r',
6679
+ ს: 's',
6680
+ ტ: 't',
6681
+ უ: 'u',
6682
+ ფ: 'f',
6683
+ ქ: 'q',
6684
+ ღ: 'g',
6685
+ ყ: 'y',
6686
+ შ: 'sh',
6687
+ ჩ: 'ch',
6688
+ ც: 'c',
6689
+ ძ: 'dz',
6690
+ წ: 'w',
6691
+ ჭ: 'ch',
6692
+ ხ: 'x',
6693
+ ჯ: 'j',
6694
+ ჰ: 'h',
6695
+ };
6696
+ const SYMBOLS_MAP = {
6697
+ '©': '',
6698
+ '℗': '',
6699
+ 'ⓒ': '',
6700
+ '®': '',
6701
+ '™': '',
6702
+ '℠': '',
6703
+ '℟': '',
6704
+ '№': '',
6705
+ '⚖': '',
6706
+ '†': '',
6707
+ '‡': '',
6708
+ '§': '',
6709
+ '¶': '',
6710
+ '⁂': '',
6711
+ '※': '',
6712
+ '‽': '',
6713
+ '¤': '',
6714
+ '°': '',
6715
+ '′': '',
6716
+ '″': '',
6717
+ '‴': '',
6718
+ '⁗': '',
6719
+ '•': '',
6720
+ '⁃': '',
6721
+ '◊': '',
6722
+ '⌘': '',
6723
+ '⌥': '',
6724
+ '⇧': '',
6725
+ '⌃': '',
6726
+ '⎋': '',
6727
+ '¢': '',
6728
+ '£': '',
6729
+ '€': '',
6730
+ '¥': '',
6731
+ '₹': '',
6732
+ '₽': '',
6733
+ '؋': '',
6734
+ '₮': '',
6735
+ '₩': '',
6736
+ '₪': '',
6737
+ '←': '',
6738
+ '→': '',
6739
+ '↑': '',
6740
+ '↓': '',
6741
+ '✓': '',
6742
+ '✔': '',
6743
+ '✗': '',
6744
+ '✘': '',
6745
+ '♪': '',
6746
+ '♫': '',
6747
+ '☎': '',
6748
+ '✉': '',
6749
+ '⚡': '',
6750
+ '☀': '',
6751
+ '☁': '',
6752
+ '☂': '',
6753
+ '★': '',
6754
+ '☆': '',
6755
+ '☯': '',
6756
+ '☮': '',
6757
+ '☢': '',
6758
+ '☣': '',
6759
+ '⚠': '',
6760
+ };
6761
+ const GEOMETRIC_SHAPES_MAP = {
6762
+ '■': '',
6763
+ '□': '',
6764
+ '▢': '',
6765
+ '▣': '',
6766
+ '▤': '',
6767
+ '▥': '',
6768
+ '▦': '',
6769
+ '▧': '',
6770
+ '▨': '',
6771
+ '▩': '',
6772
+ '▪': '',
6773
+ '▫': '',
6774
+ '▬': '',
6775
+ '▭': '',
6776
+ '▮': '',
6777
+ '▯': '',
6778
+ '▰': '',
6779
+ '▱': '',
6780
+ '▲': '',
6781
+ '△': '',
6782
+ '▴': '',
6783
+ '▵': '',
6784
+ '▶': '',
6785
+ '▷': '',
6786
+ '▸': '',
6787
+ '▹': '',
6788
+ '►': '',
6789
+ '▻': '',
6790
+ '▼': '',
6791
+ '▽': '',
6792
+ '▾': '',
6793
+ '▿': '',
6794
+ '◀': '',
6795
+ '◁': '',
6796
+ '◂': '',
6797
+ '◃': '',
6798
+ '◄': '',
6799
+ '◅': '',
6800
+ '◆': '',
6801
+ '◇': '',
6802
+ '◈': '',
6803
+ '◉': '',
6804
+ '◊': '',
6805
+ '○': '',
6806
+ '◌': '',
6807
+ '◍': '',
6808
+ '◎': '',
6809
+ '●': '',
6810
+ '◐': '',
6811
+ '◑': '',
6812
+ '◒': '',
6813
+ '◓': '',
6814
+ '◔': '',
6815
+ '◕': '',
6816
+ '◖': '',
6817
+ '◗': '',
6818
+ '◘': '',
6819
+ '◙': '',
6820
+ '◚': '',
6821
+ '◛': '',
6822
+ '◜': '',
6823
+ '◝': '',
6824
+ '◞': '',
6825
+ '◟': '',
6826
+ '◠': '',
6827
+ '◡': '',
6828
+ '◢': '',
6829
+ '◣': '',
6830
+ '◤': '',
6831
+ '◥': '',
6832
+ '◦': '',
6833
+ '◧': '',
6834
+ '◨': '',
6835
+ '◩': '',
6836
+ '◪': '',
6837
+ '◫': '',
6838
+ '◬': '',
6839
+ '◭': '',
6840
+ '◮': '',
6841
+ '◯': '',
6842
+ '◰': '',
6843
+ '◱': '',
6844
+ '◲': '',
6845
+ '◳': '',
6846
+ '◴': '',
6847
+ '◵': '',
6848
+ '◶': '',
6849
+ '◷': '',
6850
+ '◸': '',
6851
+ '◹': '',
6852
+ '◺': '',
6853
+ '◻': '',
6854
+ '◼': '',
6855
+ '◽': '',
6856
+ '◾': '',
6857
+ '◿': '',
6858
+ };
6859
+ const BLOCK_ELEMENTS_MAP = {
6860
+ '▀': '',
6861
+ '▁': '',
6862
+ '▂': '',
6863
+ '▃': '',
6864
+ '▄': '',
6865
+ '▅': '',
6866
+ '▆': '',
6867
+ '▇': '',
6868
+ '█': '',
6869
+ '▉': '',
6870
+ '▊': '',
6871
+ '▋': '',
6872
+ '▌': '',
6873
+ '▍': '',
6874
+ '▎': '',
6875
+ '▏': '',
6876
+ '▐': '',
6877
+ '░': '',
6878
+ '▒': '',
6879
+ '▓': '',
6880
+ '▔': '',
6881
+ '▕': '',
6882
+ '▖': '',
6883
+ '▗': '',
6884
+ '▘': '',
6885
+ '▙': '',
6886
+ '▚': '',
6887
+ '▛': '',
6888
+ '▜': '',
6889
+ '▝': '',
6890
+ '▞': '',
6891
+ '▟': '',
6892
+ };
6893
+ const BOX_DRAWING_MAP = {
6894
+ '─': '',
6895
+ '│': '',
6896
+ '┌': '',
6897
+ '┐': '',
6898
+ '└': '',
6899
+ '┘': '',
6900
+ '├': '',
6901
+ '┤': '',
6902
+ '┬': '',
6903
+ '┴': '',
6904
+ '┼': '',
6905
+ '═': '',
6906
+ '║': '',
6907
+ '╒': '',
6908
+ '╓': '',
6909
+ '╔': '',
6910
+ '╕': '',
6911
+ '╖': '',
6912
+ '╗': '',
6913
+ '╘': '',
6914
+ '╙': '',
6915
+ '╚': '',
6916
+ '╛': '',
6917
+ '╜': '',
6918
+ '╝': '',
6919
+ '╞': '',
6920
+ '╟': '',
6921
+ '╠': '',
6922
+ '╡': '',
6923
+ '╢': '',
6924
+ '╣': '',
6925
+ '╤': '',
6926
+ '╥': '',
6927
+ '╦': '',
6928
+ '╧': '',
6929
+ '╨': '',
6930
+ '╩': '',
6931
+ '╪': '',
6932
+ '╫': '',
6933
+ '╬': '',
6934
+ };
6935
+ const OPTICAL_CHARACTER_RECOGNITION_MAP = {
6936
+ '⑀': '',
6937
+ '⑁': '',
6938
+ '⑂': '',
6939
+ '⑃': '',
6940
+ '⑄': '',
6941
+ '⑅': '',
6942
+ '⑆': '',
6943
+ '⑇': '',
6944
+ '⑈': '',
6945
+ '⑉': '',
6946
+ '⑊': '',
6947
+ };
6948
+ const CONTROL_PICTURES_MAP = {
6949
+ '␀': '',
6950
+ '␁': '',
6951
+ '␂': '',
6952
+ '␃': '',
6953
+ '␄': '',
6954
+ '␅': '',
6955
+ '␆': '',
6956
+ '␇': '',
6957
+ '␈': '',
6958
+ '␉': '',
6959
+ '␊': '',
6960
+ '␋': '',
6961
+ '␌': '',
6962
+ '␍': '',
6963
+ '␎': '',
6964
+ '␏': '',
6965
+ '␐': '',
6966
+ '␑': '',
6967
+ '␒': '',
6968
+ '␓': '',
6969
+ '␔': '',
6970
+ '␕': '',
6971
+ '␖': '',
6972
+ '␗': '',
6973
+ '␘': '',
6974
+ '␙': '',
6975
+ '␚': '',
6976
+ '␛': '',
6977
+ '␜': '',
6978
+ '␝': '',
6979
+ '␞': '',
6980
+ '␟': '',
6981
+ '␠': '',
6982
+ '␡': '',
6983
+ };
6984
+ const MISCELLANEOUS_TECHNICAL_MAP = {
6985
+ '⌀': '',
6986
+ '⌁': '',
6987
+ '⌂': '',
6988
+ '⌃': '',
6989
+ '⌄': '',
6990
+ '⌅': '',
6991
+ '⌆': '',
6992
+ '⌇': '',
6993
+ '⌈': '',
6994
+ '⌉': '',
6995
+ '⌊': '',
6996
+ '⌋': '',
6997
+ '⌌': '',
6998
+ '⌍': '',
6999
+ '⌎': '',
7000
+ '⌏': '',
7001
+ '⌐': '',
7002
+ '⌑': '',
7003
+ '⌒': '',
7004
+ '⌓': '',
7005
+ '⌔': '',
7006
+ '⌕': '',
7007
+ '⌖': '',
7008
+ '⌗': '',
7009
+ '⌘': '',
7010
+ '⌙': '',
7011
+ '⌚': '',
7012
+ '⌛': '',
7013
+ '⌜': '',
7014
+ '⌝': '',
7015
+ '⌞': '',
7016
+ '⌟': '',
7017
+ '⌠': '',
7018
+ '⌡': '',
7019
+ '⌢': '',
7020
+ '⌣': '',
7021
+ '⌤': '',
7022
+ '⌥': '',
7023
+ '⌦': '',
7024
+ '⌧': '',
7025
+ '⌨': '',
7026
+ '⌫': '',
7027
+ '⌬': '',
7028
+ '⌭': '',
7029
+ '⌮': '',
7030
+ '⌯': '',
7031
+ };
7032
+ const MATHEMATICAL_OPERATORS_MAP = {
7033
+ '−': '',
7034
+ '∕': '',
7035
+ '∖': '',
7036
+ '∗': '',
7037
+ '∘': '',
7038
+ '∙': '',
7039
+ '√': '',
7040
+ '∛': '',
7041
+ '∜': '',
7042
+ '∝': '',
7043
+ '∞': '',
7044
+ '∟': '',
7045
+ '∠': '',
7046
+ '∥': '',
7047
+ '∧': '',
7048
+ '∨': '',
7049
+ '∩': '',
7050
+ '∪': '',
7051
+ '∫': '',
7052
+ '∬': '',
7053
+ '∭': '',
7054
+ '∮': '',
7055
+ '∯': '',
7056
+ '∰': '',
7057
+ '∱': '',
7058
+ '∲': '',
7059
+ '∳': '',
7060
+ '∴': '',
7061
+ '∵': '',
7062
+ '∶': '',
7063
+ '∷': '',
7064
+ '∸': '',
7065
+ '∹': '',
7066
+ '∺': '',
7067
+ '∻': '',
7068
+ '∼': '',
7069
+ '∽': '',
7070
+ '∾': '',
7071
+ '≀': '',
7072
+ '≁': '',
7073
+ '≂': '',
7074
+ '≃': '',
7075
+ '≄': '',
7076
+ '≅': '',
7077
+ π: '',
7078
+ '≆': '',
7079
+ '≇': '',
7080
+ '≈': '',
7081
+ '≉': '',
7082
+ '≊': '',
7083
+ '≋': '',
7084
+ '≌': '',
7085
+ '≍': '',
7086
+ '≎': '',
7087
+ '≏': '',
7088
+ '≐': '',
7089
+ '≑': '',
7090
+ '≒': '',
7091
+ '≓': '',
7092
+ '≔': '',
7093
+ '≕': '',
7094
+ '≖': '',
7095
+ '≙': '',
7096
+ '≚': '',
7097
+ '≛': '',
7098
+ '≜': '',
7099
+ '≝': '',
7100
+ '≞': '',
7101
+ '≟': '',
7102
+ '≠': '',
7103
+ '≡': '',
7104
+ '≢': '',
7105
+ '≣': '',
7106
+ '≤': '',
7107
+ '≥': '',
7108
+ '≦': '',
7109
+ '≧': '',
7110
+ '≨': '',
7111
+ '≩': '',
7112
+ '≪': '',
7113
+ '≫': '',
7114
+ '≬': '',
7115
+ '≭': '',
7116
+ '≮': '',
7117
+ '≯': '',
7118
+ '≰': '',
7119
+ '≱': '',
7120
+ '≲': '',
7121
+ '≳': '',
7122
+ '≴': '',
7123
+ '≵': '',
7124
+ '≶': '',
7125
+ '≷': '',
7126
+ '≸': '',
7127
+ '≹': '',
7128
+ '≺': '',
7129
+ '≻': '',
7130
+ '≼': '',
7131
+ '≽': '',
7132
+ '≾': '',
7133
+ '≿': '',
7134
+ '⊀': '',
7135
+ '⊁': '',
7136
+ '⊂': '',
7137
+ '⊃': '',
7138
+ '⊄': '',
7139
+ '⊅': '',
7140
+ '⊆': '',
7141
+ '⊇': '',
7142
+ '⊈': '',
7143
+ '⊉': '',
7144
+ '⊊': '',
7145
+ '⊋': '',
7146
+ '⊌': '',
7147
+ '⊍': '',
7148
+ '⊎': '',
7149
+ '⊏': '',
7150
+ '⊐': '',
7151
+ '⊑': '',
7152
+ '⊒': '',
7153
+ '⊓': '',
7154
+ '⊔': '',
7155
+ '⊕': '',
7156
+ '⊖': '',
7157
+ '⊗': '',
7158
+ '⊘': '',
7159
+ '⊙': '',
7160
+ '⊚': '',
7161
+ '⊛': '',
7162
+ '⊜': '',
7163
+ '⊝': '',
7164
+ '⊞': '',
7165
+ '⊟': '',
7166
+ '⊠': '',
7167
+ '⊡': '',
7168
+ };
7169
+ const SUBSCRIPTS_AND_SUPERSCRIPTS_MAP = {
7170
+ '⁰': '',
7171
+ '¹': '',
7172
+ '²': '',
7173
+ '³': '',
7174
+ '⁴': '',
7175
+ '⁵': '',
7176
+ '⁶': '',
7177
+ '⁷': '',
7178
+ '⁸': '',
7179
+ '⁹': '',
7180
+ '⁺': '',
7181
+ '⁻': '',
7182
+ '⁼': '',
7183
+ '⁽': '',
7184
+ '⁾': '',
7185
+ ⁿ: '',
7186
+ '₀': '',
7187
+ '₁': '',
7188
+ '₂': '',
7189
+ '₃': '',
7190
+ '₄': '',
7191
+ '₅': '',
7192
+ '₆': '',
7193
+ '₇': '',
7194
+ '₈': '',
7195
+ '₉': '',
7196
+ '₊': '',
7197
+ '₋': '',
7198
+ '₌': '',
7199
+ '₍': '',
7200
+ '₎': '',
7201
+ };
7202
+ const NUMBER_FORMS_MAP = {
7203
+ '⅓': '',
7204
+ '⅔': '',
7205
+ '⅕': '',
7206
+ '⅖': '',
7207
+ '⅗': '',
7208
+ '⅘': '',
7209
+ '⅙': '',
7210
+ '⅚': '',
7211
+ '⅛': '',
7212
+ '⅜': '',
7213
+ '⅝': '',
7214
+ '⅞': '',
7215
+ '⅟': '',
7216
+ };
7217
+ const LETTERLIKE_SYMBOLS_MAP = {
7218
+ '℀': '',
7219
+ '℁': '',
7220
+ '℃': '',
7221
+ '℅': '',
7222
+ '℆': '',
7223
+ '℉': '',
7224
+ '№': '',
7225
+ '℗': '',
7226
+ '℠': '',
7227
+ '℡': '',
7228
+ '™': '',
7229
+ '℮': '',
7230
+ ℯ: '',
7231
+ ℰ: '',
7232
+ ℱ: '',
7233
+ Ⅎ: '',
7234
+ ℳ: '',
7235
+ ℴ: '',
7236
+ ℵ: '',
7237
+ ℶ: '',
7238
+ ℷ: '',
7239
+ ℸ: '',
7240
+ '℘': '',
7241
+ };
7242
+ const CURRENCY_SYMBOLS_MAP = {
7243
+ '₠': '',
7244
+ '₡': '',
7245
+ '₢': '',
7246
+ '₣': '',
7247
+ '₤': '',
7248
+ '₥': '',
7249
+ '₦': '',
7250
+ '₧': '',
7251
+ '₨': '',
7252
+ '₩': '',
7253
+ '₪': '',
7254
+ '₫': '',
7255
+ '€': '',
7256
+ '₭': '',
7257
+ '₮': '',
7258
+ '₯': '',
7259
+ '₰': '',
7260
+ '₱': '',
7261
+ '₲': '',
7262
+ '₳': '',
7263
+ '₴': '',
7264
+ '₵': '',
7265
+ '₶': '',
7266
+ '₷': '',
7267
+ '₸': '',
7268
+ '₹': '',
7269
+ '₺': '',
7270
+ '₻': '',
7271
+ '₼': '',
7272
+ '₽': '',
7273
+ '₾': '',
7274
+ };
7275
+ const COMBINING_DIACRITICAL_MARKS_MAP = {
7276
+ '\n': '',
7277
+ '\t': '',
7278
+ '\r': '',
7279
+ '\r\n': '',
7280
+ '\u00A0': '',
7281
+ '\u2003': '',
7282
+ '\u2002': '',
7283
+ '\u0000': '',
7284
+ '\u001F': '',
7285
+ '\u007F': '',
7286
+ '\u0080': '',
7287
+ '\u009F': '',
6900
7288
  '\u0300': '',
6901
7289
  '\u0301': '',
6902
7290
  '\u0302': '',
@@ -6977,608 +7365,131 @@ const SPECIAL_CHARACTER_MAPPING = {
6977
7365
  '\u034D': '',
6978
7366
  '\u034E': '',
6979
7367
  '\u034F': '',
6980
- // General Punctuation
6981
- '\u2013': '-',
6982
- '\u2014': '-',
6983
- '\u2018': "'",
6984
- '\u2019': "'",
6985
- '\u201C': '"',
6986
- '\u201D': '"',
6987
- '\u201E': '"',
6988
- '\u2020': '+',
6989
- '\u2021': '+',
6990
- '\u2022': '*',
6991
- '\u2025': '..',
6992
- '\u2026': '...',
6993
- '\u2030': '%',
6994
- '\u2031': '%',
6995
- '\u2032': "'",
6996
- '\u2033': '"',
6997
- '\u2034': "'",
6998
- '\u2035': "'",
6999
- '\u2036': '"',
7000
- '\u2037': "'",
7001
- '\u2039': '<',
7002
- '\u203A': '>',
7003
- '\u203C': '!!',
7004
- '\u203E': '-',
7005
- '\u2044': '/',
7006
- '\u204E': '*',
7007
- '\u204F': ';',
7008
- '\u2050': ':',
7009
- '\u2057': '"',
7010
- // Currency Symbols
7011
- '₠': 'ecu',
7012
- '₡': 'c',
7013
- '₢': 'cr',
7014
- '₣': 'fr',
7015
- '₤': 'l',
7016
- '₥': 'm',
7017
- '₦': 'n',
7018
- '₧': 'pts',
7019
- '₨': 'rs',
7020
- '₩': 'w',
7021
- '₪': 'ils',
7022
- '₫': 'd',
7023
- '€': 'eur',
7024
- '₭': 'k',
7025
- '₮': 't',
7026
- '₯': 'dr',
7027
- '₰': 'pf',
7028
- '₱': 'p',
7029
- '₲': 'g',
7030
- '₳': 'a',
7031
- '₴': 'uah',
7032
- '₵': 'c',
7033
- '₶': 't',
7034
- '₷': 'n',
7035
- '₸': 't',
7036
- '₹': 'inr',
7037
- '₺': 'try',
7038
- '₻': 'n',
7039
- '₼': 'azn',
7040
- '₽': 'rub',
7041
- '₾': 'gel',
7042
- // Letterlike Symbols
7043
- '℀': 'a/c',
7044
- '℁': 'a/s',
7045
- '℃': 'c',
7046
- '℅': 'c/o',
7047
- '℆': 'c/u',
7048
- '℉': 'f',
7049
- '№': 'no',
7050
- '℗': '(p)',
7051
- '℠': 'sm',
7052
- '℡': 'tel',
7053
- '™': 'tm',
7054
- '℮': 'e',
7055
- ℯ: 'e',
7056
- ℰ: 'e',
7057
- ℱ: 'f',
7058
- Ⅎ: 'f',
7059
- ℳ: 'm',
7060
- ℴ: 'o',
7061
- ℵ: 'a',
7062
- ℶ: 'b',
7063
- ℷ: 'g',
7064
- ℸ: 'd',
7065
- '℘': 'p',
7066
- // Number Forms
7067
- '⅓': '1/3',
7068
- '⅔': '2/3',
7069
- '⅕': '1/5',
7070
- '⅖': '2/5',
7071
- '⅗': '3/5',
7072
- '⅘': '4/5',
7073
- '⅙': '1/6',
7074
- '⅚': '5/6',
7075
- '⅛': '1/8',
7076
- '⅜': '3/8',
7077
- '⅝': '5/8',
7078
- '⅞': '7/8',
7079
- '⅟': '1/',
7080
- // Superscripts and Subscripts
7081
- '⁰': '0',
7082
- '¹': '1',
7083
- '²': '2',
7084
- '³': '3',
7085
- '⁴': '4',
7086
- '⁵': '5',
7087
- '⁶': '6',
7088
- '⁷': '7',
7089
- '⁸': '8',
7090
- '⁹': '9',
7091
- '⁺': '+',
7092
- '⁻': '-',
7093
- '⁼': '=',
7094
- '⁽': '(',
7095
- '⁾': ')',
7096
- ⁿ: 'n',
7097
- '₀': '0',
7098
- '₁': '1',
7099
- '₂': '2',
7100
- '₃': '3',
7101
- '₄': '4',
7102
- '₅': '5',
7103
- '₆': '6',
7104
- '₇': '7',
7105
- '₈': '8',
7106
- '₉': '9',
7107
- '₊': '+',
7108
- '₋': '-',
7109
- '₌': '=',
7110
- '₍': '(',
7111
- '₎': ')',
7112
- // Mathematical Operators
7113
- '−': '-',
7114
- '∕': '/',
7115
- '∖': '\\',
7116
- '∗': '*',
7117
- '∘': 'o',
7118
- '∙': '*',
7119
- '√': 'v',
7120
- '∛': 'v',
7121
- '∜': 'v',
7122
- '∝': 'oc',
7123
- '∞': '8',
7124
- '∟': 'l',
7125
- '∠': 'a',
7126
- '∥': '||',
7127
- '∧': 'and',
7128
- '∨': 'or',
7129
- '∩': 'n',
7130
- '∪': 'u',
7131
- '∫': 'I',
7132
- '∬': 'II',
7133
- '∭': 'III',
7134
- '∮': 'O',
7135
- '∯': 'S',
7136
- '∰': 'S',
7137
- '∱': 'S',
7138
- '∲': 'S',
7139
- '∳': 'S',
7140
- '∴': 't',
7141
- '∵': 'b',
7142
- '∶': ':',
7143
- '∷': '::',
7144
- '∸': '-:',
7145
- '∹': '-:',
7146
- '∺': '-:',
7147
- '∻': '-:',
7148
- '∼': '~',
7149
- '∽': '~',
7150
- '∾': '~',
7151
- '≀': 'o',
7152
- '≁': '!~',
7153
- '≂': '~',
7154
- '≃': '~=',
7155
- '≄': '!~=',
7156
- '≅': '~=',
7157
- '≆': '~=',
7158
- '≇': '!~=',
7159
- '≈': '~',
7160
- '≉': '!~',
7161
- '≊': '~=',
7162
- '≋': '~',
7163
- '≌': '=',
7164
- '≍': '=',
7165
- '≎': '=',
7166
- '≏': '=',
7167
- '≐': '=',
7168
- '≑': '=',
7169
- '≒': '=',
7170
- '≓': '=',
7171
- '≔': '=',
7172
- '≕': '=',
7173
- '≖': '=',
7174
- '≙': '=',
7175
- '≚': '=',
7176
- '≛': '=',
7177
- '≜': '=',
7178
- '≝': '=',
7179
- '≞': '=',
7180
- '≟': '=',
7181
- '≠': '!=',
7182
- '≡': '=',
7183
- '≢': '!=',
7184
- '≣': '=',
7185
- '≤': '<=',
7186
- '≥': '>=',
7187
- '≦': '<=',
7188
- '≧': '>=',
7189
- '≨': '</',
7190
- '≩': '>/',
7191
- '≪': '<<',
7192
- '≫': '>>',
7193
- '≬': '><',
7194
- '≭': '><',
7195
- '≮': '!<',
7196
- '≯': '!>',
7197
- '≰': '!<=',
7198
- '≱': '!>=',
7199
- '≲': '<=',
7200
- '≳': '>=',
7201
- '≴': '</',
7202
- '≵': '>/',
7203
- '≶': '><',
7204
- '≷': '><',
7205
- '≸': '!><',
7206
- '≹': '!><',
7207
- '≺': '<',
7208
- '≻': '>',
7209
- '≼': '<=',
7210
- '≽': '>=',
7211
- '≾': '<=',
7212
- '≿': '>=',
7213
- '⊀': '!<',
7214
- '⊁': '!>',
7215
- '⊂': 'c',
7216
- '⊃': 'c',
7217
- '⊄': '!c',
7218
- '⊅': '!c',
7219
- '⊆': 'c=',
7220
- '⊇': 'c=',
7221
- '⊈': '!c=',
7222
- '⊉': '!c=',
7223
- '⊊': 'c',
7224
- '⊋': 'c',
7225
- '⊌': 'U',
7226
- '⊍': 'U',
7227
- '⊎': 'U',
7228
- '⊏': '<',
7229
- '⊐': '>',
7230
- '⊑': '<=',
7231
- '⊒': '>=',
7232
- '⊓': 'n',
7233
- '⊔': 'u',
7234
- '⊕': 'o+',
7235
- '⊖': 'o-',
7236
- '⊗': 'ox',
7237
- '⊘': 'o/',
7238
- '⊙': 'o.',
7239
- '⊚': 'o',
7240
- '⊛': 'o*',
7241
- '⊜': 'o=',
7242
- '⊝': 'o-',
7243
- '⊞': '+',
7244
- '⊟': '-',
7245
- '⊠': 'x',
7246
- '⊡': '[]',
7247
- // Miscellaneous Technical
7248
- '⌀': 'o',
7249
- '⌁': '*',
7250
- '⌂': '^',
7251
- '⌃': '^',
7252
- '⌄': 'v',
7253
- '⌅': '[',
7254
- '⌆': ']',
7255
- '⌇': '|',
7256
- '⌈': '[',
7257
- '⌉': ']',
7258
- '⌊': '[',
7259
- '⌋': ']',
7260
- '⌌': '[',
7261
- '⌍': ']',
7262
- '⌎': '[',
7263
- '⌏': ']',
7264
- '⌐': '|_',
7265
- '⌑': '_|',
7266
- '⌒': '~',
7267
- '⌓': '^',
7268
- '⌔': '[]',
7269
- '⌕': 'o',
7270
- '⌖': '+',
7271
- '⌗': '#',
7272
- '⌘': 'cmd',
7273
- '⌙': '<',
7274
- '⌚': 'watch',
7275
- '⌛': 'hourglass',
7276
- '⌜': '[',
7277
- '⌝': ']',
7278
- '⌞': '[',
7279
- '⌟': ']',
7280
- '⌠': 'I',
7281
- '⌡': 'I',
7282
- '⌢': 'u',
7283
- '⌣': 'n',
7284
- '⌤': '_|_',
7285
- '⌥': 'alt',
7286
- '⌦': 'del',
7287
- '⌧': 'x',
7288
- '⌨': 'keyboard',
7289
- '⌫': 'backspace',
7290
- '⌬': '^',
7291
- '⌭': '><',
7292
- '⌮': '><',
7293
- '⌯': '*',
7294
- // Control Pictures
7295
- '␀': 'nul',
7296
- '␁': 'soh',
7297
- '␂': 'stx',
7298
- '␃': 'etx',
7299
- '␄': 'eot',
7300
- '␅': 'enq',
7301
- '␆': 'ack',
7302
- '␇': 'bel',
7303
- '␈': 'bs',
7304
- '␉': 'ht',
7305
- '␊': 'lf',
7306
- '␋': 'vt',
7307
- '␌': 'ff',
7308
- '␍': 'cr',
7309
- '␎': 'so',
7310
- '␏': 'si',
7311
- '␐': 'dle',
7312
- '␑': 'dc1',
7313
- '␒': 'dc2',
7314
- '␓': 'dc3',
7315
- '␔': 'dc4',
7316
- '␕': 'nak',
7317
- '␖': 'syn',
7318
- '␗': 'etb',
7319
- '␘': 'can',
7320
- '␙': 'em',
7321
- '␚': 'sub',
7322
- '␛': 'esc',
7323
- '␜': 'fs',
7324
- '␝': 'gs',
7325
- '␞': 'rs',
7326
- '␟': 'us',
7327
- '␠': 'sp',
7328
- '␡': 'del',
7329
- // Optical Character Recognition
7330
- '⑀': 'ocr',
7331
- '⑁': 'ocr',
7332
- '⑂': 'ocr',
7333
- '⑃': 'ocr',
7334
- '⑄': 'ocr',
7335
- '⑅': 'ocr',
7336
- '⑆': 'ocr',
7337
- '⑇': 'ocr',
7338
- '⑈': 'ocr',
7339
- '⑉': 'ocr',
7340
- '⑊': 'ocr',
7341
- // Enclosed Alphanumerics
7342
- '⒜': '(a)',
7343
- '⒝': '(b)',
7344
- '⒞': '(c)',
7345
- '⒟': '(d)',
7346
- '⒠': '(e)',
7347
- '⒡': '(f)',
7348
- '⒢': '(g)',
7349
- '⒣': '(h)',
7350
- '⒤': '(i)',
7351
- '⒥': '(j)',
7352
- '⒦': '(k)',
7353
- '⒧': '(l)',
7354
- '⒨': '(m)',
7355
- '⒩': '(n)',
7356
- '⒪': '(o)',
7357
- '⒫': '(p)',
7358
- '⒬': '(q)',
7359
- '⒭': '(r)',
7360
- '⒮': '(s)',
7361
- '⒯': '(t)',
7362
- '⒰': '(u)',
7363
- '⒱': '(v)',
7364
- '⒲': '(w)',
7365
- '⒳': '(x)',
7366
- '⒴': '(y)',
7367
- '⒵': '(z)',
7368
- // Box Drawing
7369
- '─': '-',
7370
- '│': '|',
7371
- '┌': '+',
7372
- '┐': '+',
7373
- '└': '+',
7374
- '┘': '+',
7375
- '├': '+',
7376
- '┤': '+',
7377
- '┬': '+',
7378
- '┴': '+',
7379
- '┼': '+',
7380
- '═': '=',
7381
- '║': '||',
7382
- '╒': '+',
7383
- '╓': '+',
7384
- '╔': '+',
7385
- '╕': '+',
7386
- '╖': '+',
7387
- '╗': '+',
7388
- '╘': '+',
7389
- '╙': '+',
7390
- '╚': '+',
7391
- '╛': '+',
7392
- '╜': '+',
7393
- '╝': '+',
7394
- '╞': '+',
7395
- '╟': '+',
7396
- '╠': '+',
7397
- '╡': '+',
7398
- '╢': '+',
7399
- '╣': '+',
7400
- '╤': '+',
7401
- '╥': '+',
7402
- '╦': '+',
7403
- '╧': '+',
7404
- '╨': '+',
7405
- '╩': '+',
7406
- '╪': '+',
7407
- '╫': '+',
7408
- '╬': '+',
7409
- // Block Elements
7410
- '▀': 'block',
7411
- '▁': 'block',
7412
- '▂': 'block',
7413
- '▃': 'block',
7414
- '▄': 'block',
7415
- '▅': 'block',
7416
- '▆': 'block',
7417
- '▇': 'block',
7418
- '█': 'block',
7419
- '▉': 'block',
7420
- '▊': 'block',
7421
- '▋': 'block',
7422
- '▌': 'block',
7423
- '▍': 'block',
7424
- '▎': 'block',
7425
- '▏': 'block',
7426
- '▐': 'block',
7427
- '░': 'block',
7428
- '▒': 'block',
7429
- '▓': 'block',
7430
- '▔': 'block',
7431
- '▕': 'block',
7432
- '▖': 'block',
7433
- '▗': 'block',
7434
- '▘': 'block',
7435
- '▙': 'block',
7436
- '▚': 'block',
7437
- '▛': 'block',
7438
- '▜': 'block',
7439
- '▝': 'block',
7440
- '▞': 'block',
7441
- '▟': 'block',
7442
- // Geometric Shapes
7443
- '■': 'square',
7444
- '□': 'square',
7445
- '▢': 'square',
7446
- '▣': 'square',
7447
- '▤': 'square',
7448
- '▥': 'square',
7449
- '▦': 'square',
7450
- '▧': 'square',
7451
- '▨': 'square',
7452
- '▩': 'square',
7453
- '▪': 'square',
7454
- '▫': 'square',
7455
- '▬': 'rectangle',
7456
- '▭': 'rectangle',
7457
- '▮': 'rectangle',
7458
- '▯': 'rectangle',
7459
- '▰': 'triangle',
7460
- '▱': 'triangle',
7461
- '▲': 'triangle',
7462
- '△': 'triangle',
7463
- '▴': 'triangle',
7464
- '▵': 'triangle',
7465
- '▶': 'triangle',
7466
- '▷': 'triangle',
7467
- '▸': 'triangle',
7468
- '▹': 'triangle',
7469
- '►': 'triangle',
7470
- '▻': 'triangle',
7471
- '▼': 'triangle',
7472
- '▽': 'triangle',
7473
- '▾': 'triangle',
7474
- '▿': 'triangle',
7475
- '◀': 'triangle',
7476
- '◁': 'triangle',
7477
- '◂': 'triangle',
7478
- '◃': 'triangle',
7479
- '◄': 'triangle',
7480
- '◅': 'triangle',
7481
- '◆': 'diamond',
7482
- '◇': 'diamond',
7483
- '◈': 'diamond',
7484
- '◉': 'circle',
7485
- '◊': 'diamond',
7486
- '○': 'circle',
7487
- '◌': 'circle',
7488
- '◍': 'circle',
7489
- '◎': 'circle',
7490
- '●': 'circle',
7491
- '◐': 'circle',
7492
- '◑': 'circle',
7493
- '◒': 'circle',
7494
- '◓': 'circle',
7495
- '◔': 'circle',
7496
- '◕': 'circle',
7497
- '◖': 'circle',
7498
- '◗': 'circle',
7499
- '◘': 'circle',
7500
- '◙': 'circle',
7501
- '◚': 'circle',
7502
- '◛': 'circle',
7503
- '◜': 'circle',
7504
- '◝': 'circle',
7505
- '◞': 'circle',
7506
- '◟': 'circle',
7507
- '◠': 'arc',
7508
- '◡': 'arc',
7509
- '◢': 'triangle',
7510
- '◣': 'triangle',
7511
- '◤': 'triangle',
7512
- '◥': 'triangle',
7513
- '◦': 'circle',
7514
- '◧': 'square',
7515
- '◨': 'square',
7516
- '◩': 'square',
7517
- '◪': 'square',
7518
- '◫': 'square',
7519
- '◬': 'circle',
7520
- '◭': 'triangle',
7521
- '◮': 'triangle',
7522
- '◯': 'circle',
7523
- '◰': 'square',
7524
- '◱': 'square',
7525
- '◲': 'square',
7526
- '◳': 'square',
7527
- '◴': 'circle',
7528
- '◵': 'circle',
7529
- '◶': 'circle',
7530
- '◷': 'circle',
7531
- '◸': 'triangle',
7532
- '◹': 'triangle',
7533
- '◺': 'triangle',
7534
- '◻': 'square',
7535
- '◼': 'square',
7536
- '◽': 'square',
7537
- '◾': 'square',
7538
- '◿': 'triangle',
7368
+ };
7369
+ const GENERAL_PUNCTUATION_MAP = {
7370
+ '\u2013': '',
7371
+ '\u2014': '',
7372
+ '\u2018': '',
7373
+ '\u2019': '',
7374
+ '\u201C': '',
7375
+ '\u201D': '',
7376
+ '\u201E': '',
7377
+ '\u2020': '',
7378
+ '\u2021': '',
7379
+ '\u2022': '',
7380
+ '\u2025': '',
7381
+ '\u2026': '',
7382
+ '\u2030': '',
7383
+ '\u2031': '',
7384
+ '\u2032': '',
7385
+ '\u2033': '',
7386
+ '\u2034': '',
7387
+ '\u2035': '',
7388
+ '\u2036': '',
7389
+ '\u2037': '',
7390
+ '\u2039': '',
7391
+ '\u203A': '',
7392
+ '\u203C': '',
7393
+ '\u203E': '',
7394
+ '\u2044': '',
7395
+ '\u204E': '',
7396
+ '\u204F': '',
7397
+ '\u2050': '',
7398
+ '\u2057': '',
7399
+ };
7400
+ const OTHERS_MAP = {
7401
+ Nº: 'No',
7402
+ };
7403
+ const SPECIAL_CHARS_MAP = {
7404
+ ...LATIN_MAP,
7405
+ ...SYMBOLS_MAP,
7406
+ ...GREEK_MAP,
7407
+ ...TURKISH_MAP,
7408
+ ...GERMAN_MAP,
7409
+ ...ROMANIAN_MAP,
7410
+ ...RUSSIAN_MAP,
7411
+ ...UKRAINIAN_MAP,
7412
+ ...CZECH_MAP,
7413
+ ...GEORGIAN_MAP,
7414
+ ...ITALIAN_MAP,
7415
+ ...FRENCH_MAP,
7416
+ ...PORTUGUESE_MAP,
7417
+ ...NORDIC_MAP,
7418
+ ...HUNGARIAN_MAP,
7419
+ ...VIETNAMESE_MAP,
7420
+ ...CROATIOAN_SEERBIAN_MAP,
7421
+ ...BALLTIC_MAP,
7422
+ ...CHINESE_JAPANESE_PUNCTUATION_MAP,
7423
+ ...SPANISH_MAP,
7424
+ ...SLOVAK_MAP,
7425
+ ...POLISH_MAP,
7426
+ ...LATVIAN_MAP,
7427
+ ...ARABIC_MAP,
7428
+ ...LITHUANIAN_MAP,
7429
+ ...SERBIAN_MAP,
7430
+ ...AZERBAIJANI_MAP,
7431
+ ...GEORGIAN_MAP,
7432
+ ...GEOMETRIC_SHAPES_MAP,
7433
+ ...BLOCK_ELEMENTS_MAP,
7434
+ ...BOX_DRAWING_MAP,
7435
+ ...OPTICAL_CHARACTER_RECOGNITION_MAP,
7436
+ ...CONTROL_PICTURES_MAP,
7437
+ ...MISCELLANEOUS_TECHNICAL_MAP,
7438
+ ...MATHEMATICAL_OPERATORS_MAP,
7439
+ ...SUBSCRIPTS_AND_SUPERSCRIPTS_MAP,
7440
+ ...NUMBER_FORMS_MAP,
7441
+ ...LETTERLIKE_SYMBOLS_MAP,
7442
+ ...CURRENCY_SYMBOLS_MAP,
7443
+ ...COMBINING_DIACRITICAL_MARKS_MAP,
7444
+ ...GENERAL_PUNCTUATION_MAP,
7445
+ ...OTHERS_MAP,
7539
7446
  };
7540
7447
 
7541
- /**
7542
- * Cleans and normalizes an array of product IDs by:
7543
- * 1. Converting all IDs to strings
7544
- * 2. Trimming whitespace
7545
- * 3. Removing leading zeros while preserving single "0"
7546
- * 4. Filtering out empty/invalid values
7547
- *
7548
- * @param ids - Array of product IDs that can be either strings or numbers
7549
- * @returns Array of cleaned string IDs
7550
- *
7551
- * @example
7552
- * cleanProductIds(["001", " 123 ", 456, "0"]) // ["1", "123", "456", "0"]
7553
- */
7554
- function cleanProductIds(ids) {
7555
- // If the input is not an array, return an empty array
7556
- if (!Array.isArray(ids)) {
7557
- return [];
7558
- }
7559
- // Use reduce to combine mapping and filtering operations
7560
- return ids.reduce((result, id) => {
7561
- // If the id is null or undefined, skip it
7562
- if (id == null) {
7563
- return result;
7448
+ class NormalizeStringHelper {
7449
+ constructor() {
7450
+ this.characterMaps = SPECIAL_CHARS_MAP;
7451
+ this.regex = new RegExp(Object.keys(this.characterMaps).join('|'), 'g');
7452
+ }
7453
+ static getInstance() {
7454
+ if (!NormalizeStringHelper.instance) {
7455
+ NormalizeStringHelper.instance = new NormalizeStringHelper();
7564
7456
  }
7565
- // Convert the id to a string, lowercase it, replace multiple whitespace characters with a single space, and trim it
7566
- const stringId = String(id).toLowerCase().replace(/\s+/g, ' ').trim();
7567
- // If the stringId is empty, skip it
7568
- if (!stringId) {
7569
- return result;
7457
+ return NormalizeStringHelper.instance;
7458
+ }
7459
+ normalize(text) {
7460
+ if (!text)
7461
+ return '';
7462
+ // Replace special characters with their basic counterparts
7463
+ let cleaned = text.replace(this.regex, (match) => this.characterMaps[match] || match);
7464
+ // Remove all other special characters except letters, numbers and spaces
7465
+ cleaned = cleaned.replace(/[^a-zA-Z0-9\s]/g, '');
7466
+ // Convert to lowercase
7467
+ cleaned = cleaned.toLowerCase();
7468
+ // Replace multiple spaces with a single space
7469
+ cleaned = cleaned.replace(/\s+/g, ' ');
7470
+ // Trim leading and trailing spaces
7471
+ cleaned = cleaned.trim();
7472
+ // Remove leading zeros while preserving single "0"
7473
+ cleaned = this.removeLeadingZerosIfNumber(cleaned);
7474
+ return cleaned;
7475
+ }
7476
+ /**
7477
+ * Removes leading zeros from a string number unless the string is just "0"
7478
+ * @param text - The string to process
7479
+ * @returns The string without leading zeros
7480
+ */
7481
+ removeLeadingZerosIfNumber(text) {
7482
+ // If the string is not a number, return it as is
7483
+ if (isNaN(Number(text))) {
7484
+ return text;
7570
7485
  }
7571
- // Replace special characters in the stringId based on the SPECIAL_CHARACTER_MAPPING
7572
- const noSpecialCharsString = stringId.replace(/[^a-z0-9]/g, (char) => SPECIAL_CHARACTER_MAPPING[char] || '');
7573
- // Remove leading zeros from the noSpecialCharsString, except for the single "0" case
7574
- const cleanedId = noSpecialCharsString === '0' ? '0' : noSpecialCharsString.replace(/^0+/, '');
7575
- // If the cleanedId is not empty, add it to the result array
7576
- if (cleanedId !== '') {
7577
- result.push(cleanedId);
7486
+ // If the string consists of only zeros, return "0"
7487
+ if (/^0+$/.test(text)) {
7488
+ return '0';
7578
7489
  }
7579
- // Return the result array for the next iteration
7580
- return result;
7581
- }, []); // Initialize the result array as an empty array of strings
7490
+ // Remove leading zeros
7491
+ return text.replace(/^0+/, '');
7492
+ }
7582
7493
  }
7583
7494
 
7584
7495
  class SingletonManager {
@@ -17194,17 +17105,17 @@ class IntersectionObserverService {
17194
17105
  }
17195
17106
  }
17196
17107
 
17197
- var ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX;
17198
- (function (ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX) {
17199
- ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX["PLACEMENT_ID"] = 0] = "PLACEMENT_ID";
17200
- ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX["SPOT_ID"] = 1] = "SPOT_ID";
17201
- ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX["SPOT_TYPE"] = 2] = "SPOT_TYPE";
17202
- ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX["EVENTS"] = 3] = "EVENTS";
17203
- ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX["FIRED_EVENTS"] = 4] = "FIRED_EVENTS";
17204
- ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX["PRODUCT_IDS"] = 5] = "PRODUCT_IDS";
17205
- ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX["CREATED_AT"] = 6] = "CREATED_AT";
17206
- })(ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX || (ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX = {}));
17207
- const LOCAL_STORAGE_SPOT_EVENTS_ARRAY_INDEX = {
17108
+ var ENUM_SPOT_ARRAY_INDEX;
17109
+ (function (ENUM_SPOT_ARRAY_INDEX) {
17110
+ ENUM_SPOT_ARRAY_INDEX[ENUM_SPOT_ARRAY_INDEX["PLACEMENT_ID"] = 0] = "PLACEMENT_ID";
17111
+ ENUM_SPOT_ARRAY_INDEX[ENUM_SPOT_ARRAY_INDEX["SPOT_ID"] = 1] = "SPOT_ID";
17112
+ ENUM_SPOT_ARRAY_INDEX[ENUM_SPOT_ARRAY_INDEX["SPOT_TYPE"] = 2] = "SPOT_TYPE";
17113
+ ENUM_SPOT_ARRAY_INDEX[ENUM_SPOT_ARRAY_INDEX["EVENTS"] = 3] = "EVENTS";
17114
+ ENUM_SPOT_ARRAY_INDEX[ENUM_SPOT_ARRAY_INDEX["FIRED_EVENTS"] = 4] = "FIRED_EVENTS";
17115
+ ENUM_SPOT_ARRAY_INDEX[ENUM_SPOT_ARRAY_INDEX["PRODUCT_IDS"] = 5] = "PRODUCT_IDS";
17116
+ ENUM_SPOT_ARRAY_INDEX[ENUM_SPOT_ARRAY_INDEX["CREATED_AT"] = 6] = "CREATED_AT";
17117
+ })(ENUM_SPOT_ARRAY_INDEX || (ENUM_SPOT_ARRAY_INDEX = {}));
17118
+ const SPOT_EVENTS_ARRAY_INDEX = {
17208
17119
  [RMN_SPOT_EVENT.IMPRESSION]: 0,
17209
17120
  [RMN_SPOT_EVENT.CLICK]: 1,
17210
17121
  [RMN_SPOT_EVENT.PURCHASE]: 2,
@@ -17234,43 +17145,24 @@ class LocalStorageService {
17234
17145
  }
17235
17146
  return LocalStorageService.instance;
17236
17147
  }
17237
- syncLocalStorage() {
17238
- const localStorageData = window.localStorage.getItem(LocalStorageService.localStorageKey);
17239
- if (localStorageData) {
17240
- try {
17241
- const decryptedData = this.decryptData(localStorageData);
17242
- const parsedData = JSON.parse(decryptedData);
17243
- if (parsedData && typeof parsedData === 'object') {
17244
- const data = {};
17245
- for (const [key, value] of Object.entries(parsedData)) {
17246
- data[key] = this.spotArrayToObject(value);
17247
- }
17248
- this.spots = this.objectToMap(data);
17249
- }
17250
- else {
17251
- this.clearLocalStorage();
17252
- }
17253
- }
17254
- catch (_a) {
17255
- // If there is an error parsing the data, clear the local storage to prevent any issues
17256
- this.clearLocalStorage();
17257
- }
17258
- }
17259
- }
17260
17148
  setSpot(spotId, data) {
17261
- var _a, _b, _c, _d;
17149
+ var _a, _b, _c, _d, _e;
17262
17150
  data.createdAt = Date.now();
17263
17151
  const isExistentSpot = (_a = this.spots) === null || _a === void 0 ? void 0 : _a.has(spotId);
17264
17152
  if (isExistentSpot) {
17265
- const existingData = (_b = this.spots) === null || _b === void 0 ? void 0 : _b.get(spotId);
17266
- data.firedEvents = (_c = existingData === null || existingData === void 0 ? void 0 : existingData.firedEvents) !== null && _c !== void 0 ? _c : [];
17153
+ data.firedEvents = (_d = (_c = (_b = this.spots) === null || _b === void 0 ? void 0 : _b.get(spotId)) === null || _c === void 0 ? void 0 : _c.firedEvents) !== null && _d !== void 0 ? _d : [];
17267
17154
  }
17268
- (_d = this.spots) === null || _d === void 0 ? void 0 : _d.set(spotId, data);
17155
+ (_e = this.spots) === null || _e === void 0 ? void 0 : _e.set(spotId, data);
17269
17156
  this.updateLocalStorage();
17270
17157
  }
17271
17158
  removeSpot(spotId) {
17272
- var _a;
17273
- (_a = this.spots) === null || _a === void 0 ? void 0 : _a.delete(spotId);
17159
+ var _a, _b;
17160
+ const isExistentSpot = (_a = this.spots) === null || _a === void 0 ? void 0 : _a.has(spotId);
17161
+ if (!isExistentSpot)
17162
+ return;
17163
+ const isDeleted = (_b = this.spots) === null || _b === void 0 ? void 0 : _b.delete(spotId);
17164
+ if (!isDeleted)
17165
+ return;
17274
17166
  this.updateLocalStorage();
17275
17167
  }
17276
17168
  getSpot(spotId) {
@@ -17333,16 +17225,36 @@ class LocalStorageService {
17333
17225
  }
17334
17226
  }
17335
17227
  // ======================== Utility functions ======================== //
17228
+ syncLocalStorage() {
17229
+ const localStorageData = window.localStorage.getItem(LocalStorageService.localStorageKey);
17230
+ if (localStorageData) {
17231
+ try {
17232
+ const decryptedData = this.decryptData(localStorageData);
17233
+ const parsedData = JSON.parse(decryptedData);
17234
+ if (Array.isArray(parsedData)) {
17235
+ const data = Object.fromEntries(parsedData.map((spot) => [
17236
+ spot[ENUM_SPOT_ARRAY_INDEX.SPOT_ID],
17237
+ this.spotArrayToObject(spot),
17238
+ ]));
17239
+ this.spots = this.objectToMap(data);
17240
+ }
17241
+ else {
17242
+ this.clearLocalStorage();
17243
+ }
17244
+ }
17245
+ catch (_a) {
17246
+ // If there is an error parsing the data, clear the local storage to prevent any issues
17247
+ this.clearLocalStorage();
17248
+ }
17249
+ }
17250
+ }
17336
17251
  updateLocalStorage() {
17337
17252
  if (!this.spots)
17338
17253
  return undefined;
17339
- const data = this.mapToObject(this.spots);
17340
- const dataArray = {};
17341
- for (const [key, value] of Object.entries(data)) {
17342
- dataArray[key] = this.spotObjectToArray(value);
17343
- }
17254
+ const spotsObj = this.mapToObject(this.spots);
17255
+ const data = Object.values(spotsObj).map((spot) => this.spotObjectToArray(spot));
17344
17256
  try {
17345
- const encryptedData = this.encryptData(JSON.stringify(dataArray));
17257
+ const encryptedData = this.encryptData(JSON.stringify(data));
17346
17258
  window.localStorage.setItem(LocalStorageService.localStorageKey, encryptedData);
17347
17259
  }
17348
17260
  catch (_a) {
@@ -17371,52 +17283,53 @@ class LocalStorageService {
17371
17283
  return new Map(Object.entries(obj));
17372
17284
  }
17373
17285
  spotEventObjectToArray(events) {
17374
- return Object.keys(LOCAL_STORAGE_SPOT_EVENTS_ARRAY_INDEX).map((type) => {
17286
+ return Object.keys(SPOT_EVENTS_ARRAY_INDEX).map((type) => {
17375
17287
  const result = events.find((item) => item.event === type);
17376
17288
  return result && result.event === type ? result.url : '';
17377
17289
  });
17378
17290
  }
17379
17291
  spotEventArrayToObject(arr) {
17380
- return Object.keys(LOCAL_STORAGE_SPOT_EVENTS_ARRAY_INDEX).map((type) => ({
17292
+ return Object.keys(SPOT_EVENTS_ARRAY_INDEX).map((type) => ({
17381
17293
  event: type,
17382
- url: arr[LOCAL_STORAGE_SPOT_EVENTS_ARRAY_INDEX[type]],
17294
+ url: arr[SPOT_EVENTS_ARRAY_INDEX[type]],
17383
17295
  }));
17384
17296
  }
17385
17297
  /**
17386
17298
  * Converts a spot object to an array.
17387
17299
  *
17388
17300
  * @param {ILocalStorageSpot} obj - The spot object to convert.
17389
- * @return {LocalStorageSpotArray} An array representation of the spot object.
17301
+ * @return {SpotArrayType} An array representation of the spot object.
17390
17302
  */
17391
17303
  spotObjectToArray(obj) {
17304
+ var _a, _b, _c;
17392
17305
  return [
17393
17306
  obj.placementId,
17394
17307
  obj.spotId,
17395
17308
  obj.spotType,
17396
17309
  this.spotEventObjectToArray(obj.events),
17397
- obj.firedEvents.map((event) => [event.productId, event.event]),
17310
+ (_b = (_a = obj.firedEvents) === null || _a === void 0 ? void 0 : _a.map((event) => [event.productId, event.event])) !== null && _b !== void 0 ? _b : [],
17398
17311
  obj.productIds,
17399
- obj.createdAt,
17312
+ (_c = obj.createdAt) !== null && _c !== void 0 ? _c : 0,
17400
17313
  ];
17401
17314
  }
17402
17315
  /**
17403
17316
  * Converts an array representation of spot data into an object representation.
17404
17317
  *
17405
- * @param {LocalStorageSpotArray} arr - The array containing spot data.
17318
+ * @param {SpotArrayType} arr - The array containing spot data.
17406
17319
  * @return {ILocalStorageSpot} An object representation of the spot data.
17407
17320
  */
17408
17321
  spotArrayToObject(arr) {
17409
17322
  return {
17410
- placementId: arr[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX.PLACEMENT_ID],
17411
- spotId: arr[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX.SPOT_ID],
17412
- spotType: arr[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX.SPOT_TYPE],
17413
- events: this.spotEventArrayToObject(arr[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX.EVENTS]),
17414
- firedEvents: arr[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX.FIRED_EVENTS].map((item) => ({
17323
+ placementId: arr[ENUM_SPOT_ARRAY_INDEX.PLACEMENT_ID],
17324
+ spotId: arr[ENUM_SPOT_ARRAY_INDEX.SPOT_ID],
17325
+ spotType: arr[ENUM_SPOT_ARRAY_INDEX.SPOT_TYPE],
17326
+ events: this.spotEventArrayToObject(arr[ENUM_SPOT_ARRAY_INDEX.EVENTS]),
17327
+ firedEvents: arr[ENUM_SPOT_ARRAY_INDEX.FIRED_EVENTS].map((item) => ({
17415
17328
  productId: item[0],
17416
17329
  event: item[1],
17417
17330
  })),
17418
- productIds: arr[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX.PRODUCT_IDS],
17419
- createdAt: arr[ENUM_LOCAL_STORAGE_SPOT_ARRAY_INDEX.CREATED_AT],
17331
+ productIds: arr[ENUM_SPOT_ARRAY_INDEX.PRODUCT_IDS],
17332
+ createdAt: arr[ENUM_SPOT_ARRAY_INDEX.CREATED_AT],
17420
17333
  };
17421
17334
  }
17422
17335
  /**
@@ -20713,12 +20626,17 @@ class DataLayerMonitor {
20713
20626
  };
20714
20627
  }
20715
20628
  extractProductData(event) {
20716
- var _a, _b, _c, _d, _e, _f, _g, _h;
20629
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
20717
20630
  const items = ((_a = event === null || event === void 0 ? void 0 : event.value) === null || _a === void 0 ? void 0 : _a.items) ||
20718
20631
  ((_b = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _b === void 0 ? void 0 : _b.items) ||
20719
- ((_d = (_c = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _c === void 0 ? void 0 : _c.detail) === null || _d === void 0 ? void 0 : _d.products) ||
20720
- ((_f = (_e = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _e === void 0 ? void 0 : _e.checkout) === null || _f === void 0 ? void 0 : _f.products) ||
20721
- ((_h = (_g = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _g === void 0 ? void 0 : _g.purchase) === null || _h === void 0 ? void 0 : _h.products) ||
20632
+ ((_c = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _c === void 0 ? void 0 : _c.products) ||
20633
+ ((_e = (_d = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _d === void 0 ? void 0 : _d.detail) === null || _e === void 0 ? void 0 : _e.products) ||
20634
+ ((_g = (_f = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _f === void 0 ? void 0 : _f.checkout) === null || _g === void 0 ? void 0 : _g.products) ||
20635
+ ((_j = (_h = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _h === void 0 ? void 0 : _h.purchase) === null || _j === void 0 ? void 0 : _j.products) ||
20636
+ ((_l = (_k = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _k === void 0 ? void 0 : _k.add) === null || _l === void 0 ? void 0 : _l.products) ||
20637
+ ((_o = (_m = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _m === void 0 ? void 0 : _m.remove) === null || _o === void 0 ? void 0 : _o.products) ||
20638
+ ((_q = (_p = event === null || event === void 0 ? void 0 : event.ecommerce) === null || _p === void 0 ? void 0 : _p.click) === null || _q === void 0 ? void 0 : _q.products) ||
20639
+ (event === null || event === void 0 ? void 0 : event.products) ||
20722
20640
  [];
20723
20641
  return items.map((item) => {
20724
20642
  const data = {
@@ -20764,6 +20682,7 @@ class MonitorService {
20764
20682
  }
20765
20683
  this.pubSubService = PubsubService.getInstance();
20766
20684
  this.localStorageService = LocalStorageService.getInstance();
20685
+ this.normalizeStringHelper = NormalizeStringHelper.getInstance();
20767
20686
  }
20768
20687
  static getInstance() {
20769
20688
  if (!MonitorService.instance) {
@@ -20781,7 +20700,7 @@ class MonitorService {
20781
20700
  this.implementedMonitor.start();
20782
20701
  }
20783
20702
  async matchAndFireEvent(eventData, spots) {
20784
- var _a;
20703
+ var _a, _b, _c, _d;
20785
20704
  if (!spots)
20786
20705
  return;
20787
20706
  for (const spot of Object.values(spots)) {
@@ -20791,15 +20710,15 @@ class MonitorService {
20791
20710
  if (!Object.values(RMN_SPOT_EVENT).includes(eventData.event)) {
20792
20711
  continue;
20793
20712
  }
20794
- const firedEvents = spot.firedEvents;
20795
- const [eventProductId] = cleanProductIds([data.id]);
20713
+ const firedEvents = spot.firedEvents || [];
20714
+ const eventProductId = (_a = this.normalizeStringHelper) === null || _a === void 0 ? void 0 : _a.normalize(String(data.id));
20796
20715
  const isEventAlreadyFired = firedEvents.some((event) => event.productId === eventProductId && event.event === eventData.event);
20797
20716
  if (isEventAlreadyFired) {
20798
20717
  continue;
20799
20718
  }
20800
- const spotRelatedProductIdsSet = new Set(cleanProductIds(spot.productIds));
20801
- const [eventProductBrand] = cleanProductIds([data.brand]);
20802
- const [eventVariantBrand] = cleanProductIds([data.variant]);
20719
+ const spotRelatedProductIdsSet = new Set(spot.productIds.map((id) => { var _a; return (_a = this.normalizeStringHelper) === null || _a === void 0 ? void 0 : _a.normalize(String(id)); }));
20720
+ const eventProductBrand = (_b = this.normalizeStringHelper) === null || _b === void 0 ? void 0 : _b.normalize(String(data.brand));
20721
+ const eventVariantBrand = (_c = this.normalizeStringHelper) === null || _c === void 0 ? void 0 : _c.normalize(String(data.variant));
20803
20722
  const isProductMatch = [eventProductId, eventProductBrand, eventVariantBrand].some((id) => spotRelatedProductIdsSet.has(id));
20804
20723
  if (!isProductMatch) {
20805
20724
  continue;
@@ -20810,9 +20729,12 @@ class MonitorService {
20810
20729
  const eventUrl = spot.events[eventPosition].url;
20811
20730
  let additionalQueryParams = '';
20812
20731
  if (eventData.event === RMN_SPOT_EVENT.PURCHASE) {
20813
- const gmv = data.price && data.quantity ? data.price * data.quantity : undefined;
20732
+ const conversionPrice = data.price && data.quantity ? data.price * data.quantity : undefined;
20814
20733
  // gmv = gross merchandise value, it is calculated by multiplying the product price by the product quantity
20815
- additionalQueryParams = objectToQueryParams({ gmv });
20734
+ additionalQueryParams = objectToQueryParams({
20735
+ override: conversionPrice,
20736
+ gmv: conversionPrice,
20737
+ });
20816
20738
  }
20817
20739
  // Fire the event and publish it to the pubsub service
20818
20740
  await this.fireAndPublishSpotEvent({
@@ -20827,7 +20749,7 @@ class MonitorService {
20827
20749
  event: eventData.event,
20828
20750
  });
20829
20751
  // Update the spots in the local storage
20830
- (_a = this.localStorageService) === null || _a === void 0 ? void 0 : _a.setSpot(spot.spotId, {
20752
+ (_d = this.localStorageService) === null || _d === void 0 ? void 0 : _d.setSpot(spot.spotId, {
20831
20753
  placementId: spot.placementId,
20832
20754
  spotId: spot.spotId,
20833
20755
  spotType: spot.spotType,
@@ -20990,7 +20912,6 @@ class EventService {
20990
20912
  spotType: spot.spot,
20991
20913
  events: spot.events,
20992
20914
  productIds: (_a = spot.productIds) !== null && _a !== void 0 ? _a : [],
20993
- firedEvents: [],
20994
20915
  });
20995
20916
  }
20996
20917
  async handleClickEvent({ placementId, spot }) {
@@ -21096,6 +21017,607 @@ class SelectionService extends BaseApi {
21096
21017
  }
21097
21018
  }
21098
21019
 
21020
+ const SPOT_EVENTS_EXAMPLE = [
21021
+ {
21022
+ event: RMN_SPOT_EVENT.CLICK,
21023
+ url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwidXIiOm51bGx9&s=hWz37kbxi_u95EVNn2aoQhc5Aas',
21024
+ },
21025
+ {
21026
+ event: RMN_SPOT_EVENT.IMPRESSION,
21027
+ url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiYmEiOjEsImZxIjowfQ&s=djoysjCimurf-5T11AlNAwwLSS8',
21028
+ },
21029
+ {
21030
+ event: RMN_SPOT_EVENT.PURCHASE,
21031
+ url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiZXQiOjU5fQ&s=AAPAw-3SfZ0JMzjEGFSwt9L-2S4',
21032
+ },
21033
+ {
21034
+ event: RMN_SPOT_EVENT.ADD_TO_CART,
21035
+ url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiZXQiOjYwfQ&s=uzQFcjgL7m9XqUG8FvTPVN5YkZY',
21036
+ },
21037
+ {
21038
+ event: RMN_SPOT_EVENT.ADD_TO_WISHLIST,
21039
+ url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiZXQiOjYzfQ&s=m3ISU_iIy-OFtXrTKpI6cJAEC0k',
21040
+ },
21041
+ {
21042
+ event: RMN_SPOT_EVENT.BUY_NOW,
21043
+ url: 'https://dev.rmn.liquidcommerce.cloud/api/spots/event?e=eyJ2IjoiMS4xMiIsImF2IjozMDY1NzgzLCJhdCI6MTYzLCJidCI6MCwiY20iOjQ0MDE5MjQxOCwiY2giOjYzMTg0LCJjayI6e30sImNyIjo0ODE4NTUzNzUsImRpIjoiOWMxNGFhMGI3NWY4NDMxNTllMTAwYWQzNzA1NzQyYzMiLCJkaiI6MCwiaWkiOiIxZjU0MGM5NmQ1N2M0YmZjODFlZjRkNjhkMzFjNDVkOSIsImRtIjozLCJmYyI6NjU2NjgyNTQ5LCJmbCI6NjQzOTMxODIxLCJpcCI6IjM1LjIyMy4xOTguOTUiLCJudyI6MTE1MDAsInBjIjo1MDAwLCJvcCI6NTAwMCwibXAiOjUwMDAsImVjIjowLCJnbSI6MCwiZXAiOm51bGwsInByIjoyNDkzMTYsInJ0IjoxLCJycyI6NTAwLCJzYSI6IjU1Iiwic2IiOiJpLTA0MDI0ODg4ZDlkMWRjZWQ3Iiwic3AiOjI3MjI3Miwic3QiOjEyODcyOTYsInRyIjp0cnVlLCJ1ayI6IjNhZWRhMWMxLTZhYjItNDUwNy04Mzg5LTEwZTJmNDMxYjM5MSIsInRzIjoxNzI5MzU5MDU0OTI3LCJiZiI6dHJ1ZSwicG4iOiJyYlByb2R1Y3RVcGNzIiwiZ2MiOnRydWUsImdDIjp0cnVlLCJncyI6Im5vbmUiLCJkYyI6MSwidHoiOiJBbWVyaWNhL05ld19Zb3JrIiwiZXQiOjY5fQ&s=l6MOscQC-q-FkC2Ksd7w6jjySCQ',
21044
+ },
21045
+ ];
21046
+ ({
21047
+ rbHomepageHero: [
21048
+ {
21049
+ id: 'abc123',
21050
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21051
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21052
+ width: 1140,
21053
+ height: 640,
21054
+ header: 'Premium Wine Collection',
21055
+ description: 'Discover our exclusive selection of vintage wines',
21056
+ ctaText: 'Shop Wines',
21057
+ textColor: '#ffffff',
21058
+ ctaTextColor: '#ffffff',
21059
+ primaryImage: 'https://placehold.co/1140x640/png?text=Wine+Collection',
21060
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Wine',
21061
+ events: SPOT_EVENTS_EXAMPLE,
21062
+ productIds: [1, 2, 3],
21063
+ },
21064
+ {
21065
+ id: 'jkl012',
21066
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21067
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21068
+ width: 1140,
21069
+ height: 640,
21070
+ header: 'Whiskey Collection',
21071
+ description: 'Premium whiskeys from around the world',
21072
+ ctaText: 'Shop Whiskeys',
21073
+ textColor: '#ffffff',
21074
+ backgroundColor: '#2c1810',
21075
+ ctaTextColor: '#2c1810',
21076
+ primaryImage: 'https://placehold.co/1140x640/png?text=Whiskey',
21077
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Whiskey',
21078
+ events: SPOT_EVENTS_EXAMPLE,
21079
+ productIds: [10, 11],
21080
+ },
21081
+ {
21082
+ id: 'stu901',
21083
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21084
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21085
+ width: 1140,
21086
+ height: 640,
21087
+ header: 'Summer Cocktails',
21088
+ description: 'Essential spirits for summer mixing',
21089
+ ctaText: 'Mix It Up',
21090
+ textColor: '#ffffff',
21091
+ backgroundColor: '#4d3a0a',
21092
+ ctaTextColor: '#4d3a0a',
21093
+ primaryImage: 'https://placehold.co/1140x640/png?text=Cocktails',
21094
+ secondaryImage: 'https://placehold.co/1140x640/png?text=Mixers',
21095
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Cocktails',
21096
+ mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Mixers',
21097
+ events: SPOT_EVENTS_EXAMPLE,
21098
+ productIds: [16, 17, 18],
21099
+ },
21100
+ {
21101
+ id: 'def456',
21102
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21103
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21104
+ width: 1140,
21105
+ height: 640,
21106
+ header: 'Craft Beer Festival',
21107
+ description: 'Local breweries and exclusive releases',
21108
+ ctaText: 'Explore Beers',
21109
+ textColor: '#ffffff',
21110
+ ctaTextColor: '#ffffff',
21111
+ primaryImage: 'https://placehold.co/1140x640/png?text=Beer+Festival',
21112
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Beer',
21113
+ events: SPOT_EVENTS_EXAMPLE,
21114
+ productIds: [4, 5, 6],
21115
+ },
21116
+ {
21117
+ id: 'mno345',
21118
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21119
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21120
+ width: 1140,
21121
+ height: 640,
21122
+ header: 'Champagne Selection',
21123
+ description: 'Finest champagnes for every occasion',
21124
+ ctaText: 'View Champagnes',
21125
+ textColor: '#ffffff',
21126
+ backgroundColor: '#1a1a1a',
21127
+ ctaTextColor: '#1a1a1a',
21128
+ primaryImage: 'https://placehold.co/1140x640/png?text=Champagne',
21129
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Champagne',
21130
+ events: SPOT_EVENTS_EXAMPLE,
21131
+ productIds: [12, 13],
21132
+ },
21133
+ {
21134
+ id: 'vwx234',
21135
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21136
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21137
+ width: 1140,
21138
+ height: 640,
21139
+ header: 'Wine Regions',
21140
+ description: 'Explore wines from top regions',
21141
+ ctaText: 'Tour Regions',
21142
+ textColor: '#ffffff',
21143
+ backgroundColor: '#4d0a0a',
21144
+ ctaTextColor: '#4d0a0a',
21145
+ primaryImage: 'https://placehold.co/1140x640/png?text=Wine+Regions',
21146
+ secondaryImage: 'https://placehold.co/1140x640/png?text=Vineyards',
21147
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Regions',
21148
+ mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Vineyards',
21149
+ events: SPOT_EVENTS_EXAMPLE,
21150
+ productIds: [19, 20, 21],
21151
+ },
21152
+ {
21153
+ id: 'ghi789',
21154
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21155
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21156
+ width: 1140,
21157
+ height: 640,
21158
+ header: 'Rare Spirits',
21159
+ description: 'Limited edition spirits collection',
21160
+ ctaText: 'View Collection',
21161
+ textColor: '#ffffff',
21162
+ ctaTextColor: '#ffffff',
21163
+ primaryImage: 'https://placehold.co/1140x640/png?text=Rare+Spirits',
21164
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Spirits',
21165
+ events: SPOT_EVENTS_EXAMPLE,
21166
+ productIds: [7, 8, 9],
21167
+ },
21168
+ {
21169
+ id: 'pqr678',
21170
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21171
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21172
+ width: 1140,
21173
+ height: 640,
21174
+ header: 'Gin Collection',
21175
+ description: 'Artisanal gins and botanicals',
21176
+ ctaText: 'Explore Gins',
21177
+ textColor: '#ffffff',
21178
+ backgroundColor: '#0a4d4d',
21179
+ ctaTextColor: '#0a4d4d',
21180
+ primaryImage: 'https://placehold.co/1140x640/png?text=Gin',
21181
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Gin',
21182
+ events: SPOT_EVENTS_EXAMPLE,
21183
+ productIds: [14, 15],
21184
+ },
21185
+ {
21186
+ id: 'yz5678',
21187
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21188
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21189
+ width: 1140,
21190
+ height: 640,
21191
+ header: 'Tequila Collection',
21192
+ description: 'Premium tequilas and mezcals',
21193
+ ctaText: 'Shop Tequila',
21194
+ textColor: '#ffffff',
21195
+ backgroundColor: '#0a4d2b',
21196
+ ctaTextColor: '#0a4d2b',
21197
+ primaryImage: 'https://placehold.co/1140x640/png?text=Tequila',
21198
+ secondaryImage: 'https://placehold.co/1140x640/png?text=Mezcal',
21199
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Tequila',
21200
+ mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Mezcal',
21201
+ events: SPOT_EVENTS_EXAMPLE,
21202
+ productIds: [22, 23, 24],
21203
+ },
21204
+ ],
21205
+ rbHomepageHeroFullImage: [
21206
+ {
21207
+ id: 'hjk567',
21208
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21209
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21210
+ width: 1140,
21211
+ height: 640,
21212
+ header: 'Holiday Gift Guide',
21213
+ description: 'Perfect spirits for every occasion',
21214
+ ctaText: 'Shop Gifts',
21215
+ textColor: '#ffffff',
21216
+ ctaTextColor: '#ffffff',
21217
+ primaryImage: 'https://placehold.co/1140x640/png?text=Gift+Guide',
21218
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Gifts',
21219
+ events: SPOT_EVENTS_EXAMPLE,
21220
+ productIds: [25, 26],
21221
+ },
21222
+ {
21223
+ id: 'qwe890',
21224
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21225
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_FULL_IMAGE,
21226
+ width: 1140,
21227
+ height: 640,
21228
+ header: 'Summer Wine Festival',
21229
+ description: 'Refreshing wines for summer',
21230
+ ctaText: 'Shop Festival',
21231
+ textColor: '#ffffff',
21232
+ ctaTextColor: '#ffffff',
21233
+ primaryImage: 'https://placehold.co/1140x640/png?text=Wine+Festival',
21234
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Festival',
21235
+ events: SPOT_EVENTS_EXAMPLE,
21236
+ productIds: [27, 28],
21237
+ },
21238
+ ],
21239
+ rbHomepageHeroTwoTile: [
21240
+ {
21241
+ id: 'iop987',
21242
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21243
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21244
+ width: 1140,
21245
+ height: 640,
21246
+ header: 'Bourbon Selection',
21247
+ description: "Kentucky's finest bourbons",
21248
+ ctaText: 'Shop Bourbon',
21249
+ textColor: '#ffffff',
21250
+ backgroundColor: '#2c1810',
21251
+ ctaTextColor: '#2c1810',
21252
+ primaryImage: 'https://placehold.co/1140x640/png?text=Bourbon',
21253
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Bourbon',
21254
+ events: SPOT_EVENTS_EXAMPLE,
21255
+ productIds: [29, 30],
21256
+ },
21257
+ {
21258
+ id: 'lkj012',
21259
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21260
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_TWO_TILE,
21261
+ width: 1140,
21262
+ height: 640,
21263
+ header: 'Vodka Collection',
21264
+ description: 'Premium vodkas from around the world',
21265
+ ctaText: 'Shop Vodka',
21266
+ textColor: '#ffffff',
21267
+ backgroundColor: '#1a1a1a',
21268
+ ctaTextColor: '#1a1a1a',
21269
+ primaryImage: 'https://placehold.co/1140x640/png?text=Vodka',
21270
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Vodka',
21271
+ events: SPOT_EVENTS_EXAMPLE,
21272
+ productIds: [31, 32],
21273
+ },
21274
+ ],
21275
+ rbHomepageHeroThreeTile: [
21276
+ {
21277
+ id: 'bnm345',
21278
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21279
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21280
+ width: 1140,
21281
+ height: 640,
21282
+ header: 'Rum Collection',
21283
+ description: 'Caribbean and craft rums',
21284
+ ctaText: 'Shop Rum',
21285
+ textColor: '#ffffff',
21286
+ backgroundColor: '#4d3a0a',
21287
+ ctaTextColor: '#4d3a0a',
21288
+ primaryImage: 'https://placehold.co/1140x640/png?text=Rum',
21289
+ secondaryImage: 'https://placehold.co/1140x640/png?text=Craft+Rum',
21290
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Rum',
21291
+ mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Craft',
21292
+ events: SPOT_EVENTS_EXAMPLE,
21293
+ productIds: [33, 34],
21294
+ },
21295
+ {
21296
+ id: 'fgh678',
21297
+ spot: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21298
+ variant: RMN_SPOT_TYPE.RB_HOMEPAGE_HERO_THREE_TILE,
21299
+ width: 1140,
21300
+ height: 640,
21301
+ header: 'Scotch Selection',
21302
+ description: 'Single malts and blends',
21303
+ ctaText: 'Shop Scotch',
21304
+ textColor: '#ffffff',
21305
+ backgroundColor: '#4d0a0a',
21306
+ ctaTextColor: '#4d0a0a',
21307
+ primaryImage: 'https://placehold.co/1140x640/png?text=Scotch',
21308
+ secondaryImage: 'https://placehold.co/1140x640/png?text=Single+Malts',
21309
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Scotch',
21310
+ mobileSecondaryImage: 'https://placehold.co/640x320/png?text=Mobile+Malts',
21311
+ events: SPOT_EVENTS_EXAMPLE,
21312
+ productIds: [35, 36],
21313
+ },
21314
+ ],
21315
+ rbLargeCategoryImageTout: [
21316
+ {
21317
+ id: 'cde567',
21318
+ spot: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
21319
+ variant: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
21320
+ width: 468,
21321
+ height: 410,
21322
+ header: 'Rare & Limited Edition',
21323
+ description: 'Discover our collection of hard-to-find and limited release spirits.',
21324
+ textColor: '#ffffff',
21325
+ ctaTextColor: '#ffffff',
21326
+ primaryImage: 'https://placehold.co/468x410/png?text=Rare+Spirits',
21327
+ mobilePrimaryImage: 'https://placehold.co/468x410/png?text=Mobile+Rare+Spirits',
21328
+ ctaText: 'Shop Rare Spirits',
21329
+ events: SPOT_EVENTS_EXAMPLE,
21330
+ productIds: [37, 38, 39, 40, 41],
21331
+ },
21332
+ {
21333
+ id: 'efg789',
21334
+ spot: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
21335
+ variant: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
21336
+ width: 468,
21337
+ height: 410,
21338
+ header: 'Vintage Champagnes',
21339
+ description: 'Explore our prestigious collection of aged champagnes.',
21340
+ textColor: '#ffffff',
21341
+ ctaTextColor: '#ffffff',
21342
+ primaryImage: 'https://placehold.co/468x410/png?text=Vintage+Champagne',
21343
+ mobilePrimaryImage: 'https://placehold.co/468x410/png?text=Mobile+Champagne',
21344
+ ctaText: 'View Collection',
21345
+ events: SPOT_EVENTS_EXAMPLE,
21346
+ productIds: [42, 43, 44, 45, 46],
21347
+ },
21348
+ {
21349
+ id: 'ghi012',
21350
+ spot: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
21351
+ variant: RMN_SPOT_TYPE.RB_LARGE_CATEGORY_IMAGE_TOUT,
21352
+ width: 468,
21353
+ height: 410,
21354
+ header: 'Small Batch Bourbon',
21355
+ description: 'Hand-selected premium bourbon from craft distilleries.',
21356
+ textColor: '#ffffff',
21357
+ ctaTextColor: '#ffffff',
21358
+ primaryImage: 'https://placehold.co/468x410/png?text=Craft+Bourbon',
21359
+ mobilePrimaryImage: 'https://placehold.co/468x410/png?text=Mobile+Bourbon',
21360
+ ctaText: 'Explore Bourbon',
21361
+ events: SPOT_EVENTS_EXAMPLE,
21362
+ productIds: [47, 48, 49, 50, 51],
21363
+ },
21364
+ ],
21365
+ rbSmallDiscoverTout: [
21366
+ {
21367
+ id: 'jkl345',
21368
+ spot: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
21369
+ variant: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
21370
+ width: 224,
21371
+ height: 378,
21372
+ header: 'Château Margaux 2015 Bordeaux',
21373
+ textColor: '#ffffff',
21374
+ primaryImage: 'https://placehold.co/224x378/png?text=Château+Margaux',
21375
+ mobilePrimaryImage: 'https://placehold.co/224x378/png?text=Mobile+Château+Margaux',
21376
+ events: SPOT_EVENTS_EXAMPLE,
21377
+ productIds: [52, 53, 54, 55, 56],
21378
+ },
21379
+ {
21380
+ id: 'lmn678',
21381
+ spot: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
21382
+ variant: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
21383
+ width: 224,
21384
+ height: 378,
21385
+ header: 'Macallan 25 Year',
21386
+ textColor: '#ffffff',
21387
+ primaryImage: 'https://placehold.co/224x378/png?text=Macallan+25',
21388
+ mobilePrimaryImage: 'https://placehold.co/224x378/png?text=Mobile+Macallan',
21389
+ events: SPOT_EVENTS_EXAMPLE,
21390
+ productIds: [57, 58, 59, 60, 61],
21391
+ },
21392
+ {
21393
+ id: 'nop901',
21394
+ spot: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
21395
+ variant: RMN_SPOT_TYPE.RB_SMALL_DISCOVER_TOUT,
21396
+ width: 224,
21397
+ height: 378,
21398
+ header: 'Louis XIII Cognac',
21399
+ textColor: '#ffffff',
21400
+ primaryImage: 'https://placehold.co/224x378/png?text=Louis+XIII',
21401
+ mobilePrimaryImage: 'https://placehold.co/224x378/png?text=Mobile+Louis+XIII',
21402
+ events: SPOT_EVENTS_EXAMPLE,
21403
+ productIds: [62, 63, 64, 65, 66],
21404
+ },
21405
+ ],
21406
+ rbSmallCategoryImageTout: [
21407
+ {
21408
+ id: 'qrs234',
21409
+ spot: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
21410
+ variant: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
21411
+ width: 224,
21412
+ height: 410,
21413
+ header: 'Japanese Sake',
21414
+ textColor: '#ffffff',
21415
+ primaryImage: 'https://placehold.co/224x410/png?text=Japanese+Sake',
21416
+ mobilePrimaryImage: 'https://placehold.co/224x410/png?text=Mobile+Japanese+Sake',
21417
+ events: SPOT_EVENTS_EXAMPLE,
21418
+ productIds: [67, 68, 69, 70, 71],
21419
+ },
21420
+ {
21421
+ id: 'stu567',
21422
+ spot: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
21423
+ variant: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
21424
+ width: 224,
21425
+ height: 410,
21426
+ header: 'Craft Vermouth',
21427
+ textColor: '#ffffff',
21428
+ primaryImage: 'https://placehold.co/224x410/png?text=Craft+Vermouth',
21429
+ mobilePrimaryImage: 'https://placehold.co/224x410/png?text=Mobile+Vermouth',
21430
+ events: SPOT_EVENTS_EXAMPLE,
21431
+ productIds: [72, 73, 74, 75, 76],
21432
+ },
21433
+ {
21434
+ id: 'vwx890',
21435
+ spot: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
21436
+ variant: RMN_SPOT_TYPE.RB_SMALL_CATEGORY_IMAGE_TOUT,
21437
+ width: 224,
21438
+ height: 410,
21439
+ header: 'Premium Mezcal',
21440
+ textColor: '#ffffff',
21441
+ primaryImage: 'https://placehold.co/224x410/png?text=Premium+Mezcal',
21442
+ mobilePrimaryImage: 'https://placehold.co/224x410/png?text=Mobile+Mezcal',
21443
+ events: SPOT_EVENTS_EXAMPLE,
21444
+ productIds: [77, 78, 79, 80, 81],
21445
+ },
21446
+ ],
21447
+ rbCollectionBannerWithoutTextBlock: [
21448
+ {
21449
+ id: 'yz1234',
21450
+ spot: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
21451
+ variant: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
21452
+ width: 887,
21453
+ height: 344,
21454
+ primaryImage: 'https://placehold.co/887x344/png?text=Summer+Cocktails',
21455
+ mobilePrimaryImage: 'https://placehold.co/887x344/png?text=Mobile+Summer+Cocktails',
21456
+ events: SPOT_EVENTS_EXAMPLE,
21457
+ productIds: [82, 83, 84, 85, 86],
21458
+ },
21459
+ {
21460
+ id: 'abc567',
21461
+ spot: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
21462
+ variant: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
21463
+ width: 887,
21464
+ height: 344,
21465
+ primaryImage: 'https://placehold.co/887x344/png?text=Holiday+Spirits',
21466
+ mobilePrimaryImage: 'https://placehold.co/887x344/png?text=Mobile+Holiday+Spirits',
21467
+ events: SPOT_EVENTS_EXAMPLE,
21468
+ productIds: [87, 88, 89, 90, 91],
21469
+ },
21470
+ {
21471
+ id: 'def901',
21472
+ spot: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
21473
+ variant: RMN_SPOT_TYPE.RB_COLLECTION_BANNER_WITHOUT_TEXT_BLOCK,
21474
+ width: 887,
21475
+ height: 344,
21476
+ primaryImage: 'https://placehold.co/887x344/png?text=Wine+Essentials',
21477
+ mobilePrimaryImage: 'https://placehold.co/887x344/png?text=Mobile+Wine+Essentials',
21478
+ events: SPOT_EVENTS_EXAMPLE,
21479
+ productIds: [92, 93, 94, 95, 96],
21480
+ },
21481
+ ],
21482
+ rbNavigationBanner: [
21483
+ {
21484
+ id: 'ghi234',
21485
+ spot: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
21486
+ variant: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
21487
+ width: 440,
21488
+ height: 220,
21489
+ header: 'Explore Tequilas',
21490
+ textColor: '#ffffff',
21491
+ primaryImage: 'https://placehold.co/440x220/png?text=Tequila+Collection',
21492
+ mobilePrimaryImage: 'https://placehold.co/440x220/png?text=Mobile+Tequila+Collection',
21493
+ events: SPOT_EVENTS_EXAMPLE,
21494
+ productIds: [97, 98, 99, 100, 101],
21495
+ },
21496
+ {
21497
+ id: 'jkl678',
21498
+ spot: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
21499
+ variant: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
21500
+ width: 440,
21501
+ height: 220,
21502
+ header: 'Craft Gin Selection',
21503
+ textColor: '#ffffff',
21504
+ primaryImage: 'https://placehold.co/440x220/png?text=Gin+Selection',
21505
+ mobilePrimaryImage: 'https://placehold.co/440x220/png?text=Mobile+Gin+Selection',
21506
+ events: SPOT_EVENTS_EXAMPLE,
21507
+ productIds: [102, 103, 104, 105, 106],
21508
+ },
21509
+ {
21510
+ id: 'mno012',
21511
+ spot: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
21512
+ variant: RMN_SPOT_TYPE.RB_NAVIGATION_BANNER,
21513
+ width: 440,
21514
+ height: 220,
21515
+ header: 'Premium Vodka',
21516
+ textColor: '#ffffff',
21517
+ primaryImage: 'https://placehold.co/440x220/png?text=Vodka+Premium',
21518
+ mobilePrimaryImage: 'https://placehold.co/440x220/png?text=Mobile+Vodka+Premium',
21519
+ events: SPOT_EVENTS_EXAMPLE,
21520
+ productIds: [107, 108, 109, 110, 111],
21521
+ },
21522
+ ],
21523
+ rbInText: [
21524
+ {
21525
+ id: 'mxo259',
21526
+ spot: RMN_SPOT_TYPE.RB_IN_TEXT,
21527
+ variant: RMN_SPOT_TYPE.RB_IN_TEXT,
21528
+ width: 1,
21529
+ height: 1,
21530
+ header: 'Premium Vodka',
21531
+ textColor: '#ffffff',
21532
+ backgroundColor: '#000000',
21533
+ events: SPOT_EVENTS_EXAMPLE,
21534
+ productIds: [107, 108, 109, 110, 111],
21535
+ },
21536
+ ],
21537
+ rbVideoPlayer: [
21538
+ {
21539
+ id: 'mxo259',
21540
+ spot: RMN_SPOT_TYPE.RB_VIDEO_PLAYER,
21541
+ variant: RMN_SPOT_TYPE.RB_VIDEO_PLAYER,
21542
+ width: 1280,
21543
+ height: 720,
21544
+ videoUrl: 'https://www.youtube.com/watch?v=9bZkp7q19f0',
21545
+ videoOverlayImage: 'https://placehold.co/1280x720/png?text=Video+Overlay',
21546
+ videoOverlayHeader: 'Watch Our Story',
21547
+ videoOverlayDescription: 'Discover the history of our distillery',
21548
+ videoControls: true,
21549
+ videoAutoPlay: true,
21550
+ videoMute: true,
21551
+ videoLoop: true,
21552
+ events: SPOT_EVENTS_EXAMPLE,
21553
+ productIds: [107, 108, 109, 110, 111],
21554
+ },
21555
+ ],
21556
+ });
21557
+ ({
21558
+ banner: [],
21559
+ billboard: [
21560
+ {
21561
+ id: 'kol567',
21562
+ spot: RMN_SPOT_TYPE.BILLBOARD,
21563
+ variant: `${RMN_SPOT_TYPE.BILLBOARD}V2`,
21564
+ width: 1140,
21565
+ height: 640,
21566
+ header: 'Holiday Gift Guide',
21567
+ description: 'Perfect spirits for every occasion',
21568
+ ctaText: 'Shop Gifts',
21569
+ textColor: '#ffffff',
21570
+ ctaTextColor: '#ffffff',
21571
+ primaryImage: 'https://placehold.co/1140x640/png?text=Gift+Guide',
21572
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Gifts',
21573
+ events: SPOT_EVENTS_EXAMPLE,
21574
+ productIds: [25, 26],
21575
+ },
21576
+ {
21577
+ id: 'hpm390',
21578
+ spot: RMN_SPOT_TYPE.BILLBOARD,
21579
+ variant: `${RMN_SPOT_TYPE.BILLBOARD}V2`,
21580
+ width: 1140,
21581
+ height: 640,
21582
+ header: 'Summer Wine Festival',
21583
+ description: 'Refreshing wines for summer',
21584
+ ctaText: 'Shop Festival',
21585
+ textColor: '#ffffff',
21586
+ ctaTextColor: '#ffffff',
21587
+ primaryImage: 'https://placehold.co/1140x640/png?text=Wine+Festival',
21588
+ mobilePrimaryImage: 'https://placehold.co/640x640/png?text=Mobile+Festival',
21589
+ events: SPOT_EVENTS_EXAMPLE,
21590
+ productIds: [27, 28],
21591
+ },
21592
+ ],
21593
+ button2: [],
21594
+ featurePhoneLargeBanner: [],
21595
+ featurePhoneMediumBanner: [],
21596
+ featurePhoneSmallBanner: [],
21597
+ halfPage: [],
21598
+ inText: [],
21599
+ largeLeaderboard: [],
21600
+ largeRectangle: [],
21601
+ leaderboard: [],
21602
+ mediumRectangle: [],
21603
+ microBar: [],
21604
+ mobilePhoneInterstitial1: [],
21605
+ mobilePhoneInterstitial2: [],
21606
+ mobilePhoneInterstitial3: [],
21607
+ popUp: [],
21608
+ portrait: [],
21609
+ rbProductUpcs: [],
21610
+ skyscraper: [],
21611
+ smallRectangle: [],
21612
+ smallSquare: [],
21613
+ smartphoneBanner1: [],
21614
+ smartphoneBanner2: [],
21615
+ square: [],
21616
+ verticalBanner: [],
21617
+ verticalRectangle: [],
21618
+ wideSkyscraper: [],
21619
+ });
21620
+
21099
21621
  /**
21100
21622
  * Checks if the current environment is a browser environment.
21101
21623
  *