purgetss 7.4.0 → 7.5.1

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.
@@ -1701,6 +1701,17 @@
1701
1701
  '.title-attributes-shadow-2xl': { titleAttributes: { shadow: { color: '#80000000', blurRadius: 14, offset: { width: 0, height: 8 } } } }
1702
1702
  '.title-attributes-shadow-none': { titleAttributes: { shadow: { color: null, blurRadius: null, offset: { width: 0, height: 0 } } } }
1703
1703
 
1704
+ // Property(ies): snap - For the Animation module
1705
+ // Component(s): Animation
1706
+ '.snap-back': { animationProperties: { snap: { back: true } } }
1707
+ '.snap-back-false': { animationProperties: { snap: { back: false } } }
1708
+ '.snap-center': { animationProperties: { snap: { center: true } } }
1709
+ '.snap-center-false': { animationProperties: { snap: { center: false } } }
1710
+ '.snap-magnet': { animationProperties: { snap: { magnet: true } } }
1711
+ '.snap-magnet-false': { animationProperties: { snap: { magnet: false } } }
1712
+ '.keep-z-index': { animationProperties: { keepZIndex: true } }
1713
+ '.keep-z-index-false': { animationProperties: { keepZIndex: false } }
1714
+
1704
1715
  // Property(ies): toggle - For the Animation module
1705
1716
  // Component(s): Animation
1706
1717
  '.opacity-to-0': { opacity: 1, animationProperties: { open: { opacity: 0 }, close: { opacity: 1 } } }
@@ -9193,11 +9204,11 @@
9193
9204
 
9194
9205
  // Property: options
9195
9206
  // Component(s): showParams, Ti.App.iOS.UserNotificationCategory, UserNotificationAttachment, ClipboardItemsType, Ti.UI.OptionDialog
9196
- '.options-category-none[platform=ios]': { options: Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_NONE }
9197
- '.options-category-custom-dismiss-action[platform=ios]': { options: Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_CUSTOM_DISMISS_ACTION }
9198
- '.options-category-allow-in-carplay[platform=ios]': { options: Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_ALLOW_IN_CARPLAY }
9199
- '.options-category-hidden-previews-show-title[platform=ios]': { options: Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_HIDDEN_PREVIEWS_SHOW_TITLE }
9200
- '.options-category-hidden-previews-show-subtitle[platform=ios]': { options: Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_HIDDEN_PREVIEWS_SHOW_SUBTITLE }
9207
+ '.options-category-none[platform=ios]': { options: [ Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_NONE ] }
9208
+ '.options-category-custom-dismiss-action[platform=ios]': { options: [ Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_CUSTOM_DISMISS_ACTION ] }
9209
+ '.options-category-allow-in-carplay[platform=ios]': { options: [ Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_ALLOW_IN_CARPLAY ] }
9210
+ '.options-category-hidden-previews-show-title[platform=ios]': { options: [ Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_HIDDEN_PREVIEWS_SHOW_TITLE ] }
9211
+ '.options-category-hidden-previews-show-subtitle[platform=ios]': { options: [ Ti.App.iOS.USER_NOTIFICATION_CATEGORY_OPTION_HIDDEN_PREVIEWS_SHOW_SUBTITLE ] }
9201
9212
 
9202
9213
  // Property: animated
9203
9214
  // Component(s): showParams, showContactsParams, MusicLibraryOptionsType, CameraOptionsType, PhotoGalleryOptionsType, AnimatedOptions, AnimatedWithDurationOptions, ListViewAnimationProperties, hideParams, Ti.UI.ProgressBar, Ti.UI.Switch, disableTabOptions, TableViewAnimationProperties, openWindowParams, windowToolbarParam, closeWindowParams, DocumentViewerOptions, MenuPopupShowParams, ShowPopoverParams
@@ -9405,24 +9416,24 @@
9405
9416
 
9406
9417
  // Property: mediaTypes
9407
9418
  // Component(s): Ti.App.iOS.SearchableItemAttributeSet, MusicLibraryOptionsType, CameraOptionsType, PhotoGalleryOptionsType, Ti.Media.VideoPlayer
