glib-web 0.5.58 → 0.5.63
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.
- checksums.yaml +4 -4
- data/app/channels/glib/channel/online_channel.rb +29 -0
- data/app/helpers/glib/json_ui/view_builder.rb +22 -0
- data/app/helpers/glib/json_ui/view_builder/fields.rb +5 -0
- data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +6 -0
- data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +29 -4
- data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +12 -0
- data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +33 -28
- data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +31 -15
- data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -0
- data/app/views/json_ui/garage/views/icons.json.jbuilder +6 -1442
- data/app/views/json_ui/garage/views/index.json.jbuilder +15 -5
- metadata +3 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: dacfeeb7446f91959b4e0ac4ac86bb5e8fbc80e5bce79794bfbcf98ee37398a2
         | 
| 4 | 
            +
              data.tar.gz: 95e67ccbd12f6cea3799fbd2a378f29c6b0059e03daf813ad832c5c28605ca9a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 427e9cb5d7385eb33e3e93e71717fcd9c5318671d0f9957ca8fb0a5766beb55e1bd61e2b28516a40c2d89a04c621f08b262795594e530741d67d31d57ef921e2
         | 
| 7 | 
            +
              data.tar.gz: f42ef59f998e58b5b2bf1a8ae8dc565261b3999d4e82d33567ba0b716f4859abcf9d3ee18916f69808a8a47c58ae7fe7273577cb7767b28348e5330142dbe8bc
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            module Glib
         | 
| 2 | 
            +
              module Channel
         | 
| 3 | 
            +
                class OnlineChannel < ApplicationCable::Channel
         | 
| 4 | 
            +
                  class << self
         | 
| 5 | 
            +
                    attr_accessor :channel_name
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def channel_name
         | 
| 9 | 
            +
                    self.class.channel_name
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def subscribed
         | 
| 13 | 
            +
                    stream_from "#{self.class.channel_name}_#{params['conversation_id']}"
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def online_status(data)
         | 
| 17 | 
            +
                    ActionCable.server.broadcast \
         | 
| 18 | 
            +
                      "#{self.class.channel_name}_#{params['conversation_id']}",
         | 
| 19 | 
            +
                      action: {
         | 
| 20 | 
            +
                        action: 'component/set',
         | 
| 21 | 
            +
                        name: User.find(data['user_id']).full_name,
         | 
| 22 | 
            +
                        status: data['status'],
         | 
| 23 | 
            +
                        user_id: data['user_id'],
         | 
| 24 | 
            +
                        event: 'online_status'
         | 
| 25 | 
            +
                      }
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
| @@ -123,13 +123,35 @@ module Glib | |
| 123 123 | 
             
                  end
         | 
| 124 124 |  | 
| 125 125 | 
             
                  class Avatar < View
         | 
| 126 | 
            +
                    int    :size
         | 
| 126 127 | 
             
                    string :url
         | 
| 127 128 | 
             
                    action :onClick
         | 
| 128 129 | 
             
                  end
         | 
| 129 130 |  | 
| 130 131 | 
             
                  class Icon < View
         | 
| 132 | 
            +
                    # TODO: Remove later. Deprecated.
         | 
| 131 133 | 
             
                    icon :spec
         | 
| 134 | 
            +
             | 
| 132 135 | 
             
                    action :onClick
         | 
| 136 | 
            +
                    color :color
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                    def name(value)
         | 
| 139 | 
            +
                      @name = value
         | 
| 140 | 
            +
                    end
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                    def size(value)
         | 
| 143 | 
            +
                      @size = value
         | 
| 144 | 
            +
                    end
         | 
| 145 | 
            +
             | 
| 146 | 
            +
                    # Override
         | 
| 147 | 
            +
                    def created
         | 
| 148 | 
            +
                      if @name
         | 
| 149 | 
            +
                        json.material do
         | 
| 150 | 
            +
                          json.name @name
         | 
| 151 | 
            +
                          json.size @size if @size
         | 
| 152 | 
            +
                        end
         | 
| 153 | 
            +
                      end
         | 
| 154 | 
            +
                    end
         | 
| 133 155 | 
             
                  end
         | 
| 134 156 |  | 
| 135 157 | 
             
                  # class Banner < View
         | 
| @@ -9,6 +9,12 @@ section.rows builder: ->(template) do | |
| 9 9 | 
             
                  subaction.snackbars_alert message: 'Timeout elapsed'
         | 
| 10 10 | 
             
                end
         | 
| 11 11 | 
             
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              template.thumbnail title: 'timeouts/set with repeat', onClick: ->(action) do
         | 
| 14 | 
            +
                action.timeouts_set interval: 1000, repeat: true, onTimeout: ->(subaction) do
         | 
| 15 | 
            +
                  subaction.snackbars_alert message: 'Timeout elapsed every 1 second'
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
              end
         | 
| 12 18 | 
             
            end
         | 
| 13 19 |  | 
| 14 20 | 
             
            # section.rows builder: ->(template) do
         | 
| @@ -5,7 +5,7 @@ render "#{@path_prefix}/nav_menu", json: json, page: page | |
| 5 5 |  | 
| 6 6 | 
             
            page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
         | 
| 7 7 | 
             
              form.h1 text: 'Text'
         | 
| 8 | 
            -
              form.fields_password name: 'user[text1]', width: 'matchParent', label: 'Type "show"'
         | 
| 8 | 
            +
              form.fields_password name: 'user[text1]', width: 'matchParent', label: 'Type "show"', value: ''
         | 
| 9 9 | 
             
              form.label text: 'Typed', showIf: {
         | 
| 10 10 | 
             
                "==": [
         | 
| 11 11 | 
             
                  {
         | 
| @@ -14,6 +14,14 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p | |
| 14 14 | 
             
                  'show'
         | 
| 15 15 | 
             
                ]
         | 
| 16 16 | 
             
              }
         | 
| 17 | 
            +
              form.label text: 'Type something', showIf: {
         | 
| 18 | 
            +
                "==": [
         | 
| 19 | 
            +
                  {
         | 
| 20 | 
            +
                    "var": 'user[text1]'
         | 
| 21 | 
            +
                  },
         | 
| 22 | 
            +
                  ''
         | 
| 23 | 
            +
                ]
         | 
| 24 | 
            +
              }
         | 
| 17 25 |  | 
| 18 26 | 
             
              form.spacer height: 20
         | 
| 19 27 | 
             
              form.h1 text: 'Textarea'
         | 
| @@ -45,6 +53,7 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p | |
| 45 53 | 
             
              form.fields_radioGroup name: 'user[radio1]', value: 'F', childViews: ->(group) do
         | 
| 46 54 | 
             
                group.fields_radio value: 'show', label: 'Show'
         | 
| 47 55 | 
             
                group.fields_radio value: 'hide', label: 'Hide'
         | 
| 56 | 
            +
                group.fields_radio value: '', label: 'Empty'
         | 
| 48 57 | 
             
              end
         | 
| 49 58 | 
             
              form.spacer height: 10
         | 
| 50 59 | 
             
              form.label text: 'Chosen', showIf: {
         | 
| @@ -55,11 +64,19 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p | |
| 55 64 | 
             
                  'show'
         | 
| 56 65 | 
             
                ]
         | 
| 57 66 | 
             
              }
         | 
| 67 | 
            +
              form.label text: 'Unspecified', showIf: {
         | 
| 68 | 
            +
                "==": [
         | 
| 69 | 
            +
                  {
         | 
| 70 | 
            +
                    "var": 'user[radio1]'
         | 
| 71 | 
            +
                  },
         | 
| 72 | 
            +
                  ''
         | 
| 73 | 
            +
                ]
         | 
| 74 | 
            +
              }
         | 
| 58 75 |  | 
| 59 76 | 
             
              form.spacer height: 20
         | 
| 60 77 | 
             
              form.h1 text: 'Select'
         | 
| 61 | 
            -
              options = ['show', 'hide']
         | 
| 62 | 
            -
              form.fields_select name: 'user[select1]', width: 'matchParent', label: 'Select "show"', options: options
         | 
| 78 | 
            +
              options = ['', 'show', 'hide']
         | 
| 79 | 
            +
              form.fields_select name: 'user[select1]', width: 'matchParent', label: 'Select "show"', options: options, value: ''
         | 
