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.
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
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