9408
- '.media-types-music-type-all': { mediaTypes: Ti.Media.MUSIC_MEDIA_TYPE_ALL }
9409
- '.media-types-music-type-any-audio': { mediaTypes: Ti.Media.MUSIC_MEDIA_TYPE_ANY_AUDIO }
9410
- '.media-types-music-type-audiobook': { mediaTypes: Ti.Media.MUSIC_MEDIA_TYPE_AUDIOBOOK }
9411
- '.media-types-music-type': { mediaTypes: Ti.Media.MUSIC_MEDIA_TYPE_MUSIC }
9412
- '.media-types-music-type-podcast': { mediaTypes: Ti.Media.MUSIC_MEDIA_TYPE_PODCAST }
9413
- '.media-types-type-photo': { mediaTypes: Ti.Media.MEDIA_TYPE_PHOTO }
9414
- '.media-types-type-livephoto': { mediaTypes: Ti.Media.MEDIA_TYPE_LIVEPHOTO }
9415
- '.media-types-type-video': { mediaTypes: Ti.Media.MEDIA_TYPE_VIDEO }
9416
- '.media-types-video-type-audio': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_AUDIO }
9417
- '.media-types-video-type-closed-caption': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_CLOSED_CAPTION }
9418
- '.media-types-video-type-depth-data': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_DEPTH_DATA }
9419
- '.media-types-video-type-metadata': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_METADATA }
9420
- '.media-types-video-type-metadata-object': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_METADATA_OBJECT }
9421
- '.media-types-video-type-muxed': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_MUXED }
9422
- '.media-types-video-type-subtitle': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_SUBTITLE }
9423
- '.media-types-video-type-text': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_TEXT }
9424
- '.media-types-video-type-timecode': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_TIMECODE }
9425
- '.media-types-video-type': { mediaTypes: Ti.Media.VIDEO_MEDIA_TYPE_VIDEO }
9419
+ '.media-types-music-type-all': { mediaTypes: [ Ti.Media.MUSIC_MEDIA_TYPE_ALL ] }
9420
+ '.media-types-music-type-any-audio': { mediaTypes: [ Ti.Media.MUSIC_MEDIA_TYPE_ANY_AUDIO ] }
9421
+ '.media-types-music-type-audiobook': { mediaTypes: [ Ti.Media.MUSIC_MEDIA_TYPE_AUDIOBOOK ] }
9422
+ '.media-types-music-type': { mediaTypes: [ Ti.Media.MUSIC_MEDIA_TYPE_MUSIC ] }
9423
+ '.media-types-music-type-podcast': { mediaTypes: [ Ti.Media.MUSIC_MEDIA_TYPE_PODCAST ] }
9424
+ '.media-types-type-photo': { mediaTypes: [ Ti.Media.MEDIA_TYPE_PHOTO ] }
9425
+ '.media-types-type-livephoto': { mediaTypes: [ Ti.Media.MEDIA_TYPE_LIVEPHOTO ] }
9426
+ '.media-types-type-video': { mediaTypes: [ Ti.Media.MEDIA_TYPE_VIDEO ] }
9427
+ '.media-types-video-type-audio': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_AUDIO ] }
9428
+ '.media-types-video-type-closed-caption': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_CLOSED_CAPTION ] }
9429
+ '.media-types-video-type-depth-data': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_DEPTH_DATA ] }
9430
+ '.media-types-video-type-metadata': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_METADATA ] }
9431
+ '.media-types-video-type-metadata-object': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_METADATA_OBJECT ] }
9432
+ '.media-types-video-type-muxed': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_MUXED ] }
9433
+ '.media-types-video-type-subtitle': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_SUBTITLE ] }
9434
+ '.media-types-video-type-text': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_TEXT ] }
9435
+ '.media-types-video-type-timecode': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_TIMECODE ] }
9436
+ '.media-types-video-type': { mediaTypes: [ Ti.Media.VIDEO_MEDIA_TYPE_VIDEO ] }
9426
9437
 
9427
9438
  // Property: role
9428
9439
  // Component(s): Ti.App.iOS.SearchableItemAttributeSet, Ti.Calendar.Attendee
@@ -10015,8 +10026,8 @@
10015
10026
  // Property: availableCameras
10016
10027
  // Description: Array indicating which cameras are available, CAMERA_FRONT, CAMERA_REAR or both.
10017
10028
  // Component(s): Ti.Media
10018
- '.available-cameras-camera-front': { availableCameras: Ti.Media.CAMERA_FRONT }
10019
- '.available-cameras-camera-rear': { availableCameras: Ti.Media.CAMERA_REAR }
10029
+ '.available-cameras-camera-front': { availableCameras: [ Ti.Media.CAMERA_FRONT ] }
10030
+ '.available-cameras-camera-rear': { availableCameras: [ Ti.Media.CAMERA_REAR ] }
10020
10031
 
