├── .editorconfig ├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── avatar.jpg ├── index.html ├── package-lock.json ├── package.json ├── public └── favicon.ico ├── src ├── App.vue ├── assets │ ├── base.css │ ├── logo.svg │ └── main.css └── main.js └── vite.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | end_of_line = lf 4 | indent_size = 4 5 | indent_style = space 6 | insert_final_newline = false 7 | max_line_length = 120 8 | tab_width = 4 9 | ij_continuation_indent_size = 8 10 | ij_formatter_off_tag = @formatter:off 11 | ij_formatter_on_tag = @formatter:on 12 | ij_formatter_tags_enabled = true 13 | ij_smart_tabs = false 14 | ij_visual_guides = 15 | ij_wrap_on_typing = false 16 | 17 | [*.css] 18 | ij_css_align_closing_brace_with_properties = false 19 | ij_css_blank_lines_around_nested_selector = 1 20 | ij_css_blank_lines_between_blocks = 1 21 | ij_css_block_comment_add_space = false 22 | ij_css_brace_placement = end_of_line 23 | ij_css_enforce_quotes_on_format = false 24 | ij_css_hex_color_long_format = false 25 | ij_css_hex_color_lower_case = false 26 | ij_css_hex_color_short_format = false 27 | ij_css_hex_color_upper_case = false 28 | ij_css_keep_blank_lines_in_code = 2 29 | ij_css_keep_indents_on_empty_lines = false 30 | ij_css_keep_single_line_blocks = false 31 | ij_css_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 32 | ij_css_space_after_colon = true 33 | ij_css_space_before_opening_brace = true 34 | ij_css_use_double_quotes = true 35 | ij_css_value_alignment = do_not_align 36 | 37 | [*.feature] 38 | indent_size = 2 39 | ij_gherkin_keep_indents_on_empty_lines = false 40 | 41 | [*.less] 42 | indent_size = 2 43 | ij_less_align_closing_brace_with_properties = false 44 | ij_less_blank_lines_around_nested_selector = 1 45 | ij_less_blank_lines_between_blocks = 1 46 | ij_less_block_comment_add_space = false 47 | ij_less_brace_placement = 0 48 | ij_less_enforce_quotes_on_format = false 49 | ij_less_hex_color_long_format = false 50 | ij_less_hex_color_lower_case = false 51 | ij_less_hex_color_short_format = false 52 | ij_less_hex_color_upper_case = false 53 | ij_less_keep_blank_lines_in_code = 2 54 | ij_less_keep_indents_on_empty_lines = false 55 | ij_less_keep_single_line_blocks = false 56 | ij_less_line_comment_add_space = false 57 | ij_less_line_comment_at_first_column = false 58 | ij_less_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 59 | ij_less_space_after_colon = true 60 | ij_less_space_before_opening_brace = true 61 | ij_less_use_double_quotes = true 62 | ij_less_value_alignment = 0 63 | 64 | [*.sass] 65 | indent_size = 2 66 | ij_sass_align_closing_brace_with_properties = false 67 | ij_sass_blank_lines_around_nested_selector = 1 68 | ij_sass_blank_lines_between_blocks = 1 69 | ij_sass_brace_placement = 0 70 | ij_sass_enforce_quotes_on_format = false 71 | ij_sass_hex_color_long_format = false 72 | ij_sass_hex_color_lower_case = false 73 | ij_sass_hex_color_short_format = false 74 | ij_sass_hex_color_upper_case = false 75 | ij_sass_keep_blank_lines_in_code = 2 76 | ij_sass_keep_indents_on_empty_lines = false 77 | ij_sass_keep_single_line_blocks = false 78 | ij_sass_line_comment_add_space = false 79 | ij_sass_line_comment_at_first_column = false 80 | ij_sass_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 81 | ij_sass_space_after_colon = true 82 | ij_sass_space_before_opening_brace = true 83 | ij_sass_use_double_quotes = true 84 | ij_sass_value_alignment = 0 85 | 86 | [*.scss] 87 | indent_size = 2 88 | ij_scss_align_closing_brace_with_properties = false 89 | ij_scss_blank_lines_around_nested_selector = 1 90 | ij_scss_blank_lines_between_blocks = 1 91 | ij_scss_block_comment_add_space = false 92 | ij_scss_brace_placement = 0 93 | ij_scss_enforce_quotes_on_format = false 94 | ij_scss_hex_color_long_format = false 95 | ij_scss_hex_color_lower_case = false 96 | ij_scss_hex_color_short_format = false 97 | ij_scss_hex_color_upper_case = false 98 | ij_scss_keep_blank_lines_in_code = 2 99 | ij_scss_keep_indents_on_empty_lines = false 100 | ij_scss_keep_single_line_blocks = false 101 | ij_scss_line_comment_add_space = false 102 | ij_scss_line_comment_at_first_column = false 103 | ij_scss_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow 104 | ij_scss_space_after_colon = true 105 | ij_scss_space_before_opening_brace = true 106 | ij_scss_use_double_quotes = true 107 | ij_scss_value_alignment = 0 108 | 109 | [*.vue] 110 | indent_size = 2 111 | tab_width = 2 112 | ij_continuation_indent_size = 4 113 | ij_vue_indent_children_of_top_level = template 114 | ij_vue_interpolation_new_line_after_start_delimiter = true 115 | ij_vue_interpolation_new_line_before_end_delimiter = true 116 | ij_vue_interpolation_wrap = off 117 | ij_vue_keep_indents_on_empty_lines = false 118 | ij_vue_spaces_within_interpolation_expressions = true 119 | 120 | [.editorconfig] 121 | ij_editorconfig_align_group_field_declarations = false 122 | ij_editorconfig_space_after_colon = false 123 | ij_editorconfig_space_after_comma = true 124 | ij_editorconfig_space_before_colon = false 125 | ij_editorconfig_space_before_comma = false 126 | ij_editorconfig_spaces_around_assignment_operators = true 127 | 128 | [{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.rng,*.tld,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul}] 129 | ij_xml_align_attributes = true 130 | ij_xml_align_text = false 131 | ij_xml_attribute_wrap = normal 132 | ij_xml_block_comment_add_space = false 133 | ij_xml_block_comment_at_first_column = true 134 | ij_xml_keep_blank_lines = 2 135 | ij_xml_keep_indents_on_empty_lines = false 136 | ij_xml_keep_line_breaks = true 137 | ij_xml_keep_line_breaks_in_text = true 138 | ij_xml_keep_whitespaces = false 139 | ij_xml_keep_whitespaces_around_cdata = preserve 140 | ij_xml_keep_whitespaces_inside_cdata = false 141 | ij_xml_line_comment_at_first_column = true 142 | ij_xml_space_after_tag_name = false 143 | ij_xml_space_around_equals_in_attribute = false 144 | ij_xml_space_inside_empty_tag = false 145 | ij_xml_text_wrap = normal 146 | 147 | [{*.ats,*.cts,*.mts,*.ts}] 148 | ij_continuation_indent_size = 4 149 | ij_typescript_align_imports = false 150 | ij_typescript_align_multiline_array_initializer_expression = false 151 | ij_typescript_align_multiline_binary_operation = false 152 | ij_typescript_align_multiline_chained_methods = false 153 | ij_typescript_align_multiline_extends_list = false 154 | ij_typescript_align_multiline_for = true 155 | ij_typescript_align_multiline_parameters = true 156 | ij_typescript_align_multiline_parameters_in_calls = false 157 | ij_typescript_align_multiline_ternary_operation = false 158 | ij_typescript_align_object_properties = 0 159 | ij_typescript_align_union_types = false 160 | ij_typescript_align_var_statements = 0 161 | ij_typescript_array_initializer_new_line_after_left_brace = false 162 | ij_typescript_array_initializer_right_brace_on_new_line = false 163 | ij_typescript_array_initializer_wrap = off 164 | ij_typescript_assignment_wrap = off 165 | ij_typescript_binary_operation_sign_on_next_line = false 166 | ij_typescript_binary_operation_wrap = off 167 | ij_typescript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/** 168 | ij_typescript_blank_lines_after_imports = 1 169 | ij_typescript_blank_lines_around_class = 1 170 | ij_typescript_blank_lines_around_field = 0 171 | ij_typescript_blank_lines_around_field_in_interface = 0 172 | ij_typescript_blank_lines_around_function = 1 173 | ij_typescript_blank_lines_around_method = 1 174 | ij_typescript_blank_lines_around_method_in_interface = 1 175 | ij_typescript_block_brace_style = end_of_line 176 | ij_typescript_block_comment_add_space = false 177 | ij_typescript_block_comment_at_first_column = true 178 | ij_typescript_call_parameters_new_line_after_left_paren = false 179 | ij_typescript_call_parameters_right_paren_on_new_line = false 180 | ij_typescript_call_parameters_wrap = off 181 | ij_typescript_catch_on_new_line = false 182 | ij_typescript_chained_call_dot_on_new_line = true 183 | ij_typescript_class_brace_style = end_of_line 184 | ij_typescript_comma_on_new_line = false 185 | ij_typescript_do_while_brace_force = never 186 | ij_typescript_else_on_new_line = false 187 | ij_typescript_enforce_trailing_comma = keep 188 | ij_typescript_enum_constants_wrap = on_every_item 189 | ij_typescript_extends_keyword_wrap = off 190 | ij_typescript_extends_list_wrap = off 191 | ij_typescript_field_prefix = _ 192 | ij_typescript_file_name_style = relaxed 193 | ij_typescript_finally_on_new_line = false 194 | ij_typescript_for_brace_force = never 195 | ij_typescript_for_statement_new_line_after_left_paren = false 196 | ij_typescript_for_statement_right_paren_on_new_line = false 197 | ij_typescript_for_statement_wrap = off 198 | ij_typescript_force_quote_style = false 199 | ij_typescript_force_semicolon_style = false 200 | ij_typescript_function_expression_brace_style = end_of_line 201 | ij_typescript_if_brace_force = never 202 | ij_typescript_import_merge_members = global 203 | ij_typescript_import_prefer_absolute_path = global 204 | ij_typescript_import_sort_members = true 205 | ij_typescript_import_sort_module_name = false 206 | ij_typescript_import_use_node_resolution = true 207 | ij_typescript_imports_wrap = on_every_item 208 | ij_typescript_indent_case_from_switch = true 209 | ij_typescript_indent_chained_calls = true 210 | ij_typescript_indent_package_children = 0 211 | ij_typescript_jsdoc_include_types = false 212 | ij_typescript_jsx_attribute_value = braces 213 | ij_typescript_keep_blank_lines_in_code = 2 214 | ij_typescript_keep_first_column_comment = true 215 | ij_typescript_keep_indents_on_empty_lines = false 216 | ij_typescript_keep_line_breaks = true 217 | ij_typescript_keep_simple_blocks_in_one_line = false 218 | ij_typescript_keep_simple_methods_in_one_line = false 219 | ij_typescript_line_comment_add_space = true 220 | ij_typescript_line_comment_at_first_column = false 221 | ij_typescript_method_brace_style = end_of_line 222 | ij_typescript_method_call_chain_wrap = off 223 | ij_typescript_method_parameters_new_line_after_left_paren = false 224 | ij_typescript_method_parameters_right_paren_on_new_line = false 225 | ij_typescript_method_parameters_wrap = off 226 | ij_typescript_object_literal_wrap = on_every_item 227 | ij_typescript_object_types_wrap = on_every_item 228 | ij_typescript_parentheses_expression_new_line_after_left_paren = false 229 | ij_typescript_parentheses_expression_right_paren_on_new_line = false 230 | ij_typescript_place_assignment_sign_on_next_line = false 231 | ij_typescript_prefer_as_type_cast = false 232 | ij_typescript_prefer_explicit_types_function_expression_returns = false 233 | ij_typescript_prefer_explicit_types_function_returns = false 234 | ij_typescript_prefer_explicit_types_vars_fields = false 235 | ij_typescript_prefer_parameters_wrap = false 236 | ij_typescript_property_prefix = 237 | ij_typescript_reformat_c_style_comments = false 238 | ij_typescript_space_after_colon = true 239 | ij_typescript_space_after_comma = true 240 | ij_typescript_space_after_dots_in_rest_parameter = false 241 | ij_typescript_space_after_generator_mult = true 242 | ij_typescript_space_after_property_colon = true 243 | ij_typescript_space_after_quest = true 244 | ij_typescript_space_after_type_colon = true 245 | ij_typescript_space_after_unary_not = false 246 | ij_typescript_space_before_async_arrow_lparen = true 247 | ij_typescript_space_before_catch_keyword = true 248 | ij_typescript_space_before_catch_left_brace = true 249 | ij_typescript_space_before_catch_parentheses = true 250 | ij_typescript_space_before_class_lbrace = true 251 | ij_typescript_space_before_class_left_brace = true 252 | ij_typescript_space_before_colon = true 253 | ij_typescript_space_before_comma = false 254 | ij_typescript_space_before_do_left_brace = true 255 | ij_typescript_space_before_else_keyword = true 256 | ij_typescript_space_before_else_left_brace = true 257 | ij_typescript_space_before_finally_keyword = true 258 | ij_typescript_space_before_finally_left_brace = true 259 | ij_typescript_space_before_for_left_brace = true 260 | ij_typescript_space_before_for_parentheses = true 261 | ij_typescript_space_before_for_semicolon = false 262 | ij_typescript_space_before_function_left_parenth = true 263 | ij_typescript_space_before_generator_mult = false 264 | ij_typescript_space_before_if_left_brace = true 265 | ij_typescript_space_before_if_parentheses = true 266 | ij_typescript_space_before_method_call_parentheses = false 267 | ij_typescript_space_before_method_left_brace = true 268 | ij_typescript_space_before_method_parentheses = false 269 | ij_typescript_space_before_property_colon = false 270 | ij_typescript_space_before_quest = true 271 | ij_typescript_space_before_switch_left_brace = true 272 | ij_typescript_space_before_switch_parentheses = true 273 | ij_typescript_space_before_try_left_brace = true 274 | ij_typescript_space_before_type_colon = false 275 | ij_typescript_space_before_unary_not = false 276 | ij_typescript_space_before_while_keyword = true 277 | ij_typescript_space_before_while_left_brace = true 278 | ij_typescript_space_before_while_parentheses = true 279 | ij_typescript_spaces_around_additive_operators = true 280 | ij_typescript_spaces_around_arrow_function_operator = true 281 | ij_typescript_spaces_around_assignment_operators = true 282 | ij_typescript_spaces_around_bitwise_operators = true 283 | ij_typescript_spaces_around_equality_operators = true 284 | ij_typescript_spaces_around_logical_operators = true 285 | ij_typescript_spaces_around_multiplicative_operators = true 286 | ij_typescript_spaces_around_relational_operators = true 287 | ij_typescript_spaces_around_shift_operators = true 288 | ij_typescript_spaces_around_unary_operator = false 289 | ij_typescript_spaces_within_array_initializer_brackets = false 290 | ij_typescript_spaces_within_brackets = false 291 | ij_typescript_spaces_within_catch_parentheses = false 292 | ij_typescript_spaces_within_for_parentheses = false 293 | ij_typescript_spaces_within_if_parentheses = false 294 | ij_typescript_spaces_within_imports = false 295 | ij_typescript_spaces_within_interpolation_expressions = false 296 | ij_typescript_spaces_within_method_call_parentheses = false 297 | ij_typescript_spaces_within_method_parentheses = false 298 | ij_typescript_spaces_within_object_literal_braces = false 299 | ij_typescript_spaces_within_object_type_braces = true 300 | ij_typescript_spaces_within_parentheses = false 301 | ij_typescript_spaces_within_switch_parentheses = false 302 | ij_typescript_spaces_within_type_assertion = false 303 | ij_typescript_spaces_within_union_types = true 304 | ij_typescript_spaces_within_while_parentheses = false 305 | ij_typescript_special_else_if_treatment = true 306 | ij_typescript_ternary_operation_signs_on_next_line = false 307 | ij_typescript_ternary_operation_wrap = off 308 | ij_typescript_union_types_wrap = on_every_item 309 | ij_typescript_use_chained_calls_group_indents = false 310 | ij_typescript_use_double_quotes = true 311 | ij_typescript_use_explicit_js_extension = auto 312 | ij_typescript_use_path_mapping = always 313 | ij_typescript_use_public_modifier = false 314 | ij_typescript_use_semicolon_after_statement = true 315 | ij_typescript_var_declaration_wrap = normal 316 | ij_typescript_while_brace_force = never 317 | ij_typescript_while_on_new_line = false 318 | ij_typescript_wrap_comments = false 319 | 320 | [{*.bash,*.sh,*.zsh}] 321 | indent_size = 2 322 | tab_width = 2 323 | ij_shell_binary_ops_start_line = false 324 | ij_shell_keep_column_alignment_padding = false 325 | ij_shell_minify_program = false 326 | ij_shell_redirect_followed_by_space = false 327 | ij_shell_switch_cases_indented = false 328 | ij_shell_use_unix_line_separator = true 329 | 330 | [{*.cjs,*.js}] 331 | ij_continuation_indent_size = 4 332 | ij_javascript_align_imports = false 333 | ij_javascript_align_multiline_array_initializer_expression = false 334 | ij_javascript_align_multiline_binary_operation = false 335 | ij_javascript_align_multiline_chained_methods = false 336 | ij_javascript_align_multiline_extends_list = false 337 | ij_javascript_align_multiline_for = true 338 | ij_javascript_align_multiline_parameters = true 339 | ij_javascript_align_multiline_parameters_in_calls = false 340 | ij_javascript_align_multiline_ternary_operation = false 341 | ij_javascript_align_object_properties = 0 342 | ij_javascript_align_union_types = false 343 | ij_javascript_align_var_statements = 0 344 | ij_javascript_array_initializer_new_line_after_left_brace = false 345 | ij_javascript_array_initializer_right_brace_on_new_line = false 346 | ij_javascript_array_initializer_wrap = off 347 | ij_javascript_assignment_wrap = off 348 | ij_javascript_binary_operation_sign_on_next_line = false 349 | ij_javascript_binary_operation_wrap = off 350 | ij_javascript_blacklist_imports = rxjs/Rx,node_modules/**,**/node_modules/**,@angular/material,@angular/material/typings/** 351 | ij_javascript_blank_lines_after_imports = 1 352 | ij_javascript_blank_lines_around_class = 1 353 | ij_javascript_blank_lines_around_field = 0 354 | ij_javascript_blank_lines_around_function = 1 355 | ij_javascript_blank_lines_around_method = 1 356 | ij_javascript_block_brace_style = end_of_line 357 | ij_javascript_block_comment_add_space = false 358 | ij_javascript_block_comment_at_first_column = true 359 | ij_javascript_call_parameters_new_line_after_left_paren = false 360 | ij_javascript_call_parameters_right_paren_on_new_line = false 361 | ij_javascript_call_parameters_wrap = off 362 | ij_javascript_catch_on_new_line = false 363 | ij_javascript_chained_call_dot_on_new_line = true 364 | ij_javascript_class_brace_style = end_of_line 365 | ij_javascript_comma_on_new_line = false 366 | ij_javascript_do_while_brace_force = never 367 | ij_javascript_else_on_new_line = false 368 | ij_javascript_enforce_trailing_comma = keep 369 | ij_javascript_extends_keyword_wrap = off 370 | ij_javascript_extends_list_wrap = off 371 | ij_javascript_field_prefix = _ 372 | ij_javascript_file_name_style = relaxed 373 | ij_javascript_finally_on_new_line = false 374 | ij_javascript_for_brace_force = never 375 | ij_javascript_for_statement_new_line_after_left_paren = false 376 | ij_javascript_for_statement_right_paren_on_new_line = false 377 | ij_javascript_for_statement_wrap = off 378 | ij_javascript_force_quote_style = false 379 | ij_javascript_force_semicolon_style = false 380 | ij_javascript_function_expression_brace_style = end_of_line 381 | ij_javascript_if_brace_force = never 382 | ij_javascript_import_merge_members = global 383 | ij_javascript_import_prefer_absolute_path = global 384 | ij_javascript_import_sort_members = true 385 | ij_javascript_import_sort_module_name = false 386 | ij_javascript_import_use_node_resolution = true 387 | ij_javascript_imports_wrap = on_every_item 388 | ij_javascript_indent_case_from_switch = true 389 | ij_javascript_indent_chained_calls = true 390 | ij_javascript_indent_package_children = 0 391 | ij_javascript_jsx_attribute_value = braces 392 | ij_javascript_keep_blank_lines_in_code = 2 393 | ij_javascript_keep_first_column_comment = true 394 | ij_javascript_keep_indents_on_empty_lines = false 395 | ij_javascript_keep_line_breaks = true 396 | ij_javascript_keep_simple_blocks_in_one_line = false 397 | ij_javascript_keep_simple_methods_in_one_line = false 398 | ij_javascript_line_comment_add_space = true 399 | ij_javascript_line_comment_at_first_column = false 400 | ij_javascript_method_brace_style = end_of_line 401 | ij_javascript_method_call_chain_wrap = off 402 | ij_javascript_method_parameters_new_line_after_left_paren = false 403 | ij_javascript_method_parameters_right_paren_on_new_line = false 404 | ij_javascript_method_parameters_wrap = off 405 | ij_javascript_object_literal_wrap = on_every_item 406 | ij_javascript_object_types_wrap = on_every_item 407 | ij_javascript_parentheses_expression_new_line_after_left_paren = false 408 | ij_javascript_parentheses_expression_right_paren_on_new_line = false 409 | ij_javascript_place_assignment_sign_on_next_line = false 410 | ij_javascript_prefer_as_type_cast = false 411 | ij_javascript_prefer_explicit_types_function_expression_returns = false 412 | ij_javascript_prefer_explicit_types_function_returns = false 413 | ij_javascript_prefer_explicit_types_vars_fields = false 414 | ij_javascript_prefer_parameters_wrap = false 415 | ij_javascript_property_prefix = 416 | ij_javascript_reformat_c_style_comments = false 417 | ij_javascript_space_after_colon = true 418 | ij_javascript_space_after_comma = true 419 | ij_javascript_space_after_dots_in_rest_parameter = false 420 | ij_javascript_space_after_generator_mult = true 421 | ij_javascript_space_after_property_colon = true 422 | ij_javascript_space_after_quest = true 423 | ij_javascript_space_after_type_colon = true 424 | ij_javascript_space_after_unary_not = false 425 | ij_javascript_space_before_async_arrow_lparen = true 426 | ij_javascript_space_before_catch_keyword = true 427 | ij_javascript_space_before_catch_left_brace = true 428 | ij_javascript_space_before_catch_parentheses = true 429 | ij_javascript_space_before_class_lbrace = true 430 | ij_javascript_space_before_class_left_brace = true 431 | ij_javascript_space_before_colon = true 432 | ij_javascript_space_before_comma = false 433 | ij_javascript_space_before_do_left_brace = true 434 | ij_javascript_space_before_else_keyword = true 435 | ij_javascript_space_before_else_left_brace = true 436 | ij_javascript_space_before_finally_keyword = true 437 | ij_javascript_space_before_finally_left_brace = true 438 | ij_javascript_space_before_for_left_brace = true 439 | ij_javascript_space_before_for_parentheses = true 440 | ij_javascript_space_before_for_semicolon = false 441 | ij_javascript_space_before_function_left_parenth = true 442 | ij_javascript_space_before_generator_mult = false 443 | ij_javascript_space_before_if_left_brace = true 444 | ij_javascript_space_before_if_parentheses = true 445 | ij_javascript_space_before_method_call_parentheses = false 446 | ij_javascript_space_before_method_left_brace = true 447 | ij_javascript_space_before_method_parentheses = false 448 | ij_javascript_space_before_property_colon = false 449 | ij_javascript_space_before_quest = true 450 | ij_javascript_space_before_switch_left_brace = true 451 | ij_javascript_space_before_switch_parentheses = true 452 | ij_javascript_space_before_try_left_brace = true 453 | ij_javascript_space_before_type_colon = false 454 | ij_javascript_space_before_unary_not = false 455 | ij_javascript_space_before_while_keyword = true 456 | ij_javascript_space_before_while_left_brace = true 457 | ij_javascript_space_before_while_parentheses = true 458 | ij_javascript_spaces_around_additive_operators = true 459 | ij_javascript_spaces_around_arrow_function_operator = true 460 | ij_javascript_spaces_around_assignment_operators = true 461 | ij_javascript_spaces_around_bitwise_operators = true 462 | ij_javascript_spaces_around_equality_operators = true 463 | ij_javascript_spaces_around_logical_operators = true 464 | ij_javascript_spaces_around_multiplicative_operators = true 465 | ij_javascript_spaces_around_relational_operators = true 466 | ij_javascript_spaces_around_shift_operators = true 467 | ij_javascript_spaces_around_unary_operator = false 468 | ij_javascript_spaces_within_array_initializer_brackets = false 469 | ij_javascript_spaces_within_brackets = false 470 | ij_javascript_spaces_within_catch_parentheses = false 471 | ij_javascript_spaces_within_for_parentheses = false 472 | ij_javascript_spaces_within_if_parentheses = false 473 | ij_javascript_spaces_within_imports = false 474 | ij_javascript_spaces_within_interpolation_expressions = false 475 | ij_javascript_spaces_within_method_call_parentheses = false 476 | ij_javascript_spaces_within_method_parentheses = false 477 | ij_javascript_spaces_within_object_literal_braces = false 478 | ij_javascript_spaces_within_object_type_braces = true 479 | ij_javascript_spaces_within_parentheses = false 480 | ij_javascript_spaces_within_switch_parentheses = false 481 | ij_javascript_spaces_within_type_assertion = false 482 | ij_javascript_spaces_within_union_types = true 483 | ij_javascript_spaces_within_while_parentheses = false 484 | ij_javascript_special_else_if_treatment = true 485 | ij_javascript_ternary_operation_signs_on_next_line = false 486 | ij_javascript_ternary_operation_wrap = off 487 | ij_javascript_union_types_wrap = on_every_item 488 | ij_javascript_use_chained_calls_group_indents = false 489 | ij_javascript_use_double_quotes = true 490 | ij_javascript_use_explicit_js_extension = auto 491 | ij_javascript_use_path_mapping = always 492 | ij_javascript_use_public_modifier = false 493 | ij_javascript_use_semicolon_after_statement = true 494 | ij_javascript_var_declaration_wrap = normal 495 | ij_javascript_while_brace_force = never 496 | ij_javascript_while_on_new_line = false 497 | ij_javascript_wrap_comments = false 498 | 499 | [{*.har,*.jsb2,*.jsb3,*.json,.babelrc,.eslintrc,.prettierrc,.stylelintrc,bowerrc,jest.config}] 500 | indent_size = 2 501 | ij_json_array_wrapping = split_into_lines 502 | ij_json_keep_blank_lines_in_code = 0 503 | ij_json_keep_indents_on_empty_lines = false 504 | ij_json_keep_line_breaks = true 505 | ij_json_keep_trailing_comma = false 506 | ij_json_object_wrapping = split_into_lines 507 | ij_json_property_alignment = do_not_align 508 | ij_json_space_after_colon = true 509 | ij_json_space_after_comma = true 510 | ij_json_space_before_colon = false 511 | ij_json_space_before_comma = false 512 | ij_json_spaces_within_braces = false 513 | ij_json_spaces_within_brackets = false 514 | ij_json_wrap_long_lines = false 515 | 516 | [{*.htm,*.html,*.ng,*.sht,*.shtm,*.shtml}] 517 | indent_size = 2 518 | tab_width = 2 519 | ij_continuation_indent_size = 4 520 | ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 521 | ij_html_align_attributes = true 522 | ij_html_align_text = false 523 | ij_html_attribute_wrap = normal 524 | ij_html_block_comment_add_space = false 525 | ij_html_block_comment_at_first_column = true 526 | ij_html_do_not_align_children_of_min_lines = 0 527 | ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p 528 | ij_html_do_not_indent_children_of_tags = html,thead,tbody,tfoot 529 | ij_html_enforce_quotes = false 530 | ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var 531 | ij_html_keep_blank_lines = 2 532 | ij_html_keep_indents_on_empty_lines = false 533 | ij_html_keep_line_breaks = true 534 | ij_html_keep_line_breaks_in_text = true 535 | ij_html_keep_whitespaces = false 536 | ij_html_keep_whitespaces_inside = span,pre,textarea 537 | ij_html_line_comment_at_first_column = true 538 | ij_html_new_line_after_last_attribute = never 539 | ij_html_new_line_before_first_attribute = never 540 | ij_html_quote_style = double 541 | ij_html_remove_new_line_before_tags = br 542 | ij_html_space_after_tag_name = false 543 | ij_html_space_around_equality_in_attribute = false 544 | ij_html_space_inside_empty_tag = false 545 | ij_html_text_wrap = normal 546 | 547 | [{*.http,*.rest}] 548 | indent_size = 0 549 | ij_continuation_indent_size = 4 550 | ij_http-request_call_parameters_wrap = normal 551 | ij_http-request_method_parameters_wrap = split_into_lines 552 | ij_http-request_space_before_comma = true 553 | ij_http-request_spaces_around_assignment_operators = true 554 | 555 | [{*.markdown,*.md}] 556 | ij_markdown_force_one_space_after_blockquote_symbol = true 557 | ij_markdown_force_one_space_after_header_symbol = true 558 | ij_markdown_force_one_space_after_list_bullet = true 559 | ij_markdown_force_one_space_between_words = true 560 | ij_markdown_format_tables = true 561 | ij_markdown_insert_quote_arrows_on_wrap = true 562 | ij_markdown_keep_indents_on_empty_lines = false 563 | ij_markdown_keep_line_breaks_inside_text_blocks = true 564 | ij_markdown_max_lines_around_block_elements = 1 565 | ij_markdown_max_lines_around_header = 1 566 | ij_markdown_max_lines_between_paragraphs = 1 567 | ij_markdown_min_lines_around_block_elements = 1 568 | ij_markdown_min_lines_around_header = 1 569 | ij_markdown_min_lines_between_paragraphs = 1 570 | ij_markdown_wrap_text_if_long = true 571 | ij_markdown_wrap_text_inside_blockquotes = true 572 | 573 | [{*.yaml,*.yml}] 574 | indent_size = 2 575 | ij_yaml_align_values_properties = do_not_align 576 | ij_yaml_autoinsert_sequence_marker = true 577 | ij_yaml_block_mapping_on_new_line = false 578 | ij_yaml_indent_sequence_value = true 579 | ij_yaml_keep_indents_on_empty_lines = false 580 | ij_yaml_keep_line_breaks = true 581 | ij_yaml_sequence_on_new_line = false 582 | ij_yaml_space_before_colon = false 583 | ij_yaml_spaces_within_braces = true 584 | ij_yaml_spaces_within_brackets = true 585 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | dist 13 | dist-ssr 14 | coverage 15 | *.local 16 | 17 | /cypress/videos/ 18 | /cypress/screenshots/ 19 | 20 | # Editor directories and files 21 | .vscode/* 22 | !.vscode/extensions.json 23 | .idea 24 | *.suo 25 | *.ntvs* 26 | *.njsproj 27 | *.sln 28 | *.sw? 29 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # watermark 2 | 3 | Vue3 watermark 4 | 5 | ## Project Setup 6 | 7 | ```sh 8 | npm install 9 | ``` 10 | 11 | ### Compile and Hot-Reload for Development 12 | 13 | ```sh 14 | npm run dev 15 | ``` 16 | 17 | ### Compile and Minify for Production 18 | 19 | ```sh 20 | npm run build 21 | ``` 22 | -------------------------------------------------------------------------------- /avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nash-x9/watermark/2d5124b748aa457944257eecd56d9ad38a6408be/avatar.jpg -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 水印工具 - 纯前端水印 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 23 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "watermark", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "watermark", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "colorpicker-v3": "^2.10.2", 12 | "vue": "^3.3.4" 13 | }, 14 | "devDependencies": { 15 | "@vitejs/plugin-vue": "^4.4.0", 16 | "vite": "^4.4.11" 17 | } 18 | }, 19 | "node_modules/@babel/parser": { 20 | "version": "7.23.0", 21 | "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.0.tgz", 22 | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", 23 | "bin": { 24 | "parser": "bin/babel-parser.js" 25 | }, 26 | "engines": { 27 | "node": ">=6.0.0" 28 | } 29 | }, 30 | "node_modules/@esbuild/android-arm": { 31 | "version": "0.18.20", 32 | "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz", 33 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", 34 | "cpu": [ 35 | "arm" 36 | ], 37 | "dev": true, 38 | "optional": true, 39 | "os": [ 40 | "android" 41 | ], 42 | "engines": { 43 | "node": ">=12" 44 | } 45 | }, 46 | "node_modules/@esbuild/android-arm64": { 47 | "version": "0.18.20", 48 | "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", 49 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", 50 | "cpu": [ 51 | "arm64" 52 | ], 53 | "dev": true, 54 | "optional": true, 55 | "os": [ 56 | "android" 57 | ], 58 | "engines": { 59 | "node": ">=12" 60 | } 61 | }, 62 | "node_modules/@esbuild/android-x64": { 63 | "version": "0.18.20", 64 | "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz", 65 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", 66 | "cpu": [ 67 | "x64" 68 | ], 69 | "dev": true, 70 | "optional": true, 71 | "os": [ 72 | "android" 73 | ], 74 | "engines": { 75 | "node": ">=12" 76 | } 77 | }, 78 | "node_modules/@esbuild/darwin-arm64": { 79 | "version": "0.18.20", 80 | "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", 81 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", 82 | "cpu": [ 83 | "arm64" 84 | ], 85 | "dev": true, 86 | "optional": true, 87 | "os": [ 88 | "darwin" 89 | ], 90 | "engines": { 91 | "node": ">=12" 92 | } 93 | }, 94 | "node_modules/@esbuild/darwin-x64": { 95 | "version": "0.18.20", 96 | "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", 97 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", 98 | "cpu": [ 99 | "x64" 100 | ], 101 | "dev": true, 102 | "optional": true, 103 | "os": [ 104 | "darwin" 105 | ], 106 | "engines": { 107 | "node": ">=12" 108 | } 109 | }, 110 | "node_modules/@esbuild/freebsd-arm64": { 111 | "version": "0.18.20", 112 | "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", 113 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", 114 | "cpu": [ 115 | "arm64" 116 | ], 117 | "dev": true, 118 | "optional": true, 119 | "os": [ 120 | "freebsd" 121 | ], 122 | "engines": { 123 | "node": ">=12" 124 | } 125 | }, 126 | "node_modules/@esbuild/freebsd-x64": { 127 | "version": "0.18.20", 128 | "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", 129 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", 130 | "cpu": [ 131 | "x64" 132 | ], 133 | "dev": true, 134 | "optional": true, 135 | "os": [ 136 | "freebsd" 137 | ], 138 | "engines": { 139 | "node": ">=12" 140 | } 141 | }, 142 | "node_modules/@esbuild/linux-arm": { 143 | "version": "0.18.20", 144 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", 145 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", 146 | "cpu": [ 147 | "arm" 148 | ], 149 | "dev": true, 150 | "optional": true, 151 | "os": [ 152 | "linux" 153 | ], 154 | "engines": { 155 | "node": ">=12" 156 | } 157 | }, 158 | "node_modules/@esbuild/linux-arm64": { 159 | "version": "0.18.20", 160 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", 161 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", 162 | "cpu": [ 163 | "arm64" 164 | ], 165 | "dev": true, 166 | "optional": true, 167 | "os": [ 168 | "linux" 169 | ], 170 | "engines": { 171 | "node": ">=12" 172 | } 173 | }, 174 | "node_modules/@esbuild/linux-ia32": { 175 | "version": "0.18.20", 176 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", 177 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", 178 | "cpu": [ 179 | "ia32" 180 | ], 181 | "dev": true, 182 | "optional": true, 183 | "os": [ 184 | "linux" 185 | ], 186 | "engines": { 187 | "node": ">=12" 188 | } 189 | }, 190 | "node_modules/@esbuild/linux-loong64": { 191 | "version": "0.18.20", 192 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", 193 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", 194 | "cpu": [ 195 | "loong64" 196 | ], 197 | "dev": true, 198 | "optional": true, 199 | "os": [ 200 | "linux" 201 | ], 202 | "engines": { 203 | "node": ">=12" 204 | } 205 | }, 206 | "node_modules/@esbuild/linux-mips64el": { 207 | "version": "0.18.20", 208 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", 209 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", 210 | "cpu": [ 211 | "mips64el" 212 | ], 213 | "dev": true, 214 | "optional": true, 215 | "os": [ 216 | "linux" 217 | ], 218 | "engines": { 219 | "node": ">=12" 220 | } 221 | }, 222 | "node_modules/@esbuild/linux-ppc64": { 223 | "version": "0.18.20", 224 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", 225 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", 226 | "cpu": [ 227 | "ppc64" 228 | ], 229 | "dev": true, 230 | "optional": true, 231 | "os": [ 232 | "linux" 233 | ], 234 | "engines": { 235 | "node": ">=12" 236 | } 237 | }, 238 | "node_modules/@esbuild/linux-riscv64": { 239 | "version": "0.18.20", 240 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", 241 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", 242 | "cpu": [ 243 | "riscv64" 244 | ], 245 | "dev": true, 246 | "optional": true, 247 | "os": [ 248 | "linux" 249 | ], 250 | "engines": { 251 | "node": ">=12" 252 | } 253 | }, 254 | "node_modules/@esbuild/linux-s390x": { 255 | "version": "0.18.20", 256 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", 257 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", 258 | "cpu": [ 259 | "s390x" 260 | ], 261 | "dev": true, 262 | "optional": true, 263 | "os": [ 264 | "linux" 265 | ], 266 | "engines": { 267 | "node": ">=12" 268 | } 269 | }, 270 | "node_modules/@esbuild/linux-x64": { 271 | "version": "0.18.20", 272 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", 273 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", 274 | "cpu": [ 275 | "x64" 276 | ], 277 | "dev": true, 278 | "optional": true, 279 | "os": [ 280 | "linux" 281 | ], 282 | "engines": { 283 | "node": ">=12" 284 | } 285 | }, 286 | "node_modules/@esbuild/netbsd-x64": { 287 | "version": "0.18.20", 288 | "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", 289 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", 290 | "cpu": [ 291 | "x64" 292 | ], 293 | "dev": true, 294 | "optional": true, 295 | "os": [ 296 | "netbsd" 297 | ], 298 | "engines": { 299 | "node": ">=12" 300 | } 301 | }, 302 | "node_modules/@esbuild/openbsd-x64": { 303 | "version": "0.18.20", 304 | "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", 305 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", 306 | "cpu": [ 307 | "x64" 308 | ], 309 | "dev": true, 310 | "optional": true, 311 | "os": [ 312 | "openbsd" 313 | ], 314 | "engines": { 315 | "node": ">=12" 316 | } 317 | }, 318 | "node_modules/@esbuild/sunos-x64": { 319 | "version": "0.18.20", 320 | "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", 321 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", 322 | "cpu": [ 323 | "x64" 324 | ], 325 | "dev": true, 326 | "optional": true, 327 | "os": [ 328 | "sunos" 329 | ], 330 | "engines": { 331 | "node": ">=12" 332 | } 333 | }, 334 | "node_modules/@esbuild/win32-arm64": { 335 | "version": "0.18.20", 336 | "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", 337 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", 338 | "cpu": [ 339 | "arm64" 340 | ], 341 | "dev": true, 342 | "optional": true, 343 | "os": [ 344 | "win32" 345 | ], 346 | "engines": { 347 | "node": ">=12" 348 | } 349 | }, 350 | "node_modules/@esbuild/win32-ia32": { 351 | "version": "0.18.20", 352 | "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", 353 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", 354 | "cpu": [ 355 | "ia32" 356 | ], 357 | "dev": true, 358 | "optional": true, 359 | "os": [ 360 | "win32" 361 | ], 362 | "engines": { 363 | "node": ">=12" 364 | } 365 | }, 366 | "node_modules/@esbuild/win32-x64": { 367 | "version": "0.18.20", 368 | "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", 369 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", 370 | "cpu": [ 371 | "x64" 372 | ], 373 | "dev": true, 374 | "optional": true, 375 | "os": [ 376 | "win32" 377 | ], 378 | "engines": { 379 | "node": ">=12" 380 | } 381 | }, 382 | "node_modules/@jridgewell/sourcemap-codec": { 383 | "version": "1.4.15", 384 | "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 385 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" 386 | }, 387 | "node_modules/@vitejs/plugin-vue": { 388 | "version": "4.4.0", 389 | "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz", 390 | "integrity": "sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==", 391 | "dev": true, 392 | "engines": { 393 | "node": "^14.18.0 || >=16.0.0" 394 | }, 395 | "peerDependencies": { 396 | "vite": "^4.0.0", 397 | "vue": "^3.2.25" 398 | } 399 | }, 400 | "node_modules/@vue/compiler-core": { 401 | "version": "3.3.7", 402 | "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.7.tgz", 403 | "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", 404 | "dependencies": { 405 | "@babel/parser": "^7.23.0", 406 | "@vue/shared": "3.3.7", 407 | "estree-walker": "^2.0.2", 408 | "source-map-js": "^1.0.2" 409 | } 410 | }, 411 | "node_modules/@vue/compiler-dom": { 412 | "version": "3.3.7", 413 | "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", 414 | "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", 415 | "dependencies": { 416 | "@vue/compiler-core": "3.3.7", 417 | "@vue/shared": "3.3.7" 418 | } 419 | }, 420 | "node_modules/@vue/compiler-sfc": { 421 | "version": "3.3.7", 422 | "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", 423 | "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", 424 | "dependencies": { 425 | "@babel/parser": "^7.23.0", 426 | "@vue/compiler-core": "3.3.7", 427 | "@vue/compiler-dom": "3.3.7", 428 | "@vue/compiler-ssr": "3.3.7", 429 | "@vue/reactivity-transform": "3.3.7", 430 | "@vue/shared": "3.3.7", 431 | "estree-walker": "^2.0.2", 432 | "magic-string": "^0.30.5", 433 | "postcss": "^8.4.31", 434 | "source-map-js": "^1.0.2" 435 | } 436 | }, 437 | "node_modules/@vue/compiler-ssr": { 438 | "version": "3.3.7", 439 | "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", 440 | "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", 441 | "dependencies": { 442 | "@vue/compiler-dom": "3.3.7", 443 | "@vue/shared": "3.3.7" 444 | } 445 | }, 446 | "node_modules/@vue/reactivity": { 447 | "version": "3.3.7", 448 | "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.7.tgz", 449 | "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", 450 | "dependencies": { 451 | "@vue/shared": "3.3.7" 452 | } 453 | }, 454 | "node_modules/@vue/reactivity-transform": { 455 | "version": "3.3.7", 456 | "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", 457 | "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", 458 | "dependencies": { 459 | "@babel/parser": "^7.23.0", 460 | "@vue/compiler-core": "3.3.7", 461 | "@vue/shared": "3.3.7", 462 | "estree-walker": "^2.0.2", 463 | "magic-string": "^0.30.5" 464 | } 465 | }, 466 | "node_modules/@vue/runtime-core": { 467 | "version": "3.3.7", 468 | "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.7.tgz", 469 | "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", 470 | "dependencies": { 471 | "@vue/reactivity": "3.3.7", 472 | "@vue/shared": "3.3.7" 473 | } 474 | }, 475 | "node_modules/@vue/runtime-dom": { 476 | "version": "3.3.7", 477 | "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", 478 | "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", 479 | "dependencies": { 480 | "@vue/runtime-core": "3.3.7", 481 | "@vue/shared": "3.3.7", 482 | "csstype": "^3.1.2" 483 | } 484 | }, 485 | "node_modules/@vue/server-renderer": { 486 | "version": "3.3.7", 487 | "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.7.tgz", 488 | "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", 489 | "dependencies": { 490 | "@vue/compiler-ssr": "3.3.7", 491 | "@vue/shared": "3.3.7" 492 | }, 493 | "peerDependencies": { 494 | "vue": "3.3.7" 495 | } 496 | }, 497 | "node_modules/@vue/shared": { 498 | "version": "3.3.7", 499 | "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.7.tgz", 500 | "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==" 501 | }, 502 | "node_modules/@vueuse/core": { 503 | "version": "7.7.1", 504 | "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-7.7.1.tgz", 505 | "integrity": "sha512-PRRgbATMpoeUmkCEBtUeJgOwtew8s+4UsEd+Pm7MhkjL2ihCNrSqxNVtM6NFE4uP2sWnkGcZpCjPuNSxowJ1Ow==", 506 | "dependencies": { 507 | "@vueuse/shared": "7.7.1", 508 | "vue-demi": "*" 509 | }, 510 | "peerDependencies": { 511 | "@vue/composition-api": "^1.1.0", 512 | "vue": "^2.6.0 || ^3.2.0" 513 | }, 514 | "peerDependenciesMeta": { 515 | "@vue/composition-api": { 516 | "optional": true 517 | }, 518 | "vue": { 519 | "optional": true 520 | } 521 | } 522 | }, 523 | "node_modules/@vueuse/core/node_modules/@vueuse/shared": { 524 | "version": "7.7.1", 525 | "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-7.7.1.tgz", 526 | "integrity": "sha512-rN2qd22AUl7VdBxihagWyhUNHCyVk9IpvBTTfHoLH9G7rGE552X1f+zeCfehuno0zXif13jPw+icW/wn2a0rnQ==", 527 | "dependencies": { 528 | "vue-demi": "*" 529 | }, 530 | "peerDependencies": { 531 | "@vue/composition-api": "^1.1.0", 532 | "vue": "^2.6.0 || ^3.2.0" 533 | }, 534 | "peerDependenciesMeta": { 535 | "@vue/composition-api": { 536 | "optional": true 537 | }, 538 | "vue": { 539 | "optional": true 540 | } 541 | } 542 | }, 543 | "node_modules/@vueuse/core/node_modules/vue-demi": { 544 | "version": "0.14.6", 545 | "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", 546 | "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", 547 | "hasInstallScript": true, 548 | "bin": { 549 | "vue-demi-fix": "bin/vue-demi-fix.js", 550 | "vue-demi-switch": "bin/vue-demi-switch.js" 551 | }, 552 | "engines": { 553 | "node": ">=12" 554 | }, 555 | "peerDependencies": { 556 | "@vue/composition-api": "^1.0.0-rc.1", 557 | "vue": "^3.0.0-0 || ^2.6.0" 558 | }, 559 | "peerDependenciesMeta": { 560 | "@vue/composition-api": { 561 | "optional": true 562 | } 563 | } 564 | }, 565 | "node_modules/colorpicker-v3": { 566 | "version": "2.10.2", 567 | "resolved": "https://registry.npmmirror.com/colorpicker-v3/-/colorpicker-v3-2.10.2.tgz", 568 | "integrity": "sha512-ZWPq5wcugS3NcL7DwYqVSP5mE/x45FK31olGpig+Tko5jUXk0danfEYi1Aei3lgYs+Z0zAfhbhqVuDgOdUs5Mw==", 569 | "dependencies": { 570 | "@vueuse/core": "^7.5.5", 571 | "vue": "^3.2.25" 572 | } 573 | }, 574 | "node_modules/csstype": { 575 | "version": "3.1.2", 576 | "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", 577 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" 578 | }, 579 | "node_modules/esbuild": { 580 | "version": "0.18.20", 581 | "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz", 582 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 583 | "dev": true, 584 | "hasInstallScript": true, 585 | "bin": { 586 | "esbuild": "bin/esbuild" 587 | }, 588 | "engines": { 589 | "node": ">=12" 590 | }, 591 | "optionalDependencies": { 592 | "@esbuild/android-arm": "0.18.20", 593 | "@esbuild/android-arm64": "0.18.20", 594 | "@esbuild/android-x64": "0.18.20", 595 | "@esbuild/darwin-arm64": "0.18.20", 596 | "@esbuild/darwin-x64": "0.18.20", 597 | "@esbuild/freebsd-arm64": "0.18.20", 598 | "@esbuild/freebsd-x64": "0.18.20", 599 | "@esbuild/linux-arm": "0.18.20", 600 | "@esbuild/linux-arm64": "0.18.20", 601 | "@esbuild/linux-ia32": "0.18.20", 602 | "@esbuild/linux-loong64": "0.18.20", 603 | "@esbuild/linux-mips64el": "0.18.20", 604 | "@esbuild/linux-ppc64": "0.18.20", 605 | "@esbuild/linux-riscv64": "0.18.20", 606 | "@esbuild/linux-s390x": "0.18.20", 607 | "@esbuild/linux-x64": "0.18.20", 608 | "@esbuild/netbsd-x64": "0.18.20", 609 | "@esbuild/openbsd-x64": "0.18.20", 610 | "@esbuild/sunos-x64": "0.18.20", 611 | "@esbuild/win32-arm64": "0.18.20", 612 | "@esbuild/win32-ia32": "0.18.20", 613 | "@esbuild/win32-x64": "0.18.20" 614 | } 615 | }, 616 | "node_modules/estree-walker": { 617 | "version": "2.0.2", 618 | "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", 619 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 620 | }, 621 | "node_modules/fsevents": { 622 | "version": "2.3.3", 623 | "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", 624 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 625 | "dev": true, 626 | "hasInstallScript": true, 627 | "optional": true, 628 | "os": [ 629 | "darwin" 630 | ], 631 | "engines": { 632 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 633 | } 634 | }, 635 | "node_modules/magic-string": { 636 | "version": "0.30.5", 637 | "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz", 638 | "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", 639 | "dependencies": { 640 | "@jridgewell/sourcemap-codec": "^1.4.15" 641 | }, 642 | "engines": { 643 | "node": ">=12" 644 | } 645 | }, 646 | "node_modules/nanoid": { 647 | "version": "3.3.6", 648 | "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", 649 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 650 | "bin": { 651 | "nanoid": "bin/nanoid.cjs" 652 | }, 653 | "engines": { 654 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 655 | } 656 | }, 657 | "node_modules/picocolors": { 658 | "version": "1.0.0", 659 | "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", 660 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 661 | }, 662 | "node_modules/postcss": { 663 | "version": "8.4.31", 664 | "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz", 665 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", 666 | "dependencies": { 667 | "nanoid": "^3.3.6", 668 | "picocolors": "^1.0.0", 669 | "source-map-js": "^1.0.2" 670 | }, 671 | "engines": { 672 | "node": "^10 || ^12 || >=14" 673 | } 674 | }, 675 | "node_modules/rollup": { 676 | "version": "3.29.4", 677 | "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz", 678 | "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", 679 | "dev": true, 680 | "bin": { 681 | "rollup": "dist/bin/rollup" 682 | }, 683 | "engines": { 684 | "node": ">=14.18.0", 685 | "npm": ">=8.0.0" 686 | }, 687 | "optionalDependencies": { 688 | "fsevents": "~2.3.2" 689 | } 690 | }, 691 | "node_modules/source-map-js": { 692 | "version": "1.0.2", 693 | "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", 694 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 695 | "engines": { 696 | "node": ">=0.10.0" 697 | } 698 | }, 699 | "node_modules/vite": { 700 | "version": "4.5.0", 701 | "resolved": "https://registry.npmmirror.com/vite/-/vite-4.5.0.tgz", 702 | "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", 703 | "dev": true, 704 | "dependencies": { 705 | "esbuild": "^0.18.10", 706 | "postcss": "^8.4.27", 707 | "rollup": "^3.27.1" 708 | }, 709 | "bin": { 710 | "vite": "bin/vite.js" 711 | }, 712 | "engines": { 713 | "node": "^14.18.0 || >=16.0.0" 714 | }, 715 | "optionalDependencies": { 716 | "fsevents": "~2.3.2" 717 | }, 718 | "peerDependencies": { 719 | "@types/node": ">= 14", 720 | "less": "*", 721 | "lightningcss": "^1.21.0", 722 | "sass": "*", 723 | "stylus": "*", 724 | "sugarss": "*", 725 | "terser": "^5.4.0" 726 | }, 727 | "peerDependenciesMeta": { 728 | "@types/node": { 729 | "optional": true 730 | }, 731 | "less": { 732 | "optional": true 733 | }, 734 | "lightningcss": { 735 | "optional": true 736 | }, 737 | "sass": { 738 | "optional": true 739 | }, 740 | "stylus": { 741 | "optional": true 742 | }, 743 | "sugarss": { 744 | "optional": true 745 | }, 746 | "terser": { 747 | "optional": true 748 | } 749 | } 750 | }, 751 | "node_modules/vue": { 752 | "version": "3.3.7", 753 | "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.7.tgz", 754 | "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", 755 | "dependencies": { 756 | "@vue/compiler-dom": "3.3.7", 757 | "@vue/compiler-sfc": "3.3.7", 758 | "@vue/runtime-dom": "3.3.7", 759 | "@vue/server-renderer": "3.3.7", 760 | "@vue/shared": "3.3.7" 761 | }, 762 | "peerDependencies": { 763 | "typescript": "*" 764 | }, 765 | "peerDependenciesMeta": { 766 | "typescript": { 767 | "optional": true 768 | } 769 | } 770 | } 771 | }, 772 | "dependencies": { 773 | "@babel/parser": { 774 | "version": "7.23.0", 775 | "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.0.tgz", 776 | "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" 777 | }, 778 | "@esbuild/android-arm": { 779 | "version": "0.18.20", 780 | "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz", 781 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", 782 | "dev": true, 783 | "optional": true 784 | }, 785 | "@esbuild/android-arm64": { 786 | "version": "0.18.20", 787 | "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", 788 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", 789 | "dev": true, 790 | "optional": true 791 | }, 792 | "@esbuild/android-x64": { 793 | "version": "0.18.20", 794 | "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz", 795 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", 796 | "dev": true, 797 | "optional": true 798 | }, 799 | "@esbuild/darwin-arm64": { 800 | "version": "0.18.20", 801 | "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", 802 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", 803 | "dev": true, 804 | "optional": true 805 | }, 806 | "@esbuild/darwin-x64": { 807 | "version": "0.18.20", 808 | "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", 809 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", 810 | "dev": true, 811 | "optional": true 812 | }, 813 | "@esbuild/freebsd-arm64": { 814 | "version": "0.18.20", 815 | "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", 816 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", 817 | "dev": true, 818 | "optional": true 819 | }, 820 | "@esbuild/freebsd-x64": { 821 | "version": "0.18.20", 822 | "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", 823 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", 824 | "dev": true, 825 | "optional": true 826 | }, 827 | "@esbuild/linux-arm": { 828 | "version": "0.18.20", 829 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", 830 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", 831 | "dev": true, 832 | "optional": true 833 | }, 834 | "@esbuild/linux-arm64": { 835 | "version": "0.18.20", 836 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", 837 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", 838 | "dev": true, 839 | "optional": true 840 | }, 841 | "@esbuild/linux-ia32": { 842 | "version": "0.18.20", 843 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", 844 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", 845 | "dev": true, 846 | "optional": true 847 | }, 848 | "@esbuild/linux-loong64": { 849 | "version": "0.18.20", 850 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", 851 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", 852 | "dev": true, 853 | "optional": true 854 | }, 855 | "@esbuild/linux-mips64el": { 856 | "version": "0.18.20", 857 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", 858 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", 859 | "dev": true, 860 | "optional": true 861 | }, 862 | "@esbuild/linux-ppc64": { 863 | "version": "0.18.20", 864 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", 865 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", 866 | "dev": true, 867 | "optional": true 868 | }, 869 | "@esbuild/linux-riscv64": { 870 | "version": "0.18.20", 871 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", 872 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", 873 | "dev": true, 874 | "optional": true 875 | }, 876 | "@esbuild/linux-s390x": { 877 | "version": "0.18.20", 878 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", 879 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", 880 | "dev": true, 881 | "optional": true 882 | }, 883 | "@esbuild/linux-x64": { 884 | "version": "0.18.20", 885 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", 886 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", 887 | "dev": true, 888 | "optional": true 889 | }, 890 | "@esbuild/netbsd-x64": { 891 | "version": "0.18.20", 892 | "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", 893 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", 894 | "dev": true, 895 | "optional": true 896 | }, 897 | "@esbuild/openbsd-x64": { 898 | "version": "0.18.20", 899 | "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", 900 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", 901 | "dev": true, 902 | "optional": true 903 | }, 904 | "@esbuild/sunos-x64": { 905 | "version": "0.18.20", 906 | "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", 907 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", 908 | "dev": true, 909 | "optional": true 910 | }, 911 | "@esbuild/win32-arm64": { 912 | "version": "0.18.20", 913 | "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", 914 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", 915 | "dev": true, 916 | "optional": true 917 | }, 918 | "@esbuild/win32-ia32": { 919 | "version": "0.18.20", 920 | "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", 921 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", 922 | "dev": true, 923 | "optional": true 924 | }, 925 | "@esbuild/win32-x64": { 926 | "version": "0.18.20", 927 | "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", 928 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", 929 | "dev": true, 930 | "optional": true 931 | }, 932 | "@jridgewell/sourcemap-codec": { 933 | "version": "1.4.15", 934 | "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 935 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" 936 | }, 937 | "@vitejs/plugin-vue": { 938 | "version": "4.4.0", 939 | "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz", 940 | "integrity": "sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==", 941 | "dev": true, 942 | "requires": {} 943 | }, 944 | "@vue/compiler-core": { 945 | "version": "3.3.7", 946 | "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.7.tgz", 947 | "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", 948 | "requires": { 949 | "@babel/parser": "^7.23.0", 950 | "@vue/shared": "3.3.7", 951 | "estree-walker": "^2.0.2", 952 | "source-map-js": "^1.0.2" 953 | } 954 | }, 955 | "@vue/compiler-dom": { 956 | "version": "3.3.7", 957 | "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", 958 | "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", 959 | "requires": { 960 | "@vue/compiler-core": "3.3.7", 961 | "@vue/shared": "3.3.7" 962 | } 963 | }, 964 | "@vue/compiler-sfc": { 965 | "version": "3.3.7", 966 | "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", 967 | "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", 968 | "requires": { 969 | "@babel/parser": "^7.23.0", 970 | "@vue/compiler-core": "3.3.7", 971 | "@vue/compiler-dom": "3.3.7", 972 | "@vue/compiler-ssr": "3.3.7", 973 | "@vue/reactivity-transform": "3.3.7", 974 | "@vue/shared": "3.3.7", 975 | "estree-walker": "^2.0.2", 976 | "magic-string": "^0.30.5", 977 | "postcss": "^8.4.31", 978 | "source-map-js": "^1.0.2" 979 | } 980 | }, 981 | "@vue/compiler-ssr": { 982 | "version": "3.3.7", 983 | "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", 984 | "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", 985 | "requires": { 986 | "@vue/compiler-dom": "3.3.7", 987 | "@vue/shared": "3.3.7" 988 | } 989 | }, 990 | "@vue/reactivity": { 991 | "version": "3.3.7", 992 | "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.7.tgz", 993 | "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", 994 | "requires": { 995 | "@vue/shared": "3.3.7" 996 | } 997 | }, 998 | "@vue/reactivity-transform": { 999 | "version": "3.3.7", 1000 | "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", 1001 | "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", 1002 | "requires": { 1003 | "@babel/parser": "^7.23.0", 1004 | "@vue/compiler-core": "3.3.7", 1005 | "@vue/shared": "3.3.7", 1006 | "estree-walker": "^2.0.2", 1007 | "magic-string": "^0.30.5" 1008 | } 1009 | }, 1010 | "@vue/runtime-core": { 1011 | "version": "3.3.7", 1012 | "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.7.tgz", 1013 | "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", 1014 | "requires": { 1015 | "@vue/reactivity": "3.3.7", 1016 | "@vue/shared": "3.3.7" 1017 | } 1018 | }, 1019 | "@vue/runtime-dom": { 1020 | "version": "3.3.7", 1021 | "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", 1022 | "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", 1023 | "requires": { 1024 | "@vue/runtime-core": "3.3.7", 1025 | "@vue/shared": "3.3.7", 1026 | "csstype": "^3.1.2" 1027 | } 1028 | }, 1029 | "@vue/server-renderer": { 1030 | "version": "3.3.7", 1031 | "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.7.tgz", 1032 | "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", 1033 | "requires": { 1034 | "@vue/compiler-ssr": "3.3.7", 1035 | "@vue/shared": "3.3.7" 1036 | } 1037 | }, 1038 | "@vue/shared": { 1039 | "version": "3.3.7", 1040 | "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.7.tgz", 1041 | "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==" 1042 | }, 1043 | "@vueuse/core": { 1044 | "version": "7.7.1", 1045 | "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-7.7.1.tgz", 1046 | "integrity": "sha512-PRRgbATMpoeUmkCEBtUeJgOwtew8s+4UsEd+Pm7MhkjL2ihCNrSqxNVtM6NFE4uP2sWnkGcZpCjPuNSxowJ1Ow==", 1047 | "requires": { 1048 | "@vueuse/shared": "7.7.1", 1049 | "vue-demi": "*" 1050 | }, 1051 | "dependencies": { 1052 | "@vueuse/shared": { 1053 | "version": "7.7.1", 1054 | "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-7.7.1.tgz", 1055 | "integrity": "sha512-rN2qd22AUl7VdBxihagWyhUNHCyVk9IpvBTTfHoLH9G7rGE552X1f+zeCfehuno0zXif13jPw+icW/wn2a0rnQ==", 1056 | "requires": { 1057 | "vue-demi": "*" 1058 | } 1059 | }, 1060 | "vue-demi": { 1061 | "version": "0.14.6", 1062 | "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", 1063 | "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", 1064 | "requires": {} 1065 | } 1066 | } 1067 | }, 1068 | "colorpicker-v3": { 1069 | "version": "2.10.2", 1070 | "resolved": "https://registry.npmmirror.com/colorpicker-v3/-/colorpicker-v3-2.10.2.tgz", 1071 | "integrity": "sha512-ZWPq5wcugS3NcL7DwYqVSP5mE/x45FK31olGpig+Tko5jUXk0danfEYi1Aei3lgYs+Z0zAfhbhqVuDgOdUs5Mw==", 1072 | "requires": { 1073 | "@vueuse/core": "^7.5.5", 1074 | "vue": "^3.2.25" 1075 | } 1076 | }, 1077 | "csstype": { 1078 | "version": "3.1.2", 1079 | "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", 1080 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" 1081 | }, 1082 | "esbuild": { 1083 | "version": "0.18.20", 1084 | "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz", 1085 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 1086 | "dev": true, 1087 | "requires": { 1088 | "@esbuild/android-arm": "0.18.20", 1089 | "@esbuild/android-arm64": "0.18.20", 1090 | "@esbuild/android-x64": "0.18.20", 1091 | "@esbuild/darwin-arm64": "0.18.20", 1092 | "@esbuild/darwin-x64": "0.18.20", 1093 | "@esbuild/freebsd-arm64": "0.18.20", 1094 | "@esbuild/freebsd-x64": "0.18.20", 1095 | "@esbuild/linux-arm": "0.18.20", 1096 | "@esbuild/linux-arm64": "0.18.20", 1097 | "@esbuild/linux-ia32": "0.18.20", 1098 | "@esbuild/linux-loong64": "0.18.20", 1099 | "@esbuild/linux-mips64el": "0.18.20", 1100 | "@esbuild/linux-ppc64": "0.18.20", 1101 | "@esbuild/linux-riscv64": "0.18.20", 1102 | "@esbuild/linux-s390x": "0.18.20", 1103 | "@esbuild/linux-x64": "0.18.20", 1104 | "@esbuild/netbsd-x64": "0.18.20", 1105 | "@esbuild/openbsd-x64": "0.18.20", 1106 | "@esbuild/sunos-x64": "0.18.20", 1107 | "@esbuild/win32-arm64": "0.18.20", 1108 | "@esbuild/win32-ia32": "0.18.20", 1109 | "@esbuild/win32-x64": "0.18.20" 1110 | } 1111 | }, 1112 | "estree-walker": { 1113 | "version": "2.0.2", 1114 | "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", 1115 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 1116 | }, 1117 | "fsevents": { 1118 | "version": "2.3.3", 1119 | "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", 1120 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1121 | "dev": true, 1122 | "optional": true 1123 | }, 1124 | "magic-string": { 1125 | "version": "0.30.5", 1126 | "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz", 1127 | "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", 1128 | "requires": { 1129 | "@jridgewell/sourcemap-codec": "^1.4.15" 1130 | } 1131 | }, 1132 | "nanoid": { 1133 | "version": "3.3.6", 1134 | "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", 1135 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" 1136 | }, 1137 | "picocolors": { 1138 | "version": "1.0.0", 1139 | "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", 1140 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1141 | }, 1142 | "postcss": { 1143 | "version": "8.4.31", 1144 | "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz", 1145 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", 1146 | "requires": { 1147 | "nanoid": "^3.3.6", 1148 | "picocolors": "^1.0.0", 1149 | "source-map-js": "^1.0.2" 1150 | } 1151 | }, 1152 | "rollup": { 1153 | "version": "3.29.4", 1154 | "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz", 1155 | "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", 1156 | "dev": true, 1157 | "requires": { 1158 | "fsevents": "~2.3.2" 1159 | } 1160 | }, 1161 | "source-map-js": { 1162 | "version": "1.0.2", 1163 | "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", 1164 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 1165 | }, 1166 | "vite": { 1167 | "version": "4.5.0", 1168 | "resolved": "https://registry.npmmirror.com/vite/-/vite-4.5.0.tgz", 1169 | "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", 1170 | "dev": true, 1171 | "requires": { 1172 | "esbuild": "^0.18.10", 1173 | "fsevents": "~2.3.2", 1174 | "postcss": "^8.4.27", 1175 | "rollup": "^3.27.1" 1176 | } 1177 | }, 1178 | "vue": { 1179 | "version": "3.3.7", 1180 | "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.7.tgz", 1181 | "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", 1182 | "requires": { 1183 | "@vue/compiler-dom": "3.3.7", 1184 | "@vue/compiler-sfc": "3.3.7", 1185 | "@vue/runtime-dom": "3.3.7", 1186 | "@vue/server-renderer": "3.3.7", 1187 | "@vue/shared": "3.3.7" 1188 | } 1189 | } 1190 | } 1191 | } 1192 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "watermark", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vite build", 8 | "preview": "vite preview" 9 | }, 10 | "dependencies": { 11 | "colorpicker-v3": "^2.10.2", 12 | "vue": "^3.3.4" 13 | }, 14 | "devDependencies": { 15 | "@vitejs/plugin-vue": "^4.4.0", 16 | "vite": "^4.4.11" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nash-x9/watermark/2d5124b748aa457944257eecd56d9ad38a6408be/public/favicon.ico -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 47 | 48 | 169 | 170 | 207 | -------------------------------------------------------------------------------- /src/assets/base.css: -------------------------------------------------------------------------------- 1 | /* color palette from */ 2 | :root { 3 | --vt-c-white: #ffffff; 4 | --vt-c-white-soft: #f8f8f8; 5 | --vt-c-white-mute: #f2f2f2; 6 | 7 | --vt-c-black: #181818; 8 | --vt-c-black-soft: #222222; 9 | --vt-c-black-mute: #282828; 10 | 11 | --vt-c-indigo: #2c3e50; 12 | 13 | --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); 14 | --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); 15 | --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); 16 | --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); 17 | 18 | --vt-c-text-light-1: var(--vt-c-indigo); 19 | --vt-c-text-light-2: rgba(60, 60, 60, 0.66); 20 | --vt-c-text-dark-1: var(--vt-c-white); 21 | --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); 22 | } 23 | 24 | /* semantic color variables for this project */ 25 | :root { 26 | --color-background: var(--vt-c-white); 27 | --color-background-soft: var(--vt-c-white-soft); 28 | --color-background-mute: var(--vt-c-white-mute); 29 | 30 | --color-border: var(--vt-c-divider-light-2); 31 | --color-border-hover: var(--vt-c-divider-light-1); 32 | 33 | --color-heading: var(--vt-c-text-light-1); 34 | --color-text: var(--vt-c-text-light-1); 35 | 36 | --section-gap: 160px; 37 | } 38 | 39 | @media (prefers-color-scheme: dark) { 40 | :root { 41 | --color-background: var(--vt-c-black); 42 | --color-background-soft: var(--vt-c-black-soft); 43 | --color-background-mute: var(--vt-c-black-mute); 44 | 45 | --color-border: var(--vt-c-divider-dark-2); 46 | --color-border-hover: var(--vt-c-divider-dark-1); 47 | 48 | --color-heading: var(--vt-c-text-dark-1); 49 | --color-text: var(--vt-c-text-dark-2); 50 | } 51 | } 52 | 53 | *, 54 | *::before, 55 | *::after { 56 | box-sizing: border-box; 57 | margin: 0; 58 | font-weight: normal; 59 | } 60 | 61 | body { 62 | min-height: 100vh; 63 | color: var(--color-text); 64 | background: var(--color-background); 65 | transition: color 0.5s, 66 | background-color 0.5s; 67 | line-height: 1.6; 68 | font-family: Inter, 69 | -apple-system, 70 | BlinkMacSystemFont, 71 | 'Segoe UI', 72 | Roboto, 73 | Oxygen, 74 | Ubuntu, 75 | Cantarell, 76 | 'Fira Sans', 77 | 'Droid Sans', 78 | 'Helvetica Neue', 79 | sans-serif; 80 | font-size: 15px; 81 | text-rendering: optimizeLegibility; 82 | -webkit-font-smoothing: antialiased; 83 | -moz-osx-font-smoothing: grayscale; 84 | } 85 | 86 | button { 87 | background-color: #5252fa; 88 | color: white; 89 | border: none; 90 | padding: 8px 20px; 91 | border-radius: 5px; 92 | font-size: 14px; 93 | cursor: pointer; 94 | transition: background-color 0.3s ease; 95 | } 96 | 97 | button:hover { 98 | background-color: #3838ab; 99 | } 100 | 101 | input[type="text"], input[type="number"] { 102 | border: 2px solid #ccc; 103 | border-radius: 4px; 104 | padding: 8px; 105 | font-size: 16px; 106 | width: 200px; 107 | } 108 | 109 | /* 鼠标悬停时的样式 */ 110 | input[type="text"], input[type="number"]:hover { 111 | border-color: #888; 112 | } 113 | 114 | /* 获得焦点时的样式 */ 115 | input[type="text"], input[type="number"]:focus { 116 | outline: none; 117 | border-color: #555; 118 | box-shadow: 0 0 5px #555; 119 | } 120 | 121 | input[type=range] { 122 | -webkit-appearance: none; 123 | width: 200px; 124 | height: 30px; 125 | background-color: rgba(82, 82, 250, 0.8); 126 | border-radius: 5px; /*这个属性设置使填充进度条时的图形为圆角*/ 127 | } 128 | 129 | input[type=range]::-webkit-slider-thumb { 130 | -webkit-appearance: none; /*隐藏滑块*/ 131 | } 132 | 133 | input[type=range]::-webkit-slider-runnable-track { 134 | height: 30px; 135 | border-radius: 5px; /*将轨道设为圆角的*/ 136 | box-shadow: 0 1px 1px #def3f8, inset 0 .12em .12em #0d1112; /*轨道内置阴影效果*/ 137 | } 138 | 139 | input[type=range]:focus { 140 | outline: none; /*原始的控件获取到焦点时,会显示包裹整个控件的边框,所以还需要把边框取消。*/ 141 | } 142 | 143 | input[type=range]::-webkit-slider-thumb { 144 | -webkit-appearance: none; 145 | width: 15px; 146 | height: 30px; 147 | background: #ffffff; 148 | border-radius: 20%; /*外观设置为圆形*/ 149 | border: solid 0.125em rgba(205, 224, 230, 0.5); /*设置边框*/ 150 | box-shadow: 0 .125em .125em #3b4547; /*添加底部阴影*/ 151 | } 152 | 153 | .form { 154 | display: flex; 155 | flex-wrap: wrap; 156 | } 157 | 158 | .form-item { 159 | width: 30%; 160 | display: flex; 161 | margin-bottom: 5px; 162 | } 163 | 164 | .form-item label { 165 | width: 120px; 166 | } 167 | 168 | .form-item input { 169 | justify-content: flex-end; 170 | } 171 | 172 | @media (max-width: 768px) { 173 | .form-item label { 174 | font-size: 10px; 175 | line-height: 32px; 176 | width: 100px; 177 | } 178 | 179 | .form-item { 180 | width: 100%; 181 | display: flex; 182 | margin-bottom: 5px; 183 | } 184 | 185 | .form-item input[type="text"] { 186 | width: 200px; 187 | } 188 | 189 | button { 190 | background-color: #5252fa; 191 | color: white; 192 | border: none; 193 | padding: 8px 12px; 194 | border-radius: 5px; 195 | font-size: 10px; 196 | cursor: pointer; 197 | transition: background-color 0.3s ease; 198 | } 199 | 200 | .form-item-inline { 201 | flex-direction: column; 202 | } 203 | } 204 | 205 | .form-item-inline { 206 | width: 100%; 207 | display: flex; 208 | } 209 | -------------------------------------------------------------------------------- /src/assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/main.css: -------------------------------------------------------------------------------- 1 | @import './base.css'; 2 | 3 | #app { 4 | display: flex; 5 | justify-content: center; 6 | flex: auto; 7 | } 8 | 9 | a, 10 | .green { 11 | text-decoration: none; 12 | color: hsla(160, 100%, 37%, 1); 13 | transition: 0.4s; 14 | } 15 | 16 | @media (hover: hover) { 17 | a:hover { 18 | background-color: hsla(160, 100%, 37%, 0.2); 19 | } 20 | } 21 | 22 | @media (min-width: 1024px) { 23 | body { 24 | display: flex; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import './assets/main.css' 2 | 3 | import {createApp} from 'vue' 4 | import App from './App.vue' 5 | import ColorPicker from 'colorpicker-v3' // 注册组件 6 | import 'colorpicker-v3/style.css' // 引入样式文件 7 | const app = createApp(App) 8 | app.use(ColorPicker) 9 | app.mount('#app') 10 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | 3 | import { defineConfig } from 'vite' 4 | import vue from '@vitejs/plugin-vue' 5 | 6 | // https://vitejs.dev/config/ 7 | export default defineConfig({ 8 | plugins: [ 9 | vue(), 10 | ], 11 | resolve: { 12 | alias: { 13 | '@': fileURLToPath(new URL('./src', import.meta.url)) 14 | } 15 | } 16 | }) 17 | --------------------------------------------------------------------------------