From 11018f613b4e87073fca48448caa1cdde687f7ac Mon Sep 17 00:00:00 2001 From: Daniel Ziltener Date: Sun, 31 May 2020 14:26:20 +0200 Subject: [PATCH] In the beginning there was darkness --- .gitignore | 6 + README.adoc | 134 ++ deps.edn | 12 + package-lock.json | 1358 +++++++++++++++++ package.json | 28 + resources/public/index.html | 18 + shadow-cljs.edn | 10 + src/dev/user.clj | 117 ++ .../lyrion/carbon/accordion/ui_accordion.cljs | 13 + .../carbon/accordion/ui_accordion_item.cljs | 19 + .../accordion/ui_accordion_skeleton.cljs | 15 + .../carbon/breadcrumb/ui_breadcrumb.cljs | 14 + .../carbon/breadcrumb/ui_breadcrumb_item.cljs | 14 + .../breadcrumb/ui_breadcrumb_skeleton.cljs | 11 + .../ch/lyrion/carbon/button/ui_button.cljs | 33 + .../carbon/button/ui_button_skeleton.cljs | 13 + .../lyrion/carbon/checkbox/ui_checkbox.cljs | 23 + .../carbon/checkbox/ui_checkbox_skeleton.cljs | 11 + .../carbon/code-snippet/ui_code_snippet.cljs | 27 + .../ui_code_snippet_skeleton.cljs | 12 + .../lyrion/carbon/combo-box/ui_combo_box.cljs | 50 + .../composed-modal/ui_composed_modal.cljs | 20 + .../content-switcher/ui_content_switcher.cljs | 16 + .../carbon/copy-button/ui_copy_button.cljs | 18 + src/main/ch/lyrion/carbon/copy/ui_copy.cljs | 17 + .../danger-button/ui_danger_button.cljs | 10 + .../ui_data_table_skeleton.cljs | 17 + .../carbon/data-table/ui_data_table.cljs | 39 + .../ch/lyrion/carbon/data-table/ui_table.cljs | 18 + .../data-table/ui_table_batch_action.cljs | 14 + .../data-table/ui_table_batch_actions.cljs | 26 + .../carbon/data-table/ui_table_body.cljs | 13 + .../carbon/data-table/ui_table_container.cljs | 14 + .../data-table/ui_table_expand_header.cljs | 18 + .../data-table/ui_table_expand_row.cljs | 19 + .../data-table/ui_table_expanded_row.cljs | 13 + .../carbon/data-table/ui_table_header.cljs | 44 + .../carbon/data-table/ui_table_row.cljs | 11 + .../data-table/ui_table_select_all.cljs | 17 + .../data-table/ui_table_select_row.cljs | 18 + .../carbon/data-table/ui_table_toolbar.cljs | 13 + .../data-table/ui_table_toolbar_action.cljs | 13 + .../data-table/ui_table_toolbar_menu.cljs | 14 + .../data-table/ui_table_toolbar_search.cljs | 24 + .../ui_date_picker_input.cljs | 22 + .../carbon/date-picker/ui_date_picker.cljs | 78 + .../date-picker/ui_date_picker_skeleton.cljs | 12 + .../lyrion/carbon/dropdown/ui_dropdown.cljs | 45 + .../carbon/dropdown/ui_dropdown_skeleton.cljs | 12 + .../error-boundary/ui_error_boundary.cljs | 27 + .../ch/lyrion/carbon/factory_helpers.cljs | 16 + .../file-uploader/ui_file_uploader.cljs | 29 + .../ui_file_uploader_button.cljs | 31 + .../ui_file_uploader_drop_container.cljs | 22 + .../file-uploader/ui_file_uploader_item.cljs | 19 + .../ui_file_uploader_skeleton.cljs | 11 + .../carbon/file-uploader/ui_filename.cljs | 13 + .../carbon/fluid-form/ui_fluid_form.cljs | 12 + .../carbon/form-group/ui_form_group.cljs | 16 + .../lyrion/carbon/form-item/ui_form_item.cljs | 12 + .../carbon/form-label/ui_form_label.cljs | 13 + src/main/ch/lyrion/carbon/form/ui_form.cljs | 12 + src/main/ch/lyrion/carbon/grid/ui_column.cljs | 33 + src/main/ch/lyrion/carbon/grid/ui_grid.cljs | 16 + src/main/ch/lyrion/carbon/grid/ui_row.cljs | 15 + src/main/ch/lyrion/carbon/icon/ui_icon.cljs | 22 + .../lyrion/carbon/icon/ui_icon_skeleton.cljs | 12 + .../inline-loading/ui_inline_loading.cljs | 18 + src/main/ch/lyrion/carbon/link/ui_link.cljs | 16 + .../lyrion/carbon/list-box/ui_list_box.cljs | 18 + .../carbon/list-box/ui_list_box_field.cljs | 17 + .../carbon/list-box/ui_list_box_menu.cljs | 15 + .../list-box/ui_list_box_menu_icon.cljs | 17 + .../list-box/ui_list_box_menu_item.cljs | 17 + .../list-box/ui_list_box_selection.cljs | 25 + .../lyrion/carbon/list-item/ui_list_item.cljs | 12 + .../ch/lyrion/carbon/loading/ui_loading.cljs | 16 + .../modal-wrapper/ui_modal_wrapper.cljs | 32 + src/main/ch/lyrion/carbon/modal/ui_modal.cljs | 42 + .../ui_filterable_multi_select.cljs | 41 + .../carbon/multi-select/ui_multi_select.cljs | 42 + .../notification/ui_a11y_warning_icon.cljs | 10 + .../ui_notification_action_button.cljs | 13 + .../ui_number_input_skeleton.cljs | 12 + .../carbon/ordered-list/ui_ordered_list.cljs | 13 + .../ui_overflow_menu_item.cljs | 29 + .../carbon/pagination/ui_pagination.cljs | 30 + .../pagination/ui_pagination_skeleton.cljs | 11 + .../primary-button/ui_primary_button.cljs | 10 + .../ui_progress_indicator_skeleton.cljs | 11 + .../progress-indicator/ui_progress_step.cljs | 27 + .../ui_radio_button_group.cljs | 20 + .../ui_radio_button_skeleton.cljs | 11 + .../carbon/radio-tile/ui_radio_tile.cljs | 20 + .../ui_search_filter_button.cljs | 13 + .../ui_search_layout_button.cljs | 16 + .../ch/lyrion/carbon/search/ui_search.cljs | 24 + .../carbon/search/ui_search_skeleton.cljs | 12 + .../secondary-button/ui_secondary_button.cljs | 10 + .../ui_select_item_group.cljs | 14 + .../carbon/select-item/ui_select_item.cljs | 15 + .../ch/lyrion/carbon/select/ui_select.cljs | 29 + .../carbon/select/ui_select_skeleton.cljs | 12 + .../ui_skeleton_placeholder.cljs | 11 + .../skeleton-text/ui_skeleton_text.cljs | 15 + .../ch/lyrion/carbon/slider/ui_slider.cljs | 33 + .../carbon/slider/ui_slider_skeleton.cljs | 12 + .../ui_structured_list_skeleton.cljs | 13 + .../ui_structured_list_wrapper.cljs | 15 + .../ch/lyrion/carbon/switch/ui_switch.cljs | 20 + .../carbon/tab-content/ui_tab_content.cljs | 13 + src/main/ch/lyrion/carbon/tab/ui_tab.cljs | 28 + src/main/ch/lyrion/carbon/tabs/ui_tabs.cljs | 33 + .../lyrion/carbon/tabs/ui_tabs_skeleton.cljs | 11 + src/main/ch/lyrion/carbon/tag/ui_tag.cljs | 17 + .../ch/lyrion/carbon/tag/ui_tag_skeleton.cljs | 11 + .../lyrion/carbon/text-area/ui_text_area.cljs | 30 + .../text-area/ui_text_area_skeleton.cljs | 12 + .../ui_controlled_password_input.cljs | 34 + .../carbon/text-input/ui_password_input.cljs | 35 + .../carbon/text-input/ui_text_input.cljs | 29 + .../text-input/ui_text_input_skeleton.cljs | 12 + .../carbon/tile-group/ui_tile_group.cljs | 19 + src/main/ch/lyrion/carbon/tile/ui_tile.cljs | 14 + .../ui_time_picker_select.cljs | 20 + .../carbon/time-picker/ui_time_picker.cljs | 31 + .../carbon/toggle-small/ui_toggle_small.cljs | 19 + .../ui_toggle_small_skeleton.cljs | 17 + .../ch/lyrion/carbon/toggle/ui_toggle.cljs | 22 + .../carbon/toggle/ui_toggle_skeleton.cljs | 17 + .../toolbar-search/ui_toolbar_search.cljs | 19 + .../ch/lyrion/carbon/toolbar/ui_toolbar.cljs | 12 + .../ui_tooltip_definition.cljs | 20 + .../carbon/tooltip-icon/ui_tooltip_icon.cljs | 19 + .../ch/lyrion/carbon/ui-shell/ui_content.cljs | 13 + .../ch/lyrion/carbon/ui-shell/ui_header.cljs | 11 + .../carbon/ui-shell/ui_header_container.cljs | 11 + .../ui-shell/ui_header_global_action.cljs | 22 + .../carbon/ui-shell/ui_header_menu.cljs | 10 + .../ui-shell/ui_header_menu_button.cljs | 15 + .../carbon/ui-shell/ui_header_menu_item.cljs | 16 + .../carbon/ui-shell/ui_header_name.cljs | 16 + .../carbon/ui-shell/ui_header_navigation.cljs | 13 + .../carbon/ui-shell/ui_header_panel.cljs | 12 + .../ui-shell/ui_header_side_nav_items.cljs | 14 + .../ch/lyrion/carbon/ui-shell/ui_link.cljs | 18 + .../lyrion/carbon/ui-shell/ui_side_nav.cljs | 35 + .../carbon/ui-shell/ui_side_nav_details.cljs | 14 + .../carbon/ui-shell/ui_side_nav_footer.cljs | 20 + .../carbon/ui-shell/ui_side_nav_header.cljs | 15 + .../carbon/ui-shell/ui_side_nav_icon.cljs | 14 + .../carbon/ui-shell/ui_side_nav_item.cljs | 14 + .../carbon/ui-shell/ui_side_nav_items.cljs | 15 + .../carbon/ui-shell/ui_side_nav_link.cljs | 17 + .../ui-shell/ui_side_nav_link_text.cljs | 12 + .../carbon/ui-shell/ui_side_nav_menu.cljs | 10 + .../ui-shell/ui_side_nav_menu_item.cljs | 15 + .../carbon/ui-shell/ui_side_nav_switcher.cljs | 18 + .../carbon/ui-shell/ui_skip_to_content.cljs | 14 + .../lyrion/carbon/ui-shell/ui_switcher.cljs | 12 + .../carbon/ui-shell/ui_switcher_divider.cljs | 11 + .../carbon/ui-shell/ui_switcher_item.cljs | 12 + .../unordered-list/ui_unordered_list.cljs | 13 + .../ch/lyrion/carbon/workspaces/button.cljs | 58 + .../ch/lyrion/carbon/workspaces_main.cljs | 5 + 165 files changed, 4662 insertions(+) create mode 100644 .gitignore create mode 100644 README.adoc create mode 100644 deps.edn create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 resources/public/index.html create mode 100644 shadow-cljs.edn create mode 100644 src/dev/user.clj create mode 100644 src/main/ch/lyrion/carbon/accordion/ui_accordion.cljs create mode 100644 src/main/ch/lyrion/carbon/accordion/ui_accordion_item.cljs create mode 100644 src/main/ch/lyrion/carbon/accordion/ui_accordion_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/breadcrumb/ui_breadcrumb.cljs create mode 100644 src/main/ch/lyrion/carbon/breadcrumb/ui_breadcrumb_item.cljs create mode 100644 src/main/ch/lyrion/carbon/breadcrumb/ui_breadcrumb_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/button/ui_button.cljs create mode 100644 src/main/ch/lyrion/carbon/button/ui_button_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/checkbox/ui_checkbox.cljs create mode 100644 src/main/ch/lyrion/carbon/checkbox/ui_checkbox_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/code-snippet/ui_code_snippet.cljs create mode 100644 src/main/ch/lyrion/carbon/code-snippet/ui_code_snippet_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/combo-box/ui_combo_box.cljs create mode 100644 src/main/ch/lyrion/carbon/composed-modal/ui_composed_modal.cljs create mode 100644 src/main/ch/lyrion/carbon/content-switcher/ui_content_switcher.cljs create mode 100644 src/main/ch/lyrion/carbon/copy-button/ui_copy_button.cljs create mode 100644 src/main/ch/lyrion/carbon/copy/ui_copy.cljs create mode 100644 src/main/ch/lyrion/carbon/danger-button/ui_danger_button.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table-skeleton/ui_data_table_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_data_table.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_batch_action.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_batch_actions.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_body.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_container.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_expand_header.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_expand_row.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_expanded_row.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_header.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_row.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_select_all.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_select_row.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_toolbar.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_toolbar_action.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_toolbar_menu.cljs create mode 100644 src/main/ch/lyrion/carbon/data-table/ui_table_toolbar_search.cljs create mode 100644 src/main/ch/lyrion/carbon/date-picker-input/ui_date_picker_input.cljs create mode 100644 src/main/ch/lyrion/carbon/date-picker/ui_date_picker.cljs create mode 100644 src/main/ch/lyrion/carbon/date-picker/ui_date_picker_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/dropdown/ui_dropdown.cljs create mode 100644 src/main/ch/lyrion/carbon/dropdown/ui_dropdown_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/error-boundary/ui_error_boundary.cljs create mode 100644 src/main/ch/lyrion/carbon/factory_helpers.cljs create mode 100644 src/main/ch/lyrion/carbon/file-uploader/ui_file_uploader.cljs create mode 100644 src/main/ch/lyrion/carbon/file-uploader/ui_file_uploader_button.cljs create mode 100644 src/main/ch/lyrion/carbon/file-uploader/ui_file_uploader_drop_container.cljs create mode 100644 src/main/ch/lyrion/carbon/file-uploader/ui_file_uploader_item.cljs create mode 100644 src/main/ch/lyrion/carbon/file-uploader/ui_file_uploader_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/file-uploader/ui_filename.cljs create mode 100644 src/main/ch/lyrion/carbon/fluid-form/ui_fluid_form.cljs create mode 100644 src/main/ch/lyrion/carbon/form-group/ui_form_group.cljs create mode 100644 src/main/ch/lyrion/carbon/form-item/ui_form_item.cljs create mode 100644 src/main/ch/lyrion/carbon/form-label/ui_form_label.cljs create mode 100644 src/main/ch/lyrion/carbon/form/ui_form.cljs create mode 100644 src/main/ch/lyrion/carbon/grid/ui_column.cljs create mode 100644 src/main/ch/lyrion/carbon/grid/ui_grid.cljs create mode 100644 src/main/ch/lyrion/carbon/grid/ui_row.cljs create mode 100644 src/main/ch/lyrion/carbon/icon/ui_icon.cljs create mode 100644 src/main/ch/lyrion/carbon/icon/ui_icon_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/inline-loading/ui_inline_loading.cljs create mode 100644 src/main/ch/lyrion/carbon/link/ui_link.cljs create mode 100644 src/main/ch/lyrion/carbon/list-box/ui_list_box.cljs create mode 100644 src/main/ch/lyrion/carbon/list-box/ui_list_box_field.cljs create mode 100644 src/main/ch/lyrion/carbon/list-box/ui_list_box_menu.cljs create mode 100644 src/main/ch/lyrion/carbon/list-box/ui_list_box_menu_icon.cljs create mode 100644 src/main/ch/lyrion/carbon/list-box/ui_list_box_menu_item.cljs create mode 100644 src/main/ch/lyrion/carbon/list-box/ui_list_box_selection.cljs create mode 100644 src/main/ch/lyrion/carbon/list-item/ui_list_item.cljs create mode 100644 src/main/ch/lyrion/carbon/loading/ui_loading.cljs create mode 100644 src/main/ch/lyrion/carbon/modal-wrapper/ui_modal_wrapper.cljs create mode 100644 src/main/ch/lyrion/carbon/modal/ui_modal.cljs create mode 100644 src/main/ch/lyrion/carbon/multi-select/ui_filterable_multi_select.cljs create mode 100644 src/main/ch/lyrion/carbon/multi-select/ui_multi_select.cljs create mode 100644 src/main/ch/lyrion/carbon/notification/ui_a11y_warning_icon.cljs create mode 100644 src/main/ch/lyrion/carbon/notification/ui_notification_action_button.cljs create mode 100644 src/main/ch/lyrion/carbon/number-input/ui_number_input_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/ordered-list/ui_ordered_list.cljs create mode 100644 src/main/ch/lyrion/carbon/overflow-menu-item/ui_overflow_menu_item.cljs create mode 100644 src/main/ch/lyrion/carbon/pagination/ui_pagination.cljs create mode 100644 src/main/ch/lyrion/carbon/pagination/ui_pagination_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/primary-button/ui_primary_button.cljs create mode 100644 src/main/ch/lyrion/carbon/progress-indicator/ui_progress_indicator_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/progress-indicator/ui_progress_step.cljs create mode 100644 src/main/ch/lyrion/carbon/radio-button-group/ui_radio_button_group.cljs create mode 100644 src/main/ch/lyrion/carbon/radio-button/ui_radio_button_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/radio-tile/ui_radio_tile.cljs create mode 100644 src/main/ch/lyrion/carbon/search-filter-button/ui_search_filter_button.cljs create mode 100644 src/main/ch/lyrion/carbon/search-layout-button/ui_search_layout_button.cljs create mode 100644 src/main/ch/lyrion/carbon/search/ui_search.cljs create mode 100644 src/main/ch/lyrion/carbon/search/ui_search_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/secondary-button/ui_secondary_button.cljs create mode 100644 src/main/ch/lyrion/carbon/select-item-group/ui_select_item_group.cljs create mode 100644 src/main/ch/lyrion/carbon/select-item/ui_select_item.cljs create mode 100644 src/main/ch/lyrion/carbon/select/ui_select.cljs create mode 100644 src/main/ch/lyrion/carbon/select/ui_select_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/skeleton-placeholder/ui_skeleton_placeholder.cljs create mode 100644 src/main/ch/lyrion/carbon/skeleton-text/ui_skeleton_text.cljs create mode 100644 src/main/ch/lyrion/carbon/slider/ui_slider.cljs create mode 100644 src/main/ch/lyrion/carbon/slider/ui_slider_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/structured-list/ui_structured_list_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/structured-list/ui_structured_list_wrapper.cljs create mode 100644 src/main/ch/lyrion/carbon/switch/ui_switch.cljs create mode 100644 src/main/ch/lyrion/carbon/tab-content/ui_tab_content.cljs create mode 100644 src/main/ch/lyrion/carbon/tab/ui_tab.cljs create mode 100644 src/main/ch/lyrion/carbon/tabs/ui_tabs.cljs create mode 100644 src/main/ch/lyrion/carbon/tabs/ui_tabs_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/tag/ui_tag.cljs create mode 100644 src/main/ch/lyrion/carbon/tag/ui_tag_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/text-area/ui_text_area.cljs create mode 100644 src/main/ch/lyrion/carbon/text-area/ui_text_area_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/text-input/ui_controlled_password_input.cljs create mode 100644 src/main/ch/lyrion/carbon/text-input/ui_password_input.cljs create mode 100644 src/main/ch/lyrion/carbon/text-input/ui_text_input.cljs create mode 100644 src/main/ch/lyrion/carbon/text-input/ui_text_input_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/tile-group/ui_tile_group.cljs create mode 100644 src/main/ch/lyrion/carbon/tile/ui_tile.cljs create mode 100644 src/main/ch/lyrion/carbon/time-picker-select/ui_time_picker_select.cljs create mode 100644 src/main/ch/lyrion/carbon/time-picker/ui_time_picker.cljs create mode 100644 src/main/ch/lyrion/carbon/toggle-small/ui_toggle_small.cljs create mode 100644 src/main/ch/lyrion/carbon/toggle-small/ui_toggle_small_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/toggle/ui_toggle.cljs create mode 100644 src/main/ch/lyrion/carbon/toggle/ui_toggle_skeleton.cljs create mode 100644 src/main/ch/lyrion/carbon/toolbar-search/ui_toolbar_search.cljs create mode 100644 src/main/ch/lyrion/carbon/toolbar/ui_toolbar.cljs create mode 100644 src/main/ch/lyrion/carbon/tooltip-definition/ui_tooltip_definition.cljs create mode 100644 src/main/ch/lyrion/carbon/tooltip-icon/ui_tooltip_icon.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_content.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header_container.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header_global_action.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header_menu.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header_menu_button.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header_menu_item.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header_name.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header_navigation.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header_panel.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_header_side_nav_items.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_link.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_details.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_footer.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_header.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_icon.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_item.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_items.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_link.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_link_text.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_menu.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_menu_item.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_side_nav_switcher.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_skip_to_content.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_switcher.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_switcher_divider.cljs create mode 100644 src/main/ch/lyrion/carbon/ui-shell/ui_switcher_item.cljs create mode 100644 src/main/ch/lyrion/carbon/unordered-list/ui_unordered_list.cljs create mode 100644 src/workspaces/ch/lyrion/carbon/workspaces/button.cljs create mode 100644 src/workspaces/ch/lyrion/carbon/workspaces_main.cljs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f0ade7f --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.js +.nrepl-port +.shadow-cljs +.cpcache +resources/public/js +node_modules diff --git a/README.adoc b/README.adoc new file mode 100644 index 0000000..9191ccf --- /dev/null +++ b/README.adoc @@ -0,0 +1,134 @@ +:toc: +:toc-placement: preamble +:toc-levels: 2 + += Fulcro 3 Carbon Wrappers + +Fulcro 3 convenience wrappers for using https://react.carbondesignsystem.com[Carbon Design System] components. + +This library offers improved integration with the carbon design system packages with predefined +factories and doc strings generated directly from the Carbon source. It also includes symbols for +all icon names. + +NOTE: This library requires that you use Fulcro 3 and Shadow CLJS as the compiler. + +image::https://img.shields.io/clojars/v/ch.lyrion/carbon-wrapper.svg[link="https://clojars.org/ch.lyrion/carbon-wrapper"] + +== Usage + +Shadow-cljs has much better integration with the NPM ecosystem, which allows you to +easily upgrade your carbon dependency without worrying about cljsjs, and also +allows you to easily use individual components for a smaller build size. Simply add +the carbon components to your `package.json`: + +``` +$ npm install --save-dev carbon-components-react carbon-components carbon-icons +``` + +=== Using Components + +Individual factories can be found in namespaces that mirror the carbon-react module structure: + +e.g. `Grid > Row` is available as +``` +(:require [ch.lyrion.carbon.grid.ui-row :refer [ui-row]]) +``` + +and `Accordion > Accordion` is available as +``` +(:require [ch.lyrion.carbon.accordion.ui-accordion :refer [ui-accordion]]) +``` + +While this is a bit tedious in the requires, it ensures that you don't get components in your +build that you don't use. + +== Porting from Carbon React Documentation Examples + +Props are required. The factories will convert them to js for you, but if you want every ounce of +possible speed you can pre-tag your props with `#js`. + +React Version: +``` + + + + Breadcrumb 1 + + + + Breadcrumb 2 + + + Breadcrumb 3 + + +``` + +This library: + +``` +(ui-breadcrumb +{:className "some-class" + :noTrailingSlash true + :onClick (fn [] nil) + :children [ + (ui-breadcrumb-item + (dom/a {:href "/#"} "Breadcrumb 1")) + (ui-breadcrumb-item + "Breadcrumb 2") + (ui-breadcrumb-item + {:aria-current "page" + :href "#"} + "Breadcrumb 3") + ]}) +``` + + +== Examples + +You can see some example usage in the workspaces of this repository. To play with them live +clone this repo, and start the compiler: + +``` +cd carbon-wrapper +npm install +npx shadow-cljs server +``` +Navigate to http://localhost:9000 and start the workspaces build + +Then navigate to http://localhost:8023 + +== Regenerating Factories + +The factory files are generated from a checkout of the (https://github.com/carbon-design-system/carbon)[Carbon] +source (to automatically get the docstrings). The `user` namespace can be run in a normal Clojure REPL, and +contains the function to generate the files. + +First clone the semantic-ui-react repo: +``` +git clone https://github.com/carbon-design-system/carbon +``` + +In the cloned repository, run: +``` +yarn install +yarn build +``` + +Then using the path to the generated packages/react/build/docgen/components folder, start a repl and run +``` +(gen-factories "path/to/generated/docgen/components") +``` + +== LICENSE + +Copyright 2020 Daniel Ziltener + +MIT Public License diff --git a/deps.edn b/deps.edn new file mode 100644 index 0000000..afeecbc --- /dev/null +++ b/deps.edn @@ -0,0 +1,12 @@ +{:paths ["src/main"] + :deps {} + :aliases {:outdated {:extra-deps {olical/depot {:mvn/version "1.8.4"} + org.clojure/tools.namespace {:mvn/version "1.0.0"}} + :main-opts ["-m" "depot.outdated.main" "-a" "outdated"]} + :dev {:extra-paths ["src/workspaces" "src/dev"] + :extra-deps {org.clojure/clojure {:mvn/version "1.10.1" :scope "provided"} + org.clojure/clojurescript {:mvn/version "1.10.773" :scope "provided"} + org.clojure/data.json {:mvn/version "1.0.0"} + com.fulcrologic/fulcro {:mvn/version "3.2.9" :scope "provided"} + thheller/shadow-cljs {:mvn/version "2.9.10"} + nubank/workspaces {:mvn/version "1.0.15"}}}}} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..12b0d11 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1358 @@ +{ + "name": "fulcro3-carbon-wrappers", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@carbon/icon-helpers": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/@carbon/icon-helpers/-/icon-helpers-10.7.0.tgz", + "integrity": "sha512-zIswRvP4JyZOq7+4A4/ro7K05xVNid/+HxBOSM1ApuqcXg1e1Vl9fg37+rGY/in9v7vVgsmA8s5Arlx1mJzPIw==", + "dev": true + }, + "@carbon/icons-react": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/@carbon/icons-react/-/icons-react-10.11.0.tgz", + "integrity": "sha512-v1jZaQriW203wSlq7QdcILIuaVSsmo74asfe0MSa9nod4FqEb+sD6GHe85fgOoFnqvHKrJ+U1CSH/xd1GVC9xw==", + "dev": true, + "requires": { + "@carbon/icon-helpers": "^10.7.0" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, + "carbon-components": { + "version": "10.12.0", + "resolved": "https://registry.npmjs.org/carbon-components/-/carbon-components-10.12.0.tgz", + "integrity": "sha512-QPP4f6/11Buwtz+3JW/2wQKKL1QY6GZ3WIxfifpK2MyjhO8NW4LrYrLsbcwFr4kYQ6Aph18b8sHY21T61zaYLQ==", + "dev": true, + "requires": { + "flatpickr": "4.6.1", + "lodash.debounce": "^4.0.8", + "warning": "^3.0.0" + } + }, + "carbon-components-react": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/carbon-components-react/-/carbon-components-react-7.12.0.tgz", + "integrity": "sha512-zsVD9/Dh8Rgl9LOO7vltS8AXj14eCbmSddQrDMkHeq5JSpQWtIqUAI7A7sT2uAhmowi1hk8d0BAroyGzhLHzAg==", + "dev": true, + "requires": { + "@carbon/icons-react": "^10.11.0", + "classnames": "2.2.6", + "downshift": "^1.31.14", + "flatpickr": "4.6.1", + "invariant": "^2.2.3", + "lodash.debounce": "^4.0.8", + "lodash.findlast": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.omit": "^4.5.0", + "lodash.throttle": "^4.1.1", + "react-is": "^16.8.6", + "use-resize-observer": "^6.0.0", + "warning": "^3.0.0", + "window-or-global": "^1.0.1" + } + }, + "carbon-icons": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/carbon-icons/-/carbon-icons-7.0.7.tgz", + "integrity": "sha512-3vgkdXJRgCViCrH3fLUdyAXo0I8wmohO6QETv7vWFx6yc7s+SirWFBSFL38zUx4MHtR8iTxIlLEzkeU6FlFtXg==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "constate": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/constate/-/constate-0.7.2.tgz", + "integrity": "sha512-7J/xUmvqd8eTnauCJDxgJ9Z0e7MsYa3Ua/zc0zM5/fgZF5KvSeN5VZ88T7RE/FcOkJ1/YHr9/+2jhoM+kX3Z+Q==" + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + }, + "css-to-react-native": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz", + "integrity": "sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^3.3.0" + } + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "downshift": { + "version": "1.31.16", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-1.31.16.tgz", + "integrity": "sha512-RskXmiGSoz0EHAyBrmTBGSLHg6+NYDGuLu2W3GpmuOe6hmZEWhCiQrq5g6DWzhnUaJD41xHbbfC6j1Fe86YqgA==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "flatpickr": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.1.tgz", + "integrity": "sha512-3ULSxbXmcMIRzer/2jLNweoqHpwDvsjEawO2FUd9UFR8uPwLM+LruZcPDpuZStcEgbQKhuFOfXo4nYdGladSNw==", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } + } + }, + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash-es": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.findlast": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.findlast/-/lodash.findlast-4.6.0.tgz", + "integrity": "sha1-6ou3jPLn54BPyK630ZU+B/4x+8g=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=", + "dev": true + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-draggable": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.2.tgz", + "integrity": "sha512-oaz8a6enjbPtx5qb0oDWxtDNuybOylvto1QLydsXgKmwT7e3GXC2eMVDwEMIUYJIFqVG72XpOv673UuuAq6LhA==", + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.6.0" + } + }, + "react-grid-layout": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/react-grid-layout/-/react-grid-layout-0.16.6.tgz", + "integrity": "sha512-h2EsYgsqcESLJeevQSJsEKp8hhh+phOlXDJoMhlV2e7T3VWQL+S6iCF3iD/LK19r4oyRyOMDEir0KV+eLXrAyw==", + "requires": { + "classnames": "2.x", + "lodash.isequal": "^4.0.0", + "prop-types": "15.x", + "react-draggable": "3.x", + "react-resizable": "1.x" + } + }, + "react-icon-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-icon-base/-/react-icon-base-2.1.0.tgz", + "integrity": "sha1-oZbjP98eeqof2jrvu2i9rZ6Cp50=" + }, + "react-icons": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-2.2.7.tgz", + "integrity": "sha512-0n4lcGqzJFcIQLoQytLdJCE0DKSA9dkwEZRYoGrIDJZFvIT6Hbajx5mv9geqhqFiNjUgtxg8kPyDfjlhymbGFg==", + "requires": { + "react-icon-base": "2.1.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-known-props": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/react-known-props/-/react-known-props-2.4.4.tgz", + "integrity": "sha512-PztIDhqco0TF8DfEbHyrh70yUf0cl/U8jBkr8AOvzbBcPWY5sD7Leo2p4U6GCJK9t7q5gfr+V+837pPZSGnXvQ==" + }, + "react-resizable": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/react-resizable/-/react-resizable-1.10.1.tgz", + "integrity": "sha512-Jd/bKOKx6+19NwC4/aMLRu/J9/krfxlDnElP41Oc+oLiUWs/zwV1S9yBfBZRnqAwQb6vQ/HRSk3bsSWGSgVbpw==", + "requires": { + "prop-types": "15.x", + "react-draggable": "^4.0.3" + }, + "dependencies": { + "react-draggable": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.2.tgz", + "integrity": "sha512-zLQs4R4bnBCGnCVTZiD8hPsHtkiJxgMpGDlRESM+EHQo8ysXhKJ2GKdJ8UxxLJdRVceX1j19jy+hQS2wHislPQ==", + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.6.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "dev": true + }, + "reakit": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/reakit/-/reakit-0.11.1.tgz", + "integrity": "sha512-/tE5d3XrlNWh264EFOsfwC67ePCoM7oxRN/KO2ga1+R1woYOvyCy/HhTOIsmDghaZYyAGOe7pvQ2UMvsjVy8PQ==", + "requires": { + "constate": "^0.7.0", + "hoist-non-react-statics": "^2.5.5", + "lodash": "^4.17.5", + "lodash-es": "^4.17.5", + "react-known-props": "^2.3.1", + "styled-components": "^3.3.3", + "styled-tools": "^0.6.0" + } + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "dev": true + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shadow-cljs": { + "version": "2.9.10", + "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.9.10.tgz", + "integrity": "sha512-LfgqHJMpYQkQey33lqdX2QW7Y6tKJGb3ye4MlYtz5Z2mHvAYEsd9WttMUXchn26bItZ1gBuESshbirUJ5gaUIA==", + "dev": true, + "requires": { + "node-libs-browser": "^2.0.0", + "readline-sync": "^1.4.7", + "shadow-cljs-jar": "1.3.2", + "source-map-support": "^0.4.15", + "which": "^1.3.1", + "ws": "^3.0.0" + } + }, + "shadow-cljs-jar": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz", + "integrity": "sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "styled-components": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.4.10.tgz", + "integrity": "sha512-TA8ip8LoILgmSAFd3r326pKtXytUUGu5YWuqZcOQVwVVwB6XqUMn4MHW2IuYJ/HAD81jLrdQed8YWfLSG1LX4Q==", + "requires": { + "buffer": "^5.0.3", + "css-to-react-native": "^2.0.3", + "fbjs": "^0.8.16", + "hoist-non-react-statics": "^2.5.0", + "prop-types": "^15.5.4", + "react-is": "^16.3.1", + "stylis": "^3.5.0", + "stylis-rule-sheet": "^0.0.10", + "supports-color": "^3.2.3" + }, + "dependencies": { + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + } + } + }, + "styled-tools": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/styled-tools/-/styled-tools-0.6.2.tgz", + "integrity": "sha512-OYoVSOP5eZeDt9nltj3Te3sHFvtQTQo7QZUSyyZ0isDtTCvJrRBu89ByhRLytJnuvDFPvfrPCPgtg5dO5VGHbQ==", + "requires": { + "lodash": "^4.17.10" + } + }, + "stylis": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", + "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" + }, + "stylis-rule-sheet": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", + "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==" + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use-resize-observer": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-6.1.0.tgz", + "integrity": "sha512-SiPcWHiIQ1CnHmb6PxbYtygqiZXR0U9dNkkbpX9VYnlstUwF8+QqpUTrzh13pjPwcjMVGR+QIC+nvF5ujfFNng==", + "dev": true, + "requires": { + "resize-observer-polyfill": "^1.5.1" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "window-or-global": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/window-or-global/-/window-or-global-1.0.1.tgz", + "integrity": "sha1-2+RboqKRqrxW1iz2bEW3+jIpRt4=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4424ee8 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "fulcro3-carbon-wrappers", + "version": "1.0.0", + "description": "Carbon Design System Wrapper", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://gitea.lyrion.ch/zilti/carbon-wrapper.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://gitea.lyrion.ch/zilti/carbon-wrapper/issues" + }, + "homepage": "https://gitea.lyrion.ch/zilti/carbon-wrapper", + "devDependencies": { + "carbon-components": "^10.12.0", + "carbon-components-react": "^7.12.0", + "carbon-icons": "^7.0.7", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "shadow-cljs": "^2.9.10", + "highlight.js": "9.12.0", + "react-grid-layout": "0.16.6", + "react-icons": "2.2.7", + "reakit": "0.11.1" + } +} diff --git a/resources/public/index.html b/resources/public/index.html new file mode 100644 index 0000000..9499475 --- /dev/null +++ b/resources/public/index.html @@ -0,0 +1,18 @@ + + + + + + Template Devcards + + + + + + +
+ + + + diff --git a/shadow-cljs.edn b/shadow-cljs.edn new file mode 100644 index 0000000..cbf1e31 --- /dev/null +++ b/shadow-cljs.edn @@ -0,0 +1,10 @@ +{:deps {:aliases [:dev]} + :nrepl {:port 9000} + :builds {:workspaces {:target :browser + :output-dir "resources/public/js/workspaces" + :asset-path "/js/workspaces" + :devtools {:preloads [com.fulcrologic.fulcro.inspect.preload] + :http-root "resources/public" + :http-port 8023 + :http-resource-root "."} + :modules {:main {:entries [com.ibm.carbon.workspaces-main]}}}}} diff --git a/src/dev/user.clj b/src/dev/user.clj new file mode 100644 index 0000000..d4aefdd --- /dev/null +++ b/src/dev/user.clj @@ -0,0 +1,117 @@ +(ns user + (:require + [clojure.string :as str] + [clojure.data.json :as json] + [clojure.java.io :as io])) + +(defn gen-prop-docstring [prop {:keys [defaultValue type required description]}] + (let [prop (name prop) + required (if required " (required)" "") + type (format "(%s)" (:name type)) + description description + defaultValue (if defaultValue (format "Default: %s" (:value defaultValue)) "") + values (if (:value type) (format "Possible values: %s" (:value type)) "")] + (format " - %s %s%s: %s %s %s\n" prop type required description defaultValue values))) + +(defn gen-docstring [{:keys [description props]}] + (let [description (if-not (str/blank? description) (str description "\n") description) + props (reduce #(str %1 (gen-prop-docstring (key %2) (val %2))) + "Props:\n" + props)] + (str description props))) + +(defn quoted [s] (str "\"" s "\"")) +(defn escaped [s] (str/replace s "\"" "\\\"")) + +(defn hyphenated [camelCase] + (println "Hyphenating" camelCase) + (if (= "UIShell" camelCase) + "ui-shell" + (-> camelCase + (str/replace #"([A-Z])" "-$1") + (str/lower-case) + (str/replace #"^-" "")))) + +(def input-factory-classes + #{"Checkbox" + "ComboBox" + "FormInput" + "DropdownSearchInput" + "Search" + "TextArea" + "TextInput"}) + +(defn factory-helper [class] + (if (contains? input-factory-classes class) + "wrapped-factory-apply" + "factory-apply")) + +(defn gen-json [js] + (let [datasplit (str/split js #";\n") + match (first (filter #(re-find #".*__docgen.*" %) datasplit))] + (if-not (nil? match) + (json/read-str (apply str (drop-while #(not= % \{) match)) :key-fn keyword) + nil))) + +(defn guess-display-name [file display-name] + (if (nil? display-name) + (do (print "No display name found for" file "and thus will guess...") + (let [display-name (-> file + (str/replace #"\.js" "") + (str/replace #"\." ""))] + (println "Guessed name:" display-name) + display-name)) + display-name)) + +(defn gen-factory-map [dir] + (fn [{:keys [subdir file]}] + (println "Generating" subdir "/" file "...") + (if-let [{:keys [displayName description props] :as docs} (gen-json (slurp (str dir "/" subdir "/" file)))] + (let [displayName (guess-display-name file displayName) + class displayName + factory-name (str "ui-" (hyphenated class)) + filename (str "src/main/ch/lyrion/carbon/" (hyphenated subdir) "/" (str/replace factory-name #"-" "_") ".cljs") + nns (str "ch.lyrion.carbon." (hyphenated subdir) "." factory-name) + include-file (str "carbon-components-react/lib/components/" subdir "/" file) + docstring (gen-docstring docs)] + {:class class + :factory-name factory-name + :filename filename + :ns nns + :include-file include-file + :docstring docstring}) + nil))) + +(defn gen-component-filelist [dir] + (fn [subdir] + (let [path (str dir "/" subdir)] + (->> (seq (.list (io/file path))) + (remove #(or (= % "index.js") + (str/ends-with? % "-story.js") + (str/ends-with? % "-test.js") + (not (str/ends-with? % ".js")))) + (map #(identity {:subdir subdir + :file %})))))) + +(defn factory-ns-shadow [ns class factory-name include-file docstring] + (str "(ns " ns "\n" + " (:require\n" + " [ch.lyrion.carbon.factory-helpers :as h]\n" + " [\"" include-file "\" :default " class "]))\n\n" + "(def " factory-name "\n" + "\n" + (quoted (escaped docstring)) + "\n (h/" (factory-helper class) " " class "))")) + +(defn gen-factories [component-dir] + (let [modules (->> (seq (.list (io/file component-dir))) + (map (gen-component-filelist component-dir)) + flatten + (map (gen-factory-map component-dir)) + (remove nil?) + (sort-by :factory-name))] + (io/make-parents "src/main/ch/lyrion/carbon/factories.cljs") + (doseq [{:keys [filename ns class factory-name include-file filename docstring] :as m} modules] + (println "Generating" filename "...") + (io/make-parents filename) + (spit (io/as-file filename) (factory-ns-shadow ns class factory-name include-file docstring))))) diff --git a/src/main/ch/lyrion/carbon/accordion/ui_accordion.cljs b/src/main/ch/lyrion/carbon/accordion/ui_accordion.cljs new file mode 100644 index 0000000..0d35bfa --- /dev/null +++ b/src/main/ch/lyrion/carbon/accordion/ui_accordion.cljs @@ -0,0 +1,13 @@ +(ns ch.lyrion.carbon.accordion.ui-accordion + (:require + [ch.lyrion.carbon.factory-helpers :as h] + ["carbon-components-react/lib/components/Accordion/Accordion.js" :default Accordion])) + +(def ui-accordion + +"Props: + - align (enum): Specify the alignment of the accordion heading title and chevron. Default: 'end' + - children (node): Pass in the children that will be rendered within the Accordion + - className (string): Specify an optional className to be applied to the container node +" + (h/factory-apply Accordion)) \ No newline at end of file diff --git a/src/main/ch/lyrion/carbon/accordion/ui_accordion_item.cljs b/src/main/ch/lyrion/carbon/accordion/ui_accordion_item.cljs new file mode 100644 index 0000000..c511fe6 --- /dev/null +++ b/src/main/ch/lyrion/carbon/accordion/ui_accordion_item.cljs @@ -0,0 +1,19 @@ +(ns ch.lyrion.carbon.accordion.ui-accordion-item + (:require + [ch.lyrion.carbon.factory-helpers :as h] + ["carbon-components-react/lib/components/Accordion/AccordionItem.js" :default AccordionItem])) + +(def ui-accordion-item + +"Props: + - open (bool): `true` to open the expando. Default: false + - renderExpando (func): The callback function to render the expando button. +Can be a React component class. Default: props =>