10021
10032
  // Property: aspectRatio
10022
10033
  // Description: Aspect ratio of the image.
@@ -10053,23 +10064,23 @@
10053
10064
  // Property: availableCameraMediaTypes
10054
10065
  // Description: Array of media type constants supported for the camera.
10055
10066
  // Component(s): Ti.Media
10056
- '.available-camera-media-types-type-photo': { availableCameraMediaTypes: Ti.Media.MEDIA_TYPE_PHOTO }
10057
- '.available-camera-media-types-type-livephoto': { availableCameraMediaTypes: Ti.Media.MEDIA_TYPE_LIVEPHOTO }
10058
- '.available-camera-media-types-type-video': { availableCameraMediaTypes: Ti.Media.MEDIA_TYPE_VIDEO }
10067
+ '.available-camera-media-types-type-photo': { availableCameraMediaTypes: [ Ti.Media.MEDIA_TYPE_PHOTO ] }
10068
+ '.available-camera-media-types-type-livephoto': { availableCameraMediaTypes: [ Ti.Media.MEDIA_TYPE_LIVEPHOTO ] }
10069
+ '.available-camera-media-types-type-video': { availableCameraMediaTypes: [ Ti.Media.MEDIA_TYPE_VIDEO ] }
10059
10070
 
10060
10071
  // Property: availablePhotoGalleryMediaTypes
10061
10072
  // Description: Array of media type constants supported for saving to the device's camera roll or saved images album.
10062
10073
  // Component(s): Ti.Media
10063
- '.available-photo-gallery-media-types-type': { availablePhotoGalleryMediaTypes: Ti.Media.MEDIA_TYPE_PHOTO }
10064
- '.available-photo-gallery-media-types-type-livephoto': { availablePhotoGalleryMediaTypes: Ti.Media.MEDIA_TYPE_LIVEPHOTO }
10065
- '.available-photo-gallery-media-types-type-video': { availablePhotoGalleryMediaTypes: Ti.Media.MEDIA_TYPE_VIDEO }
10074
+ '.available-photo-gallery-media-types-type': { availablePhotoGalleryMediaTypes: [ Ti.Media.MEDIA_TYPE_PHOTO ] }
10075
+ '.available-photo-gallery-media-types-type-livephoto': { availablePhotoGalleryMediaTypes: [ Ti.Media.MEDIA_TYPE_LIVEPHOTO ] }
10076
+ '.available-photo-gallery-media-types-type-video': { availablePhotoGalleryMediaTypes: [ Ti.Media.MEDIA_TYPE_VIDEO ] }
10066
10077
 
10067
10078
  // Property: availablePhotoMediaTypes
10068
10079
  // Description: Array of media type constants supported for the photo library.
10069
10080
  // Component(s): Ti.Media
10070
- '.available-photo-media-types-type': { availablePhotoMediaTypes: Ti.Media.MEDIA_TYPE_PHOTO }
10071
- '.available-photo-media-types-type-livephoto': { availablePhotoMediaTypes: Ti.Media.MEDIA_TYPE_LIVEPHOTO }
10072
- '.available-photo-media-types-type-video': { availablePhotoMediaTypes: Ti.Media.MEDIA_TYPE_VIDEO }
10081
+ '.available-photo-media-types-type': { availablePhotoMediaTypes: [ Ti.Media.MEDIA_TYPE_PHOTO ] }
10082
+ '.available-photo-media-types-type-livephoto': { availablePhotoMediaTypes: [ Ti.Media.MEDIA_TYPE_LIVEPHOTO ] }
10083
+ '.available-photo-media-types-type-video': { availablePhotoMediaTypes: [ Ti.Media.MEDIA_TYPE_VIDEO ] }
10073
10084
 
10074
10085
  // Property: cameraFlashMode
10075
10086
  // Description: Determines how the flash is fired when using the device's camera.
@@ -10368,38 +10379,38 @@
10368
10379
  // Property: inputs
10369
10380
  // Description: An Array of current input ports for the session. See the AUDIO_SESSION_PORT constants.
10370
10381
  // Component(s): RouteDescription
