feat(runtime): native platform backends and UI vessels onto main
This commit is contained in:
@@ -0,0 +1,397 @@
|
||||
___args_json
|
||||
___channel_close
|
||||
___channel_new
|
||||
___channel_recv
|
||||
___channel_send
|
||||
___channel_try_recv
|
||||
___env_get
|
||||
___exec
|
||||
___exec_bg
|
||||
___exit_program
|
||||
___float_to_str
|
||||
___fs_exists
|
||||
___fs_list_raw
|
||||
___fs_mkdir
|
||||
___fs_read
|
||||
___fs_write
|
||||
___fs_write_bytes
|
||||
___http_conn_fd
|
||||
___http_do
|
||||
___http_do_map
|
||||
___http_do_map_to_file
|
||||
___http_response
|
||||
___http_serve
|
||||
___http_serve_v2
|
||||
___http_sse_close
|
||||
___http_sse_open
|
||||
___http_sse_send
|
||||
___int_to_str
|
||||
___json_array_get
|
||||
___json_array_get_string
|
||||
___json_array_len
|
||||
___json_get
|
||||
___json_get_raw
|
||||
___json_parse_map
|
||||
___json_set
|
||||
___json_stringify_val
|
||||
___mutex_lock
|
||||
___mutex_new
|
||||
___mutex_unlock
|
||||
___print
|
||||
___print_raw
|
||||
___println
|
||||
___read_n
|
||||
___readline
|
||||
___sha256_hex
|
||||
___state_del
|
||||
___state_get
|
||||
___state_keys
|
||||
___state_set
|
||||
___str_alloc
|
||||
___str_char_at
|
||||
___str_cmp
|
||||
___str_concat_raw
|
||||
___str_len
|
||||
___str_ncmp
|
||||
___str_set_char
|
||||
___str_slice_raw
|
||||
___str_to_float
|
||||
___str_to_int
|
||||
___thread_create
|
||||
___thread_join
|
||||
___url_decode
|
||||
___url_encode
|
||||
___uuid_v4
|
||||
_aead_decrypt
|
||||
_aead_encrypt
|
||||
_append
|
||||
_args
|
||||
_base64_decode
|
||||
_base64_encode
|
||||
_base64url_decode
|
||||
_base64url_encode
|
||||
_bool_to_str
|
||||
_bytes_to_str
|
||||
_cal_cycle_phase
|
||||
_cal_format
|
||||
_cal_in
|
||||
_cal_to_instant
|
||||
_config
|
||||
_cycle_calendar
|
||||
_decimal_round
|
||||
_duration_millis
|
||||
_duration_nanos
|
||||
_duration_seconds
|
||||
_duration_to_millis
|
||||
_duration_to_nanos
|
||||
_duration_to_seconds
|
||||
_earth_calendar
|
||||
_earth_calendar_default
|
||||
_el_abs
|
||||
_el_arena_pop
|
||||
_el_arena_push
|
||||
_el_base64_encode_n
|
||||
_el_cgi_init
|
||||
_el_duration_add
|
||||
_el_duration_div
|
||||
_el_duration_eq
|
||||
_el_duration_from_nanos
|
||||
_el_duration_ge
|
||||
_el_duration_gt
|
||||
_el_duration_le
|
||||
_el_duration_lt
|
||||
_el_duration_ne
|
||||
_el_duration_scale
|
||||
_el_duration_sub
|
||||
_el_get_field
|
||||
_el_html_sanitize
|
||||
_el_instant_add_dur
|
||||
_el_instant_diff
|
||||
_el_instant_eq
|
||||
_el_instant_ge
|
||||
_el_instant_gt
|
||||
_el_instant_le
|
||||
_el_instant_lt
|
||||
_el_instant_ne
|
||||
_el_instant_sub_dur
|
||||
_el_list_append
|
||||
_el_list_clone
|
||||
_el_list_empty
|
||||
_el_list_get
|
||||
_el_list_len
|
||||
_el_list_new
|
||||
_el_local_date_add_dur
|
||||
_el_local_date_eq
|
||||
_el_local_date_lt
|
||||
_el_local_time_add_dur
|
||||
_el_map_get
|
||||
_el_map_new
|
||||
_el_map_set
|
||||
_el_max
|
||||
_el_mem_check
|
||||
_el_min
|
||||
_el_now_instant
|
||||
_el_release
|
||||
_el_request_end
|
||||
_el_request_start
|
||||
_el_retain
|
||||
_el_runtime_init_args
|
||||
_el_runtime_register_handler
|
||||
_el_runtime_register_handler_v2
|
||||
_el_sha256_bytes_n
|
||||
_el_sleep_duration
|
||||
_el_str_concat
|
||||
_engram_activate
|
||||
_engram_activate_json
|
||||
_engram_add_layer
|
||||
_engram_apply_decay_json
|
||||
_engram_compile_layered_json
|
||||
_engram_connect
|
||||
_engram_edge_between
|
||||
_engram_edge_count
|
||||
_engram_forget
|
||||
_engram_get_node
|
||||
_engram_get_node_json
|
||||
_engram_list_layers
|
||||
_engram_list_layers_json
|
||||
_engram_load
|
||||
_engram_neighbors
|
||||
_engram_neighbors_filtered
|
||||
_engram_neighbors_json
|
||||
_engram_node
|
||||
_engram_node_count
|
||||
_engram_node_full
|
||||
_engram_node_layered
|
||||
_engram_query_range
|
||||
_engram_remove_layer
|
||||
_engram_save
|
||||
_engram_scan_nodes
|
||||
_engram_scan_nodes_by_type_json
|
||||
_engram_scan_nodes_json
|
||||
_engram_search
|
||||
_engram_search_json
|
||||
_engram_stats_json
|
||||
_engram_strengthen
|
||||
_env
|
||||
_exec
|
||||
_exec_bg
|
||||
_exec_capture
|
||||
_exec_command
|
||||
_exit_program
|
||||
_float_to_int
|
||||
_float_to_str
|
||||
_format_float
|
||||
_fs_exists
|
||||
_fs_list
|
||||
_fs_list_json
|
||||
_fs_mkdir
|
||||
_fs_read
|
||||
_fs_write
|
||||
_fs_write_bytes
|
||||
_get
|
||||
_getpid_now
|
||||
_hash_sha256
|
||||
_hmac_sha256_bytes
|
||||
_hmac_sha256_hex
|
||||
_html_escape
|
||||
_html_raw
|
||||
_http_delete
|
||||
_http_get
|
||||
_http_get_engram
|
||||
_http_get_to_file
|
||||
_http_get_with_headers
|
||||
_http_patch
|
||||
_http_post
|
||||
_http_post_engram
|
||||
_http_post_form_auth
|
||||
_http_post_json
|
||||
_http_post_json_with_headers
|
||||
_http_post_to_file
|
||||
_http_post_with_headers
|
||||
_http_response
|
||||
_http_serve
|
||||
_http_serve_v2
|
||||
_http_set_handler
|
||||
_http_set_handler_v2
|
||||
_in_calendar
|
||||
_instant_from_iso8601
|
||||
_instant_to_iso8601
|
||||
_instant_to_unix_millis
|
||||
_instant_to_unix_seconds
|
||||
_int_to_float
|
||||
_int_to_str
|
||||
_is_alphanumeric
|
||||
_is_digit
|
||||
_is_letter
|
||||
_is_lowercase
|
||||
_is_punctuation
|
||||
_is_uppercase
|
||||
_is_whitespace
|
||||
_json_array_get
|
||||
_json_array_get_string
|
||||
_json_array_len
|
||||
_json_array_push
|
||||
_json_build_array
|
||||
_json_build_object
|
||||
_json_escape_string
|
||||
_json_get
|
||||
_json_get_bool
|
||||
_json_get_float
|
||||
_json_get_int
|
||||
_json_get_raw
|
||||
_json_get_string
|
||||
_json_parse
|
||||
_json_set
|
||||
_json_stringify
|
||||
_len
|
||||
_list_get
|
||||
_list_join
|
||||
_list_len
|
||||
_list_push
|
||||
_list_push_front
|
||||
_list_range
|
||||
_llm_call
|
||||
_llm_call_agentic
|
||||
_llm_call_system
|
||||
_llm_models
|
||||
_llm_register_tool
|
||||
_llm_vision
|
||||
_local_date
|
||||
_local_date_day
|
||||
_local_date_month
|
||||
_local_date_year
|
||||
_local_datetime
|
||||
_local_time
|
||||
_local_time_hour
|
||||
_local_time_minute
|
||||
_local_time_nanos
|
||||
_local_time_second
|
||||
_log_info
|
||||
_log_warn
|
||||
_map_get
|
||||
_map_set
|
||||
_mars_calendar
|
||||
_math_cos
|
||||
_math_ln
|
||||
_math_log
|
||||
_math_pi
|
||||
_math_sin
|
||||
_math_sqrt
|
||||
_native_int_to_str
|
||||
_native_list_append
|
||||
_native_list_clone
|
||||
_native_list_empty
|
||||
_native_list_get
|
||||
_native_list_len
|
||||
_native_str_to_int
|
||||
_native_string_chars
|
||||
_no_cycle_calendar
|
||||
_now
|
||||
_now_in
|
||||
_now_millis
|
||||
_now_ns
|
||||
_parse_int
|
||||
_pq_hybrid_handshake
|
||||
_pq_hybrid_keygen
|
||||
_pq_kem_decaps
|
||||
_pq_kem_encaps
|
||||
_pq_kem_keygen
|
||||
_pq_keygen_signature
|
||||
_pq_sign
|
||||
_pq_verify
|
||||
_print
|
||||
_println
|
||||
_readline
|
||||
_relative_calendar
|
||||
_rhythm_and
|
||||
_rhythm_cycle_phase
|
||||
_rhythm_cycle_start
|
||||
_rhythm_duration
|
||||
_rhythm_event
|
||||
_rhythm_matches
|
||||
_rhythm_next_after
|
||||
_rhythm_or
|
||||
_rhythm_session_start
|
||||
_rhythm_weekday
|
||||
_rhythm_weekly_at
|
||||
_sha256_bytes
|
||||
_sha256_hex
|
||||
_sha3_256_hex
|
||||
_sleep_ms
|
||||
_sleep_secs
|
||||
_state_del
|
||||
_state_get
|
||||
_state_get_or
|
||||
_state_has
|
||||
_state_keys
|
||||
_state_set
|
||||
_stdout_restore
|
||||
_stdout_to_file
|
||||
_str_char_at
|
||||
_str_char_code
|
||||
_str_concat
|
||||
_str_contains
|
||||
_str_count
|
||||
_str_count_bytes
|
||||
_str_count_chars
|
||||
_str_count_digits
|
||||
_str_count_letters
|
||||
_str_count_lines
|
||||
_str_count_words
|
||||
_str_ends_with
|
||||
_str_eq
|
||||
_str_find_chars
|
||||
_str_format
|
||||
_str_index_of
|
||||
_str_index_of_all
|
||||
_str_join
|
||||
_str_last_index_of
|
||||
_str_len
|
||||
_str_lower
|
||||
_str_lstrip
|
||||
_str_pad_left
|
||||
_str_pad_right
|
||||
_str_repeat
|
||||
_str_replace
|
||||
_str_reverse
|
||||
_str_rstrip
|
||||
_str_slice
|
||||
_str_split
|
||||
_str_split_chars
|
||||
_str_split_lines
|
||||
_str_split_n
|
||||
_str_starts_with
|
||||
_str_strip_chars
|
||||
_str_strip_prefix
|
||||
_str_strip_suffix
|
||||
_str_to_bytes
|
||||
_str_to_float
|
||||
_str_to_int
|
||||
_str_to_lower
|
||||
_str_to_upper
|
||||
_str_trim
|
||||
_str_upper
|
||||
_time_add
|
||||
_time_diff
|
||||
_time_format
|
||||
_time_from_parts
|
||||
_time_now
|
||||
_time_now_ms
|
||||
_time_now_utc
|
||||
_time_to_parts
|
||||
_ttl_cache_age
|
||||
_ttl_cache_get
|
||||
_ttl_cache_set
|
||||
_unix_millis
|
||||
_unix_seconds
|
||||
_unix_timestamp
|
||||
_unix_timestamp_ms
|
||||
_url_decode
|
||||
_url_encode
|
||||
_uuid_new
|
||||
_uuid_v4
|
||||
_zone
|
||||
_zone_local
|
||||
_zone_offset
|
||||
_zone_utc
|
||||
_zoned
|
||||
@@ -0,0 +1,340 @@
|
||||
___channel_close
|
||||
___channel_new
|
||||
___channel_recv
|
||||
___channel_send
|
||||
___channel_try_recv
|
||||
___http_do_map
|
||||
___http_do_map_to_file
|
||||
___print_raw
|
||||
___read_n
|
||||
_aead_decrypt
|
||||
_aead_encrypt
|
||||
_append
|
||||
_args
|
||||
_base64_decode
|
||||
_base64_encode
|
||||
_base64url_decode
|
||||
_base64url_encode
|
||||
_bool_to_str
|
||||
_bytes_to_str
|
||||
_cal_cycle_phase
|
||||
_cal_format
|
||||
_cal_in
|
||||
_cal_to_instant
|
||||
_config
|
||||
_cycle_calendar
|
||||
_decimal_round
|
||||
_duration_millis
|
||||
_duration_nanos
|
||||
_duration_seconds
|
||||
_duration_to_millis
|
||||
_duration_to_nanos
|
||||
_duration_to_seconds
|
||||
_earth_calendar
|
||||
_earth_calendar_default
|
||||
_el_abs
|
||||
_el_arena_pop
|
||||
_el_arena_push
|
||||
_el_base64_encode_n
|
||||
_el_cgi_init
|
||||
_el_duration_add
|
||||
_el_duration_div
|
||||
_el_duration_eq
|
||||
_el_duration_from_nanos
|
||||
_el_duration_ge
|
||||
_el_duration_gt
|
||||
_el_duration_le
|
||||
_el_duration_lt
|
||||
_el_duration_ne
|
||||
_el_duration_scale
|
||||
_el_duration_sub
|
||||
_el_get_field
|
||||
_el_html_sanitize
|
||||
_el_instant_add_dur
|
||||
_el_instant_diff
|
||||
_el_instant_eq
|
||||
_el_instant_ge
|
||||
_el_instant_gt
|
||||
_el_instant_le
|
||||
_el_instant_lt
|
||||
_el_instant_ne
|
||||
_el_instant_sub_dur
|
||||
_el_list_append
|
||||
_el_list_clone
|
||||
_el_list_empty
|
||||
_el_list_get
|
||||
_el_list_len
|
||||
_el_list_new
|
||||
_el_local_date_add_dur
|
||||
_el_local_date_eq
|
||||
_el_local_date_lt
|
||||
_el_local_time_add_dur
|
||||
_el_map_get
|
||||
_el_map_new
|
||||
_el_map_set
|
||||
_el_max
|
||||
_el_mem_check
|
||||
_el_min
|
||||
_el_now_instant
|
||||
_el_release
|
||||
_el_retain
|
||||
_el_runtime_init_args
|
||||
_el_runtime_register_handler
|
||||
_el_runtime_register_handler_v2
|
||||
_el_sha256_bytes_n
|
||||
_el_sleep_duration
|
||||
_el_str_concat
|
||||
_engram_activate
|
||||
_engram_activate_json
|
||||
_engram_add_layer
|
||||
_engram_apply_decay_json
|
||||
_engram_compile_layered_json
|
||||
_engram_connect
|
||||
_engram_edge_between
|
||||
_engram_edge_count
|
||||
_engram_forget
|
||||
_engram_get_node
|
||||
_engram_get_node_json
|
||||
_engram_list_layers
|
||||
_engram_list_layers_json
|
||||
_engram_load
|
||||
_engram_neighbors
|
||||
_engram_neighbors_filtered
|
||||
_engram_neighbors_json
|
||||
_engram_node
|
||||
_engram_node_count
|
||||
_engram_node_full
|
||||
_engram_node_layered
|
||||
_engram_query_range
|
||||
_engram_remove_layer
|
||||
_engram_save
|
||||
_engram_scan_nodes
|
||||
_engram_scan_nodes_by_type_json
|
||||
_engram_scan_nodes_json
|
||||
_engram_search
|
||||
_engram_search_json
|
||||
_engram_stats_json
|
||||
_engram_strengthen
|
||||
_env
|
||||
_exec
|
||||
_exec_bg
|
||||
_exec_capture
|
||||
_exec_command
|
||||
_exit_program
|
||||
_float_to_int
|
||||
_float_to_str
|
||||
_format_float
|
||||
_fs_exists
|
||||
_fs_list
|
||||
_fs_list_json
|
||||
_fs_mkdir
|
||||
_fs_read
|
||||
_fs_write
|
||||
_fs_write_bytes
|
||||
_get
|
||||
_getpid_now
|
||||
_hash_sha256
|
||||
_hmac_sha256_bytes
|
||||
_hmac_sha256_hex
|
||||
_html_escape
|
||||
_html_raw
|
||||
_http_delete
|
||||
_http_get
|
||||
_http_get_engram
|
||||
_http_get_to_file
|
||||
_http_get_with_headers
|
||||
_http_patch
|
||||
_http_post
|
||||
_http_post_engram
|
||||
_http_post_form_auth
|
||||
_http_post_json
|
||||
_http_post_json_with_headers
|
||||
_http_post_to_file
|
||||
_http_post_with_headers
|
||||
_http_response
|
||||
_http_serve
|
||||
_http_serve_v2
|
||||
_http_set_handler
|
||||
_http_set_handler_v2
|
||||
_in_calendar
|
||||
_instant_from_iso8601
|
||||
_instant_to_iso8601
|
||||
_instant_to_unix_millis
|
||||
_instant_to_unix_seconds
|
||||
_int_to_float
|
||||
_int_to_str
|
||||
_is_alphanumeric
|
||||
_is_digit
|
||||
_is_letter
|
||||
_is_lowercase
|
||||
_is_punctuation
|
||||
_is_uppercase
|
||||
_is_whitespace
|
||||
_json_array_get
|
||||
_json_array_get_string
|
||||
_json_array_len
|
||||
_json_array_push
|
||||
_json_build_array
|
||||
_json_build_object
|
||||
_json_escape_string
|
||||
_json_get
|
||||
_json_get_bool
|
||||
_json_get_float
|
||||
_json_get_int
|
||||
_json_get_raw
|
||||
_json_get_string
|
||||
_json_parse
|
||||
_json_set
|
||||
_json_stringify
|
||||
_len
|
||||
_list_get
|
||||
_list_join
|
||||
_list_len
|
||||
_list_push
|
||||
_list_push_front
|
||||
_list_range
|
||||
_llm_call
|
||||
_llm_call_agentic
|
||||
_llm_call_system
|
||||
_llm_models
|
||||
_llm_register_tool
|
||||
_llm_vision
|
||||
_local_date
|
||||
_local_date_day
|
||||
_local_date_month
|
||||
_local_date_year
|
||||
_local_datetime
|
||||
_local_time
|
||||
_local_time_hour
|
||||
_local_time_minute
|
||||
_local_time_nanos
|
||||
_local_time_second
|
||||
_log_info
|
||||
_log_warn
|
||||
_map_get
|
||||
_map_set
|
||||
_mars_calendar
|
||||
_math_cos
|
||||
_math_ln
|
||||
_math_log
|
||||
_math_pi
|
||||
_math_sin
|
||||
_math_sqrt
|
||||
_native_int_to_str
|
||||
_native_list_append
|
||||
_native_list_clone
|
||||
_native_list_empty
|
||||
_native_list_get
|
||||
_native_list_len
|
||||
_native_str_to_int
|
||||
_native_string_chars
|
||||
_no_cycle_calendar
|
||||
_now
|
||||
_now_in
|
||||
_now_millis
|
||||
_now_ns
|
||||
_parse_int
|
||||
_pq_hybrid_handshake
|
||||
_pq_hybrid_keygen
|
||||
_pq_kem_decaps
|
||||
_pq_kem_encaps
|
||||
_pq_kem_keygen
|
||||
_pq_keygen_signature
|
||||
_pq_sign
|
||||
_pq_verify
|
||||
_print
|
||||
_println
|
||||
_readline
|
||||
_relative_calendar
|
||||
_rhythm_and
|
||||
_rhythm_cycle_phase
|
||||
_rhythm_cycle_start
|
||||
_rhythm_duration
|
||||
_rhythm_event
|
||||
_rhythm_matches
|
||||
_rhythm_next_after
|
||||
_rhythm_or
|
||||
_rhythm_session_start
|
||||
_rhythm_weekday
|
||||
_rhythm_weekly_at
|
||||
_sha256_bytes
|
||||
_sha256_hex
|
||||
_sha3_256_hex
|
||||
_sleep_ms
|
||||
_sleep_secs
|
||||
_state_del
|
||||
_state_get
|
||||
_state_get_or
|
||||
_state_has
|
||||
_state_keys
|
||||
_state_set
|
||||
_stdout_restore
|
||||
_stdout_to_file
|
||||
_str_char_at
|
||||
_str_char_code
|
||||
_str_concat
|
||||
_str_contains
|
||||
_str_count
|
||||
_str_count_bytes
|
||||
_str_count_chars
|
||||
_str_count_digits
|
||||
_str_count_letters
|
||||
_str_count_lines
|
||||
_str_count_words
|
||||
_str_ends_with
|
||||
_str_eq
|
||||
_str_find_chars
|
||||
_str_format
|
||||
_str_index_of
|
||||
_str_index_of_all
|
||||
_str_join
|
||||
_str_last_index_of
|
||||
_str_len
|
||||
_str_lower
|
||||
_str_lstrip
|
||||
_str_pad_left
|
||||
_str_pad_right
|
||||
_str_repeat
|
||||
_str_replace
|
||||
_str_reverse
|
||||
_str_rstrip
|
||||
_str_slice
|
||||
_str_split
|
||||
_str_split_chars
|
||||
_str_split_lines
|
||||
_str_split_n
|
||||
_str_starts_with
|
||||
_str_strip_chars
|
||||
_str_strip_prefix
|
||||
_str_strip_suffix
|
||||
_str_to_bytes
|
||||
_str_to_float
|
||||
_str_to_int
|
||||
_str_to_lower
|
||||
_str_to_upper
|
||||
_str_trim
|
||||
_str_upper
|
||||
_time_add
|
||||
_time_diff
|
||||
_time_format
|
||||
_time_from_parts
|
||||
_time_now
|
||||
_time_now_ms
|
||||
_time_now_utc
|
||||
_time_to_parts
|
||||
_ttl_cache_age
|
||||
_ttl_cache_get
|
||||
_ttl_cache_set
|
||||
_unix_millis
|
||||
_unix_seconds
|
||||
_unix_timestamp
|
||||
_unix_timestamp_ms
|
||||
_url_decode
|
||||
_url_encode
|
||||
_uuid_new
|
||||
_uuid_v4
|
||||
_zone
|
||||
_zone_local
|
||||
_zone_offset
|
||||
_zone_utc
|
||||
_zoned
|
||||
@@ -0,0 +1,137 @@
|
||||
___args_json
|
||||
___button_create
|
||||
___cos_f
|
||||
___engram_activate
|
||||
___engram_activate_json
|
||||
___engram_add_layer
|
||||
___engram_compile_layered_json
|
||||
___engram_connect
|
||||
___engram_edge_between
|
||||
___engram_edge_count
|
||||
___engram_forget
|
||||
___engram_get_node
|
||||
___engram_get_node_json
|
||||
___engram_list_layers
|
||||
___engram_list_layers_json
|
||||
___engram_load
|
||||
___engram_neighbors
|
||||
___engram_neighbors_filtered
|
||||
___engram_neighbors_json
|
||||
___engram_node
|
||||
___engram_node_count
|
||||
___engram_node_full
|
||||
___engram_node_layered
|
||||
___engram_remove_layer
|
||||
___engram_save
|
||||
___engram_scan_nodes
|
||||
___engram_scan_nodes_by_type_json
|
||||
___engram_scan_nodes_json
|
||||
___engram_search
|
||||
___engram_search_json
|
||||
___engram_stats_json
|
||||
___engram_strengthen
|
||||
___env_get
|
||||
___exec
|
||||
___exec_bg
|
||||
___exit_program
|
||||
___float_to_str
|
||||
___fs_exists
|
||||
___fs_list_raw
|
||||
___fs_mkdir
|
||||
___fs_read
|
||||
___fs_write
|
||||
___fs_write_bytes
|
||||
___hstack_create
|
||||
___html_sanitize
|
||||
___http_conn_fd
|
||||
___http_do
|
||||
___http_do_to_file
|
||||
___http_response
|
||||
___http_serve
|
||||
___http_serve_v2
|
||||
___http_sse_close
|
||||
___http_sse_open
|
||||
___http_sse_send
|
||||
___image_create
|
||||
___int_to_str
|
||||
___json_array_get
|
||||
___json_array_get_string
|
||||
___json_array_len
|
||||
___json_get
|
||||
___json_get_bool
|
||||
___json_get_float
|
||||
___json_get_int
|
||||
___json_get_raw
|
||||
___json_get_string
|
||||
___json_parse
|
||||
___json_parse_map
|
||||
___json_set
|
||||
___json_stringify
|
||||
___json_stringify_val
|
||||
___label_create
|
||||
___ln_f
|
||||
___log_f
|
||||
___manifest_read
|
||||
___mutex_lock
|
||||
___mutex_new
|
||||
___mutex_unlock
|
||||
___native_init
|
||||
___native_run_loop
|
||||
___pi_f
|
||||
___print
|
||||
___println
|
||||
___readline
|
||||
___scroll_create
|
||||
___sha256_hex
|
||||
___sin_f
|
||||
___sleep_ms
|
||||
___sqrt_f
|
||||
___state_del
|
||||
___state_get
|
||||
___state_keys
|
||||
___state_set
|
||||
___str_alloc
|
||||
___str_char_at
|
||||
___str_cmp
|
||||
___str_concat_raw
|
||||
___str_len
|
||||
___str_ncmp
|
||||
___str_set_char
|
||||
___str_slice_raw
|
||||
___str_to_float
|
||||
___str_to_int
|
||||
___text_area_create
|
||||
___text_field_create
|
||||
___thread_create
|
||||
___thread_join
|
||||
___time_now_ns
|
||||
___url_decode
|
||||
___url_encode
|
||||
___uuid_v4
|
||||
___vstack_create
|
||||
___widget_add_child
|
||||
___widget_destroy
|
||||
___widget_get_text
|
||||
___widget_on_change
|
||||
___widget_on_click
|
||||
___widget_on_submit
|
||||
___widget_remove_child
|
||||
___widget_set_bg_color
|
||||
___widget_set_color
|
||||
___widget_set_corner_radius
|
||||
___widget_set_disabled
|
||||
___widget_set_flex
|
||||
___widget_set_font
|
||||
___widget_set_height
|
||||
___widget_set_hidden
|
||||
___widget_set_padding
|
||||
___widget_set_text
|
||||
___widget_set_width
|
||||
___window_create
|
||||
___window_set_title
|
||||
___window_show
|
||||
___zstack_create
|
||||
_el_request_end
|
||||
_el_request_start
|
||||
_el_seed_init_args
|
||||
_el_seed_set_http_conn_fd
|
||||
@@ -0,0 +1,55 @@
|
||||
_button
|
||||
_color_hex_a
|
||||
_color_hex_b
|
||||
_color_hex_g
|
||||
_color_hex_r
|
||||
_hex_channel
|
||||
_hex_nibble
|
||||
_hstack
|
||||
_image
|
||||
_label
|
||||
_manifest_height
|
||||
_manifest_min_height
|
||||
_manifest_min_width
|
||||
_manifest_read
|
||||
_manifest_title
|
||||
_manifest_width
|
||||
_native_init
|
||||
_native_run_loop
|
||||
_scroll
|
||||
_style_button_primary
|
||||
_style_label_body
|
||||
_style_label_heading
|
||||
_style_label_muted
|
||||
_style_surface
|
||||
_text_area
|
||||
_text_field
|
||||
_vstack
|
||||
_vstack_tight
|
||||
_widget_add_child
|
||||
_widget_destroy
|
||||
_widget_get_text
|
||||
_widget_on_change
|
||||
_widget_on_click
|
||||
_widget_on_submit
|
||||
_widget_remove_child
|
||||
_widget_set_bg_color
|
||||
_widget_set_bg_color_hex
|
||||
_widget_set_color
|
||||
_widget_set_color_hex
|
||||
_widget_set_corner_radius
|
||||
_widget_set_disabled
|
||||
_widget_set_flex
|
||||
_widget_set_font
|
||||
_widget_set_height
|
||||
_widget_set_hidden
|
||||
_widget_set_padding
|
||||
_widget_set_padding_all
|
||||
_widget_set_padding_xy
|
||||
_widget_set_text
|
||||
_widget_set_width
|
||||
_window_create
|
||||
_window_from_manifest
|
||||
_window_set_title
|
||||
_window_show
|
||||
_zstack
|
||||
Binary file not shown.
@@ -0,0 +1,459 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include "el_runtime.h"
|
||||
|
||||
el_val_t native_init(void);
|
||||
el_val_t native_run_loop(void);
|
||||
el_val_t manifest_read(el_val_t path);
|
||||
el_val_t manifest_title(el_val_t m);
|
||||
el_val_t manifest_width(el_val_t m);
|
||||
el_val_t manifest_height(el_val_t m);
|
||||
el_val_t manifest_min_width(el_val_t m);
|
||||
el_val_t manifest_min_height(el_val_t m);
|
||||
el_val_t window_create(el_val_t title, el_val_t width, el_val_t height, el_val_t min_width, el_val_t min_height);
|
||||
el_val_t window_from_manifest(el_val_t manifest_path);
|
||||
el_val_t window_show(el_val_t handle);
|
||||
el_val_t window_set_title(el_val_t handle, el_val_t title);
|
||||
el_val_t vstack(el_val_t spacing);
|
||||
el_val_t vstack_tight(void);
|
||||
el_val_t hstack(el_val_t spacing);
|
||||
el_val_t zstack(void);
|
||||
el_val_t scroll(void);
|
||||
el_val_t label(el_val_t text);
|
||||
el_val_t button(el_val_t label);
|
||||
el_val_t text_field(el_val_t placeholder);
|
||||
el_val_t text_area(el_val_t placeholder);
|
||||
el_val_t image(el_val_t path_or_name);
|
||||
el_val_t widget_set_text(el_val_t handle, el_val_t text);
|
||||
el_val_t widget_get_text(el_val_t handle);
|
||||
el_val_t widget_set_color(el_val_t handle, el_val_t r, el_val_t g, el_val_t b, el_val_t a);
|
||||
el_val_t widget_set_bg_color(el_val_t handle, el_val_t r, el_val_t g, el_val_t b, el_val_t a);
|
||||
el_val_t widget_set_font(el_val_t handle, el_val_t family, el_val_t size, el_val_t bold);
|
||||
el_val_t widget_set_padding(el_val_t handle, el_val_t top, el_val_t right, el_val_t bottom, el_val_t left);
|
||||
el_val_t widget_set_padding_all(el_val_t handle, el_val_t p);
|
||||
el_val_t widget_set_padding_xy(el_val_t handle, el_val_t px, el_val_t py);
|
||||
el_val_t widget_set_width(el_val_t handle, el_val_t width);
|
||||
el_val_t widget_set_height(el_val_t handle, el_val_t height);
|
||||
el_val_t widget_set_flex(el_val_t handle, el_val_t flex);
|
||||
el_val_t widget_set_corner_radius(el_val_t handle, el_val_t radius);
|
||||
el_val_t widget_set_disabled(el_val_t handle, el_val_t disabled);
|
||||
el_val_t widget_set_hidden(el_val_t handle, el_val_t hidden);
|
||||
el_val_t widget_add_child(el_val_t parent, el_val_t child);
|
||||
el_val_t widget_remove_child(el_val_t parent, el_val_t child);
|
||||
el_val_t widget_destroy(el_val_t handle);
|
||||
el_val_t widget_on_click(el_val_t handle, el_val_t fn_name);
|
||||
el_val_t widget_on_change(el_val_t handle, el_val_t fn_name);
|
||||
el_val_t widget_on_submit(el_val_t handle, el_val_t fn_name);
|
||||
el_val_t hex_channel(el_val_t s, el_val_t offset);
|
||||
el_val_t hex_nibble(el_val_t c);
|
||||
el_val_t color_hex_r(el_val_t hex);
|
||||
el_val_t color_hex_g(el_val_t hex);
|
||||
el_val_t color_hex_b(el_val_t hex);
|
||||
el_val_t color_hex_a(el_val_t hex);
|
||||
el_val_t widget_set_color_hex(el_val_t handle, el_val_t hex);
|
||||
el_val_t widget_set_bg_color_hex(el_val_t handle, el_val_t hex);
|
||||
el_val_t style_surface(el_val_t handle);
|
||||
el_val_t style_button_primary(el_val_t handle);
|
||||
el_val_t style_label_body(el_val_t handle);
|
||||
el_val_t style_label_heading(el_val_t handle);
|
||||
el_val_t style_label_muted(el_val_t handle);
|
||||
|
||||
el_val_t TOKEN_PRIMARY;
|
||||
el_val_t TOKEN_ON_PRIMARY;
|
||||
el_val_t TOKEN_BACKGROUND;
|
||||
el_val_t TOKEN_ON_BG;
|
||||
el_val_t TOKEN_SURFACE;
|
||||
el_val_t TOKEN_ON_SURFACE;
|
||||
el_val_t TOKEN_OUTLINE;
|
||||
el_val_t TOKEN_ERROR;
|
||||
|
||||
el_val_t native_init(void) {
|
||||
__native_init();
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t native_run_loop(void) {
|
||||
__native_run_loop();
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t manifest_read(el_val_t path) {
|
||||
return __manifest_read(path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t manifest_title(el_val_t m) {
|
||||
return json_get_string(m, EL_STR("title"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t manifest_width(el_val_t m) {
|
||||
return json_get_int(m, EL_STR("width"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t manifest_height(el_val_t m) {
|
||||
return json_get_int(m, EL_STR("height"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t manifest_min_width(el_val_t m) {
|
||||
return json_get_int(m, EL_STR("min_width"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t manifest_min_height(el_val_t m) {
|
||||
return json_get_int(m, EL_STR("min_height"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t window_create(el_val_t title, el_val_t width, el_val_t height, el_val_t min_width, el_val_t min_height) {
|
||||
return __window_create(title, width, height, min_width, min_height);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t window_from_manifest(el_val_t manifest_path) {
|
||||
el_val_t m = manifest_read(manifest_path);
|
||||
el_val_t title = manifest_title(m);
|
||||
el_val_t w = manifest_width(m);
|
||||
el_val_t h = manifest_height(m);
|
||||
el_val_t mw = manifest_min_width(m);
|
||||
el_val_t mh = manifest_min_height(m);
|
||||
el_val_t safe_w = ({ el_val_t _if_result_1 = 0; if ((w > 0)) { _if_result_1 = (w); } else { _if_result_1 = (1200); } _if_result_1; });
|
||||
el_val_t safe_h = ({ el_val_t _if_result_2 = 0; if ((h > 0)) { _if_result_2 = (h); } else { _if_result_2 = (800); } _if_result_2; });
|
||||
el_val_t safe_mw = ({ el_val_t _if_result_3 = 0; if ((mw > 0)) { _if_result_3 = (mw); } else { _if_result_3 = (600); } _if_result_3; });
|
||||
el_val_t safe_mh = ({ el_val_t _if_result_4 = 0; if ((mh > 0)) { _if_result_4 = (mh); } else { _if_result_4 = (400); } _if_result_4; });
|
||||
el_val_t safe_t = ({ el_val_t _if_result_5 = 0; if ((str_len(title) > 0)) { _if_result_5 = (title); } else { _if_result_5 = (EL_STR("App")); } _if_result_5; });
|
||||
return window_create(safe_t, safe_w, safe_h, safe_mw, safe_mh);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t window_show(el_val_t handle) {
|
||||
__window_show(handle);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t window_set_title(el_val_t handle, el_val_t title) {
|
||||
__window_set_title(handle, title);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t vstack(el_val_t spacing) {
|
||||
return __vstack_create(spacing);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t vstack_tight(void) {
|
||||
return __vstack_create(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t hstack(el_val_t spacing) {
|
||||
return __hstack_create(spacing);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t zstack(void) {
|
||||
return __zstack_create();
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t scroll(void) {
|
||||
return __scroll_create();
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t label(el_val_t text) {
|
||||
return __label_create(text);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t button(el_val_t label) {
|
||||
return __button_create(label);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t text_field(el_val_t placeholder) {
|
||||
return __text_field_create(placeholder);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t text_area(el_val_t placeholder) {
|
||||
return __text_area_create(placeholder);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t image(el_val_t path_or_name) {
|
||||
return __image_create(path_or_name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_text(el_val_t handle, el_val_t text) {
|
||||
__widget_set_text(handle, text);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_get_text(el_val_t handle) {
|
||||
return __widget_get_text(handle);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_color(el_val_t handle, el_val_t r, el_val_t g, el_val_t b, el_val_t a) {
|
||||
__widget_set_color(handle, r, g, b, a);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_bg_color(el_val_t handle, el_val_t r, el_val_t g, el_val_t b, el_val_t a) {
|
||||
__widget_set_bg_color(handle, r, g, b, a);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_font(el_val_t handle, el_val_t family, el_val_t size, el_val_t bold) {
|
||||
el_val_t bold_int = ({ el_val_t _if_result_6 = 0; if (bold) { _if_result_6 = (1); } else { _if_result_6 = (0); } _if_result_6; });
|
||||
__widget_set_font(handle, family, size, bold_int);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_padding(el_val_t handle, el_val_t top, el_val_t right, el_val_t bottom, el_val_t left) {
|
||||
__widget_set_padding(handle, top, right, bottom, left);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_padding_all(el_val_t handle, el_val_t p) {
|
||||
__widget_set_padding(handle, p, p, p, p);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_padding_xy(el_val_t handle, el_val_t px, el_val_t py) {
|
||||
__widget_set_padding(handle, py, px, py, px);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_width(el_val_t handle, el_val_t width) {
|
||||
__widget_set_width(handle, width);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_height(el_val_t handle, el_val_t height) {
|
||||
__widget_set_height(handle, height);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_flex(el_val_t handle, el_val_t flex) {
|
||||
__widget_set_flex(handle, flex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_corner_radius(el_val_t handle, el_val_t radius) {
|
||||
__widget_set_corner_radius(handle, radius);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_disabled(el_val_t handle, el_val_t disabled) {
|
||||
el_val_t d = ({ el_val_t _if_result_7 = 0; if (disabled) { _if_result_7 = (1); } else { _if_result_7 = (0); } _if_result_7; });
|
||||
__widget_set_disabled(handle, d);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_hidden(el_val_t handle, el_val_t hidden) {
|
||||
el_val_t h = ({ el_val_t _if_result_8 = 0; if (hidden) { _if_result_8 = (1); } else { _if_result_8 = (0); } _if_result_8; });
|
||||
__widget_set_hidden(handle, h);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_add_child(el_val_t parent, el_val_t child) {
|
||||
__widget_add_child(parent, child);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_remove_child(el_val_t parent, el_val_t child) {
|
||||
__widget_remove_child(parent, child);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_destroy(el_val_t handle) {
|
||||
__widget_destroy(handle);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_on_click(el_val_t handle, el_val_t fn_name) {
|
||||
__widget_on_click(handle, fn_name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_on_change(el_val_t handle, el_val_t fn_name) {
|
||||
__widget_on_change(handle, fn_name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_on_submit(el_val_t handle, el_val_t fn_name) {
|
||||
__widget_on_submit(handle, fn_name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t hex_channel(el_val_t s, el_val_t offset) {
|
||||
el_val_t hi = str_slice(s, offset, (offset + 1));
|
||||
el_val_t lo = str_slice(s, (offset + 1), (offset + 2));
|
||||
el_val_t h = hex_nibble(hi);
|
||||
el_val_t l = hex_nibble(lo);
|
||||
return ((h * 16) + l);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t hex_nibble(el_val_t c) {
|
||||
if (str_eq(c, EL_STR("0"))) {
|
||||
return 0;
|
||||
}
|
||||
if (str_eq(c, EL_STR("1"))) {
|
||||
return 1;
|
||||
}
|
||||
if (str_eq(c, EL_STR("2"))) {
|
||||
return 2;
|
||||
}
|
||||
if (str_eq(c, EL_STR("3"))) {
|
||||
return 3;
|
||||
}
|
||||
if (str_eq(c, EL_STR("4"))) {
|
||||
return 4;
|
||||
}
|
||||
if (str_eq(c, EL_STR("5"))) {
|
||||
return 5;
|
||||
}
|
||||
if (str_eq(c, EL_STR("6"))) {
|
||||
return 6;
|
||||
}
|
||||
if (str_eq(c, EL_STR("7"))) {
|
||||
return 7;
|
||||
}
|
||||
if (str_eq(c, EL_STR("8"))) {
|
||||
return 8;
|
||||
}
|
||||
if (str_eq(c, EL_STR("9"))) {
|
||||
return 9;
|
||||
}
|
||||
if (str_eq(c, EL_STR("a"))) {
|
||||
return 10;
|
||||
}
|
||||
if (str_eq(c, EL_STR("b"))) {
|
||||
return 11;
|
||||
}
|
||||
if (str_eq(c, EL_STR("c"))) {
|
||||
return 12;
|
||||
}
|
||||
if (str_eq(c, EL_STR("d"))) {
|
||||
return 13;
|
||||
}
|
||||
if (str_eq(c, EL_STR("e"))) {
|
||||
return 14;
|
||||
}
|
||||
if (str_eq(c, EL_STR("f"))) {
|
||||
return 15;
|
||||
}
|
||||
if (str_eq(c, EL_STR("A"))) {
|
||||
return 10;
|
||||
}
|
||||
if (str_eq(c, EL_STR("B"))) {
|
||||
return 11;
|
||||
}
|
||||
if (str_eq(c, EL_STR("C"))) {
|
||||
return 12;
|
||||
}
|
||||
if (str_eq(c, EL_STR("D"))) {
|
||||
return 13;
|
||||
}
|
||||
if (str_eq(c, EL_STR("E"))) {
|
||||
return 14;
|
||||
}
|
||||
if (str_eq(c, EL_STR("F"))) {
|
||||
return 15;
|
||||
}
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t color_hex_r(el_val_t hex) {
|
||||
el_val_t s = ({ el_val_t _if_result_9 = 0; if (str_starts_with(hex, EL_STR("#"))) { _if_result_9 = (str_slice(hex, 1, str_len(hex))); } else { _if_result_9 = (hex); } _if_result_9; });
|
||||
el_val_t v = hex_channel(s, 0);
|
||||
return float_div(int_to_float(v), el_from_float(255.0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t color_hex_g(el_val_t hex) {
|
||||
el_val_t s = ({ el_val_t _if_result_10 = 0; if (str_starts_with(hex, EL_STR("#"))) { _if_result_10 = (str_slice(hex, 1, str_len(hex))); } else { _if_result_10 = (hex); } _if_result_10; });
|
||||
el_val_t v = hex_channel(s, 2);
|
||||
return float_div(int_to_float(v), el_from_float(255.0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t color_hex_b(el_val_t hex) {
|
||||
el_val_t s = ({ el_val_t _if_result_11 = 0; if (str_starts_with(hex, EL_STR("#"))) { _if_result_11 = (str_slice(hex, 1, str_len(hex))); } else { _if_result_11 = (hex); } _if_result_11; });
|
||||
el_val_t v = hex_channel(s, 4);
|
||||
return float_div(int_to_float(v), el_from_float(255.0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t color_hex_a(el_val_t hex) {
|
||||
el_val_t s = ({ el_val_t _if_result_12 = 0; if (str_starts_with(hex, EL_STR("#"))) { _if_result_12 = (str_slice(hex, 1, str_len(hex))); } else { _if_result_12 = (hex); } _if_result_12; });
|
||||
if (str_len(s) < 8) {
|
||||
return el_from_float(1.0);
|
||||
}
|
||||
el_val_t v = hex_channel(s, 6);
|
||||
return float_div(int_to_float(v), el_from_float(255.0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_color_hex(el_val_t handle, el_val_t hex) {
|
||||
widget_set_color(handle, color_hex_r(hex), color_hex_g(hex), color_hex_b(hex), color_hex_a(hex));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t widget_set_bg_color_hex(el_val_t handle, el_val_t hex) {
|
||||
widget_set_bg_color(handle, color_hex_r(hex), color_hex_g(hex), color_hex_b(hex), color_hex_a(hex));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t style_surface(el_val_t handle) {
|
||||
widget_set_bg_color_hex(handle, TOKEN_SURFACE);
|
||||
widget_set_corner_radius(handle, 8);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t style_button_primary(el_val_t handle) {
|
||||
widget_set_bg_color_hex(handle, TOKEN_PRIMARY);
|
||||
widget_set_color_hex(handle, TOKEN_ON_PRIMARY);
|
||||
widget_set_corner_radius(handle, 8);
|
||||
widget_set_padding_xy(handle, 16, 8);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t style_label_body(el_val_t handle) {
|
||||
widget_set_color_hex(handle, TOKEN_ON_BG);
|
||||
widget_set_font(handle, EL_STR("system"), 14, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t style_label_heading(el_val_t handle) {
|
||||
widget_set_color_hex(handle, TOKEN_ON_BG);
|
||||
widget_set_font(handle, EL_STR("system"), 20, 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t style_label_muted(el_val_t handle) {
|
||||
widget_set_color_hex(handle, TOKEN_OUTLINE);
|
||||
widget_set_font(handle, EL_STR("system"), 12, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int _argc, char** _argv) {
|
||||
el_runtime_init_args(_argc, _argv);
|
||||
TOKEN_PRIMARY = EL_STR("#60a5fa");
|
||||
TOKEN_ON_PRIMARY = EL_STR("#0f172a");
|
||||
TOKEN_BACKGROUND = EL_STR("#0f172a");
|
||||
TOKEN_ON_BG = EL_STR("#f8fafc");
|
||||
TOKEN_SURFACE = EL_STR("#1e293b");
|
||||
TOKEN_ON_SURFACE = EL_STR("#f8fafc");
|
||||
TOKEN_OUTLINE = EL_STR("#475569");
|
||||
TOKEN_ERROR = EL_STR("#f87171");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include "el_runtime.h"
|
||||
|
||||
el_val_t native_init(void);
|
||||
el_val_t native_run_loop(void);
|
||||
el_val_t manifest_read(el_val_t path);
|
||||
el_val_t manifest_title(el_val_t m);
|
||||
el_val_t manifest_width(el_val_t m);
|
||||
el_val_t manifest_height(el_val_t m);
|
||||
el_val_t manifest_min_width(el_val_t m);
|
||||
el_val_t manifest_min_height(el_val_t m);
|
||||
el_val_t window_create(el_val_t title, el_val_t width, el_val_t height, el_val_t min_width, el_val_t min_height);
|
||||
el_val_t window_from_manifest(el_val_t manifest_path);
|
||||
el_val_t window_show(el_val_t handle);
|
||||
el_val_t window_set_title(el_val_t handle, el_val_t title);
|
||||
el_val_t vstack(el_val_t spacing);
|
||||
el_val_t vstack_tight(void);
|
||||
el_val_t hstack(el_val_t spacing);
|
||||
el_val_t zstack(void);
|
||||
el_val_t scroll(void);
|
||||
el_val_t label(el_val_t text);
|
||||
el_val_t button(el_val_t label);
|
||||
el_val_t text_field(el_val_t placeholder);
|
||||
el_val_t text_area(el_val_t placeholder);
|
||||
el_val_t image(el_val_t path_or_name);
|
||||
el_val_t widget_set_text(el_val_t handle, el_val_t text);
|
||||
el_val_t widget_get_text(el_val_t handle);
|
||||
el_val_t widget_set_color(el_val_t handle, el_val_t r, el_val_t g, el_val_t b, el_val_t a);
|
||||
el_val_t widget_set_bg_color(el_val_t handle, el_val_t r, el_val_t g, el_val_t b, el_val_t a);
|
||||
el_val_t widget_set_font(el_val_t handle, el_val_t family, el_val_t size, el_val_t bold);
|
||||
el_val_t widget_set_padding(el_val_t handle, el_val_t top, el_val_t right, el_val_t bottom, el_val_t left);
|
||||
el_val_t widget_set_padding_all(el_val_t handle, el_val_t p);
|
||||
el_val_t widget_set_padding_xy(el_val_t handle, el_val_t px, el_val_t py);
|
||||
el_val_t widget_set_width(el_val_t handle, el_val_t width);
|
||||
el_val_t widget_set_height(el_val_t handle, el_val_t height);
|
||||
el_val_t widget_set_flex(el_val_t handle, el_val_t flex);
|
||||
el_val_t widget_set_corner_radius(el_val_t handle, el_val_t radius);
|
||||
el_val_t widget_set_disabled(el_val_t handle, el_val_t disabled);
|
||||
el_val_t widget_set_hidden(el_val_t handle, el_val_t hidden);
|
||||
el_val_t widget_add_child(el_val_t parent, el_val_t child);
|
||||
el_val_t widget_remove_child(el_val_t parent, el_val_t child);
|
||||
el_val_t widget_destroy(el_val_t handle);
|
||||
el_val_t widget_on_click(el_val_t handle, el_val_t fn_name);
|
||||
el_val_t widget_on_change(el_val_t handle, el_val_t fn_name);
|
||||
el_val_t widget_on_submit(el_val_t handle, el_val_t fn_name);
|
||||
el_val_t hex_channel(el_val_t s, el_val_t offset);
|
||||
el_val_t hex_nibble(el_val_t c);
|
||||
el_val_t color_hex_r(el_val_t hex);
|
||||
el_val_t color_hex_g(el_val_t hex);
|
||||
el_val_t color_hex_b(el_val_t hex);
|
||||
el_val_t color_hex_a(el_val_t hex);
|
||||
el_val_t widget_set_color_hex(el_val_t handle, el_val_t hex);
|
||||
el_val_t widget_set_bg_color_hex(el_val_t handle, el_val_t hex);
|
||||
el_val_t style_surface(el_val_t handle);
|
||||
el_val_t style_button_primary(el_val_t handle);
|
||||
el_val_t style_label_body(el_val_t handle);
|
||||
el_val_t style_label_heading(el_val_t handle);
|
||||
el_val_t style_label_muted(el_val_t handle);
|
||||
|
||||
el_val_t TOKEN_PRIMARY;
|
||||
el_val_t TOKEN_ON_PRIMARY;
|
||||
el_val_t TOKEN_BACKGROUND;
|
||||
el_val_t TOKEN_ON_BG;
|
||||
el_val_t TOKEN_SURFACE;
|
||||
el_val_t TOKEN_ON_SURFACE;
|
||||
el_val_t TOKEN_OUTLINE;
|
||||
el_val_t TOKEN_ERROR;
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,123 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include "el_runtime.h"
|
||||
|
||||
el_val_t on_greet_click(el_val_t widget, el_val_t data);
|
||||
el_val_t on_counter_click(el_val_t widget, el_val_t data);
|
||||
el_val_t on_name_change(el_val_t widget, el_val_t data);
|
||||
el_val_t app_build(el_val_t window);
|
||||
|
||||
el_val_t g_window;
|
||||
el_val_t g_label;
|
||||
el_val_t g_input;
|
||||
el_val_t g_button;
|
||||
el_val_t g_counter;
|
||||
el_val_t g_counter_lbl;
|
||||
el_val_t manifest_env;
|
||||
el_val_t manifest_path;
|
||||
el_val_t win;
|
||||
el_val_t g_window;
|
||||
|
||||
el_val_t on_greet_click(el_val_t widget, el_val_t data) {
|
||||
el_val_t name = widget_get_text(g_input);
|
||||
el_val_t greeting = ({ el_val_t _if_result_1 = 0; if ((str_len(name) > 0)) { _if_result_1 = (el_str_concat(el_str_concat(EL_STR("Hello, "), name), EL_STR("!"))); } else { _if_result_1 = (EL_STR("Hello, World!")); } _if_result_1; });
|
||||
widget_set_text(g_label, greeting);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t on_counter_click(el_val_t widget, el_val_t data) {
|
||||
el_val_t g_counter = (g_counter + 1);
|
||||
widget_set_text(g_counter_lbl, el_str_concat(EL_STR("Clicks: "), int_to_str(g_counter)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t on_name_change(el_val_t widget, el_val_t data) {
|
||||
el_val_t has_text = (str_len(data) > 0);
|
||||
widget_set_disabled(g_button, !has_text);
|
||||
return 0;
|
||||
}
|
||||
|
||||
el_val_t app_build(el_val_t window) {
|
||||
el_val_t root = vstack(0);
|
||||
widget_set_padding_all(root, 24);
|
||||
widget_set_bg_color_hex(root, EL_STR("#0f172a"));
|
||||
widget_set_flex(root, 1);
|
||||
el_val_t title = label(EL_STR("el-native \xe2\x80\x94 native widget demo"));
|
||||
style_label_heading(title);
|
||||
widget_add_child(root, title);
|
||||
el_val_t gap1 = label(EL_STR(""));
|
||||
widget_set_height(gap1, 16);
|
||||
widget_add_child(root, gap1);
|
||||
el_val_t subtitle = label(EL_STR("AppKit controls from el code, no ObjC in the app layer."));
|
||||
style_label_muted(subtitle);
|
||||
widget_add_child(root, subtitle);
|
||||
el_val_t gap2 = label(EL_STR(""));
|
||||
widget_set_height(gap2, 24);
|
||||
widget_add_child(root, gap2);
|
||||
el_val_t input_row = hstack(8);
|
||||
el_val_t name_label = label(EL_STR("Name:"));
|
||||
style_label_body(name_label);
|
||||
widget_set_width(name_label, 60);
|
||||
el_val_t input = text_field(EL_STR("Enter your name\xe2\x80\xa6"));
|
||||
style_label_body(input);
|
||||
widget_set_flex(input, 1);
|
||||
widget_on_change(input, EL_STR("on_name_change"));
|
||||
el_val_t g_input = input;
|
||||
el_val_t greet_btn = button(EL_STR("Greet"));
|
||||
style_button_primary(greet_btn);
|
||||
widget_set_disabled(greet_btn, 1);
|
||||
widget_on_click(greet_btn, EL_STR("on_greet_click"));
|
||||
el_val_t g_button = greet_btn;
|
||||
widget_add_child(input_row, name_label);
|
||||
widget_add_child(input_row, input);
|
||||
widget_add_child(input_row, greet_btn);
|
||||
widget_add_child(root, input_row);
|
||||
el_val_t gap3 = label(EL_STR(""));
|
||||
widget_set_height(gap3, 12);
|
||||
widget_add_child(root, gap3);
|
||||
el_val_t greeting = label(EL_STR("Waiting for name\xe2\x80\xa6"));
|
||||
style_label_body(greeting);
|
||||
widget_set_color_hex(greeting, EL_STR("#60a5fa"));
|
||||
widget_set_font(greeting, EL_STR("system"), 16, 1);
|
||||
el_val_t g_label = greeting;
|
||||
widget_add_child(root, greeting);
|
||||
el_val_t gap4 = label(EL_STR(""));
|
||||
widget_set_height(gap4, 24);
|
||||
widget_add_child(root, gap4);
|
||||
el_val_t counter_row = hstack(12);
|
||||
el_val_t counter_lbl = label(EL_STR("Clicks: 0"));
|
||||
style_label_body(counter_lbl);
|
||||
el_val_t g_counter_lbl = counter_lbl;
|
||||
el_val_t counter_btn = button(EL_STR("Click me"));
|
||||
style_button_primary(counter_btn);
|
||||
widget_on_click(counter_btn, EL_STR("on_counter_click"));
|
||||
widget_add_child(counter_row, counter_lbl);
|
||||
widget_add_child(counter_row, counter_btn);
|
||||
widget_add_child(root, counter_row);
|
||||
widget_add_child(window, root);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int _argc, char** _argv) {
|
||||
el_runtime_init_args(_argc, _argv);
|
||||
g_window = (-1);
|
||||
g_label = (-1);
|
||||
g_input = (-1);
|
||||
g_button = (-1);
|
||||
g_counter = 0;
|
||||
g_counter_lbl = (-1);
|
||||
native_init();
|
||||
manifest_env = env(EL_STR("EL_MANIFEST"));
|
||||
manifest_path = ({ el_val_t _if_result_2 = 0; if ((str_len(manifest_env) > 0)) { _if_result_2 = (manifest_env); } else { _if_result_2 = (EL_STR("manifest.el")); } _if_result_2; });
|
||||
win = window_from_manifest(manifest_path);
|
||||
g_window = win;
|
||||
if (win < 0) {
|
||||
println(EL_STR("Error: failed to create window. Is EL_TARGET_MACOS defined?"));
|
||||
exit_program(1);
|
||||
}
|
||||
app_build(win);
|
||||
window_show(win);
|
||||
native_run_loop();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user