| 63 80 | 
             
              form.label text: 'Selected', showIf: {
         | 
| 64 81 | 
             
                "==": [
         | 
| 65 82 | 
             
                  {
         | 
| @@ -68,6 +85,14 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p | |
| 68 85 | 
             
                  'show'
         | 
| 69 86 | 
             
                ]
         | 
| 70 87 | 
             
              }
         | 
| 88 | 
            +
              form.label text: 'Unspecified', showIf: {
         | 
| 89 | 
            +
                "==": [
         | 
| 90 | 
            +
                  {
         | 
| 91 | 
            +
                    "var": 'user[select1]'
         | 
| 92 | 
            +
                  },
         | 
| 93 | 
            +
                  ''
         | 
| 94 | 
            +
                ]
         | 
| 95 | 
            +
              }
         | 
| 71 96 |  | 
| 72 97 | 
             
              form.spacer height: 20
         | 
| 73 98 | 
             
              form.h1 text: 'Combined conditions'
         | 
| @@ -90,7 +115,7 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p | |
| 90 115 | 
             
              form.spacer height: 10
         | 
| 91 116 | 
             
              form.fields_check name: 'user[check2]', checkValue: 'on', label: 'Show field'
         | 
| 92 117 | 
             
              form.spacer height: 10
         | 
| 93 | 
            -
              form.fields_text width: 'matchParent', label: 'Comment (optional)', name: 'user[comment]', value: 'This field  | 
| 118 | 
            +
              form.fields_text width: 'matchParent', label: 'Comment (optional)', name: 'user[comment]', value: 'This field should be submitted even when it is hidden', showIf: {
         | 
| 94 119 | 
             
                "==": [
         | 
| 95 120 | 
             
                  {
         | 
| 96 121 | 
             
                    "var": 'user[check2]'
         | 
| @@ -26,6 +26,18 @@ page.form \ | |
| 26 26 | 
             
                  leftText: 'USD',
         | 
| 27 27 | 
             
                  rightText: '.00'
         | 
| 28 28 |  | 
| 29 | 
            +
                form.fields_phone \
         | 
| 30 | 
            +
                  name: 'user[phone1]',
         | 
| 31 | 
            +
                  width: 'matchParent',
         | 
| 32 | 
            +
                  label: 'Phone field'
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                form.fields_phone \
         | 
| 35 | 
            +
                  name: 'user[phone2]',
         | 
| 36 | 
            +
                  width: 'matchParent',
         | 
| 37 | 
            +
                  label: "Phone field with Australia as the default country",
         | 
| 38 | 
            +
                  disableAutoDetect: true, # Disable country auto detect by user IP
         | 
| 39 | 
            +
                  defaultCountry: 'AU' # ISO Country code, see: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
         | 
| 40 | 
            +
             | 
| 29 41 | 
             
                form.fields_password \
         | 
| 30 42 | 
             
                  name: 'user[password]',
         | 
| 31 43 | 
             
                  width: 'matchParent',
         | 
| @@ -1,11 +1,15 @@ | |
| 1 1 | 
             
            json.title 'Lists'
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 3 | 
            +
            page_index = params[:page].to_i
         | 
| 4 | 
            +
            page = json_ui_page json
         | 
| 5 | 
            +
            render "#{@path_prefix}/nav_menu", json: json, page: page
         | 
| 5 6 |  | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 7 | 
            +
            page.list firstSection: ->(section) do
         | 
| 8 | 
            +
              section.rows builder: ->(template) do
         | 
| 9 | 
            +
                template.thumbnail \
         | 
| 10 | 
            +
                  title: 'Click menu (web) or swipe left (Android/iOS)',
         | 
| 11 | 
            +
                  subtitle: "Page index: #{page_index}",
         | 
| 12 | 
            +
                  leftButtons: ->(menu) do
         | 
| 9 13 | 
             
                    menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
         | 
| 10 14 | 
             
                      subaction.dialogs_alert message: 'Tick/untick'
         | 
| 11 15 | 
             
                    end
         | 
| @@ -17,38 +21,39 @@ json_ui_page json do |page| | |
| 17 21 | 
             
                      subaction.dialogs_alert message: 'Open'
         | 
| 18 22 | 
             
                    end
         | 
| 19 23 | 
             
                  end, editButtons: ->(menu) do
         | 
| 20 | 
            -
                    menu.button text:  | 
| 21 | 
            -
                      action.dialogs_alert message: 'Perform action'
         | 
| 24 | 
            +
                    menu.button text: "Edit (ID: #{page_index})", onClick: ->(action) do
         | 
| 25 | 
            +
                      action.dialogs_alert message: 'Perform Edit action'
         | 
| 22 26 | 
             
                    end
         | 
| 23 27 | 
             
                    menu.button text: 'Delete', onClick: ->(action) do
         | 
| 24 | 
            -
                      action.dialogs_alert message: 'Perform action'
         | 
| 28 | 
            +
                      action.dialogs_alert message: 'Perform Delete action'
         | 
| 25 29 | 
             
                    end
         | 
| 30 | 
            +
                  end, onClick: ->(action) do
         | 
| 31 | 
            +
                    action.windows_open url: json_ui_garage_url(path: 'lists/edit_actions', page: page_index + 1)
         | 
| 26 32 | 
             
                  end
         | 
| 27 33 |  | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 34 | 
            +
                template.thumbnail title: 'Long press to get an alert', onLongPress: ->(action) do
         | 
| 35 | 
            +
                  action.dialogs_alert message: 'This is an alert'
         | 
| 36 | 
            +
                end
         | 
| 31 37 |  | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
                      end
         | 
| 38 | 
            +
                template.thumbnail title: 'Long press to see menu', onLongPress: ->(action) do
         | 
| 39 | 
            +
                  action.sheets_select message: 'Context Menu', buttons: ->(menu) do
         | 
| 40 | 
            +
                    menu.button icon: 'edit', text: 'Edit', onClick: ->(subaction) do
         | 
| 41 | 
            +
                      subaction.dialogs_alert message: 'Perform action'
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                    menu.button icon: 'delete', text: 'Delete', onClick: ->(subaction) do
         | 
| 44 | 
            +
                      subaction.dialogs_alert message: 'Perform action'
         | 
| 40 45 | 
             
                    end
         | 
| 41 46 | 
             
                  end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                  # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
         | 
| 44 | 
            -
                  #   menu.button text: 'Edit', onClick: ->(action) do
         | 
| 45 | 
            -
                  #     action.dialogs_alert message: 'Perform action'
         | 
| 46 | 
            -
                  #   end
         | 
| 47 | 
            -
                  #   menu.button text: 'Delete', onClick: ->(action) do
         | 
| 48 | 
            -
                  #     action.dialogs_alert message: 'Perform action'
         | 
| 49 | 
            -
                  #   end
         | 
| 50 | 
            -
                  # end
         | 
| 51 47 | 
             
                end
         | 
| 52 48 |  | 
| 49 | 
            +
                # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
         | 
| 50 | 
            +
                #   menu.button text: 'Edit', onClick: ->(action) do
         | 
| 51 | 
            +
                #     action.dialogs_alert message: 'Perform action'
         | 
| 52 | 
            +
                #   end
         | 
| 53 | 
            +
                #   menu.button text: 'Delete', onClick: ->(action) do
         | 
| 54 | 
            +
                #     action.dialogs_alert message: 'Perform action'
         | 
| 55 | 
            +
                #   end
         | 
| 56 | 
            +
                # end
         | 
| 53 57 | 
             
              end
         | 
| 58 | 
            +
             | 
| 54 59 | 
             
            end
         | 
| @@ -1,6 +1,10 @@ | |
| 1 1 | 
             
            json.title 'ActionCable Real-time Update'
         | 
| 2 2 | 
             
            page = json_ui_page json
         | 
| 3 3 |  | 
| 4 | 
            +
            online_channel = 'OnlineChannel'
         | 
| 5 | 
            +
            typing_channel = 'IsTypingChannel'
         | 
| 6 | 
            +
            first_user = User.first
         | 
| 7 | 
            +
            second_user = User.offset(1).first
         | 
| 4 8 | 
             
            # Implement a page that shows how ActionCable works in json_ui
         | 
| 5 9 |  | 
| 6 10 | 
             
            # 1. Example for list
         | 
| @@ -21,13 +25,19 @@ page = json_ui_page json | |
| 21 25 |  | 
| 22 26 |  | 
| 23 27 | 
             
            # 3. Example for online status
         | 
| 24 | 
            -
             | 
| 25 | 
            -
            #  | 
| 26 | 
            -
            # | 
| 27 | 
            -
            # | 
| 28 | 
            -
            #   end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            # put on app/channels/online_channel.rb
         | 
| 30 | 
            +
            # class OnlineChannel < Glib::Channel::OnlineChannel
         | 
| 31 | 
            +
            #   self.channel_name = 'OnlineChannel'
         | 
| 29 32 | 
             
            # end
         | 
| 30 33 |  | 
| 34 | 
            +
            page.on load: ->(action) do
         | 
| 35 | 
            +
              action.timeouts_set interval: 1000, repeat: true, onTimeout: ->(subaction) do
         | 
| 36 | 
            +
                subaction.cables_push channel: online_channel, event: 'online_status', payload: { status: true, user_id: first_user.id }
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
            end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            # 4. Example for typing status
         | 
| 31 41 |  | 
| 32 42 | 
             
            # put on app/channels/is_typing_channel.rb
         | 
| 33 43 | 
             
            # class IsTypingChannel < Glib::Channel::IsTypingChannel
         | 
| @@ -36,30 +46,35 @@ page = json_ui_page json | |
| 36 46 |  | 
| 37 47 | 
             
            page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
         | 
| 38 48 |  | 
| 39 | 
            -
              channel = 'IsTypingChannel'
         | 
| 40 | 
            -
              first_user = User.first
         | 
| 41 | 
            -
              second_user = User.offset(1).first
         | 
| 42 | 
            -
             | 
| 43 49 | 
             
              scroll.panels_split width: 'matchParent', content: ->(content) do
         | 
| 44 50 | 
             
                content.left childViews: ->(left) do
         | 
| 51 | 
            +
                  online_socket_config = {
         | 
| 52 | 
            +
                    channel: online_channel,
         | 
| 53 | 
            +
                    filterKey: second_user.id,
         | 
| 54 | 
            +
                    params: {
         | 
| 55 | 
            +
                      conversation: 2
         | 
| 56 | 
            +
                    }
         | 
| 57 | 
            +
                  }
         | 
| 58 | 
            +
                  left.label actionCable: online_socket_config, text: ' '
         | 
| 59 | 
            +
             | 
| 45 60 | 
             
                  left.fields_textarea \
         | 
| 46 61 | 
             
                    width: 440,
         | 
| 47 62 | 
             
                    label: "Messages from #{first_user.full_name}",
         | 
| 48 63 | 
             
                    onTypeStart: lambda { |action|
         | 
| 49 64 | 
             
                      action.cables_push \
         | 
| 50 | 
            -
                        channel:  | 
| 65 | 
            +
                        channel: typing_channel, event: 'typing',
         | 
| 51 66 | 
             
                        payload: { status: true, user_id: first_user.id }
         | 
| 52 67 | 
             
                    },
         | 
| 53 68 | 
             
                    onTypeEnd: lambda { |action|
         | 
| 54 69 | 
             
                      action.cables_push \
         | 
| 55 | 
            -
                        channel:  | 
| 70 | 
            +
                        channel: typing_channel,
         | 
| 56 71 | 
             
                        event: 'typing',
         | 
| 57 72 | 
             
                        payload: { status: false, user_id: first_user.id }
         | 
| 58 73 | 
             
                    }
         | 
| 59 74 | 
             
                  left.spacer height: 10
         | 
| 60 75 |  | 
| 61 76 | 
             
                  socket_config = {
         | 
| 62 | 
            -
                    channel:  | 
| 77 | 
            +
                    channel: typing_channel,
         | 
| 63 78 | 
             
                    filterKey: first_user.id,
         | 
| 64 79 | 
             
                    params: {
         | 
| 65 80 | 
             
                      conversation: 2
         | 
| @@ -67,25 +82,26 @@ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do | |
| 67 82 | 
             
                  }
         | 
| 68 83 | 
             
                  left.label actionCable: socket_config, text: ' '
         | 
| 69 84 | 
             
                end
         | 
| 85 | 
            +
             | 
| 70 86 | 
             
                content.right childViews: ->(right) do
         | 
| 71 87 | 
             
                  right.fields_textarea \
         | 
| 72 88 | 
             
                    width: 440,
         | 
| 73 89 | 
             
                    label: "Messages from #{second_user.full_name}",
         | 
| 74 90 | 
             
                    onTypeStart: lambda { |action|
         | 
| 75 91 | 
             
                      action.cables_push \
         | 
| 76 | 
            -
                        channel:  | 
| 92 | 
            +
                        channel: typing_channel, event: 'typing',
         | 
| 77 93 | 
             
                        payload: { status: true, user_id: second_user.id }
         | 
| 78 94 | 
             
                    },
         | 
| 79 95 | 
             
                    onTypeEnd: lambda { |action|
         | 
| 80 96 | 
             
                      action.cables_push \
         | 
| 81 | 
            -
                        channel:  | 
| 97 | 
            +
                        channel: typing_channel,
         | 
| 82 98 | 
             
                        event: 'typing',
         | 
| 83 99 | 
             
                        payload: { status: false, user_id: second_user.id }
         | 
| 84 100 | 
             
                    }
         | 
| 85 101 | 
             
                  right.spacer height: 10
         | 
| 86 102 |  | 
| 87 103 | 
             
                  socket_config = {
         | 
| 88 | 
            -
                    channel:  | 
| 104 | 
            +
                    channel: typing_channel,
         | 
| 89 105 | 
             
                    filterKey: second_user.id,
         | 
| 90 106 | 
             
                    params: {
         | 
| 91 107 | 
             
                      conversation: 2
         | 
| @@ -0,0 +1,1450 @@ | |
| 1 | 
            +
            json.title 'Views'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            page = json_ui_page json
         | 
| 4 | 
            +
            render "#{@path_prefix}/nav_menu", json: json, page: page
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
         | 
| 7 | 
            +
              # From https://material.io/resources/icons
         | 
| 8 | 
            +
              #
         | 
| 9 | 
            +
              # To scrape, run this on JS console:
         | 
| 10 | 
            +
              #
         | 
| 11 | 
            +
              # function download(content, fileName, contentType) {
         | 
| 12 | 
            +
              #   var a = document.createElement("a");
         | 
| 13 | 
            +
              #   var file = new Blob([JSON.stringify(content)], { type: contentType });
         | 
| 14 | 
            +
              #   a.href = URL.createObjectURL(file);
         | 
| 15 | 
            +
              #   a.download = fileName;
         | 
| 16 | 
            +
              #   a.click();
         | 
| 17 | 
            +
              # }
         | 
| 18 | 
            +
              #
         | 
| 19 | 
            +
              # let sections = [];
         | 
| 20 | 
            +
              # let containersNode = document.querySelectorAll(".category-container");
         | 
| 21 | 
            +
              # for (const containerNode of containersNode) {
         | 
| 22 | 
            +
              #   let titleNode = containerNode.querySelector(".category-name");
         | 
| 23 | 
            +
              #   let iconsNode = Array.from(
         | 
| 24 | 
            +
              #     containerNode.querySelectorAll(".icon-image-preview")
         | 
| 25 | 
            +
              #   );
         | 
| 26 | 
            +
              #   let section = {
         | 
| 27 | 
            +
              #     title: titleNode.textContent,
         | 
| 28 | 
            +
              #     icons: iconsNode.map(function(iconNode) {
         | 
| 29 | 
            +
              #       return iconNode.textContent;
         | 
| 30 | 
            +
              #     })
         | 
| 31 | 
            +
              #   };
         | 
| 32 | 
            +
              #   sections.push(section);
         | 
| 33 | 
            +
              # }
         | 
| 34 | 
            +
              # download(sections, "json.txt", "text/plain");
         | 
| 35 | 
            +
              #
         | 
| 36 | 
            +
              categories = [
         | 
| 37 | 
            +
                {
         | 
| 38 | 
            +
                  "title": "action",
         | 
| 39 | 
            +
                  "icons": [
         | 
| 40 | 
            +
                    "3d_rotation",
         | 
| 41 | 
            +
                    "accessibility",
         | 
| 42 | 
            +
                    "accessibility_new",
         | 
| 43 | 
            +
                    "accessible",
         | 
| 44 | 
            +
                    "accessible_forward",
         | 
| 45 | 
            +
                    "account_balance",
         | 
| 46 | 
            +
                    "account_balance_wallet",
         | 
| 47 | 
            +
                    "account_box",
         | 
| 48 | 
            +
                    "account_circle",
         | 
| 49 | 
            +
                    "add_shopping_cart",
         | 
| 50 | 
            +
                    "add_task",
         | 
| 51 | 
            +
                    "addchart",
         | 
| 52 | 
            +
                    "admin_panel_settings",
         | 
| 53 | 
            +
                    "alarm",
         | 
| 54 | 
            +
                    "alarm_add",
         | 
| 55 | 
            +
                    "alarm_off",
         | 
| 56 | 
            +
                    "alarm_on",
         | 
| 57 | 
            +
                    "all_inbox",
         | 
| 58 | 
            +
                    "all_out",
         | 
| 59 | 
            +
                    "analytics",
         | 
| 60 | 
            +
                    "anchor",
         | 
| 61 | 
            +
                    "android",
         | 
| 62 | 
            +
                    "announcement",
         | 
| 63 | 
            +
                    "api",
         | 
| 64 | 
            +
                    "app_blocking",
         | 
| 65 | 
            +
                    "arrow_circle_down",
         | 
| 66 | 
            +
                    "arrow_circle_up",
         | 
| 67 | 
            +
                    "arrow_right_alt",
         | 
| 68 | 
            +
                    "article",
         | 
| 69 | 
            +
                    "aspect_ratio",
         | 
| 70 | 
            +
                    "assessment",
         | 
| 71 | 
            +
                    "assignment",
         | 
| 72 | 
            +
                    "assignment_ind",
         | 
| 73 | 
            +
                    "assignment_late",
         | 
| 74 | 
            +
                    "assignment_return",
         | 
| 75 | 
            +
                    "assignment_returned",
         | 
| 76 | 
            +
                    "assignment_turned_in",
         | 
| 77 | 
            +
                    "autorenew",
         | 
| 78 | 
            +
                    "backup",
         | 
| 79 | 
            +
                    "backup_table",
         | 
| 80 | 
            +
                    "batch_prediction",
         | 
| 81 | 
            +
                    "book",
         | 
| 82 | 
            +
                    "book_online",
         | 
| 83 | 
            +
                    "bookmark",
         | 
| 84 | 
            +
                    "bookmark_border",
         | 
| 85 | 
            +
                    "bookmarks",
         | 
| 86 | 
            +
                    "bug_report",
         | 
| 87 | 
            +
                    "build",
         | 
| 88 | 
            +
                    "build_circle",
         | 
| 89 | 
            +
                    "cached",
         | 
| 90 | 
            +
                    "calendar_today",
         | 
| 91 | 
            +
                    "calendar_view_day",
         | 
| 92 | 
            +
                    "camera_enhance",
         | 
| 93 | 
            +
                    "cancel_schedule_send",
         | 
| 94 | 
            +
                    "card_giftcard",
         | 
| 95 | 
            +
                    "card_membership",
         | 
| 96 | 
            +
                    "card_travel",
         | 
| 97 | 
            +
                    "change_history",
         | 
| 98 | 
            +
                    "check_circle",
         | 
| 99 | 
            +
                    "check_circle_outline",
         | 
| 100 | 
            +
                    "chrome_reader_mode",
         | 
| 101 | 
            +
                    "class",
         | 
| 102 | 
            +
                    "close_fullscreen",
         | 
| 103 | 
            +
                    "code",
         | 
| 104 | 
            +
                    "comment_bank",
         | 
| 105 | 
            +
                    "commute",
         | 
| 106 | 
            +
                    "compare_arrows",
         | 
| 107 | 
            +
                    "contact_page",
         | 
| 108 | 
            +
                    "contact_support",
         | 
| 109 | 
            +
                    "contactless",
         | 
| 110 | 
            +
                    "copyright",
         | 
| 111 | 
            +
                    "credit_card",
         | 
| 112 | 
            +
                    "dashboard",
         | 
| 113 | 
            +
                    "date_range",
         | 
| 114 | 
            +
                    "delete",
         | 
| 115 | 
            +
                    "delete_forever",
         | 
| 116 | 
            +
                    "delete_outline",
         | 
| 117 | 
            +
                    "description",
         | 
| 118 | 
            +
                    "disabled_by_default",
         | 
| 119 | 
            +
                    "dns",
         | 
| 120 | 
            +
                    "done",
         | 
| 121 | 
            +
                    "done_all",
         | 
| 122 | 
            +
                    "done_outline",
         | 
| 123 | 
            +
                    "donut_large",
         | 
| 124 | 
            +
                    "donut_small",
         | 
| 125 | 
            +
                    "drag_indicator",
         | 
| 126 | 
            +
                    "dynamic_form",
         | 
| 127 | 
            +
                    "eco",
         | 
| 128 | 
            +
                    "eject",
         | 
| 129 | 
            +
                    "euro_symbol",
         | 
| 130 | 
            +
                    "event",
         | 
| 131 | 
            +
                    "event_seat",
         | 
| 132 | 
            +
                    "exit_to_app",
         | 
| 133 | 
            +
                    "explore",
         | 
| 134 | 
            +
                    "explore_off",
         | 
| 135 | 
            +
                    "extension",
         | 
| 136 | 
            +
                    "face",
         | 
| 137 | 
            +
                    "fact_check",
         | 
| 138 | 
            +
                    "favorite",
         | 
| 139 | 
            +
                    "favorite_border",
         | 
| 140 | 
            +
                    "feedback",
         | 
| 141 | 
            +
                    "filter_alt",
         | 
| 142 | 
            +
                    "find_in_page",
         | 
| 143 | 
            +
                    "find_replace",
         | 
| 144 | 
            +
                    "fingerprint",
         | 
| 145 | 
            +
                    "flaky",
         | 
| 146 | 
            +
                    "flight_land",
         | 
| 147 | 
            +
                    "flight_takeoff",
         | 
| 148 | 
            +
                    "flip_to_back",
         | 
| 149 | 
            +
                    "flip_to_front",
         | 
| 150 | 
            +
                    "g_translate",
         | 
| 151 | 
            +
                    "gavel",
         | 
| 152 | 
            +
                    "get_app",
         | 
| 153 | 
            +
                    "gif",
         | 
| 154 | 
            +
                    "grade",
         | 
| 155 | 
            +
                    "grading",
         | 
| 156 | 
            +
                    "group_work",
         | 
| 157 | 
            +
                    "help",
         | 
| 158 | 
            +
                    "help_center",
         | 
| 159 | 
            +
                    "help_outline",
         | 
| 160 | 
            +
                    "highlight_alt",
         | 
| 161 | 
            +
                    "highlight_off",
         | 
| 162 | 
            +
                    "history",
         | 
| 163 | 
            +
                    "history_toggle_off",
         | 
| 164 | 
            +
                    "home",
         | 
| 165 | 
            +
                    "horizontal_split",
         | 
| 166 | 
            +
                    "hourglass_disabled",
         | 
| 167 | 
            +
                    "hourglass_empty",
         | 
| 168 | 
            +
                    "hourglass_full",
         | 
| 169 | 
            +
                    "http",
         | 
| 170 | 
            +
                    "https",
         | 
| 171 | 
            +
                    "important_devices",
         | 
| 172 | 
            +
                    "info",
         | 
| 173 | 
            +
                    "input",
         | 
| 174 | 
            +
                    "integration_instructions",
         | 
| 175 | 
            +
                    "invert_colors",
         | 
| 176 | 
            +
                    "label",
         | 
| 177 | 
            +
                    "label_important",
         | 
| 178 | 
            +
                    "label_off",
         | 
| 179 | 
            +
                    "language",
         | 
| 180 | 
            +
                    "launch",
         | 
| 181 | 
            +
                    "leaderboard",
         | 
| 182 | 
            +
                    "line_style",
         | 
| 183 | 
            +
                    "line_weight",
         | 
| 184 | 
            +
                    "list",
         | 
| 185 | 
            +
                    "lock",
         | 
| 186 | 
            +
                    "lock_open",
         | 
| 187 | 
            +
                    "login",
         | 
| 188 | 
            +
                    "loyalty",
         | 
| 189 | 
            +
                    "markunread_mailbox",
         | 
| 190 | 
            +
                    "maximize",
         | 
| 191 | 
            +
                    "mediation",
         | 
| 192 | 
            +
                    "minimize",
         | 
| 193 | 
            +
                    "model_training",
         | 
| 194 | 
            +
                    "next_plan",
         | 
| 195 | 
            +
                    "not_accessible",
         | 
| 196 | 
            +
                    "not_started",
         | 
| 197 | 
            +
                    "note_add",
         | 
| 198 | 
            +
                    "offline_bolt",
         | 
| 199 | 
            +
                    "offline_pin",
         | 
| 200 | 
            +
                    "online_prediction",
         | 
| 201 | 
            +
                    "opacity",
         | 
| 202 | 
            +
                    "open_in_browser",
         | 
| 203 | 
            +
                    "open_in_full",
         | 
| 204 | 
            +
                    "open_in_new",
         | 
| 205 | 
            +
                    "open_with",
         | 
| 206 | 
            +
                    "outbond",
         | 
| 207 | 
            +
                    "outlet",
         | 
| 208 | 
            +
                    "pageview",
         | 
| 209 | 
            +
                    "pan_tool",
         | 
| 210 | 
            +
                    "payment",
         | 
| 211 | 
            +
                    "pending",
         | 
| 212 | 
            +
                    "pending_actions",
         | 
| 213 | 
            +
                    "perm_camera_mic",
         | 
| 214 | 
            +
                    "perm_contact_calendar",
         | 
| 215 | 
            +
                    "perm_data_setting",
         | 
| 216 | 
            +
                    "perm_device_information",
         | 
| 217 | 
            +
                    "perm_identity",
         | 
| 218 | 
            +
                    "perm_media",
         | 
| 219 | 
            +
                    "perm_phone_msg",
         | 
| 220 | 
            +
                    "perm_scan_wifi",
         | 
| 221 | 
            +
                    "pets",
         | 
| 222 | 
            +
                    "picture_in_picture",
         | 
| 223 | 
            +
                    "picture_in_picture_alt",
         | 
| 224 | 
            +
                    "plagiarism",
         | 
| 225 | 
            +
                    "play_for_work",
         | 
| 226 | 
            +
                    "polymer",
         | 
| 227 | 
            +
                    "power_settings_new",
         | 
| 228 | 
            +
                    "pregnant_woman",
         | 
| 229 | 
            +
                    "preview",
         | 
| 230 | 
            +
                    "print",
         | 
| 231 | 
            +
                    "privacy_tip",
         | 
| 232 | 
            +
                    "published_with_changes",
         | 
| 233 | 
            +
                    "query_builder",
         | 
| 234 | 
            +
                    "question_answer",
         | 
| 235 | 
            +
                    "quickreply",
         | 
| 236 | 
            +
                    "receipt",
         | 
| 237 | 
            +
                    "record_voice_over",
         | 
| 238 | 
            +
                    "redeem",
         | 
| 239 | 
            +
                    "remove_shopping_cart",
         | 
| 240 | 
            +
                    "reorder",
         | 
| 241 | 
            +
                    "report_problem",
         | 
| 242 | 
            +
                    "request_page",
         | 
| 243 | 
            +
                    "restore",
         | 
| 244 | 
            +
                    "restore_from_trash",
         | 
| 245 | 
            +
                    "restore_page",
         | 
| 246 | 
            +
                    "room",
         | 
| 247 | 
            +
                    "rounded_corner",
         | 
| 248 | 
            +
                    "rowing",
         | 
| 249 | 
            +
                    "rule",
         | 
| 250 | 
            +
                    "schedule",
         | 
| 251 | 
            +
                    "search",
         | 
| 252 | 
            +
                    "search_off",
         | 
| 253 | 
            +
                    "settings",
         | 
| 254 | 
            +
                    "settings_applications",
         | 
| 255 | 
            +
                    "settings_backup_restore",
         | 
| 256 | 
            +
                    "settings_bluetooth",
         | 
| 257 | 
            +
                    "settings_brightness",
         | 
| 258 | 
            +
                    "settings_cell",
         | 
| 259 | 
            +
                    "settings_ethernet",
         | 
| 260 | 
            +
                    "settings_input_antenna",
         | 
| 261 | 
            +
                    "settings_input_component",
         | 
| 262 | 
            +
                    "settings_input_composite",
         | 
| 263 | 
            +
                    "settings_input_hdmi",
         | 
| 264 | 
            +
                    "settings_input_svideo",
         | 
| 265 | 
            +
                    "settings_overscan",
         | 
| 266 | 
            +
                    "settings_phone",
         | 
| 267 | 
            +
                    "settings_power",
         | 
| 268 | 
            +
                    "settings_remote",
         | 
| 269 | 
            +
                    "settings_voice",
         | 
| 270 | 
            +
                    "shop",
         | 
| 271 | 
            +
                    "shop_two",
         | 
| 272 | 
            +
                    "shopping_bag",
         | 
| 273 | 
            +
                    "shopping_basket",
         | 
| 274 | 
            +
                    "shopping_cart",
         | 
| 275 | 
            +
                    "smart_button",
         | 
| 276 | 
            +
                    "source",
         | 
| 277 | 
            +
                    "speaker_notes",
         | 
| 278 | 
            +
                    "speaker_notes_off",
         | 
| 279 | 
            +
                    "spellcheck",
         | 
| 280 | 
            +
                    "star_rate",
         | 
| 281 | 
            +
                    "stars",
         | 
| 282 | 
            +
                    "sticky_note_2",
         | 
| 283 | 
            +
                    "store",
         | 
| 284 | 
            +
                    "subject",
         | 
| 285 | 
            +
                    "subtitles_off",
         | 
| 286 | 
            +
                    "supervised_user_circle",
         | 
| 287 | 
            +
                    "supervisor_account",
         | 
| 288 | 
            +
                    "support",
         | 
| 289 | 
            +
                    "swap_horiz",
         | 
| 290 | 
            +
                    "swap_horizontal_circle",
         | 
| 291 | 
            +
                    "swap_vert",
         | 
| 292 | 
            +
                    "swap_vertical_circle",
         | 
| 293 | 
            +
                    "sync_alt",
         | 
| 294 | 
            +
                    "system_update_alt",
         | 
| 295 | 
            +
                    "tab",
         | 
| 296 | 
            +
                    "tab_unselected",
         | 
| 297 | 
            +
                    "table_view",
         | 
| 298 | 
            +
                    "text_rotate_up",
         | 
| 299 | 
            +
                    "text_rotate_vertical",
         | 
| 300 | 
            +
                    "text_rotation_angledown",
         | 
| 301 | 
            +
                    "text_rotation_angleup",
         | 
| 302 | 
            +
                    "text_rotation_down",
         | 
| 303 | 
            +
                    "text_rotation_none",
         | 
| 304 | 
            +
                    "theaters",
         | 
| 305 | 
            +
                    "thumb_down",
         | 
| 306 | 
            +
                    "thumb_up",
         | 
| 307 | 
            +
                    "thumbs_up_down",
         | 
| 308 | 
            +
                    "timeline",
         | 
| 309 | 
            +
                    "toc",
         | 
| 310 | 
            +
                    "today",
         | 
| 311 | 
            +
                    "toll",
         | 
| 312 | 
            +
                    "touch_app",
         | 
| 313 | 
            +
                    "tour",
         | 
| 314 | 
            +
                    "track_changes",
         | 
| 315 | 
            +
                    "translate",
         | 
| 316 | 
            +
                    "trending_down",
         | 
| 317 | 
            +
                    "trending_flat",
         | 
| 318 | 
            +
                    "trending_up",
         | 
| 319 | 
            +
                    "turned_in",
         | 
| 320 | 
            +
                    "turned_in_not",
         | 
| 321 | 
            +
                    "unpublished",
         | 
| 322 | 
            +
                    "update",
         | 
| 323 | 
            +
                    "upgrade",
         | 
| 324 | 
            +
                    "verified",
         | 
| 325 | 
            +
                    "verified_user",
         | 
| 326 | 
            +
                    "vertical_split",
         | 
| 327 | 
            +
                    "view_agenda",
         | 
| 328 | 
            +
                    "view_array",
         | 
| 329 | 
            +
                    "view_carousel",
         | 
| 330 | 
            +
                    "view_column",
         | 
| 331 | 
            +
                    "view_day",
         | 
| 332 | 
            +
                    "view_headline",
         | 
| 333 | 
            +
                    "view_list",
         | 
| 334 | 
            +
                    "view_module",
         | 
| 335 | 
            +
                    "view_quilt",
         | 
| 336 | 
            +
                    "view_sidebar",
         | 
| 337 | 
            +
                    "view_stream",
         | 
| 338 | 
            +
                    "view_week",
         | 
| 339 | 
            +
                    "visibility",
         | 
| 340 | 
            +
                    "visibility_off",
         | 
| 341 | 
            +
                    "voice_over_off",
         | 
| 342 | 
            +
                    "watch_later",
         | 
| 343 | 
            +
                    "wifi_protected_setup",
         | 
| 344 | 
            +
                    "work",
         | 
| 345 | 
            +
                    "work_off",
         | 
| 346 | 
            +
                    "work_outline",
         | 
| 347 | 
            +
                    "wysiwyg",
         | 
| 348 | 
            +
                    "youtube_searched_for",
         | 
| 349 | 
            +
                    "zoom_in",
         | 
| 350 | 
            +
                    "zoom_out"
         | 
| 351 | 
            +
                  ]
         | 
| 352 | 
            +
                },
         | 
| 353 | 
            +
                {
         | 
| 354 | 
            +
                  "title": "alert",
         | 
| 355 | 
            +
                  "icons": [
         | 
| 356 | 
            +
                    "add_alert",
         | 
| 357 | 
            +
                    "auto_delete",
         | 
| 358 | 
            +
                    "error",
         | 
| 359 | 
            +
                    "error_outline",
         | 
| 360 | 
            +
                    "notification_important",
         | 
| 361 | 
            +
                    "warning"
         | 
| 362 | 
            +
                  ]
         | 
| 363 | 
            +
                },
         | 
| 364 | 
            +
                {
         | 
| 365 | 
            +
                  "title": "av",
         | 
| 366 | 
            +
                  "icons": [
         | 
| 367 | 
            +
                    "4k",
         | 
| 368 | 
            +
                    "5g",
         | 
| 369 | 
            +
                    "add_to_queue",
         | 
| 370 | 
            +
                    "airplay",
         | 
| 371 | 
            +
                    "album",
         | 
| 372 | 
            +
                    "art_track",
         | 
| 373 | 
            +
                    "av_timer",
         | 
| 374 | 
            +
                    "branding_watermark",
         | 
| 375 | 
            +
                    "call_to_action",
         | 
| 376 | 
            +
                    "closed_caption",
         | 
| 377 | 
            +
                    "closed_caption_disabled",
         | 
| 378 | 
            +
                    "control_camera",
         | 
| 379 | 
            +
                    "equalizer",
         | 
| 380 | 
            +
                    "explicit",
         | 
| 381 | 
            +
                    "fast_forward",
         | 
| 382 | 
            +
                    "fast_rewind",
         | 
| 383 | 
            +
                    "featured_play_list",
         | 
| 384 | 
            +
                    "featured_video",
         | 
| 385 | 
            +
                    "fiber_dvr",
         | 
| 386 | 
            +
                    "fiber_manual_record",
         | 
| 387 | 
            +
                    "fiber_new",
         | 
| 388 | 
            +
                    "fiber_pin",
         | 
| 389 | 
            +
                    "fiber_smart_record",
         | 
| 390 | 
            +
                    "forward_10",
         | 
| 391 | 
            +
                    "forward_30",
         | 
| 392 | 
            +
                    "forward_5",
         | 
| 393 | 
            +
                    "games",
         | 
| 394 | 
            +
                    "hd",
         | 
| 395 | 
            +
                    "hearing",
         | 
| 396 | 
            +
                    "hearing_disabled",
         | 
| 397 | 
            +
                    "high_quality",
         | 
| 398 | 
            +
                    "library_add",
         | 
| 399 | 
            +
                    "library_add_check",
         | 
| 400 | 
            +
                    "library_books",
         | 
| 401 | 
            +
                    "library_music",
         | 
| 402 | 
            +
                    "loop",
         | 
| 403 | 
            +
                    "mic",
         | 
| 404 | 
            +
                    "mic_none",
         | 
| 405 | 
            +
                    "mic_off",
         | 
| 406 | 
            +
                    "missed_video_call",
         | 
| 407 | 
            +
                    "movie",
         | 
| 408 | 
            +
                    "music_video",
         | 
| 409 | 
            +
                    "new_releases",
         | 
| 410 | 
            +
                    "not_interested",
         | 
| 411 | 
            +
                    "note",
         | 
| 412 | 
            +
                    "pause",
         | 
| 413 | 
            +
                    "pause_circle_filled",
         | 
| 414 | 
            +
                    "pause_circle_outline",
         | 
| 415 | 
            +
                    "play_arrow",
         | 
| 416 | 
            +
                    "play_circle_filled",
         | 
| 417 | 
            +
                    "play_circle_outline",
         | 
| 418 | 
            +
                    "playlist_add",
         | 
| 419 | 
            +
                    "playlist_add_check",
         | 
| 420 | 
            +
                    "playlist_play",
         | 
| 421 | 
            +
                    "queue",
         | 
| 422 | 
            +
                    "queue_music",
         | 
| 423 | 
            +
                    "queue_play_next",
         | 
| 424 | 
            +
                    "radio",
         | 
| 425 | 
            +
                    "recent_actors",
         | 
| 426 | 
            +
                    "remove_from_queue",
         | 
| 427 | 
            +
                    "repeat",
         | 
| 428 | 
            +
                    "repeat_one",
         | 
| 429 | 
            +
                    "replay",
         | 
| 430 | 
            +
                    "replay_10",
         | 
| 431 | 
            +
                    "replay_30",
         | 
| 432 | 
            +
                    "replay_5",
         | 
| 433 | 
            +
                    "shuffle",
         | 
| 434 | 
            +
                    "skip_next",
         | 
| 435 | 
            +
                    "skip_previous",
         | 
| 436 | 
            +
                    "slow_motion_video",
         | 
| 437 | 
            +
                    "snooze",
         | 
| 438 | 
            +
                    "sort_by_alpha",
         | 
| 439 | 
            +
                    "speed",
         | 
| 440 | 
            +
                    "stop",
         | 
| 441 | 
            +
                    "stop_circle",
         | 
| 442 | 
            +
                    "subscriptions",
         | 
| 443 | 
            +
                    "subtitles",
         | 
| 444 | 
            +
                    "surround_sound",
         | 
| 445 | 
            +
                    "video_call",
         | 
| 446 | 
            +
                    "video_label",
         | 
| 447 | 
            +
                    "video_library",
         | 
| 448 | 
            +
                    "video_settings",
         | 
| 449 | 
            +
                    "videocam",
         | 
| 450 | 
            +
                    "videocam_off",
         | 
| 451 | 
            +
                    "volume_down",
         | 
| 452 | 
            +
                    "volume_mute",
         | 
| 453 | 
            +
                    "volume_off",
         | 
| 454 | 
            +
                    "volume_up",
         | 
| 455 | 
            +
                    "web",
         | 
| 456 | 
            +
                    "web_asset"
         | 
| 457 | 
            +
                  ]
         | 
| 458 | 
            +
                },
         | 
| 459 | 
            +
                {
         | 
| 460 | 
            +
                  "title": "communication",
         | 
| 461 | 
            +
                  "icons": [
         | 
| 462 | 
            +
                    "add_ic_call",
         | 
| 463 | 
            +
                    "alternate_email",
         | 
| 464 | 
            +
                    "business",
         | 
| 465 | 
            +
                    "call",
         | 
| 466 | 
            +
                    "call_end",
         | 
| 467 | 
            +
                    "call_made",
         | 
| 468 | 
            +
                    "call_merge",
         | 
| 469 | 
            +
                    "call_missed",
         | 
| 470 | 
            +
                    "call_missed_outgoing",
         | 
| 471 | 
            +
                    "call_received",
         | 
| 472 | 
            +
                    "call_split",
         | 
| 473 | 
            +
                    "cancel_presentation",
         | 
| 474 | 
            +
                    "chat",
         | 
| 475 | 
            +
                    "chat_bubble",
         | 
| 476 | 
            +
                    "chat_bubble_outline",
         | 
| 477 | 
            +
                    "clear_all",
         | 
| 478 | 
            +
                    "comment",
         | 
| 479 | 
            +
                    "contact_mail",
         | 
| 480 | 
            +
                    "contact_phone",
         | 
| 481 | 
            +
                    "contacts",
         | 
| 482 | 
            +
                    "desktop_access_disabled",
         | 
| 483 | 
            +
                    "dialer_sip",
         | 
| 484 | 
            +
                    "dialpad",
         | 
| 485 | 
            +
                    "domain_disabled",
         | 
| 486 | 
            +
                    "domain_verification",
         | 
| 487 | 
            +
                    "duo",
         | 
| 488 | 
            +
                    "email",
         | 
| 489 | 
            +
                    "forum",
         | 
| 490 | 
            +
                    "forward_to_inbox",
         | 
| 491 | 
            +
                    "hourglass_bottom",
         | 
| 492 | 
            +
                    "hourglass_top",
         | 
| 493 | 
            +
                    "import_contacts",
         | 
| 494 | 
            +
                    "import_export",
         | 
| 495 | 
            +
                    "invert_colors_off",
         | 
| 496 | 
            +
                    "list_alt",
         | 
| 497 | 
            +
                    "live_help",
         | 
| 498 | 
            +
                    "location_off",
         | 
| 499 | 
            +
                    "location_on",
         | 
| 500 | 
            +
                    "mail_outline",
         | 
| 501 | 
            +
                    "mark_chat_read",
         | 
| 502 | 
            +
                    "mark_chat_unread",
         | 
| 503 | 
            +
                    "mark_email_read",
         | 
| 504 | 
            +
                    "mark_email_unread",
         | 
| 505 | 
            +
                    "message",
         | 
| 506 | 
            +
                    "mobile_screen_share",
         | 
| 507 | 
            +
                    "more_time",
         | 
| 508 | 
            +
                    "nat",
         | 
| 509 | 
            +
                    "no_sim",
         | 
| 510 | 
            +
                    "pause_presentation",
         | 
| 511 | 
            +
                    "person_add_disabled",
         | 
| 512 | 
            +
                    "person_search",
         | 
| 513 | 
            +
                    "phone",
         | 
| 514 | 
            +
                    "phone_disabled",
         | 
| 515 | 
            +
                    "phone_enabled",
         | 
| 516 | 
            +
                    "phonelink_erase",
         | 
| 517 | 
            +
                    "phonelink_lock",
         | 
| 518 | 
            +
                    "phonelink_ring",
         | 
| 519 | 
            +
                    "phonelink_setup",
         | 
| 520 | 
            +
                    "portable_wifi_off",
         | 
| 521 | 
            +
                    "present_to_all",
         | 
| 522 | 
            +
                    "print_disabled",
         | 
| 523 | 
            +
                    "qr_code",
         | 
| 524 | 
            +
                    "qr_code_scanner",
         | 
| 525 | 
            +
                    "read_more",
         | 
| 526 | 
            +
                    "ring_volume",
         | 
| 527 | 
            +
                    "rss_feed",
         | 
| 528 | 
            +
                    "screen_share",
         | 
| 529 | 
            +
                    "sentiment_satisfied_alt",
         | 
| 530 | 
            +
                    "speaker_phone",
         | 
| 531 | 
            +
                    "stay_current_landscape",
         | 
| 532 | 
            +
                    "stay_current_portrait",
         | 
| 533 | 
            +
                    "stay_primary_landscape",
         | 
| 534 | 
            +
                    "stay_primary_portrait",
         | 
| 535 | 
            +
                    "stop_screen_share",
         | 
| 536 | 
            +
                    "swap_calls",
         | 
| 537 | 
            +
                    "textsms",
         | 
| 538 | 
            +
                    "unsubscribe",
         | 
| 539 | 
            +
                    "voicemail",
         | 
| 540 | 
            +
                    "vpn_key",
         | 
| 541 | 
            +
                    "wifi_calling"
         | 
| 542 | 
            +
                  ]
         | 
| 543 | 
            +
                },
         | 
| 544 | 
            +
                {
         | 
| 545 | 
            +
                  "title": "content",
         | 
| 546 | 
            +
                  "icons": [
         | 
| 547 | 
            +
                    "add",
         | 
| 548 | 
            +
                    "add_box",
         | 
| 549 | 
            +
                    "add_circle",
         | 
| 550 | 
            +
                    "add_circle_outline",
         | 
| 551 | 
            +
                    "amp_stories",
         | 
| 552 | 
            +
                    "archive",
         | 
| 553 | 
            +
                    "backspace",
         | 
| 554 | 
            +
                    "ballot",
         | 
| 555 | 
            +
                    "biotech",
         | 
| 556 | 
            +
                    "block",
         | 
| 557 | 
            +
                    "calculate",
         | 
| 558 | 
            +
                    "clear",
         | 
| 559 | 
            +
                    "content_copy",
         | 
| 560 | 
            +
                    "content_cut",
         | 
| 561 | 
            +
                    "content_paste",
         | 
| 562 | 
            +
                    "create",
         | 
| 563 | 
            +
                    "delete_sweep",
         | 
| 564 | 
            +
                    "drafts",
         | 
| 565 | 
            +
                    "dynamic_feed",
         | 
| 566 | 
            +
                    "file_copy",
         | 
| 567 | 
            +
                    "filter_list",
         | 
| 568 | 
            +
                    "flag",
         | 
| 569 | 
            +
                    "font_download",
         | 
| 570 | 
            +
                    "forward",
         | 
| 571 | 
            +
                    "gesture",
         | 
| 572 | 
            +
                    "how_to_reg",
         | 
| 573 | 
            +
                    "how_to_vote",
         | 
| 574 | 
            +
                    "inbox",
         | 
| 575 | 
            +
                    "insights",
         | 
| 576 | 
            +
                    "link",
         | 
| 577 | 
            +
                    "link_off",
         | 
| 578 | 
            +
                    "low_priority",
         | 
| 579 | 
            +
                    "mail",
         | 
| 580 | 
            +
                    "markunread",
         | 
| 581 | 
            +
                    "move_to_inbox",
         | 
| 582 | 
            +
                    "next_week",
         | 
| 583 | 
            +
                    "outlined_flag",
         | 
| 584 | 
            +
                    "policy",
         | 
| 585 | 
            +
                    "push_pin",
         | 
| 586 | 
            +
                    "redo",
         | 
| 587 | 
            +
                    "remove",
         | 
| 588 | 
            +
                    "remove_circle",
         | 
| 589 | 
            +
                    "remove_circle_outline",
         | 
| 590 | 
            +
                    "reply",
         | 
| 591 | 
            +
                    "reply_all",
         | 
| 592 | 
            +
                    "report",
         | 
| 593 | 
            +
                    "report_off",
         | 
| 594 | 
            +
                    "save",
         | 
| 595 | 
            +
                    "save_alt",
         | 
| 596 | 
            +
                    "select_all",
         | 
| 597 | 
            +
                    "send",
         | 
| 598 | 
            +
                    "sort",
         | 
| 599 | 
            +
                    "square_foot",
         | 
| 600 | 
            +
                    "text_format",
         | 
| 601 | 
            +
                    "unarchive",
         | 
| 602 | 
            +
                    "undo",
         | 
| 603 | 
            +
                    "waves",
         | 
| 604 | 
            +
                    "weekend",
         | 
| 605 | 
            +
                    "where_to_vote"
         | 
| 606 | 
            +
                  ]
         | 
| 607 | 
            +
                },
         | 
| 608 | 
            +
                {
         | 
| 609 | 
            +
                  "title": "device",
         | 
| 610 | 
            +
                  "icons": [
         | 
| 611 | 
            +
                    "access_alarm",
         | 
| 612 | 
            +
                    "access_alarms",
         | 
| 613 | 
            +
                    "access_time",
         | 
| 614 | 
            +
                    "ad_units",
         | 
| 615 | 
            +
                    "add_alarm",
         | 
| 616 | 
            +
                    "add_to_home_screen",
         | 
| 617 | 
            +
                    "airplanemode_active",
         | 
| 618 | 
            +
                    "airplanemode_inactive",
         | 
| 619 | 
            +
                    "battery_alert",
         | 
| 620 | 
            +
                    "battery_charging_full",
         | 
| 621 | 
            +
                    "battery_full",
         | 
| 622 | 
            +
                    "battery_std",
         | 
| 623 | 
            +
                    "battery_unknown",
         | 
| 624 | 
            +
                    "bluetooth",
         | 
| 625 | 
            +
                    "bluetooth_connected",
         | 
| 626 | 
            +
                    "bluetooth_disabled",
         | 
| 627 | 
            +
                    "bluetooth_searching",
         | 
| 628 | 
            +
                    "brightness_auto",
         | 
| 629 | 
            +
                    "brightness_high",
         | 
| 630 | 
            +
                    "brightness_low",
         | 
| 631 | 
            +
                    "brightness_medium",
         | 
| 632 | 
            +
                    "data_usage",
         | 
| 633 | 
            +
                    "developer_mode",
         | 
| 634 | 
            +
                    "devices",
         | 
| 635 | 
            +
                    "dvr",
         | 
| 636 | 
            +
                    "gps_fixed",
         | 
| 637 | 
            +
                    "gps_not_fixed",
         | 
| 638 | 
            +
                    "gps_off",
         | 
| 639 | 
            +
                    "graphic_eq",
         | 
| 640 | 
            +
                    "location_disabled",
         | 
| 641 | 
            +
                    "location_searching",
         | 
| 642 | 
            +
                    "mobile_friendly",
         | 
| 643 | 
            +
                    "mobile_off",
         | 
| 644 | 
            +
                    "nfc",
         | 
| 645 | 
            +
                    "screen_lock_landscape",
         | 
| 646 | 
            +
                    "screen_lock_portrait",
         | 
| 647 | 
            +
                    "screen_lock_rotation",
         | 
| 648 | 
            +
                    "screen_rotation",
         | 
| 649 | 
            +
                    "sd_storage",
         | 
| 650 | 
            +
                    "settings_system_daydream",
         | 
| 651 | 
            +
                    "signal_cellular_4_bar",
         | 
| 652 | 
            +
                    "signal_cellular_alt",
         | 
| 653 | 
            +
                    "signal_cellular_connected_no_internet_4_bar",
         | 
| 654 | 
            +
                    "signal_cellular_no_sim",
         | 
| 655 | 
            +
                    "signal_cellular_null",
         | 
| 656 | 
            +
                    "signal_cellular_off",
         | 
| 657 | 
            +
                    "signal_wifi_4_bar",
         | 
| 658 | 
            +
                    "signal_wifi_4_bar_lock",
         | 
| 659 | 
            +
                    "signal_wifi_off",
         | 
| 660 | 
            +
                    "storage",
         | 
| 661 | 
            +
                    "usb",
         | 
| 662 | 
            +
                    "wallpaper",
         | 
| 663 | 
            +
                    "widgets",
         | 
| 664 | 
            +
                    "wifi_lock",
         | 
| 665 | 
            +
                    "wifi_tethering"
         | 
| 666 | 
            +
                  ]
         | 
| 667 | 
            +
                },
         | 
| 668 | 
            +
                {
         | 
| 669 | 
            +
                  "title": "editor",
         | 
| 670 | 
            +
                  "icons": [
         | 
| 671 | 
            +
                    "add_comment",
         | 
| 672 | 
            +
                    "attach_file",
         | 
| 673 | 
            +
                    "attach_money",
         | 
| 674 | 
            +
                    "bar_chart",
         | 
| 675 | 
            +
                    "border_all",
         | 
| 676 | 
            +
                    "border_bottom",
         | 
| 677 | 
            +
                    "border_clear",
         | 
| 678 | 
            +
                    "border_horizontal",
         | 
| 679 | 
            +
                    "border_inner",
         | 
| 680 | 
            +
                    "border_left",
         | 
| 681 | 
            +
                    "border_outer",
         | 
| 682 | 
            +
                    "border_right",
         | 
| 683 | 
            +
                    "border_style",
         | 
| 684 | 
            +
                    "border_top",
         | 
| 685 | 
            +
                    "border_vertical",
         | 
| 686 | 
            +
                    "bubble_chart",
         | 
| 687 | 
            +
                    "drag_handle",
         | 
| 688 | 
            +
                    "format_align_center",
         | 
| 689 | 
            +
                    "format_align_justify",
         | 
| 690 | 
            +
                    "format_align_left",
         | 
| 691 | 
            +
                    "format_align_right",
         | 
| 692 | 
            +
                    "format_bold",
         | 
| 693 | 
            +
                    "format_clear",
         | 
| 694 | 
            +
                    "format_color_reset",
         | 
| 695 | 
            +
                    "format_indent_decrease",
         | 
| 696 | 
            +
                    "format_indent_increase",
         | 
| 697 | 
            +
                    "format_italic",
         | 
| 698 | 
            +
                    "format_line_spacing",
         | 
| 699 | 
            +
                    "format_list_bulleted",
         | 
| 700 | 
            +
                    "format_list_numbered",
         | 
| 701 | 
            +
                    "format_list_numbered_rtl",
         | 
| 702 | 
            +
                    "format_paint",
         | 
| 703 | 
            +
                    "format_quote",
         | 
| 704 | 
            +
                    "format_shapes",
         | 
| 705 | 
            +
                    "format_size",
         | 
| 706 | 
            +
                    "format_strikethrough",
         | 
| 707 | 
            +
                    "format_textdirection_l_to_r",
         | 
| 708 | 
            +
                    "format_textdirection_r_to_l",
         | 
| 709 | 
            +
                    "format_underlined",
         | 
| 710 | 
            +
                    "functions",
         | 
| 711 | 
            +
                    "height",
         | 
| 712 | 
            +
                    "highlight",
         | 
| 713 | 
            +
                    "horizontal_rule",
         | 
| 714 | 
            +
                    "insert_chart",
         | 
| 715 | 
            +
                    "insert_chart_outlined",
         | 
| 716 | 
            +
                    "insert_comment",
         | 
| 717 | 
            +
                    "insert_drive_file",
         | 
| 718 | 
            +
                    "insert_emoticon",
         | 
| 719 | 
            +
                    "insert_invitation",
         | 
| 720 | 
            +
                    "insert_link",
         | 
| 721 | 
            +
                    "insert_photo",
         | 
| 722 | 
            +
                    "linear_scale",
         | 
| 723 | 
            +
                    "merge_type",
         | 
| 724 | 
            +
                    "mode_comment",
         | 
| 725 | 
            +
                    "monetization_on",
         | 
| 726 | 
            +
                    "money_off",
         | 
| 727 | 
            +
                    "multiline_chart",
         | 
| 728 | 
            +
                    "notes",
         | 
| 729 | 
            +
                    "pie_chart",
         | 
| 730 | 
            +
                    "post_add",
         | 
| 731 | 
            +
                    "publish",
         | 
| 732 | 
            +
                    "scatter_plot",
         | 
| 733 | 
            +
                    "score",
         | 
| 734 | 
            +
                    "short_text",
         | 
| 735 | 
            +
                    "show_chart",
         | 
| 736 | 
            +
                    "space_bar",
         | 
| 737 | 
            +
                    "stacked_line_chart",
         | 
| 738 | 
            +
                    "strikethrough_s",
         | 
| 739 | 
            +
                    "subscript",
         | 
| 740 | 
            +
                    "superscript",
         | 
| 741 | 
            +
                    "table_chart",
         | 
| 742 | 
            +
                    "table_rows",
         | 
| 743 | 
            +
                    "text_fields",
         | 
| 744 | 
            +
                    "title",
         | 
| 745 | 
            +
                    "vertical_align_bottom",
         | 
| 746 | 
            +
                    "vertical_align_center",
         | 
| 747 | 
            +
                    "vertical_align_top",
         | 
| 748 | 
            +
                    "wrap_text"
         | 
| 749 | 
            +
                  ]
         | 
| 750 | 
            +
                },
         | 
| 751 | 
            +
                {
         | 
| 752 | 
            +
                  "title": "file",
         | 
| 753 | 
            +
                  "icons": [
         | 
| 754 | 
            +
                    "attach_email",
         | 
| 755 | 
            +
                    "attachment",
         | 
| 756 | 
            +
                    "cloud",
         | 
| 757 | 
            +
                    "cloud_circle",
         | 
| 758 | 
            +
                    "cloud_done",
         | 
| 759 | 
            +
                    "cloud_download",
         | 
| 760 | 
            +
                    "cloud_off",
         | 
| 761 | 
            +
                    "cloud_queue",
         | 
| 762 | 
            +
                    "cloud_upload",
         | 
| 763 | 
            +
                    "create_new_folder",
         | 
| 764 | 
            +
                    "folder",
         | 
| 765 | 
            +
                    "folder_open",
         | 
| 766 | 
            +
                    "folder_shared",
         | 
| 767 | 
            +
                    "request_quote",
         | 
| 768 | 
            +
                    "rule_folder",
         | 
| 769 | 
            +
                    "snippet_folder",
         | 
| 770 | 
            +
                    "text_snippet",
         | 
| 771 | 
            +
                    "topic"
         | 
| 772 | 
            +
                  ]
         | 
| 773 | 
            +
                },
         | 
| 774 | 
            +
                {
         | 
| 775 | 
            +
                  "title": "hardware",
         | 
| 776 | 
            +
                  "icons": [
         | 
| 777 | 
            +
                    "browser_not_supported",
         | 
| 778 | 
            +
                    "cast",
         | 
| 779 | 
            +
                    "cast_connected",
         | 
| 780 | 
            +
                    "cast_for_education",
         | 
| 781 | 
            +
                    "computer",
         | 
| 782 | 
            +
                    "desktop_mac",
         | 
| 783 | 
            +
                    "desktop_windows",
         | 
| 784 | 
            +
                    "developer_board",
         | 
| 785 | 
            +
                    "device_hub",
         | 
| 786 | 
            +
                    "device_unknown",
         | 
| 787 | 
            +
                    "devices_other",
         | 
| 788 | 
            +
                    "dock",
         | 
| 789 | 
            +
                    "gamepad",
         | 
| 790 | 
            +
                    "headset",
         | 
| 791 | 
            +
                    "headset_mic",
         | 
| 792 | 
            +
                    "keyboard",
         | 
| 793 | 
            +
                    "keyboard_arrow_down",
         | 
| 794 | 
            +
                    "keyboard_arrow_left",
         | 
| 795 | 
            +
                    "keyboard_arrow_right",
         | 
| 796 | 
            +
                    "keyboard_arrow_up",
         | 
| 797 | 
            +
                    "keyboard_backspace",
         | 
| 798 | 
            +
                    "keyboard_capslock",
         | 
| 799 | 
            +
                    "keyboard_hide",
         | 
| 800 | 
            +
                    "keyboard_return",
         | 
| 801 | 
            +
                    "keyboard_tab",
         | 
| 802 | 
            +
                    "keyboard_voice",
         | 
| 803 | 
            +
                    "laptop",
         | 
| 804 | 
            +
                    "laptop_chromebook",
         | 
| 805 | 
            +
                    "laptop_mac",
         | 
| 806 | 
            +
                    "laptop_windows",
         | 
| 807 | 
            +
                    "memory",
         | 
| 808 | 
            +
                    "mouse",
         | 
| 809 | 
            +
                    "phone_android",
         | 
| 810 | 
            +
                    "phone_iphone",
         | 
| 811 | 
            +
                    "phonelink",
         | 
| 812 | 
            +
                    "phonelink_off",
         | 
| 813 | 
            +
                    "point_of_sale",
         | 
| 814 | 
            +
                    "power_input",
         | 
| 815 | 
            +
                    "router",
         | 
| 816 | 
            +
                    "scanner",
         | 
| 817 | 
            +
                    "security",
         | 
| 818 | 
            +
                    "sim_card",
         | 
| 819 | 
            +
                    "smartphone",
         | 
| 820 | 
            +
                    "speaker",
         | 
| 821 | 
            +
                    "speaker_group",
         | 
| 822 | 
            +
                    "tablet",
         | 
| 823 | 
            +
                    "tablet_android",
         | 
| 824 | 
            +
                    "tablet_mac",
         | 
| 825 | 
            +
                    "toys",
         | 
| 826 | 
            +
                    "tv",
         | 
| 827 | 
            +
                    "videogame_asset",
         | 
| 828 | 
            +
                    "watch"
         | 
| 829 | 
            +
                  ]
         | 
| 830 | 
            +
                },
         | 
| 831 | 
            +
                {
         | 
| 832 | 
            +
                  "title": "home",
         | 
| 833 | 
            +
                  "icons": [
         | 
| 834 | 
            +
                    "sensor_door",
         | 
| 835 | 
            +
                    "sensor_window"
         | 
| 836 | 
            +
                  ]
         | 
| 837 | 
            +
                },
         | 
| 838 | 
            +
                {
         | 
| 839 | 
            +
                  "title": "image",
         | 
| 840 | 
            +
                  "icons": [
         | 
| 841 | 
            +
                    "add_a_photo",
         | 
| 842 | 
            +
                    "add_photo_alternate",
         | 
| 843 | 
            +
                    "add_to_photos",
         | 
| 844 | 
            +
                    "adjust",
         | 
| 845 | 
            +
                    "assistant",
         | 
| 846 | 
            +
                    "assistant_photo",
         | 
| 847 | 
            +
                    "audiotrack",
         | 
| 848 | 
            +
                    "bedtime",
         | 
| 849 | 
            +
                    "blur_circular",
         | 
| 850 | 
            +
                    "blur_linear",
         | 
| 851 | 
            +
                    "blur_off",
         | 
| 852 | 
            +
                    "blur_on",
         | 
| 853 | 
            +
                    "brightness_1",
         | 
| 854 | 
            +
                    "brightness_2",
         | 
| 855 | 
            +
                    "brightness_3",
         | 
| 856 | 
            +
                    "brightness_4",
         | 
| 857 | 
            +
                    "brightness_5",
         | 
| 858 | 
            +
                    "brightness_6",
         | 
| 859 | 
            +
                    "brightness_7",
         | 
| 860 | 
            +
                    "broken_image",
         | 
| 861 | 
            +
                    "brush",
         | 
| 862 | 
            +
                    "burst_mode",
         | 
| 863 | 
            +
                    "camera",
         | 
| 864 | 
            +
                    "camera_alt",
         | 
| 865 | 
            +
                    "camera_front",
         | 
| 866 | 
            +
                    "camera_rear",
         | 
| 867 | 
            +
                    "camera_roll",
         | 
| 868 | 
            +
                    "center_focus_strong",
         | 
| 869 | 
            +
                    "center_focus_weak",
         | 
| 870 | 
            +
                    "collections",
         | 
| 871 | 
            +
                    "collections_bookmark",
         | 
| 872 | 
            +
                    "color_lens",
         | 
| 873 | 
            +
                    "colorize",
         | 
| 874 | 
            +
                    "compare",
         | 
| 875 | 
            +
                    "control_point",
         | 
| 876 | 
            +
                    "control_point_duplicate",
         | 
| 877 | 
            +
                    "crop",
         | 
| 878 | 
            +
                    "crop_16_9",
         | 
| 879 | 
            +
                    "crop_3_2",
         | 
| 880 | 
            +
                    "crop_5_4",
         | 
| 881 | 
            +
                    "crop_7_5",
         | 
| 882 | 
            +
                    "crop_din",
         | 
| 883 | 
            +
                    "crop_free",
         | 
| 884 | 
            +
                    "crop_landscape",
         | 
| 885 | 
            +
                    "crop_original",
         | 
| 886 | 
            +
                    "crop_portrait",
         | 
| 887 | 
            +
                    "crop_rotate",
         | 
| 888 | 
            +
                    "crop_square",
         | 
| 889 | 
            +
                    "dehaze",
         | 
| 890 | 
            +
                    "details",
         | 
| 891 | 
            +
                    "edit",
         | 
| 892 | 
            +
                    "euro",
         | 
| 893 | 
            +
                    "exposure",
         | 
| 894 | 
            +
                    "exposure_neg_1",
         | 
| 895 | 
            +
                    "exposure_neg_2",
         | 
| 896 | 
            +
                    "exposure_plus_1",
         | 
| 897 | 
            +
                    "exposure_plus_2",
         | 
| 898 | 
            +
                    "exposure_zero",
         | 
| 899 | 
            +
                    "filter",
         | 
| 900 | 
            +
                    "filter_1",
         | 
| 901 | 
            +
                    "filter_2",
         | 
| 902 | 
            +
                    "filter_3",
         | 
| 903 | 
            +
                    "filter_4",
         | 
| 904 | 
            +
                    "filter_5",
         | 
| 905 | 
            +
                    "filter_6",
         | 
| 906 | 
            +
                    "filter_7",
         | 
| 907 | 
            +
                    "filter_8",
         | 
| 908 | 
            +
                    "filter_9",
         | 
| 909 | 
            +
                    "filter_9_plus",
         | 
| 910 | 
            +
                    "filter_b_and_w",
         | 
| 911 | 
            +
                    "filter_center_focus",
         | 
| 912 | 
            +
                    "filter_drama",
         | 
| 913 | 
            +
                    "filter_frames",
         | 
| 914 | 
            +
                    "filter_hdr",
         | 
| 915 | 
            +
                    "filter_none",
         | 
| 916 | 
            +
                    "filter_tilt_shift",
         | 
| 917 | 
            +
                    "filter_vintage",
         | 
| 918 | 
            +
                    "flare",
         | 
| 919 | 
            +
                    "flash_auto",
         | 
| 920 | 
            +
                    "flash_off",
         | 
| 921 | 
            +
                    "flash_on",
         | 
| 922 | 
            +
                    "flip",
         | 
| 923 | 
            +
                    "flip_camera_android",
         | 
| 924 | 
            +
                    "flip_camera_ios",
         | 
| 925 | 
            +
                    "gradient",
         | 
| 926 | 
            +
                    "grain",
         | 
| 927 | 
            +
                    "grid_off",
         | 
| 928 | 
            +
                    "grid_on",
         | 
| 929 | 
            +
                    "hdr_off",
         | 
| 930 | 
            +
                    "hdr_on",
         | 
| 931 | 
            +
                    "hdr_strong",
         | 
| 932 | 
            +
                    "hdr_weak",
         | 
| 933 | 
            +
                    "healing",
         | 
| 934 | 
            +
                    "image",
         | 
| 935 | 
            +
                    "image_aspect_ratio",
         | 
| 936 | 
            +
                    "image_not_supported",
         | 
| 937 | 
            +
                    "image_search",
         | 
| 938 | 
            +
                    "iso",
         | 
| 939 | 
            +
                    "landscape",
         | 
| 940 | 
            +
                    "leak_add",
         | 
| 941 | 
            +
                    "leak_remove",
         | 
| 942 | 
            +
                    "lens",
         | 
| 943 | 
            +
                    "linked_camera",
         | 
| 944 | 
            +
                    "looks",
         | 
| 945 | 
            +
                    "looks_3",
         | 
| 946 | 
            +
                    "looks_4",
         | 
| 947 | 
            +
                    "looks_5",
         | 
| 948 | 
            +
                    "looks_6",
         | 
| 949 | 
            +
                    "looks_one",
         | 
| 950 | 
            +
                    "looks_two",
         | 
| 951 | 
            +
                    "loupe",
         | 
| 952 | 
            +
                    "monochrome_photos",
         | 
| 953 | 
            +
                    "motion_photos_on",
         | 
| 954 | 
            +
                    "motion_photos_pause",
         | 
| 955 | 
            +
                    "motion_photos_paused",
         | 
| 956 | 
            +
                    "movie_creation",
         | 
| 957 | 
            +
                    "movie_filter",
         | 
| 958 | 
            +
                    "music_note",
         | 
| 959 | 
            +
                    "music_off",
         | 
| 960 | 
            +
                    "nature",
         | 
| 961 | 
            +
                    "nature_people",
         | 
| 962 | 
            +
                    "navigate_before",
         | 
| 963 | 
            +
                    "navigate_next",
         | 
| 964 | 
            +
                    "palette",
         | 
| 965 | 
            +
                    "panorama",
         | 
| 966 | 
            +
                    "panorama_fish_eye",
         | 
| 967 | 
            +
                    "panorama_horizontal",
         | 
| 968 | 
            +
                    "panorama_vertical",
         | 
| 969 | 
            +
                    "panorama_wide_angle",
         | 
| 970 | 
            +
                    "photo",
         | 
| 971 | 
            +
                    "photo_album",
         | 
| 972 | 
            +
                    "photo_camera",
         | 
| 973 | 
            +
                    "photo_filter",
         | 
| 974 | 
            +
                    "photo_library",
         | 
| 975 | 
            +
                    "photo_size_select_actual",
         | 
| 976 | 
            +
                    "photo_size_select_large",
         | 
| 977 | 
            +
                    "photo_size_select_small",
         | 
| 978 | 
            +
                    "picture_as_pdf",
         | 
| 979 | 
            +
                    "portrait",
         | 
| 980 | 
            +
                    "receipt_long",
         | 
| 981 | 
            +
                    "remove_red_eye",
         | 
| 982 | 
            +
                    "rotate_90_degrees_ccw",
         | 
| 983 | 
            +
                    "rotate_left",
         | 
| 984 | 
            +
                    "rotate_right",
         | 
| 985 | 
            +
                    "shutter_speed",
         | 
| 986 | 
            +
                    "slideshow",
         | 
| 987 | 
            +
                    "straighten",
         | 
| 988 | 
            +
                    "style",
         | 
| 989 | 
            +
                    "switch_camera",
         | 
| 990 | 
            +
                    "switch_video",
         | 
| 991 | 
            +
                    "tag_faces",
         | 
| 992 | 
            +
                    "texture",
         | 
| 993 | 
            +
                    "timelapse",
         | 
| 994 | 
            +
                    "timer",
         | 
| 995 | 
            +
                    "timer_10",
         | 
| 996 | 
            +
                    "timer_3",
         | 
| 997 | 
            +
                    "timer_off",
         | 
| 998 | 
            +
                    "tonality",
         | 
| 999 | 
            +
                    "transform",
         | 
| 1000 | 
            +
                    "tune",
         | 
| 1001 | 
            +
                    "view_comfy",
         | 
| 1002 | 
            +
                    "view_compact",
         | 
| 1003 | 
            +
                    "vignette",
         | 
| 1004 | 
            +
                    "wb_auto",
         | 
| 1005 | 
            +
                    "wb_cloudy",
         | 
| 1006 | 
            +
                    "wb_incandescent",
         | 
| 1007 | 
            +
                    "wb_iridescent",
         | 
| 1008 | 
            +
                    "wb_sunny"
         | 
| 1009 | 
            +
                  ]
         | 
| 1010 | 
            +
                },
         | 
| 1011 | 
            +
                {
         | 
| 1012 | 
            +
                  "title": "maps",
         | 
| 1013 | 
            +
                  "icons": [
         | 
| 1014 | 
            +
                    "360",
         | 
| 1015 | 
            +
                    "add_business",
         | 
| 1016 | 
            +
                    "add_location",
         | 
| 1017 | 
            +
                    "add_location_alt",
         | 
| 1018 | 
            +
                    "add_road",
         | 
| 1019 | 
            +
                    "agriculture",
         | 
| 1020 | 
            +
                    "alt_route",
         | 
| 1021 | 
            +
                    "atm",
         | 
| 1022 | 
            +
                    "beenhere",
         | 
| 1023 | 
            +
                    "bike_scooter",
         | 
| 1024 | 
            +
                    "category",
         | 
| 1025 | 
            +
                    "cleaning_services",
         | 
| 1026 | 
            +
                    "compass_calibration",
         | 
| 1027 | 
            +
                    "departure_board",
         | 
| 1028 | 
            +
                    "design_services",
         | 
| 1029 | 
            +
                    "directions",
         | 
| 1030 | 
            +
                    "directions_bike",
         | 
| 1031 | 
            +
                    "directions_boat",
         | 
| 1032 | 
            +
                    "directions_bus",
         | 
| 1033 | 
            +
                    "directions_car",
         | 
| 1034 | 
            +
                    "directions_railway",
         | 
| 1035 | 
            +
                    "directions_run",
         | 
| 1036 | 
            +
                    "directions_subway",
         | 
| 1037 | 
            +
                    "directions_transit",
         | 
| 1038 | 
            +
                    "directions_walk",
         | 
| 1039 | 
            +
                    "edit_attributes",
         | 
| 1040 | 
            +
                    "edit_location",
         | 
| 1041 | 
            +
                    "edit_road",
         | 
| 1042 | 
            +
                    "electric_bike",
         | 
| 1043 | 
            +
                    "electric_car",
         | 
| 1044 | 
            +
                    "electric_moped",
         | 
| 1045 | 
            +
                    "electric_scooter",
         | 
| 1046 | 
            +
                    "electrical_services",
         | 
| 1047 | 
            +
                    "ev_station",
         | 
| 1048 | 
            +
                    "fastfood",
         | 
| 1049 | 
            +
                    "flight",
         | 
| 1050 | 
            +
                    "handyman",
         | 
| 1051 | 
            +
                    "home_repair_service",
         | 
| 1052 | 
            +
                    "hotel",
         | 
| 1053 | 
            +
                    "hvac",
         | 
| 1054 | 
            +
                    "layers",
         | 
| 1055 | 
            +
                    "layers_clear",
         | 
| 1056 | 
            +
                    "local_activity",
         | 
| 1057 | 
            +
                    "local_airport",
         | 
| 1058 | 
            +
                    "local_atm",
         | 
| 1059 | 
            +
                    "local_bar",
         | 
| 1060 | 
            +
                    "local_cafe",
         | 
| 1061 | 
            +
                    "local_car_wash",
         | 
| 1062 | 
            +
                    "local_convenience_store",
         | 
| 1063 | 
            +
                    "local_dining",
         | 
| 1064 | 
            +
                    "local_drink",
         | 
| 1065 | 
            +
                    "local_fire_department",
         | 
| 1066 | 
            +
                    "local_florist",
         | 
| 1067 | 
            +
                    "local_gas_station",
         | 
| 1068 | 
            +
                    "local_grocery_store",
         | 
| 1069 | 
            +
                    "local_hospital",
         | 
| 1070 | 
            +
                    "local_hotel",
         | 
| 1071 | 
            +
                    "local_laundry_service",
         | 
| 1072 | 
            +
                    "local_library",
         | 
| 1073 | 
            +
                    "local_mall",
         | 
| 1074 | 
            +
                    "local_movies",
         | 
| 1075 | 
            +
                    "local_offer",
         | 
| 1076 | 
            +
                    "local_parking",
         | 
| 1077 | 
            +
                    "local_pharmacy",
         | 
| 1078 | 
            +
                    "local_phone",
         | 
| 1079 | 
            +
                    "local_pizza",
         | 
| 1080 | 
            +
                    "local_play",
         | 
| 1081 | 
            +
                    "local_police",
         | 
| 1082 | 
            +
                    "local_post_office",
         | 
| 1083 | 
            +
                    "local_printshop",
         | 
| 1084 | 
            +
                    "local_see",
         | 
| 1085 | 
            +
                    "local_shipping",
         | 
| 1086 | 
            +
                    "local_taxi",
         | 
| 1087 | 
            +
                    "map",
         | 
| 1088 | 
            +
                    "maps_ugc",
         | 
| 1089 | 
            +
                    "medical_services",
         | 
| 1090 | 
            +
                    "menu_book",
         | 
| 1091 | 
            +
                    "miscellaneous_services",
         | 
| 1092 | 
            +
                    "money",
         | 
| 1093 | 
            +
                    "moped",
         | 
| 1094 | 
            +
                    "multiple_stop",
         | 
| 1095 | 
            +
                    "museum",
         | 
| 1096 | 
            +
                    "my_location",
         | 
| 1097 | 
            +
                    "navigation",
         | 
| 1098 | 
            +
                    "near_me",
         | 
| 1099 | 
            +
                    "near_me_disabled",
         | 
| 1100 | 
            +
                    "no_meals",
         | 
| 1101 | 
            +
                    "no_transfer",
         | 
| 1102 | 
            +
                    "not_listed_location",
         | 
| 1103 | 
            +
                    "pedal_bike",
         | 
| 1104 | 
            +
                    "person_pin",
         | 
| 1105 | 
            +
                    "person_pin_circle",
         | 
| 1106 | 
            +
                    "pest_control",
         | 
| 1107 | 
            +
                    "pest_control_rodent",
         | 
| 1108 | 
            +
                    "pin_drop",
         | 
| 1109 | 
            +
                    "place",
         | 
| 1110 | 
            +
                    "plumbing",
         | 
| 1111 | 
            +
                    "rate_review",
         | 
| 1112 | 
            +
                    "restaurant",
         | 
| 1113 | 
            +
                    "restaurant_menu",
         | 
| 1114 | 
            +
                    "run_circle",
         | 
| 1115 | 
            +
                    "satellite",
         | 
| 1116 | 
            +
                    "set_meal",
         | 
| 1117 | 
            +
                    "store_mall_directory",
         | 
| 1118 | 
            +
                    "streetview",
         | 
| 1119 | 
            +
                    "subway",
         | 
| 1120 | 
            +
                    "terrain",
         | 
| 1121 | 
            +
                    "traffic",
         | 
| 1122 | 
            +
                    "train",
         | 
| 1123 | 
            +
                    "tram",
         | 
| 1124 | 
            +
                    "transfer_within_a_station",
         | 
| 1125 | 
            +
                    "transit_enterexit",
         | 
| 1126 | 
            +
                    "trip_origin",
         | 
| 1127 | 
            +
                    "two_wheeler",
         | 
| 1128 | 
            +
                    "wine_bar",
         | 
| 1129 | 
            +
                    "wrong_location",
         | 
| 1130 | 
            +
                    "zoom_out_map"
         | 
| 1131 | 
            +
                  ]
         | 
| 1132 | 
            +
                },
         | 
| 1133 | 
            +
                {
         | 
| 1134 | 
            +
                  "title": "navigation",
         | 
| 1135 | 
            +
                  "icons": [
         | 
| 1136 | 
            +
                    "app_settings_alt",
         | 
| 1137 | 
            +
                    "apps",
         | 
| 1138 | 
            +
                    "arrow_back",
         | 
| 1139 | 
            +
                    "arrow_back_ios",
         | 
| 1140 | 
            +
                    "arrow_downward",
         | 
| 1141 | 
            +
                    "arrow_drop_down",
         | 
| 1142 | 
            +
                    "arrow_drop_down_circle",
         | 
| 1143 | 
            +
                    "arrow_drop_up",
         | 
| 1144 | 
            +
                    "arrow_forward",
         | 
| 1145 | 
            +
                    "arrow_forward_ios",
         | 
| 1146 | 
            +
                    "arrow_left",
         | 
| 1147 | 
            +
                    "arrow_right",
         | 
| 1148 | 
            +
                    "arrow_upward",
         | 
| 1149 | 
            +
                    "campaign",
         | 
| 1150 | 
            +
                    "cancel",
         | 
| 1151 | 
            +
                    "check",
         | 
| 1152 | 
            +
                    "chevron_left",
         | 
| 1153 | 
            +
                    "chevron_right",
         | 
| 1154 | 
            +
                    "close",
         | 
| 1155 | 
            +
                    "double_arrow",
         | 
| 1156 | 
            +
                    "east",
         | 
| 1157 | 
            +
                    "expand_less",
         | 
| 1158 | 
            +
                    "expand_more",
         | 
| 1159 | 
            +
                    "first_page",
         | 
| 1160 | 
            +
                    "fullscreen",
         | 
| 1161 | 
            +
                    "fullscreen_exit",
         | 
| 1162 | 
            +
                    "home_work",
         | 
| 1163 | 
            +
                    "last_page",
         | 
| 1164 | 
            +
                    "legend_toggle",
         | 
| 1165 | 
            +
                    "menu",
         | 
| 1166 | 
            +
                    "menu_open",
         | 
| 1167 | 
            +
                    "more_horiz",
         | 
| 1168 | 
            +
                    "more_vert",
         | 
| 1169 | 
            +
                    "north",
         | 
| 1170 | 
            +
                    "north_east",
         | 
| 1171 | 
            +
                    "north_west",
         | 
| 1172 | 
            +
                    "payments",
         | 
| 1173 | 
            +
                    "refresh",
         | 
| 1174 | 
            +
                    "south",
         | 
| 1175 | 
            +
                    "south_east",
         | 
| 1176 | 
            +
                    "south_west",
         | 
| 1177 | 
            +
                    "subdirectory_arrow_left",
         | 
| 1178 | 
            +
                    "subdirectory_arrow_right",
         | 
| 1179 | 
            +
                    "switch_left",
         | 
| 1180 | 
            +
                    "switch_right",
         | 
| 1181 | 
            +
                    "unfold_less",
         | 
| 1182 | 
            +
                    "unfold_more",
         | 
| 1183 | 
            +
                    "west"
         | 
| 1184 | 
            +
                  ]
         | 
| 1185 | 
            +
                },
         | 
| 1186 | 
            +
                {
         | 
| 1187 | 
            +
                  "title": "notification",
         | 
| 1188 | 
            +
                  "icons": [
         | 
| 1189 | 
            +
                    "account_tree",
         | 
| 1190 | 
            +
                    "adb",
         | 
| 1191 | 
            +
                    "airline_seat_flat",
         | 
| 1192 | 
            +
                    "airline_seat_flat_angled",
         | 
| 1193 | 
            +
                    "airline_seat_individual_suite",
         | 
| 1194 | 
            +
                    "airline_seat_legroom_extra",
         | 
| 1195 | 
            +
                    "airline_seat_legroom_normal",
         | 
| 1196 | 
            +
                    "airline_seat_legroom_reduced",
         | 
| 1197 | 
            +
                    "airline_seat_recline_extra",
         | 
| 1198 | 
            +
                    "airline_seat_recline_normal",
         | 
| 1199 | 
            +
                    "bluetooth_audio",
         | 
| 1200 | 
            +
                    "confirmation_number",
         | 
| 1201 | 
            +
                    "directions_off",
         | 
| 1202 | 
            +
                    "disc_full",
         | 
| 1203 | 
            +
                    "drive_eta",
         | 
| 1204 | 
            +
                    "enhanced_encryption",
         | 
| 1205 | 
            +
                    "event_available",
         | 
| 1206 | 
            +
                    "event_busy",
         | 
| 1207 | 
            +
                    "event_note",
         | 
| 1208 | 
            +
                    "folder_special",
         | 
| 1209 | 
            +
                    "live_tv",
         | 
| 1210 | 
            +
                    "mms",
         | 
| 1211 | 
            +
                    "more",
         | 
| 1212 | 
            +
                    "network_check",
         | 
| 1213 | 
            +
                    "network_locked",
         | 
| 1214 | 
            +
                    "no_encryption",
         | 
| 1215 | 
            +
                    "ondemand_video",
         | 
| 1216 | 
            +
                    "personal_video",
         | 
| 1217 | 
            +
                    "phone_bluetooth_speaker",
         | 
| 1218 | 
            +
                    "phone_callback",
         | 
| 1219 | 
            +
                    "phone_forwarded",
         | 
| 1220 | 
            +
                    "phone_in_talk",
         | 
| 1221 | 
            +
                    "phone_locked",
         | 
| 1222 | 
            +
                    "phone_missed",
         | 
| 1223 | 
            +
                    "phone_paused",
         | 
| 1224 | 
            +
                    "power",
         | 
| 1225 | 
            +
                    "power_off",
         | 
| 1226 | 
            +
                    "priority_high",
         | 
| 1227 | 
            +
                    "sd_card",
         | 
| 1228 | 
            +
                    "sms",
         | 
| 1229 | 
            +
                    "sms_failed",
         | 
| 1230 | 
            +
                    "support_agent",
         | 
| 1231 | 
            +
                    "sync",
         | 
| 1232 | 
            +
                    "sync_disabled",
         | 
| 1233 | 
            +
                    "sync_problem",
         | 
| 1234 | 
            +
                    "system_update",
         | 
| 1235 | 
            +
                    "tap_and_play",
         | 
| 1236 | 
            +
                    "time_to_leave",
         | 
| 1237 | 
            +
                    "tv_off",
         | 
| 1238 | 
            +
                    "vibration",
         | 
| 1239 | 
            +
                    "voice_chat",
         | 
| 1240 | 
            +
                    "vpn_lock",
         | 
| 1241 | 
            +
                    "wc",
         | 
| 1242 | 
            +
                    "wifi",
         | 
| 1243 | 
            +
                    "wifi_off"
         | 
| 1244 | 
            +
                  ]
         | 
| 1245 | 
            +
                },
         | 
| 1246 | 
            +
                {
         | 
| 1247 | 
            +
                  "title": "places",
         | 
| 1248 | 
            +
                  "icons": [
         | 
| 1249 | 
            +
                    "ac_unit",
         | 
| 1250 | 
            +
                    "airport_shuttle",
         | 
| 1251 | 
            +
                    "all_inclusive",
         | 
| 1252 | 
            +
                    "apartment",
         | 
| 1253 | 
            +
                    "baby_changing_station",
         | 
| 1254 | 
            +
                    "backpack",
         | 
| 1255 | 
            +
                    "bathtub",
         | 
| 1256 | 
            +
                    "beach_access",
         | 
| 1257 | 
            +
                    "bento",
         | 
| 1258 | 
            +
                    "business_center",
         | 
| 1259 | 
            +
                    "carpenter",
         | 
| 1260 | 
            +
                    "casino",
         | 
| 1261 | 
            +
                    "charging_station",
         | 
| 1262 | 
            +
                    "checkroom",
         | 
| 1263 | 
            +
                    "child_care",
         | 
| 1264 | 
            +
                    "child_friendly",
         | 
| 1265 | 
            +
                    "corporate_fare",
         | 
| 1266 | 
            +
                    "countertops",
         | 
| 1267 | 
            +
                    "do_not_step",
         | 
| 1268 | 
            +
                    "do_not_touch",
         | 
| 1269 | 
            +
                    "dry",
         | 
| 1270 | 
            +
                    "elevator",
         | 
| 1271 | 
            +
                    "escalator",
         | 
| 1272 | 
            +
                    "escalator_warning",
         | 
| 1273 | 
            +
                    "family_restroom",
         | 
| 1274 | 
            +
                    "fence",
         | 
| 1275 | 
            +
                    "fire_extinguisher",
         | 
| 1276 | 
            +
                    "fitness_center",
         | 
| 1277 | 
            +
                    "food_bank",
         | 
| 1278 | 
            +
                    "foundation",
         | 
| 1279 | 
            +
                    "free_breakfast",
         | 
| 1280 | 
            +
                    "golf_course",
         | 
| 1281 | 
            +
                    "grass",
         | 
| 1282 | 
            +
                    "hot_tub",
         | 
| 1283 | 
            +
                    "house",
         | 
| 1284 | 
            +
                    "house_siding",
         | 
| 1285 | 
            +
                    "kitchen",
         | 
| 1286 | 
            +
                    "meeting_room",
         | 
| 1287 | 
            +
                    "microwave",
         | 
| 1288 | 
            +
                    "night_shelter",
         | 
| 1289 | 
            +
                    "no_backpack",
         | 
| 1290 | 
            +
                    "no_cell",
         | 
| 1291 | 
            +
                    "no_drinks",
         | 
| 1292 | 
            +
                    "no_flash",
         | 
| 1293 | 
            +
                    "no_food",
         | 
| 1294 | 
            +
                    "no_meeting_room",
         | 
| 1295 | 
            +
                    "no_photography",
         | 
| 1296 | 
            +
                    "no_stroller",
         | 
| 1297 | 
            +
                    "pool",
         | 
| 1298 | 
            +
                    "rice_bowl",
         | 
| 1299 | 
            +
                    "roofing",
         | 
| 1300 | 
            +
                    "room_preferences",
         | 
| 1301 | 
            +
                    "room_service",
         | 
| 1302 | 
            +
                    "rv_hookup",
         | 
| 1303 | 
            +
                    "smoke_free",
         | 
| 1304 | 
            +
                    "smoking_rooms",
         | 
| 1305 | 
            +
                    "soap",
         | 
| 1306 | 
            +
                    "spa",
         | 
| 1307 | 
            +
                    "sports_bar",
         | 
| 1308 | 
            +
                    "stairs",
         | 
| 1309 | 
            +
                    "storefront",
         | 
| 1310 | 
            +
                    "stroller",
         | 
| 1311 | 
            +
                    "tapas",
         | 
| 1312 | 
            +
                    "tty",
         | 
| 1313 | 
            +
                    "umbrella",
         | 
| 1314 | 
            +
                    "wash",
         | 
| 1315 | 
            +
                    "water_damage",
         | 
| 1316 | 
            +
                    "wheelchair_pickup"
         | 
| 1317 | 
            +
                  ]
         | 
| 1318 | 
            +
                },
         | 
| 1319 | 
            +
                {
         | 
| 1320 | 
            +
                  "title": "social",
         | 
| 1321 | 
            +
                  "icons": [
         | 
| 1322 | 
            +
                    "6_ft_apart",
         | 
| 1323 | 
            +
                    "architecture",
         | 
| 1324 | 
            +
                    "cake",
         | 
| 1325 | 
            +
                    "clean_hands",
         | 
| 1326 | 
            +
                    "connect_without_contact",
         | 
| 1327 | 
            +
                    "construction",
         | 
| 1328 | 
            +
                    "coronavirus",
         | 
| 1329 | 
            +
                    "deck",
         | 
| 1330 | 
            +
                    "domain",
         | 
| 1331 | 
            +
                    "elderly",
         | 
| 1332 | 
            +
                    "emoji_emotions",
         | 
| 1333 | 
            +
                    "emoji_events",
         | 
| 1334 | 
            +
                    "emoji_flags",
         | 
| 1335 | 
            +
                    "emoji_food_beverage",
         | 
| 1336 | 
            +
                    "emoji_nature",
         | 
| 1337 | 
            +
                    "emoji_objects",
         | 
| 1338 | 
            +
                    "emoji_people",
         | 
| 1339 | 
            +
                    "emoji_symbols",
         | 
| 1340 | 
            +
                    "emoji_transportation",
         | 
| 1341 | 
            +
                    "engineering",
         | 
| 1342 | 
            +
                    "facebook",
         | 
| 1343 | 
            +
                    "fireplace",
         | 
| 1344 | 
            +
                    "follow_the_signs",
         | 
| 1345 | 
            +
                    "group",
         | 
| 1346 | 
            +
                    "group_add",
         | 
| 1347 | 
            +
                    "groups",
         | 
| 1348 | 
            +
                    "history_edu",
         | 
| 1349 | 
            +
                    "king_bed",
         | 
| 1350 | 
            +
                    "location_city",
         | 
| 1351 | 
            +
                    "luggage",
         | 
| 1352 | 
            +
                    "masks",
         | 
| 1353 | 
            +
                    "military_tech",
         | 
| 1354 | 
            +
                    "mood",
         | 
| 1355 | 
            +
                    "mood_bad",
         | 
| 1356 | 
            +
                    "nights_stay",
         | 
| 1357 | 
            +
                    "no_luggage",
         | 
| 1358 | 
            +
                    "notifications",
         | 
| 1359 | 
            +
                    "notifications_active",
         | 
| 1360 | 
            +
                    "notifications_none",
         | 
| 1361 | 
            +
                    "notifications_off",
         | 
| 1362 | 
            +
                    "notifications_paused",
         | 
| 1363 | 
            +
                    "outdoor_grill",
         | 
| 1364 | 
            +
                    "pages",
         | 
| 1365 | 
            +
                    "party_mode",
         | 
| 1366 | 
            +
                    "people",
         | 
| 1367 | 
            +
                    "people_alt",
         | 
| 1368 | 
            +
                    "people_outline",
         | 
| 1369 | 
            +
                    "person",
         | 
| 1370 | 
            +
                    "person_add",
         | 
| 1371 | 
            +
                    "person_add_alt_1",
         | 
| 1372 | 
            +
                    "person_outline",
         | 
| 1373 | 
            +
                    "person_remove",
         | 
| 1374 | 
            +
                    "person_remove_alt_1",
         | 
| 1375 | 
            +
                    "plus_one",
         | 
| 1376 | 
            +
                    "poll",
         | 
| 1377 | 
            +
                    "psychology",
         | 
| 1378 | 
            +
                    "public",
         | 
| 1379 | 
            +
                    "public_off",
         | 
| 1380 | 
            +
                    "reduce_capacity",
         | 
| 1381 | 
            +
                    "sanitizer",
         | 
| 1382 | 
            +
                    "school",
         | 
| 1383 | 
            +
                    "science",
         | 
| 1384 | 
            +
                    "self_improvement",
         | 
| 1385 | 
            +
                    "sentiment_dissatisfied",
         | 
| 1386 | 
            +
                    "sentiment_satisfied",
         | 
| 1387 | 
            +
                    "sentiment_very_dissatisfied",
         | 
| 1388 | 
            +
                    "sentiment_very_satisfied",
         | 
| 1389 | 
            +
                    "share",
         | 
| 1390 | 
            +
                    "sick",
         | 
| 1391 | 
            +
                    "single_bed",
         | 
| 1392 | 
            +
                    "sports",
         | 
| 1393 | 
            +
                    "sports_baseball",
         | 
| 1394 | 
            +
                    "sports_basketball",
         | 
| 1395 | 
            +
                    "sports_cricket",
         | 
| 1396 | 
            +
                    "sports_esports",
         | 
| 1397 | 
            +
                    "sports_football",
         | 
| 1398 | 
            +
                    "sports_golf",
         | 
| 1399 | 
            +
                    "sports_handball",
         | 
| 1400 | 
            +
                    "sports_hockey",
         | 
| 1401 | 
            +
                    "sports_kabaddi",
         | 
| 1402 | 
            +
                    "sports_mma",
         | 
| 1403 | 
            +
                    "sports_motorsports",
         | 
| 1404 | 
            +
                    "sports_rugby",
         | 
| 1405 | 
            +
                    "sports_soccer",
         | 
| 1406 | 
            +
                    "sports_tennis",
         | 
| 1407 | 
            +
                    "sports_volleyball",
         | 
| 1408 | 
            +
                    "thumb_down_alt",
         | 
| 1409 | 
            +
                    "thumb_up_alt",
         | 
| 1410 | 
            +
                    "whatshot"
         | 
| 1411 | 
            +
                  ]
         | 
| 1412 | 
            +
                },
         | 
| 1413 | 
            +
                {
         | 
| 1414 | 
            +
                  "title": "toggle",
         | 
| 1415 | 
            +
                  "icons": [
         | 
| 1416 | 
            +
                    "check_box",
         | 
| 1417 | 
            +
                    "check_box_outline_blank",
         | 
| 1418 | 
            +
                    "indeterminate_check_box",
         | 
| 1419 | 
            +
                    "radio_button_checked",
         | 
| 1420 | 
            +
                    "radio_button_unchecked",
         | 
| 1421 | 
            +
                    "star",
         | 
| 1422 | 
            +
                    "star_border",
         | 
| 1423 | 
            +
                    "star_half",
         | 
| 1424 | 
            +
                    "star_outline",
         | 
| 1425 | 
            +
                    "toggle_off",
         | 
| 1426 | 
            +
                    "toggle_on"
         | 
| 1427 | 
            +
                  ]
         | 
| 1428 | 
            +
                }
         | 
| 1429 | 
            +
              ]
         | 
| 1430 | 
            +
             | 
| 1431 | 
            +
              categories.each do |category|
         | 
| 1432 | 
            +
                scroll.h3 text: category[:title]
         | 
| 1433 | 
            +
                scroll.spacer height: 6
         | 
| 1434 | 
            +
             | 
| 1435 | 
            +
                icon_names = category[:icons]
         | 
| 1436 | 
            +
                icon_names.each do |icon_name|
         | 
| 1437 | 
            +
                  scroll.panels_column lg: { cols: 4 }, childViews: ->(column) do
         | 
| 1438 | 
            +
                    column.panels_horizontal align: 'middle', childViews: ->(horizontal) do
         | 
| 1439 | 
            +
                      horizontal.icon spec: icon_name
         | 
| 1440 | 
            +
                      horizontal.spacer width: 6
         | 
| 1441 | 
            +
                      horizontal.label text: icon_name
         | 
| 1442 | 
            +
             | 
| 1443 | 
            +
                      # horizontal.button icon: icon_name, text: icon_name
         | 
| 1444 | 
            +
                    end
         | 
| 1445 | 
            +
                  end
         | 
| 1446 | 
            +
                end
         | 
| 1447 | 
            +
             | 
| 1448 | 
            +
                scroll.spacer height: 20
         | 
| 1449 | 
            +
              end
         | 
| 1450 | 
            +
            end
         |