10371
- '.inputs-audio-session-port-linein': { inputs: Ti.Media.AUDIO_SESSION_PORT_LINEIN }
10372
- '.inputs-audio-session-port-builtinmic': { inputs: Ti.Media.AUDIO_SESSION_PORT_BUILTINMIC }
10373
- '.inputs-audio-session-port-headsetmic': { inputs: Ti.Media.AUDIO_SESSION_PORT_HEADSETMIC }
10374
- '.inputs-audio-session-port-lineout': { inputs: Ti.Media.AUDIO_SESSION_PORT_LINEOUT }
10375
- '.inputs-audio-session-port-headphones': { inputs: Ti.Media.AUDIO_SESSION_PORT_HEADPHONES }
10376
- '.inputs-audio-session-port-bluetootha2dp': { inputs: Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHA2DP }
10377
- '.inputs-audio-session-port-builtinreceiver': { inputs: Ti.Media.AUDIO_SESSION_PORT_BUILTINRECEIVER }
10378
- '.inputs-audio-session-port-builtinspeaker': { inputs: Ti.Media.AUDIO_SESSION_PORT_BUILTINSPEAKER }
10379
- '.inputs-audio-session-port-hdmi': { inputs: Ti.Media.AUDIO_SESSION_PORT_HDMI }
10380
- '.inputs-audio-session-port-airplay': { inputs: Ti.Media.AUDIO_SESSION_PORT_AIRPLAY }
10381
- '.inputs-audio-session-port-bluetoothhfp': { inputs: Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHHFP }
10382
- '.inputs-audio-session-port-usbaudio': { inputs: Ti.Media.AUDIO_SESSION_PORT_USBAUDIO }
10383
- '.inputs-audio-session-port-bluetoothle': { inputs: Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHLE }
10384
- '.inputs-audio-session-port-caraudio': { inputs: Ti.Media.AUDIO_SESSION_PORT_CARAUDIO }
10382
+ '.inputs-audio-session-port-linein': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_LINEIN ] }
10383
+ '.inputs-audio-session-port-builtinmic': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_BUILTINMIC ] }
10384
+ '.inputs-audio-session-port-headsetmic': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_HEADSETMIC ] }
10385
+ '.inputs-audio-session-port-lineout': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_LINEOUT ] }
10386
+ '.inputs-audio-session-port-headphones': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_HEADPHONES ] }
10387
+ '.inputs-audio-session-port-bluetootha2dp': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHA2DP ] }
10388
+ '.inputs-audio-session-port-builtinreceiver': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_BUILTINRECEIVER ] }
10389
+ '.inputs-audio-session-port-builtinspeaker': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_BUILTINSPEAKER ] }
10390
+ '.inputs-audio-session-port-hdmi': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_HDMI ] }
10391
+ '.inputs-audio-session-port-airplay': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_AIRPLAY ] }
10392
+ '.inputs-audio-session-port-bluetoothhfp': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHHFP ] }
10393
+ '.inputs-audio-session-port-usbaudio': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_USBAUDIO ] }
10394
+ '.inputs-audio-session-port-bluetoothle': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHLE ] }
10395
+ '.inputs-audio-session-port-caraudio': { inputs: [ Ti.Media.AUDIO_SESSION_PORT_CARAUDIO ] }
10385
10396
 
10386
10397
  // Property: outputs
10387
10398
  // Description: An Array of current output ports for the session. See the AUDIO_SESSION_PORT constants.
10388
10399
  // Component(s): RouteDescription
10389
- '.outputs-audio-session-port-linein': { outputs: Ti.Media.AUDIO_SESSION_PORT_LINEIN }
10390
- '.outputs-audio-session-port-builtinmic': { outputs: Ti.Media.AUDIO_SESSION_PORT_BUILTINMIC }
10391
- '.outputs-audio-session-port-headsetmic': { outputs: Ti.Media.AUDIO_SESSION_PORT_HEADSETMIC }
10392
- '.outputs-audio-session-port-lineout': { outputs: Ti.Media.AUDIO_SESSION_PORT_LINEOUT }
10393
- '.outputs-audio-session-port-headphones': { outputs: Ti.Media.AUDIO_SESSION_PORT_HEADPHONES }
10394
- '.outputs-audio-session-port-bluetootha2dp': { outputs: Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHA2DP }
10395
- '.outputs-audio-session-port-builtinreceiver': { outputs: Ti.Media.AUDIO_SESSION_PORT_BUILTINRECEIVER }
10396
- '.outputs-audio-session-port-builtinspeaker': { outputs: Ti.Media.AUDIO_SESSION_PORT_BUILTINSPEAKER }
10397
- '.outputs-audio-session-port-hdmi': { outputs: Ti.Media.AUDIO_SESSION_PORT_HDMI }
10398
- '.outputs-audio-session-port-airplay': { outputs: Ti.Media.AUDIO_SESSION_PORT_AIRPLAY }
10399
- '.outputs-audio-session-port-bluetoothhfp': { outputs: Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHHFP }
10400
- '.outputs-audio-session-port-usbaudio': { outputs: Ti.Media.AUDIO_SESSION_PORT_USBAUDIO }
10401
- '.outputs-audio-session-port-bluetoothle': { outputs: Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHLE }
10402
- '.outputs-audio-session-port-caraudio': { outputs: Ti.Media.AUDIO_SESSION_PORT_CARAUDIO }
10400
+ '.outputs-audio-session-port-linein': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_LINEIN ] }
10401
+ '.outputs-audio-session-port-builtinmic': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_BUILTINMIC ] }
10402
+ '.outputs-audio-session-port-headsetmic': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_HEADSETMIC ] }
10403
+ '.outputs-audio-session-port-lineout': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_LINEOUT ] }
10404
+ '.outputs-audio-session-port-headphones': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_HEADPHONES ] }
10405
+ '.outputs-audio-session-port-bluetootha2dp': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHA2DP ] }
10406
+ '.outputs-audio-session-port-builtinreceiver': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_BUILTINRECEIVER ] }
10407
+ '.outputs-audio-session-port-builtinspeaker': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_BUILTINSPEAKER ] }
10408
+ '.outputs-audio-session-port-hdmi': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_HDMI ] }
10409
+ '.outputs-audio-session-port-airplay': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_AIRPLAY ] }
10410
+ '.outputs-audio-session-port-bluetoothhfp': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHHFP ] }
10411
+ '.outputs-audio-session-port-usbaudio': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_USBAUDIO ] }
10412
+ '.outputs-audio-session-port-bluetoothle': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_BLUETOOTHLE ] }
10413
+ '.outputs-audio-session-port-caraudio': { outputs: [ Ti.Media.AUDIO_SESSION_PORT_CARAUDIO ] }
10403
10414
 
10404
10415
  // Property: playbackState
10405
10416
  // Component(s): Ti.Media.MusicPlayer, Ti.Media.VideoPlayer
@@ -17298,12 +17309,12 @@
17298
17309
  // Property: extendEdges
17299
17310
  // Description: An array of supported values specified using the EXTEND_EDGE constants in Titanium.UI.
17300
17311
  // Component(s): Ti.UI.NavigationWindow, Ti.UI.TabGroup, Ti.UI.Window, Ti.UI.iOS.SplitWindow
17301
- '.extend-edges-top': { extendEdges: Ti.UI.EXTEND_EDGE_TOP }
17302
- '.extend-edges-bottom': { extendEdges: Ti.UI.EXTEND_EDGE_BOTTOM }
17303
- '.extend-edges-left': { extendEdges: Ti.UI.EXTEND_EDGE_LEFT }
17304
- '.extend-edges-right': { extendEdges: Ti.UI.EXTEND_EDGE_RIGHT }
17305
- '.extend-edges-none': { extendEdges: Ti.UI.EXTEND_EDGE_NONE }
17306
- '.extend-edges-all': { extendEdges: Ti.UI.EXTEND_EDGE_ALL }
17312
+ '.extend-edges-top': { extendEdges: [ Ti.UI.EXTEND_EDGE_TOP ] }
17313
+ '.extend-edges-bottom': { extendEdges: [ Ti.UI.EXTEND_EDGE_BOTTOM ] }
17314
+ '.extend-edges-left': { extendEdges: [ Ti.UI.EXTEND_EDGE_LEFT ] }
17315
+ '.extend-edges-right': { extendEdges: [ Ti.UI.EXTEND_EDGE_RIGHT ] }
17316
+ '.extend-edges-none': { extendEdges: [ Ti.UI.EXTEND_EDGE_NONE ] }
17317
+ '.extend-edges-all': { extendEdges: [ Ti.UI.EXTEND_EDGE_ALL ] }
17307
17318
 
17308
17319
  // Property: flagSecure
17309
17320
  // Description: Treat the content of the window as secure, preventing it from appearing in screenshots or from being viewed on non-secure displays.
@@ -238,6 +238,7 @@ function processCompoundClasses({ ..._base }) {
238
238
  compoundClasses += generateGlossary('theme', helpers.theme())
239
239
  compoundClasses += generateGlossary('tiMedia', helpers.tiMedia(false))
240
240
  compoundClasses += generateGlossary('titleAttributesShadow-alternative', helpers.titleAttributesShadow())
241
+ compoundClasses += generateGlossary('snap', helpers.snap())
241
242
  compoundClasses += generateGlossary('toggle', helpers.toggle())
242
243
  compoundClasses += generateGlossary('touchEnabled-alternative', helpers.touchEnabled())
243
244
  compoundClasses += generateGlossary('viewShadowOffset', helpers.viewShadowV6())
@@ -394,17 +395,27 @@ function combineDefaultThemeWithConfigFile() {
394
395
  delete base.zIndex.auto
395
396
 
396
397
  // ! Process custom Window, View and ImageView
397
- base.Window = (configFile.theme.Window && configFile.theme.Window.apply)
398
- ? _.merge({ apply: configFile.theme.Window.apply }, configFile.theme.Window)
399
- : _.merge({ default: { backgroundColor: '#FFFFFF' } }, configFile.theme.Window)
398
+ // Merge extend values into theme (same as colors, spacing, etc.)
399
+ _.each(['Window', 'View', 'ImageView'], comp => {
400
+ if (configFile.theme.extend[comp]) {
401
+ configFile.theme[comp] = _.merge({}, configFile.theme[comp], configFile.theme.extend[comp])
402
+ delete configFile.theme.extend[comp]
403
+ }
404
+ // Normalize shorthand: { apply: '...' } → { default: { apply: '...' } }
405
+ if (configFile.theme[comp] && configFile.theme[comp].apply && !configFile.theme[comp].default) {
406
+ configFile.theme[comp] = { default: configFile.theme[comp] }
407
+ }
408
+ })
400
409
 
401
- base.ImageView = (configFile.theme.ImageView && configFile.theme.ImageView.apply)
402
- ? _.merge({ apply: configFile.theme.ImageView.apply }, { ios: { hires: true } }, configFile.theme.ImageView)
403
- : _.merge({ ios: { hires: true } }, configFile.theme.ImageView)
410
+ // Merge user config WITH defaults, then write back to configFile.theme
411
+ // so that getTiUIComponents/combineKeys picks up the full merged object
412
+ configFile.theme.Window = _.merge({ default: { backgroundColor: '#FFFFFF' } }, configFile.theme.Window)
413
+ configFile.theme.ImageView = _.merge({ ios: { hires: true } }, configFile.theme.ImageView)
414
+ configFile.theme.View = _.merge({ default: { width: 'Ti.UI.SIZE', height: 'Ti.UI.SIZE' } }, configFile.theme.View)
404
415
 
405
- base.View = (configFile.theme.View && configFile.theme.View.apply)
406
- ? _.merge({ apply: configFile.theme.View.apply }, configFile.theme.View)
407
- : _.merge({ default: { width: 'Ti.UI.SIZE', height: 'Ti.UI.SIZE' } }, configFile.theme.View)
416
+ base.Window = configFile.theme.Window
417
+ base.ImageView = configFile.theme.ImageView
418
+ base.View = configFile.theme.View
408
419
 
409
420
  // !Delete plugins specified in the config file
410
421
  const deletePlugins = checkDeletePlugins()
@@ -631,7 +642,7 @@ function generateCombinedClasses(key, data) {
631
642
  })
632
643
  } else {
633
644
  _.each(data.values, (_value, _key) => {
634
- if (!_value.includes('deprecated')) myClasses += formatClass(key, _value)
645
+ if (!_value.includes('deprecated')) myClasses += formatClass(key, _value, data.type === 'Array')
635
646
  })
636
647
  }
637
648
 
@@ -647,8 +658,12 @@ function saveAutoTSS(key, classes) {
647
658
  }
648
659
  }
649
660
 
650
- function formatClass(key, value) {
651
- return `'.${formatClassName(key, value)}': { ${key}: ${value} }\n`
661
+ // inputType is marked as Array in completions but accepts a single value
662
+ const nonArrayOverrides = new Set(['inputType'])
663
+
664
+ function formatClass(key, value, isArray = false) {
665
+ const formattedValue = (isArray && !nonArrayOverrides.has(key)) ? `[ ${value} ]` : value
666
+ return `'.${formatClassName(key, value)}': { ${key}: ${formattedValue} }\n`
652
667
  }
653
668
 
654
669
  function formatClassName(property, value) {
@@ -1,4 +1,4 @@
1
1
  /**
2
- * Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com
2
+ * Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com
3
3
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4
4
  */
@@ -1,4 +1,4 @@
1
- // Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com
1
+ // Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com
2
2
  // License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
3
3
 
4
4
  // Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons