From 86b92f90a795c76845126280954b69ca1d43a0fa Mon Sep 17 00:00:00 2001 From: Insality Date: Tue, 17 Oct 2023 21:09:45 +0300 Subject: [PATCH 01/10] Annotations update --- docs/modules/BaseComponent.html | 100 +++---- docs/modules/Blocker.html | 10 +- docs/modules/Button.html | 24 +- docs/modules/Checkbox.html | 12 +- docs/modules/CheckboxGroup.html | 8 +- docs/modules/DataList.html | 6 +- docs/modules/Drag.html | 16 +- docs/modules/DruidEvent.html | 8 +- docs/modules/DruidInstance.html | 36 +-- docs/modules/DynamicGrid.html | 4 +- docs/modules/Helper.html | 36 +-- docs/modules/Hotkey.html | 8 +- docs/modules/Hover.html | 16 +- docs/modules/Input.html | 14 +- docs/modules/Layout.html | 6 +- docs/modules/PinKnob.html | 6 +- docs/modules/Progress.html | 4 +- docs/modules/RadioGroup.html | 4 +- docs/modules/RichInput.html | 4 +- docs/modules/RichText.html | 36 ++- docs/modules/Scroll.html | 54 ++-- docs/modules/Slider.html | 10 +- docs/modules/StaticGrid.html | 10 +- docs/modules/Swipe.html | 6 +- docs/modules/Text.html | 10 +- docs/modules/Timer.html | 6 +- druid/annotations.lua | 358 ++++++++++++------------- druid/base/back_handler.lua | 2 +- druid/base/blocker.lua | 6 +- druid/base/button.lua | 24 +- druid/base/drag.lua | 14 +- druid/base/hover.lua | 14 +- druid/base/scroll.lua | 29 +- druid/base/static_grid.lua | 14 +- druid/base/text.lua | 6 +- druid/component.lua | 33 +-- druid/const.lua | 2 +- druid/custom/pin_knob/pin_knob.lua | 4 +- druid/custom/rich_input/rich_input.lua | 2 +- druid/custom/rich_text/rich_text.lua | 3 +- druid/event.lua | 8 +- druid/extended/checkbox.lua | 10 +- druid/extended/checkbox_group.lua | 6 +- druid/extended/data_list.lua | 4 +- druid/extended/dynamic_grid.lua | 6 +- druid/extended/hotkey.lua | 6 +- druid/extended/input.lua | 12 +- druid/extended/layout.lua | 4 +- druid/extended/progress.lua | 2 +- druid/extended/radio_group.lua | 2 +- druid/extended/slider.lua | 8 +- druid/extended/swipe.lua | 4 +- druid/extended/timer.lua | 4 +- druid/helper.lua | 28 +- druid/system/druid_instance.lua | 28 +- utils/annotations_manual.lua | 17 +- 56 files changed, 540 insertions(+), 574 deletions(-) diff --git a/docs/modules/BaseComponent.html b/docs/modules/BaseComponent.html index 33f3032..b05ce5a 100644 --- a/docs/modules/BaseComponent.html +++ b/docs/modules/BaseComponent.html @@ -98,67 +98,67 @@ return AwesomeComponent

Functions

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
component:get_childrens(self)get_childrens(self) Return all children components, recursive
component:get_context(self)get_context(self) Context used as first arg in all Druid events
component:get_druid(self)get_druid(self) Get Druid instance for inner component creation.
component:get_input_priority(self)get_input_priority(self) Return component input priority
component:get_name(self)get_name(self) Return component name
component:get_node(self, node_or_name)get_node(self, node_or_name) Get component node by name.
component:get_parent_component(self)get_parent_component(self) Return the parent component if exist
component:get_parent_name(self)get_parent_name(self) Return parent component name
component:get_template(self)get_template(self) Get current component template name.
component:get_uid(self)get_uid(self) Return component UID.
component:reset_input_priority(self)reset_input_priority(self) Reset component input priority to default value
component:set_input_enabled(self, state)set_input_enabled(self, state) Set component input state.
component:set_input_priority(self, value, is_temporary)set_input_priority(self, value, is_temporary) Set component input priority
component:set_nodes(self, nodes)set_nodes(self, nodes) Set current component nodes.
component:set_style(self, druid_style)set_style(self, druid_style) Set current component style table.
component:set_template(self, template)set_template(self, template) Set component template name.
@@ -171,8 +171,8 @@ return AwesomeComponent
- - component:get_childrens(self) + + get_childrens(self)
Return all children components, recursive @@ -198,8 +198,8 @@ return AwesomeComponent
- - component:get_context(self) + + get_context(self)
Context used as first arg in all Druid events Context is usually self of gui_script. @@ -225,8 +225,8 @@ return AwesomeComponent
- - component:get_druid(self) + + get_druid(self)
Get Druid instance for inner component creation. @@ -243,7 +243,7 @@ return AwesomeComponent

Returns:

    - Druid + DruidInstance Druid instance with component context
@@ -252,8 +252,8 @@ return AwesomeComponent
- - component:get_input_priority(self) + + get_input_priority(self)
Return component input priority @@ -279,8 +279,8 @@ return AwesomeComponent
- - component:get_name(self) + + get_name(self)
Return component name @@ -306,8 +306,8 @@ return AwesomeComponent
- - component:get_node(self, node_or_name) + + get_node(self, node_or_name)
Get component node by name. @@ -341,8 +341,8 @@ return AwesomeComponent
- - component:get_parent_component(self) + + get_parent_component(self)
Return the parent component if exist @@ -368,8 +368,8 @@ return AwesomeComponent
- - component:get_parent_name(self) + + get_parent_name(self)
Return parent component name @@ -395,8 +395,8 @@ return AwesomeComponent
- - component:get_template(self) + + get_template(self)
Get current component template name. @@ -422,8 +422,8 @@ return AwesomeComponent
- - component:get_uid(self) + + get_uid(self)
Return component UID. @@ -450,8 +450,8 @@ return AwesomeComponent
- - component:reset_input_priority(self) + + reset_input_priority(self)
Reset component input priority to default value @@ -477,8 +477,8 @@ return AwesomeComponent
- - component:set_input_enabled(self, state) + + set_input_enabled(self, state)
Set component input state. By default it enabled @@ -492,7 +492,7 @@ return AwesomeComponent BaseComponent
  • state - bool + boolean The component input state
  • @@ -509,8 +509,8 @@ return AwesomeComponent
    - - component:set_input_priority(self, value, is_temporary) + + set_input_priority(self, value, is_temporary)
    Set component input priority Default value: 10 @@ -544,8 +544,8 @@ return AwesomeComponent
    - - component:set_nodes(self, nodes) + + set_nodes(self, nodes)
    Set current component nodes. @@ -582,8 +582,8 @@ self:set_nodes(nodes)
    - - component:set_style(self, druid_style) + + set_style(self, druid_style)
    Set current component style table. @@ -615,8 +615,8 @@ self:set_nodes(nodes)
    - - component:set_template(self, template) + + set_template(self, template)
    Set component template name. diff --git a/docs/modules/Blocker.html b/docs/modules/Blocker.html index a27a4fc..de139c1 100644 --- a/docs/modules/Blocker.html +++ b/docs/modules/Blocker.html @@ -95,7 +95,7 @@ local blocker = self.druid:new_blocker(node) - + @@ -126,7 +126,7 @@ local blocker = self.druid:new_blocker(node) init(self, node)
    - Blocker constructor + The Blocker constructor

    Parameters:

    @@ -165,8 +165,8 @@ local blocker = self.druid:new_blocker(node)

    Returns:

      - bool - True, if blocker is enabled + boolean + @True, if blocker is enabled
    @@ -189,7 +189,7 @@ local blocker = self.druid:new_blocker(node) Blocker
  • state - bool + boolean Enabled state
  • diff --git a/docs/modules/Button.html b/docs/modules/Button.html index f4d6b1b..72b228b 100644 --- a/docs/modules/Button.html +++ b/docs/modules/Button.html @@ -97,7 +97,7 @@ print("Also the button component is passed in callback params") end -local custom_args = "Any variable to pass inside callback" +local custom_args = "any variable to pass inside callback" local button = self.druid:new_button("button_name", on_button_click, custom_args) @@ -254,7 +254,7 @@ local button = self.druid:new_button("button_name", on_button_click, c Button
  • node - string or Node + string or node Node name or GUI Node itself
  • callback @@ -267,7 +267,7 @@ local button = self.druid:new_button("button_name", on_button_click, c (optional)
  • anim_node - string or Node + string or node Node to animate instead of trigger node. (optional)
  • @@ -298,8 +298,8 @@ local button = self.druid:new_button("button_name", on_button_click, c

    Returns:

      - bool - True, if button is enabled now, False overwise + boolean + @True, if button is enabled now, False overwise
    @@ -401,7 +401,7 @@ local button = self.druid:new_button("button_name", on_button_click, c Button
  • state - bool + boolean Enabled state
  • @@ -529,23 +529,23 @@ button:set_enabled(true)
  • on_click function - (self, node) + function(self, node)
  • on_click_disabled function - (self, node) + function(self, node)
  • on_hover function - (self, node, hover_state) + function(self, node, hover_state)
  • on_mouse_hover function - (self, node, hover_state) + function(self, node, hover_state)
  • on_set_enabled function - (self, node, enabled_state) + function(self, node, enabled_state)
  • @@ -632,7 +632,7 @@ button:set_enabled(true)
    • node - Node + node
    diff --git a/docs/modules/Checkbox.html b/docs/modules/Checkbox.html index f58de1e..ba5f545 100644 --- a/docs/modules/Checkbox.html +++ b/docs/modules/Checkbox.html @@ -88,7 +88,7 @@
    - + @@ -148,7 +148,7 @@

    Returns:

      - bool + boolean Checkbox state
    @@ -161,7 +161,7 @@ init(self, node, callback[, click_node=node[, initial_state=false]])
    - Component init function + The Checkbox constructor

    Parameters:

    @@ -210,15 +210,15 @@ Checkbox
  • state - bool + boolean Checkbox state
  • is_silent - bool + boolean Don't trigger on_change_state if true
  • is_instant - bool + boolean If instant checkbox change
  • diff --git a/docs/modules/CheckboxGroup.html b/docs/modules/CheckboxGroup.html index ad693a4..726759c 100644 --- a/docs/modules/CheckboxGroup.html +++ b/docs/modules/CheckboxGroup.html @@ -87,7 +87,7 @@
    - + @@ -132,7 +132,7 @@

    Returns:

      - bool[] + boolean[] Array if checkboxes state
    @@ -145,7 +145,7 @@ init(self, nodes, callback[, click_nodes=node])
    - Component init function + The CheckboxGroup constructor

    Parameters:

    @@ -189,7 +189,7 @@ CheckboxGroup
  • indexes - bool[] + boolean[] Array of checkbox state
  • is_instant diff --git a/docs/modules/DataList.html b/docs/modules/DataList.html index 5fe3996..8003f36 100644 --- a/docs/modules/DataList.html +++ b/docs/modules/DataList.html @@ -117,7 +117,7 @@
  • - + @@ -242,7 +242,7 @@

    Returns:

      - Node[] + node[] List of created nodes
    @@ -370,7 +370,7 @@ init(self, scroll, grid, create_function)
    - Data list constructor + The DataList constructor

    Parameters:

    diff --git a/docs/modules/Drag.html b/docs/modules/Drag.html index b6868c1..7cec624 100644 --- a/docs/modules/Drag.html +++ b/docs/modules/Drag.html @@ -88,7 +88,7 @@
    init(self, node)Blocker constructorThe Blocker constructor
    is_enabled(self)
    init(self, node, callback[, click_node=node[, initial_state=false]])Component init functionThe Checkbox constructor
    set_state(self, state, is_silent, is_instant)
    init(self, nodes, callback[, click_nodes=node])Component init functionThe CheckboxGroup constructor
    set_state(self, indexes, is_instant)
    init(self, scroll, grid, create_function)Data list constructorThe DataList constructor
    on_remove(self)
    - + @@ -174,7 +174,7 @@ init(self, node, on_drag_callback)
    - Drag component constructor + The Drag constructor

    Parameters:

    @@ -217,7 +217,7 @@

    Returns:

      - bool + boolean
    @@ -266,7 +266,7 @@ Drag
  • is_enabled - bool + boolean
  • @@ -323,7 +323,7 @@
    • can_x - bool + boolean
    @@ -343,7 +343,7 @@
    • can_y - bool + boolean
    @@ -363,7 +363,7 @@
    • is_drag - bool + boolean
    @@ -383,7 +383,7 @@
    • is_touch - bool + boolean
    diff --git a/docs/modules/DruidEvent.html b/docs/modules/DruidEvent.html index d707bfe..bd16b36 100644 --- a/docs/modules/DruidEvent.html +++ b/docs/modules/DruidEvent.html @@ -191,7 +191,7 @@

    Returns:

      - bool + boolean True if event have handlers
    @@ -222,7 +222,7 @@ Callback itself
  • context - Any + any Additional context as first param to callback call, usually it's self (optional)
  • @@ -257,7 +257,7 @@ button.on_long_click:subscribe(on_long_callback, self) DruidEvent
  • ... - Any + any All event params
  • @@ -293,7 +293,7 @@ event:trigger("Param1", "Param2 Callback itself
  • context - Any + any Additional context as first param to callback call (optional)
  • diff --git a/docs/modules/DruidInstance.html b/docs/modules/DruidInstance.html index 6c36ecc..b50afa3 100644 --- a/docs/modules/DruidInstance.html +++ b/docs/modules/DruidInstance.html @@ -178,7 +178,7 @@ end
    - + @@ -302,11 +302,11 @@ end
  • component - Component + BaseComponent Component module
  • ... - args + any Other component params to pass it to component:init function
  • @@ -331,8 +331,8 @@ end
  • callback - callback - On back button + function + @The callback(self, custom_args) to call on back event
  • params any @@ -532,8 +532,8 @@ end The Scroll instance for Data List component
  • druid_grid - Grid - The Grid instance for Data List component + StaticGrid or DynamicGrid + The StaticGrid or DynamicGrid instance for Data List component
  • create_function function @@ -620,7 +620,7 @@ end
    - new_hotkey(self, keys_array, callback[, params]) + new_hotkey(self, keys_array, callback[, callback_argument])
    Create Hotkey component @@ -638,11 +638,11 @@ end
  • callback function - Button callback + The callback function
  • -
  • params - value - Button callback params +
  • callback_argument + any + The argument to pass into the callback function (optional)
  • @@ -756,7 +756,7 @@ end Default locale id
  • no_adjust - bool + boolean If true, will not correct text size
  • @@ -1099,7 +1099,7 @@ end (optional)
  • no_adjust - bool + boolean If true, text will be not auto-adjust size (optional)
  • @@ -1189,7 +1189,7 @@ end

    Returns:

      - bool + boolean The boolean value is input was consumed
    @@ -1247,7 +1247,7 @@ end
  • component - Component + BaseComponent Component instance
  • @@ -1274,7 +1274,7 @@ end DruidInstance
  • blacklist_components - table or Component + table or BaseComponent The array of component to blacklist (default nil)
  • @@ -1308,7 +1308,7 @@ end
  • whitelist_components - table or Component + table or BaseComponent The array of component to whitelist (default nil)
  • diff --git a/docs/modules/DynamicGrid.html b/docs/modules/DynamicGrid.html index 67583d1..748e674 100644 --- a/docs/modules/DynamicGrid.html +++ b/docs/modules/DynamicGrid.html @@ -119,7 +119,7 @@ - + @@ -467,7 +467,7 @@ init(self, parent)
    - Component init function + The DynamicGrid constructor

    Parameters:

    diff --git a/docs/modules/Helper.html b/docs/modules/Helper.html index 5887232..8999078 100644 --- a/docs/modules/Helper.html +++ b/docs/modules/Helper.html @@ -143,7 +143,7 @@ helper.centrate_nodes(0, node_1, node_2)
    - + @@ -198,11 +198,11 @@ helper.centrate_nodes(0, node_1, node_2)

    Parameters:

    • target - table + any[] Array to put elements from source
    • source - table + any[] The source array to get elements from (optional)
    • @@ -211,7 +211,7 @@ helper.centrate_nodes(0, node_1, node_2)

      Returns:

        - array + any[] The target array
      @@ -471,8 +471,8 @@ helper.centrate_nodes(0, node_1, node_2)

      Parameters:

      • pivot - gui.pivot - The node pivot + number + The gui.PIVOT_* constant
      @@ -529,7 +529,7 @@ helper.centrate_nodes(0, node_1, node_2) Gui node
    • include_passed_node_scale - bool + boolean True if add current node scale to result
    @@ -579,7 +579,7 @@ helper.centrate_nodes(0, node_1, node_2)

    Parameters:

    • text_node - Node + node
    @@ -606,7 +606,7 @@ helper.centrate_nodes(0, node_1, node_2)
    - helper.insert_with_shift(array, item[, index[, shift_policy]]) + helper.insert_with_shift(array, any[, index[, shift_policy]])
    Add value to array with shift policy Shift policy can be: left, right, no_shift @@ -618,7 +618,7 @@ helper.centrate_nodes(0, node_1, node_2) table Array -
  • item +
  • any Item to insert
  • index @@ -627,8 +627,8 @@ helper.centrate_nodes(0, node_1, node_2) (optional)
  • shift_policy - const.SHIFT - Shift policy + number + The druid_const.SHIFT.* constant (optional)
  • @@ -636,7 +636,7 @@ helper.centrate_nodes(0, node_1, node_2)

    Returns:

      - item + any Inserted item
    @@ -656,7 +656,7 @@ helper.centrate_nodes(0, node_1, node_2)

    Returns:

      - bool + boolean Is mobile
    @@ -676,7 +676,7 @@ helper.centrate_nodes(0, node_1, node_2)

    Returns:

      - bool + boolean Is web
    @@ -739,8 +739,8 @@ helper.centrate_nodes(0, node_1, node_2) (optional)
  • shift_policy - const.SHIFT - Shift policy + number + The druid_const.SHIFT.* constant (optional)
  • @@ -748,7 +748,7 @@ helper.centrate_nodes(0, node_1, node_2)

    Returns:

      - item + any Removed item
    diff --git a/docs/modules/Hotkey.html b/docs/modules/Hotkey.html index f8a1611..3621846 100644 --- a/docs/modules/Hotkey.html +++ b/docs/modules/Hotkey.html @@ -88,7 +88,7 @@
    - +
    init(self, node, on_drag_callback)Drag component constructorThe Drag constructor
    is_enabled(self) Create DynamicGrid component
    new_hotkey(self, keys_array, callback[, params])new_hotkey(self, keys_array, callback[, callback_argument]) Create Hotkey component
    init(self, parent)Component init functionThe DynamicGrid constructor
    remove(self, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]) Get text metric from GUI node.
    helper.insert_with_shift(array, item[, index[, shift_policy]])helper.insert_with_shift(array, any[, index[, shift_policy]]) Add value to array with shift policy
    init(self, keys, callback[, callback_argument])Component init functionThe Hotkey constructor

    Tables

    @@ -144,7 +144,7 @@ that have to be pressed before key pressed to activate
  • callback_argument - value + any The argument to pass into the callback function (optional)
  • @@ -160,7 +160,7 @@ init(self, keys, callback[, callback_argument])
    - Component init function + The Hotkey constructor

    Parameters:

    @@ -178,7 +178,7 @@ The callback function
  • callback_argument - value + any The argument to pass into the callback function (optional)
  • diff --git a/docs/modules/Hover.html b/docs/modules/Hover.html index b4306b8..ef2d206 100644 --- a/docs/modules/Hover.html +++ b/docs/modules/Hover.html @@ -83,7 +83,7 @@ - + @@ -138,7 +138,7 @@ init(self, node, on_hover_callback)
    - Component init function + The Hover constructor

    Parameters:

    @@ -181,7 +181,7 @@

    Returns:

      - bool + boolean The hover enabled state
    @@ -208,7 +208,7 @@

    Returns:

      - bool + boolean The current hovered state
    @@ -235,7 +235,7 @@

    Returns:

      - bool + boolean The current hovered state
    @@ -286,7 +286,7 @@ Hover
  • state - bool + boolean The hover enabled state
  • @@ -311,7 +311,7 @@ Hover
  • state - bool + boolean The hover state
  • @@ -336,7 +336,7 @@ Hover
  • state - bool + boolean The mouse hover state
  • diff --git a/docs/modules/Input.html b/docs/modules/Input.html index a213dc2..092cd07 100644 --- a/docs/modules/Input.html +++ b/docs/modules/Input.html @@ -94,7 +94,7 @@
    - + @@ -223,7 +223,7 @@ init(self, click_node, text_node[, keyboard_type])
    - Component init function + The Input constructor

    Parameters:

    @@ -422,7 +422,7 @@

    Fields:

    • IS_LONGTAP_ERASE - bool + boolean Is long tap will erase current input data (default false)
    • @@ -432,12 +432,12 @@ (default *)
    • IS_UNSELECT_ON_RESELECT - bool + boolean If true, call unselect on select selected input (default false)
    • NO_CONSUME_INPUT_WHILE_SELECTED - bool + boolean If true, will not consume input while input is selected. It's allow to interact with other components while input is selected (text input still captured) (default false)
    • @@ -519,7 +519,7 @@
      • is_empty - bool + boolean
      @@ -539,7 +539,7 @@
      • is_selected - bool + boolean
      diff --git a/docs/modules/Layout.html b/docs/modules/Layout.html index e154aa3..a19a24e 100644 --- a/docs/modules/Layout.html +++ b/docs/modules/Layout.html @@ -95,7 +95,7 @@
    - + @@ -156,7 +156,7 @@ Layout
  • node - Node + node (optional)
  • @@ -236,7 +236,7 @@ init(self, node, mode[, on_size_changed_callback])
    - Component init function + The Layout constructor

    Parameters:

    diff --git a/docs/modules/PinKnob.html b/docs/modules/PinKnob.html index 9b4a757..6e58444 100644 --- a/docs/modules/PinKnob.html +++ b/docs/modules/PinKnob.html @@ -84,7 +84,7 @@
    init(self, node, on_hover_callback)Component init functionThe Hover constructor
    is_enabled(self)
    init(self, click_node, text_node[, keyboard_type])Component init functionThe Input constructor
    reset_changes(self)
    init(self, node, mode[, on_size_changed_callback])Component init functionThe Layout constructor
    set_max_gui_upscale(self, max_gui_upscale)
    - + @@ -123,7 +123,7 @@ init(self, callback, template, nodes)
    - Component init function + The PinKnob constructor

    Parameters:

    @@ -256,7 +256,7 @@
    • is_drag - bool + boolean
    diff --git a/docs/modules/Progress.html b/docs/modules/Progress.html index 089717c..0f490b7 100644 --- a/docs/modules/Progress.html +++ b/docs/modules/Progress.html @@ -104,7 +104,7 @@
    - + @@ -237,7 +237,7 @@ init(self, node, key[, init_value=1])
    - Progress constructor + The Progress constructor

    Parameters:

    diff --git a/docs/modules/RadioGroup.html b/docs/modules/RadioGroup.html index 741e33f..c08c25c 100644 --- a/docs/modules/RadioGroup.html +++ b/docs/modules/RadioGroup.html @@ -87,7 +87,7 @@
    - + @@ -145,7 +145,7 @@ init(self, nodes, callback[, click_nodes=node])
    - Component init function + The RadioGroup constructor

    Parameters:

    diff --git a/docs/modules/RichInput.html b/docs/modules/RichInput.html index 797c9d0..c9d71b2 100644 --- a/docs/modules/RichInput.html +++ b/docs/modules/RichInput.html @@ -84,7 +84,7 @@
    init(self, callback, template, nodes)Component init functionThe PinKnob constructor
    set_angle(self, cur_value, min, max)
    init(self, node, key[, init_value=1])Progress constructorThe Progress constructor
    set_max_size(self, max_size)
    init(self, nodes, callback[, click_nodes=node])Component init functionThe RadioGroup constructor
    set_state(self, index, is_instant)
    - + @@ -123,7 +123,7 @@ init(self, template, nodes)
    - Component init function + The RichInput constructor

    Parameters:

    diff --git a/docs/modules/RichText.html b/docs/modules/RichText.html index f53e531..372c37e 100644 --- a/docs/modules/RichText.html +++ b/docs/modules/RichText.html @@ -34,6 +34,7 @@ @@ -163,7 +164,7 @@ type druid.rich_text.metrics = {
    - + @@ -181,6 +182,13 @@ type druid.rich_text.metrics = {
    init(self, template, nodes)Component init functionThe RichInput constructor
    set_placeholder(self, placeholder_text)
    init(self, template, nodes)Rich Text component constructorThe RichText constructor
    set_text(self, text)Component style params.
    +

    Fields

    + + + + + +
    druidThe component druid instance


    @@ -248,7 +256,7 @@ type druid.rich_text.metrics = { init(self, template, nodes)
    - Rich Text component constructor + The RichText constructor

    Parameters:

    @@ -415,6 +423,30 @@ Words <nobr>inside tag</nobr> won't break +
    +

    Fields

    + +
    +
    + + druid +
    +
    + The component druid instance + + + + + + + +
    diff --git a/docs/modules/Scroll.html b/docs/modules/Scroll.html index bcf92e0..2ab3fb0 100644 --- a/docs/modules/Scroll.html +++ b/docs/modules/Scroll.html @@ -117,7 +117,7 @@ init(self, view_node, content_node) - Scroll constructor + The Scroll constructor is_inert(self) @@ -202,10 +202,6 @@ Flag, if scroll now animating by gui.animate - is_inert - Flag, if scroll now moving by inertion - - on_point_scroll On scroll_to_index function callback(self, index, point) @@ -334,7 +330,7 @@ init(self, view_node, content_node)
    - Scroll constructor + The Scroll constructor

    Parameters:

    @@ -377,8 +373,8 @@

    Returns:

      - bool - If scroll have inertion + boolean + @If scroll have inertion
    @@ -436,7 +432,7 @@ Target point
  • is_instant - bool + boolean Instant scroll flag (optional)
  • @@ -471,7 +467,7 @@ Point index
  • skip_cb - bool + boolean If true, skip the point callback (optional)
  • @@ -501,7 +497,7 @@ target percent
  • is_instant - bool + boolean instant scroll flag (optional)
  • @@ -590,7 +586,7 @@ Scroll
  • state - bool + boolean True, if horizontal scroll is enabled
  • @@ -623,7 +619,7 @@ Scroll
  • state - bool + boolean Inert scroll state
  • @@ -722,7 +718,7 @@ Scroll
  • state - bool + boolean True, if vertical scroll is enabled
  • @@ -795,22 +791,22 @@ (default 0)
  • SMALL_CONTENT_SCROLL - bool + boolean If true, content node with size less than view node size can be scrolled (default false)
  • WHEEL_SCROLL_SPEED - bool + boolean The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling (default 0)
  • WHEEL_SCROLL_INVERTED - bool + boolean If true, invert direction for touchpad and mouse wheel scroll (default false)
  • WHEEL_SCROLL_BY_INERTION - bool + boolean If true, wheel will add inertion to scroll. Direct set position otherwise. (default false)
  • @@ -935,27 +931,7 @@ - - - - - -
    -
    - - is_inert -
    -
    - Flag, if scroll now moving by inertion - - - diff --git a/docs/modules/Slider.html b/docs/modules/Slider.html index 1da2b7a..b30fe11 100644 --- a/docs/modules/Slider.html +++ b/docs/modules/Slider.html @@ -83,7 +83,7 @@ - + @@ -150,7 +150,7 @@ init(self, node, end_pos[, callback])
    - Component init function + The Slider constructor

    Parameters:

    @@ -198,7 +198,7 @@ Value from 0 to 1
  • is_silent - bool + boolean Don't trigger event if true (optional)
  • @@ -227,7 +227,7 @@ Slider
  • input_node - Node + node
  • @@ -333,7 +333,7 @@
    • is_drag - bool + boolean
    diff --git a/docs/modules/StaticGrid.html b/docs/modules/StaticGrid.html index be25781..986f9ca 100644 --- a/docs/modules/StaticGrid.html +++ b/docs/modules/StaticGrid.html @@ -463,7 +463,7 @@
      vector3 - Node position + @Node position
    @@ -512,7 +512,7 @@ StaticGrid
  • parent - string or Node + string or node The GUI Node container, where grid's items will be placed
  • element @@ -564,7 +564,7 @@

    Returns:

      - Node + node The deleted gui node from grid
    @@ -677,12 +677,12 @@

    Fields:

    • IS_DYNAMIC_NODE_POSES - bool + boolean If true, always center grid content as grid pivot sets (default false)
    • IS_ALIGN_LAST_ROW - bool + boolean If true, always align last row of the grid as grid pivot sets (default false)
    • diff --git a/docs/modules/Swipe.html b/docs/modules/Swipe.html index aba9737..7dc7d10 100644 --- a/docs/modules/Swipe.html +++ b/docs/modules/Swipe.html @@ -87,7 +87,7 @@
  • init(self, node, end_pos[, callback])Component init functionThe Slider constructor
    set(self, value[, is_silent])
    - + @@ -129,7 +129,7 @@ init(self, node, on_swipe_callback)
    - Component init function + The Swipe constructor

    Parameters:

    @@ -206,7 +206,7 @@ (default 50)
  • SWIPE_TRIGGER_ON_MOVE - bool + boolean If true, trigger on swipe moving, not only release action (default false)
  • diff --git a/docs/modules/Text.html b/docs/modules/Text.html index 6d1295f..d14822a 100644 --- a/docs/modules/Text.html +++ b/docs/modules/Text.html @@ -110,7 +110,7 @@
    - + @@ -280,7 +280,7 @@ init(self, node[, value[, adjust_type=downscale]])
    - Text constructor + The Text constructor

    Parameters:

    @@ -329,7 +329,7 @@

    Returns:

      - bool + boolean Is text node with line break
    @@ -445,8 +445,8 @@ Text
  • pivot - gui.pivot - Gui pivot constant + number + The gui.PIVOT_* constant
  • diff --git a/docs/modules/Timer.html b/docs/modules/Timer.html index 7193ae1..958899f 100644 --- a/docs/modules/Timer.html +++ b/docs/modules/Timer.html @@ -85,7 +85,7 @@
    init(self, node, on_swipe_callback)Component init functionThe Swipe constructor
    set_click_zone(self, zone)
    init(self, node[, value[, adjust_type=downscale]])Text constructorThe Text constructor
    is_multiline(self)
    - + @@ -144,7 +144,7 @@ init(self, node, seconds_from[, seconds_to=0[, callback]])
    - Component init function + The Timer constructor

    Parameters:

    @@ -222,7 +222,7 @@ Timer
  • is_on - bool + boolean Timer enable state
  • diff --git a/druid/annotations.lua b/druid/annotations.lua index 2d4d340..f053e8a 100644 --- a/druid/annotations.lua +++ b/druid/annotations.lua @@ -1,5 +1,8 @@ -- luacheck: ignore - +---@diagnostic disable: lowercase-global +---@diagnostic disable: missing-return +---@diagnostic disable: duplicate-doc-param +---@diagnostic disable: duplicate-set-field ---@class druid local druid = {} @@ -53,68 +56,68 @@ local druid__base_component = {} --- Return all children components, recursive ---@param self druid.base_component @{BaseComponent} ---@return table Array of childrens if the Druid component instance -function druid__base_component.component:get_childrens(self) end +function druid__base_component.get_childrens(self) end --- Context used as first arg in all Druid events --- Context is usually self of gui_script. ---@param self druid.base_component @{BaseComponent} ---@return table BaseComponent context -function druid__base_component.component:get_context(self) end +function druid__base_component.get_context(self) end --- Get Druid instance for inner component creation. ---@param self druid.base_component @{BaseComponent} ----@return Druid Druid instance with component context -function druid__base_component.component:get_druid(self) end +---@return druid_instance Druid instance with component context +function druid__base_component.get_druid(self) end --- Return component input priority ---@param self druid.base_component @{BaseComponent} ---@return number The component input priority -function druid__base_component.component:get_input_priority(self) end +function druid__base_component.get_input_priority(self) end --- Return component name ---@param self druid.base_component @{BaseComponent} ---@return string The component name -function druid__base_component.component:get_name(self) end +function druid__base_component.get_name(self) end --- Get component node by name. --- If component has nodes, node_or_name should be string It autopick node by template name or from nodes by gui.clone_tree if they was setup via component:set_nodes, component:set_template. If node is not found, the exception will fired ---@param self druid.base_component @{BaseComponent} ---@param node_or_name string|node Node name or node itself ---@return node Gui node -function druid__base_component.component:get_node(self, node_or_name) end +function druid__base_component.get_node(self, node_or_name) end --- Return the parent component if exist ---@param self druid.base_component @{BaseComponent} ----@return BaseComponent|nil The druid component instance or nil -function druid__base_component.component:get_parent_component(self) end +---@return druid.base_component|nil The druid component instance or nil +function druid__base_component.get_parent_component(self) end --- Return parent component name ---@param self druid.base_component @{BaseComponent} ---@return string|nil The parent component name if exist or bil -function druid__base_component.component:get_parent_name(self) end +function druid__base_component.get_parent_name(self) end --- Get current component template name. ---@param self druid.base_component @{BaseComponent} ---@return string Component full template name -function druid__base_component.component:get_template(self) end +function druid__base_component.get_template(self) end --- Return component UID. --- UID generated in component creation order. ---@param self druid.base_component @{BaseComponent} ---@return number The component uid -function druid__base_component.component:get_uid(self) end +function druid__base_component.get_uid(self) end --- Reset component input priority to default value ---@param self druid.base_component @{BaseComponent} ---@return number The component input priority -function druid__base_component.component:reset_input_priority(self) end +function druid__base_component.reset_input_priority(self) end --- Set component input state. --- By default it enabled If input is disabled, the component will not receive input events ---@param self druid.base_component @{BaseComponent} ----@param state bool The component input state +---@param state boolean The component input state ---@return druid.base_component BaseComponent itself -function druid__base_component.component:set_input_enabled(self, state) end +function druid__base_component.set_input_enabled(self, state) end --- Set component input priority --- Default value: 10 @@ -122,48 +125,48 @@ function druid__base_component.component:set_input_enabled(self, state) end ---@param value number The new input priority value ---@param is_temporary boolean If true, the reset input priority will return to previous value ---@return number The component input priority -function druid__base_component.component:set_input_priority(self, value, is_temporary) end +function druid__base_component.set_input_priority(self, value, is_temporary) end --- Set current component nodes. --- Use if your component nodes was cloned with `gui.clone_tree` and you got the node tree. ---@param self druid.base_component @{BaseComponent} ---@param nodes table BaseComponent nodes table ---@return druid.base_component @{BaseComponent} -function druid__base_component.component:set_nodes(self, nodes) end +function druid__base_component.set_nodes(self, nodes) end --- Set current component style table. --- Invoke `on_style_change` on component, if exist. Component should handle their style changing and store all style params ---@param self druid.base_component @{BaseComponent} ---@param druid_style table Druid style module ---@return druid.base_component @{BaseComponent} -function druid__base_component.component:set_style(self, druid_style) end +function druid__base_component.set_style(self, druid_style) end --- Set component template name. --- Use on all your custom components with GUI layouts used as templates. It will check parent template name to build full template name in self:get_node() ---@param self druid.base_component @{BaseComponent} ---@param template string BaseComponent template name ---@return druid.base_component @{BaseComponent} -function druid__base_component.component:set_template(self, template) end +function druid__base_component.set_template(self, template) end ---@class druid.blocker : druid.base_component ---@field node node Blocker node local druid__blocker = {} ---- @{Blocker} constructor +--- The @{Blocker} constructor ---@param self druid.blocker @{Blocker} ---@param node node Gui node function druid__blocker.init(self, node) end --- Return blocker enabled state ---@param self druid.blocker @{Blocker} ----@return bool True, if blocker is enabled +---@return boolean @True, if blocker is enabled function druid__blocker.is_enabled(self) end --- Set enabled blocker component state. --- Don't change node enabled state itself. ---@param self druid.blocker @{Blocker} ----@param state bool Enabled state +---@param state boolean Enabled state function druid__blocker.set_enabled(self, state) end @@ -171,7 +174,7 @@ function druid__blocker.set_enabled(self, state) end ---@field anim_node node Button animation node. ---@field click_zone node Additional button click area, defined by another GUI Node ---@field hover druid.hover The @{Hover}: Button Hover component ----@field node Node Button trigger node +---@field node node Button trigger node ---@field node_id hash The GUI node id from button node ---@field on_click druid.event The @{DruidEvent}: Event on successful release action over button. ---@field on_click_outside druid.event The @{DruidEvent}: Event calls if click event was outside of button. @@ -191,16 +194,16 @@ function druid__button.get_key_trigger(self) end --- The @{Button} constructor ---@param self druid.button @{Button} ----@param node string|Node Node name or GUI Node itself +---@param node string|node Node name or GUI Node itself ---@param callback function On click button callback ---@param custom_args any Button events custom arguments ----@param anim_node string|Node Node to animate instead of trigger node. +---@param anim_node string|node Node to animate instead of trigger node. function druid__button.init(self, node, callback, custom_args, anim_node) end --- Get button enabled state. --- By default all Buttons is enabled on creating. ---@param self druid.button @{Button} ----@return bool True, if button is enabled now, False overwise +---@return boolean @True, if button is enabled now, False overwise function druid__button.is_enabled(self) end --- Set function for additional check for button click availability @@ -220,7 +223,7 @@ function druid__button.set_click_zone(self, zone) end --- Set button enabled state. --- The style.on_set_enabled will be triggered. Disabled button is not clickable. ---@param self druid.button @{Button} ----@param state bool Enabled state +---@param state boolean Enabled state ---@return druid.button Current button instance function druid__button.set_enabled(self, state) end @@ -239,14 +242,14 @@ function druid__button.set_web_user_interaction(self, is_web_mode) end ---@class druid.button.style ----@field AUTOHOLD_TRIGGER field Maximum hold time to trigger button release while holding ----@field DOUBLETAP_TIME field Time between double taps ----@field LONGTAP_TIME field Minimum time to trigger on_hold_callback ----@field on_click field (self, node) ----@field on_click_disabled field (self, node) ----@field on_hover field (self, node, hover_state) ----@field on_mouse_hover field (self, node, hover_state) ----@field on_set_enabled field (self, node, enabled_state) +---@field AUTOHOLD_TRIGGER number Maximum hold time to trigger button release while holding +---@field DOUBLETAP_TIME number Time between double taps +---@field LONGTAP_TIME number Minimum time to trigger on_hold_callback +---@field on_click function function(self, node) +---@field on_click_disabled function function(self, node) +---@field on_hover function function(self, node, hover_state) +---@field on_mouse_hover function function(self, node, hover_state) +---@field on_set_enabled function function(self, node, enabled_state) local druid__button__style = {} @@ -260,10 +263,10 @@ local druid__checkbox = {} --- Return checkbox state ---@param self druid.checkbox @{Checkbox} ----@return bool Checkbox state +---@return boolean Checkbox state function druid__checkbox.get_state(self) end ---- Component init function +--- The @{Checkbox} constructor ---@param self druid.checkbox @{Checkbox} ---@param node node Gui node ---@param callback function Checkbox callback @@ -273,14 +276,14 @@ function druid__checkbox.init(self, node, callback, click_node, initial_state) e --- Set checkbox state ---@param self druid.checkbox @{Checkbox} ----@param state bool Checkbox state ----@param is_silent bool Don't trigger on_change_state if true ----@param is_instant bool If instant checkbox change +---@param state boolean Checkbox state +---@param is_silent boolean Don't trigger on_change_state if true +---@param is_instant boolean If instant checkbox change function druid__checkbox.set_state(self, state, is_silent, is_instant) end ---@class druid.checkbox.style ----@field on_change_state field (self, node, state) +---@field on_change_state function (self, node, state) local druid__checkbox__style = {} @@ -291,10 +294,10 @@ local druid__checkbox_group = {} --- Return checkbox group state ---@param self druid.checkbox_group @{CheckboxGroup} ----@return bool[] Array if checkboxes state +---@return boolean[] Array if checkboxes state function druid__checkbox_group.get_state(self) end ---- Component init function +--- The @{CheckboxGroup} constructor ---@param self druid.checkbox_group @{CheckboxGroup} ---@param nodes node[] Array of gui node ---@param callback function Checkbox callback @@ -303,7 +306,7 @@ function druid__checkbox_group.init(self, nodes, callback, click_nodes) end --- Set checkbox group state ---@param self druid.checkbox_group @{CheckboxGroup} ----@param indexes bool[] Array of checkbox state +---@param indexes boolean[] Array of checkbox state ---@param is_instant boolean If instant state change function druid__checkbox_group.set_state(self, indexes, is_instant) end @@ -330,7 +333,7 @@ function druid__data_list.get_created_components(self) end --- Return all currenly created nodes in DataList ---@param self druid.data_list @{DataList} ----@return Node[] List of created nodes +---@return node[] List of created nodes function druid__data_list.get_created_nodes(self) end --- Return current data from DataList component @@ -356,7 +359,7 @@ function druid__data_list.get_last_index(self) end ---@param self druid.data_list @{DataList} function druid__data_list.get_length(self) end ---- Data list constructor +--- The @{DataList} constructor ---@param self druid.data_list @{DataList} ---@param scroll druid.scroll The @{Scroll} instance for Data List component ---@param grid druid.static_grid|druid.dynamic_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component @@ -380,10 +383,10 @@ function druid__data_list.set_data(self, data) end ---@class druid.drag : druid.base_component ----@field can_x bool Is drag component process vertical dragging. ----@field can_y bool Is drag component process horizontal. ----@field is_drag bool Is component now dragging ----@field is_touch bool Is component now touching +---@field can_x boolean Is drag component process vertical dragging. +---@field can_y boolean Is drag component process horizontal. +---@field is_drag boolean Is component now dragging +---@field is_touch boolean Is component now touching ---@field on_drag druid.event on drag progress callback(self, dx, dy, total_x, total_y) ---@field on_drag_end druid.event Event on drag end callback(self, total_x, total_y) ---@field on_drag_start druid.event Event on drag start callback(self) @@ -395,7 +398,7 @@ function druid__data_list.set_data(self, data) end ---@field y number Current touch y position local druid__drag = {} ---- Drag component constructor +--- The @{Drag} constructor ---@param self druid.drag @{Drag} ---@param node node GUI node to detect dragging ---@param on_drag_callback function Callback for on_drag_event(self, dx, dy) @@ -403,7 +406,7 @@ function druid__drag.init(self, node, on_drag_callback) end --- Check if Drag component is enabled ---@param self druid.drag @{Drag} ----@return bool +---@return boolean function druid__drag.is_enabled(self) end --- Strict drag click area. @@ -414,13 +417,13 @@ function druid__drag.set_click_zone(self, node) end --- Set Drag input enabled or disabled ---@param self druid.drag @{Drag} ----@param is_enabled bool +---@param is_enabled boolean function druid__drag.set_enabled(self, is_enabled) end ---@class druid.drag.style ----@field DRAG_DEADZONE field Distance in pixels to start dragging ----@field NO_USE_SCREEN_KOEF field If screen aspect ratio affects on drag values +---@field DRAG_DEADZONE number Distance in pixels to start dragging +---@field NO_USE_SCREEN_KOEF boolean If screen aspect ratio affects on drag values local druid__drag__style = {} @@ -493,7 +496,7 @@ function druid__dynamic_grid.get_pos(self, index, node, origin_index) end ---@return vector3 The grid content size function druid__dynamic_grid.get_size(self, border) end ---- Component init function +--- The @{DynamicGrid} constructor ---@param self druid.dynamic_grid @{DynamicGrid} ---@param parent node The gui node parent, where items will be placed function druid__dynamic_grid.init(self, parent) end @@ -529,24 +532,24 @@ function druid__event.initialize(self, initial_callback) end --- Return true, if event have at lease one handler ---@param self druid.event @{DruidEvent} ----@return bool True if event have handlers +---@return boolean True if event have handlers function druid__event.is_exist(self) end --- Subscribe callback on event ---@param self druid.event @{DruidEvent} ---@param callback function Callback itself ----@param context Any Additional context as first param to callback call, usually it's self +---@param context any Additional context as first param to callback call, usually it's self function druid__event.subscribe(self, callback, context) end --- Trigger the event and call all subscribed callbacks ---@param self druid.event @{DruidEvent} ----@param ... Any All event params +---@param ... any All event params function druid__event.trigger(self, ...) end --- Unsubscribe callback on event ---@param self druid.event @{DruidEvent} ---@param callback function Callback itself ----@param context Any Additional context as first param to callback call +---@param context any Additional context as first param to callback call function druid__event.unsubscribe(self, callback, context) end @@ -561,19 +564,19 @@ local druid__hotkey = {} --- Add hotkey for component callback ---@param self druid.hotkey @{Hotkey} ---@param keys string[]|hash[]|string|hash that have to be pressed before key pressed to activate ----@param callback_argument value The argument to pass into the callback function +---@param callback_argument any The argument to pass into the callback function function druid__hotkey.add_hotkey(self, keys, callback_argument) end ---- Component init function +--- The @{Hotkey} constructor ---@param self druid.hotkey @{Hotkey} ---@param keys string[]|string The keys to be pressed for trigger callback. Should contains one key and any modificator keys ---@param callback function The callback function ----@param callback_argument value The argument to pass into the callback function +---@param callback_argument any The argument to pass into the callback function function druid__hotkey.init(self, keys, callback, callback_argument) end ---@class druid.hotkey.style ----@field MODIFICATORS field The list of action_id as hotkey modificators +---@field MODIFICATORS string[] The list of action_id as hotkey modificators local druid__hotkey__style = {} @@ -582,7 +585,7 @@ local druid__hotkey__style = {} ---@field on_mouse_hover druid.event On mouse hover callback(self, state, hover_instance) local druid__hover = {} ---- Component init function +--- The @{Hover} constructor ---@param self druid.hover @{Hover} ---@param node node Gui node ---@param on_hover_callback function Hover callback @@ -590,19 +593,19 @@ function druid__hover.init(self, node, on_hover_callback) end --- Return current hover enabled state ---@param self druid.hover @{Hover} ----@return bool The hover enabled state +---@return boolean The hover enabled state function druid__hover.is_enabled(self) end --- Return current hover state. --- True if touch action was on the node at current time ---@param self druid.hover @{Hover} ----@return bool The current hovered state +---@return boolean The current hovered state function druid__hover.is_hovered(self) end --- Return current hover state. --- True if nil action_id (usually desktop mouse) was on the node at current time ---@param self druid.hover @{Hover} ----@return bool The current hovered state +---@return boolean The current hovered state function druid__hover.is_mouse_hovered(self) end --- Strict hover click area. @@ -614,25 +617,25 @@ function druid__hover.set_click_zone(self, zone) end --- Set enable state of hover component. --- If hover is not enabled, it will not generate any hover events ---@param self druid.hover @{Hover} ----@param state bool The hover enabled state +---@param state boolean The hover enabled state function druid__hover.set_enabled(self, state) end --- Set hover state ---@param self druid.hover @{Hover} ----@param state bool The hover state +---@param state boolean The hover state function druid__hover.set_hover(self, state) end --- Set mouse hover state ---@param self druid.hover @{Hover} ----@param state bool The mouse hover state +---@param state boolean The mouse hover state function druid__hover.set_mouse_hover(self, state) end ---@class druid.input : druid.base_component ---@field allowerd_characters string Pattern matching for user input ---@field button druid.button Button component ----@field is_empty bool Is current input is empty now ----@field is_selected bool Is current input selected now +---@field is_empty boolean Is current input is empty now +---@field is_selected boolean Is current input selected now ---@field keyboard_type number Gui keyboard type for input field ---@field max_length number Max length for input text ---@field on_input_empty druid.event On input field text change to empty string callback(self, input_text) @@ -650,7 +653,7 @@ local druid__input = {} ---@return string The current input field text function druid__input.get_text(self) end ---- Component init function +--- The @{Input} constructor ---@param self druid.input @{Input} ---@param click_node node Node to enabled input component ---@param text_node node|druid.text Text node what will be changed on user input. You can pass text component instead of text node name @{Text} @@ -692,14 +695,14 @@ function druid__input.unselect(self) end ---@class druid.input.style ----@field IS_LONGTAP_ERASE field Is long tap will erase current input data ----@field IS_UNSELECT_ON_RESELECT field If true, call unselect on select selected input ----@field MASK_DEFAULT_CHAR field Default character mask for password input ----@field NO_CONSUME_INPUT_WHILE_SELECTED field If true, will not consume input while input is selected. It's allow to interact with other components while input is selected (text input still captured) ----@field button_style field Custom button style for input node ----@field on_input_wrong field (self, button_node) Callback on wrong user input ----@field on_select field (self, button_node) Callback on input field selecting ----@field on_unselect field (self, button_node) Callback on input field unselecting +---@field IS_LONGTAP_ERASE boolean Is long tap will erase current input data +---@field IS_UNSELECT_ON_RESELECT boolean If true, call unselect on select selected input +---@field MASK_DEFAULT_CHAR string Default character mask for password input +---@field NO_CONSUME_INPUT_WHILE_SELECTED boolean If true, will not consume input while input is selected. It's allow to interact with other components while input is selected (text input still captured) +---@field button_style table Custom button style for input node +---@field on_input_wrong function (self, button_node) Callback on wrong user input +---@field on_select function (self, button_node) Callback on input field selecting +---@field on_unselect function (self, button_node) Callback on input field unselecting local druid__input__style = {} @@ -756,7 +759,7 @@ local druid__layout = {} --- Set node for layout node to fit inside it. --- Pass nil to reset ---@param self druid.layout @{Layout} ----@param node Node +---@param node node ---@return druid.layout @{Layout} function druid__layout.fit_into_node(self, node) end @@ -771,7 +774,7 @@ function druid__layout.fit_into_size(self, target_size) end ---@return druid.layout @{Layout} function druid__layout.fit_into_window(self) end ---- Component init function +--- The @{Layout} constructor ---@param self druid.layout @{Layout} ---@param node node Gui node ---@param mode string The layout mode (from const.LAYOUT_MODE) @@ -814,11 +817,11 @@ function druid__layout.set_origin_size(self, new_origin_size) end ---@class druid.pin_knob : druid.base_component ---@field druid druid_instance The component druid instance ----@field is_drag bool Is currently under user control +---@field is_drag boolean Is currently under user control ---@field node node The pin node local druid__pin_knob = {} ---- Component init function +--- The @{PinKnob} constructor ---@param self druid.pin_knob @{PinKnob} ---@param callback function Callback(self, value) on value changed ---@param template string The template string name @@ -863,7 +866,7 @@ function druid__progress.fill(self) end ---@param self druid.progress @{Progress} function druid__progress.get(self) end ---- @{Progress} constructor +--- The @{Progress} constructor ---@param self druid.progress @{Progress} ---@param node string|node Node name or GUI Node itself. ---@param key string Progress bar direction: const.SIDE.X or const.SIDE.Y @@ -895,13 +898,13 @@ function druid__progress.to(self, to, callback) end ---@class druid.progress.style ----@field MIN_DELTA field Minimum step to fill progress bar ----@field SPEED field Progress bas fill rate. More -> faster +---@field MIN_DELTA number Minimum step to fill progress bar +---@field SPEED number Progress bas fill rate. More -> faster local druid__progress__style = {} ---@class druid.radio_group : druid.base_component ----@field checkboxes Checkbox[] Array of checkbox components +---@field checkboxes druid.checkbox[] Array of checkbox components ---@field on_radio_click druid.event On any checkbox click local druid__radio_group = {} @@ -910,7 +913,7 @@ local druid__radio_group = {} ---@return number Index in radio group function druid__radio_group.get_state(self) end ---- Component init function +--- The @{RadioGroup} constructor ---@param self druid.radio_group @{RadioGroup} ---@param nodes node[] Array of gui node ---@param callback function Radio callback @@ -931,7 +934,7 @@ function druid__radio_group.set_state(self, index, is_instant) end ---@field placeholder druid.text On input field text change to max length string callback(self, input_text) local druid__rich_input = {} ---- Component init function +--- The @{RichInput} constructor ---@param self druid.rich_input @{RichInput} ---@param template string The template string name ---@param nodes table Nodes table from gui.clone_tree @@ -944,7 +947,7 @@ function druid__rich_input.set_placeholder(self, placeholder_text) end ---@class druid.rich_text : druid.base_component ----@field component field The component druid instance +---@field druid druid_instance The component druid instance ---@field style druid.rich_text.style Component style params. local druid__rich_text = {} @@ -959,7 +962,7 @@ function druid__rich_text.get_line_metric() end ---@return table druid.rich_text.word[] function druid__rich_text.get_words() end ---- Rich Text component constructor +--- The @{RichText} constructor ---@param self druid.rich_text @{RichText} ---@param template string The Rich Text template name ---@param nodes table The node table, if prefab was copied by gui.clone_tree() @@ -979,9 +982,9 @@ function druid__rich_text.tagged(tag) end ---@class druid.rich_text.style ----@field ADJUST_SCALE_DELTA field Scale step on each height adjust step ----@field ADJUST_STEPS field Amount steps of attemps text adjust by height ----@field COLORS field Rich Text color aliases +---@field ADJUST_SCALE_DELTA number Scale step on each height adjust step +---@field ADJUST_STEPS number Amount steps of attemps text adjust by height +---@field COLORS table Rich Text color aliases local druid__rich_text__style = {} @@ -991,8 +994,7 @@ local druid__rich_text__style = {} ---@field content_node node Scroll content node ---@field drag druid.drag Drag Druid component ---@field inertion vector3 Current inert speed ----@field is_animate bool Flag, if scroll now animating by gui.animate ----@field is_inert bool Flag, if scroll now moving by inertion +---@field is_animate boolean Flag, if scroll now animating by gui.animate ---@field on_point_scroll druid.event On scroll_to_index function callback(self, index, point) ---@field on_scroll druid.event On scroll move callback(self, position) ---@field on_scroll_to druid.event On scroll_to function callback(self, target, is_instant) @@ -1020,7 +1022,7 @@ function druid__scroll.get_percent(self) end ---@return vector3 Available scroll size function druid__scroll.get_scroll_size(self) end ---- @{Scroll} constructor +--- The @{Scroll} constructor ---@param self druid.scroll @{Scroll} ---@param view_node string|node GUI view scroll node ---@param content_node string|node GUI content scroll node @@ -1028,7 +1030,7 @@ function druid__scroll.init(self, view_node, content_node) end --- Return if scroll have inertion. ---@param self druid.scroll @{Scroll} ----@return bool If scroll have inertion +---@return boolean @If scroll have inertion function druid__scroll.is_inert(self) end --- Check node if it visible now on scroll. @@ -1041,19 +1043,19 @@ function druid__scroll.is_node_in_view(self, node) end --- Start scroll to target point. ---@param self druid.scroll @{Scroll} ---@param point vector3 Target point ----@param is_instant bool Instant scroll flag +---@param is_instant boolean Instant scroll flag function druid__scroll.scroll_to(self, point, is_instant) end --- Scroll to item in scroll by point index. ---@param self druid.scroll @{Scroll} ---@param index number Point index ----@param skip_cb bool If true, skip the point callback +---@param skip_cb boolean If true, skip the point callback function druid__scroll.scroll_to_index(self, index, skip_cb) end --- Start scroll to target scroll percent ---@param self druid.scroll @{Scroll} ---@param percent vector3 target percent ----@param is_instant bool instant scroll flag +---@param is_instant boolean instant scroll flag function druid__scroll.scroll_to_percent(self, percent, is_instant) end --- Strict drag scroll area. @@ -1071,14 +1073,14 @@ function druid__scroll.set_extra_stretch_size(self, stretch_size) end --- Lock or unlock horizontal scroll ---@param self druid.scroll @{Scroll} ----@param state bool True, if horizontal scroll is enabled +---@param state boolean True, if horizontal scroll is enabled ---@return druid.scroll Current scroll instance function druid__scroll.set_horizontal_scroll(self, state) end --- Enable or disable scroll inert. --- If disabled, scroll through points (if exist) If no points, just simple drag without inertion ---@param self druid.scroll @{Scroll} ----@param state bool Inert scroll state +---@param state boolean Inert scroll state ---@return druid.scroll Current scroll instance function druid__scroll.set_inert(self, state) end @@ -1099,31 +1101,31 @@ function druid__scroll.set_size(self, size, offset) end --- Lock or unlock vertical scroll ---@param self druid.scroll @{Scroll} ----@param state bool True, if vertical scroll is enabled +---@param state boolean True, if vertical scroll is enabled ---@return druid.scroll Current scroll instance function druid__scroll.set_vertical_scroll(self, state) end ---@class druid.scroll.style ----@field ANIM_SPEED field Scroll gui.animation speed for scroll_to function ----@field BACK_SPEED field Scroll back returning lerp speed ----@field EXTRA_STRETCH_SIZE field extra size in pixels outside of scroll (stretch effect) ----@field FRICT field Multiplier for free inertion ----@field FRICT_HOLD field Multiplier for inertion, while touching ----@field INERT_SPEED field Multiplier for inertion speed ----@field INERT_THRESHOLD field Scroll speed to stop inertion ----@field POINTS_DEADZONE field Speed to check points of interests in no_inertion mode ----@field SMALL_CONTENT_SCROLL field If true, content node with size less than view node size can be scrolled ----@field WHEEL_SCROLL_BY_INERTION field If true, wheel will add inertion to scroll. Direct set position otherwise. ----@field WHEEL_SCROLL_INVERTED field If true, invert direction for touchpad and mouse wheel scroll ----@field WHEEL_SCROLL_SPEED field The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling +---@field ANIM_SPEED number Scroll gui.animation speed for scroll_to function +---@field BACK_SPEED number Scroll back returning lerp speed +---@field EXTRA_STRETCH_SIZE number extra size in pixels outside of scroll (stretch effect) +---@field FRICT number Multiplier for free inertion +---@field FRICT_HOLD number Multiplier for inertion, while touching +---@field INERT_SPEED number Multiplier for inertion speed +---@field INERT_THRESHOLD number Scroll speed to stop inertion +---@field POINTS_DEADZONE number Speed to check points of interests in no_inertion mode +---@field SMALL_CONTENT_SCROLL boolean If true, content node with size less than view node size can be scrolled +---@field WHEEL_SCROLL_BY_INERTION boolean If true, wheel will add inertion to scroll. Direct set position otherwise. +---@field WHEEL_SCROLL_INVERTED boolean If true, invert direction for touchpad and mouse wheel scroll +---@field WHEEL_SCROLL_SPEED boolean The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling local druid__scroll__style = {} ---@class druid.slider : druid.base_component ---@field dist number Length between start and end position ---@field end_pos vector3 End pin node position ----@field is_drag bool Current drag state +---@field is_drag boolean Current drag state ---@field node node Slider pin node ---@field on_change_value druid.event On change value callback(self, value) ---@field pos vector3 Current pin node position @@ -1132,7 +1134,7 @@ local druid__scroll__style = {} ---@field value number Current slider value local druid__slider = {} ---- Component init function +--- The @{Slider} constructor ---@param self druid.slider @{Slider} ---@param node node Gui pin node ---@param end_pos vector3 The end position of slider @@ -1142,13 +1144,13 @@ function druid__slider.init(self, node, end_pos, callback) end --- Set value for slider ---@param self druid.slider @{Slider} ---@param value number Value from 0 to 1 ----@param is_silent bool Don't trigger event if true +---@param is_silent boolean Don't trigger event if true function druid__slider.set(self, value, is_silent) end --- Set input zone for slider. --- User can touch any place of node, pin instantly will move at this position and node drag will start. This function require the Defold version 1.3.0+ ---@param self druid.slider @{Slider} ----@param input_node Node +---@param input_node node ---@return druid.slider @{Slider} function druid__slider.set_input_node(self, input_node) end @@ -1221,7 +1223,7 @@ function druid__static_grid.get_offset(self) end --- Return pos for grid node index ---@param self druid.static_grid @{StaticGrid} ---@param index number The grid element index ----@return vector3 Node position +---@return vector3 @Node position function druid__static_grid.get_pos(self, index) end --- Return grid content size @@ -1231,7 +1233,7 @@ function druid__static_grid.get_size(self) end --- The @{StaticGrid} constructor ---@param self druid.static_grid @{StaticGrid} ----@param parent string|Node The GUI Node container, where grid's items will be placed +---@param parent string|node The GUI Node container, where grid's items will be placed ---@param element node Element prefab. Need to get it size ---@param in_row number How many nodes in row can be placed function druid__static_grid.init(self, parent, element, in_row) end @@ -1242,7 +1244,7 @@ function druid__static_grid.init(self, parent, element, in_row) end ---@param index number The grid node index to remove ---@param shift_policy number How shift nodes, if required. See const.SHIFT ---@param is_instant boolean If true, update node positions instantly ----@return Node The deleted gui node from grid +---@return node The deleted gui node from grid function druid__static_grid.remove(self, index, shift_policy, is_instant) end --- Set grid anchor. @@ -1266,8 +1268,8 @@ function druid__static_grid.set_position_function(self, callback) end ---@class druid.static_grid.style ----@field IS_ALIGN_LAST_ROW field If true, always align last row of the grid as grid pivot sets ----@field IS_DYNAMIC_NODE_POSES field If true, always center grid content as grid pivot sets +---@field IS_ALIGN_LAST_ROW boolean If true, always align last row of the grid as grid pivot sets +---@field IS_DYNAMIC_NODE_POSES boolean If true, always center grid content as grid pivot sets local druid__static_grid__style = {} @@ -1278,7 +1280,7 @@ local druid__static_grid__style = {} ---@field style druid.swipe.style Component style params. local druid__swipe = {} ---- Component init function +--- The @{Swipe} constructor ---@param self druid.swipe @{Swipe} ---@param node node Gui node ---@param on_swipe_callback function Swipe callback for on_swipe_end event @@ -1292,9 +1294,9 @@ function druid__swipe.set_click_zone(self, zone) end ---@class druid.swipe.style ----@field SWIPE_THRESHOLD field Minimum distance for swipe trigger ----@field SWIPE_TIME field Maximum time for swipe trigger ----@field SWIPE_TRIGGER_ON_MOVE field If true, trigger on swipe moving, not only release action +---@field SWIPE_THRESHOLD number Minimum distance for swipe trigger +---@field SWIPE_TIME number Maximum time for swipe trigger +---@field SWIPE_TRIGGER_ON_MOVE boolean If true, trigger on swipe moving, not only release action local druid__swipe__style = {} @@ -1327,7 +1329,7 @@ function druid__text.get_text_adjust(self, adjust_type) end ---@return number Height function druid__text.get_text_size(self, text) end ---- @{Text} constructor +--- The @{Text} constructor ---@param self druid.text @{Text} ---@param node string|node Node name or GUI Text Node itself ---@param value string Initial text. Default value is node text from GUI scene. @@ -1336,7 +1338,7 @@ function druid__text.init(self, node, value, adjust_type) end --- Return true, if text with line break ---@param self druid.text @{Text} ----@return bool Is text node with line break +---@return boolean Is text node with line break function druid__text.is_multiline(self) end --- Set alpha @@ -1360,7 +1362,7 @@ function druid__text.set_minimal_scale(self, minimal_scale) end --- Set text pivot. --- Text will re-anchor inside text area ---@param self druid.text @{Text} ----@param pivot gui.pivot Gui pivot constant +---@param pivot number The gui.PIVOT_* constant ---@return druid.text Current text instance function druid__text.set_pivot(self, pivot) end @@ -1385,8 +1387,8 @@ function druid__text.set_to(self, set_to) end ---@class druid.text.style ----@field DEFAULT_ADJUST field The default adjust type for any text component ----@field TRIM_POSTFIX field The postfix for TRIM adjust type +---@field DEFAULT_ADJUST string The default adjust type for any text component +---@field TRIM_POSTFIX string The postfix for TRIM adjust type local druid__text__style = {} @@ -1400,7 +1402,7 @@ local druid__text__style = {} ---@field value number Current timer value local druid__timer = {} ---- Component init function +--- The @{Timer} constructor ---@param self druid.timer @{Timer} ---@param node node Gui text node ---@param seconds_from number Start timer value in seconds @@ -1416,7 +1418,7 @@ function druid__timer.set_interval(self, from, to) end --- Called when update ---@param self druid.timer @{Timer} ----@param is_on bool Timer enable state +---@param is_on boolean Timer enable state function druid__timer.set_state(self, is_on) end --- Set text to text field @@ -1425,11 +1427,6 @@ function druid__timer.set_state(self, is_on) end function druid__timer.set_to(self, set_to) end ----@class druid_const ----@field ON_INPUT field Component Interests -local druid_const = {} - - ---@class druid_instance local druid_instance = {} @@ -1439,13 +1436,13 @@ function druid_instance.final(self) end --- Create new component. ---@param self druid_instance ----@param component Component Component module ----@param ... args Other component params to pass it to component:init function +---@param component druid.base_component Component module +---@param ... any Other component params to pass it to component:init function function druid_instance.new(self, component, ...) end --- Create @{BackHandler} component ---@param self druid_instance ----@param callback callback On back button +---@param callback function @The callback(self, custom_args) to call on back event ---@param params any Callback argument ---@return druid.back_handler @{BackHandler} component function druid_instance.new_back_handler(self, callback, params) end @@ -1485,7 +1482,7 @@ function druid_instance.new_checkbox_group(self, nodes, callback, click_nodes) e --- Create @{DataList} component ---@param self druid_instance ---@param druid_scroll druid.scroll The Scroll instance for Data List component ----@param druid_grid Grid The Grid instance for Data List component +---@param druid_grid druid.static_grid|druid.dynamic_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component ---@param create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) ---@return druid.data_list @{DataList} component function druid_instance.new_data_list(self, druid_scroll, druid_grid, create_function) end @@ -1506,10 +1503,10 @@ function druid_instance.new_dynamic_grid(self, parent) end --- Create @{Hotkey} component ---@param self druid_instance ---@param keys_array string|string[] Keys for trigger action. Should contains one action key and any amount of modificator keys ----@param callback function Button callback ----@param params value Button callback params +---@param callback function The callback function +---@param callback_argument any The argument to pass into the callback function ---@return druid.hotkey @{Hotkey} component -function druid_instance.new_hotkey(self, keys_array, callback, params) end +function druid_instance.new_hotkey(self, keys_array, callback, callback_argument) end --- Create @{Hover} component ---@param self druid_instance @@ -1530,7 +1527,7 @@ function druid_instance.new_input(self, click_node, text_node, keyboard_type) en ---@param self druid_instance ---@param node node The text node ---@param locale_id string Default locale id ----@param no_adjust bool If true, will not correct text size +---@param no_adjust boolean If true, will not correct text size ---@return druid.lang_text @{LangText} component function druid_instance.new_lang_text(self, node, locale_id, no_adjust) end @@ -1599,7 +1596,7 @@ function druid_instance.new_swipe(self, node, on_swipe_callback) end ---@param self druid_instance ---@param node node Gui text node ---@param value string Initial text. Default value is node text from GUI scene. ----@param no_adjust bool If true, text will be not auto-adjust size +---@param no_adjust boolean If true, text will be not auto-adjust size ---@return druid.text @{Text} component function druid_instance.new_text(self, node, value, no_adjust) end @@ -1617,7 +1614,7 @@ function druid_instance.new_timer(self, node, seconds_from, seconds_to, callback ---@param self druid_instance ---@param action_id hash Action_id from on_input ---@param action table Action from on_input ----@return bool The boolean value is input was consumed +---@return boolean The boolean value is input was consumed function druid_instance.on_input(self, action_id, action) end --- Call this in gui_script on_message function. @@ -1631,20 +1628,20 @@ function druid_instance.on_message(self, message_id, message, sender) end --- Remove created component from Druid instance. --- Component `on_remove` function will be invoked, if exist. ---@param self druid_instance ----@param component Component Component instance +---@param component druid.base_component Component instance function druid_instance.remove(self, component) end --- Set blacklist components for input processing. --- If blacklist is not empty and component contains in this list, component will be not processed on input step ---@param self druid_instance @{DruidInstance} ----@param blacklist_components table|Component The array of component to blacklist +---@param blacklist_components table|druid.base_component The array of component to blacklist ---@return self @{DruidInstance} function druid_instance.set_blacklist(self, blacklist_components) end --- Set whitelist components for input processing. --- If whitelist is not empty and component not contains in this list, component will be not processed on input step ---@param self druid_instance ----@param whitelist_components table|Component The array of component to whitelist +---@param whitelist_components table|druid.base_component The array of component to whitelist ---@return self @{DruidInstance} function druid_instance.set_whitelist(self, whitelist_components) end @@ -1659,9 +1656,9 @@ function druid_instance.update(self, dt) end local helper = {} --- Add all elements from source array to the target array ----@param target table Array to put elements from source ----@param source table The source array to get elements from ----@return array The target array +---@param target any[] Array to put elements from source +---@param source any[] The source array to get elements from +---@return any[] The target array function helper.add_array(target, source) end --- Centerate nodes by x position with margin. @@ -1714,7 +1711,7 @@ function helper.get_gui_scale() end --- Get node offset for given GUI pivot. --- Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top. ----@param pivot gui.pivot The node pivot +---@param pivot number The gui.PIVOT_* constant ---@return vector3 Vector offset with [-0.5..0.5] values function helper.get_pivot_offset(pivot) end @@ -1725,7 +1722,7 @@ function helper.get_scaled_size(node) end --- Get cumulative parent's node scale ---@param node node Gui node ----@param include_passed_node_scale bool True if add current node scale to result +---@param include_passed_node_scale boolean True if add current node scale to result ---@return vector3 The scene node scale function helper.get_scene_scale(node, include_passed_node_scale) end @@ -1735,25 +1732,25 @@ function helper.get_scene_scale(node, include_passed_node_scale) end function helper.get_screen_aspect_koef() end --- Get text metric from GUI node. ----@param text_node Node +---@param text_node node ---@return GUITextMetrics function helper.get_text_metrics_from_node(text_node) end --- Add value to array with shift policy --- Shift policy can be: left, right, no_shift ---@param array table Array ----@param item unknown Item to insert +---@param any unknown Item to insert ---@param index number Index to insert. If nil, item will be inserted at the end of array ----@param shift_policy const.SHIFT Shift policy ----@return item Inserted item -function helper.insert_with_shift(array, item, index, shift_policy) end +---@param shift_policy number The druid_const.SHIFT.* constant +---@return any Inserted item +function helper.insert_with_shift(array, any, index, shift_policy) end --- Check if device is native mobile (Android or iOS) ----@return bool Is mobile +---@return boolean Is mobile function helper.is_mobile() end --- Check if device is HTML5 ----@return bool Is web +---@return boolean Is web function helper.is_web() end --- Lerp between two values @@ -1767,8 +1764,8 @@ function helper.lerp(a, b, t) end --- Shift policy can be: left, right, no_shift ---@param array table Array ---@param index number Index to remove. If nil, item will be removed from the end of array ----@param shift_policy const.SHIFT Shift policy ----@return item Removed item +---@param shift_policy number The druid_const.SHIFT.* constant +---@return any Removed item function helper.remove_with_shift(array, index, shift_policy) end --- Round number to specified decimal places @@ -1797,11 +1794,6 @@ function helper.table_to_string(t) end -- Manual Annotations -- ----@class druid.rich_text.style ----@field COLORS table ----@field ADJUST_STEPS number ----@field ADJUST_SCALE_DELTA number - ---@class druid.rich_text.metrics ---@field width number ---@field height number @@ -1815,7 +1807,7 @@ function helper.table_to_string(t) end ---@field lines table ---@class druid.rich_text.word ----@field node Node +---@field node node ---@field relative_scale number ---@field color vector4 ---@field position vector3 @@ -1823,7 +1815,7 @@ function helper.table_to_string(t) end ---@field scale vector3 ---@field size vector3 ---@field metrics druid.rich_text.metrics ----@field pivot Pivot +---@field pivot number @ The gui.PIVOT_* constant ---@field text string ---@field shadow vector4 ---@field outline vector4 @@ -1834,14 +1826,14 @@ function helper.table_to_string(t) end ---@field br boolean ---@field nobr boolean ----@class druid.rich_text.word.image +---@class druid.rich_text.image ---@field texture string ---@field anim string ---@field width number ---@field height number ---@class druid.rich_text.settings ----@field parent Node +---@field parent node ---@field size number ---@field fonts table ---@field color vector4 @@ -1851,8 +1843,8 @@ function helper.table_to_string(t) end ---@field image_pixel_grid_snap boolean ---@field combine_words boolean ---@field default_animation string ----@field node_prefab Node ----@field text_prefab Node +---@field node_prefab node +---@field text_prefab node ---@class GUITextMetrics ---@field width number diff --git a/druid/base/back_handler.lua b/druid/base/back_handler.lua index 2498665..cb9a7af 100644 --- a/druid/base/back_handler.lua +++ b/druid/base/back_handler.lua @@ -45,7 +45,7 @@ local BackHandler = component.create("back_handler") --- The @{BackHandler} constructor -- @tparam BackHandler self @{BackHandler} --- @tparam callback callback On back button +-- @tparam function callback @The callback(self, custom_args) to call on back event -- @tparam[opt] any custom_args Button events custom arguments -- @local function BackHandler.init(self, callback, custom_args) diff --git a/druid/base/blocker.lua b/druid/base/blocker.lua index 6ee9b26..6645913 100644 --- a/druid/base/blocker.lua +++ b/druid/base/blocker.lua @@ -30,7 +30,7 @@ local component = require("druid.component") local Blocker = component.create("blocker") ---- @{Blocker} constructor +--- The @{Blocker} constructor -- @tparam Blocker self @{Blocker} -- @tparam node node Gui node function Blocker.init(self, node) @@ -71,7 +71,7 @@ end -- -- Don't change node enabled state itself. -- @tparam Blocker self @{Blocker} --- @tparam bool state Enabled state +-- @tparam boolean state Enabled state function Blocker.set_enabled(self, state) self._is_enabled = state end @@ -79,7 +79,7 @@ end --- Return blocker enabled state -- @tparam Blocker self @{Blocker} --- @treturn bool True, if blocker is enabled +-- @treturn boolean @True, if blocker is enabled function Blocker.is_enabled(self) return self._is_enabled end diff --git a/druid/base/button.lua b/druid/base/button.lua index d7113cd..024a1b8 100755 --- a/druid/base/button.lua +++ b/druid/base/button.lua @@ -27,7 +27,7 @@ -- print("Also the button component is passed in callback params") -- end -- --- local custom_args = "Any variable to pass inside callback" +-- local custom_args = "any variable to pass inside callback" -- local button = self.druid:new_button("button_name", on_button_click, custom_args) -- -- @module Button @@ -114,7 +114,7 @@ -- @tfield DruidEvent on_pressed @{DruidEvent} --- Button trigger node --- @tfield Node node +-- @tfield node node ---The GUI node id from button node -- @tfield hash node_id @@ -257,15 +257,15 @@ end --- Component style params. -- You can override this component styles params in Druid styles table -- or create your own style --- @table style -- @tfield[opt=0.4] number LONGTAP_TIME Minimum time to trigger on_hold_callback -- @tfield[opt=0.8] number AUTOHOLD_TRIGGER Maximum hold time to trigger button release while holding -- @tfield[opt=0.4] number DOUBLETAP_TIME Time between double taps --- @tfield function on_click (self, node) --- @tfield function on_click_disabled (self, node) --- @tfield function on_hover (self, node, hover_state) --- @tfield function on_mouse_hover (self, node, hover_state) --- @tfield function on_set_enabled (self, node, enabled_state) +-- @tfield function on_click function(self, node) +-- @tfield function on_click_disabled function(self, node) +-- @tfield function on_hover function(self, node, hover_state) +-- @tfield function on_mouse_hover function(self, node, hover_state) +-- @tfield function on_set_enabled function(self, node, enabled_state) +-- @table style function Button.on_style_change(self, style) self.style = {} self.style.LONGTAP_TIME = style.LONGTAP_TIME or 0.4 @@ -282,10 +282,10 @@ end --- The @{Button} constructor -- @tparam Button self @{Button} --- @tparam string|Node node Node name or GUI Node itself +-- @tparam string|node node Node name or GUI Node itself -- @tparam function callback On click button callback -- @tparam[opt] any custom_args Button events custom arguments --- @tparam[opt] string|Node anim_node Node to animate instead of trigger node. +-- @tparam[opt] string|node anim_node Node to animate instead of trigger node. function Button.init(self, node, callback, custom_args, anim_node) self.druid = self:get_druid() self.node = self:get_node(node) @@ -447,7 +447,7 @@ end -- The style.on_set_enabled will be triggered. -- Disabled button is not clickable. -- @tparam Button self @{Button} --- @tparam bool state Enabled state +-- @tparam boolean state Enabled state -- @treturn Button Current button instance -- @usage -- button:set_enabled(false) @@ -465,7 +465,7 @@ end -- -- By default all Buttons is enabled on creating. -- @tparam Button self @{Button} --- @treturn bool True, if button is enabled now, False overwise +-- @treturn boolean @True, if button is enabled now, False overwise -- @usage -- local is_enabled = button:is_enabled() function Button.is_enabled(self) diff --git a/druid/base/drag.lua b/druid/base/drag.lua index 22034f6..2b12a16 100644 --- a/druid/base/drag.lua +++ b/druid/base/drag.lua @@ -26,16 +26,16 @@ -- @tfield DruidEvent on_drag_end @{DruidEvent} --- Is component now touching --- @tfield bool is_touch +-- @tfield boolean is_touch --- Is component now dragging --- @tfield bool is_drag +-- @tfield boolean is_drag --- Is drag component process vertical dragging. Default - true --- @tfield bool can_x +-- @tfield boolean can_x --- Is drag component process horizontal. Default - true --- @tfield bool can_y +-- @tfield boolean can_y --- Current touch x position -- @tfield number x @@ -170,7 +170,7 @@ function Drag.on_style_change(self, style) end ---- Drag component constructor +--- The @{Drag} constructor -- @tparam Drag self @{Drag} -- @tparam node node GUI node to detect dragging -- @tparam function on_drag_callback Callback for on_drag_event(self, dx, dy) @@ -313,7 +313,7 @@ end --- Set Drag input enabled or disabled -- @tparam Drag self @{Drag} --- @tparam bool is_enabled +-- @tparam boolean is_enabled function Drag.set_enabled(self, is_enabled) self._is_enabled = is_enabled end @@ -321,7 +321,7 @@ end --- Check if Drag component is enabled -- @tparam Drag self @{Drag} --- @treturn bool +-- @treturn boolean function Drag.is_enabled(self) return self._is_enabled end diff --git a/druid/base/hover.lua b/druid/base/hover.lua index fd4fe93..90bf904 100644 --- a/druid/base/hover.lua +++ b/druid/base/hover.lua @@ -21,7 +21,7 @@ local component = require("druid.component") local Hover = component.create("hover") ---- Component init function +--- The @{Hover} constructor -- @tparam Hover self @{Hover} -- @tparam node node Gui node -- @tparam function on_hover_callback Hover callback @@ -89,7 +89,7 @@ end --- Set hover state -- @tparam Hover self @{Hover} --- @tparam bool state The hover state +-- @tparam boolean state The hover state function Hover.set_hover(self, state) if self._is_hovered ~= state then self._is_hovered = state @@ -100,7 +100,7 @@ end --- Return current hover state. True if touch action was on the node at current time -- @tparam Hover self @{Hover} --- @treturn bool The current hovered state +-- @treturn boolean The current hovered state function Hover.is_hovered(self) return self._is_hovered end @@ -108,7 +108,7 @@ end --- Set mouse hover state -- @tparam Hover self @{Hover} --- @tparam bool state The mouse hover state +-- @tparam boolean state The mouse hover state function Hover.set_mouse_hover(self, state) if self._is_mouse_hovered ~= state then self._is_mouse_hovered = state @@ -119,7 +119,7 @@ end --- Return current hover state. True if nil action_id (usually desktop mouse) was on the node at current time -- @tparam Hover self @{Hover} --- @treturn bool The current hovered state +-- @treturn boolean The current hovered state function Hover.is_mouse_hovered(self) return self._is_mouse_hovered end @@ -138,7 +138,7 @@ end -- If hover is not enabled, it will not generate -- any hover events -- @tparam Hover self @{Hover} --- @tparam bool state The hover enabled state +-- @tparam boolean state The hover enabled state function Hover.set_enabled(self, state) self._is_enabled = state @@ -155,7 +155,7 @@ end --- Return current hover enabled state -- @tparam Hover self @{Hover} --- @treturn bool The hover enabled state +-- @treturn boolean The hover enabled state function Hover.is_enabled(self) return self._is_enabled end diff --git a/druid/base/scroll.lua b/druid/base/scroll.lua index a7b510a..0aaeabd 100755 --- a/druid/base/scroll.lua +++ b/druid/base/scroll.lua @@ -53,9 +53,6 @@ --- Scroll content node -- @tfield node content_node ---- Flag, if scroll now moving by inertion --- @tfield bool is_inert - --- Current inert speed -- @tfield vector3 inertion @@ -78,7 +75,7 @@ -- @tfield[opt] number selected --- Flag, if scroll now animating by gui.animate --- @tfield bool is_animate +-- @tfield boolean is_animate --- @@ -131,10 +128,10 @@ end -- @tfield[opt=0.35] number BACK_SPEED Scroll back returning lerp speed -- @tfield[opt=0.2] number ANIM_SPEED Scroll gui.animation speed for scroll_to function -- @tfield[opt=0] number EXTRA_STRETCH_SIZE extra size in pixels outside of scroll (stretch effect) --- @tfield[opt=false] bool SMALL_CONTENT_SCROLL If true, content node with size less than view node size can be scrolled --- @tfield[opt=0] bool WHEEL_SCROLL_SPEED The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling --- @tfield[opt=false] bool WHEEL_SCROLL_INVERTED If true, invert direction for touchpad and mouse wheel scroll --- @tfield[opt=false] bool WHEEL_SCROLL_BY_INERTION If true, wheel will add inertion to scroll. Direct set position otherwise. +-- @tfield[opt=false] boolean SMALL_CONTENT_SCROLL If true, content node with size less than view node size can be scrolled +-- @tfield[opt=0] boolean WHEEL_SCROLL_SPEED The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling +-- @tfield[opt=false] boolean WHEEL_SCROLL_INVERTED If true, invert direction for touchpad and mouse wheel scroll +-- @tfield[opt=false] boolean WHEEL_SCROLL_BY_INERTION If true, wheel will add inertion to scroll. Direct set position otherwise. function Scroll.on_style_change(self, style) self.style = {} self.style.EXTRA_STRETCH_SIZE = style.EXTRA_STRETCH_SIZE or 0 @@ -158,7 +155,7 @@ function Scroll.on_style_change(self, style) end ---- @{Scroll} constructor +--- The @{Scroll} constructor -- @tparam Scroll self @{Scroll} -- @tparam string|node view_node GUI view scroll node -- @tparam string|node content_node GUI content scroll node @@ -237,7 +234,7 @@ end --- Start scroll to target point. -- @tparam Scroll self @{Scroll} -- @tparam vector3 point Target point --- @tparam[opt] bool is_instant Instant scroll flag +-- @tparam[opt] boolean is_instant Instant scroll flag -- @usage scroll:scroll_to(vmath.vector3(0, 50, 0)) -- @usage scroll:scroll_to(vmath.vector3(0), true) function Scroll.scroll_to(self, point, is_instant) @@ -271,7 +268,7 @@ end --- Scroll to item in scroll by point index. -- @tparam Scroll self @{Scroll} -- @tparam number index Point index --- @tparam[opt] bool skip_cb If true, skip the point callback +-- @tparam[opt] boolean skip_cb If true, skip the point callback function Scroll.scroll_to_index(self, index, skip_cb) if not self.points then return @@ -294,7 +291,7 @@ end --- Start scroll to target scroll percent -- @tparam Scroll self @{Scroll} -- @tparam vector3 percent target percent --- @tparam[opt] bool is_instant instant scroll flag +-- @tparam[opt] boolean is_instant instant scroll flag -- @usage scroll:scroll_to_percent(vmath.vector3(0.5, 0, 0)) function Scroll.scroll_to_percent(self, percent, is_instant) local border = self.available_pos @@ -342,7 +339,7 @@ end -- If disabled, scroll through points (if exist) -- If no points, just simple drag without inertion -- @tparam Scroll self @{Scroll} --- @tparam bool state Inert scroll state +-- @tparam boolean state Inert scroll state -- @treturn druid.scroll Current scroll instance function Scroll.set_inert(self, state) self._is_inert = state @@ -353,7 +350,7 @@ end --- Return if scroll have inertion. -- @tparam Scroll self @{Scroll} --- @treturn bool If scroll have inertion +-- @treturn boolean @If scroll have inertion function Scroll.is_inert(self) return self._is_inert end @@ -400,7 +397,7 @@ end --- Lock or unlock horizontal scroll -- @tparam Scroll self @{Scroll} --- @tparam bool state True, if horizontal scroll is enabled +-- @tparam boolean state True, if horizontal scroll is enabled -- @treturn druid.scroll Current scroll instance function Scroll.set_horizontal_scroll(self, state) self._is_horizontal_scroll = state @@ -411,7 +408,7 @@ end --- Lock or unlock vertical scroll -- @tparam Scroll self @{Scroll} --- @tparam bool state True, if vertical scroll is enabled +-- @tparam boolean state True, if vertical scroll is enabled -- @treturn druid.scroll Current scroll instance function Scroll.set_vertical_scroll(self, state) self._is_vertical_scroll = state diff --git a/druid/base/static_grid.lua b/druid/base/static_grid.lua index 879bb42..c25a4a3 100644 --- a/druid/base/static_grid.lua +++ b/druid/base/static_grid.lua @@ -102,8 +102,8 @@ end -- You can override this component styles params in druid styles table -- or create your own style -- @table style --- @tfield[opt=false] bool IS_DYNAMIC_NODE_POSES If true, always center grid content as grid pivot sets --- @tfield[opt=false] bool IS_ALIGN_LAST_ROW If true, always align last row of the grid as grid pivot sets +-- @tfield[opt=false] boolean IS_DYNAMIC_NODE_POSES If true, always center grid content as grid pivot sets +-- @tfield[opt=false] boolean IS_ALIGN_LAST_ROW If true, always align last row of the grid as grid pivot sets function StaticGrid.on_style_change(self, style) self.style = {} self.style.IS_DYNAMIC_NODE_POSES = style.IS_DYNAMIC_NODE_POSES or false @@ -113,7 +113,7 @@ end --- The @{StaticGrid} constructor -- @tparam StaticGrid self @{StaticGrid} --- @tparam string|Node parent The GUI Node container, where grid's items will be placed +-- @tparam string|node parent The GUI Node container, where grid's items will be placed -- @tparam node element Element prefab. Need to get it size -- @tparam[opt=1] number in_row How many nodes in row can be placed function StaticGrid.init(self, parent, element, in_row) @@ -151,7 +151,7 @@ local _temp_pos = vmath.vector3(0) --- Return pos for grid node index -- @tparam StaticGrid self @{StaticGrid} -- @tparam number index The grid element index --- @treturn vector3 Node position +-- @treturn vector3 @Node position function StaticGrid.get_pos(self, index) local row = math.ceil(index / self.in_row) - 1 local col = (index - row * self.in_row) - 1 @@ -241,7 +241,7 @@ end -- @tparam number index The grid node index to remove -- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT -- @tparam[opt=false] boolean is_instant If true, update node positions instantly --- @treturn Node The deleted gui node from grid +-- @treturn node The deleted gui node from grid function StaticGrid.remove(self, index, shift_policy, is_instant) assert(self.nodes[index], "No grid item at given index " .. index) @@ -379,7 +379,7 @@ end --- Update grid inner state -- @tparam StaticGrid self @{StaticGrid} --- @tparam bool is_instant If true, node position update instantly, otherwise with set_position_function callback +-- @tparam boolean is_instant If true, node position update instantly, otherwise with set_position_function callback -- @local function StaticGrid._update(self, is_instant) self:_update_indexes() @@ -425,7 +425,7 @@ end --- Update grid nodes position -- @tparam StaticGrid self @{StaticGrid} --- @tparam bool is_instant If true, node position update instantly, otherwise with set_position_function callback +-- @tparam boolean is_instant If true, node position update instantly, otherwise with set_position_function callback -- @local function StaticGrid._update_pos(self, is_instant) local zero_offset = self:_get_zero_offset() diff --git a/druid/base/text.lua b/druid/base/text.lua index 2551f2b..73dd5f8 100755 --- a/druid/base/text.lua +++ b/druid/base/text.lua @@ -222,7 +222,7 @@ function Text.on_style_change(self, style) end ---- @{Text} constructor +--- The @{Text} constructor -- @tparam Text self @{Text} -- @tparam string|node node Node name or GUI Text Node itself -- @tparam[opt] string value Initial text. Default value is node text from GUI scene. @@ -358,7 +358,7 @@ end --- Set text pivot. Text will re-anchor inside text area -- @tparam Text self @{Text} --- @tparam gui.pivot pivot Gui pivot constant +-- @tparam number pivot The gui.PIVOT_* constant -- @treturn Text Current text instance function Text.set_pivot(self, pivot) local prev_pivot = gui.get_pivot(self.node) @@ -384,7 +384,7 @@ end --- Return true, if text with line break -- @tparam Text self @{Text} --- @treturn bool Is text node with line break +-- @treturn boolean Is text node with line break function Text.is_multiline(self) return gui.get_line_break(self.node) end diff --git a/druid/component.lua b/druid/component.lua index 56d12e3..91964ed 100644 --- a/druid/component.lua +++ b/druid/component.lua @@ -74,7 +74,6 @@ end -- -- Invoke `on_style_change` on component, if exist. Component should handle -- their style changing and store all style params --- @function component:set_style -- @tparam BaseComponent self @{BaseComponent} -- @tparam table druid_style Druid style module -- @treturn BaseComponent @{BaseComponent} @@ -94,7 +93,6 @@ end -- -- Use on all your custom components with GUI layouts used as templates. -- It will check parent template name to build full template name in self:get_node() --- @function component:set_template -- @tparam BaseComponent self @{BaseComponent} -- @tparam string template BaseComponent template name -- @treturn BaseComponent @{BaseComponent} @@ -118,7 +116,6 @@ end --- Get current component template name. --- @function component:get_template -- @tparam BaseComponent self @{BaseComponent} -- @treturn string Component full template name function BaseComponent.get_template(self) @@ -128,7 +125,6 @@ end --- Set current component nodes. -- Use if your component nodes was cloned with `gui.clone_tree` and you got the node tree. --- @function component:set_nodes -- @tparam BaseComponent self @{BaseComponent} -- @tparam table nodes BaseComponent nodes table -- @treturn BaseComponent @{BaseComponent} @@ -155,7 +151,6 @@ end --- Context used as first arg in all Druid events -- -- Context is usually self of gui_script. --- @function component:get_context -- @tparam BaseComponent self @{BaseComponent} -- @treturn table BaseComponent context function BaseComponent.get_context(self) @@ -164,7 +159,6 @@ end --- Increase input priority in input stack --- @function component:increase_input_priority -- @tparam BaseComponent self @{BaseComponent} -- @local function BaseComponent.increase_input_priority(self) @@ -178,7 +172,6 @@ end -- It autopick node by template name or from nodes by gui.clone_tree -- if they was setup via component:set_nodes, component:set_template. -- If node is not found, the exception will fired --- @function component:get_node -- @tparam BaseComponent self @{BaseComponent} -- @tparam string|node node_or_name Node name or node itself -- @treturn node Gui node @@ -211,9 +204,8 @@ end --- Get Druid instance for inner component creation. --- @function component:get_druid -- @tparam BaseComponent self @{BaseComponent} --- @treturn Druid Druid instance with component context +-- @treturn DruidInstance Druid instance with component context function BaseComponent.get_druid(self) local context = { _context = self } return setmetatable(context, { __index = self._meta.druid }) @@ -221,7 +213,6 @@ end --- Return component name --- @function component:get_name -- @tparam BaseComponent self @{BaseComponent} -- @treturn string The component name function BaseComponent.get_name(self) @@ -230,7 +221,6 @@ end --- Return parent component name --- @function component:get_parent_name -- @tparam BaseComponent self @{BaseComponent} -- @treturn string|nil The parent component name if exist or bil function BaseComponent.get_parent_name(self) @@ -240,7 +230,6 @@ end --- Return component input priority --- @function component:get_input_priority -- @tparam BaseComponent self @{BaseComponent} -- @treturn number The component input priority function BaseComponent.get_input_priority(self) @@ -251,7 +240,6 @@ end --- Set component input priority -- -- Default value: 10 --- @function component:set_input_priority -- @tparam BaseComponent self @{BaseComponent} -- @tparam number value The new input priority value -- @tparam boolean is_temporary If true, the reset input priority will return to previous value @@ -280,7 +268,6 @@ end --- Reset component input priority to default value --- @function component:reset_input_priority -- @tparam BaseComponent self @{BaseComponent} -- @treturn number The component input priority function BaseComponent.reset_input_priority(self) @@ -292,7 +279,6 @@ end --- Return component UID. -- -- UID generated in component creation order. --- @function component:get_uid -- @tparam BaseComponent self @{BaseComponent} -- @treturn number The component uid function BaseComponent.get_uid(self) @@ -303,9 +289,8 @@ end --- Set component input state. By default it enabled -- -- If input is disabled, the component will not receive input events --- @function component:set_input_enabled -- @tparam BaseComponent self @{BaseComponent} --- @tparam bool state The component input state +-- @tparam boolean state The component input state -- @treturn BaseComponent BaseComponent itself function BaseComponent.set_input_enabled(self, state) self._meta.input_enabled = state @@ -319,7 +304,6 @@ end --- Return the parent component if exist --- @function component:get_parent_component -- @tparam BaseComponent self @{BaseComponent} -- @treturn BaseComponent|nil The druid component instance or nil function BaseComponent.get_parent_component(self) @@ -328,7 +312,6 @@ end --- Setup component context and his style table --- @function component:setup_component -- @tparam BaseComponent self @{BaseComponent} -- @tparam table druid_instance The parent druid instance -- @tparam table context Druid context. Usually it is self of script @@ -362,7 +345,6 @@ end --- Basic constructor of component. It will call automaticaly -- by `BaseComponent.create` --- @function component:initialize -- @tparam BaseComponent self @{BaseComponent} -- @tparam string name BaseComponent name -- @tparam[opt=DEFAULT] number input_priority The input priority. The bigger number processed first @@ -380,7 +362,6 @@ end --- Print log information if debug mode is enabled --- @function component:log_message -- @tparam BaseComponent self @{BaseComponent} -- @tparam string message -- @tparam table context @@ -394,9 +375,8 @@ end --- Set debug logs for component enabled or disabled --- @function component:set_debug -- @tparam BaseComponent self @{BaseComponent} --- @tparam bool is_debug +-- @tparam boolean is_debug -- @local function BaseComponent.set_debug(self, is_debug) self._component.is_debug = is_debug @@ -404,7 +384,6 @@ end --- Return true, if input priority was changed --- @function component:_is_input_priority_changed -- @tparam BaseComponent self @{BaseComponent} -- @local function BaseComponent._is_input_priority_changed(self) @@ -413,7 +392,6 @@ end --- Reset is_input_priority_changed field --- @function component:_reset_input_priority_changed -- @tparam BaseComponent self @{BaseComponent} -- @local function BaseComponent._reset_input_priority_changed(self) @@ -427,7 +405,6 @@ end --- Get current component interests --- @function component:__get_interests -- @tparam BaseComponent self @{BaseComponent} -- @treturn table List of component interests -- @local @@ -451,7 +428,6 @@ end --- Get current component nodes --- @function component:__get_nodes -- @tparam BaseComponent self @{BaseComponent} -- @treturn table BaseComponent nodes table -- @local @@ -466,7 +442,6 @@ end --- Add child to component children list --- @function component:__add_children -- @tparam BaseComponent self @{BaseComponent} -- @tparam component children The druid component instance -- @local @@ -476,7 +451,6 @@ end --- Remove child from component children list --- @function component:__remove_children -- @tparam BaseComponent self @{BaseComponent} -- @tparam component children The druid component instance -- @local @@ -490,7 +464,6 @@ end --- Return all children components, recursive --- @function component:get_childrens -- @tparam BaseComponent self @{BaseComponent} -- @treturn table Array of childrens if the Druid component instance function BaseComponent.get_childrens(self) diff --git a/druid/const.lua b/druid/const.lua index 86f674e..30182c6 100755 --- a/druid/const.lua +++ b/druid/const.lua @@ -20,7 +20,7 @@ M.ACTION_SCROLL_DOWN = hash(sys.get_config("druid.input_scroll_down", "mouse_whe M.IS_STENCIL_CHECK = not (sys.get_config("druid.no_stencil_check") == "1") ---- Component Interests + M.ON_INPUT = "on_input" M.ON_UPDATE = "update" M.ON_MESSAGE = "on_message" diff --git a/druid/custom/pin_knob/pin_knob.lua b/druid/custom/pin_knob/pin_knob.lua index 7cb5858..418f6be 100644 --- a/druid/custom/pin_knob/pin_knob.lua +++ b/druid/custom/pin_knob/pin_knob.lua @@ -10,7 +10,7 @@ -- @tfield DruidInstance druid @{DruidInstance} --- Is currently under user control --- @tfield bool is_drag +-- @tfield boolean is_drag --- The pin node -- @tfield node node @@ -52,7 +52,7 @@ local function set_angle(self, value) end ---- Component init function +--- The @{PinKnob} constructor -- @tparam PinKnob self @{PinKnob} -- @tparam function callback Callback(self, value) on value changed -- @tparam string template The template string name diff --git a/druid/custom/rich_input/rich_input.lua b/druid/custom/rich_input/rich_input.lua index feae392..e932d7a 100644 --- a/druid/custom/rich_input/rich_input.lua +++ b/druid/custom/rich_input/rich_input.lua @@ -61,7 +61,7 @@ local function on_unselect(self) end ---- Component init function +--- The @{RichInput} constructor -- @tparam RichInput self @{RichInput} -- @tparam string template The template string name -- @tparam table nodes Nodes table from gui.clone_tree diff --git a/druid/custom/rich_text/rich_text.lua b/druid/custom/rich_text/rich_text.lua index 53cfa91..6f0b0cd 100644 --- a/druid/custom/rich_text/rich_text.lua +++ b/druid/custom/rich_text/rich_text.lua @@ -90,6 +90,7 @@ --- The component druid instance -- @tfield DruidInstance druid @{DruidInstance} +-- local component = require("druid.component") local rich_text = require("druid.custom.rich_text.module.rt") @@ -103,7 +104,7 @@ local SCHEME = { } ---- Rich Text component constructor +--- The @{RichText} constructor -- @tparam RichText self @{RichText} -- @tparam string template The Rich Text template name -- @tparam table nodes The node table, if prefab was copied by gui.clone_tree() diff --git a/druid/event.lua b/druid/event.lua index 6a61594..fdddbf8 100644 --- a/druid/event.lua +++ b/druid/event.lua @@ -32,7 +32,7 @@ end --- Subscribe callback on event -- @tparam DruidEvent self @{DruidEvent} -- @tparam function callback Callback itself --- @tparam[opt] Any context Additional context as first param to callback call, usually it's self +-- @tparam[opt] any context Additional context as first param to callback call, usually it's self -- @usage -- local function on_long_callback(self) -- print("Long click!") @@ -57,7 +57,7 @@ end --- Unsubscribe callback on event -- @tparam DruidEvent self @{DruidEvent} -- @tparam function callback Callback itself --- @tparam[opt] Any context Additional context as first param to callback call +-- @tparam[opt] any context Additional context as first param to callback call -- @usage -- local function on_long_callback(self) -- print("Long click!") @@ -80,7 +80,7 @@ end --- Return true, if event have at lease one handler -- @tparam DruidEvent self @{DruidEvent} --- @treturn bool True if event have handlers +-- @treturn boolean True if event have handlers -- @usage -- local is_long_click_handler_exists = button.on_long_click:is_exist() function DruidEvent.is_exist(self) @@ -102,7 +102,7 @@ end --- Trigger the event and call all subscribed callbacks -- @tparam DruidEvent self @{DruidEvent} --- @tparam Any ... All event params +-- @tparam any ... All event params -- @usage -- local Event = require("druid.event") -- ... diff --git a/druid/extended/checkbox.lua b/druid/extended/checkbox.lua index f3ee5fa..29dfd8b 100755 --- a/druid/extended/checkbox.lua +++ b/druid/extended/checkbox.lua @@ -46,7 +46,7 @@ function Checkbox.on_style_change(self, style) end ---- Component init function +--- The @{Checkbox} constructor -- @tparam Checkbox self @{Checkbox} -- @tparam node node Gui node -- @tparam function callback Checkbox callback @@ -71,9 +71,9 @@ end --- Set checkbox state -- @tparam Checkbox self @{Checkbox} --- @tparam bool state Checkbox state --- @tparam bool is_silent Don't trigger on_change_state if true --- @tparam bool is_instant If instant checkbox change +-- @tparam boolean state Checkbox state +-- @tparam boolean is_silent Don't trigger on_change_state if true +-- @tparam boolean is_instant If instant checkbox change function Checkbox.set_state(self, state, is_silent, is_instant) self.state = state self.style.on_change_state(self, self.node, state, is_instant) @@ -88,7 +88,7 @@ end --- Return checkbox state -- @tparam Checkbox self @{Checkbox} --- @treturn bool Checkbox state +-- @treturn boolean Checkbox state function Checkbox.get_state(self) return self.state end diff --git a/druid/extended/checkbox_group.lua b/druid/extended/checkbox_group.lua index 046bbfa..841fd29 100644 --- a/druid/extended/checkbox_group.lua +++ b/druid/extended/checkbox_group.lua @@ -21,7 +21,7 @@ local component = require("druid.component") local CheckboxGroup = component.create("checkbox_group") ---- Component init function +--- The @{CheckboxGroup} constructor -- @tparam CheckboxGroup self @{CheckboxGroup} -- @tparam node[] nodes Array of gui node -- @tparam function callback Checkbox callback @@ -45,7 +45,7 @@ end --- Set checkbox group state -- @tparam CheckboxGroup self @{CheckboxGroup} --- @tparam bool[] indexes Array of checkbox state +-- @tparam boolean[] indexes Array of checkbox state -- @tparam boolean is_instant If instant state change function CheckboxGroup.set_state(self, indexes, is_instant) for i = 1, #indexes do @@ -58,7 +58,7 @@ end --- Return checkbox group state -- @tparam CheckboxGroup self @{CheckboxGroup} --- @treturn bool[] Array if checkboxes state +-- @treturn boolean[] Array if checkboxes state function CheckboxGroup.get_state(self) local result = {} diff --git a/druid/extended/data_list.lua b/druid/extended/data_list.lua index f7187b7..f3e5be1 100644 --- a/druid/extended/data_list.lua +++ b/druid/extended/data_list.lua @@ -43,7 +43,7 @@ local Event = require("druid.event") local DataList = component.create("data_list") ---- Data list constructor +--- The @{DataList} constructor -- @tparam DataList self @{DataList} -- @tparam Scroll scroll The @{Scroll} instance for Data List component -- @tparam StaticGrid|DynamicGrid grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component @@ -197,7 +197,7 @@ end --- Return all currenly created nodes in DataList -- @tparam DataList self @{DataList} --- @treturn Node[] List of created nodes +-- @treturn node[] List of created nodes function DataList.get_created_nodes(self) local nodes = {} diff --git a/druid/extended/dynamic_grid.lua b/druid/extended/dynamic_grid.lua index 1fec83f..db58f4c 100644 --- a/druid/extended/dynamic_grid.lua +++ b/druid/extended/dynamic_grid.lua @@ -65,7 +65,7 @@ local AVAILABLE_PIVOTS = { } ---- Component init function +--- The @{DynamicGrid} constructor -- @tparam DynamicGrid self @{DynamicGrid} -- @tparam node parent The gui node parent, where items will be placed function DynamicGrid.init(self, parent) @@ -322,7 +322,7 @@ end --- Update grid inner state -- @tparam DynamicGrid self @{DynamicGrid} --- @tparam bool is_instant If true, node position update instantly, otherwise with set_position_function callback +-- @tparam boolean is_instant If true, node position update instantly, otherwise with set_position_function callback -- @local function DynamicGrid._update(self, is_instant) self:_update_indexes() @@ -378,7 +378,7 @@ end --- Update grid nodes position -- @tparam DynamicGrid self @{DynamicGrid} --- @tparam bool is_instant If true, node position update instantly, otherwise with set_position_function callback +-- @tparam boolean is_instant If true, node position update instantly, otherwise with set_position_function callback -- @local function DynamicGrid._update_pos(self, is_instant) for index, node in pairs(self.nodes) do diff --git a/druid/extended/hotkey.lua b/druid/extended/hotkey.lua index 6985f15..d1900e4 100644 --- a/druid/extended/hotkey.lua +++ b/druid/extended/hotkey.lua @@ -27,11 +27,11 @@ local component = require("druid.component") local Hotkey = component.create("hotkey") ---- Component init function +--- The @{Hotkey} constructor -- @tparam Hotkey self @{Hotkey} -- @tparam string[]|string keys The keys to be pressed for trigger callback. Should contains one key and any modificator keys -- @tparam function callback The callback function --- @tparam[opt] value callback_argument The argument to pass into the callback function +-- @tparam[opt] any callback_argument The argument to pass into the callback function function Hotkey.init(self, keys, callback, callback_argument) self.druid = self:get_druid() @@ -63,7 +63,7 @@ end --- Add hotkey for component callback -- @tparam Hotkey self @{Hotkey} -- @tparam string[]|hash[]|string|hash keys that have to be pressed before key pressed to activate --- @tparam[opt] value callback_argument The argument to pass into the callback function +-- @tparam[opt] any callback_argument The argument to pass into the callback function function Hotkey.add_hotkey(self, keys, callback_argument) keys = keys or {} if type(keys) == "string" then diff --git a/druid/extended/input.lua b/druid/extended/input.lua index f08ac6b..0496d18 100755 --- a/druid/extended/input.lua +++ b/druid/extended/input.lua @@ -34,10 +34,10 @@ -- @tfield Button button @{Button} --- Is current input selected now --- @tfield bool is_selected +-- @tfield boolean is_selected --- Is current input is empty now --- @tfield bool is_empty +-- @tfield boolean is_empty --- Max length for input text -- @tfield[opt] number max_length @@ -87,10 +87,10 @@ end -- You can override this component styles params in druid styles table -- or create your own style -- @table style --- @tfield[opt=false] bool IS_LONGTAP_ERASE Is long tap will erase current input data +-- @tfield[opt=false] boolean IS_LONGTAP_ERASE Is long tap will erase current input data -- @tfield[opt=*] string MASK_DEFAULT_CHAR Default character mask for password input --- @tfield[opt=false] bool IS_UNSELECT_ON_RESELECT If true, call unselect on select selected input --- @tfield[opt=false] bool NO_CONSUME_INPUT_WHILE_SELECTED If true, will not consume input while input is selected. It's allow to interact with other components while input is selected (text input still captured) +-- @tfield[opt=false] boolean IS_UNSELECT_ON_RESELECT If true, call unselect on select selected input +-- @tfield[opt=false] boolean NO_CONSUME_INPUT_WHILE_SELECTED If true, will not consume input while input is selected. It's allow to interact with other components while input is selected (text input still captured) -- @tfield function on_select (self, button_node) Callback on input field selecting -- @tfield function on_unselect (self, button_node) Callback on input field unselecting -- @tfield function on_input_wrong (self, button_node) Callback on wrong user input @@ -115,7 +115,7 @@ function Input.on_style_change(self, style) end ---- Component init function +--- The @{Input} constructor -- @tparam Input self @{Input} -- @tparam node click_node Node to enabled input component -- @tparam node|Text text_node Text node what will be changed on user input. You can pass text component instead of text node name @{Text} diff --git a/druid/extended/layout.lua b/druid/extended/layout.lua index 7bcd8f0..8508790 100644 --- a/druid/extended/layout.lua +++ b/druid/extended/layout.lua @@ -28,7 +28,7 @@ local Event = require("druid.event") local Layout = component.create("layout") ---- Component init function +--- The @{Layout} constructor -- @tparam Layout self @{Layout} -- @tparam node node Gui node -- @tparam string mode The layout mode (from const.LAYOUT_MODE) @@ -194,7 +194,7 @@ end --- Set node for layout node to fit inside it. Pass nil to reset -- @tparam Layout self @{Layout} --- @tparam[opt] Node node +-- @tparam[opt] node node -- @treturn Layout @{Layout} function Layout.fit_into_node(self, node) self._fit_node = node diff --git a/druid/extended/progress.lua b/druid/extended/progress.lua index ac24bba..7b3e057 100644 --- a/druid/extended/progress.lua +++ b/druid/extended/progress.lua @@ -110,7 +110,7 @@ function Progress.on_style_change(self, style) end ---- @{Progress} constructor +--- The @{Progress} constructor -- @tparam Progress self @{Progress} -- @tparam string|node node Node name or GUI Node itself. -- @tparam string key Progress bar direction: const.SIDE.X or const.SIDE.Y diff --git a/druid/extended/radio_group.lua b/druid/extended/radio_group.lua index 96aa334..9f0ad06 100644 --- a/druid/extended/radio_group.lua +++ b/druid/extended/radio_group.lua @@ -30,7 +30,7 @@ local function on_checkbox_click(self, index, is_instant) end ---- Component init function +--- The @{RadioGroup} constructor -- @tparam RadioGroup self @{RadioGroup} -- @tparam node[] nodes Array of gui node -- @tparam function callback Radio callback diff --git a/druid/extended/slider.lua b/druid/extended/slider.lua index 8907a8b..d74c12a 100644 --- a/druid/extended/slider.lua +++ b/druid/extended/slider.lua @@ -29,7 +29,7 @@ -- @tfield number dist --- Current drag state --- @tfield bool is_drag +-- @tfield boolean is_drag --- Current slider value -- @tfield number value @@ -56,7 +56,7 @@ local function set_position(self, value) end ---- Component init function +--- The @{Slider} constructor -- @tparam Slider self @{Slider} -- @tparam node node Gui pin node -- @tparam vector3 end_pos The end position of slider @@ -174,7 +174,7 @@ end --- Set value for slider -- @tparam Slider self @{Slider} -- @tparam number value Value from 0 to 1 --- @tparam[opt] bool is_silent Don't trigger event if true +-- @tparam[opt] boolean is_silent Don't trigger event if true function Slider.set(self, value, is_silent) value = helper.clamp(value, 0, 1) set_position(self, value) @@ -202,7 +202,7 @@ end -- move at this position and node drag will start. -- This function require the Defold version 1.3.0+ -- @tparam Slider self @{Slider} --- @tparam Node input_node +-- @tparam node input_node -- @treturn Slider @{Slider} function Slider.set_input_node(self, input_node) self._input_node = self:get_node(input_node) diff --git a/druid/extended/swipe.lua b/druid/extended/swipe.lua index 5b43112..f04c733 100644 --- a/druid/extended/swipe.lua +++ b/druid/extended/swipe.lua @@ -76,7 +76,7 @@ end -- @table style -- @tfield[opt=0.4] number SWIPE_TIME Maximum time for swipe trigger -- @tfield[opt=50] number SWIPE_THRESHOLD Minimum distance for swipe trigger --- @tfield[opt=false] bool SWIPE_TRIGGER_ON_MOVE If true, trigger on swipe moving, not only release action +-- @tfield[opt=false] boolean SWIPE_TRIGGER_ON_MOVE If true, trigger on swipe moving, not only release action function Swipe.on_style_change(self, style) self.style = {} self.style.SWIPE_TIME = style.SWIPE_TIME or 0.4 @@ -85,7 +85,7 @@ function Swipe.on_style_change(self, style) end ---- Component init function +--- The @{Swipe} constructor -- @tparam Swipe self @{Swipe} -- @tparam node node Gui node -- @tparam function on_swipe_callback Swipe callback for on_swipe_end event diff --git a/druid/extended/timer.lua b/druid/extended/timer.lua index 17311e1..299c057 100644 --- a/druid/extended/timer.lua +++ b/druid/extended/timer.lua @@ -44,7 +44,7 @@ local function second_string_min(sec) end ---- Component init function +--- The @{Timer} constructor -- @tparam Timer self @{Timer} -- @tparam node node Gui text node -- @tparam number seconds_from Start timer value in seconds @@ -110,7 +110,7 @@ end --- Called when update -- @tparam Timer self @{Timer} --- @tparam bool is_on Timer enable state +-- @tparam boolean is_on Timer enable state function Timer.set_state(self, is_on) self.is_on = is_on diff --git a/druid/helper.lua b/druid/helper.lua index 64309d0..71afe65 100644 --- a/druid/helper.lua +++ b/druid/helper.lua @@ -255,9 +255,9 @@ end --- Add all elements from source array to the target array -- @function helper.add_array --- @tparam table target Array to put elements from source --- @tparam[opt] table source The source array to get elements from --- @treturn array The target array +-- @tparam any[] target Array to put elements from source +-- @tparam[opt] any[] source The source array to get elements from +-- @treturn any[] The target array function M.add_array(target, source) assert(target) @@ -275,7 +275,7 @@ end --- Make a check with gui.pick_node, but with additional node_click_area check. -- @function helper.pick_node --- @tparam Node node +-- @tparam node node -- @tparam number x -- @tparam number y -- @tparam[opt] Node node_click_area @@ -302,7 +302,7 @@ end --- Get cumulative parent's node scale -- @function helper.get_scene_scale -- @tparam node node Gui node --- @tparam bool include_passed_node_scale True if add current node scale to result +-- @tparam boolean include_passed_node_scale True if add current node scale to result -- @treturn vector3 The scene node scale function M.get_scene_scale(node, include_passed_node_scale) local scale = include_passed_node_scale and gui.get_scale(node) or vmath.vector3(1) @@ -345,7 +345,7 @@ end -- -- Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top. -- @function helper.get_pivot_offset --- @tparam gui.pivot pivot The node pivot +-- @tparam number pivot The gui.PIVOT_* constant -- @treturn vector3 Vector offset with [-0.5..0.5] values function M.get_pivot_offset(pivot) return const.PIVOTS[pivot] @@ -354,7 +354,7 @@ end --- Check if device is native mobile (Android or iOS) -- @function helper.is_mobile --- @treturn bool Is mobile +-- @treturn boolean Is mobile function M.is_mobile() return const.CURRENT_SYSTEM_NAME == const.OS.IOS or const.CURRENT_SYSTEM_NAME == const.OS.ANDROID @@ -363,7 +363,7 @@ end --- Check if device is HTML5 -- @function helper.is_web --- @treturn bool Is web +-- @treturn boolean Is web function M.is_web() return const.CURRENT_SYSTEM_NAME == const.OS.BROWSER end @@ -420,7 +420,7 @@ end --- Get text metric from GUI node. -- @function helper.get_text_metrics_from_node --- @tparam Node text_node +-- @tparam node text_node -- @treturn GUITextMetrics -- @usage -- type GUITextMetrics = { @@ -451,10 +451,10 @@ end -- Shift policy can be: left, right, no_shift -- @function helper.insert_with_shift -- @tparam table array Array --- @param item Item to insert +-- @param any Item to insert -- @tparam[opt] number index Index to insert. If nil, item will be inserted at the end of array --- @tparam[opt] const.SHIFT shift_policy Shift policy --- @treturn item Inserted item +-- @tparam[opt] number shift_policy The druid_const.SHIFT.* constant +-- @treturn any Inserted item function M.insert_with_shift(array, item, index, shift_policy) shift_policy = shift_policy or const.SHIFT.RIGHT @@ -484,8 +484,8 @@ end -- @function helper.remove_with_shift -- @tparam table array Array -- @tparam[opt] number index Index to remove. If nil, item will be removed from the end of array --- @tparam[opt] const.SHIFT shift_policy Shift policy --- @treturn item Removed item +-- @tparam[opt] number shift_policy The druid_const.SHIFT.* constant +-- @treturn any Removed item function M.remove_with_shift(array, index, shift_policy) shift_policy = shift_policy or const.SHIFT.RIGHT diff --git a/druid/system/druid_instance.lua b/druid/system/druid_instance.lua index b125bb9..688edaf 100755 --- a/druid/system/druid_instance.lua +++ b/druid/system/druid_instance.lua @@ -259,8 +259,8 @@ end --- Create new component. -- @tparam DruidInstance self --- @tparam Component component Component module --- @tparam args ... Other component params to pass it to component:init function +-- @tparam BaseComponent component Component module +-- @tparam any ... Other component params to pass it to component:init function function DruidInstance.new(self, component, ...) local instance = create(self, component) @@ -296,7 +296,7 @@ end -- -- Component `on_remove` function will be invoked, if exist. -- @tparam DruidInstance self --- @tparam Component component Component instance +-- @tparam BaseComponent component Component instance function DruidInstance.remove(self, component) if self._is_late_remove_enabled then table.insert(self._late_remove, component) @@ -380,7 +380,7 @@ end -- @tparam DruidInstance self -- @tparam hash action_id Action_id from on_input -- @tparam table action Action from on_input --- @treturn bool The boolean value is input was consumed +-- @treturn boolean The boolean value is input was consumed function DruidInstance.on_input(self, action_id, action) self._is_late_remove_enabled = true @@ -477,7 +477,7 @@ end -- If whitelist is not empty and component not contains in this list, -- component will be not processed on input step -- @tparam DruidInstance self --- @tparam[opt=nil] table|Component whitelist_components The array of component to whitelist +-- @tparam[opt=nil] table|BaseComponent whitelist_components The array of component to whitelist -- @treturn self @{DruidInstance} function DruidInstance.set_whitelist(self, whitelist_components) if whitelist_components and whitelist_components.isInstanceOf then @@ -499,7 +499,7 @@ end -- If blacklist is not empty and component contains in this list, -- component will be not processed on input step -- @tparam DruidInstance self @{DruidInstance} --- @tparam[opt=nil] table|Component blacklist_components The array of component to blacklist +-- @tparam[opt=nil] table|BaseComponent blacklist_components The array of component to blacklist -- @treturn self @{DruidInstance} function DruidInstance.set_blacklist(self, blacklist_components) if blacklist_components and blacklist_components.isInstanceOf then @@ -518,7 +518,7 @@ end --- Set debug mode for current Druid instance. It's enable debug log messages -- @tparam DruidInstance self @{DruidInstance} --- @tparam bool is_debug +-- @tparam boolean is_debug -- @treturn self @{DruidInstance} -- @local function DruidInstance.set_debug(self, is_debug) @@ -579,7 +579,7 @@ end --- Create @{BackHandler} component -- @tparam DruidInstance self --- @tparam callback callback On back button +-- @tparam function callback @The callback(self, custom_args) to call on back event -- @tparam[opt] any params Callback argument -- @treturn BackHandler @{BackHandler} component function DruidInstance.new_back_handler(self, callback, params) @@ -601,7 +601,7 @@ end -- @tparam DruidInstance self -- @tparam node node Gui text node -- @tparam[opt] string value Initial text. Default value is node text from GUI scene. --- @tparam[opt] bool no_adjust If true, text will be not auto-adjust size +-- @tparam[opt] boolean no_adjust If true, text will be not auto-adjust size -- @treturn Text @{Text} component function DruidInstance.new_text(self, node, value, no_adjust) return DruidInstance.new(self, text, node, value, no_adjust) @@ -676,7 +676,7 @@ end -- @tparam DruidInstance self -- @tparam node node The text node -- @tparam string locale_id Default locale id --- @tparam bool no_adjust If true, will not correct text size +-- @tparam boolean no_adjust If true, will not correct text size -- @treturn LangText @{LangText} component function DruidInstance.new_lang_text(self, node, locale_id, no_adjust) return helper.require_component_message("lang_text") @@ -731,7 +731,7 @@ end --- Create @{DataList} component -- @tparam DruidInstance self -- @tparam Scroll druid_scroll The Scroll instance for Data List component --- @tparam Grid druid_grid The Grid instance for Data List component +-- @tparam StaticGrid|DynamicGrid druid_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component -- @tparam function create_function The create function callback(self, data, index, data_list). Function should return (node, [component]) -- @treturn DataList @{DataList} component function DruidInstance.new_data_list(self, druid_scroll, druid_grid, create_function) @@ -786,10 +786,10 @@ end --- Create @{Hotkey} component -- @tparam DruidInstance self -- @tparam string|string[] keys_array Keys for trigger action. Should contains one action key and any amount of modificator keys --- @tparam function callback Button callback --- @tparam[opt] value params Button callback params +-- @tparam function callback The callback function +-- @tparam[opt] any callback_argument The argument to pass into the callback function -- @treturn Hotkey @{Hotkey} component -function DruidInstance.new_hotkey(self, keys_array, callback, params) +function DruidInstance.new_hotkey(self, keys_array, callback, callback_argument) return helper.require_component_message("hotkey") end diff --git a/utils/annotations_manual.lua b/utils/annotations_manual.lua index 7fb8d1c..d87b665 100644 --- a/utils/annotations_manual.lua +++ b/utils/annotations_manual.lua @@ -1,10 +1,5 @@ -- Manual Annotations -- ----@class druid.rich_text.style ----@field COLORS table ----@field ADJUST_STEPS number ----@field ADJUST_SCALE_DELTA number - ---@class druid.rich_text.metrics ---@field width number ---@field height number @@ -18,7 +13,7 @@ ---@field lines table ---@class druid.rich_text.word ----@field node Node +---@field node node ---@field relative_scale number ---@field color vector4 ---@field position vector3 @@ -26,7 +21,7 @@ ---@field scale vector3 ---@field size vector3 ---@field metrics druid.rich_text.metrics ----@field pivot Pivot +---@field pivot number @ The gui.PIVOT_* constant ---@field text string ---@field shadow vector4 ---@field outline vector4 @@ -37,14 +32,14 @@ ---@field br boolean ---@field nobr boolean ----@class druid.rich_text.word.image +---@class druid.rich_text.image ---@field texture string ---@field anim string ---@field width number ---@field height number ---@class druid.rich_text.settings ----@field parent Node +---@field parent node ---@field size number ---@field fonts table ---@field color vector4 @@ -54,8 +49,8 @@ ---@field image_pixel_grid_snap boolean ---@field combine_words boolean ---@field default_animation string ----@field node_prefab Node ----@field text_prefab Node +---@field node_prefab node +---@field text_prefab node ---@class GUITextMetrics ---@field width number From 50c9b6bad5ac2313db6f7600f68f3b7b2d127489 Mon Sep 17 00:00:00 2001 From: Insality Date: Tue, 17 Oct 2023 22:00:43 +0300 Subject: [PATCH 02/10] Annotations update [2] --- docs/modules/BaseComponent.html | 4 +- docs/modules/Blocker.html | 2 +- docs/modules/Button.html | 31 +- docs/modules/Checkbox.html | 6 +- docs/modules/CheckboxGroup.html | 2 +- docs/modules/Drag.html | 2 +- docs/modules/Druid.html | 7 +- docs/modules/DruidEvent.html | 21 +- docs/modules/DruidInstance.html | 153 ++- docs/modules/DynamicGrid.html | 14 +- docs/modules/Helper.html | 36 +- docs/modules/Hotkey.html | 14 +- docs/modules/Hover.html | 6 +- docs/modules/Input.html | 7 +- docs/modules/LangText.html | 57 +- docs/modules/Layout.html | 14 +- docs/modules/Progress.html | 7 +- docs/modules/RadioGroup.html | 2 +- docs/modules/Scroll.html | 27 +- docs/modules/Slider.html | 14 +- docs/modules/StaticGrid.html | 7 +- docs/modules/Swipe.html | 3 +- docs/modules/Text.html | 24 +- docs/modules/Timer.html | 9 +- druid/annotations.lua | 1854 +---------------------------- druid/base/back_handler.lua | 2 +- druid/base/blocker.lua | 2 +- druid/base/button.lua | 14 +- druid/base/drag.lua | 2 +- druid/base/hover.lua | 6 +- druid/base/scroll.lua | 12 +- druid/base/static_grid.lua | 6 +- druid/base/text.lua | 8 +- druid/component.lua | 6 +- druid/druid.lua | 2 +- druid/event.lua | 6 +- druid/extended/checkbox.lua | 6 +- druid/extended/checkbox_group.lua | 2 +- druid/extended/dynamic_grid.lua | 8 +- druid/extended/hotkey.lua | 4 +- druid/extended/input.lua | 2 +- druid/extended/lang_text.lua | 32 +- druid/extended/layout.lua | 4 +- druid/extended/progress.lua | 2 +- druid/extended/radio_group.lua | 2 +- druid/extended/slider.lua | 4 +- druid/extended/swipe.lua | 2 +- druid/extended/timer.lua | 4 +- druid/helper.lua | 24 +- druid/system/druid_instance.lua | 80 +- 50 files changed, 327 insertions(+), 2238 deletions(-) diff --git a/docs/modules/BaseComponent.html b/docs/modules/BaseComponent.html index b05ce5a..52c4c3c 100644 --- a/docs/modules/BaseComponent.html +++ b/docs/modules/BaseComponent.html @@ -492,7 +492,7 @@ return AwesomeComponent BaseComponent
  • state - boolean + boolean or nil The component input state
  • @@ -527,7 +527,7 @@ return AwesomeComponent The new input priority value
  • is_temporary - boolean + boolean or nil If true, the reset input priority will return to previous value
  • diff --git a/docs/modules/Blocker.html b/docs/modules/Blocker.html index de139c1..00ed7cd 100644 --- a/docs/modules/Blocker.html +++ b/docs/modules/Blocker.html @@ -189,7 +189,7 @@ local blocker = self.druid:new_blocker(node) Blocker
  • state - boolean + boolean or nil Enabled state
  • diff --git a/docs/modules/Button.html b/docs/modules/Button.html index 72b228b..d710ac9 100644 --- a/docs/modules/Button.html +++ b/docs/modules/Button.html @@ -110,7 +110,7 @@ local button = self.druid:new_button("button_name", on_button_click, c
    - + @@ -118,7 +118,7 @@ local button = self.druid:new_button("button_name", on_button_click, c - + @@ -134,7 +134,7 @@ local button = self.druid:new_button("button_name", on_button_click, c - +
    init(self, node, seconds_from[, seconds_to=0[, callback]])Component init functionThe Timer constructor
    set_interval(self, from, to) Get current key name to trigger this button.
    init(self, node, callback[, custom_args[, anim_node]])init(self, node, callback, custom_args, anim_node) The Button constructor
    Get button enabled state.
    set_check_function(self[, check_function[, failure_callback]])set_check_function(self, check_function, failure_callback) Set function for additional check for button click availability
    Set key name to trigger this button by keyboard.
    set_web_user_interaction(self[, is_web_mode])set_web_user_interaction(self, is_web_mode) Set Button mode to work inside user HTML5 interaction event.
    @@ -241,7 +241,7 @@ local button = self.druid:new_button("button_name", on_button_click, c
    - init(self, node, callback[, custom_args[, anim_node]]) + init(self, node, callback, custom_args, anim_node)
    The Button constructor @@ -255,21 +255,19 @@ local button = self.druid:new_button("button_name", on_button_click, c
  • node string or node - Node name or GUI Node itself + The node_id or gui.get_node(node_id)
  • callback function On click button callback
  • custom_args - any + any or nil Button events custom arguments - (optional)
  • anim_node - string or node + string, node or nil Node to animate instead of trigger node. - (optional)
  • @@ -312,7 +310,7 @@ local button = self.druid:new_button("button_name", on_button_click, c
    - set_check_function(self[, check_function[, failure_callback]]) + set_check_function(self, check_function, failure_callback)
    Set function for additional check for button click availability @@ -325,14 +323,12 @@ local button = self.druid:new_button("button_name", on_button_click, c
  • check_function - function + function or nil Should return true or false. If true - button can be pressed. - (optional)
  • failure_callback - function + function or nil Function will be called on button click, if check function return false - (optional)
  • @@ -401,7 +397,7 @@ local button = self.druid:new_button("button_name", on_button_click, c Button
  • state - boolean + boolean or nil Enabled state
  • @@ -459,7 +455,7 @@ button:set_enabled(true)
    - set_web_user_interaction(self[, is_web_mode]) + set_web_user_interaction(self, is_web_mode)
    Set Button mode to work inside user HTML5 interaction event. @@ -475,9 +471,8 @@ button:set_enabled(true)
  • is_web_mode - boolean + boolean or nil If true - button will be called inside html5 callback - (optional)
  • diff --git a/docs/modules/Checkbox.html b/docs/modules/Checkbox.html index ba5f545..8ac33c6 100644 --- a/docs/modules/Checkbox.html +++ b/docs/modules/Checkbox.html @@ -210,15 +210,15 @@ Checkbox
  • state - boolean + boolean or nil Checkbox state
  • is_silent - boolean + boolean or nil Don't trigger on_change_state if true
  • is_instant - boolean + boolean or nil If instant checkbox change
  • diff --git a/docs/modules/CheckboxGroup.html b/docs/modules/CheckboxGroup.html index 726759c..8551324 100644 --- a/docs/modules/CheckboxGroup.html +++ b/docs/modules/CheckboxGroup.html @@ -193,7 +193,7 @@ Array of checkbox state
  • is_instant - boolean + boolean or nil If instant state change
  • diff --git a/docs/modules/Drag.html b/docs/modules/Drag.html index 7cec624..b6ce635 100644 --- a/docs/modules/Drag.html +++ b/docs/modules/Drag.html @@ -266,7 +266,7 @@ Drag
  • is_enabled - boolean + boolean or nil
  • diff --git a/docs/modules/Druid.html b/docs/modules/Druid.html index 0b5f5d6..cd3aad3 100644 --- a/docs/modules/Druid.html +++ b/docs/modules/Druid.html @@ -120,7 +120,7 @@ end

    Functions

    - + @@ -158,7 +158,7 @@ end
    - druid.new(context[, style]) + druid.new(context, style)
    Create a new Druid instance for creating GUI components. @@ -171,9 +171,8 @@ end The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks.
  • style - table + table or nil The Druid style table to override style parameters for this Druid instance. - (optional)
  • diff --git a/docs/modules/DruidEvent.html b/docs/modules/DruidEvent.html index bd16b36..6a00780 100644 --- a/docs/modules/DruidEvent.html +++ b/docs/modules/DruidEvent.html @@ -87,7 +87,7 @@
    - + @@ -95,7 +95,7 @@ - + @@ -103,7 +103,7 @@ - +
    druid.new(context[, style])druid.new(context, style) Create a new Druid instance for creating GUI components.
    Clear the all event handlers
    initialize(self[, initial_callback])initialize(self, initial_callback) DruidEvent constructor
    Return true, if event have at lease one handler
    subscribe(self, callback[, context])subscribe(self, callback, context) Subscribe callback on event
    Trigger the event and call all subscribed callbacks
    unsubscribe(self, callback[, context])unsubscribe(self, callback, context) Unsubscribe callback on event
    @@ -142,7 +142,7 @@
    - initialize(self[, initial_callback]) + initialize(self, initial_callback)
    DruidEvent constructor @@ -155,9 +155,8 @@ DruidEvent
  • initial_callback - function + function or nil Subscribe the callback on new event, if callback exist - (optional)
  • @@ -205,7 +204,7 @@
    - subscribe(self, callback[, context]) + subscribe(self, callback, context)
    Subscribe callback on event @@ -222,9 +221,8 @@ Callback itself
  • context - any + any or nil Additional context as first param to callback call, usually it's self - (optional)
  • @@ -276,7 +274,7 @@ event:trigger("Param1", "Param2
    - unsubscribe(self, callback[, context]) + unsubscribe(self, callback, context)
    Unsubscribe callback on event @@ -293,9 +291,8 @@ event:trigger("Param1", "Param2 Callback itself
  • context - any + any or nil Additional context as first param to callback call - (optional)
  • diff --git a/docs/modules/DruidInstance.html b/docs/modules/DruidInstance.html index b50afa3..1924ddd 100644 --- a/docs/modules/DruidInstance.html +++ b/docs/modules/DruidInstance.html @@ -146,7 +146,7 @@ end Create new component. - new_back_handler(self, callback[, params]) + new_back_handler(self, callback, params) Create BackHandler component @@ -154,7 +154,7 @@ end Create Blocker component - new_button(self, node, callback[, params[, anim_node]]) + new_button(self, node, callback, params, anim_node) Create Button component @@ -174,11 +174,11 @@ end Create Drag component - new_dynamic_grid(self, parent) + new_dynamic_grid(self, parent_node) Create DynamicGrid component - new_hotkey(self, keys_array, callback[, callback_argument]) + new_hotkey(self, keys_array, callback, callback_argument) Create Hotkey component @@ -186,11 +186,11 @@ end Create Hover component - new_input(self, click_node, text_node[, keyboard_type]) + new_input(self, click_node, text_node, keyboard_type) Create Input component - new_lang_text(self, node, locale_id, no_adjust) + new_lang_text(self, node, locale_id, adjust_type) Create LangText component @@ -206,7 +206,7 @@ end Create RadioGroup component - new_rich_text(self[, template[, nodes]]) + new_rich_text(self, template, nodes) Create RichText component. @@ -214,11 +214,11 @@ end Create Scroll component - new_slider(self, node, end_pos[, callback]) + new_slider(self, pin_node, end_pos, callback) Create Slider component - new_static_grid(self, parent, element[, in_row=1]) + new_static_grid(self, parent_node, element[, in_row=1]) Create StaticGrid component @@ -226,11 +226,11 @@ end Create Swipe component - new_text(self, node[, value[, no_adjust]]) + new_text(self, node, value, no_adjust) Create Text component - new_timer(self, node, seconds_from[, seconds_to=0[, callback]]) + new_timer(self, node, seconds_from[, seconds_to=0], callback) Create Timer component @@ -318,7 +318,7 @@ end
    - new_back_handler(self, callback[, params]) + new_back_handler(self, callback, params)
    Create BackHandler component @@ -335,9 +335,8 @@ end @The callback(self, custom_args) to call on back event
  • params - any + any or nil Callback argument - (optional)
  • @@ -367,8 +366,8 @@ end
  • node - node - Gui node + string or node + The node_id or gui.get_node(node_id)
  • @@ -385,7 +384,7 @@ end
    - new_button(self, node, callback[, params[, anim_node]]) + new_button(self, node, callback, params, anim_node)
    Create Button component @@ -398,22 +397,20 @@ end
  • node - node - GUI node + string or node + The node_id or gui.get_node(node_id)
  • callback function Button callback
  • params - table + table or nil Button callback params - (optional)
  • anim_node - node + node or nil Button anim node (node, if not provided) - (optional)
  • @@ -443,8 +440,8 @@ end
  • node - node - Gui node + string or node + The_node id or gui.get_node(node_id).
  • callback function @@ -567,8 +564,8 @@ end
  • node - node - GUI node to detect dragging + string or node + The node_id or gui.get_node(node_id). Will used as user input node.
  • on_drag_callback function @@ -589,7 +586,7 @@ end
  • - new_dynamic_grid(self, parent) + new_dynamic_grid(self, parent_node)
    Create DynamicGrid component @@ -601,9 +598,9 @@ end DruidInstance -
  • parent - node - The gui node parent, where items will be placed +
  • parent_node + string or node + The node_id or gui.get_node(node_id). Parent of all Grid items.
  • @@ -620,7 +617,7 @@ end
    - new_hotkey(self, keys_array, callback[, callback_argument]) + new_hotkey(self, keys_array, callback, callback_argument)
    Create Hotkey component @@ -641,9 +638,8 @@ end The callback function
  • callback_argument - any + any or nil The argument to pass into the callback function - (optional)
  • @@ -673,8 +669,8 @@ end
  • node - node - Gui node + string or node + The node_id or gui.get_node(node_id)
  • on_hover_callback function @@ -695,7 +691,7 @@ end
  • - new_input(self, click_node, text_node[, keyboard_type]) + new_input(self, click_node, text_node, keyboard_type)
    Create Input component @@ -708,17 +704,16 @@ end
  • click_node - node + string or node Button node to enabled input component
  • text_node - node + string or node Text node what will be changed on user input
  • keyboard_type - number + number or nil Gui keyboard type for input field - (optional)
  • @@ -735,7 +730,7 @@ end
    - new_lang_text(self, node, locale_id, no_adjust) + new_lang_text(self, node, locale_id, adjust_type)
    Create LangText component @@ -748,16 +743,16 @@ end
  • node - node - The text node + string or node + The_node id or gui.get_node(node_id)
  • locale_id - string - Default locale id + string or nil + Default locale id or text from node as default
  • -
  • no_adjust - boolean - If true, will not correct text size +
  • adjust_type + string or nil + Adjust type for text node. Default: const.TEXT_ADJUST.DOWNSCALE
  • @@ -788,7 +783,7 @@ end
  • node string or node - Layout node + The_node id or gui.get_node(node_id).
  • mode string @@ -889,7 +884,7 @@ end
  • - new_rich_text(self[, template[, nodes]]) + new_rich_text(self, template, nodes)
    Create RichText component. @@ -903,14 +898,12 @@ end
  • template - string + string or nil Template name if used - (optional)
  • nodes - table + table or nil Nodes table from gui.clone_tree - (optional)
  • @@ -940,12 +933,12 @@ end
  • view_node - node - GUI view scroll node + string or node + The node_id or gui.get_node(node_id). Will used as user input node.
  • content_node - node - GUI content scroll node + string or node + The node_id or gui.get_node(node_id). Will used as scrollable node inside view_node.
  • @@ -962,7 +955,7 @@ end
    - new_slider(self, node, end_pos[, callback]) + new_slider(self, pin_node, end_pos, callback)
    Create Slider component @@ -974,18 +967,17 @@ end DruidInstance -
  • node - node - Gui pin node +
  • pin_node + string or node + The_node id or gui.get_node(node_id).
  • end_pos vector3 The end position of slider
  • callback - function + function or nil On slider change callback - (optional)
  • @@ -1002,7 +994,7 @@ end
    - new_static_grid(self, parent, element[, in_row=1]) + new_static_grid(self, parent_node, element[, in_row=1])
    Create StaticGrid component @@ -1014,9 +1006,9 @@ end DruidInstance -
  • parent - node - The gui node parent, where items will be placed +
  • parent_node + string or node + The node_id or gui.get_node(node_id). Parent of all Grid items.
  • element node @@ -1055,8 +1047,8 @@ end
  • node - node - Gui node + string or node + The node_id or gui.get_node(node_id). Will used as user input node.
  • on_swipe_callback function @@ -1077,7 +1069,7 @@ end
  • - new_text(self, node[, value[, no_adjust]]) + new_text(self, node, value, no_adjust)
    Create Text component @@ -1090,18 +1082,16 @@ end
  • node - node - Gui text node + string or node + The node_id or gui.get_node(node_id)
  • value - string + string or nil Initial text. Default value is node text from GUI scene. - (optional)
  • no_adjust - boolean + boolean or nil If true, text will be not auto-adjust size - (optional)
  • @@ -1118,7 +1108,7 @@ end
    - new_timer(self, node, seconds_from[, seconds_to=0[, callback]]) + new_timer(self, node, seconds_from[, seconds_to=0], callback)
    Create Timer component @@ -1131,7 +1121,7 @@ end
  • node - node + string or node Gui text node
  • seconds_from @@ -1144,9 +1134,8 @@ end (default 0)
  • callback - function + function or nil Function on timer end - (optional)
  • diff --git a/docs/modules/DynamicGrid.html b/docs/modules/DynamicGrid.html index 748e674..331e65b 100644 --- a/docs/modules/DynamicGrid.html +++ b/docs/modules/DynamicGrid.html @@ -86,7 +86,7 @@ Return side vector to correct node shifting - add(self, node[, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]]) + add(self, node, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]) Add new node to the grid @@ -110,7 +110,7 @@ Return DynamicGrid offset, where DynamicGrid content starts. - get_pos(self, index, node[, origin_index]) + get_pos(self, index, node, origin_index) Return pos for grid node index @@ -213,7 +213,7 @@
    - add(self, node[, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]]) + add(self, node, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]])
    Add new node to the grid @@ -230,9 +230,8 @@ Gui node
  • index - number + number or nil The node position. By default add as last node - (optional)
  • shift_policy number @@ -393,7 +392,7 @@
  • - get_pos(self, index, node[, origin_index]) + get_pos(self, index, node, origin_index)
    Return pos for grid node index @@ -414,9 +413,8 @@ The node to be placed
  • origin_index - number + number or nil Index of nearby node - (optional)
  • diff --git a/docs/modules/Helper.html b/docs/modules/Helper.html index 8999078..de4b48a 100644 --- a/docs/modules/Helper.html +++ b/docs/modules/Helper.html @@ -87,7 +87,7 @@ helper.centrate_nodes(0, node_1, node_2)

    Functions

    - + @@ -111,7 +111,7 @@ helper.centrate_nodes(0, node_1, node_2) - + @@ -143,7 +143,7 @@ helper.centrate_nodes(0, node_1, node_2) - + @@ -159,7 +159,7 @@ helper.centrate_nodes(0, node_1, node_2) - + @@ -189,7 +189,7 @@ helper.centrate_nodes(0, node_1, node_2)
    - helper.add_array(target[, source]) + helper.add_array(target, source)
    Add all elements from source array to the target array @@ -202,9 +202,8 @@ helper.centrate_nodes(0, node_1, node_2) Array to put elements from source
  • source - any[] + any[] or nil The source array to get elements from - (optional)
  • @@ -379,7 +378,7 @@ helper.centrate_nodes(0, node_1, node_2)
    - helper.get_border(node[, offset]) + helper.get_border(node, offset)
    Distance from node position to his borders @@ -392,9 +391,8 @@ helper.centrate_nodes(0, node_1, node_2) GUI node
  • offset - vector3 + vector3 or nil Offset from node position. Pass current node position to get non relative border values - (optional)
  • @@ -529,7 +527,7 @@ helper.centrate_nodes(0, node_1, node_2) Gui node
  • include_passed_node_scale - boolean + boolean or nil True if add current node scale to result
  • @@ -606,7 +604,7 @@ helper.centrate_nodes(0, node_1, node_2)
    - helper.insert_with_shift(array, any[, index[, shift_policy]]) + helper.insert_with_shift(array, any, index, shift_policy)
    Add value to array with shift policy Shift policy can be: left, right, no_shift @@ -622,14 +620,12 @@ helper.centrate_nodes(0, node_1, node_2) Item to insert
  • index - number + number or nil Index to insert. If nil, item will be inserted at the end of array - (optional)
  • shift_policy - number + number or nil The druid_const.SHIFT.* constant - (optional)
  • @@ -721,7 +717,7 @@ helper.centrate_nodes(0, node_1, node_2)
    - helper.remove_with_shift(array[, index[, shift_policy]]) + helper.remove_with_shift(array, index, shift_policy)
    Remove value from array with shift policy Shift policy can be: left, right, no_shift @@ -734,14 +730,12 @@ helper.centrate_nodes(0, node_1, node_2) Array
  • index - number + number or nil Index to remove. If nil, item will be removed from the end of array - (optional)
  • shift_policy - number + number or nil The druid_const.SHIFT.* constant - (optional)
  • diff --git a/docs/modules/Hotkey.html b/docs/modules/Hotkey.html index 3621846..d33df50 100644 --- a/docs/modules/Hotkey.html +++ b/docs/modules/Hotkey.html @@ -83,11 +83,11 @@

    Functions

    helper.add_array(target[, source])helper.add_array(target, source) Add all elements from source array to the target array
    Calculate distance between two points
    helper.get_border(node[, offset])helper.get_border(node, offset) Distance from node position to his borders
    Get text metric from GUI node.
    helper.insert_with_shift(array, any[, index[, shift_policy]])helper.insert_with_shift(array, any, index, shift_policy) Add value to array with shift policy
    Lerp between two values
    helper.remove_with_shift(array[, index[, shift_policy]])helper.remove_with_shift(array, index, shift_policy) Remove value from array with shift policy
    - + - +
    add_hotkey(self, keys[, callback_argument])add_hotkey(self, keys, callback_argument) Add hotkey for component callback
    init(self, keys, callback[, callback_argument])init(self, keys, callback, callback_argument) The Hotkey constructor
    @@ -127,7 +127,7 @@
    - add_hotkey(self, keys[, callback_argument]) + add_hotkey(self, keys, callback_argument)
    Add hotkey for component callback @@ -144,9 +144,8 @@ that have to be pressed before key pressed to activate
  • callback_argument - any + any or nil The argument to pass into the callback function - (optional)
  • @@ -157,7 +156,7 @@
    - init(self, keys, callback[, callback_argument]) + init(self, keys, callback, callback_argument)
    The Hotkey constructor @@ -178,9 +177,8 @@ The callback function
  • callback_argument - any + any or nil The argument to pass into the callback function - (optional)
  • diff --git a/docs/modules/Hover.html b/docs/modules/Hover.html index ef2d206..1623346 100644 --- a/docs/modules/Hover.html +++ b/docs/modules/Hover.html @@ -286,7 +286,7 @@ Hover
  • state - boolean + boolean or nil The hover enabled state
  • @@ -311,7 +311,7 @@ Hover
  • state - boolean + boolean or nil The hover state
  • @@ -336,7 +336,7 @@ Hover
  • state - boolean + boolean or nil The mouse hover state
  • diff --git a/docs/modules/Input.html b/docs/modules/Input.html index 092cd07..14e605b 100644 --- a/docs/modules/Input.html +++ b/docs/modules/Input.html @@ -93,7 +93,7 @@ Return current input field text - init(self, click_node, text_node[, keyboard_type]) + init(self, click_node, text_node, keyboard_type) The Input constructor @@ -220,7 +220,7 @@
    - init(self, click_node, text_node[, keyboard_type]) + init(self, click_node, text_node, keyboard_type)
    The Input constructor @@ -241,9 +241,8 @@ Text node what will be changed on user input. You can pass text component instead of text node name Text
  • keyboard_type - number + number or nil Gui keyboard type for input field - (optional)
  • diff --git a/docs/modules/LangText.html b/docs/modules/LangText.html index c705e58..71b5e66 100644 --- a/docs/modules/LangText.html +++ b/docs/modules/LangText.html @@ -89,11 +89,11 @@

    Functions

    - + - + @@ -101,7 +101,7 @@ - +
    format(self[, a[, b[, c[, d[, e[, f[, g]]]]]]])format(self, a, b, c, d, e, f, g) Format string with new text params on localized text
    init(self, node, locale_id[, adjust_type=downscale])init(self, node[, locale_id=node_text[, adjust_type=downscale]]) The LangText constructor
    Setup raw text to lang_text component
    translate(self, locale_id[, a[, b[, c[, d[, e[, f[, g]]]]]]])translate(self, locale_id, a, b, c, d, e, f, g) Translate the text by locale_id
    @@ -126,7 +126,7 @@
    - format(self[, a[, b[, c[, d[, e[, f[, g]]]]]]]) + format(self, a, b, c, d, e, f, g)
    Format string with new text params on localized text @@ -139,39 +139,32 @@ LangText
  • a - string + string or nil Optional param to string.format - (optional)
  • b - string + string or nil Optional param to string.format - (optional)
  • c - string + string or nil Optional param to string.format - (optional)
  • d - string + string or nil Optional param to string.format - (optional)
  • e - string + string or nil Optional param to string.format - (optional)
  • f - string + string or nil Optional param to string.format - (optional)
  • g - string + string or nil Optional param to string.format - (optional)
  • @@ -188,7 +181,7 @@
    - init(self, node, locale_id[, adjust_type=downscale]) + init(self, node[, locale_id=node_text[, adjust_type=downscale]])
    The LangText constructor @@ -202,11 +195,12 @@
  • node string or node - Node name or GUI Text Node itself + The node_id or gui.get_node(node_id)
  • locale_id string Default locale id or text from node as default + (default node_text)
  • adjust_type string @@ -253,7 +247,7 @@
  • - translate(self, locale_id[, a[, b[, c[, d[, e[, f[, g]]]]]]]) + translate(self, locale_id, a, b, c, d, e, f, g)
    Translate the text by locale_id @@ -270,39 +264,32 @@ Locale id
  • a - string + string or nil Optional param to string.format - (optional)
  • b - string + string or nil Optional param to string.format - (optional)
  • c - string + string or nil Optional param to string.format - (optional)
  • d - string + string or nil Optional param to string.format - (optional)
  • e - string + string or nil Optional param to string.format - (optional)
  • f - string + string or nil Optional param to string.format - (optional)
  • g - string + string or nil Optional param to string.format - (optional)
  • diff --git a/docs/modules/Layout.html b/docs/modules/Layout.html index a19a24e..edad2b6 100644 --- a/docs/modules/Layout.html +++ b/docs/modules/Layout.html @@ -82,7 +82,7 @@

    Functions

    - + @@ -94,7 +94,7 @@ - + @@ -143,7 +143,7 @@
    - fit_into_node(self[, node]) + fit_into_node(self, node)
    Set node for layout node to fit inside it. Pass nil to reset @@ -156,9 +156,8 @@ Layout
  • node - node + node or nil - (optional)
  • @@ -233,7 +232,7 @@
    - init(self, node, mode[, on_size_changed_callback]) + init(self, node, mode, on_size_changed_callback)
    The Layout constructor @@ -254,9 +253,8 @@ The layout mode (from const.LAYOUT_MODE)
  • on_size_changed_callback - function + function or nil The callback on window resize - (optional)
  • diff --git a/docs/modules/Progress.html b/docs/modules/Progress.html index 0f490b7..b72ba4f 100644 --- a/docs/modules/Progress.html +++ b/docs/modules/Progress.html @@ -119,7 +119,7 @@
    - +
    fit_into_node(self[, node])fit_into_node(self, node) Set node for layout node to fit inside it.
    Set current size for layout node to fit inside it
    init(self, node, mode[, on_size_changed_callback])init(self, node, mode, on_size_changed_callback) The Layout constructor
    Instant fill progress bar to value
    to(self, to[, callback])to(self, to, callback) Start animation of a progress bar
    @@ -357,7 +357,7 @@
    - to(self, to[, callback]) + to(self, to, callback)
    Start animation of a progress bar @@ -374,9 +374,8 @@ value between 0..1
  • callback - function + function or nil Callback on animation ends - (optional)
  • diff --git a/docs/modules/RadioGroup.html b/docs/modules/RadioGroup.html index c08c25c..95b3e24 100644 --- a/docs/modules/RadioGroup.html +++ b/docs/modules/RadioGroup.html @@ -193,7 +193,7 @@ Index in radio group
  • is_instant - boolean + boolean or nil If is instant state change
  • diff --git a/docs/modules/Scroll.html b/docs/modules/Scroll.html index 2ab3fb0..e0ca1d1 100644 --- a/docs/modules/Scroll.html +++ b/docs/modules/Scroll.html @@ -128,15 +128,15 @@ Check node if it visible now on scroll. - scroll_to(self, point[, is_instant]) + scroll_to(self, point, is_instant) Start scroll to target point. - scroll_to_index(self, index[, skip_cb]) + scroll_to_index(self, index, skip_cb) Scroll to item in scroll by point index. - scroll_to_percent(self, percent[, is_instant]) + scroll_to_percent(self, percent, is_instant) Start scroll to target scroll percent @@ -415,7 +415,7 @@
    - scroll_to(self, point[, is_instant]) + scroll_to(self, point, is_instant)
    Start scroll to target point. @@ -432,9 +432,8 @@ Target point
  • is_instant - boolean + boolean or nil Instant scroll flag - (optional)
  • @@ -450,7 +449,7 @@
    - scroll_to_index(self, index[, skip_cb]) + scroll_to_index(self, index, skip_cb)
    Scroll to item in scroll by point index. @@ -467,9 +466,8 @@ Point index
  • skip_cb - boolean + boolean or nil If true, skip the point callback - (optional)
  • @@ -480,7 +478,7 @@
    - scroll_to_percent(self, percent[, is_instant]) + scroll_to_percent(self, percent, is_instant)
    Start scroll to target scroll percent @@ -497,9 +495,8 @@ target percent
  • is_instant - boolean + boolean or nil instant scroll flag - (optional)
  • @@ -586,7 +583,7 @@ Scroll
  • state - boolean + boolean or nil True, if horizontal scroll is enabled
  • @@ -619,7 +616,7 @@ Scroll
  • state - boolean + boolean or nil Inert scroll state
  • @@ -718,7 +715,7 @@ Scroll
  • state - boolean + boolean or nil True, if vertical scroll is enabled
  • diff --git a/docs/modules/Slider.html b/docs/modules/Slider.html index b30fe11..3fdf8fe 100644 --- a/docs/modules/Slider.html +++ b/docs/modules/Slider.html @@ -82,11 +82,11 @@

    Functions

    - + - + @@ -147,7 +147,7 @@
    - init(self, node, end_pos[, callback]) + init(self, node, end_pos, callback)
    The Slider constructor @@ -168,9 +168,8 @@ The end position of slider
  • callback - function + function or nil On slider change callback - (optional)
  • @@ -181,7 +180,7 @@
    - set(self, value[, is_silent]) + set(self, value, is_silent)
    Set value for slider @@ -198,9 +197,8 @@ Value from 0 to 1
  • is_silent - boolean + boolean or nil Don't trigger event if true - (optional)
  • diff --git a/docs/modules/StaticGrid.html b/docs/modules/StaticGrid.html index 986f9ca..d7ad168 100644 --- a/docs/modules/StaticGrid.html +++ b/docs/modules/StaticGrid.html @@ -102,7 +102,7 @@

    Functions

    init(self, node, end_pos[, callback])init(self, node, end_pos, callback) The Slider constructor
    set(self, value[, is_silent])set(self, value, is_silent) Set value for slider
    - + @@ -230,7 +230,7 @@
    - add(self, item[, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]]) + add(self, item, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]])
    Add new item to the grid @@ -247,9 +247,8 @@ Gui node
  • index - number + number or nil The item position. By default add as last item - (optional)
  • shift_policy number diff --git a/docs/modules/Swipe.html b/docs/modules/Swipe.html index 7dc7d10..3b68b0d 100644 --- a/docs/modules/Swipe.html +++ b/docs/modules/Swipe.html @@ -231,9 +231,8 @@
    • click_zone - node + node or nil - (optional)
    diff --git a/docs/modules/Text.html b/docs/modules/Text.html index d14822a..aa91505 100644 --- a/docs/modules/Text.html +++ b/docs/modules/Text.html @@ -105,11 +105,11 @@
  • - + - + @@ -137,7 +137,7 @@ - + @@ -242,7 +242,7 @@
    - get_text_size(self[, text]) + get_text_size(self, text)
    Calculate text width with font with respect to trailing space @@ -255,9 +255,8 @@ Text
  • text - string + string or nil - (optional)
  • @@ -277,7 +276,7 @@
    - init(self, node[, value[, adjust_type=downscale]]) + init(self, node, value[, adjust_type=downscale])
    The Text constructor @@ -294,9 +293,8 @@ Node name or GUI Text Node itself
  • value - string + string or nil Initial text. Default value is node text from GUI scene. - (optional)
  • adjust_type string @@ -494,7 +492,7 @@
  • - set_text_adjust(self[, adjust_type[, minimal_scale]]) + set_text_adjust(self, adjust_type, minimal_scale)
    Set text adjust, refresh the current text visuals, if needed @@ -507,14 +505,12 @@ Text
  • adjust_type - number + number or nil See const.TEXT_ADJUST. If pass nil - use current adjust type - (optional)
  • minimal_scale - number + number or nil If pass nil - not use minimal scale - (optional)
  • diff --git a/docs/modules/Timer.html b/docs/modules/Timer.html index 958899f..bd27865 100644 --- a/docs/modules/Timer.html +++ b/docs/modules/Timer.html @@ -84,7 +84,7 @@

    Functions

    add(self, item[, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]])add(self, item, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]) Add new item to the grid
    Return current text adjust type
    get_text_size(self[, text])get_text_size(self, text) Calculate text width with font with respect to trailing space
    init(self, node[, value[, adjust_type=downscale]])init(self, node, value[, adjust_type=downscale]) The Text constructor
    Set scale
    set_text_adjust(self[, adjust_type[, minimal_scale]])set_text_adjust(self, adjust_type, minimal_scale) Set text adjust, refresh the current text visuals, if needed
    - + @@ -141,7 +141,7 @@
    - init(self, node, seconds_from[, seconds_to=0[, callback]]) + init(self, node, seconds_from[, seconds_to=0], callback)
    The Timer constructor @@ -167,9 +167,8 @@ (default 0)
  • callback - function + function or nil Function on timer end - (optional)
  • @@ -222,7 +221,7 @@ Timer
  • is_on - boolean + boolean or nil Timer enable state
  • diff --git a/druid/annotations.lua b/druid/annotations.lua index f053e8a..6852727 100644 --- a/druid/annotations.lua +++ b/druid/annotations.lua @@ -1,1853 +1 @@ --- luacheck: ignore ----@diagnostic disable: lowercase-global ----@diagnostic disable: missing-return ----@diagnostic disable: duplicate-doc-param ----@diagnostic disable: duplicate-set-field - ----@class druid -local druid = {} - ---- Create a new Druid instance for creating GUI components. ----@param context table The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks. ----@param style table The Druid style table to override style parameters for this Druid instance. ----@return druid_instance The Druid instance @{DruidInstance}. -function druid.new(context, style) end - ---- Call this function when the game language changes. ---- This function will translate all current LangText components. -function druid.on_language_change() end - ---- Set the window callback to enable on_focus_gain and on_focus_lost functions. ---- This is used to trigger the on_focus_lost and on_focus_gain functions in Druid components. ----@param event string Event param from window listener -function druid.on_window_callback(event) end - ---- Register a new external Druid component. ---- You can register your own components to make new alias: the druid:new_{name} function. For example, if you want to register a component called "my_component", you can create it using druid:new_my_component(...). This can be useful if you have your own "basic" components that you don't want to re-create each time. ----@param name string module name ----@param module table lua table with component -function druid.register(name, module) end - ---- Set your own default style for all Druid instances. ---- To create your own style file, copy the default style file and make changes to it. Register the new style before creating your Druid instances. ----@param style table Druid style module -function druid.set_default_style(style) end - ---- Set the Druid sound function to play UI sounds if used. ---- Set a function to play a sound given a sound_id. This function is used for button clicks to play the "click" sound. It can also be used to play sounds in your custom components (see the default Druid style file for an example). ----@param callback function Sound play callback -function druid.set_sound_function(callback) end - ---- Set the text function for the LangText component. ---- The Druid locale component will call this function to get translated text. After setting the text function, all existing locale components will be updated. ----@param callback function Get localized text function -function druid.set_text_function(callback) end - - ----@class druid.back_handler : druid.base_component ----@field on_back druid.event The @{DruidEvent} Event on back handler action. ----@field params any Custom args to pass in the callback -local druid__back_handler = {} - - ----@class druid.base_component -local druid__base_component = {} - ---- Return all children components, recursive ----@param self druid.base_component @{BaseComponent} ----@return table Array of childrens if the Druid component instance -function druid__base_component.get_childrens(self) end - ---- Context used as first arg in all Druid events ---- Context is usually self of gui_script. ----@param self druid.base_component @{BaseComponent} ----@return table BaseComponent context -function druid__base_component.get_context(self) end - ---- Get Druid instance for inner component creation. ----@param self druid.base_component @{BaseComponent} ----@return druid_instance Druid instance with component context -function druid__base_component.get_druid(self) end - ---- Return component input priority ----@param self druid.base_component @{BaseComponent} ----@return number The component input priority -function druid__base_component.get_input_priority(self) end - ---- Return component name ----@param self druid.base_component @{BaseComponent} ----@return string The component name -function druid__base_component.get_name(self) end - ---- Get component node by name. ---- If component has nodes, node_or_name should be string It autopick node by template name or from nodes by gui.clone_tree if they was setup via component:set_nodes, component:set_template. If node is not found, the exception will fired ----@param self druid.base_component @{BaseComponent} ----@param node_or_name string|node Node name or node itself ----@return node Gui node -function druid__base_component.get_node(self, node_or_name) end - ---- Return the parent component if exist ----@param self druid.base_component @{BaseComponent} ----@return druid.base_component|nil The druid component instance or nil -function druid__base_component.get_parent_component(self) end - ---- Return parent component name ----@param self druid.base_component @{BaseComponent} ----@return string|nil The parent component name if exist or bil -function druid__base_component.get_parent_name(self) end - ---- Get current component template name. ----@param self druid.base_component @{BaseComponent} ----@return string Component full template name -function druid__base_component.get_template(self) end - ---- Return component UID. ---- UID generated in component creation order. ----@param self druid.base_component @{BaseComponent} ----@return number The component uid -function druid__base_component.get_uid(self) end - ---- Reset component input priority to default value ----@param self druid.base_component @{BaseComponent} ----@return number The component input priority -function druid__base_component.reset_input_priority(self) end - ---- Set component input state. ---- By default it enabled If input is disabled, the component will not receive input events ----@param self druid.base_component @{BaseComponent} ----@param state boolean The component input state ----@return druid.base_component BaseComponent itself -function druid__base_component.set_input_enabled(self, state) end - ---- Set component input priority ---- Default value: 10 ----@param self druid.base_component @{BaseComponent} ----@param value number The new input priority value ----@param is_temporary boolean If true, the reset input priority will return to previous value ----@return number The component input priority -function druid__base_component.set_input_priority(self, value, is_temporary) end - ---- Set current component nodes. ---- Use if your component nodes was cloned with `gui.clone_tree` and you got the node tree. ----@param self druid.base_component @{BaseComponent} ----@param nodes table BaseComponent nodes table ----@return druid.base_component @{BaseComponent} -function druid__base_component.set_nodes(self, nodes) end - ---- Set current component style table. ---- Invoke `on_style_change` on component, if exist. Component should handle their style changing and store all style params ----@param self druid.base_component @{BaseComponent} ----@param druid_style table Druid style module ----@return druid.base_component @{BaseComponent} -function druid__base_component.set_style(self, druid_style) end - ---- Set component template name. ---- Use on all your custom components with GUI layouts used as templates. It will check parent template name to build full template name in self:get_node() ----@param self druid.base_component @{BaseComponent} ----@param template string BaseComponent template name ----@return druid.base_component @{BaseComponent} -function druid__base_component.set_template(self, template) end - - ----@class druid.blocker : druid.base_component ----@field node node Blocker node -local druid__blocker = {} - ---- The @{Blocker} constructor ----@param self druid.blocker @{Blocker} ----@param node node Gui node -function druid__blocker.init(self, node) end - ---- Return blocker enabled state ----@param self druid.blocker @{Blocker} ----@return boolean @True, if blocker is enabled -function druid__blocker.is_enabled(self) end - ---- Set enabled blocker component state. ---- Don't change node enabled state itself. ----@param self druid.blocker @{Blocker} ----@param state boolean Enabled state -function druid__blocker.set_enabled(self, state) end - - ----@class druid.button : druid.base_component ----@field anim_node node Button animation node. ----@field click_zone node Additional button click area, defined by another GUI Node ----@field hover druid.hover The @{Hover}: Button Hover component ----@field node node Button trigger node ----@field node_id hash The GUI node id from button node ----@field on_click druid.event The @{DruidEvent}: Event on successful release action over button. ----@field on_click_outside druid.event The @{DruidEvent}: Event calls if click event was outside of button. ----@field on_double_click druid.event The @{DruidEvent}: Event on double tap action over button. ----@field on_hold_callback druid.event The @{DruidEvent}: Event calls every frame before on_long_click event. ----@field on_long_click druid.event The @{DruidEvent}: Event on long tap action over button. ----@field on_pressed druid.event The @{DruidEvent}: Event triggered if button was pressed by user. ----@field on_repeated_click druid.event The @{DruidEvent}: Event on repeated action over button. ----@field params any Custom args for any Button event. ----@field style druid.button.style Component style params. -local druid__button = {} - ---- Get current key name to trigger this button. ----@param self druid.button ----@return hash The action_id of the input key -function druid__button.get_key_trigger(self) end - ---- The @{Button} constructor ----@param self druid.button @{Button} ----@param node string|node Node name or GUI Node itself ----@param callback function On click button callback ----@param custom_args any Button events custom arguments ----@param anim_node string|node Node to animate instead of trigger node. -function druid__button.init(self, node, callback, custom_args, anim_node) end - ---- Get button enabled state. ---- By default all Buttons is enabled on creating. ----@param self druid.button @{Button} ----@return boolean @True, if button is enabled now, False overwise -function druid__button.is_enabled(self) end - ---- Set function for additional check for button click availability ----@param self druid.button ----@param check_function function Should return true or false. If true - button can be pressed. ----@param failure_callback function Function will be called on button click, if check function return false ----@return druid.button Current button instance -function druid__button.set_check_function(self, check_function, failure_callback) end - ---- Set additional button click area. ---- Useful to restrict click outside out stencil node or scrollable content. This functions calls automatically if you don't disable it in game.project: druid.no_stencil_check ----@param self druid.button @{Button} ----@param zone node Gui node ----@return druid.button Current button instance -function druid__button.set_click_zone(self, zone) end - ---- Set button enabled state. ---- The style.on_set_enabled will be triggered. Disabled button is not clickable. ----@param self druid.button @{Button} ----@param state boolean Enabled state ----@return druid.button Current button instance -function druid__button.set_enabled(self, state) end - ---- Set key name to trigger this button by keyboard. ----@param self druid.button @{Button} ----@param key hash The action_id of the input key ----@return druid.button Current button instance -function druid__button.set_key_trigger(self, key) end - ---- Set Button mode to work inside user HTML5 interaction event. ---- It's required to make protected things like copy & paste text, show mobile keyboard, etc The HTML5 button's doesn't call any events except on_click event. If the game is not HTML, html mode will be not enabled ----@param self druid.button ----@param is_web_mode boolean If true - button will be called inside html5 callback ----@return druid.button Current button instance -function druid__button.set_web_user_interaction(self, is_web_mode) end - - ----@class druid.button.style ----@field AUTOHOLD_TRIGGER number Maximum hold time to trigger button release while holding ----@field DOUBLETAP_TIME number Time between double taps ----@field LONGTAP_TIME number Minimum time to trigger on_hold_callback ----@field on_click function function(self, node) ----@field on_click_disabled function function(self, node) ----@field on_hover function function(self, node, hover_state) ----@field on_mouse_hover function function(self, node, hover_state) ----@field on_set_enabled function function(self, node, enabled_state) -local druid__button__style = {} - - ----@class druid.checkbox : druid.base_component ----@field button druid.button Button component from click_node ----@field click_node node Button trigger node ----@field node node Visual node ----@field on_change_state druid.event On change state callback(self, state) ----@field style druid.checkbox.style Component style params. -local druid__checkbox = {} - ---- Return checkbox state ----@param self druid.checkbox @{Checkbox} ----@return boolean Checkbox state -function druid__checkbox.get_state(self) end - ---- The @{Checkbox} constructor ----@param self druid.checkbox @{Checkbox} ----@param node node Gui node ----@param callback function Checkbox callback ----@param click_node node Trigger node, by default equals to node ----@param initial_state boolean The initial state of checkbox, default - false -function druid__checkbox.init(self, node, callback, click_node, initial_state) end - ---- Set checkbox state ----@param self druid.checkbox @{Checkbox} ----@param state boolean Checkbox state ----@param is_silent boolean Don't trigger on_change_state if true ----@param is_instant boolean If instant checkbox change -function druid__checkbox.set_state(self, state, is_silent, is_instant) end - - ----@class druid.checkbox.style ----@field on_change_state function (self, node, state) -local druid__checkbox__style = {} - - ----@class druid.checkbox_group : druid.base_component ----@field checkboxes table Array of checkbox components ----@field on_checkbox_click druid.event On any checkbox click callback(self, index) -local druid__checkbox_group = {} - ---- Return checkbox group state ----@param self druid.checkbox_group @{CheckboxGroup} ----@return boolean[] Array if checkboxes state -function druid__checkbox_group.get_state(self) end - ---- The @{CheckboxGroup} constructor ----@param self druid.checkbox_group @{CheckboxGroup} ----@param nodes node[] Array of gui node ----@param callback function Checkbox callback ----@param click_nodes node[] Array of trigger nodes, by default equals to nodes -function druid__checkbox_group.init(self, nodes, callback, click_nodes) end - ---- Set checkbox group state ----@param self druid.checkbox_group @{CheckboxGroup} ----@param indexes boolean[] Array of checkbox state ----@param is_instant boolean If instant state change -function druid__checkbox_group.set_state(self, indexes, is_instant) end - - ----@class druid.data_list : druid.base_component ----@field grid druid.static_grid|druid.dynamic_grid The Druid Grid component ----@field last_index number The current visual last data index ----@field on_element_add druid.event On DataList visual element created Event callback(self, index, node, instance) ----@field on_element_remove druid.event On DataList visual element created Event callback(self, index) ----@field on_scroll_progress_change druid.event Event triggered when scroll progress is changed; event(self, progress_value) ----@field scroll druid.scroll The Druid scroll component ----@field scroll_progress number The current progress of scroll posititon ----@field top_index number The current visual top data index -local druid__data_list = {} - ---- Clear the DataList and refresh visuals ----@param self druid.data_list @{DataList} -function druid__data_list.clear(self) end - ---- Return all currenly created components in DataList ----@param self druid.data_list @{DataList} ----@return druid.base_component[] List of created nodes -function druid__data_list.get_created_components(self) end - ---- Return all currenly created nodes in DataList ----@param self druid.data_list @{DataList} ----@return node[] List of created nodes -function druid__data_list.get_created_nodes(self) end - ---- Return current data from DataList component ----@param self druid.data_list @{DataList} ----@return table The current data array -function druid__data_list.get_data(self) end - ---- Return first index from data. ---- It not always equals to 1 ----@param self druid.data_list @{DataList} -function druid__data_list.get_first_index(self) end - ---- Return index for data value ----@param self druid.data_list @{DataList} ----@param data table -function druid__data_list.get_index(self, data) end - ---- Return last index from data ----@param self druid.data_list @{DataList} -function druid__data_list.get_last_index(self) end - ---- Return amount of data ----@param self druid.data_list @{DataList} -function druid__data_list.get_length(self) end - ---- The @{DataList} constructor ----@param self druid.data_list @{DataList} ----@param scroll druid.scroll The @{Scroll} instance for Data List component ----@param grid druid.static_grid|druid.dynamic_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component ----@param create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) -function druid__data_list.init(self, scroll, grid, create_function) end - ---- Druid System on_remove function ----@param self druid.data_list @{DataList} -function druid__data_list.on_remove(self) end - ---- Instant scroll to element with passed index ----@param self druid.data_list @{DataList} ----@param index number -function druid__data_list.scroll_to_index(self, index) end - ---- Set new data set for DataList component ----@param self druid.data_list @{DataList} ----@param data table The new data array ----@return druid.data_list Current DataList instance -function druid__data_list.set_data(self, data) end - - ----@class druid.drag : druid.base_component ----@field can_x boolean Is drag component process vertical dragging. ----@field can_y boolean Is drag component process horizontal. ----@field is_drag boolean Is component now dragging ----@field is_touch boolean Is component now touching ----@field on_drag druid.event on drag progress callback(self, dx, dy, total_x, total_y) ----@field on_drag_end druid.event Event on drag end callback(self, total_x, total_y) ----@field on_drag_start druid.event Event on drag start callback(self) ----@field on_touch_end druid.event Event on touch end callback(self) ----@field on_touch_start druid.event Event on touch start callback(self) ----@field style druid.drag.style Component style params. ----@field touch_start_pos vector3 Touch start position ----@field x number Current touch x position ----@field y number Current touch y position -local druid__drag = {} - ---- The @{Drag} constructor ----@param self druid.drag @{Drag} ----@param node node GUI node to detect dragging ----@param on_drag_callback function Callback for on_drag_event(self, dx, dy) -function druid__drag.init(self, node, on_drag_callback) end - ---- Check if Drag component is enabled ----@param self druid.drag @{Drag} ----@return boolean -function druid__drag.is_enabled(self) end - ---- Strict drag click area. ---- Useful for restrict events outside stencil node ----@param self druid.drag @{Drag} ----@param node node Gui node -function druid__drag.set_click_zone(self, node) end - ---- Set Drag input enabled or disabled ----@param self druid.drag @{Drag} ----@param is_enabled boolean -function druid__drag.set_enabled(self, is_enabled) end - - ----@class druid.drag.style ----@field DRAG_DEADZONE number Distance in pixels to start dragging ----@field NO_USE_SCREEN_KOEF boolean If screen aspect ratio affects on drag values -local druid__drag__style = {} - - ----@class druid.dynamic_grid : druid.base_component ----@field border vector4 The size of item content ----@field first_index number The first index of node in grid ----@field last_index number The last index of node in grid ----@field node_size vector3 Item size ----@field nodes node[] List of all grid elements. ----@field on_add_item druid.event On item add callback(self, node, index) ----@field on_change_items druid.event On item add or remove callback(self, index) ----@field on_clear druid.event On grid clear callback(self) ----@field on_remove_item druid.event On item remove callback(self, index) ----@field on_update_positions druid.event On update item positions callback(self) ----@field parent node Parent gui node -local druid__dynamic_grid = {} - ---- Return side vector to correct node shifting ----@param self unknown ----@param side unknown ----@param is_forward unknown -function druid__dynamic_grid._get_side_vector(self, side, is_forward) end - ---- Add new node to the grid ----@param self druid.dynamic_grid @{DynamicGrid} ----@param node node Gui node ----@param index number The node position. By default add as last node ----@param shift_policy number How shift nodes, if required. See const.SHIFT ----@param is_instant boolean If true, update node positions instantly -function druid__dynamic_grid.add(self, node, index, shift_policy, is_instant) end - ---- Clear grid nodes array. ---- GUI nodes will be not deleted! If you want to delete GUI nodes, use dynamic_grid.nodes array before grid:clear ----@param self druid.dynamic_grid @{DynamicGrid} ----@return druid.dynamic_grid Current grid instance -function druid__dynamic_grid.clear(self) end - ---- Return array of all node positions ----@param self druid.dynamic_grid @{DynamicGrid} ----@return vector3[] All grid node positions -function druid__dynamic_grid.get_all_pos(self) end - ---- Return grid content borders ----@param self druid.dynamic_grid @{DynamicGrid} ----@return vector3 The grid content borders -function druid__dynamic_grid.get_borders(self) end - ---- Return grid index by node ----@param self druid.dynamic_grid @{DynamicGrid} ----@param node node The gui node in the grid ----@return number The node index -function druid__dynamic_grid.get_index_by_node(self, node) end - ---- Return DynamicGrid offset, where DynamicGrid content starts. ----@param self druid.dynamic_grid @{DynamicGrid} The DynamicGrid instance ----@return vector3 The DynamicGrid offset -function druid__dynamic_grid.get_offset(self) end - ---- Return pos for grid node index ----@param self druid.dynamic_grid @{DynamicGrid} ----@param index number The grid element index ----@param node node The node to be placed ----@param origin_index number Index of nearby node ----@return vector3 Node position -function druid__dynamic_grid.get_pos(self, index, node, origin_index) end - ---- Return grid content size ----@param self druid.dynamic_grid @{DynamicGrid} ----@param border vector3 ----@return vector3 The grid content size -function druid__dynamic_grid.get_size(self, border) end - ---- The @{DynamicGrid} constructor ----@param self druid.dynamic_grid @{DynamicGrid} ----@param parent node The gui node parent, where items will be placed -function druid__dynamic_grid.init(self, parent) end - ---- Remove the item from the grid. ---- Note that gui node will be not deleted ----@param self druid.dynamic_grid @{DynamicGrid} ----@param index number The grid node index to remove ----@param shift_policy number How shift nodes, if required. See const.SHIFT ----@param is_instant boolean If true, update node positions instantly ----@return node The deleted gui node from grid -function druid__dynamic_grid.remove(self, index, shift_policy, is_instant) end - ---- Change set position function for grid nodes. ---- It will call on update poses on grid elements. Default: gui.set_position ----@param self druid.dynamic_grid @{DynamicGrid} ----@param callback function Function on node set position ----@return druid.dynamic_grid Current grid instance -function druid__dynamic_grid.set_position_function(self, callback) end - - ----@class druid.event -local druid__event = {} - ---- Clear the all event handlers ----@param self druid.event @{DruidEvent} -function druid__event.clear(self) end - ---- DruidEvent constructor ----@param self druid.event @{DruidEvent} ----@param initial_callback function Subscribe the callback on new event, if callback exist -function druid__event.initialize(self, initial_callback) end - ---- Return true, if event have at lease one handler ----@param self druid.event @{DruidEvent} ----@return boolean True if event have handlers -function druid__event.is_exist(self) end - ---- Subscribe callback on event ----@param self druid.event @{DruidEvent} ----@param callback function Callback itself ----@param context any Additional context as first param to callback call, usually it's self -function druid__event.subscribe(self, callback, context) end - ---- Trigger the event and call all subscribed callbacks ----@param self druid.event @{DruidEvent} ----@param ... any All event params -function druid__event.trigger(self, ...) end - ---- Unsubscribe callback on event ----@param self druid.event @{DruidEvent} ----@param callback function Callback itself ----@param context any Additional context as first param to callback call -function druid__event.unsubscribe(self, callback, context) end - - ----@class druid.hotkey : druid.base_component ----@field button druid.button Button component from click_node ----@field click_node node Button trigger node ----@field node node Visual node ----@field on_change_state druid.event On change state callback(self, state) ----@field style druid.hotkey.style Component style params. -local druid__hotkey = {} - ---- Add hotkey for component callback ----@param self druid.hotkey @{Hotkey} ----@param keys string[]|hash[]|string|hash that have to be pressed before key pressed to activate ----@param callback_argument any The argument to pass into the callback function -function druid__hotkey.add_hotkey(self, keys, callback_argument) end - ---- The @{Hotkey} constructor ----@param self druid.hotkey @{Hotkey} ----@param keys string[]|string The keys to be pressed for trigger callback. Should contains one key and any modificator keys ----@param callback function The callback function ----@param callback_argument any The argument to pass into the callback function -function druid__hotkey.init(self, keys, callback, callback_argument) end - - ----@class druid.hotkey.style ----@field MODIFICATORS string[] The list of action_id as hotkey modificators -local druid__hotkey__style = {} - - ----@class druid.hover : druid.base_component ----@field on_hover druid.event On hover callback(self, state, hover_instance) ----@field on_mouse_hover druid.event On mouse hover callback(self, state, hover_instance) -local druid__hover = {} - ---- The @{Hover} constructor ----@param self druid.hover @{Hover} ----@param node node Gui node ----@param on_hover_callback function Hover callback -function druid__hover.init(self, node, on_hover_callback) end - ---- Return current hover enabled state ----@param self druid.hover @{Hover} ----@return boolean The hover enabled state -function druid__hover.is_enabled(self) end - ---- Return current hover state. ---- True if touch action was on the node at current time ----@param self druid.hover @{Hover} ----@return boolean The current hovered state -function druid__hover.is_hovered(self) end - ---- Return current hover state. ---- True if nil action_id (usually desktop mouse) was on the node at current time ----@param self druid.hover @{Hover} ----@return boolean The current hovered state -function druid__hover.is_mouse_hovered(self) end - ---- Strict hover click area. ---- Useful for no click events outside stencil node ----@param self druid.hover @{Hover} ----@param zone node Gui node -function druid__hover.set_click_zone(self, zone) end - ---- Set enable state of hover component. ---- If hover is not enabled, it will not generate any hover events ----@param self druid.hover @{Hover} ----@param state boolean The hover enabled state -function druid__hover.set_enabled(self, state) end - ---- Set hover state ----@param self druid.hover @{Hover} ----@param state boolean The hover state -function druid__hover.set_hover(self, state) end - ---- Set mouse hover state ----@param self druid.hover @{Hover} ----@param state boolean The mouse hover state -function druid__hover.set_mouse_hover(self, state) end - - ----@class druid.input : druid.base_component ----@field allowerd_characters string Pattern matching for user input ----@field button druid.button Button component ----@field is_empty boolean Is current input is empty now ----@field is_selected boolean Is current input selected now ----@field keyboard_type number Gui keyboard type for input field ----@field max_length number Max length for input text ----@field on_input_empty druid.event On input field text change to empty string callback(self, input_text) ----@field on_input_full druid.event On input field text change to max length string callback(self, input_text) ----@field on_input_select druid.event On input field select callback(self, button_node) ----@field on_input_text druid.event On input field text change callback(self, input_text) ----@field on_input_unselect druid.event On input field unselect callback(self, input_text) ----@field on_input_wrong druid.event On trying user input with not allowed character callback(self, params, button_instance) ----@field style druid.input.style Component style params. ----@field text druid.text Text component -local druid__input = {} - ---- Return current input field text ----@param self druid.input @{Input} ----@return string The current input field text -function druid__input.get_text(self) end - ---- The @{Input} constructor ----@param self druid.input @{Input} ----@param click_node node Node to enabled input component ----@param text_node node|druid.text Text node what will be changed on user input. You can pass text component instead of text node name @{Text} ----@param keyboard_type number Gui keyboard type for input field -function druid__input.init(self, click_node, text_node, keyboard_type) end - ---- Reset current input selection and return previous value ----@param self druid.input @{Input} -function druid__input.reset_changes(self) end - ---- Select input field. ---- It will show the keyboard and trigger on_select events ----@param self druid.input @{Input} -function druid__input.select(self) end - ---- Set allowed charaters for input field. ---- See: https://defold.com/ref/stable/string/ ex: [%a%d] for alpha and numeric ----@param self druid.input @{Input} ----@param characters string Regulax exp. for validate user input ----@return druid.input Current input instance -function druid__input.set_allowed_characters(self, characters) end - ---- Set maximum length for input field. ---- Pass nil to make input field unliminted (by default) ----@param self druid.input @{Input} ----@param max_length number Maximum length for input text field ----@return druid.input Current input instance -function druid__input.set_max_length(self, max_length) end - ---- Set text for input field ----@param self druid.input @{Input} ----@param input_text string The string to apply for input field -function druid__input.set_text(self, input_text) end - ---- Remove selection from input. ---- It will hide the keyboard and trigger on_unselect events ----@param self druid.input @{Input} -function druid__input.unselect(self) end - - ----@class druid.input.style ----@field IS_LONGTAP_ERASE boolean Is long tap will erase current input data ----@field IS_UNSELECT_ON_RESELECT boolean If true, call unselect on select selected input ----@field MASK_DEFAULT_CHAR string Default character mask for password input ----@field NO_CONSUME_INPUT_WHILE_SELECTED boolean If true, will not consume input while input is selected. It's allow to interact with other components while input is selected (text input still captured) ----@field button_style table Custom button style for input node ----@field on_input_wrong function (self, button_node) Callback on wrong user input ----@field on_select function (self, button_node) Callback on input field selecting ----@field on_unselect function (self, button_node) Callback on input field unselecting -local druid__input__style = {} - - ----@class druid.lang_text : druid.base_component ----@field on_change druid.event On change text callback ----@field text druid.text The text component -local druid__lang_text = {} - ---- Format string with new text params on localized text ----@param self druid.lang_text @{LangText} ----@param a string Optional param to string.format ----@param b string Optional param to string.format ----@param c string Optional param to string.format ----@param d string Optional param to string.format ----@param e string Optional param to string.format ----@param f string Optional param to string.format ----@param g string Optional param to string.format ----@return druid.lang_text Current instance -function druid__lang_text.format(self, a, b, c, d, e, f, g) end - ---- The @{LangText} constructor ----@param self druid.lang_text @{LangText} ----@param node string|node Node name or GUI Text Node itself ----@param locale_id string Default locale id or text from node as default ----@param adjust_type string Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference -function druid__lang_text.init(self, node, locale_id, adjust_type) end - ---- Setup raw text to lang_text component ----@param self druid.lang_text @{LangText} ----@param text string Text for text node ----@return druid.lang_text Current instance -function druid__lang_text.set_to(self, text) end - ---- Translate the text by locale_id ----@param self druid.lang_text @{LangText} ----@param locale_id string Locale id ----@param a string Optional param to string.format ----@param b string Optional param to string.format ----@param c string Optional param to string.format ----@param d string Optional param to string.format ----@param e string Optional param to string.format ----@param f string Optional param to string.format ----@param g string Optional param to string.format ----@return druid.lang_text Current instance -function druid__lang_text.translate(self, locale_id, a, b, c, d, e, f, g) end - - ----@class druid.layout : druid.base_component ----@field mode string Current layout mode ----@field node node Layout node ----@field on_size_changed druid.event On window resize callback(self, new_size) -local druid__layout = {} - ---- Set node for layout node to fit inside it. ---- Pass nil to reset ----@param self druid.layout @{Layout} ----@param node node ----@return druid.layout @{Layout} -function druid__layout.fit_into_node(self, node) end - ---- Set size for layout node to fit inside it ----@param self druid.layout @{Layout} ----@param target_size vector3 ----@return druid.layout @{Layout} -function druid__layout.fit_into_size(self, target_size) end - ---- Set current size for layout node to fit inside it ----@param self druid.layout @{Layout} ----@return druid.layout @{Layout} -function druid__layout.fit_into_window(self) end - ---- The @{Layout} constructor ----@param self druid.layout @{Layout} ----@param node node Gui node ----@param mode string The layout mode (from const.LAYOUT_MODE) ----@param on_size_changed_callback function The callback on window resize -function druid__layout.init(self, node, mode, on_size_changed_callback) end - ---- Set max gui upscale for FIT adjust mode (or side). ---- It happens on bigger render gui screen ----@param self druid.layout @{Layout} ----@param max_gui_upscale number ----@return druid.layout @{Layout} -function druid__layout.set_max_gui_upscale(self, max_gui_upscale) end - ---- Set maximum size of layout node ----@param self druid.layout @{Layout} ----@param max_size vector3 ----@return druid.layout @{Layout} -function druid__layout.set_max_size(self, max_size) end - ---- Set minimal size of layout node ----@param self druid.layout @{Layout} ----@param min_size vector3 ----@return druid.layout @{Layout} -function druid__layout.set_min_size(self, min_size) end - ---- Set new origin position of layout node. ---- You should apply this on node movement ----@param self druid.layout @{Layout} ----@param new_origin_position vector3 ----@return druid.layout @{Layout} -function druid__layout.set_origin_position(self, new_origin_position) end - ---- Set new origin size of layout node. ---- You should apply this on node manual size change ----@param self druid.layout @{Layout} ----@param new_origin_size vector3 ----@return druid.layout @{Layout} -function druid__layout.set_origin_size(self, new_origin_size) end - - ----@class druid.pin_knob : druid.base_component ----@field druid druid_instance The component druid instance ----@field is_drag boolean Is currently under user control ----@field node node The pin node -local druid__pin_knob = {} - ---- The @{PinKnob} constructor ----@param self druid.pin_knob @{PinKnob} ----@param callback function Callback(self, value) on value changed ----@param template string The template string name ----@param nodes table Nodes table from gui.clone_tree -function druid__pin_knob.init(self, callback, template, nodes) end - ---- Set current and min/max angles for component ----@param self druid.pin_knob @{PinKnob} ----@param cur_value number The new value for pin knob ----@param min number The minimum value for pin knob ----@param max number The maximum value for pin knob ----@return druid.pin_knob @{PinKnob} -function druid__pin_knob.set_angle(self, cur_value, min, max) end - ---- Set current and min/max angles for component ----@param self druid.pin_knob @{PinKnob} ----@param value number The spin speed multiplier ----@return druid.pin_knob @{PinKnob} -function druid__pin_knob.set_friction(self, value) end - - ----@class druid.progress : druid.base_component ----@field key string The progress bar direction. ----@field max_size number Maximum size of progress bar ----@field node node Progress bar fill node ----@field on_change druid.event On progress bar change callback(self, new_value) ----@field scale vector3 Current progress bar scale ----@field size vector3 Current progress bar size ----@field slice vector4 Progress bar slice9 settings ----@field style druid.progress.style Component style params. -local druid__progress = {} - ---- Empty a progress bar ----@param self druid.progress @{Progress} -function druid__progress.empty(self) end - ---- Fill a progress bar and stop progress animation ----@param self druid.progress @{Progress} -function druid__progress.fill(self) end - ---- Return current progress bar value ----@param self druid.progress @{Progress} -function druid__progress.get(self) end - ---- The @{Progress} constructor ----@param self druid.progress @{Progress} ----@param node string|node Node name or GUI Node itself. ----@param key string Progress bar direction: const.SIDE.X or const.SIDE.Y ----@param init_value number Initial value of progress bar -function druid__progress.init(self, node, key, init_value) end - ---- Set progress bar max node size ----@param self druid.progress @{Progress} ----@param max_size vector3 The new node maximum (full) size ----@return druid.progress @{Progress} -function druid__progress.set_max_size(self, max_size) end - ---- Set points on progress bar to fire the callback ----@param self druid.progress @{Progress} ----@param steps number[] Array of progress bar values ----@param callback function Callback on intersect step value -function druid__progress.set_steps(self, steps, callback) end - ---- Instant fill progress bar to value ----@param self druid.progress @{Progress} ----@param to number Progress bar value, from 0 to 1 -function druid__progress.set_to(self, to) end - ---- Start animation of a progress bar ----@param self druid.progress @{Progress} ----@param to number value between 0..1 ----@param callback function Callback on animation ends -function druid__progress.to(self, to, callback) end - - ----@class druid.progress.style ----@field MIN_DELTA number Minimum step to fill progress bar ----@field SPEED number Progress bas fill rate. More -> faster -local druid__progress__style = {} - - ----@class druid.radio_group : druid.base_component ----@field checkboxes druid.checkbox[] Array of checkbox components ----@field on_radio_click druid.event On any checkbox click -local druid__radio_group = {} - ---- Return radio group state ----@param self druid.radio_group @{RadioGroup} ----@return number Index in radio group -function druid__radio_group.get_state(self) end - ---- The @{RadioGroup} constructor ----@param self druid.radio_group @{RadioGroup} ----@param nodes node[] Array of gui node ----@param callback function Radio callback ----@param click_nodes node[] Array of trigger nodes, by default equals to nodes -function druid__radio_group.init(self, nodes, callback, click_nodes) end - ---- Set radio group state ----@param self druid.radio_group @{RadioGroup} ----@param index number Index in radio group ----@param is_instant boolean If is instant state change -function druid__radio_group.set_state(self, index, is_instant) end - - ----@class druid.rich_input : druid.input ----@field cursor node On input field text change to empty string callback(self, input_text) ----@field druid druid_instance The component druid instance ----@field input druid.input On input field text change callback(self, input_text) ----@field placeholder druid.text On input field text change to max length string callback(self, input_text) -local druid__rich_input = {} - ---- The @{RichInput} constructor ----@param self druid.rich_input @{RichInput} ----@param template string The template string name ----@param nodes table Nodes table from gui.clone_tree -function druid__rich_input.init(self, template, nodes) end - ---- Set placeholder text ----@param self druid.rich_input @{RichInput} ----@param placeholder_text string The placeholder text -function druid__rich_input.set_placeholder(self, placeholder_text) end - - ----@class druid.rich_text : druid.base_component ----@field druid druid_instance The component druid instance ----@field style druid.rich_text.style Component style params. -local druid__rich_text = {} - ---- Clear all created words. -function druid__rich_text.clear() end - ---- Get current line metrics ----@return druid.rich_text.lines_metrics -function druid__rich_text.get_line_metric() end - ---- Get all current words. ----@return table druid.rich_text.word[] -function druid__rich_text.get_words() end - ---- The @{RichText} constructor ----@param self druid.rich_text @{RichText} ----@param template string The Rich Text template name ----@param nodes table The node table, if prefab was copied by gui.clone_tree() -function druid__rich_text.init(self, template, nodes) end - ---- Set text for Rich Text ----@param self druid.rich_text @{RichText} ----@param text string The text to set ----@return druid.rich_text.word[] words ----@return druid.rich_text.lines_metrics line_metrics -function druid__rich_text.set_text(self, text) end - ---- Get all words, which has a passed tag. ----@param tag string ----@return druid.rich_text.word[] words -function druid__rich_text.tagged(tag) end - - ----@class druid.rich_text.style ----@field ADJUST_SCALE_DELTA number Scale step on each height adjust step ----@field ADJUST_STEPS number Amount steps of attemps text adjust by height ----@field COLORS table Rich Text color aliases -local druid__rich_text__style = {} - - ----@class druid.scroll : druid.base_component ----@field available_pos vector4 Available position for content node: (min_x, max_y, max_x, min_y) ----@field available_size vector3 Size of available positions: (width, height, 0) ----@field content_node node Scroll content node ----@field drag druid.drag Drag Druid component ----@field inertion vector3 Current inert speed ----@field is_animate boolean Flag, if scroll now animating by gui.animate ----@field on_point_scroll druid.event On scroll_to_index function callback(self, index, point) ----@field on_scroll druid.event On scroll move callback(self, position) ----@field on_scroll_to druid.event On scroll_to function callback(self, target, is_instant) ----@field position vector3 Current scroll posisition ----@field selected number Current index of points of interests ----@field style druid.scroll.style Component style params. ----@field target_position vector3 Current scroll target position ----@field view_node node Scroll view node -local druid__scroll = {} - ---- Bind the grid component (Static or Dynamic) to recalculate scroll size on grid changes ----@param self druid.scroll @{Scroll} ----@param grid druid.static_grid|druid.dynamic_grid Druid grid component ----@return druid.scroll Current scroll instance -function druid__scroll.bind_grid(self, grid) end - ---- Return current scroll progress status. ---- Values will be in [0..1] interval ----@param self druid.scroll @{Scroll} ----@return vector3 New vector with scroll progress values -function druid__scroll.get_percent(self) end - ---- Return vector of scroll size with width and height. ----@param self druid.scroll @{Scroll} ----@return vector3 Available scroll size -function druid__scroll.get_scroll_size(self) end - ---- The @{Scroll} constructor ----@param self druid.scroll @{Scroll} ----@param view_node string|node GUI view scroll node ----@param content_node string|node GUI content scroll node -function druid__scroll.init(self, view_node, content_node) end - ---- Return if scroll have inertion. ----@param self druid.scroll @{Scroll} ----@return boolean @If scroll have inertion -function druid__scroll.is_inert(self) end - ---- Check node if it visible now on scroll. ---- Extra border is not affected. Return true for elements in extra scroll zone ----@param self druid.scroll @{Scroll} ----@param node node The node to check ----@return boolean True if node in visible scroll area -function druid__scroll.is_node_in_view(self, node) end - ---- Start scroll to target point. ----@param self druid.scroll @{Scroll} ----@param point vector3 Target point ----@param is_instant boolean Instant scroll flag -function druid__scroll.scroll_to(self, point, is_instant) end - ---- Scroll to item in scroll by point index. ----@param self druid.scroll @{Scroll} ----@param index number Point index ----@param skip_cb boolean If true, skip the point callback -function druid__scroll.scroll_to_index(self, index, skip_cb) end - ---- Start scroll to target scroll percent ----@param self druid.scroll @{Scroll} ----@param percent vector3 target percent ----@param is_instant boolean instant scroll flag -function druid__scroll.scroll_to_percent(self, percent, is_instant) end - ---- Strict drag scroll area. ---- Useful for restrict events outside stencil node ----@param self druid.drag ----@param node node Gui node -function druid__scroll.set_click_zone(self, node) end - ---- Set extra size for scroll stretching. ---- Set 0 to disable stretching effect ----@param self druid.scroll @{Scroll} ----@param stretch_size number Size in pixels of additional scroll area ----@return druid.scroll Current scroll instance -function druid__scroll.set_extra_stretch_size(self, stretch_size) end - ---- Lock or unlock horizontal scroll ----@param self druid.scroll @{Scroll} ----@param state boolean True, if horizontal scroll is enabled ----@return druid.scroll Current scroll instance -function druid__scroll.set_horizontal_scroll(self, state) end - ---- Enable or disable scroll inert. ---- If disabled, scroll through points (if exist) If no points, just simple drag without inertion ----@param self druid.scroll @{Scroll} ----@param state boolean Inert scroll state ----@return druid.scroll Current scroll instance -function druid__scroll.set_inert(self, state) end - ---- Set points of interest. ---- Scroll will always centered on closer points ----@param self druid.scroll @{Scroll} ----@param points table Array of vector3 points ----@return druid.scroll Current scroll instance -function druid__scroll.set_points(self, points) end - ---- Set scroll content size. ---- It will change content gui node size ----@param self druid.scroll @{Scroll} ----@param size vector3 The new size for content node ----@param offset vector3 Offset value to set, where content is starts ----@return druid.scroll Current scroll instance -function druid__scroll.set_size(self, size, offset) end - ---- Lock or unlock vertical scroll ----@param self druid.scroll @{Scroll} ----@param state boolean True, if vertical scroll is enabled ----@return druid.scroll Current scroll instance -function druid__scroll.set_vertical_scroll(self, state) end - - ----@class druid.scroll.style ----@field ANIM_SPEED number Scroll gui.animation speed for scroll_to function ----@field BACK_SPEED number Scroll back returning lerp speed ----@field EXTRA_STRETCH_SIZE number extra size in pixels outside of scroll (stretch effect) ----@field FRICT number Multiplier for free inertion ----@field FRICT_HOLD number Multiplier for inertion, while touching ----@field INERT_SPEED number Multiplier for inertion speed ----@field INERT_THRESHOLD number Scroll speed to stop inertion ----@field POINTS_DEADZONE number Speed to check points of interests in no_inertion mode ----@field SMALL_CONTENT_SCROLL boolean If true, content node with size less than view node size can be scrolled ----@field WHEEL_SCROLL_BY_INERTION boolean If true, wheel will add inertion to scroll. Direct set position otherwise. ----@field WHEEL_SCROLL_INVERTED boolean If true, invert direction for touchpad and mouse wheel scroll ----@field WHEEL_SCROLL_SPEED boolean The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling -local druid__scroll__style = {} - - ----@class druid.slider : druid.base_component ----@field dist number Length between start and end position ----@field end_pos vector3 End pin node position ----@field is_drag boolean Current drag state ----@field node node Slider pin node ----@field on_change_value druid.event On change value callback(self, value) ----@field pos vector3 Current pin node position ----@field start_pos vector3 Start pin node position ----@field target_pos vector3 Targer pin node position ----@field value number Current slider value -local druid__slider = {} - ---- The @{Slider} constructor ----@param self druid.slider @{Slider} ----@param node node Gui pin node ----@param end_pos vector3 The end position of slider ----@param callback function On slider change callback -function druid__slider.init(self, node, end_pos, callback) end - ---- Set value for slider ----@param self druid.slider @{Slider} ----@param value number Value from 0 to 1 ----@param is_silent boolean Don't trigger event if true -function druid__slider.set(self, value, is_silent) end - ---- Set input zone for slider. ---- User can touch any place of node, pin instantly will move at this position and node drag will start. This function require the Defold version 1.3.0+ ----@param self druid.slider @{Slider} ----@param input_node node ----@return druid.slider @{Slider} -function druid__slider.set_input_node(self, input_node) end - ---- Set slider steps. ---- Pin node will apply closest step position ----@param self druid.slider @{Slider} ----@param steps number[] Array of steps ----@return druid.slider @{Slider} -function druid__slider.set_steps(self, steps) end - - ----@class druid.static_grid : druid.base_component ----@field anchor vector3 Item anchor [0..1] ----@field border vector4 The size of item content ----@field first_index number The first index of node in grid ----@field last_index number The last index of node in grid ----@field node_size vector3 Item size ----@field nodes node[] List of all grid nodes ----@field on_add_item druid.event On item add callback(self, node, index) ----@field on_change_items druid.event On item add, remove or change in_row callback(self, index|nil) ----@field on_clear druid.event On grid clear callback(self) ----@field on_remove_item druid.event On item remove callback(self, index) ----@field on_update_positions druid.event On update item positions callback(self) ----@field parent node Parent gui node ----@field pivot vector3 Item pivot [-0.5..0.5] ----@field style druid.static_grid.style Component style params. -local druid__static_grid = {} - ---- Add new item to the grid ----@param self druid.static_grid @{StaticGrid} ----@param item node Gui node ----@param index number The item position. By default add as last item ----@param shift_policy number How shift nodes, if required. See const.SHIFT ----@param is_instant boolean If true, update node positions instantly -function druid__static_grid.add(self, item, index, shift_policy, is_instant) end - ---- Clear grid nodes array. ---- GUI nodes will be not deleted! If you want to delete GUI nodes, use static_grid.nodes array before grid:clear ----@param self druid.static_grid @{StaticGrid} ----@return druid.static_grid Current grid instance -function druid__static_grid.clear(self) end - ---- Return array of all node positions ----@param self druid.static_grid @{StaticGrid} ----@return vector3[] All grid node positions -function druid__static_grid.get_all_pos(self) end - ---- Return grid content borders ----@param self druid.static_grid @{StaticGrid} ----@return vector3 The grid content borders -function druid__static_grid.get_borders(self) end - ---- Return index for grid pos ----@param self druid.static_grid @{StaticGrid} ----@param pos vector3 The node position in the grid ----@return number The node index -function druid__static_grid.get_index(self, pos) end - ---- Return grid index by node ----@param self druid.static_grid @{StaticGrid} ----@param node node The gui node in the grid ----@return number The node index -function druid__static_grid.get_index_by_node(self, node) end - ---- Return StaticGrid offset, where StaticGrid content starts. ----@param self druid.static_grid @{StaticGrid} The StaticGrid instance ----@return vector3 The StaticGrid offset -function druid__static_grid.get_offset(self) end - ---- Return pos for grid node index ----@param self druid.static_grid @{StaticGrid} ----@param index number The grid element index ----@return vector3 @Node position -function druid__static_grid.get_pos(self, index) end - ---- Return grid content size ----@param self druid.static_grid @{StaticGrid} ----@return vector3 The grid content size -function druid__static_grid.get_size(self) end - ---- The @{StaticGrid} constructor ----@param self druid.static_grid @{StaticGrid} ----@param parent string|node The GUI Node container, where grid's items will be placed ----@param element node Element prefab. Need to get it size ----@param in_row number How many nodes in row can be placed -function druid__static_grid.init(self, parent, element, in_row) end - ---- Remove the item from the grid. ---- Note that gui node will be not deleted ----@param self druid.static_grid @{StaticGrid} ----@param index number The grid node index to remove ----@param shift_policy number How shift nodes, if required. See const.SHIFT ----@param is_instant boolean If true, update node positions instantly ----@return node The deleted gui node from grid -function druid__static_grid.remove(self, index, shift_policy, is_instant) end - ---- Set grid anchor. ---- Default anchor is equal to anchor of grid parent node ----@param self druid.static_grid @{StaticGrid} ----@param anchor vector3 Anchor -function druid__static_grid.set_anchor(self, anchor) end - ---- Set new in_row elements for grid ----@param self druid.static_grid @{StaticGrid} ----@param in_row number The new in_row value ----@return druid.static_grid Current grid instance -function druid__static_grid.set_in_row(self, in_row) end - ---- Change set position function for grid nodes. ---- It will call on update poses on grid elements. Default: gui.set_position ----@param self druid.static_grid @{StaticGrid} ----@param callback function Function on node set position ----@return druid.static_grid Current grid instance -function druid__static_grid.set_position_function(self, callback) end - - ----@class druid.static_grid.style ----@field IS_ALIGN_LAST_ROW boolean If true, always align last row of the grid as grid pivot sets ----@field IS_DYNAMIC_NODE_POSES boolean If true, always center grid content as grid pivot sets -local druid__static_grid__style = {} - - ----@class druid.swipe : druid.base_component ----@field click_zone node Restriction zone ----@field node node Swipe node ----@field on_swipe druid.event Trigger on swipe event(self, swipe_side, dist, delta_time) ----@field style druid.swipe.style Component style params. -local druid__swipe = {} - ---- The @{Swipe} constructor ----@param self druid.swipe @{Swipe} ----@param node node Gui node ----@param on_swipe_callback function Swipe callback for on_swipe_end event -function druid__swipe.init(self, node, on_swipe_callback) end - ---- Strict swipe click area. ---- Useful for restrict events outside stencil node ----@param self druid.swipe @{Swipe} ----@param zone node Gui node -function druid__swipe.set_click_zone(self, zone) end - - ----@class druid.swipe.style ----@field SWIPE_THRESHOLD number Minimum distance for swipe trigger ----@field SWIPE_TIME number Maximum time for swipe trigger ----@field SWIPE_TRIGGER_ON_MOVE boolean If true, trigger on swipe moving, not only release action -local druid__swipe__style = {} - - ----@class druid.text : druid.base_component ----@field adjust_type number Current text size adjust settings ----@field color vector3 Current text color ----@field node node Text node ----@field node_id hash The node id of text node ----@field on_set_pivot druid.event On change pivot callback(self, pivot) ----@field on_set_text druid.event On set text callback(self, text) ----@field on_update_text_scale druid.event On adjust text size callback(self, new_scale, text_metrics) ----@field pos vector3 Current text position ----@field scale vector3 Current text node scale ----@field start_scale vector3 Initial text node scale ----@field start_size vector3 Initial text node size ----@field style druid.text.style Component style params. ----@field text_area vector3 Current text node available are -local druid__text = {} - ---- Return current text adjust type ----@param self unknown ----@param adjust_type unknown ----@return number The current text adjust type -function druid__text.get_text_adjust(self, adjust_type) end - ---- Calculate text width with font with respect to trailing space ----@param self druid.text @{Text} ----@param text string ----@return number Width ----@return number Height -function druid__text.get_text_size(self, text) end - ---- The @{Text} constructor ----@param self druid.text @{Text} ----@param node string|node Node name or GUI Text Node itself ----@param value string Initial text. Default value is node text from GUI scene. ----@param adjust_type string Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference -function druid__text.init(self, node, value, adjust_type) end - ---- Return true, if text with line break ----@param self druid.text @{Text} ----@return boolean Is text node with line break -function druid__text.is_multiline(self) end - ---- Set alpha ----@param self druid.text @{Text} ----@param alpha number Alpha for node ----@return druid.text Current text instance -function druid__text.set_alpha(self, alpha) end - ---- Set color ----@param self druid.text @{Text} ----@param color vector4 Color for node ----@return druid.text Current text instance -function druid__text.set_color(self, color) end - ---- Set minimal scale for DOWNSCALE_LIMITED or SCALE_THEN_SCROLL adjust types ----@param self druid.text @{Text} ----@param minimal_scale number If pass nil - not use minimal scale ----@return druid.text Current text instance -function druid__text.set_minimal_scale(self, minimal_scale) end - ---- Set text pivot. ---- Text will re-anchor inside text area ----@param self druid.text @{Text} ----@param pivot number The gui.PIVOT_* constant ----@return druid.text Current text instance -function druid__text.set_pivot(self, pivot) end - ---- Set scale ----@param self druid.text @{Text} ----@param scale vector3 Scale for node ----@return druid.text Current text instance -function druid__text.set_scale(self, scale) end - ---- Set text adjust, refresh the current text visuals, if needed ----@param self druid.text @{Text} ----@param adjust_type number See const.TEXT_ADJUST. If pass nil - use current adjust type ----@param minimal_scale number If pass nil - not use minimal scale ----@return druid.text Current text instance -function druid__text.set_text_adjust(self, adjust_type, minimal_scale) end - ---- Set text to text field ----@param self druid.text @{Text} ----@param set_to string Text for node ----@return druid.text Current text instance -function druid__text.set_to(self, set_to) end - - ----@class druid.text.style ----@field DEFAULT_ADJUST string The default adjust type for any text component ----@field TRIM_POSTFIX string The postfix for TRIM adjust type -local druid__text__style = {} - - ----@class druid.timer : druid.base_component ----@field from number Initial timer value ----@field node node Trigger node ----@field on_set_enabled druid.event On timer change enabled state callback(self, is_enabled) ----@field on_tick druid.event On timer tick. ----@field on_timer_end druid.event On timer end callback ----@field target number Target timer value ----@field value number Current timer value -local druid__timer = {} - ---- The @{Timer} constructor ----@param self druid.timer @{Timer} ----@param node node Gui text node ----@param seconds_from number Start timer value in seconds ----@param seconds_to number End timer value in seconds ----@param callback function Function on timer end -function druid__timer.init(self, node, seconds_from, seconds_to, callback) end - ---- Set time interval ----@param self druid.timer @{Timer} ----@param from number Start time in seconds ----@param to number Target time in seconds -function druid__timer.set_interval(self, from, to) end - ---- Called when update ----@param self druid.timer @{Timer} ----@param is_on boolean Timer enable state -function druid__timer.set_state(self, is_on) end - ---- Set text to text field ----@param self druid.timer @{Timer} ----@param set_to number Value in seconds -function druid__timer.set_to(self, set_to) end - - ----@class druid_instance -local druid_instance = {} - ---- Call this in gui_script final function. ----@param self druid_instance -function druid_instance.final(self) end - ---- Create new component. ----@param self druid_instance ----@param component druid.base_component Component module ----@param ... any Other component params to pass it to component:init function -function druid_instance.new(self, component, ...) end - ---- Create @{BackHandler} component ----@param self druid_instance ----@param callback function @The callback(self, custom_args) to call on back event ----@param params any Callback argument ----@return druid.back_handler @{BackHandler} component -function druid_instance.new_back_handler(self, callback, params) end - ---- Create @{Blocker} component ----@param self druid_instance ----@param node node Gui node ----@return druid.blocker @{Blocker} component -function druid_instance.new_blocker(self, node) end - ---- Create @{Button} component ----@param self druid_instance ----@param node node GUI node ----@param callback function Button callback ----@param params table Button callback params ----@param anim_node node Button anim node (node, if not provided) ----@return druid.button @{Button} component -function druid_instance.new_button(self, node, callback, params, anim_node) end - ---- Create @{Checkbox} component ----@param self druid_instance ----@param node node Gui node ----@param callback function Checkbox callback ----@param click_node node Trigger node, by default equals to node ----@param initial_state boolean The initial state of checkbox, default - false ----@return druid.checkbox @{Checkbox} component -function druid_instance.new_checkbox(self, node, callback, click_node, initial_state) end - ---- Create @{CheckboxGroup} component ----@param self druid_instance ----@param nodes node[] Array of gui node ----@param callback function Checkbox callback ----@param click_nodes node[] Array of trigger nodes, by default equals to nodes ----@return druid.checkbox_group @{CheckboxGroup} component -function druid_instance.new_checkbox_group(self, nodes, callback, click_nodes) end - ---- Create @{DataList} component ----@param self druid_instance ----@param druid_scroll druid.scroll The Scroll instance for Data List component ----@param druid_grid druid.static_grid|druid.dynamic_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component ----@param create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) ----@return druid.data_list @{DataList} component -function druid_instance.new_data_list(self, druid_scroll, druid_grid, create_function) end - ---- Create @{Drag} component ----@param self druid_instance ----@param node node GUI node to detect dragging ----@param on_drag_callback function Callback for on_drag_event(self, dx, dy) ----@return druid.drag @{Drag} component -function druid_instance.new_drag(self, node, on_drag_callback) end - ---- Create @{DynamicGrid} component ----@param self druid_instance ----@param parent node The gui node parent, where items will be placed ----@return druid.dynamic_grid @{DynamicGrid} component -function druid_instance.new_dynamic_grid(self, parent) end - ---- Create @{Hotkey} component ----@param self druid_instance ----@param keys_array string|string[] Keys for trigger action. Should contains one action key and any amount of modificator keys ----@param callback function The callback function ----@param callback_argument any The argument to pass into the callback function ----@return druid.hotkey @{Hotkey} component -function druid_instance.new_hotkey(self, keys_array, callback, callback_argument) end - ---- Create @{Hover} component ----@param self druid_instance ----@param node node Gui node ----@param on_hover_callback function Hover callback ----@return druid.hover @{Hover} component -function druid_instance.new_hover(self, node, on_hover_callback) end - ---- Create @{Input} component ----@param self druid_instance ----@param click_node node Button node to enabled input component ----@param text_node node Text node what will be changed on user input ----@param keyboard_type number Gui keyboard type for input field ----@return druid.input @{Input} component -function druid_instance.new_input(self, click_node, text_node, keyboard_type) end - ---- Create @{LangText} component ----@param self druid_instance ----@param node node The text node ----@param locale_id string Default locale id ----@param no_adjust boolean If true, will not correct text size ----@return druid.lang_text @{LangText} component -function druid_instance.new_lang_text(self, node, locale_id, no_adjust) end - ---- Create @{Layout} component ----@param self druid_instance ----@param node string|node Layout node ----@param mode string The layout mode ----@return druid.layout @{Layout} component -function druid_instance.new_layout(self, node, mode) end - ---- Create @{Progress} component ----@param self druid_instance ----@param node string|node Progress bar fill node or node name ----@param key string Progress bar direction: const.SIDE.X or const.SIDE.Y ----@param init_value number Initial value of progress bar ----@return druid.progress @{Progress} component -function druid_instance.new_progress(self, node, key, init_value) end - ---- Create @{RadioGroup} component ----@param self druid_instance ----@param nodes node[] Array of gui node ----@param callback function Radio callback ----@param click_nodes node[] Array of trigger nodes, by default equals to nodes ----@return druid.radio_group @{RadioGroup} component -function druid_instance.new_radio_group(self, nodes, callback, click_nodes) end - ---- Create @{RichText} component. ---- As a template please check rich_text.gui layout. ----@param self druid_instance ----@param template string Template name if used ----@param nodes table Nodes table from gui.clone_tree ----@return druid.rich_text @{RichText} component -function druid_instance.new_rich_text(self, template, nodes) end - ---- Create @{Scroll} component ----@param self druid_instance ----@param view_node node GUI view scroll node ----@param content_node node GUI content scroll node ----@return druid.scroll @{Scroll} component -function druid_instance.new_scroll(self, view_node, content_node) end - ---- Create @{Slider} component ----@param self druid_instance ----@param node node Gui pin node ----@param end_pos vector3 The end position of slider ----@param callback function On slider change callback ----@return druid.slider @{Slider} component -function druid_instance.new_slider(self, node, end_pos, callback) end - ---- Create @{StaticGrid} component ----@param self druid_instance ----@param parent node The gui node parent, where items will be placed ----@param element node Element prefab. Need to get it size ----@param in_row number How many nodes in row can be placed ----@return druid.static_grid @{StaticGrid} component -function druid_instance.new_static_grid(self, parent, element, in_row) end - ---- Create @{Swipe} component ----@param self druid_instance ----@param node node Gui node ----@param on_swipe_callback function Swipe callback for on_swipe_end event ----@return druid.swipe @{Swipe} component -function druid_instance.new_swipe(self, node, on_swipe_callback) end - ---- Create @{Text} component ----@param self druid_instance ----@param node node Gui text node ----@param value string Initial text. Default value is node text from GUI scene. ----@param no_adjust boolean If true, text will be not auto-adjust size ----@return druid.text @{Text} component -function druid_instance.new_text(self, node, value, no_adjust) end - ---- Create @{Timer} component ----@param self druid_instance ----@param node node Gui text node ----@param seconds_from number Start timer value in seconds ----@param seconds_to number End timer value in seconds ----@param callback function Function on timer end ----@return druid.timer @{Timer} component -function druid_instance.new_timer(self, node, seconds_from, seconds_to, callback) end - ---- Call this in gui_script on_input function. ---- Used for almost all components ----@param self druid_instance ----@param action_id hash Action_id from on_input ----@param action table Action from on_input ----@return boolean The boolean value is input was consumed -function druid_instance.on_input(self, action_id, action) end - ---- Call this in gui_script on_message function. ---- Used for special actions. See SPECIFIC_UI_MESSAGES table ----@param self druid_instance ----@param message_id hash Message_id from on_message ----@param message table Message from on_message ----@param sender hash Sender from on_message -function druid_instance.on_message(self, message_id, message, sender) end - ---- Remove created component from Druid instance. ---- Component `on_remove` function will be invoked, if exist. ----@param self druid_instance ----@param component druid.base_component Component instance -function druid_instance.remove(self, component) end - ---- Set blacklist components for input processing. ---- If blacklist is not empty and component contains in this list, component will be not processed on input step ----@param self druid_instance @{DruidInstance} ----@param blacklist_components table|druid.base_component The array of component to blacklist ----@return self @{DruidInstance} -function druid_instance.set_blacklist(self, blacklist_components) end - ---- Set whitelist components for input processing. ---- If whitelist is not empty and component not contains in this list, component will be not processed on input step ----@param self druid_instance ----@param whitelist_components table|druid.base_component The array of component to whitelist ----@return self @{DruidInstance} -function druid_instance.set_whitelist(self, whitelist_components) end - ---- Call this in gui_script update function. ---- Used for: scroll, progress, timer components ----@param self druid_instance ----@param dt number Delta time -function druid_instance.update(self, dt) end - - ----@class helper -local helper = {} - ---- Add all elements from source array to the target array ----@param target any[] Array to put elements from source ----@param source any[] The source array to get elements from ----@return any[] The target array -function helper.add_array(target, source) end - ---- Centerate nodes by x position with margin. ---- This functions calculate total width of nodes and set position for each node. The centrate will be around 0 x position. ----@param margin number Offset between nodes ----@param ... unknown Gui nodes -function helper.centrate_nodes(margin, ...) end - ---- Clamp value between min and max ----@param a number Value ----@param min number Min value ----@param max number Max value ----@return number Clamped value -function helper.clamp(a, min, max) end - ---- Check if value is in array and return index of it ----@param t table Array ----@param value unknown Value ----@return number|nil Index of value or nil -function helper.contains(t, value) end - ---- Make a copy table with all nested tables ----@param orig_table table Original table ----@return table Copy of original table -function helper.deepcopy(orig_table) end - ---- Calculate distance between two points ----@param x1 number First point x ----@param y1 number First point y ----@param x2 number Second point x ----@param y2 number Second point y ----@return number Distance -function helper.distance(x1, y1, x2, y2) end - ---- Distance from node position to his borders ----@param node node GUI node ----@param offset vector3 Offset from node position. Pass current node position to get non relative border values ----@return vector4 Vector4 with border values (left, top, right, down) -function helper.get_border(node, offset) end - ---- Return closest non inverted clipping parent node for given node ----@param node node GUI node ----@return node|nil The closest stencil node or nil -function helper.get_closest_stencil_node(node) end - ---- Get current GUI scale for each side ----@return number scale_x ----@return number scale_y -function helper.get_gui_scale() end - ---- Get node offset for given GUI pivot. ---- Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top. ----@param pivot number The gui.PIVOT_* constant ----@return vector3 Vector offset with [-0.5..0.5] values -function helper.get_pivot_offset(pivot) end - ---- Get node size adjusted by scale ----@param node node GUI node ----@return vector3 Scaled size -function helper.get_scaled_size(node) end - ---- Get cumulative parent's node scale ----@param node node Gui node ----@param include_passed_node_scale boolean True if add current node scale to result ----@return vector3 The scene node scale -function helper.get_scene_scale(node, include_passed_node_scale) end - ---- Get current screen stretch multiplier for each side ----@return number stretch_x ----@return number stretch_y -function helper.get_screen_aspect_koef() end - ---- Get text metric from GUI node. ----@param text_node node ----@return GUITextMetrics -function helper.get_text_metrics_from_node(text_node) end - ---- Add value to array with shift policy ---- Shift policy can be: left, right, no_shift ----@param array table Array ----@param any unknown Item to insert ----@param index number Index to insert. If nil, item will be inserted at the end of array ----@param shift_policy number The druid_const.SHIFT.* constant ----@return any Inserted item -function helper.insert_with_shift(array, any, index, shift_policy) end - ---- Check if device is native mobile (Android or iOS) ----@return boolean Is mobile -function helper.is_mobile() end - ---- Check if device is HTML5 ----@return boolean Is web -function helper.is_web() end - ---- Lerp between two values ----@param a number First value ----@param b number Second value ----@param t number Lerp amount ----@return number Lerped value -function helper.lerp(a, b, t) end - ---- Remove value from array with shift policy ---- Shift policy can be: left, right, no_shift ----@param array table Array ----@param index number Index to remove. If nil, item will be removed from the end of array ----@param shift_policy number The druid_const.SHIFT.* constant ----@return any Removed item -function helper.remove_with_shift(array, index, shift_policy) end - ---- Round number to specified decimal places ----@param num number Number ----@param num_decimal_places number Decimal places ----@return number Rounded number -function helper.round(num, num_decimal_places) end - ---- Return sign of value (-1, 0, 1) ----@param val number Value ----@return number Sign -function helper.sign(val) end - ---- Move value from current to target value with step amount ----@param current number Current value ----@param target number Target value ----@param step number Step amount ----@return number New value -function helper.step(current, target, step) end - ---- Simple table to one-line string converter ----@param t table ----@return string -function helper.table_to_string(t) end - - --- Manual Annotations -- - ----@class druid.rich_text.metrics ----@field width number ----@field height number ----@field offset_x number|nil ----@field offset_y number|nil ----@field node_size vector3|nil @For images only - ----@class druid.rich_text.lines_metrics ----@field text_width number ----@field text_height number ----@field lines table - ----@class druid.rich_text.word ----@field node node ----@field relative_scale number ----@field color vector4 ----@field position vector3 ----@field offset vector3 ----@field scale vector3 ----@field size vector3 ----@field metrics druid.rich_text.metrics ----@field pivot number @ The gui.PIVOT_* constant ----@field text string ----@field shadow vector4 ----@field outline vector4 ----@field font string ----@field image druid.rich_text.image ----@field default_animation string ----@field anchor number ----@field br boolean ----@field nobr boolean - ----@class druid.rich_text.image ----@field texture string ----@field anim string ----@field width number ----@field height number - ----@class druid.rich_text.settings ----@field parent node ----@field size number ----@field fonts table ----@field color vector4 ----@field shadow vector4 ----@field outline vector4 ----@field position vector3 ----@field image_pixel_grid_snap boolean ----@field combine_words boolean ----@field default_animation string ----@field node_prefab node ----@field text_prefab node - ----@class GUITextMetrics ----@field width number ----@field height number ----@field max_ascent number ----@field max_descent number +-- @tparam string|node node The_node id or gui.get_node(node_id). diff --git a/druid/base/back_handler.lua b/druid/base/back_handler.lua index cb9a7af..4c2f2af 100644 --- a/druid/base/back_handler.lua +++ b/druid/base/back_handler.lua @@ -46,7 +46,7 @@ local BackHandler = component.create("back_handler") --- The @{BackHandler} constructor -- @tparam BackHandler self @{BackHandler} -- @tparam function callback @The callback(self, custom_args) to call on back event --- @tparam[opt] any custom_args Button events custom arguments +-- @tparam any|nil custom_args Button events custom arguments -- @local function BackHandler.init(self, callback, custom_args) self.params = custom_args diff --git a/druid/base/blocker.lua b/druid/base/blocker.lua index 6645913..82fe72c 100644 --- a/druid/base/blocker.lua +++ b/druid/base/blocker.lua @@ -71,7 +71,7 @@ end -- -- Don't change node enabled state itself. -- @tparam Blocker self @{Blocker} --- @tparam boolean state Enabled state +-- @tparam boolean|nil state Enabled state function Blocker.set_enabled(self, state) self._is_enabled = state end diff --git a/druid/base/button.lua b/druid/base/button.lua index 024a1b8..08dc4b9 100755 --- a/druid/base/button.lua +++ b/druid/base/button.lua @@ -282,10 +282,10 @@ end --- The @{Button} constructor -- @tparam Button self @{Button} --- @tparam string|node node Node name or GUI Node itself +-- @tparam string|node node The node_id or gui.get_node(node_id) -- @tparam function callback On click button callback --- @tparam[opt] any custom_args Button events custom arguments --- @tparam[opt] string|node anim_node Node to animate instead of trigger node. +-- @tparam any|nil custom_args Button events custom arguments +-- @tparam string|node|nil anim_node Node to animate instead of trigger node. function Button.init(self, node, callback, custom_args, anim_node) self.druid = self:get_druid() self.node = self:get_node(node) @@ -447,7 +447,7 @@ end -- The style.on_set_enabled will be triggered. -- Disabled button is not clickable. -- @tparam Button self @{Button} --- @tparam boolean state Enabled state +-- @tparam boolean|nil state Enabled state -- @treturn Button Current button instance -- @usage -- button:set_enabled(false) @@ -515,8 +515,8 @@ end --- Set function for additional check for button click availability -- @tparam Button self --- @tparam[opt] function check_function Should return true or false. If true - button can be pressed. --- @tparam[opt] function failure_callback Function will be called on button click, if check function return false +-- @tparam function|nil check_function Should return true or false. If true - button can be pressed. +-- @tparam function|nil failure_callback Function will be called on button click, if check function return false -- @treturn Button Current button instance function Button.set_check_function(self, check_function, failure_callback) self._check_function = check_function @@ -531,7 +531,7 @@ end -- -- If the game is not HTML, html mode will be not enabled -- @tparam Button self --- @tparam[opt] boolean is_web_mode If true - button will be called inside html5 callback +-- @tparam boolean|nil is_web_mode If true - button will be called inside html5 callback -- @treturn Button Current button instance -- @usage -- button:set_web_user_interaction(true) diff --git a/druid/base/drag.lua b/druid/base/drag.lua index 2b12a16..c7f3457 100644 --- a/druid/base/drag.lua +++ b/druid/base/drag.lua @@ -313,7 +313,7 @@ end --- Set Drag input enabled or disabled -- @tparam Drag self @{Drag} --- @tparam boolean is_enabled +-- @tparam boolean|nil is_enabled function Drag.set_enabled(self, is_enabled) self._is_enabled = is_enabled end diff --git a/druid/base/hover.lua b/druid/base/hover.lua index 90bf904..f2a2517 100644 --- a/druid/base/hover.lua +++ b/druid/base/hover.lua @@ -89,7 +89,7 @@ end --- Set hover state -- @tparam Hover self @{Hover} --- @tparam boolean state The hover state +-- @tparam boolean|nil state The hover state function Hover.set_hover(self, state) if self._is_hovered ~= state then self._is_hovered = state @@ -108,7 +108,7 @@ end --- Set mouse hover state -- @tparam Hover self @{Hover} --- @tparam boolean state The mouse hover state +-- @tparam boolean|nil state The mouse hover state function Hover.set_mouse_hover(self, state) if self._is_mouse_hovered ~= state then self._is_mouse_hovered = state @@ -138,7 +138,7 @@ end -- If hover is not enabled, it will not generate -- any hover events -- @tparam Hover self @{Hover} --- @tparam boolean state The hover enabled state +-- @tparam boolean|nil state The hover enabled state function Hover.set_enabled(self, state) self._is_enabled = state diff --git a/druid/base/scroll.lua b/druid/base/scroll.lua index 0aaeabd..97c6352 100755 --- a/druid/base/scroll.lua +++ b/druid/base/scroll.lua @@ -234,7 +234,7 @@ end --- Start scroll to target point. -- @tparam Scroll self @{Scroll} -- @tparam vector3 point Target point --- @tparam[opt] boolean is_instant Instant scroll flag +-- @tparam boolean|nil is_instant Instant scroll flag -- @usage scroll:scroll_to(vmath.vector3(0, 50, 0)) -- @usage scroll:scroll_to(vmath.vector3(0), true) function Scroll.scroll_to(self, point, is_instant) @@ -268,7 +268,7 @@ end --- Scroll to item in scroll by point index. -- @tparam Scroll self @{Scroll} -- @tparam number index Point index --- @tparam[opt] boolean skip_cb If true, skip the point callback +-- @tparam boolean|nil skip_cb If true, skip the point callback function Scroll.scroll_to_index(self, index, skip_cb) if not self.points then return @@ -291,7 +291,7 @@ end --- Start scroll to target scroll percent -- @tparam Scroll self @{Scroll} -- @tparam vector3 percent target percent --- @tparam[opt] boolean is_instant instant scroll flag +-- @tparam boolean|nil is_instant instant scroll flag -- @usage scroll:scroll_to_percent(vmath.vector3(0.5, 0, 0)) function Scroll.scroll_to_percent(self, percent, is_instant) local border = self.available_pos @@ -339,7 +339,7 @@ end -- If disabled, scroll through points (if exist) -- If no points, just simple drag without inertion -- @tparam Scroll self @{Scroll} --- @tparam boolean state Inert scroll state +-- @tparam boolean|nil state Inert scroll state -- @treturn druid.scroll Current scroll instance function Scroll.set_inert(self, state) self._is_inert = state @@ -397,7 +397,7 @@ end --- Lock or unlock horizontal scroll -- @tparam Scroll self @{Scroll} --- @tparam boolean state True, if horizontal scroll is enabled +-- @tparam boolean|nil state True, if horizontal scroll is enabled -- @treturn druid.scroll Current scroll instance function Scroll.set_horizontal_scroll(self, state) self._is_horizontal_scroll = state @@ -408,7 +408,7 @@ end --- Lock or unlock vertical scroll -- @tparam Scroll self @{Scroll} --- @tparam boolean state True, if vertical scroll is enabled +-- @tparam boolean|nil state True, if vertical scroll is enabled -- @treturn druid.scroll Current scroll instance function Scroll.set_vertical_scroll(self, state) self._is_vertical_scroll = state diff --git a/druid/base/static_grid.lua b/druid/base/static_grid.lua index c25a4a3..6051635 100644 --- a/druid/base/static_grid.lua +++ b/druid/base/static_grid.lua @@ -214,7 +214,7 @@ end --- Add new item to the grid -- @tparam StaticGrid self @{StaticGrid} -- @tparam node item Gui node --- @tparam[opt] number index The item position. By default add as last item +-- @tparam number|nil index The item position. By default add as last item -- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT -- @tparam[opt=false] boolean is_instant If true, update node positions instantly function StaticGrid.add(self, item, index, shift_policy, is_instant) @@ -379,7 +379,7 @@ end --- Update grid inner state -- @tparam StaticGrid self @{StaticGrid} --- @tparam boolean is_instant If true, node position update instantly, otherwise with set_position_function callback +-- @tparam boolean|nil is_instant If true, node position update instantly, otherwise with set_position_function callback -- @local function StaticGrid._update(self, is_instant) self:_update_indexes() @@ -425,7 +425,7 @@ end --- Update grid nodes position -- @tparam StaticGrid self @{StaticGrid} --- @tparam boolean is_instant If true, node position update instantly, otherwise with set_position_function callback +-- @tparam boolean|nil is_instant If true, node position update instantly, otherwise with set_position_function callback -- @local function StaticGrid._update_pos(self, is_instant) local zero_offset = self:_get_zero_offset() diff --git a/druid/base/text.lua b/druid/base/text.lua index 73dd5f8..90b7788 100755 --- a/druid/base/text.lua +++ b/druid/base/text.lua @@ -225,7 +225,7 @@ end --- The @{Text} constructor -- @tparam Text self @{Text} -- @tparam string|node node Node name or GUI Text Node itself --- @tparam[opt] string value Initial text. Default value is node text from GUI scene. +-- @tparam string|nil value Initial text. Default value is node text from GUI scene. -- @tparam[opt=downscale] string adjust_type Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference function Text.init(self, node, value, adjust_type) self.node = self:get_node(node) @@ -273,7 +273,7 @@ end --- Calculate text width with font with respect to trailing space -- @tparam Text self @{Text} --- @tparam[opt] string text +-- @tparam string|nil text -- @treturn number Width -- @treturn number Height function Text.get_text_size(self, text) @@ -392,8 +392,8 @@ end --- Set text adjust, refresh the current text visuals, if needed -- @tparam Text self @{Text} --- @tparam[opt] number adjust_type See const.TEXT_ADJUST. If pass nil - use current adjust type --- @tparam[opt] number minimal_scale If pass nil - not use minimal scale +-- @tparam number|nil adjust_type See const.TEXT_ADJUST. If pass nil - use current adjust type +-- @tparam number|nil minimal_scale If pass nil - not use minimal scale -- @treturn Text Current text instance function Text.set_text_adjust(self, adjust_type, minimal_scale) self.adjust_type = adjust_type diff --git a/druid/component.lua b/druid/component.lua index 91964ed..85c8ffc 100644 --- a/druid/component.lua +++ b/druid/component.lua @@ -242,7 +242,7 @@ end -- Default value: 10 -- @tparam BaseComponent self @{BaseComponent} -- @tparam number value The new input priority value --- @tparam boolean is_temporary If true, the reset input priority will return to previous value +-- @tparam boolean|nil is_temporary If true, the reset input priority will return to previous value -- @treturn number The component input priority function BaseComponent.set_input_priority(self, value, is_temporary) assert(value) @@ -290,7 +290,7 @@ end -- -- If input is disabled, the component will not receive input events -- @tparam BaseComponent self @{BaseComponent} --- @tparam boolean state The component input state +-- @tparam boolean|nil state The component input state -- @treturn BaseComponent BaseComponent itself function BaseComponent.set_input_enabled(self, state) self._meta.input_enabled = state @@ -376,7 +376,7 @@ end --- Set debug logs for component enabled or disabled -- @tparam BaseComponent self @{BaseComponent} --- @tparam boolean is_debug +-- @tparam boolean|nil is_debug -- @local function BaseComponent.set_debug(self, is_debug) self._component.is_debug = is_debug diff --git a/druid/druid.lua b/druid/druid.lua index 4226953..811ad50 100644 --- a/druid/druid.lua +++ b/druid/druid.lua @@ -92,7 +92,7 @@ end -- -- @function druid.new -- @tparam table context The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks. --- @tparam[opt] table style The Druid style table to override style parameters for this Druid instance. +-- @tparam table|nil style The Druid style table to override style parameters for this Druid instance. -- @treturn druid_instance The Druid instance @{DruidInstance}. -- @usage -- local druid = require("druid.druid") diff --git a/druid/event.lua b/druid/event.lua index fdddbf8..208620c 100644 --- a/druid/event.lua +++ b/druid/event.lua @@ -15,7 +15,7 @@ local DruidEvent = class("druid.event") --- DruidEvent constructor -- @tparam DruidEvent self @{DruidEvent} --- @tparam[opt] function initial_callback Subscribe the callback on new event, if callback exist +-- @tparam function|nil initial_callback Subscribe the callback on new event, if callback exist -- @usage -- local Event = require("druid.event") -- ... @@ -32,7 +32,7 @@ end --- Subscribe callback on event -- @tparam DruidEvent self @{DruidEvent} -- @tparam function callback Callback itself --- @tparam[opt] any context Additional context as first param to callback call, usually it's self +-- @tparam any|nil context Additional context as first param to callback call, usually it's self -- @usage -- local function on_long_callback(self) -- print("Long click!") @@ -57,7 +57,7 @@ end --- Unsubscribe callback on event -- @tparam DruidEvent self @{DruidEvent} -- @tparam function callback Callback itself --- @tparam[opt] any context Additional context as first param to callback call +-- @tparam any|nil context Additional context as first param to callback call -- @usage -- local function on_long_callback(self) -- print("Long click!") diff --git a/druid/extended/checkbox.lua b/druid/extended/checkbox.lua index 29dfd8b..2c629e8 100755 --- a/druid/extended/checkbox.lua +++ b/druid/extended/checkbox.lua @@ -71,9 +71,9 @@ end --- Set checkbox state -- @tparam Checkbox self @{Checkbox} --- @tparam boolean state Checkbox state --- @tparam boolean is_silent Don't trigger on_change_state if true --- @tparam boolean is_instant If instant checkbox change +-- @tparam boolean|nil state Checkbox state +-- @tparam boolean|nil is_silent Don't trigger on_change_state if true +-- @tparam boolean|nil is_instant If instant checkbox change function Checkbox.set_state(self, state, is_silent, is_instant) self.state = state self.style.on_change_state(self, self.node, state, is_instant) diff --git a/druid/extended/checkbox_group.lua b/druid/extended/checkbox_group.lua index 841fd29..2dd66ba 100644 --- a/druid/extended/checkbox_group.lua +++ b/druid/extended/checkbox_group.lua @@ -46,7 +46,7 @@ end --- Set checkbox group state -- @tparam CheckboxGroup self @{CheckboxGroup} -- @tparam boolean[] indexes Array of checkbox state --- @tparam boolean is_instant If instant state change +-- @tparam boolean|nil is_instant If instant state change function CheckboxGroup.set_state(self, indexes, is_instant) for i = 1, #indexes do if self.checkboxes[i] then diff --git a/druid/extended/dynamic_grid.lua b/druid/extended/dynamic_grid.lua index db58f4c..e1fb56d 100644 --- a/druid/extended/dynamic_grid.lua +++ b/druid/extended/dynamic_grid.lua @@ -100,7 +100,7 @@ end -- @tparam DynamicGrid self @{DynamicGrid} -- @tparam number index The grid element index -- @tparam node node The node to be placed --- @tparam[opt] number origin_index Index of nearby node +-- @tparam number|nil origin_index Index of nearby node -- @treturn vector3 Node position function DynamicGrid.get_pos(self, index, node, origin_index) local origin_node = self.nodes[origin_index] @@ -140,7 +140,7 @@ end --- Add new node to the grid -- @tparam DynamicGrid self @{DynamicGrid} -- @tparam node node Gui node --- @tparam[opt] number index The node position. By default add as last node +-- @tparam number|nil index The node position. By default add as last node -- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT -- @tparam[opt=false] boolean is_instant If true, update node positions instantly function DynamicGrid.add(self, node, index, shift_policy, is_instant) @@ -322,7 +322,7 @@ end --- Update grid inner state -- @tparam DynamicGrid self @{DynamicGrid} --- @tparam boolean is_instant If true, node position update instantly, otherwise with set_position_function callback +-- @tparam boolean|nil is_instant If true, node position update instantly, otherwise with set_position_function callback -- @local function DynamicGrid._update(self, is_instant) self:_update_indexes() @@ -378,7 +378,7 @@ end --- Update grid nodes position -- @tparam DynamicGrid self @{DynamicGrid} --- @tparam boolean is_instant If true, node position update instantly, otherwise with set_position_function callback +-- @tparam boolean|nil is_instant If true, node position update instantly, otherwise with set_position_function callback -- @local function DynamicGrid._update_pos(self, is_instant) for index, node in pairs(self.nodes) do diff --git a/druid/extended/hotkey.lua b/druid/extended/hotkey.lua index d1900e4..7dd84e7 100644 --- a/druid/extended/hotkey.lua +++ b/druid/extended/hotkey.lua @@ -31,7 +31,7 @@ local Hotkey = component.create("hotkey") -- @tparam Hotkey self @{Hotkey} -- @tparam string[]|string keys The keys to be pressed for trigger callback. Should contains one key and any modificator keys -- @tparam function callback The callback function --- @tparam[opt] any callback_argument The argument to pass into the callback function +-- @tparam any|nil callback_argument The argument to pass into the callback function function Hotkey.init(self, keys, callback, callback_argument) self.druid = self:get_druid() @@ -63,7 +63,7 @@ end --- Add hotkey for component callback -- @tparam Hotkey self @{Hotkey} -- @tparam string[]|hash[]|string|hash keys that have to be pressed before key pressed to activate --- @tparam[opt] any callback_argument The argument to pass into the callback function +-- @tparam any|nil callback_argument The argument to pass into the callback function function Hotkey.add_hotkey(self, keys, callback_argument) keys = keys or {} if type(keys) == "string" then diff --git a/druid/extended/input.lua b/druid/extended/input.lua index 0496d18..a5bf991 100755 --- a/druid/extended/input.lua +++ b/druid/extended/input.lua @@ -119,7 +119,7 @@ end -- @tparam Input self @{Input} -- @tparam node click_node Node to enabled input component -- @tparam node|Text text_node Text node what will be changed on user input. You can pass text component instead of text node name @{Text} --- @tparam[opt] number keyboard_type Gui keyboard type for input field +-- @tparam number|nil keyboard_type Gui keyboard type for input field function Input.init(self, click_node, text_node, keyboard_type) self.druid = self:get_druid(self) diff --git a/druid/extended/lang_text.lua b/druid/extended/lang_text.lua index ea776e5..95d7b40 100755 --- a/druid/extended/lang_text.lua +++ b/druid/extended/lang_text.lua @@ -34,8 +34,8 @@ local LangText = component.create("lang_text") --- The @{LangText} constructor -- @tparam LangText self @{LangText} --- @tparam string|node node Node name or GUI Text Node itself --- @tparam string locale_id Default locale id or text from node as default +-- @tparam string|node node The node_id or gui.get_node(node_id) +-- @tparam[opt=node_text] string locale_id Default locale id or text from node as default -- @tparam[opt=downscale] string adjust_type Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference function LangText.init(self, node, locale_id, adjust_type) self.druid = self:get_druid() @@ -75,13 +75,13 @@ end --- Translate the text by locale_id -- @tparam LangText self @{LangText} -- @tparam string locale_id Locale id --- @tparam[opt] string a Optional param to string.format --- @tparam[opt] string b Optional param to string.format --- @tparam[opt] string c Optional param to string.format --- @tparam[opt] string d Optional param to string.format --- @tparam[opt] string e Optional param to string.format --- @tparam[opt] string f Optional param to string.format --- @tparam[opt] string g Optional param to string.format +-- @tparam string|nil a Optional param to string.format +-- @tparam string|nil b Optional param to string.format +-- @tparam string|nil c Optional param to string.format +-- @tparam string|nil d Optional param to string.format +-- @tparam string|nil e Optional param to string.format +-- @tparam string|nil f Optional param to string.format +-- @tparam string|nil g Optional param to string.format -- @treturn LangText Current instance function LangText.translate(self, locale_id, a, b, c, d, e, f, g) self.last_locale_args = { a, b, c, d, e, f, g } @@ -94,13 +94,13 @@ end --- Format string with new text params on localized text -- @tparam LangText self @{LangText} --- @tparam[opt] string a Optional param to string.format --- @tparam[opt] string b Optional param to string.format --- @tparam[opt] string c Optional param to string.format --- @tparam[opt] string d Optional param to string.format --- @tparam[opt] string e Optional param to string.format --- @tparam[opt] string f Optional param to string.format --- @tparam[opt] string g Optional param to string.format +-- @tparam string|nil a Optional param to string.format +-- @tparam string|nil b Optional param to string.format +-- @tparam string|nil c Optional param to string.format +-- @tparam string|nil d Optional param to string.format +-- @tparam string|nil e Optional param to string.format +-- @tparam string|nil f Optional param to string.format +-- @tparam string|nil g Optional param to string.format -- @treturn LangText Current instance function LangText.format(self, a, b, c, d, e, f, g) self.last_locale_args = { a, b, c, d, e, f, g } diff --git a/druid/extended/layout.lua b/druid/extended/layout.lua index 8508790..ff24fef 100644 --- a/druid/extended/layout.lua +++ b/druid/extended/layout.lua @@ -32,7 +32,7 @@ local Layout = component.create("layout") -- @tparam Layout self @{Layout} -- @tparam node node Gui node -- @tparam string mode The layout mode (from const.LAYOUT_MODE) --- @tparam[opt] function on_size_changed_callback The callback on window resize +-- @tparam function|nil on_size_changed_callback The callback on window resize function Layout.init(self, node, mode, on_size_changed_callback) self.node = self:get_node(node) @@ -194,7 +194,7 @@ end --- Set node for layout node to fit inside it. Pass nil to reset -- @tparam Layout self @{Layout} --- @tparam[opt] node node +-- @tparam node|nil node -- @treturn Layout @{Layout} function Layout.fit_into_node(self, node) self._fit_node = node diff --git a/druid/extended/progress.lua b/druid/extended/progress.lua index 7b3e057..b5fb749 100644 --- a/druid/extended/progress.lua +++ b/druid/extended/progress.lua @@ -210,7 +210,7 @@ end --- Start animation of a progress bar -- @tparam Progress self @{Progress} -- @tparam number to value between 0..1 --- @tparam[opt] function callback Callback on animation ends +-- @tparam function|nil callback Callback on animation ends function Progress.to(self, to, callback) to = helper.clamp(to, 0, 1) -- cause of float error diff --git a/druid/extended/radio_group.lua b/druid/extended/radio_group.lua index 9f0ad06..8321c3f 100644 --- a/druid/extended/radio_group.lua +++ b/druid/extended/radio_group.lua @@ -55,7 +55,7 @@ end --- Set radio group state -- @tparam RadioGroup self @{RadioGroup} -- @tparam number index Index in radio group --- @tparam boolean is_instant If is instant state change +-- @tparam boolean|nil is_instant If is instant state change function RadioGroup.set_state(self, index, is_instant) on_checkbox_click(self, index, is_instant) end diff --git a/druid/extended/slider.lua b/druid/extended/slider.lua index d74c12a..05e9453 100644 --- a/druid/extended/slider.lua +++ b/druid/extended/slider.lua @@ -60,7 +60,7 @@ end -- @tparam Slider self @{Slider} -- @tparam node node Gui pin node -- @tparam vector3 end_pos The end position of slider --- @tparam[opt] function callback On slider change callback +-- @tparam function|nil callback On slider change callback function Slider.init(self, node, end_pos, callback) self.node = self:get_node(node) @@ -174,7 +174,7 @@ end --- Set value for slider -- @tparam Slider self @{Slider} -- @tparam number value Value from 0 to 1 --- @tparam[opt] boolean is_silent Don't trigger event if true +-- @tparam boolean|nil is_silent Don't trigger event if true function Slider.set(self, value, is_silent) value = helper.clamp(value, 0, 1) set_position(self, value) diff --git a/druid/extended/swipe.lua b/druid/extended/swipe.lua index f04c733..264805b 100644 --- a/druid/extended/swipe.lua +++ b/druid/extended/swipe.lua @@ -13,7 +13,7 @@ -- @tparam node node --- Restriction zone --- @tparam[opt] node click_zone +-- @tparam node|nil click_zone --- Trigger on swipe event(self, swipe_side, dist, delta_time) -- @tfield DruidEvent on_swipe) @{DruidEvent} diff --git a/druid/extended/timer.lua b/druid/extended/timer.lua index 299c057..b647add 100644 --- a/druid/extended/timer.lua +++ b/druid/extended/timer.lua @@ -49,7 +49,7 @@ end -- @tparam node node Gui text node -- @tparam number seconds_from Start timer value in seconds -- @tparam[opt=0] number seconds_to End timer value in seconds --- @tparam[opt] function callback Function on timer end +-- @tparam function|nil callback Function on timer end function Timer.init(self, node, seconds_from, seconds_to, callback) self.node = self:get_node(node) seconds_from = math.max(seconds_from, 0) @@ -110,7 +110,7 @@ end --- Called when update -- @tparam Timer self @{Timer} --- @tparam boolean is_on Timer enable state +-- @tparam boolean|nil is_on Timer enable state function Timer.set_state(self, is_on) self.is_on = is_on diff --git a/druid/helper.lua b/druid/helper.lua index 71afe65..9e6ab97 100644 --- a/druid/helper.lua +++ b/druid/helper.lua @@ -48,8 +48,8 @@ end -- Nodes will be center around 0 x position -- text_node will be first (at left side) -- @function helper.centrate_text_with_icon --- @tparam[opt] text text_node Gui text node --- @tparam[opt] box icon_node Gui box node +-- @tparam text|nil text_node Gui text node +-- @tparam box|nil icon_node Gui box node -- @tparam number margin Offset between nodes -- @local function M.centrate_text_with_icon(text_node, icon_node, margin) @@ -61,8 +61,8 @@ end -- Nodes will be center around 0 x position -- icon_node will be first (at left side) -- @function helper.centrate_icon_with_text --- @tparam[opt] box icon_node Gui box node --- @tparam[opt] text text_node Gui text node +-- @tparam box|nil icon_node Gui box node +-- @tparam text|nil text_node Gui text node -- @tparam[opt=0] number margin Offset between nodes -- @local function M.centrate_icon_with_text(icon_node, text_node, margin) @@ -256,7 +256,7 @@ end --- Add all elements from source array to the target array -- @function helper.add_array -- @tparam any[] target Array to put elements from source --- @tparam[opt] any[] source The source array to get elements from +-- @tparam any[]|nil source The source array to get elements from -- @treturn any[] The target array function M.add_array(target, source) assert(target) @@ -278,7 +278,7 @@ end -- @tparam node node -- @tparam number x -- @tparam number y --- @tparam[opt] Node node_click_area +-- @tparam node|nil node_click_area -- @local function M.pick_node(node, x, y, node_click_area) local is_pick = gui.pick_node(node, x, y) @@ -302,7 +302,7 @@ end --- Get cumulative parent's node scale -- @function helper.get_scene_scale -- @tparam node node Gui node --- @tparam boolean include_passed_node_scale True if add current node scale to result +-- @tparam boolean|nil include_passed_node_scale True if add current node scale to result -- @treturn vector3 The scene node scale function M.get_scene_scale(node, include_passed_node_scale) local scale = include_passed_node_scale and gui.get_scale(node) or vmath.vector3(1) @@ -394,7 +394,7 @@ end --- Distance from node position to his borders -- @function helper.get_border -- @tparam node node GUI node --- @tparam[opt] vector3 offset Offset from node position. Pass current node position to get non relative border values +-- @tparam vector3|nil offset Offset from node position. Pass current node position to get non relative border values -- @treturn vector4 Vector4 with border values (left, top, right, down) function M.get_border(node, offset) local pivot = gui.get_pivot(node) @@ -452,8 +452,8 @@ end -- @function helper.insert_with_shift -- @tparam table array Array -- @param any Item to insert --- @tparam[opt] number index Index to insert. If nil, item will be inserted at the end of array --- @tparam[opt] number shift_policy The druid_const.SHIFT.* constant +-- @tparam number|nil index Index to insert. If nil, item will be inserted at the end of array +-- @tparam number|nil shift_policy The druid_const.SHIFT.* constant -- @treturn any Inserted item function M.insert_with_shift(array, item, index, shift_policy) shift_policy = shift_policy or const.SHIFT.RIGHT @@ -483,8 +483,8 @@ end -- Shift policy can be: left, right, no_shift -- @function helper.remove_with_shift -- @tparam table array Array --- @tparam[opt] number index Index to remove. If nil, item will be removed from the end of array --- @tparam[opt] number shift_policy The druid_const.SHIFT.* constant +-- @tparam number|nil index Index to remove. If nil, item will be removed from the end of array +-- @tparam number|nil shift_policy The druid_const.SHIFT.* constant -- @treturn any Removed item function M.remove_with_shift(array, index, shift_policy) shift_policy = shift_policy or const.SHIFT.RIGHT diff --git a/druid/system/druid_instance.lua b/druid/system/druid_instance.lua index 688edaf..28786ec 100755 --- a/druid/system/druid_instance.lua +++ b/druid/system/druid_instance.lua @@ -518,7 +518,7 @@ end --- Set debug mode for current Druid instance. It's enable debug log messages -- @tparam DruidInstance self @{DruidInstance} --- @tparam boolean is_debug +-- @tparam boolean|nil is_debug -- @treturn self @{DruidInstance} -- @local function DruidInstance.set_debug(self, is_debug) @@ -530,7 +530,7 @@ end --- Log message, if is_debug mode is enabled -- @tparam DruidInstance self @{DruidInstance} -- @tparam string message --- @tparam[opt] table context +-- @tparam table|nil context -- @local function DruidInstance.log_message(self, message, context) if not self._is_debug then @@ -558,10 +558,10 @@ end --- Create @{Button} component -- @tparam DruidInstance self --- @tparam node node GUI node +-- @tparam string|node node The node_id or gui.get_node(node_id) -- @tparam function callback Button callback --- @tparam[opt] table params Button callback params --- @tparam[opt] node anim_node Button anim node (node, if not provided) +-- @tparam table|nil params Button callback params +-- @tparam node|nil anim_node Button anim node (node, if not provided) -- @treturn Button @{Button} component function DruidInstance.new_button(self, node, callback, params, anim_node) return DruidInstance.new(self, button, node, callback, params, anim_node) @@ -570,7 +570,7 @@ end --- Create @{Blocker} component -- @tparam DruidInstance self --- @tparam node node Gui node +-- @tparam string|node node The node_id or gui.get_node(node_id) -- @treturn Blocker @{Blocker} component function DruidInstance.new_blocker(self, node) return DruidInstance.new(self, blocker, node) @@ -580,7 +580,7 @@ end --- Create @{BackHandler} component -- @tparam DruidInstance self -- @tparam function callback @The callback(self, custom_args) to call on back event --- @tparam[opt] any params Callback argument +-- @tparam any|nil params Callback argument -- @treturn BackHandler @{BackHandler} component function DruidInstance.new_back_handler(self, callback, params) return DruidInstance.new(self, back_handler, callback, params) @@ -589,7 +589,7 @@ end --- Create @{Hover} component -- @tparam DruidInstance self --- @tparam node node Gui node +-- @tparam string|node node The node_id or gui.get_node(node_id) -- @tparam function on_hover_callback Hover callback -- @treturn Hover @{Hover} component function DruidInstance.new_hover(self, node, on_hover_callback) @@ -599,9 +599,9 @@ end --- Create @{Text} component -- @tparam DruidInstance self --- @tparam node node Gui text node --- @tparam[opt] string value Initial text. Default value is node text from GUI scene. --- @tparam[opt] boolean no_adjust If true, text will be not auto-adjust size +-- @tparam string|node node The node_id or gui.get_node(node_id) +-- @tparam string|nil value Initial text. Default value is node text from GUI scene. +-- @tparam boolean|nil no_adjust If true, text will be not auto-adjust size -- @treturn Text @{Text} component function DruidInstance.new_text(self, node, value, no_adjust) return DruidInstance.new(self, text, node, value, no_adjust) @@ -611,32 +611,32 @@ end --- Create @{StaticGrid} component -- Deprecated -- @tparam DruidInstance self --- @tparam node parent The gui node parent, where items will be placed +-- @tparam string|node parent_node The node_id or gui.get_node(node_id). Parent of all Grid items. -- @tparam node element Element prefab. Need to get it size -- @tparam[opt=1] number in_row How many nodes in row can be placed -- @treturn StaticGrid @{StaticGrid} component -- @local -function DruidInstance.new_grid(self, parent, element, in_row) +function DruidInstance.new_grid(self, parent_node, element, in_row) helper.deprecated("The druid:new_grid is deprecated. Please use druid:new_static_grid instead") - return DruidInstance.new(self, static_grid, parent, element, in_row) + return DruidInstance.new(self, static_grid, parent_node, element, in_row) end --- Create @{StaticGrid} component -- @tparam DruidInstance self --- @tparam node parent The gui node parent, where items will be placed +-- @tparam string|node parent_node The node_id or gui.get_node(node_id). Parent of all Grid items. -- @tparam node element Element prefab. Need to get it size -- @tparam[opt=1] number in_row How many nodes in row can be placed -- @treturn StaticGrid @{StaticGrid} component -function DruidInstance.new_static_grid(self, parent, element, in_row) - return DruidInstance.new(self, static_grid, parent, element, in_row) +function DruidInstance.new_static_grid(self, parent_node, element, in_row) + return DruidInstance.new(self, static_grid, parent_node, element, in_row) end --- Create @{Scroll} component -- @tparam DruidInstance self --- @tparam node view_node GUI view scroll node --- @tparam node content_node GUI content scroll node +-- @tparam string|node view_node The node_id or gui.get_node(node_id). Will used as user input node. +-- @tparam string|node content_node The node_id or gui.get_node(node_id). Will used as scrollable node inside view_node. -- @treturn Scroll @{Scroll} component function DruidInstance.new_scroll(self, view_node, content_node) return DruidInstance.new(self, scroll, view_node, content_node) @@ -645,7 +645,7 @@ end --- Create @{Drag} component -- @tparam DruidInstance self --- @tparam node node GUI node to detect dragging +-- @tparam string|node node The node_id or gui.get_node(node_id). Will used as user input node. -- @tparam function on_drag_callback Callback for on_drag_event(self, dx, dy) -- @treturn Drag @{Drag} component function DruidInstance.new_drag(self, node, on_drag_callback) @@ -655,7 +655,7 @@ end --- Create @{Swipe} component -- @tparam DruidInstance self --- @tparam node node Gui node +-- @tparam string|node node The node_id or gui.get_node(node_id). Will used as user input node. -- @tparam function on_swipe_callback Swipe callback for on_swipe_end event -- @treturn Swipe @{Swipe} component function DruidInstance.new_swipe(self, node, on_swipe_callback) @@ -665,38 +665,38 @@ end --- Create @{DynamicGrid} component -- @tparam DruidInstance self --- @tparam node parent The gui node parent, where items will be placed +-- @tparam string|node parent_node The node_id or gui.get_node(node_id). Parent of all Grid items. -- @treturn DynamicGrid @{DynamicGrid} component -function DruidInstance.new_dynamic_grid(self, parent) +function DruidInstance.new_dynamic_grid(self, parent_node) return helper.require_component_message("dynamic_grid") end --- Create @{LangText} component -- @tparam DruidInstance self --- @tparam node node The text node --- @tparam string locale_id Default locale id --- @tparam boolean no_adjust If true, will not correct text size +-- @tparam string|node node The_node id or gui.get_node(node_id) +-- @tparam string|nil locale_id Default locale id or text from node as default +-- @tparam string|nil adjust_type Adjust type for text node. Default: const.TEXT_ADJUST.DOWNSCALE -- @treturn LangText @{LangText} component -function DruidInstance.new_lang_text(self, node, locale_id, no_adjust) +function DruidInstance.new_lang_text(self, node, locale_id, adjust_type) return helper.require_component_message("lang_text") end --- Create @{Slider} component -- @tparam DruidInstance self --- @tparam node node Gui pin node +-- @tparam string|node pin_node The_node id or gui.get_node(node_id). -- @tparam vector3 end_pos The end position of slider --- @tparam[opt] function callback On slider change callback +-- @tparam function|nil callback On slider change callback -- @treturn Slider @{Slider} component -function DruidInstance.new_slider(self, node, end_pos, callback) +function DruidInstance.new_slider(self, pin_node, end_pos, callback) return helper.require_component_message("slider") end --- Create @{Checkbox} component -- @tparam DruidInstance self --- @tparam node node Gui node +-- @tparam string|node node The_node id or gui.get_node(node_id). -- @tparam function callback Checkbox callback -- @tparam[opt=node] node click_node Trigger node, by default equals to node -- @tparam[opt=false] boolean initial_state The initial state of checkbox, default - false @@ -708,9 +708,9 @@ end --- Create @{Input} component -- @tparam DruidInstance self --- @tparam node click_node Button node to enabled input component --- @tparam node text_node Text node what will be changed on user input --- @tparam[opt] number keyboard_type Gui keyboard type for input field +-- @tparam string|node click_node Button node to enabled input component +-- @tparam string|node text_node Text node what will be changed on user input +-- @tparam number|nil keyboard_type Gui keyboard type for input field -- @treturn Input @{Input} component function DruidInstance.new_input(self, click_node, text_node, keyboard_type) return helper.require_component_message("input") @@ -752,10 +752,10 @@ end --- Create @{Timer} component -- @tparam DruidInstance self --- @tparam node node Gui text node +-- @tparam string|node node Gui text node -- @tparam number seconds_from Start timer value in seconds -- @tparam[opt=0] number seconds_to End timer value in seconds --- @tparam[opt] function callback Function on timer end +-- @tparam function|nil callback Function on timer end -- @treturn Timer @{Timer} component function DruidInstance.new_timer(self, node, seconds_from, seconds_to, callback) return helper.require_component_message("timer") @@ -775,7 +775,7 @@ end --- Create @{Layout} component -- @tparam DruidInstance self --- @tparam string|node node Layout node +-- @tparam string|node node The_node id or gui.get_node(node_id). -- @tparam string mode The layout mode -- @treturn Layout @{Layout} component function DruidInstance.new_layout(self, node, mode) @@ -787,7 +787,7 @@ end -- @tparam DruidInstance self -- @tparam string|string[] keys_array Keys for trigger action. Should contains one action key and any amount of modificator keys -- @tparam function callback The callback function --- @tparam[opt] any callback_argument The argument to pass into the callback function +-- @tparam any|nil callback_argument The argument to pass into the callback function -- @treturn Hotkey @{Hotkey} component function DruidInstance.new_hotkey(self, keys_array, callback, callback_argument) return helper.require_component_message("hotkey") @@ -797,8 +797,8 @@ end --- Create @{RichText} component. -- As a template please check rich_text.gui layout. -- @tparam DruidInstance self --- @tparam[opt] string template Template name if used --- @tparam[opt] table nodes Nodes table from gui.clone_tree +-- @tparam string|nil template Template name if used +-- @tparam table|nil nodes Nodes table from gui.clone_tree -- @treturn RichText @{RichText} component function DruidInstance.new_rich_text(self, template, nodes) return helper.require_component_message("rich_text", "custom") From c99b97f392f659f001b4e4970b81a7cadd0b6cc6 Mon Sep 17 00:00:00 2001 From: Insality Date: Tue, 17 Oct 2023 22:32:22 +0300 Subject: [PATCH 03/10] Annotations update [3] --- docs/modules/Button.html | 2 +- docs/modules/DruidInstance.html | 61 +- docs/modules/Helper.html | 14 +- docs/modules/LangText.html | 26 +- docs/modules/Scroll.html | 7 +- docs/modules/StaticGrid.html | 26 +- docs/modules/Timer.html | 7 +- druid/annotations.lua | 1856 ++++++++++++++++++++++++++++++- druid/base/button.lua | 2 +- druid/base/scroll.lua | 2 +- druid/base/static_grid.lua | 10 +- druid/component.lua | 4 +- druid/const.lua | 22 +- druid/extended/lang_text.lua | 3 + druid/extended/timer.lua | 2 +- druid/helper.lua | 6 +- druid/system/druid_instance.lua | 37 +- 17 files changed, 1981 insertions(+), 106 deletions(-) diff --git a/docs/modules/Button.html b/docs/modules/Button.html index d710ac9..2a0def6 100644 --- a/docs/modules/Button.html +++ b/docs/modules/Button.html @@ -360,7 +360,7 @@ local button = self.druid:new_button("button_name", on_button_click, c Button
  • zone - node + node or nil Gui node
  • diff --git a/docs/modules/DruidInstance.html b/docs/modules/DruidInstance.html index 1924ddd..2e0ae35 100644 --- a/docs/modules/DruidInstance.html +++ b/docs/modules/DruidInstance.html @@ -158,7 +158,7 @@ end
    - + @@ -198,7 +198,7 @@ end - + @@ -218,7 +218,7 @@ end - + @@ -230,7 +230,7 @@ end - + @@ -311,6 +311,12 @@ end +

    Returns:

    +
      + + BaseComponent + Component instance +
    @@ -331,7 +337,7 @@ end
  • callback - function + function or nil @The callback(self, custom_args) to call on back event
  • params @@ -401,7 +407,7 @@ end The node_id or gui.get_node(node_id)
  • callback - function + function or nil Button callback
  • params @@ -427,7 +433,7 @@ end
    - new_checkbox(self, node, callback[, click_node=node[, initial_state=false]]) + new_checkbox(self, node, callback, click_node, initial_state)
    Create Checkbox component @@ -444,18 +450,16 @@ end The_node id or gui.get_node(node_id).
  • callback - function + function or nil Checkbox callback
  • click_node - node - Trigger node, by default equals to node - (default node) + node or nil + Trigger node, Default: node
  • initial_state - boolean - The initial state of checkbox, default - false - (default false) + boolean or nil + The initial state of checkbox, Default: false
  • @@ -568,7 +572,7 @@ end The node_id or gui.get_node(node_id). Will used as user input node.
  • on_drag_callback - function + function or nil Callback for on_drag_event(self, dx, dy)
  • @@ -673,7 +677,7 @@ end The node_id or gui.get_node(node_id)
  • on_hover_callback - function + function or nil Hover callback
  • @@ -804,7 +808,7 @@ end
    - new_progress(self, node, key[, init_value=1]) + new_progress(self, node, key, init_value)
    Create Progress component @@ -825,9 +829,8 @@ end Progress bar direction: const.SIDE.X or const.SIDE.Y
  • init_value - number - Initial value of progress bar - (default 1) + number or nil + Initial value of progress bar. Default: 1
  • @@ -994,7 +997,7 @@ end
    - new_static_grid(self, parent_node, element[, in_row=1]) + new_static_grid(self, parent_node, item, in_row)
    Create StaticGrid component @@ -1010,14 +1013,13 @@ end string or node The node_id or gui.get_node(node_id). Parent of all Grid items. -
  • element - node - Element prefab. Need to get it size +
  • item + string or node + Item prefab. Required to get grid's item size. Can be adjusted separately.
  • in_row - number + number or nil How many nodes in row can be placed - (default 1)
  • @@ -1051,7 +1053,7 @@ end The node_id or gui.get_node(node_id). Will used as user input node.
  • on_swipe_callback - function + function or nil Swipe callback for on_swipe_end event
  • @@ -1108,7 +1110,7 @@ end
    - new_timer(self, node, seconds_from[, seconds_to=0], callback) + new_timer(self, node, seconds_from, seconds_to, callback)
    Create Timer component @@ -1129,9 +1131,8 @@ end Start timer value in seconds
  • seconds_to - number + number or nil End timer value in seconds - (default 0)
  • callback function or nil diff --git a/docs/modules/Helper.html b/docs/modules/Helper.html index de4b48a..2ede020 100644 --- a/docs/modules/Helper.html +++ b/docs/modules/Helper.html @@ -91,7 +91,7 @@ helper.centrate_nodes(0, node_1, node_2)
  • - + @@ -163,7 +163,7 @@ helper.centrate_nodes(0, node_1, node_2) - + @@ -220,7 +220,7 @@ helper.centrate_nodes(0, node_1, node_2)
    - helper.centrate_nodes([margin=0], ...) + helper.centrate_nodes(margin, ...)
    Centerate nodes by x position with margin. @@ -231,9 +231,8 @@ helper.centrate_nodes(0, node_1, node_2)

    Parameters:

    • margin - number + number or nil Offset between nodes - (default 0)
    • ... Gui nodes @@ -752,7 +751,7 @@ helper.centrate_nodes(0, node_1, node_2)
    - helper.round(num[, num_decimal_places=0]) + helper.round(num, num_decimal_places)
    Round number to specified decimal places @@ -765,9 +764,8 @@ helper.centrate_nodes(0, node_1, node_2) Number
  • num_decimal_places - number + number or nil Decimal places - (default 0)
  • diff --git a/docs/modules/LangText.html b/docs/modules/LangText.html index 71b5e66..2099832 100644 --- a/docs/modules/LangText.html +++ b/docs/modules/LangText.html @@ -107,6 +107,10 @@
    init(self, node, seconds_from[, seconds_to=0[, callback]])init(self, node, seconds_from[, seconds_to=0], callback) The Timer constructor
    Create Button component
    new_checkbox(self, node, callback[, click_node=node[, initial_state=false]])new_checkbox(self, node, callback, click_node, initial_state) Create Checkbox component
    Create Layout component
    new_progress(self, node, key[, init_value=1])new_progress(self, node, key, init_value) Create Progress component
    Create Slider component
    new_static_grid(self, parent_node, element[, in_row=1])new_static_grid(self, parent_node, item, in_row) Create StaticGrid component
    Create Text component
    new_timer(self, node, seconds_from[, seconds_to=0], callback)new_timer(self, node, seconds_from, seconds_to, callback) Create Timer component
    Add all elements from source array to the target array
    helper.centrate_nodes([margin=0], ...)helper.centrate_nodes(margin, ...) Centerate nodes by x position with margin.
    Remove value from array with shift policy
    helper.round(num[, num_decimal_places=0])helper.round(num, num_decimal_places) Round number to specified decimal places

    Fields

    + + + + @@ -194,7 +198,7 @@ LangText
  • node - string or node + string or node The node_id or gui.get_node(node_id)
  • locale_id @@ -308,6 +312,26 @@

    Fields

    +
    + + node +
    +
    + Text node + + +
      +
    • node + node + +
    • +
    + + + + + +
    on_change diff --git a/docs/modules/Scroll.html b/docs/modules/Scroll.html index e0ca1d1..0c390a4 100644 --- a/docs/modules/Scroll.html +++ b/docs/modules/Scroll.html @@ -144,7 +144,7 @@
  • - + @@ -537,7 +537,7 @@
    - set_extra_stretch_size(self[, stretch_size=0]) + set_extra_stretch_size(self, stretch_size)
    Set extra size for scroll stretching. @@ -551,9 +551,8 @@ Scroll
  • stretch_size - number + number or nil Size in pixels of additional scroll area - (default 0)
  • diff --git a/docs/modules/StaticGrid.html b/docs/modules/StaticGrid.html index d7ad168..e5591d3 100644 --- a/docs/modules/StaticGrid.html +++ b/docs/modules/StaticGrid.html @@ -102,7 +102,7 @@

    Functions

    nodeText node
    on_change On change text callback Strict drag scroll area.
    set_extra_stretch_size(self[, stretch_size=0])set_extra_stretch_size(self, stretch_size) Set extra size for scroll stretching.
    - + @@ -142,7 +142,7 @@ - + @@ -230,7 +230,7 @@
    - add(self, item, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]) + add(self, item, index, shift_policy, is_instant)
    Add new item to the grid @@ -244,21 +244,19 @@
  • item node - Gui node + GUI node
  • index number or nil The item position. By default add as last item
  • shift_policy - number - How shift nodes, if required. See const.SHIFT - (default SHIFT.RIGHT) + number or nil + How shift nodes, if required. Default: const.SHIFT.RIGHT
  • is_instant - boolean + boolean or nil If true, update node positions instantly - (default false)
  • @@ -532,7 +530,7 @@
    - remove(self, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]) + remove(self, index, shift_policy, is_instant)
    Remove the item from the grid. Note that gui node will be not deleted @@ -549,14 +547,12 @@ The grid node index to remove
  • shift_policy - number - How shift nodes, if required. See const.SHIFT - (default SHIFT.RIGHT) + number or nil + How shift nodes, if required. Default: const.SHIFT.RIGHT
  • is_instant - boolean + boolean or nil If true, update node positions instantly - (default false)
  • diff --git a/docs/modules/Timer.html b/docs/modules/Timer.html index bd27865..7c3eb82 100644 --- a/docs/modules/Timer.html +++ b/docs/modules/Timer.html @@ -84,7 +84,7 @@

    Functions

    add(self, item, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]])add(self, item, index, shift_policy, is_instant) Add new item to the grid
    The StaticGrid constructor
    remove(self, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]])remove(self, index, shift_policy, is_instant) Remove the item from the grid.
    - + @@ -141,7 +141,7 @@
    - init(self, node, seconds_from[, seconds_to=0], callback) + init(self, node, seconds_from, seconds_to, callback)
    The Timer constructor @@ -162,9 +162,8 @@ Start timer value in seconds
  • seconds_to - number + number or nil End timer value in seconds - (default 0)
  • callback function or nil diff --git a/druid/annotations.lua b/druid/annotations.lua index 6852727..2ecb74d 100644 --- a/druid/annotations.lua +++ b/druid/annotations.lua @@ -1 +1,1855 @@ --- @tparam string|node node The_node id or gui.get_node(node_id). +-- luacheck: ignore +---@diagnostic disable: lowercase-global +---@diagnostic disable: missing-return +---@diagnostic disable: duplicate-doc-param +---@diagnostic disable: duplicate-set-field + +---@class druid +local druid = {} + +--- Create a new Druid instance for creating GUI components. +---@param context table The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks. +---@param style table|nil The Druid style table to override style parameters for this Druid instance. +---@return druid_instance The Druid instance @{DruidInstance}. +function druid.new(context, style) end + +--- Call this function when the game language changes. +--- This function will translate all current LangText components. +function druid.on_language_change() end + +--- Set the window callback to enable on_focus_gain and on_focus_lost functions. +--- This is used to trigger the on_focus_lost and on_focus_gain functions in Druid components. +---@param event string Event param from window listener +function druid.on_window_callback(event) end + +--- Register a new external Druid component. +--- You can register your own components to make new alias: the druid:new_{name} function. For example, if you want to register a component called "my_component", you can create it using druid:new_my_component(...). This can be useful if you have your own "basic" components that you don't want to re-create each time. +---@param name string module name +---@param module table lua table with component +function druid.register(name, module) end + +--- Set your own default style for all Druid instances. +--- To create your own style file, copy the default style file and make changes to it. Register the new style before creating your Druid instances. +---@param style table Druid style module +function druid.set_default_style(style) end + +--- Set the Druid sound function to play UI sounds if used. +--- Set a function to play a sound given a sound_id. This function is used for button clicks to play the "click" sound. It can also be used to play sounds in your custom components (see the default Druid style file for an example). +---@param callback function Sound play callback +function druid.set_sound_function(callback) end + +--- Set the text function for the LangText component. +--- The Druid locale component will call this function to get translated text. After setting the text function, all existing locale components will be updated. +---@param callback function Get localized text function +function druid.set_text_function(callback) end + + +---@class druid.back_handler : druid.base_component +---@field on_back druid.event The @{DruidEvent} Event on back handler action. +---@field params any Custom args to pass in the callback +local druid__back_handler = {} + + +---@class druid.base_component +local druid__base_component = {} + +--- Return all children components, recursive +---@param self druid.base_component @{BaseComponent} +---@return table Array of childrens if the Druid component instance +function druid__base_component.get_childrens(self) end + +--- Context used as first arg in all Druid events +--- Context is usually self of gui_script. +---@param self druid.base_component @{BaseComponent} +---@return table BaseComponent context +function druid__base_component.get_context(self) end + +--- Get Druid instance for inner component creation. +---@param self druid.base_component @{BaseComponent} +---@return druid_instance Druid instance with component context +function druid__base_component.get_druid(self) end + +--- Return component input priority +---@param self druid.base_component @{BaseComponent} +---@return number The component input priority +function druid__base_component.get_input_priority(self) end + +--- Return component name +---@param self druid.base_component @{BaseComponent} +---@return string The component name +function druid__base_component.get_name(self) end + +--- Get component node by name. +--- If component has nodes, node_or_name should be string It autopick node by template name or from nodes by gui.clone_tree if they was setup via component:set_nodes, component:set_template. If node is not found, the exception will fired +---@param self druid.base_component @{BaseComponent} +---@param node_or_name string|node Node name or node itself +---@return node Gui node +function druid__base_component.get_node(self, node_or_name) end + +--- Return the parent component if exist +---@param self druid.base_component @{BaseComponent} +---@return druid.base_component|nil The druid component instance or nil +function druid__base_component.get_parent_component(self) end + +--- Return parent component name +---@param self druid.base_component @{BaseComponent} +---@return string|nil The parent component name if exist or bil +function druid__base_component.get_parent_name(self) end + +--- Get current component template name. +---@param self druid.base_component @{BaseComponent} +---@return string Component full template name +function druid__base_component.get_template(self) end + +--- Return component UID. +--- UID generated in component creation order. +---@param self druid.base_component @{BaseComponent} +---@return number The component uid +function druid__base_component.get_uid(self) end + +--- Reset component input priority to default value +---@param self druid.base_component @{BaseComponent} +---@return number The component input priority +function druid__base_component.reset_input_priority(self) end + +--- Set component input state. +--- By default it enabled If input is disabled, the component will not receive input events +---@param self druid.base_component @{BaseComponent} +---@param state boolean|nil The component input state +---@return druid.base_component BaseComponent itself +function druid__base_component.set_input_enabled(self, state) end + +--- Set component input priority +--- Default value: 10 +---@param self druid.base_component @{BaseComponent} +---@param value number The new input priority value +---@param is_temporary boolean|nil If true, the reset input priority will return to previous value +---@return number The component input priority +function druid__base_component.set_input_priority(self, value, is_temporary) end + +--- Set current component nodes. +--- Use if your component nodes was cloned with `gui.clone_tree` and you got the node tree. +---@param self druid.base_component @{BaseComponent} +---@param nodes table BaseComponent nodes table +---@return druid.base_component @{BaseComponent} +function druid__base_component.set_nodes(self, nodes) end + +--- Set current component style table. +--- Invoke `on_style_change` on component, if exist. Component should handle their style changing and store all style params +---@param self druid.base_component @{BaseComponent} +---@param druid_style table Druid style module +---@return druid.base_component @{BaseComponent} +function druid__base_component.set_style(self, druid_style) end + +--- Set component template name. +--- Use on all your custom components with GUI layouts used as templates. It will check parent template name to build full template name in self:get_node() +---@param self druid.base_component @{BaseComponent} +---@param template string BaseComponent template name +---@return druid.base_component @{BaseComponent} +function druid__base_component.set_template(self, template) end + + +---@class druid.blocker : druid.base_component +---@field node node Blocker node +local druid__blocker = {} + +--- The @{Blocker} constructor +---@param self druid.blocker @{Blocker} +---@param node node Gui node +function druid__blocker.init(self, node) end + +--- Return blocker enabled state +---@param self druid.blocker @{Blocker} +---@return boolean @True, if blocker is enabled +function druid__blocker.is_enabled(self) end + +--- Set enabled blocker component state. +--- Don't change node enabled state itself. +---@param self druid.blocker @{Blocker} +---@param state boolean|nil Enabled state +function druid__blocker.set_enabled(self, state) end + + +---@class druid.button : druid.base_component +---@field anim_node node Button animation node. +---@field click_zone node Additional button click area, defined by another GUI Node +---@field hover druid.hover The @{Hover}: Button Hover component +---@field node node Button trigger node +---@field node_id hash The GUI node id from button node +---@field on_click druid.event The @{DruidEvent}: Event on successful release action over button. +---@field on_click_outside druid.event The @{DruidEvent}: Event calls if click event was outside of button. +---@field on_double_click druid.event The @{DruidEvent}: Event on double tap action over button. +---@field on_hold_callback druid.event The @{DruidEvent}: Event calls every frame before on_long_click event. +---@field on_long_click druid.event The @{DruidEvent}: Event on long tap action over button. +---@field on_pressed druid.event The @{DruidEvent}: Event triggered if button was pressed by user. +---@field on_repeated_click druid.event The @{DruidEvent}: Event on repeated action over button. +---@field params any Custom args for any Button event. +---@field style druid.button.style Component style params. +local druid__button = {} + +--- Get current key name to trigger this button. +---@param self druid.button +---@return hash The action_id of the input key +function druid__button.get_key_trigger(self) end + +--- The @{Button} constructor +---@param self druid.button @{Button} +---@param node string|node The node_id or gui.get_node(node_id) +---@param callback function On click button callback +---@param custom_args any|nil Button events custom arguments +---@param anim_node string|node|nil Node to animate instead of trigger node. +function druid__button.init(self, node, callback, custom_args, anim_node) end + +--- Get button enabled state. +--- By default all Buttons is enabled on creating. +---@param self druid.button @{Button} +---@return boolean @True, if button is enabled now, False overwise +function druid__button.is_enabled(self) end + +--- Set function for additional check for button click availability +---@param self druid.button +---@param check_function function|nil Should return true or false. If true - button can be pressed. +---@param failure_callback function|nil Function will be called on button click, if check function return false +---@return druid.button Current button instance +function druid__button.set_check_function(self, check_function, failure_callback) end + +--- Set additional button click area. +--- Useful to restrict click outside out stencil node or scrollable content. This functions calls automatically if you don't disable it in game.project: druid.no_stencil_check +---@param self druid.button @{Button} +---@param zone node|nil Gui node +---@return druid.button Current button instance +function druid__button.set_click_zone(self, zone) end + +--- Set button enabled state. +--- The style.on_set_enabled will be triggered. Disabled button is not clickable. +---@param self druid.button @{Button} +---@param state boolean|nil Enabled state +---@return druid.button Current button instance +function druid__button.set_enabled(self, state) end + +--- Set key name to trigger this button by keyboard. +---@param self druid.button @{Button} +---@param key hash The action_id of the input key +---@return druid.button Current button instance +function druid__button.set_key_trigger(self, key) end + +--- Set Button mode to work inside user HTML5 interaction event. +--- It's required to make protected things like copy & paste text, show mobile keyboard, etc The HTML5 button's doesn't call any events except on_click event. If the game is not HTML, html mode will be not enabled +---@param self druid.button +---@param is_web_mode boolean|nil If true - button will be called inside html5 callback +---@return druid.button Current button instance +function druid__button.set_web_user_interaction(self, is_web_mode) end + + +---@class druid.button.style +---@field AUTOHOLD_TRIGGER number Maximum hold time to trigger button release while holding +---@field DOUBLETAP_TIME number Time between double taps +---@field LONGTAP_TIME number Minimum time to trigger on_hold_callback +---@field on_click function function(self, node) +---@field on_click_disabled function function(self, node) +---@field on_hover function function(self, node, hover_state) +---@field on_mouse_hover function function(self, node, hover_state) +---@field on_set_enabled function function(self, node, enabled_state) +local druid__button__style = {} + + +---@class druid.checkbox : druid.base_component +---@field button druid.button Button component from click_node +---@field click_node node Button trigger node +---@field node node Visual node +---@field on_change_state druid.event On change state callback(self, state) +---@field style druid.checkbox.style Component style params. +local druid__checkbox = {} + +--- Return checkbox state +---@param self druid.checkbox @{Checkbox} +---@return boolean Checkbox state +function druid__checkbox.get_state(self) end + +--- The @{Checkbox} constructor +---@param self druid.checkbox @{Checkbox} +---@param node node Gui node +---@param callback function Checkbox callback +---@param click_node node Trigger node, by default equals to node +---@param initial_state boolean The initial state of checkbox, default - false +function druid__checkbox.init(self, node, callback, click_node, initial_state) end + +--- Set checkbox state +---@param self druid.checkbox @{Checkbox} +---@param state boolean|nil Checkbox state +---@param is_silent boolean|nil Don't trigger on_change_state if true +---@param is_instant boolean|nil If instant checkbox change +function druid__checkbox.set_state(self, state, is_silent, is_instant) end + + +---@class druid.checkbox.style +---@field on_change_state function (self, node, state) +local druid__checkbox__style = {} + + +---@class druid.checkbox_group : druid.base_component +---@field checkboxes table Array of checkbox components +---@field on_checkbox_click druid.event On any checkbox click callback(self, index) +local druid__checkbox_group = {} + +--- Return checkbox group state +---@param self druid.checkbox_group @{CheckboxGroup} +---@return boolean[] Array if checkboxes state +function druid__checkbox_group.get_state(self) end + +--- The @{CheckboxGroup} constructor +---@param self druid.checkbox_group @{CheckboxGroup} +---@param nodes node[] Array of gui node +---@param callback function Checkbox callback +---@param click_nodes node[] Array of trigger nodes, by default equals to nodes +function druid__checkbox_group.init(self, nodes, callback, click_nodes) end + +--- Set checkbox group state +---@param self druid.checkbox_group @{CheckboxGroup} +---@param indexes boolean[] Array of checkbox state +---@param is_instant boolean|nil If instant state change +function druid__checkbox_group.set_state(self, indexes, is_instant) end + + +---@class druid.data_list : druid.base_component +---@field grid druid.static_grid|druid.dynamic_grid The Druid Grid component +---@field last_index number The current visual last data index +---@field on_element_add druid.event On DataList visual element created Event callback(self, index, node, instance) +---@field on_element_remove druid.event On DataList visual element created Event callback(self, index) +---@field on_scroll_progress_change druid.event Event triggered when scroll progress is changed; event(self, progress_value) +---@field scroll druid.scroll The Druid scroll component +---@field scroll_progress number The current progress of scroll posititon +---@field top_index number The current visual top data index +local druid__data_list = {} + +--- Clear the DataList and refresh visuals +---@param self druid.data_list @{DataList} +function druid__data_list.clear(self) end + +--- Return all currenly created components in DataList +---@param self druid.data_list @{DataList} +---@return druid.base_component[] List of created nodes +function druid__data_list.get_created_components(self) end + +--- Return all currenly created nodes in DataList +---@param self druid.data_list @{DataList} +---@return node[] List of created nodes +function druid__data_list.get_created_nodes(self) end + +--- Return current data from DataList component +---@param self druid.data_list @{DataList} +---@return table The current data array +function druid__data_list.get_data(self) end + +--- Return first index from data. +--- It not always equals to 1 +---@param self druid.data_list @{DataList} +function druid__data_list.get_first_index(self) end + +--- Return index for data value +---@param self druid.data_list @{DataList} +---@param data table +function druid__data_list.get_index(self, data) end + +--- Return last index from data +---@param self druid.data_list @{DataList} +function druid__data_list.get_last_index(self) end + +--- Return amount of data +---@param self druid.data_list @{DataList} +function druid__data_list.get_length(self) end + +--- The @{DataList} constructor +---@param self druid.data_list @{DataList} +---@param scroll druid.scroll The @{Scroll} instance for Data List component +---@param grid druid.static_grid|druid.dynamic_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component +---@param create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) +function druid__data_list.init(self, scroll, grid, create_function) end + +--- Druid System on_remove function +---@param self druid.data_list @{DataList} +function druid__data_list.on_remove(self) end + +--- Instant scroll to element with passed index +---@param self druid.data_list @{DataList} +---@param index number +function druid__data_list.scroll_to_index(self, index) end + +--- Set new data set for DataList component +---@param self druid.data_list @{DataList} +---@param data table The new data array +---@return druid.data_list Current DataList instance +function druid__data_list.set_data(self, data) end + + +---@class druid.drag : druid.base_component +---@field can_x boolean Is drag component process vertical dragging. +---@field can_y boolean Is drag component process horizontal. +---@field is_drag boolean Is component now dragging +---@field is_touch boolean Is component now touching +---@field on_drag druid.event on drag progress callback(self, dx, dy, total_x, total_y) +---@field on_drag_end druid.event Event on drag end callback(self, total_x, total_y) +---@field on_drag_start druid.event Event on drag start callback(self) +---@field on_touch_end druid.event Event on touch end callback(self) +---@field on_touch_start druid.event Event on touch start callback(self) +---@field style druid.drag.style Component style params. +---@field touch_start_pos vector3 Touch start position +---@field x number Current touch x position +---@field y number Current touch y position +local druid__drag = {} + +--- The @{Drag} constructor +---@param self druid.drag @{Drag} +---@param node node GUI node to detect dragging +---@param on_drag_callback function Callback for on_drag_event(self, dx, dy) +function druid__drag.init(self, node, on_drag_callback) end + +--- Check if Drag component is enabled +---@param self druid.drag @{Drag} +---@return boolean +function druid__drag.is_enabled(self) end + +--- Strict drag click area. +--- Useful for restrict events outside stencil node +---@param self druid.drag @{Drag} +---@param node node Gui node +function druid__drag.set_click_zone(self, node) end + +--- Set Drag input enabled or disabled +---@param self druid.drag @{Drag} +---@param is_enabled boolean|nil +function druid__drag.set_enabled(self, is_enabled) end + + +---@class druid.drag.style +---@field DRAG_DEADZONE number Distance in pixels to start dragging +---@field NO_USE_SCREEN_KOEF boolean If screen aspect ratio affects on drag values +local druid__drag__style = {} + + +---@class druid.dynamic_grid : druid.base_component +---@field border vector4 The size of item content +---@field first_index number The first index of node in grid +---@field last_index number The last index of node in grid +---@field node_size vector3 Item size +---@field nodes node[] List of all grid elements. +---@field on_add_item druid.event On item add callback(self, node, index) +---@field on_change_items druid.event On item add or remove callback(self, index) +---@field on_clear druid.event On grid clear callback(self) +---@field on_remove_item druid.event On item remove callback(self, index) +---@field on_update_positions druid.event On update item positions callback(self) +---@field parent node Parent gui node +local druid__dynamic_grid = {} + +--- Return side vector to correct node shifting +---@param self unknown +---@param side unknown +---@param is_forward unknown +function druid__dynamic_grid._get_side_vector(self, side, is_forward) end + +--- Add new node to the grid +---@param self druid.dynamic_grid @{DynamicGrid} +---@param node node Gui node +---@param index number|nil The node position. By default add as last node +---@param shift_policy number How shift nodes, if required. See const.SHIFT +---@param is_instant boolean If true, update node positions instantly +function druid__dynamic_grid.add(self, node, index, shift_policy, is_instant) end + +--- Clear grid nodes array. +--- GUI nodes will be not deleted! If you want to delete GUI nodes, use dynamic_grid.nodes array before grid:clear +---@param self druid.dynamic_grid @{DynamicGrid} +---@return druid.dynamic_grid Current grid instance +function druid__dynamic_grid.clear(self) end + +--- Return array of all node positions +---@param self druid.dynamic_grid @{DynamicGrid} +---@return vector3[] All grid node positions +function druid__dynamic_grid.get_all_pos(self) end + +--- Return grid content borders +---@param self druid.dynamic_grid @{DynamicGrid} +---@return vector3 The grid content borders +function druid__dynamic_grid.get_borders(self) end + +--- Return grid index by node +---@param self druid.dynamic_grid @{DynamicGrid} +---@param node node The gui node in the grid +---@return number The node index +function druid__dynamic_grid.get_index_by_node(self, node) end + +--- Return DynamicGrid offset, where DynamicGrid content starts. +---@param self druid.dynamic_grid @{DynamicGrid} The DynamicGrid instance +---@return vector3 The DynamicGrid offset +function druid__dynamic_grid.get_offset(self) end + +--- Return pos for grid node index +---@param self druid.dynamic_grid @{DynamicGrid} +---@param index number The grid element index +---@param node node The node to be placed +---@param origin_index number|nil Index of nearby node +---@return vector3 Node position +function druid__dynamic_grid.get_pos(self, index, node, origin_index) end + +--- Return grid content size +---@param self druid.dynamic_grid @{DynamicGrid} +---@param border vector3 +---@return vector3 The grid content size +function druid__dynamic_grid.get_size(self, border) end + +--- The @{DynamicGrid} constructor +---@param self druid.dynamic_grid @{DynamicGrid} +---@param parent node The gui node parent, where items will be placed +function druid__dynamic_grid.init(self, parent) end + +--- Remove the item from the grid. +--- Note that gui node will be not deleted +---@param self druid.dynamic_grid @{DynamicGrid} +---@param index number The grid node index to remove +---@param shift_policy number How shift nodes, if required. See const.SHIFT +---@param is_instant boolean If true, update node positions instantly +---@return node The deleted gui node from grid +function druid__dynamic_grid.remove(self, index, shift_policy, is_instant) end + +--- Change set position function for grid nodes. +--- It will call on update poses on grid elements. Default: gui.set_position +---@param self druid.dynamic_grid @{DynamicGrid} +---@param callback function Function on node set position +---@return druid.dynamic_grid Current grid instance +function druid__dynamic_grid.set_position_function(self, callback) end + + +---@class druid.event +local druid__event = {} + +--- Clear the all event handlers +---@param self druid.event @{DruidEvent} +function druid__event.clear(self) end + +--- DruidEvent constructor +---@param self druid.event @{DruidEvent} +---@param initial_callback function|nil Subscribe the callback on new event, if callback exist +function druid__event.initialize(self, initial_callback) end + +--- Return true, if event have at lease one handler +---@param self druid.event @{DruidEvent} +---@return boolean True if event have handlers +function druid__event.is_exist(self) end + +--- Subscribe callback on event +---@param self druid.event @{DruidEvent} +---@param callback function Callback itself +---@param context any|nil Additional context as first param to callback call, usually it's self +function druid__event.subscribe(self, callback, context) end + +--- Trigger the event and call all subscribed callbacks +---@param self druid.event @{DruidEvent} +---@param ... any All event params +function druid__event.trigger(self, ...) end + +--- Unsubscribe callback on event +---@param self druid.event @{DruidEvent} +---@param callback function Callback itself +---@param context any|nil Additional context as first param to callback call +function druid__event.unsubscribe(self, callback, context) end + + +---@class druid.hotkey : druid.base_component +---@field button druid.button Button component from click_node +---@field click_node node Button trigger node +---@field node node Visual node +---@field on_change_state druid.event On change state callback(self, state) +---@field style druid.hotkey.style Component style params. +local druid__hotkey = {} + +--- Add hotkey for component callback +---@param self druid.hotkey @{Hotkey} +---@param keys string[]|hash[]|string|hash that have to be pressed before key pressed to activate +---@param callback_argument any|nil The argument to pass into the callback function +function druid__hotkey.add_hotkey(self, keys, callback_argument) end + +--- The @{Hotkey} constructor +---@param self druid.hotkey @{Hotkey} +---@param keys string[]|string The keys to be pressed for trigger callback. Should contains one key and any modificator keys +---@param callback function The callback function +---@param callback_argument any|nil The argument to pass into the callback function +function druid__hotkey.init(self, keys, callback, callback_argument) end + + +---@class druid.hotkey.style +---@field MODIFICATORS string[] The list of action_id as hotkey modificators +local druid__hotkey__style = {} + + +---@class druid.hover : druid.base_component +---@field on_hover druid.event On hover callback(self, state, hover_instance) +---@field on_mouse_hover druid.event On mouse hover callback(self, state, hover_instance) +local druid__hover = {} + +--- The @{Hover} constructor +---@param self druid.hover @{Hover} +---@param node node Gui node +---@param on_hover_callback function Hover callback +function druid__hover.init(self, node, on_hover_callback) end + +--- Return current hover enabled state +---@param self druid.hover @{Hover} +---@return boolean The hover enabled state +function druid__hover.is_enabled(self) end + +--- Return current hover state. +--- True if touch action was on the node at current time +---@param self druid.hover @{Hover} +---@return boolean The current hovered state +function druid__hover.is_hovered(self) end + +--- Return current hover state. +--- True if nil action_id (usually desktop mouse) was on the node at current time +---@param self druid.hover @{Hover} +---@return boolean The current hovered state +function druid__hover.is_mouse_hovered(self) end + +--- Strict hover click area. +--- Useful for no click events outside stencil node +---@param self druid.hover @{Hover} +---@param zone node Gui node +function druid__hover.set_click_zone(self, zone) end + +--- Set enable state of hover component. +--- If hover is not enabled, it will not generate any hover events +---@param self druid.hover @{Hover} +---@param state boolean|nil The hover enabled state +function druid__hover.set_enabled(self, state) end + +--- Set hover state +---@param self druid.hover @{Hover} +---@param state boolean|nil The hover state +function druid__hover.set_hover(self, state) end + +--- Set mouse hover state +---@param self druid.hover @{Hover} +---@param state boolean|nil The mouse hover state +function druid__hover.set_mouse_hover(self, state) end + + +---@class druid.input : druid.base_component +---@field allowerd_characters string Pattern matching for user input +---@field button druid.button Button component +---@field is_empty boolean Is current input is empty now +---@field is_selected boolean Is current input selected now +---@field keyboard_type number Gui keyboard type for input field +---@field max_length number Max length for input text +---@field on_input_empty druid.event On input field text change to empty string callback(self, input_text) +---@field on_input_full druid.event On input field text change to max length string callback(self, input_text) +---@field on_input_select druid.event On input field select callback(self, button_node) +---@field on_input_text druid.event On input field text change callback(self, input_text) +---@field on_input_unselect druid.event On input field unselect callback(self, input_text) +---@field on_input_wrong druid.event On trying user input with not allowed character callback(self, params, button_instance) +---@field style druid.input.style Component style params. +---@field text druid.text Text component +local druid__input = {} + +--- Return current input field text +---@param self druid.input @{Input} +---@return string The current input field text +function druid__input.get_text(self) end + +--- The @{Input} constructor +---@param self druid.input @{Input} +---@param click_node node Node to enabled input component +---@param text_node node|druid.text Text node what will be changed on user input. You can pass text component instead of text node name @{Text} +---@param keyboard_type number|nil Gui keyboard type for input field +function druid__input.init(self, click_node, text_node, keyboard_type) end + +--- Reset current input selection and return previous value +---@param self druid.input @{Input} +function druid__input.reset_changes(self) end + +--- Select input field. +--- It will show the keyboard and trigger on_select events +---@param self druid.input @{Input} +function druid__input.select(self) end + +--- Set allowed charaters for input field. +--- See: https://defold.com/ref/stable/string/ ex: [%a%d] for alpha and numeric +---@param self druid.input @{Input} +---@param characters string Regulax exp. for validate user input +---@return druid.input Current input instance +function druid__input.set_allowed_characters(self, characters) end + +--- Set maximum length for input field. +--- Pass nil to make input field unliminted (by default) +---@param self druid.input @{Input} +---@param max_length number Maximum length for input text field +---@return druid.input Current input instance +function druid__input.set_max_length(self, max_length) end + +--- Set text for input field +---@param self druid.input @{Input} +---@param input_text string The string to apply for input field +function druid__input.set_text(self, input_text) end + +--- Remove selection from input. +--- It will hide the keyboard and trigger on_unselect events +---@param self druid.input @{Input} +function druid__input.unselect(self) end + + +---@class druid.input.style +---@field IS_LONGTAP_ERASE boolean Is long tap will erase current input data +---@field IS_UNSELECT_ON_RESELECT boolean If true, call unselect on select selected input +---@field MASK_DEFAULT_CHAR string Default character mask for password input +---@field NO_CONSUME_INPUT_WHILE_SELECTED boolean If true, will not consume input while input is selected. It's allow to interact with other components while input is selected (text input still captured) +---@field button_style table Custom button style for input node +---@field on_input_wrong function (self, button_node) Callback on wrong user input +---@field on_select function (self, button_node) Callback on input field selecting +---@field on_unselect function (self, button_node) Callback on input field unselecting +local druid__input__style = {} + + +---@class druid.lang_text : druid.base_component +---@field node node Text node +---@field on_change druid.event On change text callback +---@field text druid.text The text component +local druid__lang_text = {} + +--- Format string with new text params on localized text +---@param self druid.lang_text @{LangText} +---@param a string|nil Optional param to string.format +---@param b string|nil Optional param to string.format +---@param c string|nil Optional param to string.format +---@param d string|nil Optional param to string.format +---@param e string|nil Optional param to string.format +---@param f string|nil Optional param to string.format +---@param g string|nil Optional param to string.format +---@return druid.lang_text Current instance +function druid__lang_text.format(self, a, b, c, d, e, f, g) end + +--- The @{LangText} constructor +---@param self druid.lang_text @{LangText} +---@param node string|node The node_id or gui.get_node(node_id) +---@param locale_id string Default locale id or text from node as default +---@param adjust_type string Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference +function druid__lang_text.init(self, node, locale_id, adjust_type) end + +--- Setup raw text to lang_text component +---@param self druid.lang_text @{LangText} +---@param text string Text for text node +---@return druid.lang_text Current instance +function druid__lang_text.set_to(self, text) end + +--- Translate the text by locale_id +---@param self druid.lang_text @{LangText} +---@param locale_id string Locale id +---@param a string|nil Optional param to string.format +---@param b string|nil Optional param to string.format +---@param c string|nil Optional param to string.format +---@param d string|nil Optional param to string.format +---@param e string|nil Optional param to string.format +---@param f string|nil Optional param to string.format +---@param g string|nil Optional param to string.format +---@return druid.lang_text Current instance +function druid__lang_text.translate(self, locale_id, a, b, c, d, e, f, g) end + + +---@class druid.layout : druid.base_component +---@field mode string Current layout mode +---@field node node Layout node +---@field on_size_changed druid.event On window resize callback(self, new_size) +local druid__layout = {} + +--- Set node for layout node to fit inside it. +--- Pass nil to reset +---@param self druid.layout @{Layout} +---@param node node|nil +---@return druid.layout @{Layout} +function druid__layout.fit_into_node(self, node) end + +--- Set size for layout node to fit inside it +---@param self druid.layout @{Layout} +---@param target_size vector3 +---@return druid.layout @{Layout} +function druid__layout.fit_into_size(self, target_size) end + +--- Set current size for layout node to fit inside it +---@param self druid.layout @{Layout} +---@return druid.layout @{Layout} +function druid__layout.fit_into_window(self) end + +--- The @{Layout} constructor +---@param self druid.layout @{Layout} +---@param node node Gui node +---@param mode string The layout mode (from const.LAYOUT_MODE) +---@param on_size_changed_callback function|nil The callback on window resize +function druid__layout.init(self, node, mode, on_size_changed_callback) end + +--- Set max gui upscale for FIT adjust mode (or side). +--- It happens on bigger render gui screen +---@param self druid.layout @{Layout} +---@param max_gui_upscale number +---@return druid.layout @{Layout} +function druid__layout.set_max_gui_upscale(self, max_gui_upscale) end + +--- Set maximum size of layout node +---@param self druid.layout @{Layout} +---@param max_size vector3 +---@return druid.layout @{Layout} +function druid__layout.set_max_size(self, max_size) end + +--- Set minimal size of layout node +---@param self druid.layout @{Layout} +---@param min_size vector3 +---@return druid.layout @{Layout} +function druid__layout.set_min_size(self, min_size) end + +--- Set new origin position of layout node. +--- You should apply this on node movement +---@param self druid.layout @{Layout} +---@param new_origin_position vector3 +---@return druid.layout @{Layout} +function druid__layout.set_origin_position(self, new_origin_position) end + +--- Set new origin size of layout node. +--- You should apply this on node manual size change +---@param self druid.layout @{Layout} +---@param new_origin_size vector3 +---@return druid.layout @{Layout} +function druid__layout.set_origin_size(self, new_origin_size) end + + +---@class druid.pin_knob : druid.base_component +---@field druid druid_instance The component druid instance +---@field is_drag boolean Is currently under user control +---@field node node The pin node +local druid__pin_knob = {} + +--- The @{PinKnob} constructor +---@param self druid.pin_knob @{PinKnob} +---@param callback function Callback(self, value) on value changed +---@param template string The template string name +---@param nodes table Nodes table from gui.clone_tree +function druid__pin_knob.init(self, callback, template, nodes) end + +--- Set current and min/max angles for component +---@param self druid.pin_knob @{PinKnob} +---@param cur_value number The new value for pin knob +---@param min number The minimum value for pin knob +---@param max number The maximum value for pin knob +---@return druid.pin_knob @{PinKnob} +function druid__pin_knob.set_angle(self, cur_value, min, max) end + +--- Set current and min/max angles for component +---@param self druid.pin_knob @{PinKnob} +---@param value number The spin speed multiplier +---@return druid.pin_knob @{PinKnob} +function druid__pin_knob.set_friction(self, value) end + + +---@class druid.progress : druid.base_component +---@field key string The progress bar direction. +---@field max_size number Maximum size of progress bar +---@field node node Progress bar fill node +---@field on_change druid.event On progress bar change callback(self, new_value) +---@field scale vector3 Current progress bar scale +---@field size vector3 Current progress bar size +---@field slice vector4 Progress bar slice9 settings +---@field style druid.progress.style Component style params. +local druid__progress = {} + +--- Empty a progress bar +---@param self druid.progress @{Progress} +function druid__progress.empty(self) end + +--- Fill a progress bar and stop progress animation +---@param self druid.progress @{Progress} +function druid__progress.fill(self) end + +--- Return current progress bar value +---@param self druid.progress @{Progress} +function druid__progress.get(self) end + +--- The @{Progress} constructor +---@param self druid.progress @{Progress} +---@param node string|node Node name or GUI Node itself. +---@param key string Progress bar direction: const.SIDE.X or const.SIDE.Y +---@param init_value number Initial value of progress bar +function druid__progress.init(self, node, key, init_value) end + +--- Set progress bar max node size +---@param self druid.progress @{Progress} +---@param max_size vector3 The new node maximum (full) size +---@return druid.progress @{Progress} +function druid__progress.set_max_size(self, max_size) end + +--- Set points on progress bar to fire the callback +---@param self druid.progress @{Progress} +---@param steps number[] Array of progress bar values +---@param callback function Callback on intersect step value +function druid__progress.set_steps(self, steps, callback) end + +--- Instant fill progress bar to value +---@param self druid.progress @{Progress} +---@param to number Progress bar value, from 0 to 1 +function druid__progress.set_to(self, to) end + +--- Start animation of a progress bar +---@param self druid.progress @{Progress} +---@param to number value between 0..1 +---@param callback function|nil Callback on animation ends +function druid__progress.to(self, to, callback) end + + +---@class druid.progress.style +---@field MIN_DELTA number Minimum step to fill progress bar +---@field SPEED number Progress bas fill rate. More -> faster +local druid__progress__style = {} + + +---@class druid.radio_group : druid.base_component +---@field checkboxes druid.checkbox[] Array of checkbox components +---@field on_radio_click druid.event On any checkbox click +local druid__radio_group = {} + +--- Return radio group state +---@param self druid.radio_group @{RadioGroup} +---@return number Index in radio group +function druid__radio_group.get_state(self) end + +--- The @{RadioGroup} constructor +---@param self druid.radio_group @{RadioGroup} +---@param nodes node[] Array of gui node +---@param callback function Radio callback +---@param click_nodes node[] Array of trigger nodes, by default equals to nodes +function druid__radio_group.init(self, nodes, callback, click_nodes) end + +--- Set radio group state +---@param self druid.radio_group @{RadioGroup} +---@param index number Index in radio group +---@param is_instant boolean|nil If is instant state change +function druid__radio_group.set_state(self, index, is_instant) end + + +---@class druid.rich_input : druid.input +---@field cursor node On input field text change to empty string callback(self, input_text) +---@field druid druid_instance The component druid instance +---@field input druid.input On input field text change callback(self, input_text) +---@field placeholder druid.text On input field text change to max length string callback(self, input_text) +local druid__rich_input = {} + +--- The @{RichInput} constructor +---@param self druid.rich_input @{RichInput} +---@param template string The template string name +---@param nodes table Nodes table from gui.clone_tree +function druid__rich_input.init(self, template, nodes) end + +--- Set placeholder text +---@param self druid.rich_input @{RichInput} +---@param placeholder_text string The placeholder text +function druid__rich_input.set_placeholder(self, placeholder_text) end + + +---@class druid.rich_text : druid.base_component +---@field druid druid_instance The component druid instance +---@field style druid.rich_text.style Component style params. +local druid__rich_text = {} + +--- Clear all created words. +function druid__rich_text.clear() end + +--- Get current line metrics +---@return druid.rich_text.lines_metrics +function druid__rich_text.get_line_metric() end + +--- Get all current words. +---@return table druid.rich_text.word[] +function druid__rich_text.get_words() end + +--- The @{RichText} constructor +---@param self druid.rich_text @{RichText} +---@param template string The Rich Text template name +---@param nodes table The node table, if prefab was copied by gui.clone_tree() +function druid__rich_text.init(self, template, nodes) end + +--- Set text for Rich Text +---@param self druid.rich_text @{RichText} +---@param text string The text to set +---@return druid.rich_text.word[] words +---@return druid.rich_text.lines_metrics line_metrics +function druid__rich_text.set_text(self, text) end + +--- Get all words, which has a passed tag. +---@param tag string +---@return druid.rich_text.word[] words +function druid__rich_text.tagged(tag) end + + +---@class druid.rich_text.style +---@field ADJUST_SCALE_DELTA number Scale step on each height adjust step +---@field ADJUST_STEPS number Amount steps of attemps text adjust by height +---@field COLORS table Rich Text color aliases +local druid__rich_text__style = {} + + +---@class druid.scroll : druid.base_component +---@field available_pos vector4 Available position for content node: (min_x, max_y, max_x, min_y) +---@field available_size vector3 Size of available positions: (width, height, 0) +---@field content_node node Scroll content node +---@field drag druid.drag Drag Druid component +---@field inertion vector3 Current inert speed +---@field is_animate boolean Flag, if scroll now animating by gui.animate +---@field on_point_scroll druid.event On scroll_to_index function callback(self, index, point) +---@field on_scroll druid.event On scroll move callback(self, position) +---@field on_scroll_to druid.event On scroll_to function callback(self, target, is_instant) +---@field position vector3 Current scroll posisition +---@field selected number Current index of points of interests +---@field style druid.scroll.style Component style params. +---@field target_position vector3 Current scroll target position +---@field view_node node Scroll view node +local druid__scroll = {} + +--- Bind the grid component (Static or Dynamic) to recalculate scroll size on grid changes +---@param self druid.scroll @{Scroll} +---@param grid druid.static_grid|druid.dynamic_grid Druid grid component +---@return druid.scroll Current scroll instance +function druid__scroll.bind_grid(self, grid) end + +--- Return current scroll progress status. +--- Values will be in [0..1] interval +---@param self druid.scroll @{Scroll} +---@return vector3 New vector with scroll progress values +function druid__scroll.get_percent(self) end + +--- Return vector of scroll size with width and height. +---@param self druid.scroll @{Scroll} +---@return vector3 Available scroll size +function druid__scroll.get_scroll_size(self) end + +--- The @{Scroll} constructor +---@param self druid.scroll @{Scroll} +---@param view_node string|node GUI view scroll node +---@param content_node string|node GUI content scroll node +function druid__scroll.init(self, view_node, content_node) end + +--- Return if scroll have inertion. +---@param self druid.scroll @{Scroll} +---@return boolean @If scroll have inertion +function druid__scroll.is_inert(self) end + +--- Check node if it visible now on scroll. +--- Extra border is not affected. Return true for elements in extra scroll zone +---@param self druid.scroll @{Scroll} +---@param node node The node to check +---@return boolean True if node in visible scroll area +function druid__scroll.is_node_in_view(self, node) end + +--- Start scroll to target point. +---@param self druid.scroll @{Scroll} +---@param point vector3 Target point +---@param is_instant boolean|nil Instant scroll flag +function druid__scroll.scroll_to(self, point, is_instant) end + +--- Scroll to item in scroll by point index. +---@param self druid.scroll @{Scroll} +---@param index number Point index +---@param skip_cb boolean|nil If true, skip the point callback +function druid__scroll.scroll_to_index(self, index, skip_cb) end + +--- Start scroll to target scroll percent +---@param self druid.scroll @{Scroll} +---@param percent vector3 target percent +---@param is_instant boolean|nil instant scroll flag +function druid__scroll.scroll_to_percent(self, percent, is_instant) end + +--- Strict drag scroll area. +--- Useful for restrict events outside stencil node +---@param self druid.drag +---@param node node Gui node +function druid__scroll.set_click_zone(self, node) end + +--- Set extra size for scroll stretching. +--- Set 0 to disable stretching effect +---@param self druid.scroll @{Scroll} +---@param stretch_size number|nil Size in pixels of additional scroll area +---@return druid.scroll Current scroll instance +function druid__scroll.set_extra_stretch_size(self, stretch_size) end + +--- Lock or unlock horizontal scroll +---@param self druid.scroll @{Scroll} +---@param state boolean|nil True, if horizontal scroll is enabled +---@return druid.scroll Current scroll instance +function druid__scroll.set_horizontal_scroll(self, state) end + +--- Enable or disable scroll inert. +--- If disabled, scroll through points (if exist) If no points, just simple drag without inertion +---@param self druid.scroll @{Scroll} +---@param state boolean|nil Inert scroll state +---@return druid.scroll Current scroll instance +function druid__scroll.set_inert(self, state) end + +--- Set points of interest. +--- Scroll will always centered on closer points +---@param self druid.scroll @{Scroll} +---@param points table Array of vector3 points +---@return druid.scroll Current scroll instance +function druid__scroll.set_points(self, points) end + +--- Set scroll content size. +--- It will change content gui node size +---@param self druid.scroll @{Scroll} +---@param size vector3 The new size for content node +---@param offset vector3 Offset value to set, where content is starts +---@return druid.scroll Current scroll instance +function druid__scroll.set_size(self, size, offset) end + +--- Lock or unlock vertical scroll +---@param self druid.scroll @{Scroll} +---@param state boolean|nil True, if vertical scroll is enabled +---@return druid.scroll Current scroll instance +function druid__scroll.set_vertical_scroll(self, state) end + + +---@class druid.scroll.style +---@field ANIM_SPEED number Scroll gui.animation speed for scroll_to function +---@field BACK_SPEED number Scroll back returning lerp speed +---@field EXTRA_STRETCH_SIZE number extra size in pixels outside of scroll (stretch effect) +---@field FRICT number Multiplier for free inertion +---@field FRICT_HOLD number Multiplier for inertion, while touching +---@field INERT_SPEED number Multiplier for inertion speed +---@field INERT_THRESHOLD number Scroll speed to stop inertion +---@field POINTS_DEADZONE number Speed to check points of interests in no_inertion mode +---@field SMALL_CONTENT_SCROLL boolean If true, content node with size less than view node size can be scrolled +---@field WHEEL_SCROLL_BY_INERTION boolean If true, wheel will add inertion to scroll. Direct set position otherwise. +---@field WHEEL_SCROLL_INVERTED boolean If true, invert direction for touchpad and mouse wheel scroll +---@field WHEEL_SCROLL_SPEED boolean The scroll speed via mouse wheel scroll or touchpad. Set to 0 to disable wheel scrolling +local druid__scroll__style = {} + + +---@class druid.slider : druid.base_component +---@field dist number Length between start and end position +---@field end_pos vector3 End pin node position +---@field is_drag boolean Current drag state +---@field node node Slider pin node +---@field on_change_value druid.event On change value callback(self, value) +---@field pos vector3 Current pin node position +---@field start_pos vector3 Start pin node position +---@field target_pos vector3 Targer pin node position +---@field value number Current slider value +local druid__slider = {} + +--- The @{Slider} constructor +---@param self druid.slider @{Slider} +---@param node node Gui pin node +---@param end_pos vector3 The end position of slider +---@param callback function|nil On slider change callback +function druid__slider.init(self, node, end_pos, callback) end + +--- Set value for slider +---@param self druid.slider @{Slider} +---@param value number Value from 0 to 1 +---@param is_silent boolean|nil Don't trigger event if true +function druid__slider.set(self, value, is_silent) end + +--- Set input zone for slider. +--- User can touch any place of node, pin instantly will move at this position and node drag will start. This function require the Defold version 1.3.0+ +---@param self druid.slider @{Slider} +---@param input_node node +---@return druid.slider @{Slider} +function druid__slider.set_input_node(self, input_node) end + +--- Set slider steps. +--- Pin node will apply closest step position +---@param self druid.slider @{Slider} +---@param steps number[] Array of steps +---@return druid.slider @{Slider} +function druid__slider.set_steps(self, steps) end + + +---@class druid.static_grid : druid.base_component +---@field anchor vector3 Item anchor [0..1] +---@field border vector4 The size of item content +---@field first_index number The first index of node in grid +---@field last_index number The last index of node in grid +---@field node_size vector3 Item size +---@field nodes node[] List of all grid nodes +---@field on_add_item druid.event On item add callback(self, node, index) +---@field on_change_items druid.event On item add, remove or change in_row callback(self, index|nil) +---@field on_clear druid.event On grid clear callback(self) +---@field on_remove_item druid.event On item remove callback(self, index) +---@field on_update_positions druid.event On update item positions callback(self) +---@field parent node Parent gui node +---@field pivot vector3 Item pivot [-0.5..0.5] +---@field style druid.static_grid.style Component style params. +local druid__static_grid = {} + +--- Add new item to the grid +---@param self druid.static_grid @{StaticGrid} +---@param item node GUI node +---@param index number|nil The item position. By default add as last item +---@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT +---@param is_instant boolean|nil If true, update node positions instantly +function druid__static_grid.add(self, item, index, shift_policy, is_instant) end + +--- Clear grid nodes array. +--- GUI nodes will be not deleted! If you want to delete GUI nodes, use static_grid.nodes array before grid:clear +---@param self druid.static_grid @{StaticGrid} +---@return druid.static_grid Current grid instance +function druid__static_grid.clear(self) end + +--- Return array of all node positions +---@param self druid.static_grid @{StaticGrid} +---@return vector3[] All grid node positions +function druid__static_grid.get_all_pos(self) end + +--- Return grid content borders +---@param self druid.static_grid @{StaticGrid} +---@return vector3 The grid content borders +function druid__static_grid.get_borders(self) end + +--- Return index for grid pos +---@param self druid.static_grid @{StaticGrid} +---@param pos vector3 The node position in the grid +---@return number The node index +function druid__static_grid.get_index(self, pos) end + +--- Return grid index by node +---@param self druid.static_grid @{StaticGrid} +---@param node node The gui node in the grid +---@return number The node index +function druid__static_grid.get_index_by_node(self, node) end + +--- Return StaticGrid offset, where StaticGrid content starts. +---@param self druid.static_grid @{StaticGrid} The StaticGrid instance +---@return vector3 The StaticGrid offset +function druid__static_grid.get_offset(self) end + +--- Return pos for grid node index +---@param self druid.static_grid @{StaticGrid} +---@param index number The grid element index +---@return vector3 @Node position +function druid__static_grid.get_pos(self, index) end + +--- Return grid content size +---@param self druid.static_grid @{StaticGrid} +---@return vector3 The grid content size +function druid__static_grid.get_size(self) end + +--- The @{StaticGrid} constructor +---@param self druid.static_grid @{StaticGrid} +---@param parent string|node The GUI Node container, where grid's items will be placed +---@param element node Element prefab. Need to get it size +---@param in_row number How many nodes in row can be placed +function druid__static_grid.init(self, parent, element, in_row) end + +--- Remove the item from the grid. +--- Note that gui node will be not deleted +---@param self druid.static_grid @{StaticGrid} +---@param index number The grid node index to remove +---@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT +---@param is_instant boolean|nil If true, update node positions instantly +---@return node The deleted gui node from grid +function druid__static_grid.remove(self, index, shift_policy, is_instant) end + +--- Set grid anchor. +--- Default anchor is equal to anchor of grid parent node +---@param self druid.static_grid @{StaticGrid} +---@param anchor vector3 Anchor +function druid__static_grid.set_anchor(self, anchor) end + +--- Set new in_row elements for grid +---@param self druid.static_grid @{StaticGrid} +---@param in_row number The new in_row value +---@return druid.static_grid Current grid instance +function druid__static_grid.set_in_row(self, in_row) end + +--- Change set position function for grid nodes. +--- It will call on update poses on grid elements. Default: gui.set_position +---@param self druid.static_grid @{StaticGrid} +---@param callback function Function on node set position +---@return druid.static_grid Current grid instance +function druid__static_grid.set_position_function(self, callback) end + + +---@class druid.static_grid.style +---@field IS_ALIGN_LAST_ROW boolean If true, always align last row of the grid as grid pivot sets +---@field IS_DYNAMIC_NODE_POSES boolean If true, always center grid content as grid pivot sets +local druid__static_grid__style = {} + + +---@class druid.swipe : druid.base_component +---@field click_zone node|nil Restriction zone +---@field node node Swipe node +---@field on_swipe druid.event Trigger on swipe event(self, swipe_side, dist, delta_time) +---@field style druid.swipe.style Component style params. +local druid__swipe = {} + +--- The @{Swipe} constructor +---@param self druid.swipe @{Swipe} +---@param node node Gui node +---@param on_swipe_callback function Swipe callback for on_swipe_end event +function druid__swipe.init(self, node, on_swipe_callback) end + +--- Strict swipe click area. +--- Useful for restrict events outside stencil node +---@param self druid.swipe @{Swipe} +---@param zone node Gui node +function druid__swipe.set_click_zone(self, zone) end + + +---@class druid.swipe.style +---@field SWIPE_THRESHOLD number Minimum distance for swipe trigger +---@field SWIPE_TIME number Maximum time for swipe trigger +---@field SWIPE_TRIGGER_ON_MOVE boolean If true, trigger on swipe moving, not only release action +local druid__swipe__style = {} + + +---@class druid.text : druid.base_component +---@field adjust_type number Current text size adjust settings +---@field color vector3 Current text color +---@field node node Text node +---@field node_id hash The node id of text node +---@field on_set_pivot druid.event On change pivot callback(self, pivot) +---@field on_set_text druid.event On set text callback(self, text) +---@field on_update_text_scale druid.event On adjust text size callback(self, new_scale, text_metrics) +---@field pos vector3 Current text position +---@field scale vector3 Current text node scale +---@field start_scale vector3 Initial text node scale +---@field start_size vector3 Initial text node size +---@field style druid.text.style Component style params. +---@field text_area vector3 Current text node available are +local druid__text = {} + +--- Return current text adjust type +---@param self unknown +---@param adjust_type unknown +---@return number The current text adjust type +function druid__text.get_text_adjust(self, adjust_type) end + +--- Calculate text width with font with respect to trailing space +---@param self druid.text @{Text} +---@param text string|nil +---@return number Width +---@return number Height +function druid__text.get_text_size(self, text) end + +--- The @{Text} constructor +---@param self druid.text @{Text} +---@param node string|node Node name or GUI Text Node itself +---@param value string|nil Initial text. Default value is node text from GUI scene. +---@param adjust_type string Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference +function druid__text.init(self, node, value, adjust_type) end + +--- Return true, if text with line break +---@param self druid.text @{Text} +---@return boolean Is text node with line break +function druid__text.is_multiline(self) end + +--- Set alpha +---@param self druid.text @{Text} +---@param alpha number Alpha for node +---@return druid.text Current text instance +function druid__text.set_alpha(self, alpha) end + +--- Set color +---@param self druid.text @{Text} +---@param color vector4 Color for node +---@return druid.text Current text instance +function druid__text.set_color(self, color) end + +--- Set minimal scale for DOWNSCALE_LIMITED or SCALE_THEN_SCROLL adjust types +---@param self druid.text @{Text} +---@param minimal_scale number If pass nil - not use minimal scale +---@return druid.text Current text instance +function druid__text.set_minimal_scale(self, minimal_scale) end + +--- Set text pivot. +--- Text will re-anchor inside text area +---@param self druid.text @{Text} +---@param pivot number The gui.PIVOT_* constant +---@return druid.text Current text instance +function druid__text.set_pivot(self, pivot) end + +--- Set scale +---@param self druid.text @{Text} +---@param scale vector3 Scale for node +---@return druid.text Current text instance +function druid__text.set_scale(self, scale) end + +--- Set text adjust, refresh the current text visuals, if needed +---@param self druid.text @{Text} +---@param adjust_type number|nil See const.TEXT_ADJUST. If pass nil - use current adjust type +---@param minimal_scale number|nil If pass nil - not use minimal scale +---@return druid.text Current text instance +function druid__text.set_text_adjust(self, adjust_type, minimal_scale) end + +--- Set text to text field +---@param self druid.text @{Text} +---@param set_to string Text for node +---@return druid.text Current text instance +function druid__text.set_to(self, set_to) end + + +---@class druid.text.style +---@field DEFAULT_ADJUST string The default adjust type for any text component +---@field TRIM_POSTFIX string The postfix for TRIM adjust type +local druid__text__style = {} + + +---@class druid.timer : druid.base_component +---@field from number Initial timer value +---@field node node Trigger node +---@field on_set_enabled druid.event On timer change enabled state callback(self, is_enabled) +---@field on_tick druid.event On timer tick. +---@field on_timer_end druid.event On timer end callback +---@field target number Target timer value +---@field value number Current timer value +local druid__timer = {} + +--- The @{Timer} constructor +---@param self druid.timer @{Timer} +---@param node node Gui text node +---@param seconds_from number Start timer value in seconds +---@param seconds_to number|nil End timer value in seconds +---@param callback function|nil Function on timer end +function druid__timer.init(self, node, seconds_from, seconds_to, callback) end + +--- Set time interval +---@param self druid.timer @{Timer} +---@param from number Start time in seconds +---@param to number Target time in seconds +function druid__timer.set_interval(self, from, to) end + +--- Called when update +---@param self druid.timer @{Timer} +---@param is_on boolean|nil Timer enable state +function druid__timer.set_state(self, is_on) end + +--- Set text to text field +---@param self druid.timer @{Timer} +---@param set_to number Value in seconds +function druid__timer.set_to(self, set_to) end + + +---@class druid_instance +local druid_instance = {} + +--- Call this in gui_script final function. +---@param self druid_instance +function druid_instance.final(self) end + +--- Create new component. +---@param self druid_instance +---@param component druid.base_component Component module +---@param ... any Other component params to pass it to component:init function +---@return druid.base_component Component instance +function druid_instance.new(self, component, ...) end + +--- Create @{BackHandler} component +---@param self druid_instance +---@param callback function|nil @The callback(self, custom_args) to call on back event +---@param params any|nil Callback argument +---@return druid.back_handler @{BackHandler} component +function druid_instance.new_back_handler(self, callback, params) end + +--- Create @{Blocker} component +---@param self druid_instance +---@param node string|node The node_id or gui.get_node(node_id) +---@return druid.blocker @{Blocker} component +function druid_instance.new_blocker(self, node) end + +--- Create @{Button} component +---@param self druid_instance +---@param node string|node The node_id or gui.get_node(node_id) +---@param callback function|nil Button callback +---@param params table|nil Button callback params +---@param anim_node node|nil Button anim node (node, if not provided) +---@return druid.button @{Button} component +function druid_instance.new_button(self, node, callback, params, anim_node) end + +--- Create @{Checkbox} component +---@param self druid_instance +---@param node string|node The_node id or gui.get_node(node_id). +---@param callback function|nil Checkbox callback +---@param click_node node|nil Trigger node, Default: node +---@param initial_state boolean|nil The initial state of checkbox, Default: false +---@return druid.checkbox @{Checkbox} component +function druid_instance.new_checkbox(self, node, callback, click_node, initial_state) end + +--- Create @{CheckboxGroup} component +---@param self druid_instance +---@param nodes node[] Array of gui node +---@param callback function Checkbox callback +---@param click_nodes node[] Array of trigger nodes, by default equals to nodes +---@return druid.checkbox_group @{CheckboxGroup} component +function druid_instance.new_checkbox_group(self, nodes, callback, click_nodes) end + +--- Create @{DataList} component +---@param self druid_instance +---@param druid_scroll druid.scroll The Scroll instance for Data List component +---@param druid_grid druid.static_grid|druid.dynamic_grid The @{StaticGrid} or @{DynamicGrid} instance for Data List component +---@param create_function function The create function callback(self, data, index, data_list). Function should return (node, [component]) +---@return druid.data_list @{DataList} component +function druid_instance.new_data_list(self, druid_scroll, druid_grid, create_function) end + +--- Create @{Drag} component +---@param self druid_instance +---@param node string|node The node_id or gui.get_node(node_id). Will used as user input node. +---@param on_drag_callback function|nil Callback for on_drag_event(self, dx, dy) +---@return druid.drag @{Drag} component +function druid_instance.new_drag(self, node, on_drag_callback) end + +--- Create @{DynamicGrid} component +---@param self druid_instance +---@param parent_node string|node The node_id or gui.get_node(node_id). Parent of all Grid items. +---@return druid.dynamic_grid @{DynamicGrid} component +function druid_instance.new_dynamic_grid(self, parent_node) end + +--- Create @{Hotkey} component +---@param self druid_instance +---@param keys_array string|string[] Keys for trigger action. Should contains one action key and any amount of modificator keys +---@param callback function The callback function +---@param callback_argument any|nil The argument to pass into the callback function +---@return druid.hotkey @{Hotkey} component +function druid_instance.new_hotkey(self, keys_array, callback, callback_argument) end + +--- Create @{Hover} component +---@param self druid_instance +---@param node string|node The node_id or gui.get_node(node_id) +---@param on_hover_callback function|nil Hover callback +---@return druid.hover @{Hover} component +function druid_instance.new_hover(self, node, on_hover_callback) end + +--- Create @{Input} component +---@param self druid_instance +---@param click_node string|node Button node to enabled input component +---@param text_node string|node Text node what will be changed on user input +---@param keyboard_type number|nil Gui keyboard type for input field +---@return druid.input @{Input} component +function druid_instance.new_input(self, click_node, text_node, keyboard_type) end + +--- Create @{LangText} component +---@param self druid_instance +---@param node string|node The_node id or gui.get_node(node_id) +---@param locale_id string|nil Default locale id or text from node as default +---@param adjust_type string|nil Adjust type for text node. Default: const.TEXT_ADJUST.DOWNSCALE +---@return druid.lang_text @{LangText} component +function druid_instance.new_lang_text(self, node, locale_id, adjust_type) end + +--- Create @{Layout} component +---@param self druid_instance +---@param node string|node The_node id or gui.get_node(node_id). +---@param mode string The layout mode +---@return druid.layout @{Layout} component +function druid_instance.new_layout(self, node, mode) end + +--- Create @{Progress} component +---@param self druid_instance +---@param node string|node Progress bar fill node or node name +---@param key string Progress bar direction: const.SIDE.X or const.SIDE.Y +---@param init_value number|nil Initial value of progress bar. Default: 1 +---@return druid.progress @{Progress} component +function druid_instance.new_progress(self, node, key, init_value) end + +--- Create @{RadioGroup} component +---@param self druid_instance +---@param nodes node[] Array of gui node +---@param callback function Radio callback +---@param click_nodes node[] Array of trigger nodes, by default equals to nodes +---@return druid.radio_group @{RadioGroup} component +function druid_instance.new_radio_group(self, nodes, callback, click_nodes) end + +--- Create @{RichText} component. +--- As a template please check rich_text.gui layout. +---@param self druid_instance +---@param template string|nil Template name if used +---@param nodes table|nil Nodes table from gui.clone_tree +---@return druid.rich_text @{RichText} component +function druid_instance.new_rich_text(self, template, nodes) end + +--- Create @{Scroll} component +---@param self druid_instance +---@param view_node string|node The node_id or gui.get_node(node_id). Will used as user input node. +---@param content_node string|node The node_id or gui.get_node(node_id). Will used as scrollable node inside view_node. +---@return druid.scroll @{Scroll} component +function druid_instance.new_scroll(self, view_node, content_node) end + +--- Create @{Slider} component +---@param self druid_instance +---@param pin_node string|node The_node id or gui.get_node(node_id). +---@param end_pos vector3 The end position of slider +---@param callback function|nil On slider change callback +---@return druid.slider @{Slider} component +function druid_instance.new_slider(self, pin_node, end_pos, callback) end + +--- Create @{StaticGrid} component +---@param self druid_instance +---@param parent_node string|node The node_id or gui.get_node(node_id). Parent of all Grid items. +---@param item string|node Item prefab. Required to get grid's item size. Can be adjusted separately. +---@param in_row number|nil How many nodes in row can be placed +---@return druid.static_grid @{StaticGrid} component +function druid_instance.new_static_grid(self, parent_node, item, in_row) end + +--- Create @{Swipe} component +---@param self druid_instance +---@param node string|node The node_id or gui.get_node(node_id). Will used as user input node. +---@param on_swipe_callback function|nil Swipe callback for on_swipe_end event +---@return druid.swipe @{Swipe} component +function druid_instance.new_swipe(self, node, on_swipe_callback) end + +--- Create @{Text} component +---@param self druid_instance +---@param node string|node The node_id or gui.get_node(node_id) +---@param value string|nil Initial text. Default value is node text from GUI scene. +---@param no_adjust boolean|nil If true, text will be not auto-adjust size +---@return druid.text @{Text} component +function druid_instance.new_text(self, node, value, no_adjust) end + +--- Create @{Timer} component +---@param self druid_instance +---@param node string|node Gui text node +---@param seconds_from number Start timer value in seconds +---@param seconds_to number|nil End timer value in seconds +---@param callback function|nil Function on timer end +---@return druid.timer @{Timer} component +function druid_instance.new_timer(self, node, seconds_from, seconds_to, callback) end + +--- Call this in gui_script on_input function. +--- Used for almost all components +---@param self druid_instance +---@param action_id hash Action_id from on_input +---@param action table Action from on_input +---@return boolean The boolean value is input was consumed +function druid_instance.on_input(self, action_id, action) end + +--- Call this in gui_script on_message function. +--- Used for special actions. See SPECIFIC_UI_MESSAGES table +---@param self druid_instance +---@param message_id hash Message_id from on_message +---@param message table Message from on_message +---@param sender hash Sender from on_message +function druid_instance.on_message(self, message_id, message, sender) end + +--- Remove created component from Druid instance. +--- Component `on_remove` function will be invoked, if exist. +---@param self druid_instance +---@param component druid.base_component Component instance +function druid_instance.remove(self, component) end + +--- Set blacklist components for input processing. +--- If blacklist is not empty and component contains in this list, component will be not processed on input step +---@param self druid_instance @{DruidInstance} +---@param blacklist_components table|druid.base_component The array of component to blacklist +---@return self @{DruidInstance} +function druid_instance.set_blacklist(self, blacklist_components) end + +--- Set whitelist components for input processing. +--- If whitelist is not empty and component not contains in this list, component will be not processed on input step +---@param self druid_instance +---@param whitelist_components table|druid.base_component The array of component to whitelist +---@return self @{DruidInstance} +function druid_instance.set_whitelist(self, whitelist_components) end + +--- Call this in gui_script update function. +--- Used for: scroll, progress, timer components +---@param self druid_instance +---@param dt number Delta time +function druid_instance.update(self, dt) end + + +---@class helper +local helper = {} + +--- Add all elements from source array to the target array +---@param target any[] Array to put elements from source +---@param source any[]|nil The source array to get elements from +---@return any[] The target array +function helper.add_array(target, source) end + +--- Centerate nodes by x position with margin. +--- This functions calculate total width of nodes and set position for each node. The centrate will be around 0 x position. +---@param margin number|nil Offset between nodes +---@param ... unknown Gui nodes +function helper.centrate_nodes(margin, ...) end + +--- Clamp value between min and max +---@param a number Value +---@param min number Min value +---@param max number Max value +---@return number Clamped value +function helper.clamp(a, min, max) end + +--- Check if value is in array and return index of it +---@param t table Array +---@param value unknown Value +---@return number|nil Index of value or nil +function helper.contains(t, value) end + +--- Make a copy table with all nested tables +---@param orig_table table Original table +---@return table Copy of original table +function helper.deepcopy(orig_table) end + +--- Calculate distance between two points +---@param x1 number First point x +---@param y1 number First point y +---@param x2 number Second point x +---@param y2 number Second point y +---@return number Distance +function helper.distance(x1, y1, x2, y2) end + +--- Distance from node position to his borders +---@param node node GUI node +---@param offset vector3|nil Offset from node position. Pass current node position to get non relative border values +---@return vector4 Vector4 with border values (left, top, right, down) +function helper.get_border(node, offset) end + +--- Return closest non inverted clipping parent node for given node +---@param node node GUI node +---@return node|nil The closest stencil node or nil +function helper.get_closest_stencil_node(node) end + +--- Get current GUI scale for each side +---@return number scale_x +---@return number scale_y +function helper.get_gui_scale() end + +--- Get node offset for given GUI pivot. +--- Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top. +---@param pivot number The gui.PIVOT_* constant +---@return vector3 Vector offset with [-0.5..0.5] values +function helper.get_pivot_offset(pivot) end + +--- Get node size adjusted by scale +---@param node node GUI node +---@return vector3 Scaled size +function helper.get_scaled_size(node) end + +--- Get cumulative parent's node scale +---@param node node Gui node +---@param include_passed_node_scale boolean|nil True if add current node scale to result +---@return vector3 The scene node scale +function helper.get_scene_scale(node, include_passed_node_scale) end + +--- Get current screen stretch multiplier for each side +---@return number stretch_x +---@return number stretch_y +function helper.get_screen_aspect_koef() end + +--- Get text metric from GUI node. +---@param text_node node +---@return GUITextMetrics +function helper.get_text_metrics_from_node(text_node) end + +--- Add value to array with shift policy +--- Shift policy can be: left, right, no_shift +---@param array table Array +---@param any unknown Item to insert +---@param index number|nil Index to insert. If nil, item will be inserted at the end of array +---@param shift_policy number|nil The druid_const.SHIFT.* constant +---@return any Inserted item +function helper.insert_with_shift(array, any, index, shift_policy) end + +--- Check if device is native mobile (Android or iOS) +---@return boolean Is mobile +function helper.is_mobile() end + +--- Check if device is HTML5 +---@return boolean Is web +function helper.is_web() end + +--- Lerp between two values +---@param a number First value +---@param b number Second value +---@param t number Lerp amount +---@return number Lerped value +function helper.lerp(a, b, t) end + +--- Remove value from array with shift policy +--- Shift policy can be: left, right, no_shift +---@param array table Array +---@param index number|nil Index to remove. If nil, item will be removed from the end of array +---@param shift_policy number|nil The druid_const.SHIFT.* constant +---@return any Removed item +function helper.remove_with_shift(array, index, shift_policy) end + +--- Round number to specified decimal places +---@param num number Number +---@param num_decimal_places number|nil Decimal places +---@return number Rounded number +function helper.round(num, num_decimal_places) end + +--- Return sign of value (-1, 0, 1) +---@param val number Value +---@return number Sign +function helper.sign(val) end + +--- Move value from current to target value with step amount +---@param current number Current value +---@param target number Target value +---@param step number Step amount +---@return number New value +function helper.step(current, target, step) end + +--- Simple table to one-line string converter +---@param t table +---@return string +function helper.table_to_string(t) end + + +-- Manual Annotations -- + +---@class druid.rich_text.metrics +---@field width number +---@field height number +---@field offset_x number|nil +---@field offset_y number|nil +---@field node_size vector3|nil @For images only + +---@class druid.rich_text.lines_metrics +---@field text_width number +---@field text_height number +---@field lines table + +---@class druid.rich_text.word +---@field node node +---@field relative_scale number +---@field color vector4 +---@field position vector3 +---@field offset vector3 +---@field scale vector3 +---@field size vector3 +---@field metrics druid.rich_text.metrics +---@field pivot number @ The gui.PIVOT_* constant +---@field text string +---@field shadow vector4 +---@field outline vector4 +---@field font string +---@field image druid.rich_text.image +---@field default_animation string +---@field anchor number +---@field br boolean +---@field nobr boolean + +---@class druid.rich_text.image +---@field texture string +---@field anim string +---@field width number +---@field height number + +---@class druid.rich_text.settings +---@field parent node +---@field size number +---@field fonts table +---@field color vector4 +---@field shadow vector4 +---@field outline vector4 +---@field position vector3 +---@field image_pixel_grid_snap boolean +---@field combine_words boolean +---@field default_animation string +---@field node_prefab node +---@field text_prefab node + +---@class GUITextMetrics +---@field width number +---@field height number +---@field max_ascent number +---@field max_descent number diff --git a/druid/base/button.lua b/druid/base/button.lua index 08dc4b9..14550a4 100755 --- a/druid/base/button.lua +++ b/druid/base/button.lua @@ -478,7 +478,7 @@ end -- -- This functions calls automatically if you don't disable it in game.project: druid.no_stencil_check -- @tparam Button self @{Button} --- @tparam node zone Gui node +-- @tparam node|nil zone Gui node -- @treturn Button Current button instance -- @usage -- button:set_click_zone("stencil_node") diff --git a/druid/base/scroll.lua b/druid/base/scroll.lua index 97c6352..1020597 100755 --- a/druid/base/scroll.lua +++ b/druid/base/scroll.lua @@ -359,7 +359,7 @@ end --- Set extra size for scroll stretching. -- Set 0 to disable stretching effect -- @tparam Scroll self @{Scroll} --- @tparam[opt=0] number stretch_size Size in pixels of additional scroll area +-- @tparam number|nil stretch_size Size in pixels of additional scroll area -- @treturn druid.scroll Current scroll instance function Scroll.set_extra_stretch_size(self, stretch_size) self.style.EXTRA_STRETCH_SIZE = stretch_size or 0 diff --git a/druid/base/static_grid.lua b/druid/base/static_grid.lua index 6051635..ee2903e 100644 --- a/druid/base/static_grid.lua +++ b/druid/base/static_grid.lua @@ -213,10 +213,10 @@ end --- Add new item to the grid -- @tparam StaticGrid self @{StaticGrid} --- @tparam node item Gui node +-- @tparam node item GUI node -- @tparam number|nil index The item position. By default add as last item --- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT --- @tparam[opt=false] boolean is_instant If true, update node positions instantly +-- @tparam number|nil shift_policy How shift nodes, if required. Default: const.SHIFT.RIGHT +-- @tparam boolean|nil is_instant If true, update node positions instantly function StaticGrid.add(self, item, index, shift_policy, is_instant) index = index or ((self.last_index or 0) + 1) @@ -239,8 +239,8 @@ end --- Remove the item from the grid. Note that gui node will be not deleted -- @tparam StaticGrid self @{StaticGrid} -- @tparam number index The grid node index to remove --- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT --- @tparam[opt=false] boolean is_instant If true, update node positions instantly +-- @tparam number|nil shift_policy How shift nodes, if required. Default: const.SHIFT.RIGHT +-- @tparam boolean|nil is_instant If true, update node positions instantly -- @treturn node The deleted gui node from grid function StaticGrid.remove(self, index, shift_policy, is_instant) assert(self.nodes[index], "No grid item at given index " .. index) diff --git a/druid/component.lua b/druid/component.lua index 85c8ffc..e9bcd43 100644 --- a/druid/component.lua +++ b/druid/component.lua @@ -347,7 +347,7 @@ end -- by `BaseComponent.create` -- @tparam BaseComponent self @{BaseComponent} -- @tparam string name BaseComponent name --- @tparam[opt=DEFAULT] number input_priority The input priority. The bigger number processed first +-- @tparam number|nil input_priority The input priority. The bigger number processed first -- @local function BaseComponent.initialize(self, name, input_priority) self._component = { @@ -483,7 +483,7 @@ end --- Create new component. It will inheritance from basic Druid component. -- @function BaseComponent.create -- @tparam string name BaseComponent name --- @tparam[opt=DEFAULT] number input_priority The input priority. The bigger number processed first +-- @tparam number|nil input_priority The input priority. The bigger number processed first -- @local function BaseComponent.create(name, input_priority) -- Yea, inheritance here diff --git a/druid/const.lua b/druid/const.lua index 30182c6..c9adc29 100755 --- a/druid/const.lua +++ b/druid/const.lua @@ -7,18 +7,18 @@ local M = {} -M.ACTION_TEXT = hash(sys.get_config("druid.input_text", "text")) -M.ACTION_TOUCH = hash(sys.get_config("druid.input_touch", "touch")) -M.ACTION_MARKED_TEXT = hash(sys.get_config("druid.input_marked_text", "marked_text")) -M.ACTION_ESC = hash(sys.get_config("druid.input_key_esc", "key_esc")) -M.ACTION_BACK = hash(sys.get_config("druid.input_key_back", "key_back")) -M.ACTION_ENTER = hash(sys.get_config("druid.input_key_enter", "key_enter")) -M.ACTION_MULTITOUCH = hash(sys.get_config("druid.input_multitouch", "touch_multi")) -M.ACTION_BACKSPACE = hash(sys.get_config("druid.input_key_backspace", "key_backspace")) -M.ACTION_SCROLL_UP = hash(sys.get_config("druid.input_scroll_up", "mouse_wheel_up")) -M.ACTION_SCROLL_DOWN = hash(sys.get_config("druid.input_scroll_down", "mouse_wheel_down")) +M.ACTION_TEXT = hash(sys.get_config_string("druid.input_text", "text")) +M.ACTION_TOUCH = hash(sys.get_config_string("druid.input_touch", "touch")) +M.ACTION_MARKED_TEXT = hash(sys.get_config_string("druid.input_marked_text", "marked_text")) +M.ACTION_ESC = hash(sys.get_config_string("druid.input_key_esc", "key_esc")) +M.ACTION_BACK = hash(sys.get_config_string("druid.input_key_back", "key_back")) +M.ACTION_ENTER = hash(sys.get_config_string("druid.input_key_enter", "key_enter")) +M.ACTION_MULTITOUCH = hash(sys.get_config_string("druid.input_multitouch", "touch_multi")) +M.ACTION_BACKSPACE = hash(sys.get_config_string("druid.input_key_backspace", "key_backspace")) +M.ACTION_SCROLL_UP = hash(sys.get_config_string("druid.input_scroll_up", "mouse_wheel_up")) +M.ACTION_SCROLL_DOWN = hash(sys.get_config_string("druid.input_scroll_down", "mouse_wheel_down")) -M.IS_STENCIL_CHECK = not (sys.get_config("druid.no_stencil_check") == "1") +M.IS_STENCIL_CHECK = not (sys.get_config_string("druid.no_stencil_check") == "1") M.ON_INPUT = "on_input" diff --git a/druid/extended/lang_text.lua b/druid/extended/lang_text.lua index 95d7b40..6e2a699 100755 --- a/druid/extended/lang_text.lua +++ b/druid/extended/lang_text.lua @@ -23,6 +23,9 @@ --- The text component -- @tfield Text text @{Text} +--- Text node +-- @tfield node node + --- local Event = require("druid.event") diff --git a/druid/extended/timer.lua b/druid/extended/timer.lua index b647add..beb2af5 100644 --- a/druid/extended/timer.lua +++ b/druid/extended/timer.lua @@ -48,7 +48,7 @@ end -- @tparam Timer self @{Timer} -- @tparam node node Gui text node -- @tparam number seconds_from Start timer value in seconds --- @tparam[opt=0] number seconds_to End timer value in seconds +-- @tparam number|nil seconds_to End timer value in seconds -- @tparam function|nil callback Function on timer end function Timer.init(self, node, seconds_from, seconds_to, callback) self.node = self:get_node(node) diff --git a/druid/helper.lua b/druid/helper.lua index 9e6ab97..1838174 100644 --- a/druid/helper.lua +++ b/druid/helper.lua @@ -63,7 +63,7 @@ end -- @function helper.centrate_icon_with_text -- @tparam box|nil icon_node Gui box node -- @tparam text|nil text_node Gui text node --- @tparam[opt=0] number margin Offset between nodes +-- @tparam number|nil margin Offset between nodes -- @local function M.centrate_icon_with_text(icon_node, text_node, margin) return M.centrate_nodes(margin, icon_node, text_node) @@ -75,7 +75,7 @@ end -- This functions calculate total width of nodes and set position for each node. -- The centrate will be around 0 x position. -- @function helper.centrate_nodes --- @tparam[opt=0] number margin Offset between nodes +-- @tparam number|nil margin Offset between nodes -- @param ... Gui nodes function M.centrate_nodes(margin, ...) margin = margin or 0 @@ -200,7 +200,7 @@ end --- Round number to specified decimal places -- @function helper.round -- @tparam number num Number --- @tparam[opt=0] number num_decimal_places Decimal places +-- @tparam number|nil num_decimal_places Decimal places -- @treturn number Rounded number function M.round(num, num_decimal_places) local mult = 10^(num_decimal_places or 0) diff --git a/druid/system/druid_instance.lua b/druid/system/druid_instance.lua index 28786ec..c9cd01e 100755 --- a/druid/system/druid_instance.lua +++ b/druid/system/druid_instance.lua @@ -261,6 +261,7 @@ end -- @tparam DruidInstance self -- @tparam BaseComponent component Component module -- @tparam any ... Other component params to pass it to component:init function +-- @treturn BaseComponent Component instance function DruidInstance.new(self, component, ...) local instance = create(self, component) @@ -559,7 +560,7 @@ end --- Create @{Button} component -- @tparam DruidInstance self -- @tparam string|node node The node_id or gui.get_node(node_id) --- @tparam function callback Button callback +-- @tparam function|nil callback Button callback -- @tparam table|nil params Button callback params -- @tparam node|nil anim_node Button anim node (node, if not provided) -- @treturn Button @{Button} component @@ -579,7 +580,7 @@ end --- Create @{BackHandler} component -- @tparam DruidInstance self --- @tparam function callback @The callback(self, custom_args) to call on back event +-- @tparam function|nil callback @The callback(self, custom_args) to call on back event -- @tparam any|nil params Callback argument -- @treturn BackHandler @{BackHandler} component function DruidInstance.new_back_handler(self, callback, params) @@ -590,7 +591,7 @@ end --- Create @{Hover} component -- @tparam DruidInstance self -- @tparam string|node node The node_id or gui.get_node(node_id) --- @tparam function on_hover_callback Hover callback +-- @tparam function|nil on_hover_callback Hover callback -- @treturn Hover @{Hover} component function DruidInstance.new_hover(self, node, on_hover_callback) return DruidInstance.new(self, hover, node, on_hover_callback) @@ -612,24 +613,24 @@ end -- Deprecated -- @tparam DruidInstance self -- @tparam string|node parent_node The node_id or gui.get_node(node_id). Parent of all Grid items. --- @tparam node element Element prefab. Need to get it size --- @tparam[opt=1] number in_row How many nodes in row can be placed +-- @tparam node item Element prefab. Required to get grid's item size. Can be adjusted separately. +-- @tparam number|nil in_row How many nodes in row can be placed -- @treturn StaticGrid @{StaticGrid} component -- @local -function DruidInstance.new_grid(self, parent_node, element, in_row) +function DruidInstance.new_grid(self, parent_node, item, in_row) helper.deprecated("The druid:new_grid is deprecated. Please use druid:new_static_grid instead") - return DruidInstance.new(self, static_grid, parent_node, element, in_row) + return DruidInstance.new(self, static_grid, parent_node, item, in_row) end --- Create @{StaticGrid} component -- @tparam DruidInstance self -- @tparam string|node parent_node The node_id or gui.get_node(node_id). Parent of all Grid items. --- @tparam node element Element prefab. Need to get it size --- @tparam[opt=1] number in_row How many nodes in row can be placed +-- @tparam string|node item Item prefab. Required to get grid's item size. Can be adjusted separately. +-- @tparam number|nil in_row How many nodes in row can be placed -- @treturn StaticGrid @{StaticGrid} component -function DruidInstance.new_static_grid(self, parent_node, element, in_row) - return DruidInstance.new(self, static_grid, parent_node, element, in_row) +function DruidInstance.new_static_grid(self, parent_node, item, in_row) + return DruidInstance.new(self, static_grid, parent_node, item, in_row) end @@ -646,7 +647,7 @@ end --- Create @{Drag} component -- @tparam DruidInstance self -- @tparam string|node node The node_id or gui.get_node(node_id). Will used as user input node. --- @tparam function on_drag_callback Callback for on_drag_event(self, dx, dy) +-- @tparam function|nil on_drag_callback Callback for on_drag_event(self, dx, dy) -- @treturn Drag @{Drag} component function DruidInstance.new_drag(self, node, on_drag_callback) return DruidInstance.new(self, drag, node, on_drag_callback) @@ -656,7 +657,7 @@ end --- Create @{Swipe} component -- @tparam DruidInstance self -- @tparam string|node node The node_id or gui.get_node(node_id). Will used as user input node. --- @tparam function on_swipe_callback Swipe callback for on_swipe_end event +-- @tparam function|nil on_swipe_callback Swipe callback for on_swipe_end event -- @treturn Swipe @{Swipe} component function DruidInstance.new_swipe(self, node, on_swipe_callback) return helper.require_component_message("swipe") @@ -697,9 +698,9 @@ end --- Create @{Checkbox} component -- @tparam DruidInstance self -- @tparam string|node node The_node id or gui.get_node(node_id). --- @tparam function callback Checkbox callback --- @tparam[opt=node] node click_node Trigger node, by default equals to node --- @tparam[opt=false] boolean initial_state The initial state of checkbox, default - false +-- @tparam function|nil callback Checkbox callback +-- @tparam node|nil click_node Trigger node, Default: node +-- @tparam boolean|nil initial_state The initial state of checkbox, Default: false -- @treturn Checkbox @{Checkbox} component function DruidInstance.new_checkbox(self, node, callback, click_node, initial_state) return helper.require_component_message("checkbox") @@ -754,7 +755,7 @@ end -- @tparam DruidInstance self -- @tparam string|node node Gui text node -- @tparam number seconds_from Start timer value in seconds --- @tparam[opt=0] number seconds_to End timer value in seconds +-- @tparam number|nil seconds_to End timer value in seconds -- @tparam function|nil callback Function on timer end -- @treturn Timer @{Timer} component function DruidInstance.new_timer(self, node, seconds_from, seconds_to, callback) @@ -766,7 +767,7 @@ end -- @tparam DruidInstance self -- @tparam string|node node Progress bar fill node or node name -- @tparam string key Progress bar direction: const.SIDE.X or const.SIDE.Y --- @tparam[opt=1] number init_value Initial value of progress bar +-- @tparam number|nil init_value Initial value of progress bar. Default: 1 -- @treturn Progress @{Progress} component function DruidInstance.new_progress(self, node, key, init_value) return helper.require_component_message("progress") From 24bb39481d991ef4a1290d14222b611af803fa9c Mon Sep 17 00:00:00 2001 From: Insality Date: Tue, 17 Oct 2023 23:18:25 +0300 Subject: [PATCH 04/10] Annotations update [4] --- docs/modules/BaseComponent.html | 2 +- docs/modules/DynamicGrid.html | 24 ++++++++++-------------- docs/modules/RichInput.html | 26 +++++++++++++++++++++++++- druid/annotations.lua | 13 +++++++------ druid/component.lua | 2 +- druid/custom/rich_input/rich_input.lua | 7 ++++++- druid/extended/dynamic_grid.lua | 8 ++++---- 7 files changed, 54 insertions(+), 28 deletions(-) diff --git a/docs/modules/BaseComponent.html b/docs/modules/BaseComponent.html index 52c4c3c..1c81617 100644 --- a/docs/modules/BaseComponent.html +++ b/docs/modules/BaseComponent.html @@ -598,7 +598,7 @@ self:set_nodes(nodes) BaseComponent
  • druid_style - table + table or nil Druid style module
  • diff --git a/docs/modules/DynamicGrid.html b/docs/modules/DynamicGrid.html index 331e65b..2f6677f 100644 --- a/docs/modules/DynamicGrid.html +++ b/docs/modules/DynamicGrid.html @@ -86,7 +86,7 @@
    - + @@ -122,7 +122,7 @@ - + @@ -213,7 +213,7 @@
    - add(self, node, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]) + add(self, node, index, shift_policy, is_instant)
    Add new node to the grid @@ -234,14 +234,12 @@ The node position. By default add as last node
  • shift_policy - number - How shift nodes, if required. See const.SHIFT - (default SHIFT.RIGHT) + number or nil + How shift nodes, if required. Default: const.SHIFT.RIGHT
  • is_instant - boolean + boolean or nil If true, update node positions instantly - (default false)
  • @@ -487,7 +485,7 @@
    - remove(self, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]]) + remove(self, index, shift_policy, is_instant)
    Remove the item from the grid. Note that gui node will be not deleted @@ -504,14 +502,12 @@ The grid node index to remove
  • shift_policy - number - How shift nodes, if required. See const.SHIFT - (default SHIFT.RIGHT) + number or nil + How shift nodes, if required. Default: const.SHIFT.RIGHT
  • is_instant - boolean + boolean or nil If true, update node positions instantly - (default false)
  • diff --git a/docs/modules/RichInput.html b/docs/modules/RichInput.html index c9d71b2..4183c31 100644 --- a/docs/modules/RichInput.html +++ b/docs/modules/RichInput.html @@ -109,6 +109,10 @@
    + + + +
    init(self, node, seconds_from[, seconds_to=0], callback)init(self, node, seconds_from, seconds_to, callback) The Timer constructor
    Return side vector to correct node shifting
    add(self, node, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]])add(self, node, index, shift_policy, is_instant) Add new node to the grid
    The DynamicGrid constructor
    remove(self, index[, shift_policy=SHIFT.RIGHT[, is_instant=false]])remove(self, index, shift_policy, is_instant) Remove the item from the grid.
    placeholder On input field text change to max length string callback(self, input_text)
    rootRoot node

    @@ -162,7 +166,7 @@ RichInput
  • placeholder_text - string + string or nil The placeholder text
  • @@ -255,6 +259,26 @@ +
    +
    + + root +
    +
    + Root node + + +
      +
    • root + node + +
    • +
    + + + + +
    diff --git a/druid/annotations.lua b/druid/annotations.lua index 2ecb74d..5843e13 100644 --- a/druid/annotations.lua +++ b/druid/annotations.lua @@ -137,7 +137,7 @@ function druid__base_component.set_nodes(self, nodes) end --- Set current component style table. --- Invoke `on_style_change` on component, if exist. Component should handle their style changing and store all style params ---@param self druid.base_component @{BaseComponent} ----@param druid_style table Druid style module +---@param druid_style table|nil Druid style module ---@return druid.base_component @{BaseComponent} function druid__base_component.set_style(self, druid_style) end @@ -451,8 +451,8 @@ function druid__dynamic_grid._get_side_vector(self, side, is_forward) end ---@param self druid.dynamic_grid @{DynamicGrid} ---@param node node Gui node ---@param index number|nil The node position. By default add as last node ----@param shift_policy number How shift nodes, if required. See const.SHIFT ----@param is_instant boolean If true, update node positions instantly +---@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT +---@param is_instant boolean|nil If true, update node positions instantly function druid__dynamic_grid.add(self, node, index, shift_policy, is_instant) end --- Clear grid nodes array. @@ -505,8 +505,8 @@ function druid__dynamic_grid.init(self, parent) end --- Note that gui node will be not deleted ---@param self druid.dynamic_grid @{DynamicGrid} ---@param index number The grid node index to remove ----@param shift_policy number How shift nodes, if required. See const.SHIFT ----@param is_instant boolean If true, update node positions instantly +---@param shift_policy number|nil How shift nodes, if required. Default: const.SHIFT.RIGHT +---@param is_instant boolean|nil If true, update node positions instantly ---@return node The deleted gui node from grid function druid__dynamic_grid.remove(self, index, shift_policy, is_instant) end @@ -933,6 +933,7 @@ function druid__radio_group.set_state(self, index, is_instant) end ---@field druid druid_instance The component druid instance ---@field input druid.input On input field text change callback(self, input_text) ---@field placeholder druid.text On input field text change to max length string callback(self, input_text) +---@field root node Root node local druid__rich_input = {} --- The @{RichInput} constructor @@ -943,7 +944,7 @@ function druid__rich_input.init(self, template, nodes) end --- Set placeholder text ---@param self druid.rich_input @{RichInput} ----@param placeholder_text string The placeholder text +---@param placeholder_text string|nil The placeholder text function druid__rich_input.set_placeholder(self, placeholder_text) end diff --git a/druid/component.lua b/druid/component.lua index e9bcd43..ca6f89e 100644 --- a/druid/component.lua +++ b/druid/component.lua @@ -75,7 +75,7 @@ end -- Invoke `on_style_change` on component, if exist. Component should handle -- their style changing and store all style params -- @tparam BaseComponent self @{BaseComponent} --- @tparam table druid_style Druid style module +-- @tparam table|nil druid_style Druid style module -- @treturn BaseComponent @{BaseComponent} function BaseComponent.set_style(self, druid_style) self._meta.style = druid_style or {} diff --git a/druid/custom/rich_input/rich_input.lua b/druid/custom/rich_input/rich_input.lua index e932d7a..9adcc70 100644 --- a/druid/custom/rich_input/rich_input.lua +++ b/druid/custom/rich_input/rich_input.lua @@ -9,6 +9,9 @@ --- The component druid instance -- @tfield DruidInstance druid @{DruidInstance} +--- Root node +-- @tfield node root + --- On input field text change callback(self, input_text) -- @tfield Input input @{Input} @@ -69,6 +72,8 @@ function RichInput.init(self, template, nodes) self:set_template(template) self:set_nodes(nodes) self.druid = self:get_druid() + self.root = self:get_node(SCHEME.ROOT) + self.input = self.druid:new_input(self:get_node(SCHEME.BUTTON), self:get_node(SCHEME.INPUT)) self.cursor = self:get_node(SCHEME.CURSOR) @@ -85,7 +90,7 @@ end --- Set placeholder text -- @tparam RichInput self @{RichInput} --- @tparam string placeholder_text The placeholder text +-- @tparam string|nil placeholder_text The placeholder text function RichInput.set_placeholder(self, placeholder_text) self.placeholder:set_to(placeholder_text) return self diff --git a/druid/extended/dynamic_grid.lua b/druid/extended/dynamic_grid.lua index e1fb56d..3206020 100644 --- a/druid/extended/dynamic_grid.lua +++ b/druid/extended/dynamic_grid.lua @@ -141,8 +141,8 @@ end -- @tparam DynamicGrid self @{DynamicGrid} -- @tparam node node Gui node -- @tparam number|nil index The node position. By default add as last node --- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT --- @tparam[opt=false] boolean is_instant If true, update node positions instantly +-- @tparam number|nil shift_policy How shift nodes, if required. Default: const.SHIFT.RIGHT +-- @tparam boolean|nil is_instant If true, update node positions instantly function DynamicGrid.add(self, node, index, shift_policy, is_instant) shift_policy = shift_policy or const.SHIFT.RIGHT local delta = shift_policy -- -1 or 1 or 0 @@ -183,8 +183,8 @@ end --- Remove the item from the grid. Note that gui node will be not deleted -- @tparam DynamicGrid self @{DynamicGrid} -- @tparam number index The grid node index to remove --- @tparam[opt=SHIFT.RIGHT] number shift_policy How shift nodes, if required. See const.SHIFT --- @tparam[opt=false] boolean is_instant If true, update node positions instantly +-- @tparam number|nil shift_policy How shift nodes, if required. Default: const.SHIFT.RIGHT +-- @tparam boolean|nil is_instant If true, update node positions instantly -- @treturn node The deleted gui node from grid function DynamicGrid.remove(self, index, shift_policy, is_instant) shift_policy = shift_policy or const.SHIFT.RIGHT From 4a16a8bc072dadcdda3e7a8b3c6037c16131eaa0 Mon Sep 17 00:00:00 2001 From: Insality Date: Wed, 18 Oct 2023 10:40:08 +0300 Subject: [PATCH 05/10] Annotations update [5] --- docs/modules/Hotkey.html | 6 +++ docs/modules/RichInput.html | 74 ++++++++++++++++++++++++++ docs/modules/Text.html | 59 ++++++++++++++++++++ druid/annotations.lua | 26 +++++++-- druid/base/blocker.lua | 2 +- druid/base/scroll.lua | 10 ++-- druid/base/text.lua | 16 ++++++ druid/custom/rich_input/rich_input.lua | 22 ++++++++ druid/extended/hotkey.lua | 1 + druid/extended/input.lua | 2 +- 10 files changed, 209 insertions(+), 9 deletions(-) diff --git a/docs/modules/Hotkey.html b/docs/modules/Hotkey.html index d33df50..3cd5a00 100644 --- a/docs/modules/Hotkey.html +++ b/docs/modules/Hotkey.html @@ -149,6 +149,12 @@ +

    Returns:

    +
      + + Hotkey + Current instance +
    diff --git a/docs/modules/RichInput.html b/docs/modules/RichInput.html index 4183c31..c8d62dc 100644 --- a/docs/modules/RichInput.html +++ b/docs/modules/RichInput.html @@ -82,11 +82,19 @@

    Functions

    + + + + + + + + @@ -122,6 +130,33 @@

    Functions

    +
    + + get_text(self) +
    +
    + GSet input field text + + +

    Parameters:

    + + +

    Returns:

    +
      + + string + Current input text +
    + + + + +
    init(self, template, nodes) @@ -150,6 +185,39 @@ + +
    + + set_allowed_characters(self, characters) +
    +
    + Set allowed charaters for input field. + See: https://defold.com/ref/stable/string/ + ex: [%a%d] for alpha and numeric + + +

    Parameters:

    +
      +
    • self + RichInput + RichInput +
    • +
    • characters + string + Regulax exp. for validate user input +
    • +
    + +

    Returns:

    +
      + + RichInput + Current instance +
    + + + +
    @@ -171,6 +239,12 @@ +

    Returns:

    +
      + + RichInput + Current instance +
    diff --git a/docs/modules/Text.html b/docs/modules/Text.html index aa91505..179c6cb 100644 --- a/docs/modules/Text.html +++ b/docs/modules/Text.html @@ -137,6 +137,10 @@
    + + + + @@ -163,6 +167,10 @@ + + + + @@ -489,6 +497,37 @@ + +
    + + set_size(self, size) +
    +
    + Set text area size + + +

    Parameters:

    +
      +
    • self + Text + Text +
    • +
    • size + vector3 + The new text area size +
    • +
    + +

    Returns:

    +
      + + Text + Current text instance +
    + + + +
    @@ -632,6 +671,26 @@ + +
    + + last_value +
    +
    + The last text value + + + + + + + +
    diff --git a/druid/annotations.lua b/druid/annotations.lua index 5843e13..6ad81de 100644 --- a/druid/annotations.lua +++ b/druid/annotations.lua @@ -1,8 +1,5 @@ -- luacheck: ignore ----@diagnostic disable: lowercase-global ----@diagnostic disable: missing-return ----@diagnostic disable: duplicate-doc-param ----@diagnostic disable: duplicate-set-field +---@meta ---@class druid local druid = {} @@ -565,6 +562,7 @@ local druid__hotkey = {} ---@param self druid.hotkey @{Hotkey} ---@param keys string[]|hash[]|string|hash that have to be pressed before key pressed to activate ---@param callback_argument any|nil The argument to pass into the callback function +---@return druid.hotkey Current instance function druid__hotkey.add_hotkey(self, keys, callback_argument) end --- The @{Hotkey} constructor @@ -936,15 +934,28 @@ function druid__radio_group.set_state(self, index, is_instant) end ---@field root node Root node local druid__rich_input = {} +--- GSet input field text +---@param self druid.rich_input @{RichInput} +---@return string Current input text +function druid__rich_input.get_text(self) end + --- The @{RichInput} constructor ---@param self druid.rich_input @{RichInput} ---@param template string The template string name ---@param nodes table Nodes table from gui.clone_tree function druid__rich_input.init(self, template, nodes) end +--- Set allowed charaters for input field. +--- See: https://defold.com/ref/stable/string/ ex: [%a%d] for alpha and numeric +---@param self druid.rich_input @{RichInput} +---@param characters string Regulax exp. for validate user input +---@return druid.rich_input Current instance +function druid__rich_input.set_allowed_characters(self, characters) end + --- Set placeholder text ---@param self druid.rich_input @{RichInput} ---@param placeholder_text string|nil The placeholder text +---@return druid.rich_input Current instance function druid__rich_input.set_placeholder(self, placeholder_text) end @@ -1305,6 +1316,7 @@ local druid__swipe__style = {} ---@class druid.text : druid.base_component ---@field adjust_type number Current text size adjust settings ---@field color vector3 Current text color +---@field last_value string The last text value ---@field node node Text node ---@field node_id hash The node id of text node ---@field on_set_pivot druid.event On change pivot callback(self, pivot) @@ -1374,6 +1386,12 @@ function druid__text.set_pivot(self, pivot) end ---@return druid.text Current text instance function druid__text.set_scale(self, scale) end +--- Set text area size +---@param self druid.text @{Text} +---@param size vector3 The new text area size +---@return druid.text Current text instance +function druid__text.set_size(self, size) end + --- Set text adjust, refresh the current text visuals, if needed ---@param self druid.text @{Text} ---@param adjust_type number|nil See const.TEXT_ADJUST. If pass nil - use current adjust type diff --git a/druid/base/blocker.lua b/druid/base/blocker.lua index 82fe72c..92fc414 100644 --- a/druid/base/blocker.lua +++ b/druid/base/blocker.lua @@ -51,7 +51,7 @@ function Blocker.on_input(self, action_id, action) return false end - if not self:is_enabled(self.node) then + if not self:is_enabled() then return false end diff --git a/druid/base/scroll.lua b/druid/base/scroll.lua index 1020597..5e4391d 100755 --- a/druid/base/scroll.lua +++ b/druid/base/scroll.lua @@ -621,8 +621,8 @@ function Scroll._check_points(self) local temp_dist = math.huge local temp_dist_on_inert = math.huge - local index = false - local index_on_inert = false + local index = -1 + local index_on_inert = -1 local pos = self.position for i = 1, #self.points do @@ -647,7 +647,11 @@ function Scroll._check_points(self) end end - self:scroll_to_index(index_on_inert or index) + if index_on_inert >= 0 then + self:scroll_to_index(index_on_inert) + else + self:scroll_to_index(index) + end end diff --git a/druid/base/text.lua b/druid/base/text.lua index 90b7788..e46f2e5 100755 --- a/druid/base/text.lua +++ b/druid/base/text.lua @@ -53,6 +53,9 @@ --- Current text position -- @tfield vector3 pos +--- The last text value +-- @tfield string last_value + --- Initial text node scale -- @tfield vector3 start_scale @@ -320,6 +323,19 @@ function Text.set_to(self, set_to) end +--- Set text area size +-- @tparam Text self @{Text} +-- @tparam vector3 size The new text area size +-- @treturn Text Current text instance +function Text.set_size(self, size) + self.start_size = size + self.text_area = vmath.vector3(size) + self.text_area.x = self.text_area.x * self.start_scale.x + self.text_area.y = self.text_area.y * self.start_scale.y + update_adjust(self) +end + + --- Set color -- @tparam Text self @{Text} -- @tparam vector4 color Color for node diff --git a/druid/custom/rich_input/rich_input.lua b/druid/custom/rich_input/rich_input.lua index 9adcc70..68d3560 100644 --- a/druid/custom/rich_input/rich_input.lua +++ b/druid/custom/rich_input/rich_input.lua @@ -91,10 +91,32 @@ end --- Set placeholder text -- @tparam RichInput self @{RichInput} -- @tparam string|nil placeholder_text The placeholder text +-- @treturn RichInput Current instance function RichInput.set_placeholder(self, placeholder_text) self.placeholder:set_to(placeholder_text) return self end +---GSet input field text +-- @tparam RichInput self @{RichInput} +-- @treturn string Current input text +function RichInput.get_text(self) + return self.input:get_text() +end + + +--- Set allowed charaters for input field. +-- See: https://defold.com/ref/stable/string/ +-- ex: [%a%d] for alpha and numeric +-- @tparam RichInput self @{RichInput} +-- @tparam string characters Regulax exp. for validate user input +-- @treturn RichInput Current instance +function RichInput.set_allowed_characters(self, characters) + self.input:set_allowed_characters(characters) + + return self +end + + return RichInput diff --git a/druid/extended/hotkey.lua b/druid/extended/hotkey.lua index 7dd84e7..f6e4608 100644 --- a/druid/extended/hotkey.lua +++ b/druid/extended/hotkey.lua @@ -64,6 +64,7 @@ end -- @tparam Hotkey self @{Hotkey} -- @tparam string[]|hash[]|string|hash keys that have to be pressed before key pressed to activate -- @tparam any|nil callback_argument The argument to pass into the callback function +-- @treturn Hotkey Current instance function Hotkey.add_hotkey(self, keys, callback_argument) keys = keys or {} if type(keys) == "string" then diff --git a/druid/extended/input.lua b/druid/extended/input.lua index a5bf991..319ee31 100755 --- a/druid/extended/input.lua +++ b/druid/extended/input.lua @@ -302,7 +302,7 @@ function Input.select(self) self.style.on_select(self, self.button.node) else if self.style.IS_UNSELECT_ON_RESELECT then - self:unselect(self) + self:unselect() end end end From 88154b22698987e0c5a9c1cb3fc6303eccb1b794 Mon Sep 17 00:00:00 2001 From: Insality Date: Fri, 20 Oct 2023 11:03:30 +0300 Subject: [PATCH 06/10] Fix scrolls.gui stencil nodes --- druid/system/settings.lua | 2 +- example/examples/general/scroll/scroll.gui | 154 +++++++++++++++++- .../examples/general/scroll/scroll.gui_script | 3 +- 3 files changed, 151 insertions(+), 8 deletions(-) diff --git a/druid/system/settings.lua b/druid/system/settings.lua index cc7064a..384a706 100755 --- a/druid/system/settings.lua +++ b/druid/system/settings.lua @@ -9,7 +9,7 @@ local M = {} M.default_style = nil -function M.get_text(name, a, b, c, d, e, f) +function M.get_text(name, a, b, c, d, e, f, g) return "[Druid]: locales not inited" end diff --git a/example/examples/general/scroll/scroll.gui b/example/examples/general/scroll/scroll.gui index 7a9d572..886e989 100644 --- a/example/examples/general/scroll/scroll.gui +++ b/example/examples/general/scroll/scroll.gui @@ -60,12 +60,16 @@ nodes { z: 0.0 w: 0.0 } - clipping_mode: CLIPPING_MODE_NONE + clipping_mode: CLIPPING_MODE_STENCIL clipping_visible: true clipping_inverted: false alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -115,12 +119,16 @@ nodes { z: 0.0 w: 0.0 } - clipping_mode: CLIPPING_MODE_STENCIL + clipping_mode: CLIPPING_MODE_NONE clipping_visible: true clipping_inverted: false alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -176,6 +184,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -231,6 +243,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -294,6 +310,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -357,6 +377,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -420,6 +444,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -483,6 +511,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -532,12 +564,16 @@ nodes { z: 0.0 w: 0.0 } - clipping_mode: CLIPPING_MODE_STENCIL + clipping_mode: CLIPPING_MODE_NONE clipping_visible: true clipping_inverted: false alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -593,6 +629,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -648,6 +688,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -669,8 +713,8 @@ nodes { w: 1.0 } size { - x: 36.0 - y: 36.0 + x: 200.0 + y: 100.0 z: 0.0 w: 1.0 } @@ -703,6 +747,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_AUTO + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -758,6 +806,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -813,6 +865,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -876,6 +932,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -931,6 +991,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -986,6 +1050,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1041,6 +1109,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1096,6 +1168,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1162,6 +1238,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1217,6 +1297,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1272,6 +1356,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1338,6 +1426,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1393,6 +1485,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1448,6 +1544,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1514,6 +1614,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1569,6 +1673,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1624,6 +1732,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1679,6 +1791,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1734,6 +1850,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1789,6 +1909,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1844,6 +1968,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1899,6 +2027,10 @@ nodes { alpha: 1.0 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -1962,6 +2094,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -2017,6 +2153,10 @@ nodes { alpha: 0.5 template_node_child: false size_mode: SIZE_MODE_MANUAL + custom_type: 0 + enabled: true + visible: true + material: "" } nodes { position { @@ -2080,6 +2220,10 @@ nodes { template_node_child: false text_leading: 1.0 text_tracking: 0.0 + custom_type: 0 + enabled: true + visible: true + material: "" } layers { name: "image" diff --git a/example/examples/general/scroll/scroll.gui_script b/example/examples/general/scroll/scroll.gui_script index 04cefc7..3ad39b9 100644 --- a/example/examples/general/scroll/scroll.gui_script +++ b/example/examples/general/scroll/scroll.gui_script @@ -17,7 +17,6 @@ local function init_scroll_with_grid(self) local position = gui.get_position(clone_prefab["grid_prefab"]) grid_scroll:scroll_to(position) end) - button:set_click_zone(gui.get_node("scroll_with_grid_size")) end gui.set_enabled(prefab, false) @@ -37,7 +36,7 @@ end function init(self) self.druid = druid.new(self) - -- Usual scroll for whole page + -- Usual scroll for whole page self.druid:new_scroll("root", "scroll_page_content") -- Simple scroll with no adjust From d1d20d73ff6e5a288be1711f4972994dfde20049 Mon Sep 17 00:00:00 2001 From: Insality Date: Fri, 20 Oct 2023 11:14:58 +0300 Subject: [PATCH 07/10] Fix wrong link to lang_text example --- example/example.gui_script | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/example.gui_script b/example/example.gui_script index ccdc45f..5517f9e 100644 --- a/example/example.gui_script +++ b/example/example.gui_script @@ -173,7 +173,7 @@ local function init_lobby(self) self.lobby_grid:add(get_title(self, "Texts")) self.lobby_grid:add(get_button(self, "Texts", "texts_general", "/texts/texts_general/texts_general.gui_script")) self.lobby_grid:add(get_button(self, "Adjust types", "texts_adjust", "/texts/texts_adjust/texts_adjust.gui_script")) - self.lobby_grid:add(get_button(self, "Lang Text", "texts_lang_text", "/texts/texts_adjust/texts_lang_text.gui_script")) + self.lobby_grid:add(get_button(self, "Lang Text", "texts_lang_text", "/texts/lang_text/lang_text.gui_script")) self.lobby_grid:add(get_title(self, "Scrolls")) self.lobby_grid:add(get_button_disabled(self, "Nested scrolls", "scroll_scene")) From 00a7852225ca35feb10906b6138c8e43c0495a56 Mon Sep 17 00:00:00 2001 From: Insality Date: Fri, 20 Oct 2023 11:19:15 +0300 Subject: [PATCH 08/10] Update example to 1.6.0 Defold version --- settings_deployer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings_deployer b/settings_deployer index a089391..92e4328 100644 --- a/settings_deployer +++ b/settings_deployer @@ -8,7 +8,7 @@ use_latest_bob=false enable_incremental_version=true # You can point bob version for project in format "filename:sha" -bob_sha="1.4.7:7a608d3ce6ed895d484956c1e76110ed8b78422a" +bob_sha="1.6.0:d9e9c49ab946c058f29a8b688c862d70f30e9c43" # Select Defold channel. Values: stable, beta, alpha bob_channel="stable" From 9132dc477b645d674ec21efbfcf85f48ef0ea8a6 Mon Sep 17 00:00:00 2001 From: Insality Date: Fri, 20 Oct 2023 11:21:30 +0300 Subject: [PATCH 09/10] Update java version for CI --- .github/workflows/ci-workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index bcb725b..65cd61a 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -12,7 +12,7 @@ jobs: lfs: true - uses: actions/setup-java@v1 with: - java-version: '13' + java-version: '17' - name: Build && Run run: | From 85e6d41f56eeb1ce98fd0407d186f4ec3b457914 Mon Sep 17 00:00:00 2001 From: Insality Date: Fri, 20 Oct 2023 11:25:06 +0300 Subject: [PATCH 10/10] Update HTML5 example --- deployer_build_stats.csv | 1 + docs/druid/archive/archive_files.json | 2 +- docs/druid/archive/game.arcd0 | Bin 607568 -> 608384 bytes docs/druid/archive/game.arci0 | Bin 23008 -> 23248 bytes docs/druid/archive/game.dmanifest0 | Bin 24253 -> 26065 bytes docs/druid/archive/game.projectc0 | 9 ++--- docs/druid/dmloader.js | 9 +++-- docs/druid/druid.wasm | Bin 1819432 -> 1865908 bytes docs/druid/druid_asmjs.js | 48 ++++++++++++++------------ docs/druid/druid_wasm.js | 2 +- docs/druid/index.html | 4 ++- 11 files changed, 43 insertions(+), 32 deletions(-) diff --git a/deployer_build_stats.csv b/deployer_build_stats.csv index 2a151af..8643758 100644 --- a/deployer_build_stats.csv +++ b/deployer_build_stats.csv @@ -16,3 +16,4 @@ date,sha,version,build_size,build_time,platform,mode,is_cache_using,commits_coun 2023-08-05T16:02:55Z,628723386eb3875f7190d079a2e7c510d044a311,0.11.692,2456,40,js-web,release,true,692 2023-08-05T16:31:19Z,37fff52aa59feb20f761ef4d340d9f677743d54b,0.11.693,2456,43,js-web,release,true,693 2023-08-05T16:41:25Z,d7dd4a86b81d73d345ad7e136de9c2c488bc4d8b,0.11.694,2452,43,js-web,release,true,694 +2023-10-20T08:23:33Z,9132dc477b645d674ec21efbfcf85f48ef0ea8a6,0.11.718,2544,47,js-web,release,true,718 diff --git a/docs/druid/archive/archive_files.json b/docs/druid/archive/archive_files.json index b50838c..a396e4d 100644 --- a/docs/druid/archive/archive_files.json +++ b/docs/druid/archive/archive_files.json @@ -1 +1 @@ -{"content":[{"name":"game.projectc","size":4114,"pieces":[{"name":"game.projectc0","offset":0}]},{"name":"game.arci","size":23008,"pieces":[{"name":"game.arci0","offset":0}]},{"name":"game.arcd","size":607568,"pieces":[{"name":"game.arcd0","offset":0}]},{"name":"game.dmanifest","size":24253,"pieces":[{"name":"game.dmanifest0","offset":0}]},{"name":"game.public.der","size":162,"pieces":[{"name":"game.public.der0","offset":0}]}]} \ No newline at end of file +{"content":[{"name":"game.projectc","size":4141,"pieces":[{"name":"game.projectc0","offset":0}]},{"name":"game.arci","size":23248,"pieces":[{"name":"game.arci0","offset":0}]},{"name":"game.arcd","size":608384,"pieces":[{"name":"game.arcd0","offset":0}]},{"name":"game.dmanifest","size":26065,"pieces":[{"name":"game.dmanifest0","offset":0}]},{"name":"game.public.der","size":162,"pieces":[{"name":"game.public.der0","offset":0}]}]} \ No newline at end of file diff --git a/docs/druid/archive/game.arcd0 b/docs/druid/archive/game.arcd0 index 27cc27ad026f29e1f79725bfacc436a8e48f6051..ab429b830a49f92f263cbd305a1496fd7b7bbdd7 100644 GIT binary patch delta 167609 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%0ASA)llVdGB*gKgJIS!5U%RDS{Mgi@5a}jKW^15 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�Ufl%nUq?KRE+qxKr9PE8O5`vg&h6u95@ucCKbJ!pF3d_-KT zsA|V0=<>{X1q17 zi@CKsXC4G2mwuW(k)HAai5=MpcJExuqX>MalX+$Ik?fFSs<%H-;pOpi)6LcO-*`qw zz<6e=+kQ9>2v&>8!rEhy|C5Vefp0|TA!iYbf~im}`NY{3s+d;VJfA?AviJ+|Fpy>q+2nQQYtfnIY_>LHVdv zX67QI;#uZws3M~m%LDp`_UK$SLgI0C|fC&ZXul3ma21sOao%K zCQq0f0-Wv_^T!6(L~iXR1SG#|Rz@s19;ebNA>Jzt7SQV7ks<^e+BIKVCHt@6dcqj) zM(xk!^0K0B?~VvVd-^UhMe*ay4GwU^c=|tWVp|dGEY&De7412rz22*oSFqymnSayI zr1@Fm0XSnogf+2tFb5gB#AHZeS621{;r`N!P;|ij%YV5C{}%xocgGm|i79xY9Fcd? zip|3dBGu{etGadAYaH!T3%>IL`v=BJQ38Jn#h?sRamH)RRi&Y^3-@@aM`cJF&D!+c zf@S7IBZ}Te@O4-~TnmL#;ziNlSO+;EG2cP;0F+4P-8L|<(I8Z8-QdlsG z+#P|}_p||l&^wfJaB)Unh9>k5MqYR{Hx&(Y5WvUsWeQB24nZ1-8E=+)O72RjP1q{b z&M(?{WcV*FT>jh(8|S(gXMo$9@D6li*pzvmQqN1feb-ywI-)nVZ7JNQ-EqVrFAtHK zZ`{*hd+QMM(L1oh@*&T@?40LWa80N>=jM~HE@wH#&e{SK@OJcFbS))+m(dEE8<#IE z;j(D(woVWn4F3nn#6vy&?yR4g!!mPWKNl*h%GasIlL6z$OK#KADZ>Pj;D_)oz1DKn z1}NsR;QAuO&{5t~cV1HHX9cLr!mOZWxlXf^qNI{spNS~ppw9FZS4WoumZ}Z>D1jFY zzQ7$U+{(yJv$dU0BGTeL>GvXH{X`{=Mx3vbPYA|hMaKLPsJQ3(7DJeKJEgt+NIjsv z5zA5%ROKzq;w0Rf7D<#Kmd0Y95k`=d9 z$~7(dZq^Rt1*VXs21cvDH}{^rv=7Dep>skJG4G-cBG`?|jL916-XLQGYnjJ^~XAu4Uf!A=85}eR_YQENTLcY24b)G7V1gomwbv6{{fA{op-QW#nAy$i~oSvP;kY(pK3#VB#OxZWqn(tn#3ZXufJng#BE5)!ARrq zyYs~4NfUoi1N|2oQ)?bxjUcy;f-l>+R{IvV0%Wm=yy{aQNS&yU1lJW2eaz^; zFd7*MSRMi9j2EXR1YyUBBEM~GLO@{Z|}C}lvP!Z1PJ zn3PssrK`+7ThV>Z8}9uc9F}e<`Kw5%wuC1!s*MRKM`S?>>HBa=4NeAu#p%;6n>} z#jNpnFuYV0&rFDfHhq8d-Z8W)!yiK~%R+9wdyqyke{|D{tHf(WIr}wC7&I1fFxbeSU~WS&m2boxdP4=8s}*Y^1U@<`db zWgUl^QCn9(sX(&gj{izctl8Ol*)IwCsGRi);F#Y!Y5aRlq$uLkT_l4!r`jW+&pvQ1 zOmFFuP%UgFa9-rTnM}tn>zn$ILASWM z3YIwnmre=kZZ4a)u9~6jKCcETJ5%1Mqaua`<-12wO%>V7&PF6styhLDb@sHr0&n$8 zbcoP@^X|Xiln-z!X=X_NRS$y(jQl?}*#9>rlsDpB@CqdwYIO#UKVQ)#1T|}JLA+-j zG(vt4^ThpD+87;c)ALMRx%hEYfJP?r92cEqAK}J0@-*MM5USf2t?Ds+FDjTfE^h0S zeCmQ_Lx0(cE^c>exOw!E%4$HB_W`MmEnh1()^Kv983c+4k0ZPh+so6+rb8~;HaR>z z&f4|xWFTk2Nc3d-fst%nX!_-$K9tFa;Y`(K4CPMF6RlSA;%ux~vb5#r*OVV+&xruh zs~|a;9LI5kR;ddf4HCxe`}lLF9N5YjRXT*ex_U|%{^DUEUR5}CoO73lhw8=2s_H1My z)fqobx8a)mFIqGMtoxX8%ev%*K3P4!$Le#tKWeMekn*E^p>fpA9iya<2g{2bE@Xn+ z3RWB!mjhniJobNIz>$jJ7ZxCsv^=~tc*2dBYeLA3{d>rms9gJT^C5jLwOzuHL&;9#4=+PRrRoX*F%Jmv~fe+E4?&l(pnq359kp_8pXcX|F_cr&omGycbo8()n02X5N9K>yMI%+nCO z|976|)4%i_J~l~0{;8xzJe!|Y4n3Ay{oV}yj8l5I9+GT*Ttw1PgLeQCb&D*=xBr@` zQ)BGgK8_PV-UiFtS`&J;R3Pa!-t|s%wIsQ$cIeJQd$?-KwBk?(GdC_`Uql^H-y8+0 zgKjp1NZA@=KTbw%%CNZiSqy02SJ9+}^SwHjb|vY-W}GG{`?ts(Tte#eC87XrCRz_h zY517sWst!A!Dj{Lr+}1FIc4)cH$JWl9{qbl}yz21~7;6oivjgtert zCsoCPzEcNdXO1j6=1m18kY&rx=lbMw@VH)$$$P!2`wVobV%P9%JGTe5RTpsp!(=gp z%P4ip+LIB~=2D;@7N@*l@Z-e?b{vI;c2lQ_?tFd+6uD#NpVxaXWC40@ka#q`LvL3K z;nSiu{0*f{Rd!&b5*x~o^+IQ*Ob)Qjq4Qn)EZ_W7{(xlhM{H^8lN|Tt0yK2a17iW} zB;CR_BHQpGCBvXi8iq4CYrwgL>RT_wsosp1*M0arhX2SY3=Yp%L^Y2}3tmmRxnbo7 zBT-V7;C&TWB9>Qm$Bs+@4$7IQ$X!=qG2=+jaRrQ*y;4Q1#ImJSJa(#4n zhH^3^M=L6!#%_O~T*ruG(8Wl5c!NGAug?sVu25!%nUXk7FPqSZ?0MP+No3@WxE(4# zQ;2nBTacz-%G7o&R)+;o$WlztQ*fOdcr6i}Hy&>)-R;nW3%I2`I08Pjp=Abc)GcYP z>v*vvC$-k`=~6(qXQocg8Zl-4Z+yLDbfn+9_8Z%_ZQEu?9d>Nnoup!$9ouHb?AYoU z9oy!c^Uia^ETt=eu8*kDWFj@CCZDqvek?#v#Q^|o~ z$4!K5&>cYxps}mkVnJn&AkYYDit2j@qlaq*>`wl3Dtto$&HNuhh#337PKB=^M0W|6 z$g*-oEL^K-7$jTv4^UAq^=IqXV-ZRYObv5;ycS3pK^Y@MR){yk1rvNgSb(an`0(t7 zTl#L^b$oKaekgJPyddXzY@DkAp5%~e=FjEJ&Q%8)1{-g8%X9ltbTxX_+jpY@juo6# z8#BWFjlF$FB(Q11Z>w|h`9q=i{g)=0BaaKnzZdG&l#(5s+pSyH`FQ0yrHb?a9HYIO zTa5F{d8=8A(FnV21*sm`fSXFd&SHD^orV^$vC8il-e(7|_aC_o|qi~KBM;fS5p+~9w0 z*`H+U*o#WihfbvhBA~15h?t!4ow8=!J#R&Cl0u-Hdy5lh?v~|p(mv!gB#xcs_Rj={ zo`>EniS!(qI1*xJ2;K70tkd21m|#)Z$fpEiFB;gLd>_DTafdDdb0~cUAe(=CMoVYR zTRl-Avkw#wxTgK{=oVm0NBQTgGKk*028qrRdoSI%3V}82{{vPAcyxSGz2lIlfw-9y zl2I$>_lk;S#VEqE4drwJ-Id-CMBra6=Wn4}GmUSJs_^ETONYeHYLp&LF8YzXWDY)E z11=GX(c^20hoVg$$fz62$9*iOjp_9IeSj!Xde_i$m+6#2*&Rks2x#%LX>qkh?YXe! z_!}Y6a`@i4LItW(l_q;2v(K-%%Dt|!^qBOYp?Yux(7C05w+d>>bENEx&)&Lfp}#ES zZP&hqehYO@2ij8%GRX`euL7ee@fJY_OxiKeT>D_hQ~Z7JS3Tw)waYXWz*_$=Mk_=# zmHW|B_xgDtf%^g`b!>wu26Fo4XN>+L4x#B$aEWWo* zcXI4PB?p5`pVgLzH%c)pL5t@wo!y5_UtURfrMN;-IGT_3@a?DDd0DWKL}>nuD-Qxp zkreL^oU!dh&$enxXgyTCZ1E4#xAc-7R3bf$!cEJcdxZ_Kx-@ACFA!qaKu0lvi}7EC zIp+2ln3x5c&>$Lr%kR{?ydh+1GgIVMov7*Se+^L0$+DXs){vH*@`Qq~WpHdV_eJSj z_x<=UuvMTt$Z@{@Q=2As|Br9zd&7wSh5>FV)BF95nnmr9*qilRRdqq;`DNN7(MwVm zAruKRgm}(KS_z=md60j8T3WFHnvd(4meylHJ+G_P%UGHofGIk7Ap;AC z`Y|w+H+#+|$^obE)|Vk|GU`}Bq@kTEo#>f>i4zz*#z_Y{an+E`*JcS9<1{QbyTS?Kk}{K=vg|gXZ~?n6UX>YPQ#CnZuLc z&rtjmEdj_F*I;J9H=GZeW~x5-g1ptJeUd3Ve^U^!YqCH&!?KyLJHFN;e<5BJ$z>(6 zrLmHeXy!2M=fq}T=3B|bh^T|?kH4`F_tuT^Jfs&Br@cI3m>y&l0ygk4-_a>o84 z<^lPvMhqDy!xjQ-EsRehg*fcjuOS}?XEG5p0SqF?9m}PsW3PTVVXxEF1qa#+|KzR) zu%oRz&?}i6|BMcRz0J?wAsDNTYUU7Tkr(&anr~a59AtQW8~W-ykJZUMOnuLsB0l37 zQ^X#?PNn$?UZS`cntyFuK3+32EtfU70#fl=0;h7smFAh{JqY5ZY?Ha7vHW#e5+y5$ zbqrt%*M*`-a&^_4-0xp!mFg)SNa)whQ1$%Y8!ze&ko#`enlJ0#hxsIF!9g77e$*{v z|N0OJ1^*lPF`4Sfko$yNupKU$Z#bmHNGB_6gpfty#Z}%2w?d-#K}#5OtSYPv`C_zC zLwwyB7duR|_V*5nADi;Z$F4;h6o)9kSgB~F20RP>&d>nqd?p_R>-ap!U2Spd~Y;FLEwd-K_12w)c%abssd-hE8>ROL-!>Hop0UJINbM@P(uQn8GYK zNJBSKy|I-;zsjs5k@>@e4|`s!?$Ivt^QO)PzF+!S$yf00nAb;k)AahJewk8?C=r}x zA`CHM!;j{g0SdaaADuDq?JY%9M)lD zjab6=c+1h(1dH~Q{aGd)#q2#Jhk9G7-2&(R>xC<~=o>l8QoY99mPJkr8f6^{6+B9_ zoTHRp;*TyeXj*A%*y)6ieMuOo2#or$m75R5`D#$P#63VBU&l{hXfHefBFB+OIy7-m z3>3t_%B}T?2Q4?6IHpWHcj5+MV-p;4iHBNqIt^W+8x@uJ^Xi@_0P315u}MpXx1Hl^ z8BC8qnqjjmuR3#i(tnaUMv}V)lgTnQKivvL59XJ));GM5l~L zW1H9F=C0xvd=pF%t%GbR!3*P2xjn8mDJc@w9TdjyZ;wv$wO{m1dI2~bQzO@;!&ff=_8FW6HfY%NzvO9?1~yFSjF|b75=Jpa6uscUGJO^Z zmK}iimP62xm@=BqILFP!%TVPj7TKUE@wR(8d=||@Kap3tsQHvb_tcVXP&0A5RVBt5 zz+ZkYB8~lh+xX9;PCKqV)a~3?Z?0K6Sgy9QnRiF74Ga9OCVlVE-cLYKS1~KzTKD<@ z-07T@pby^a9^S8{B{y()8|NQ?W_BeR*e<2UbZ>k1n&7A!s9O(S z^PtNj1I5Dfm20;p+kA+6*^6WmhuB}_4I$4pcY>>~Y-6J)va+>fHu6ZbR=VM^tJQDt zIngUeQP7G1wr0Jv17zTOe-K*aF{q#W+AFy+I%_Xfpu81}nFOb0jzXtPn|{xU*K<_V zx4mC>0QSkvYb+=W_2Ayd6I&w$RFex=*JaH0Tx-&NX}WqdO@1Me88A3R3R0;kA zO2ReSWUABy0jtmbOe$lE5dM?kh|2+ulF8%7#@)9SashPBy6{-u@~%&$aO1Jovz}w-~g{E)ATsCY4C9vw*Bc%Ww_qHb)|hr2{kgZ!~1_k;roW+;gyfh1iY}p{z6NYs!9iR z_vse!vw)&}hL9FFlAdD?zv0AHblix37Qa&G#mQb1VW(!+i2G)fq8~hrhMPvk4Q|Jo zXvL}ccFvqheOF^4-tpmNQ``(`t--q;6KD9QM9%$W^S+WM>}l964w^dy9Dvrq1PA(* ziW(2K&6mRdP4MNwZ@kw5J6f&zT?GCR#B;5FU2%>Mzapg0PzQ;&x+zL^0_7jhk(+t` zpu76mOar?9Pnx3(4jQrc-&=G9|F;1t*ET zTqmc$wXdxv8@~`v5WIjoDt+sr!S%dAtSqdCu{Ee&>Fg4Eubd>A&B=Fh-@w2Bo^3J; z=_W*2G*H6C1qD4K;Xra{DjcK>NhNJ6pf-7!_2!I3o3$Ihgcc-jth^b)js(yFCGN>b z{Txi1wu~){O&;{0S8DQ3FWe2uE&NFsr?P$$eu0R(U+=kzdd^2v7I6*j#GVJ}*E&Bl39B={N_m__s zmP^+dIJF>|$}tv7Vr4~+#^ILpbg&;6MTyW)M4_;K4GzqH&~<9`v<+du&8ltHLz#6w zLl?ge0K5LSEZH&kp~2Uo=M2rHvCOTiFj_|X63x!@p90@zlW=;DB@8ag{wUA=E~~~W zX;hw|s7R6S9SxLJ5uhvfE(1Ql9>V776guZZkxVnraVTaFzlcqGt z{?U)T&}L?ryLn0`Sq|QGw;k|D2y#M8NTD_#=S8j-Xtb2mr-3c6nz3U=(tE6 z%zBX2Pr>RN^Zu>Pc|8r;T#S(Nq;+r1V&@ZAChvxJZ!(AwC z70=b|%~nwrn8Bkb!PElrwDfRYm5F%P^EL%@drV3nTm)C7U;9oUU`i?~^p) z`87+z3hrq?Iw7Mm8mcIt#R-FFgCy4cjJ!L;1#a@PhJ(iDNRdswRv538{eBi<)g>sI zAy#5Rp}?4i@<-PMr90#y{fXi*T+3KBUR3hG1hgD0F9kpVEZVqK7Ov1>K%w;k?!iT0 zN@}XU3`F_e(~O~@RU*UW*rY0YicHfdD*Y;>BWUmEx9Sy2TqoFvjYDM! zo(b~A>luCIm%A6yT9jJ^|^?7ZBG|?FYstKyyzP+U@LM+ zHrb}7U<2=j=f4Ywk={nW+Rrm(I5;{Mo?*ICTD^X_a=9qMjbTPQbcmVYQ`Jq|#ElHH zHbQml5UZ{3`IyB22>Jm+bi}6!+=2n!_~%RmV1ictwPU{NM96`=2PBeYc>`B$52sN#R@BBGXp78%8 zR&xHd*#exr_92a1Ycd}RG7?+6KK@NP>HP)jh2Dr6V+F`5NIECCZxndhvc-}Z~tD86wMrlvc%6Rh*oeqj-B<(H9bQJe=T%}7%Bh9hX`)UmF zAN9%c8wN{HA!mIInj%2{DBE_o16f+(2Ou-ntpaq=7BcK&5M**t^X=Y)h;ugULe6ax ztR&P11V_o9sjo|)Zwar;LvqZZEtWb=s}Pa}`v~J@$h?>{TT}&F-<_@MpVjR@C~X6% z448q9(WAH;OQ-=5no@K9d2c9BRj$r)ov`f$sc*x>Ha)e-jS~#% zK22@ZR+IASEE+zB`pYmP%Y8=;baPUng{i<_548z2bxormR45K*I&&dbTzFld#~jmmX#iVKu|fc^!pnBgmKZMcWY8XR#+ljUg?1?} zf@T3)PFRjeYZ-Gh?=zMcB>}~Ic|OH_$CejYVN@qj>3hn#^kJ)7We`WGf;PTP{xbHQ zGXa}J7HDtFsmA$z2UBH>X!MvfxPqY<=FMzoO4*bF2G#>bSlb>2BFGg79LiVf4qQV9 zt^TJ?>Ix3p^FQM}(|2JJv<#ZO5LM z?kMZzC?o%^Vw@|JUN^O^96Xo6)zH$uRaG;3?PF2N8);Sbpo;NNJA)LQT__>2A#3Je z_%~YA(~Q78an7GX%5%~;O;4wuPA7q5s?UrDPmx(-;ju~`9Sq}_Tx}S8G+hg@JHGD3 z1!9LOd8KN#(f6-FjlIu%hMeFYfa#gfj()gBgbj*;Roq?4*16eeoIM8jz8Oz0nhFjR zsw&se*+9Pr8r4{2)U0t*fobQ0J8{(L}NVWR1z z+3;E)A>H=8uNgN5lEXzr2?>*mx-(xD@-UNmpG%L{U4N^zQir2-1!u3017${y`tch9tmGUQb;sZbS2jeclL(UiT0R_(1a9RmpU3k<6&mc9s<$4%%9gQ4 zO3lDssx`vj`J4Ep{>RX@ZIq3aSfA&aLiUv~ctB@<`V!d{sx^F~uf;mNCHB<*qo5({ z&sQL+saFJk>%{@I(}tIAoS6&!z4Sv71>eMAMziW;%58nYy$IXvECe=09e?oWEJ0wR zU(Dp4BlU#iD)KvCksMUNHNqf(B%PswFXGyN#b6kz+Qnm+t15z;14&V5Fz79cth~w< zr=*DXjj*l00$AK;%XF)p)3v&`;a9iox@kpD_L^y!Kv#h> z`j&zMx4zr5udc?s{LCLd?j1RmxGEhS>Dzx)JR&coDK(;Zy%MLMOqK~?gXZoF{o(q4 z&=c~EZ@aZVjNf@+^Ld6=?*ZUy=ZM<{6_0xqoj-ZPv?WQV3*Xw7Z}Rz~In z7CCLkP^4(>b(joIGkX97F5zLUebS16#^g_fLVXo5tl=Fpv)1H6j*{CSRGrn41Qqvh zG9$Y_w=l{I@l~;aByY*%ZucG7kN38GTTHeKpXBb;KXlG)k|yRpoIXYiag;Tt3!NU~ zFH&;44yTDF489U|exgK44Pk0*L_!6+hvE)rYl{tjH;rbNS#5xPCB&Dz$?jatMNGL> z%fv2F7J*@R4XAZWs?8-TK6A{1+Ha=)Yi%mo{u;Rc0&Z+1X<~02de1u>9V#JQwImFc zQd@Gj-_@d~F8dBJ_>Z`{ebE8&=PbFN&!7_{G%9RjSp_|2?|d5cag?PJ%QPFPo&hgB z#8z=Ua8W8RamfIXt&4{weQd9oU#4&wLWhc18(#@XcF$v(Dq z>O;8IFiL%}tp<4*7cwUzWUIOS2^~Ms4Fiyyk`^hgYpJBD#~jdIRlK~;=&>_8pe>(D zwv$`T43~;~73kR(9KZCM1Dw*}FM>a7uq#}X;8q@-n=5Q_nlLV zg52jgOgT~Ct|PZt%zR3qgmJ1^9m-Cf@Q^qK&|)x3pDd-P`(kp3@Z-gJBpNurrq1=+l1Bg`ggvhU9ZY~k7D44NwlAK_Lo?S=K6hI zH6h0$eYbCh#05Up)FQ*~#^u=g(aS>6x`CHXx+Fq~AuxpAX+_9300b6kPUcs%wNUXf z@;Y?`@pYMMg$dSqCKN@%f=OFKJZ zT`ZU+@*F>!Y^YdPMFtgHy6*P@ZYI#3JG2Od*7qP2m=86rOZ}p5qtLoc#wdy94%eh}w%kAO;`K2q~KkIs2*>eKq-e4?MB zCI`j~g1iH^x_y8%f+8MZgiF2@PX*;)GFT155B8WiESrh$Fi`s~jF;bcLu{?N59zHN zIgDWXyAC~w+^t_S>2UHADd#~cGqDr$Is;i)rtq|fzz(942FdSU@*S)T32jjGrKYQ=6+=^tC)X2(wJ*iWtDxsE)hfP@@cD%M z>M#kq8??nYSjRu}GqW=oU{Sws*}eEAX0HvM19U;-PYKSf*@-diB8zQb3^ED%81MM;9Iz|dE z(;t2CrV1-%CDs*T@8iBeTDGv`z$e1-fGrOIB&~%~&BoX<9Jyb=-kQfzVgCy!1~YB@ zOpe*NqoFIh$JwWUSsz_G%>k+u3FE$}g2hRt#!6&td&oCjxA5ZX`k`e z@w2ktA-M?SpFIbE639Q6h;b-2p@QXL!qYor6HQj!jb)QF8_k7g&)|e%@_+~Wf4#W` z@WPKb&YEmSd!n`+%BieZv2vU(`MJy;#ZV{BkKrIO_YlB>aD{kIaVFh$T1o@P&bl8c ztLb#V+V#>QP~tOMNPduCOGO={?PcuMXes8_Z*uwK^K_{(J$>D(i1ddnO-1z}EdEE# ze~$p6^CSNfK$&)%hA#y=+1~}=@CceG_ePLy5Xgn&S z$H#(0TS+hq$`s&!6YkaS<>&a15+3g_3M~P-ge)HE}tO!L8OWyUSx%+vjD6g`XpLz4KO0AjnO`6i*woMzH-N0$Z-a z@JJms({9R_OFugh|;yfYAW9 zzAZIrO6nq}n!!Ve2$D!Zuv0^MI2-cKX;}<_7jvm$7{72!wP(sJ-`9=)05Qg)gm&q# z+@RDfl{Pw`WwL8BNmB9#6G!hSVltLfur5{3cEnVnTCf!(nEJqPoFVr%vGf;cn~r0M z{xn!IRUGWYOehYA8eYotv!;T`Z7(qM<&o-+BTFyaN84fK46;@Kc z!6Yxkq`T%{(EUGhwJH@E+_SmuiI!V0ks>{({Y%iScp3R-+S#0Tdry|*84G`-O%LEO z`aQEdRsT>jbN#4-cG2WAnT)*evrg@XkSFJsKo)q)+GF%UY?kKENpAeEiE9N>r8gk$ znN_>c==1Ok3op4IuqaPdXxm?V9PxyN0hE52Ph-U%NKsK~#8c=9*!j9}_!Z|@H~zMx zl$9#r)5>BFi*abQj={4XyCB2W4zlA3INt05oo8nYxM^G8#1mC;x$;Ff@oy1*{_>ia zAI2f(k-RFqR7{7H;7j&iVqOFZBlqZe<$-`O!(kX+eoM&_g`zy%$udXVOy1_KfCvlg zcE9P-1Emh`I`6^tgGl9mnTv7yu`SsiLq@(S008q2kOz)qqdGXGZh)g2DW1nHHUXjN zK=uFOLHNLeF8wDT_^*N=^M4jM%!{iC{IyQ@G2&gz%PRj+XzoS-daubOeix$x zrc1qt%A~${^B>q7p-m`&GldqWwL1D z?S(%{dWA*oKhJs{bz;IZ<$GQ=Vjp3@@&U(JN3U3e7kL#s_@y^6>!x-3E3%kF9sT~2 zMm5*s#P8{;;=yMWu`(*Dol$P=S~D~B;=N>e=CCb)8G3ivO@?8PNwbkFW}@tXwAvS) zjl>I2bvUrZ9VK&sXEe|*0V>abT|rPUmT2!*!NwKv3<^R)FHjUqrL8`}?c>>_ya(kN zgL@q(sjUgMbC zqB%C1Au#9bVS@W(Xl^#(gf4;P2F1zSL>8_~Odc)$6b}G32XAM^igtQ)@#n2*R*9}|^J~V7w&hvXdw2`5OgWCy7fGAH&GIh!|4<2`fOWq}xHF7I ztjUhhbnPeArF~v+e>+{yi>LMQYWn84M`$4MA;1$dBI&X@HEwk`@v|R4I28h(f+a1s zrjDQUW$q0Cg)LTc!9(2nXRVpfpXR7`Ryh4dZ25xV#@&Y@kuYH|cDOCarHNz>N1O7S zjKSEINYG6Sydb8R1^$P1g zZ3kT;+lN$Vpo6k()q_&QPUgKN4BVKfoP(SAx#<+JM=1Ghl`X#K?-BW^Sl)j?qkTfrzjoos?6;A5sTA^oQQM^mQIHdIr9vme+5XLOnMj!(Ssa$Ew`qp zV6sc!cbMJmE;+p*u1_nX1m!LGQBw4X;l0LobB7ALdb{t4UwH(3+AKRPI?#>{)CTQe z17bf2K;wq~ok#pfo$-9e9S0dv%}bxP-R z;#TWF2P?N1B}Co?R4=L}^@&7`fb6BzC`H^=_4pF9cU;95DvZx&tmMdNT}`+~Txpx} zG-}++1UdI9qo`SgpFOu|SeY}(2y*QMXv2{xztJ)hu%`u9-%v?^YuR}p_t=w$Vr`6M zCp0JHZ@yo)r7XhSRkd|gd&R%&c4N;7s5KYH8ZS)0jSvbw1}(U}Bwss4q1RXA``*k)U!Vc0IeLQht6&` z`P#uG0lFXSl@l2_{fE5$RJFDZttL`9Q+SBR@(D6^7ERHhB~l&n-RfY7g=-L%5Tv4iOX_e&Tvo({0~OP=10knG12 zK=ls;&j-*_FdENU%iM0I@(~*QzasyM9wZ2BM1i77!_8Qsxn`Lw7d?Dlf_yb`mSdzk z68KWC#mKTCx9SzjvzJMp*01eT>ufHt#&p8{jk!PlNxD)M$*%WPZU%{R2h-sRyk%9s zHnSQ$Q724Z38}o~2*il?dMDrN=W{~`G974V)G|Pk>bg~w4FSFkYlgY9S2(*z_#jAl zABmJ&UNDY6vN^| z<*Sh_(BdbaD&_LaTibEdXWvi^54z%>xDZW-)*CnKm&$dPxb22L$FuC&H5wd?P86@! zThzMpdXBAmlp@jQc{x{fU2?2m_g{i|gS&@jg{~nqlrIF?_QiamMZ68bS<)2f@+}j; zPww!d=pJ7sTe>+Q({4l}6!NFjk(YO?SRMPWk&wK+G(<1h3JT#;%dfEy7&{6$8F=_U zhG<(uWUpo&a*e#8QU%O|@5ox|D15smNN&41=^WRPcJW1WRpzcZmD#@duY`+5L8`J!;YGFfQcPT{zio?DerwDbozyO%jfhSA2Db|G$2#oY zOtDx-QNSHY-6-nd*!~saS#I(#bPq5{N*|=Lvc**66%I#@c+4nEZBmxaw!!+|9w0so z%DcHiYlX&=alhsBQ8UAYsVUEKh!idCN{v>Er~S@~9!|BlkKNX_`joc(wy?V6UneH~ zsTi;yhDip8o7eCF!|%0=S8P5Zh9Dm}3N zH#C#KDc^S2j7$uDG2dVIpF*`KK^&ZA_3Ts9 zc>24|15rLqPd(78x4RyJk{;Nm_zgQq{PZ8Q&FAK3X z3Z}0M^jPzL0^81bT5kxOBwp=m2duB#Pu@|jn|;1VqRy*Qp|T_%Xu2?F*Q_AKYmg?# z2Z{v&Jbo(YCfXuM3^3gKmDzds?K%06hhZrb|H=fPR@X@{UEqzIq%2D^qlns6Db#6X zhWM0Q@W>oGv;(JKtB~s`=rVn?CX+B}pM@}ba&ZAI!m8$QV7KZG;r>j7zksD0=_Aa8 z#r+u{n3q4j5<9Nj8ThI@Fo^!MMX*8{9!xwE0Gv}^oIUpqV0_tEo%k8!5imsr>5gkh zF0q8b#iEG@ukm&mrUDCVJC8(WpHwprI@gKNhe!!#KT7Q3@;qnTg*hWvSeMe=N^<$> zZgvDY6R4?0eq}=|WEW2pAxEF97v!s2E4l9Uao&Yl@7{*+cq_dl_c1dt%6tUP9;c%Y zScU2HkU>Z1AnuUTQ2mU;R<`bY9oQx)4Pucmtz_-@IV=UIV8=IvS#Kw{Xc<(-&qM7` zKcYxw^M7h-z;e{t195=d)C-`6J(-Dg746O-U#cc$%VYed!5@b=@h9Dsg*@Z9hD zVs!!J7ezRyVRriFpAJyZ#^5GBjZw1(5!Gy;O8hV^0ewn>g=M9sfoF zC(Dnv(LDmoZV=GZYQEGu8Q$?|(@Q4OnmBk)WBM&}$y5&h{)9mzjnKcYU>Tz-)Yquf ztMWRqI;k1on}5@=ePYCj1K~3y%4ZqV;FPQ{d9$|r&%JmbXb$II&|*>UAQJOIK!D1I zpn8F{G|UDTX7*;zMy_V22ByYrZ2v+Bv$1iTn{b*NF>ZIL){@c{te3|JPCy|9?wS|G#%- z#$m$7$;!>f$RCT7GYFh*H=ohCmmYn7MQn2HMqHS z^ZDH74FadnZ{=Bq=b_Rp91MT4v4Rm(xxMfc67OOu-XF-rGp%jh-8DEji@e}^0OCCp0?3B__zw{meo$-uZB z)u+Zv-{7U}&qEfAxDupIl}YOxx#hk)l{F&pW*eFdxbx_&xz&sk+m}=&xF{`l9zEa3 zGsL!ml+>lkr9iVl0;qlvT0(CO6B<3FfbXmD{G#;*%vN`3jL)qr2de)J(euaEP*2QH zG#AET6C)GpB{PSzTe+vY=&gRgmmQ*jLPE&gLqISfy4bdIO6vh4>pLuLO^EE?&XRB$ zGZewi@K>)XRF#V)o(%2lDj5Vi-J3kkg15&P?XYxn;)WHAd^51P4>bL-jhF)RKfx!n6Kx6JwF z*jmlxl|m7&LZh-u?X!a~8_RS}5z6PebtQ(93ifGeb;#1t&k3+#cVFJj8~^!wPvW{T z$k&cNl3wxUpP{ce%&Gsj(Nn6OUnw|1r2z^9Xm29LYALd9pf-|fYl*LldTt8fJDJMM zwlsE@pbL($2drMNX=7zO{Fe?vr;ws?Xhq*?fcZ# zxvh`r25*^~W~w*3W)U%Xfu48qea|5Pi|<1iM`PXdKt7>VJFq-HDEhXY{u-OoR%=Qb zdXg-gC)G4tXtQg<$~S&bBY)iLS;3yjjL`fT~M3sEmf;BzPlvwwBMmw$$zQaRcB zrnQJkskGqFIyJC0VltU%&b<@RhpzWq;+zm_*J5r#B&7hXaBQ-%lRpXC$qb(WPlxHQ zUwDOL>L-H_!}l0!Wl(d>kbWfd14;TZBw(2c3ciSopYQGsI-Z1UbjhG8vi-X3*$qal zUc=f@M`<$wgBDjSnYf(+>9;pG?4%2+4wd5QAy4K2)R5>oM`os7q5 zdsK7%sC7&T>1{u&jv1dI$Y;EkyEsJpfEJI2vHUUvafw*&m6jNN3QP|u4I1AZhj_Ty zm1ORQ)tv~Lbfa{(Ocp%2$Zobr6sw*ee_nhGfskfSC=+Jbus_CC=NjYzfLGEA$PC^c zZ&^aucJsDhF(4;jm|l3bu?|j8y%3-tRv9DuXj6RTvwU6;oVRHdS>l^pD5s$;;URb} zjrbL&bbWF?kIw`cG?lAW=7_0O^TJowc7dQA_Qt~^1*^cEwJ_eGb_LwhnY!Rx7hM>E z6Fr^-C0i5nU<7{Zn1$m4`rr!lCuKu;90+eO^_G-*OLZ;i-cYZc->JC@P$XxFNB32F z-Rr%$9{^gC`}JpfRI@hA1ga~}T7&o{7El4^3y}X%+oJg8m{auoGiPbblW2J)zsV`W+ zB2MS7^3oU0NR+4n;Z6xMb8Xg)BYM-vP=@Fb;5c!27S05w$2)y+K76D;{1uxySbQx< z-(c?Cz9G^{oLN^*1TM_X#1W}pJHgK)V`x5I)pU{&fG>IQ3{UH?N_T}g)(@dZM0BHB zqNZ{`v5gO0d2F>hfOo9*E^3H0fOM$7|EQ%leO{AeAdtmIyoqo4u z13WIIiV})sswcJr`W@tvN=;ZNiBcm$izk)w@ZvEGJxaYo=bVu*&GO}^v{P&~C8!ZS zCmMJ3-e+j2gtXPkzO|1cB7AuN;;v$;m-eaB`aKO-$O!T?oGk1>VYV5%0n>nYB1ltw zDn_!D1cR{{P{UMy#Na^Td+T9Q^H})J^Fc);Dsepfx%Q^b8jgweP?<@|xZeg~xsAF1e`_?tIS{0rU=vKImus$;=pT+Yt-l zc05I>)mm)~_Zt+v2w4*hMs=AfccK8cCVC<*qn^+K;4@m{gxeIL6;t=FIYnbIWrJS6 z;?g@BTUDh4PN-S@%*ily>2D*;ThG$rjmU=iMSiKE1993KLTL=bm1sAc^fAQ3We;( zI12v-z>wG1#T0q!9><4HB@e!CvRCR?lH(nQ463y5bzGrE+olFR#uw{bG;Fd1mDd5~ zyQoz+ew(2D;V*DSQc@Dk*QHfUXMp>~qg~(HsNzydfSFFf5GNAdxqJ?{v@uuAI4aMi z?Z&o(I*CL>T8RBfwq<+*#xm}7mY34I5SU{GU_TS_&W7f)1GavZ%8HXn_=uzDnY}s8 zmd^{it?AqZS$BoNxqokQExJcaTg;pMgS%ey+v40gcUl*2!sC5PoZ4z3BRjuX-JhA8 zUk-WNO0PeXB;gXkd~rXv#6K}qhF~7&Gi?=+J1sdNUmv|9O`0rUOw^<=PT-8M2he#u z0bLUjId0dw$nrBJGhnsmir+=%!bK!PTZ6L2uT?DDQoaM;4^=38GK#Rf88tIHa?7I0 ziR(?BP)6CQwAX4CvOb=fv^k%0v(~*w(c{FBotRX#EdNDCi=U^fO!gQin5@fVKTrnqE_ z%@l;@H^go@xV=rL3|c(;yHiKh>Q;m;w{3)P)v*ZnKOK_;ussl4 z)-XeO%U=bTp-Pw(evF-5*xN7}##HBWn8+3>(v0DZ$cWXt8Qvtm8bodWU@|hnWr-RI zWRDA#*IJ~Q->nR+D?VR#knJb_34nzN)@bf-L6v2+<#1>b6m77>L#&8ZJ>Mum3;fUk zkweR0PRa!B|IRa08POR)s+Kz35QwL!N)72_6;5i1=ob|u?;${IZMp`X(Oa4!B<%j` zd+FoN^ar_@SD-|6Vh;YAe=EmrvO+>pWDNZEFB1F}MK<|ils5t&Zv5+o72w;Edh@pZ z-Q@XP!x_{@yoBMxZl;t78ig=sZo({yD@U6a5*@7PSj38%>R4R?hZU-I0PbO6M1c3C z{Ys-bbF4sDN8$`+^$~eV6;xm+&bu@bB?s4PP&kYMBU06cbpAj{f^K_ee)*Kz!#9%6 z*IzR(m&nTwuzsJGI*V#c&H!PJ;3&zprYVd5F@~9BDDL1$I}YRTCQVpWJcEjzy+ zjlFje#J*7wG7L6+l!p8#K~isQRo05=)sjGr53A(I!Jl8XE}LU;uP7JVp1hZMw)b z%ykpj!e$do%3k(waMZSd-3hjQJCC6J7uJs>{9C=mT3NzPW{nv78qBI+vC51hfo6?$6HtiGeP6g**GV`Q9T>#f% z!{6fB+_e)qn1;y6Dlqw21ieXur76s3Nn*28g3LZ*lWR=W!QvJ3V9>(Ru7%8c7W`;$hij-P&+*|eW#Ws z%PG*$w}@8Prq)ILKSr{}j*YZ1jN&k&oROZblrKLhAS1F&Sj!FN&2DO^RUe2M5!O41 z4Mo(amAomG8DrMCrH8N*BzQ}OM4fy{+yu*?^|Wjvo|BRg^3T_89>#zCRqY$yU}Y3^ zX!akl^B!mxWB_F2uBP9TC4>0CKIU(+P+sJ zca6@UtjA0fqOY5MF&whwPCKsb=!{FLTsn%!kqqb`AG~9&JBu~D-gg;@{kfz;`+sOV z=dQq`b`59OWNWhBWZP4d?Izp!W!tuG*JRsvO}2UF{o}l!;GD0ppS9Osdp*~EU&k@* z|B3^d8jS0z^;fUb%%>*W&~?>!KCj|&{p`;>?|+Y(3#^ z_{Tn~-+~aTzX~t{xKqaFWg8o!X`;5y@DG;~DLsivYE_?Q&zKdD z(devgJB^M~h#oM(n{O5x<~GeH_S;L7+T=6Y2@#O?tRdz|LKUg9a#3f56{!+MIH8@W z8Z@Rpyd-`eHJVBJDn?G}ou36foQedjDHAfm-J^hRr4M+Hjo^?ds~KG0xvLx|HF!@m zVTo@4Bf85)1G&$7NspjAG!JP?onOcT2ll9Px)3C5tX|HE^%cVQ+%rdf_Jg&X zT>#f&xUm6Feb-Vd-%au6X5s?Hym0aRG0!LfOJX=E=+ zd1r!L`}2Ee@)P8v1;q;R;!Toc9a*;0e*h|z1^wr;0D{BptE%b(Wdktnv;#y5XG<1Z zScxy~r^qHgn|uoGUNLe@%1Atj4i9{S`yaUhXER?B_zIP5d1|e-s_PQjcmr%N`XjQ5 zsAw}iIeLzA=M_bqAy0ktnucL5Vho0O#E<1sS+Yse-9FG3^d6p2KmCrf9y`-?_5p*x z)b1BgYJ5=D6_GlfTRn9lZ#70tqTBCoQ!nzwAB0=lGBVNAoI=jeU7q4JvsHN*HYhrs zPR))GVd4ad%)Uf zKWpR3lPXolY>%OJ$1T5ds5y_YYJtcZSU+4{uUdFV`SqEj*Bj^rJF0ZeN_x0+3aJa7 z4w!jGwuD>{eovQ9Q=QybJEW19t6%R=*``tnZSn^FM(_8mCOG5ymNuUxU-ef;ry_oO zQBfA;+rc3;6B4?AAL-rI)Mg1|0x^G#{4{4E`owJxX?q^Pl`f<>>c_&|)v?gi+E7>huu0lfbn4$D| zQ>1Q%SURBp#$m9FrCu^E1R)WaHzo() zt~y|HoxEmoI{kb4Bl3{DEc>WH9%^dqxe5~&UcC7jBLfbingVcL%f4rq46Yke#WHxUC=u`CX_T#xb57mdo9<{V&8~o_%fR`Qf50t6HwS z?li=tvVJEqt%nuP4Rz;Jax~FpZ7F=LC*Y;&Atsc7J zUnC5}^&HYC@e|;CS;xXLr|wn=7oJ+XEsy9Q4iQ;|cw>tK4N1g5Yz72oH}(ER?*8J+ zwmee9)F_-~YFWNsec6pZC~Hi8qI>KGJWdk{gM=DBkq>YpN?KAh6@2m{_D|y!_Lmje zxlEF9N@uAHkv563^8MT*5`NcRqzHjVJ18BWcxzOLSYD>2eJuZL4MycBGWc)2+ zkq7eylM7?yXR!Dk&&US(I8tmr*Z^VfJ1dAARxq^VNTqa2BU3{$*7S6#)-rAJcDZ?iGYj1{BiNA9wmyT7++LaU=5(*sU9^#qo?VrSV}} z4?vA4%`^VCyT(<^N~%Ij^)H&jCMmPryM{&H+LO`)-ji#ZnHztJ=D03;^%`s?c`F6Y zAw%4CQMWjZrEc5C^p=;N*=!2_V@WR{VFo1rcVg$5>vDkWzrJyfpR~B&ACF|i-(|gT zuqu^;8(wL@P|STAXNF!pQ|md=&jbyPQ-F=L+3J_h!dE(IQ!P$=yRYF4xzxmy(*U|+ z6SsJcY8~7v){vW0?&sA!MGfiR>$I8kn1_Svt6udEx(v7_xH|SJ2NI=7I zx9%XCA}HOKWnEP>)j=8^Hmz*T`d^G}vV}o+n(C>@F zk7G-f_#K^1o@O11s5>#+{w0u>9fBvw$<^0!>VoBLCSMlP!O~57n1#G60Uy;s^6W)V zsL1H6n6xOBhEk+40qp3g4t!qSJYXWKY})9B_U4A#{4|CAW!y~v3YU|voA9MO~?tmIjTe!%@qqxUX zSUzdXfMw?9a6}#EhStxE!fHFFg5*^?mD!-R$Y=v73fkYA_~AXThv8etjQ~%&u1UtI6j+&Woe;6DY#reX(u z^4>)B1L?!|jYqtoT&j`mhQPN~2Z3wL7E5*>sju1iuP|RP3TiU&?ikHrznf%51}S*{ zbVCe}U;6lnJ6*TyvGYwq4ZWhfMQ!)U+G;-sHlnO^n-l(2mdI{Dr5U}(eX}4ckHqkg zOESdCx-d*Ljoy6PUr;9O=;hv38;k17XfajZf7KMbzh3G`eA?bYAqDo1AXXZHoizdx z>jW~P+N+NN4D|FJ_D*4It1eA zFhgUju{GaQRR%^omoCtqll_p-CM`YUUo~t#WgY|9J>u( z%&=Sgc_HRgoxQ62aDaK1jt-~r4MmpR7F&RHz$rUunP5;ufm{jm<$?z2Aj@DXs-bdR zbS*CGnn9}b-_lt-V4!7#)_J#wsz0x7VD@uad5>fd4a< zGGT4IVHSP?csb z;H}1igTVz$*hXgJb+jM)Rf#!aY2;C!Vn%wT2tnr^<@FtDvpsB^%ZkC^+h!45jH(3F zC<`TJ({UWT0@7gfJFlmk1*O)0eJ}b5%OXtu{l&ifqPL*lb*hKy&uBj(A{>@-t>cff^oNRI|1=6UUKZ_XVydnyoC+Io@D!%Ai9^{V%eMa+!Fx%D zgn562vI&26YH;=_XA-K?DPO9&F)zlW^*nmK>*jOq4(Qch9ofANezi^+ci9+Chte6- zaA#;sVhs!Ls=+{$NSszGC$v7IPErv;6MY_|02cCIyz=_e66#@gtj5TnCh*9bq_e4# zf1har1Dp_EP|8ba3dd}#rTb&U(|;bG^}96U)SoW0;9D6dIID2Ic(lB;%~~hhtQC@w ztb>7vUU^xKNetwZtra?rYi^|I!?jvYrDQB&S7CKgH$D8+d3xmVOHk*%%fpEGSj5_^ z2D$`CaM`7lCBTrUyE?`aX5fyV7UE+V)gui}e=~3FU1Y0FG=5u4idYetNz!gBtUQtB zmy-x{+rco;(&1nSxp3_3(~Fzk=Can{H_Ie?WzH{zGYpv52mr zY6bkwF+htCDaHHcjdC_le4Ky#_xYr%0~uow@Lqjh{O0%pXsj;U9zEj15yO1aV7U10 z^8FG>IrzTfzOE$RZCjUF*}jfl0C}N&&QJ5*8NC+za-39(jihqW%6X8^c0r~JcCszY z&?g2JgYSI;8aSLb%`!px>t)Ev=*7io=-=pMEXmCH5idcOK&CurhIl`5G6bM-0Us9# z_O`~-j_e5SRy7y3#ZkctT&rRIo$eU+baKw0)dV8W_u~`DJ;io|>CQK9*-e_;#rHuM z)_Tm`l9-@h=}3oJ`-fyf1^$z=JoicMQqIl-8^=ZXTn~P}ulA`@8EikgK8XbuGmuK! z7NA~YN#X~TQq7F9R>D_hTt@j(f$TNRAvrLOEup$9!q{YA49o1OGUx z>8h#pA6dBsw(Ogkt4Rrbg_S-XPPnum)sXd-GL$A!o9)gT=|1YUzps(LR4HD?Su|Nl zc0aDZuZ+rSM1t#AF(wE%&@1FvE`%B1EB8Ysd!8`H4i(p|VL|8K6wWJp1B%Hzma6ZV zgzs*R-u4n7*w+9chAMk{w(qgTVB3$4qRVAeS70Qg*gSunYH#3El^B_&H8pA0`~KHF z-fjDI2A?@(lfCo%CBG$0&vR5j5A(!u<&)&!$;Hiy*ak^$60izSWGBr?(*_owE1EW| zUF^tvLL8ok;rjH^K-}R{0ByR{QNnf$n>Oq7eW48Ix%6_x=R?kUz-DW&$c)?QC6OLB zZIzUgqp(c~6q~xK9gPMt3Y~A-_)%GauUVUb;?lHW9T9hKHdbr`St#Kj-REI5u9fP= zZI}UL7RUmiNI_LqUgU88HtmW+YedaDF(_%rcX-+5{!#UdB<5ZYSf~E&#z{joR0<@p zju`w<5uOreNpm&Oy-zKcR$TMHB>ovO6Oe*d3|FLyfn+{W>8Cae-i;c>)-WT6cML^$f>r`B# z1)oauWvp4{E!5WMO~p<4Oq*r~?duzyMq&~b%5u1Z_2z}7XoE*ntV)xi=Ls&cwu($S z+mgYre}}ieCIJhG{(gS>{LNYI2J*tgI!iIjp30XMp%lRbU`2kfp|?mW#$wZK=6e!g zSM_);Ij;$O@LLb1X4lKNZXl?o`xzUAs{Ig1uMG#Qv@dmm@zqh~OnF^{oU1?IPz=*b z_SHO|?4r`L;tw8t5yC${R^ssOV!-9Hec5iGG-D~CX|C_j@xR$%Wxgj`(6Fm5!FJk= zzj@wbj)+tMsR>m|`)QmbMD&9_R&jc!&!&ji(Y(%8k7-+o?on-#Il`S`y`C+-HmohC zratDfF7qQ5jIBlr^YP&bd&T5d>AaL2X|)B!mL1>53dVI!pLp;e=?cuu%ZH$ignXjR zxJLBm$PRi)e!w0t;xJkX*Zi20cN13`T+9CG9$I54xZ>mO-)w-*L%_#72ZjEC+ao1!X6 z6jLxZe_s3Y>){x0R6#qKPKA?MXTy|Sv&9YLp&I7q1jkA-k_~FXcAPh4*M@xmr7=ts zmb|h7a>mS{3RYSB7QtJLw$etoL-7Jg_M6VM+U*_5u$EC<^v9O@lIF!Xc%Sm=V$Sk& zVbIf?({SCQh|EK!m zesC*Gj!8cjAMKTibs#D>w~QnIf3oH!YDWSi{vmG=>A!qbu4;*Y!1Lh8%|YUhJ4Wi8 zf(QUV>W5)}f1Ud-2@F0xRzA(^fgo?ex$%NV9{oGTg99;3YYaE_HeFq(*i+hIxN@LP zlo-Pz&&4p?EPFsy8VLx{F={#-s%jx3@8bb!;{FS=DBroDZE>pNa>hR+SNvbZU35Zg zJ;cv_=0D9mhOKIPI1lqEAVlT*qK-Se&Gwn#PuSdly2h#k%cO&52YzVJH#YC@r*-S& z{Y$q{9+iJj^;`TiC(G*r$ZvchZ`Lh)po*I*oh?lqA_!vkvjQMjjpHvAY`dl6XgxVmjXm>&)icvycI#mY@xga{&Qk0YqojFLe3n(mj%S#TC{E$y3@j zLiYz9>-@X8hGVH&8aO_#210nP8!Uo84FCyf~h^JwLpqqzZnT1TNo>Br7)q8uswY{123f zr{vUY%Ru}rDrWh1SG>3T?--iU5iCc(n`_B{F*L{huIa|pv*2VcxBjlSIPN68=puX3Z2|gOv|;5=QWBsAyR% z10u^GUUyCWy^pdi^3|j@IrFO>ojm8``$6Ta4(WVj-XJDw_Vj`)!d#Y4HMv&=?(Q=* z`Q(W)-R7jjY#ooeP>+W5VT82u01cwq4gHuKesC~gDGe3-X>{>2gN0bpA(MXmN;39d z!A}va5Ot#w)~1hj!M69>p*pBETHfg`*ka<8_lBI%-lV{QHw%|GAe!+n5xN0F|+aYTLP(WocA%(U(*>P(T=cxog9%-nQBh*iId}UUU!c>nt40xRJp7L4 z^HvY1;+r?{xod!kPHJ<$?58mY8IJ0bUbkL9$7CL|mo>tNDQT#?{?i4%d!A$A*ZOyv zi2x#4!_Fj5(gz+U&0eh`xeU<22*-L;E*x!O++A?2Dt-YKhIV-S01`tmuvNv@=e&HJ za52&ByLH?`VvD&lRJ%^t+=k<8Qhm)4DCsmAgyWxWk7|EDd{OJbYFa*0*VDnLmfSu_ zqYP1ytSWSZvlM3yW?8aFYMbn4%{g+pBGY4MQx17nI5R7;#+`kRaBb=lHR%O(xUfTj zrj~G$iSnS-*Npq#W-zt)sabs(42pJWol+QtkSW-OTHTwxpGco3#Rc7P+&GOfVpX5# zk8O;k60mg!BxONIVQ>=ecw47&Cs=?zRW57g0$4GF-^cPk2EcJUA4p_UzPN*4{DrJgLPWk>(a| znj-qZFueU0{ykTv0KXQ|@pI86OC|W9-&bjmk5Hc(p0#u$`%AL`YM9%ROqLC3qKXJd zf^G_`#9w}3qVhT}Q=b5wHtY~rH!7fvPTfZ{x9ZCAYXzc4&`nE7Fw`S==%CFc*Da&!|)G{SO z8h195mfH*rIp(;{eP}#yQDvE+pmuh&iDMzuM>DHKI+I=z(M#XvTk0l&(SFNgYuL-w zz3<|rk>7)BaT!)yp#Ly6=YBkJLb@!xR*@3y%(gD$%2(6=X5MXXs}*TU)S!8s5sQ_J zQ7qaU+oH-XIqLUZLi~?!6#h91%-ZM+H!GA|{~QnLcyaTg9J%}1_I#I`8u^q=B~r)X z?my}^;S-j;lI21ScS zA-6+w`(-ytZhRq=Wx}sg5o_uuLe;!n$PR4fJ7pcV7g~+~j2z zrWMd|25@ok?M#B;YX ziOGOC-t&J?>Ip^&;OP;oj9{tSB9|c%+EB!N3!Y8Hc-9_xw^8;ha3O>SeY$CMzj^G9 z1$&?@n5OJf@!N5B^a~`jr{2aP?s7&fnv8**UO{?hu9-IK6tJvyd=nT9XFU45)jyq7 zB<%`;B&Y?yA|Lpkc4j{3R4Iiw4!cTnW>$+(;ahr&xX}|`@yzs66Y4ZO(`LvzfitL^ z#QGQ7NI<5vyuVY&B&kFl@GM{k_lH5}Lt-OF>+P(47r}xn%nzMJ^*2H8Ygy8E6jT1) z)CuP5%e)QZz^tBa@s{8*vG)4c=+{3mwXk^uDEF`~E(YQi*3l>e^?c+dEwDT5;cwSo zoXUUx2&bO>)7>n?a@T2Ga)N#udhmey1NpElBpP3P&iv5-c#b+6L_>6~f74 z{gHGaN(AnaQN``K-&E)gShnwGvAO09F^kY4lsV<$R*eyzOi+vFyJP~o!jWv}vgWfw z^mQ|E&p=+_j61AXVEa?4`@L~Kake@GvR3J`HuHHHkCE?%ic%p@nJ*mGw?6ZXNKW^r zbUkFrZLpi1w=tHN*(GzAKYfu^X9?6GPww;=eOCNIu3KnSUSs6myOO^G1ilocR1r^a zd$fI34=sFdI0pSl**tl2_ZM4cS!OO-oLU+Ulz?p7#gq!3Ho&Yw2<)rwq2DI2BB&M` z$x*5HRsVKnA%UO#ousZMvg$|bLNIsvV0$Ah3hSoBV4@e9lGv-j`6wh=@x7l^c8XO$ zvQvALGvu#Pp_Tan#bt@lW@prZ3=PX0#r1PnF0BByQ_HtRgu8&xsS<3N9f$My1Fn>M z8=zOG8`)gYgKVP$U8L;ehVWO*0#gwR?`o6iRrTF;mh4|#4L19+%%^-5Ats(Rp{mtz z^uB~7aqSTFgFuK}vr{CQf7`t0!A^EUGf9f%=K~8vvv)6mVf^mw?ut5!m0o^q2s6u6 zr$K{<)47zP_FcxTfFu7%-w!f0 z97MbtooPixAp+M0BM+N zS<8%W1HW__hzo@aJ%qQ8XG1lzf9yKBE&bX0m`BC$)ISPHbR%olTcCD9tY2aw`MFvm z)h|Tw1Jkcej#5M&-fA884{?jZC#g)=?GB32o4fAzbAL(>EdJlVMly73r#zYxoRH{> zf49MzR673iW47!ku^#_T(xi@ZA^^Ty{~%MYsQ|i`PX1>dg-3)cZmB>35j1K&Z5=!Y zNnw}F{Iudl=(q~i_)1+Eib`mq&j5|GFR(lurS&(Mg9a}+_3C(o`d1uPAeZQpoyVCL zRr9xT2jr-*dQR0~C4#gI`)!4{SV#AQeLZv|`^*(*N=YxlYL^qyAabm*5}+jo%;D>g z-nRY)ql@)i9T(P@?&f!AfoXTHpeO)4u00}3lWPBVhCG{qzP#Ubs$!FlqLgx(UUMpw zPJz;*BIWPN_Db^MwO5t&_i0wvLr_Y-A9@W@O(n(IjmFc*NAs9}-{Qh+es_HcV8KI$*3vfzP=<_5fkf(n{;n!!_tOr^bJ}Rnp6ou%jK0Oq<|C*%IOsvGQ$b zzYC9|f5!)wb&9}(9rG!Q41Jbq&7f7!j`;qyDgX4j<-sQ{Y{_W_dy>0mVGWo6d7!yF zWyWs2yR94QhWoEyB*<-vG~w6ug9D9#{f$8&*urp3rkA~JH3w83S0Qk&7-nm-r=_Qy z1D6MOW*YJR;D_n#Bn+^@n153*%#}ys&}=YJ5iTxZD{#5ykUMQlrHAn|gDoTZ*o@VL{WhTEgO2&Mp&EO`mB6DZ%hiw;bmh_v|qbG>f@ZL+Ng*jy%R69p% z{WQB{-=|>)>+$5G>;a$xA3TWUNH`(au1F-4E^HW0{4?K9N6O++_}DEI`&X}Ybhffa zP6&jB6Pfugz)l>jX8uByNZb`h>twc_m9k_<`q!=|p%0)MGka$N|xGY6r0pY^sjH@u6OBy ze?tbbGEgDohDyR?u_#o-s`nAIjhlYD!-5k}KW_Oa9=?kb3X(%62T%LwWUw2<-HJR_iy++4OMYO=2k#TkYTdI0oD45ZenCs$a6+QBGDd zGP|t%rRD>qcX4fw%|rA-SQ{g~8jJZs`cn9Qw8LarhWyg^a1%}mv9+Rh+=Tf@f170% z@RuM;{Pj>@Dtdv!PQ%P=w`F*|MT4phFUr_rz8y4)*K_m z-)yyrP-N=y)}EF}lm$)a;vtw#1=;StIeO*HXNnI1=f-!r^o!akeo*|GX4&Y2bYjLF z>dfqx#Fq=>Ek4?p>isfJp@TzmcJ32%JA@OE1LsVc8q#8|3Htio^>!)%;VjkL#EcT7 zf4oi!W9Hz2|9Ro}1F2t$m_T_F28)hQEXe5)fkmpZcQV>v80AmnW&-SsyJT*#P|bSU zYwI__X2-(TzIV%x!Kkt5UDcS`{|H`*D^r`+r4jt%voec(SW`>?hFM+BQJn1n#uRll zx?IA3{D%d>k`{D-Dv$I0Lsi9-q)Ey?Hh@QjPRHt**9mGKDeds1TI40+qqjHS+D9&@bApJTzi`}MRqmv?u_K} z@NaEy=~;57GHX+{TsnUP|Mjew)hNzc!@XZs#ZHrh_|lLwAV9pZpX3blI^YDP9q7CU zWF|jgF(~hActp(Ee#mg<^oQSV^y*7R$Hka?A?2TH;gn!21}D+x8^>Td2fW=TH*;#MeqqBcoEc^y`yTN2*f!IyI+VTcDkgo`(Hp-r zwN%=TWYqiJN~4k{;WdbT_j7Mc{qw>dU^RP)ixFKMx8+XsZb=VsTbYWmSCjosB3}-X zAF`%Sfno8(mi4`u@U7l1)4C+W?P3JVDEz}8+JSwlygm$8OPSrUD#p`~WZ}|mk<6J& zQ_q-8GquYS9#1H0WS39X!*y}@v@kbGQto9KeYMiLaEOM5=d~EuU|Ht~b7})0cy5HW z*7uz#-XP_)qi9+`DnciBMvY$^$N7r!K<`6Kls)JTL?v4HIr40G=vT5nTrdD~74)s5G=wtgf%G@MpgTCw)-9!aj) z!A&T&Tfj-hDEfVbZ)?Fa(s1w+7)@()>DOXCT0Y!%yKL>kFv9q9Gk<2^$U>pq?jp;J z{E*}vC)i@W=5Q@hU^4yp6UX6N9QVA1l{P%M{GOLT4?I8Cb3P}($i46?cfK~u$Ihe3u|5?4>cN8{ zYl%t#{tJ?1OqF}o`ih|upc0XZu>nUF{+bLmJLwzhPwdif(N)Dvh6qz&v1SG}xTgjV zB2kdOUeM70ZhhB1b4Z5z)p3a|DDDeaL>)3iTH&$|7|Bz5i6JLmt@ISDhU_?< zAa~;9tS2T(>$ER6!1jWyv%EyOq0%4LFHp>58|t@Ws6E%kH8j+3sQ^D|*-aHMeA@j<7TRa4O*R z+l_+gGFhDE9MP4S_p#aD7rD27?fVD}!?g~&{LZ)*PM(4m*mqY036wVpJ|!K(>-|f~ zP*|O*?vQK^Kwhrvq|MAv&9=DaYqXNwvm!F*yN-`@tcnZc0r>UtLTRvLdCNVn>7%3M zl$n(GOsaZwu&uM{F#ETrVWlL|2CV!5?$`qZH0_SJN^6$^cQCc>-SHU*_%c%ux1pK4 zt4+t)_$5~aMN<&`(jrH%QGWWSqS6-p-YOP5QaC3eK#JBYSCK4<6oz!OYdDd>#2)`& z@2X{Yji^Dt9^@npWr{&s0 z=OZZa7$gt#Fdl>qcB~Z4Dd-4Y#q62k(2xBS6ixE@ts4m39t?8T8H++7gC;_`@)u!! zEtZ5zquk|n*@73~ESs$dK7g@Y9){q}Dqq;0ssx9k{#84&7%JW5lb~0U}Z`Pa_o_^amHStQR&UE?a=~Xrwb08hZf$E z5+hBnEF0vg{Zpiv_N*q2Y9_oOQm-a}$O*1P)!AaRn`81lNJ9j&GN`_58MM%$ywE9< z9VVBOAuTH)( zN~$B)CRv=yC%Z`#imrtboxy*~*-S}Oyh^$OGMj)7z=d-nbXq912DeUHu~g#j9UGMS+&U$>QiwK05Bk-ZT4Kd;ZWl@5KH|+x4cgq3Y$yNZ&JyIni z1A3w$cEYjarjxCmqk?!ej-wGM4Y#?kjPhj;;4w0TgIl$gr{!{*?f%y6=xE%faJe|r z${Za{5YZ_=6S-n!51n!xVqcT#ke6Lygt}%(FiHcD)dQ{NN#ze;*rq>3R-(7Azi~Z5 zd7^`%wAe?8>dl0- zZv}Lz$jYboi?gTST0`8uiSa-;I0q*edWLM-g-m-9dbM30nZKCD`*BQg@IWXOcosOV zP8-*We|504)8-i|S7NM^=GA!L5p$~rD*ayXDWy>L>a4P|wd{)dE$fYUCz!tTm6ZP? z2Hz|vfh|ADnhYw^d`}MyVye0#h8Te}%8FwzN}q-fvFOqkUUl&>?2|s1=z%@87O27x zUmFOAGZaDU_-=F$K0K#c)#(U0Czv3Xq3Xv&awBMLYMsYP=5CZkK-7aA^bCt8-m9}R zk~t$X1&{S|;!PgNu3IszvlZ-gS1pNLkT!#6i*V+LN2r{5>>B`Kfm#B$5l!39Y8N8| z7gpviz1^QPy?8U#C48T{+S)Plr~q0-R=byTg`1FTDmpz zgLk<&>p7OZ_Tm5vp82J>VWIewID5XOKhLE>_93iwrL#~Fxyc4R2ndncnj>@5SO;b2 z%XCIkEv(7R`G|AOl#9f0I7!>;*WiPewM6DOrpcZ3W0-wpTMs{b@Kh zN9hd0KLb7BwO`LpEiEUdI6Da(J)J(j{N9)tdrpHjt~7tEXWdoo;$b4Crl?3ZQya-p zC0xw?P7647z;{^$JuD1MK0oDtSTByotdX6pE-E>V;#=UX$uj&*sxujn%=qhl0u09DsYA4@6$77#1v836S7Uv2YZr7MO-X8BBW?4cV>JNEtg zd?VH1Ya&bS@07XJwG_{&y_ZAV`J6K0zp=f>h4w4j6tu;|_O||Dv^=A{>jCBH z@`L*g?fp7dTN!R_x=&kJY;9Rm+gozTh>WX1G?KG7{0({T%A}D6NzKPi0UwTj^8)07 zKL^0S_2LtxKWcB6_KClV#O^rq8-SmseX*H{f(=B+T(7;V62m43UH4 zpy%|XmW8vw-CJmfDFSi+2@+aKmC4}DB)5`Jqw5lk4@xmv`Z0iw!VzSj9cQNNNY z+bzl{A}ykOdXle95(cdqsny?brE^Gv*58^pXHNodl)m!EZLWL{h)ME&H!Ck=Nq||+ z^v-^BUynx(gvA}z-=nAvy`ix-&(?MhJn4nqZ%utMa*OGjKbPpbnlZA%^YM^+Qg+fR zzD1`_z>ImlHErI3U9JSv zFJsJj(uWPW&|{vE^th1a6G#&tQPW;uL=Y=Xlx7sXr2K_RY{9ai>ikcbmA1(}o=ZPGuNryyP|+Td33nx1Xem0a{CCc77cxwlDv% zJDzOwV7f3X^*%ilYVPhapSxmBheqN(wiMUsTOXC(!}uJ86-gj5TV`p0MJz&7HHDPZ zHRtMxr7a`vxLz_#a?@rT+79pn^{3%hTKrV-D2c23YCsop*a$qAaLerE$4;Z%n)tO3 zQ9Hw_&hDyCcsD^A{`c&3(Y?-`;_uX+UmUy>MCP&}7B<(jXN`3aJsls@Y$-GAXGn?M z>ZkWtWA|yho$c{f_py;PH8b#cf(4+15p}pttYoR|IExeyuKZMP#_{{amr)`_;N-z(LcUrE?sD?l|1(wA% ziR@aB{G#E;+O6?td6N!3VSAN+lWQyH8IlwGk4>f)O~k1lSn1KEG|0J*x?=tS+UmBf zo+%tQ$QPZ`b9bs5hu;9ZD^6SfoE)*0MuT)I+-7ea@a_Z)5$?br--Vpo2{6}t;`0Ou zcx+xSvngKC-!(nhuzD1Rjj3!|Y-q|0L}7b{%5bS?c~s6C4_A&fQK?DFUzc|(f91)b zRlVB;q6htjXUtal2HOz>QG5(F!FKrYgZ>H`%?%9_L*(DFvcB-#7W3xnjJuBvR&xeq17t)Smq zr!gN>Emj>P$`=th%WdfdnHn2)_MPV(+uI0mdRju1FxWse?AaXdXk!nkq;f~9K$`?VUSDCe-QOCMqd(OE9OgI}H;Q@}{Nqy;wxSX! zTm_ZZUoqN0Z{5fE7`7P71sG8;`Iy&m$B@ap?N__km{uqqwsM5x%3g9`P_#-7i(daI zS{nqsLv0z^65ci3va=UTDx3>b%6l%A-x;|^9ts}-+8qcTnA~i!d35Yk_?X{`Ws8TS5efP-tlY8lw%(DO zud`Ff=yj;wDC#bt9W^n5Aik>%l>~N~#j4H5?8+cC(gTH!&J#wha2TlsKBI{m#eF*>@dV)h z?RGbS--?_KkYAVbazlAo8Q-kPi3dYT%0c>XXawVn9u7nH4WcSXF66Leq1d*(qzh+uNVCP>D_sDd9Wzla+%%+C($&2^u|KRIJO+!$;kpF9WSO>>C0m_89P z()54c=V>XUvB}@CxFj}_Llgh_Y&>lkIpXR8h_Jp=sLA0Bqs=?!=iG!}88tordR{l+ zQJJ-BsB@;9_tje;Wq%-Zf}99j6tO&!5`Shz+qo!GoGb z`T8kd{)au3F3t7G_&TW$r*T*PY*~k0^_x*v5#uYYpfLHct6~h8rR~QiF>ZBDyf$zG za0J@Os6h=IFA;t+Qdmb^_39aYlCNpH<-57w(?=dWF3yePOt5sKK7Syc`k*fWi7bU_ zf27iIX|#lFRzC}*CLbxnvmS4>YV57o7{4MOr^G&$LDylj6zyvSZ*ozW=%ZzYGAUbK>9f0>7?PjV(;mz&@lFa> zJCcdg1gF0ik>}Ov0}i}#gKy9pZeuECYEC*rF#AY?5g}DaW@;x?wGxB*;b&g(oJs3q zZeu^=gMi0W!kwUwAjy#f!EYsiShwZg`*dpsF_QUf&EZ5qAy?9AB(Occ5|U2UeOB&$ zfvRz4ZX=dwlC9>ov;X(vk-5%Yc?F?9UN}G3YE%yi-p>IiqOkX|WIIgjX#CSSnKC&k z`g#X!?q$xRXF`==fEED5tx(y?6sIn{a2PTE)GP%e7pE=kOZJDL;sJoBROMQRs|~}>kH_bgx~Ik z+l4N$>8U#BJ90bm@iSn4h={V8qJDJjVOE>#EBz5Oe$0xzc&Mif-jtlFagq0;xF4cY7;W7T zzRvoQ@dj2}F)jV3k3+|6O2TFUwZi76*|Ox){7(Ug#{N1old1W9#=|-i9-e*hDy*0V z95)~;m|-<4vVDmQ5@F|^h_nq?p@zWR2?|vo`(A*Gh#}P!;Qkv8g#hTn!TVI-W@KZ&G*Ycc~@pFW!)npExx%-O#os1R^AM(p99LO|?myhU-^ULniVTXx&W<^16Hv>*O7=4skLivD5JwAZ!Z*1B&pC?_-pJ$&k(>X=Samau@a7k-w z#L?Q&M~U?b6x!l=xVFWJ`TZCFc6{$8Udg%yl}bRSrGtGyO4;yt<|=6QYHrbxWQ_as z{@2v9^Gq*pUS#0rAPWB7Rm%;QE$3<9JYhu~bdUKZ6EoAX!O6633%Z z0vsSv@URV)e7RD6gX5Zho-O$WZ`pg2I^h;Wa)5bv5K`3^N36*57u%Zz`Sc?fmw07m z+ZgyC+Rmvl&>+mxv2CMc+ji2i)j`J{cIOFPp zywAZ4jX++oM@fv`D`-}&S}=ZqGSFd(2<84uvnW*lnvuNeZ<=?V_l+CCI%?2EH3&PP z+9{~NTPtCZ1#hIeUCM$$puP5)WhyHO$ofGRXPBxOelBsB%6vhu^%q-Y8zjGm?UOk) ziTh(CGD@LfE=cC(^fc2rMy{-kz_sdM0V5EB?#nwPu)me7Vzei)`f`wJwat-h&Lxk9 zEqzl~GK9LDB1QqrN&g!uakohfgT+s}pzCS5n$6nTYEZicmb;O7iNUFEmPvf+xdZVl zCMSQR(P_p-V7212*iTiVN{i2`&2eeHz}~n`ZgNs^F?49+?phmw_K0io6r;S!! zTcfg&-LGh_yL8>o{+*Qd2>wzA0ZV`w=AlJZ)(Gd_FKZQi7=m{WO0BA7m2o-Ll_-Z! zLm%9ZVMUNtlj<5hmEe%;)lf?i-+C>wk)<9_>*BZFnV#HS740ARPgz*`#zJn{At|QQ z1L=OYKyWtq`X)YS6baD)C%7NlLT{|$f^D!^j=r^42y+=ZDhuYPh92le|MuSzKIMu8 z`B^5vY8wd*AzQGH`vYEoe7O-S3ROHW<-Kwn&CF zX0W0CMNEqYACfbb_j;9`YW2}^?tDv9c&R9h@xBjUsSimWmct=9UM>Sm`z>%w2spziqaSCuL;jlrhPW;+u|GE>C1_RW__F#IGHbY6rYwF?*Yi(3 z_Qkld-3JUt7vM^F);0r~K`o0l7M`BO52MMRVNZ%MrPUo1B*P?BY9g#I2cVRi8(rC0 z-txkcGNG33+z3UXwrGE_6jJU*QO(bz79(%3r-ebPN=sbQeY-+FNwKWSr`_QL8u~;7 z$8S=Z?#0xa2Opabw6?nV6a=)%LII?c3OX2qE8&`NFZ6HRdA%Emaiec)~J z*~bJ=s_bZ!fhd4jnkVgyjNwpCsbW_-i8hK@m6f^Vxv~OF9^}_}f8cV%Tg?fL7&Bz@ z^N8Q!JMh$k+x+ZU&=m4*L0eE&eOIuGY!#%!Fo3IPrSUcb9Hn2-JCdbdn%1?eA2ucK z&|K?7#(9W@WmdtsF<2Dl{2%N3lYuV*mB(dPGkoWvvkXvg2;INWMsy_z?a8gh4F+L( zjeV0_O*f!*AX05WwB0`mU2&Jt`o%si`k@2RFP>ENc&=%hh||f_0X-c>l6kSiwImT!5e&t>_MlCg$@SVfoU!zoW=_!v<=t4;80vO-Zh#-mIce|eP0UJ6FEg!z4M?}d+*3m!VP z82I~B1k^D0;&3n>`~zBK_*bUA(vw@?uYl}@FZG`nOqXDNLp~FwAo3U^n8vw;&JM*e9;FfZ^#;vuf+5n@UiZVn+lKi`C_u2o&h+i zP3$D<>Wso)QA!qRE0dl22+#}S-zDLj z{KO1r#0+y1%mtVuYUb3k1-8YjNKUokRZtCo+w11CQ+URbY$Ue-$YvqQP-xgw^P^k1 zPZHV}Pa8IZ8J?J+KaQ-^>i8FEW)xz#pNFn<(Txu)Itk+PHGq3HO5j1NE(dasUR@i> zDSnAcLtkb*pb|>~@RPCZP02T(n%tmMZ8KC}iOmu=2<|ryRXWoWLQ$E*|GHd}5$Nc5 z(Cof_Y~8?mX4pp0oh72msvTgNZzv`aTdUj>$#SvoB(fU4RFy+T_8MJM zTRlKBc|4}cykGMPu8fEfW*>`p;i`>9><#NMzIi$Vjhr$A*k-&s6setOxN!R<$b)&F zg$c9>mae-X_rJx^;)gQzm#iq0;;OC8r?#Q^`noyIPk`2{gx#t2k38cW4srbG80zg! z@1J03o?QJkoPd=tL?N!n83{5&z-(8Z{JQ#~q`9M$JO!k5?M3n#x$U-ecc-6J|Wj~F4BQD^FO!t`C?+2n*{ z{uU;3hw8^1A#}$-wJXx8WOwMv?Pa?D{jG8)qy<8bK2^+3HtqUN5!(A+8sqGJq?#{+ zh%-wP{EP@d2-@#jLppg4?-qnC2HmtwTrXlb! z=Qzn%4#hbYYOP7NKQ@f8pp6do=60yiyWocdh;;19#?snh!UsQ>40M{?`3JW(#}Q5s_;HZ0AiQn#oRYb1bZwiLVNDMW={ zzVXxu+Yh1_FG-M@J|i%|h*``txX0E}iJxv}h-PCFD1 zfb4`9l1+x~gd5kVsdk-H(Kw=<%kFWnSBC{-$C?^Va0Wx0j}9jFQswO;Diyt_NBzB5 zol^YO4#~^=Ps5qRG=({V#Jcs1;K9!e%5U%5VDWmgLno6V^Kn=^B;43WgV^8Gwm-MeTQal zqAsgxsb9>@76mojA+uPM&G+byxX!)J0#t+2h$o@K)@KV7nHH&gNt7R$C9(bViFALG zKb+4&6)AcPE$>}$I+XoMOq45Lo6PJdzL~BoX(h9KQw=e&3sZ7&>SeszL=2z;f>j_F zWIWTpy}a9c0vc895l8s+YSa9NdA}Agp-RP#q)`5{6bK~^rGnWynLn@w(F#TPV=Q6o zPcS=c%>I;Q*q2$R=yfK3L8Hc^KFl3YOZ`_bR@RMI85n-NAHQ#>n$-q$ObH925L2nrk~E;3tD`1%NJ)} z!@Krgv+>2WjFjUnY#AvY_ji-P4A+O~itnD+@&&0-Zyt_r1a&5t(Exsc??|#|_R9~P zuC|L9a)xbAK~(1JL{%9fm$~zwvI?5A!r{B;{Dd*b3XTCL?xkv?=Wmr4zMMXGYS<+g(z)^FF}Rd->&Y{6u8h`v9fH#HHgMdCR@}`OHlx0btp#zO zI4?-T{vXP&#o~kkQ*lcP(#?}kl2V+K+3n(NoA2v0EZSM$3KC~5_xEq7Vu91OHTkbc#BV*Np^}tuGWSx9GX^)K|$$bz-v&>#)lu#G;5Et6AF97g|}9 zAJxz!KPhGTho4oyG-$PJ8KaE#=fvG$f5c6H$$t1Dg{CwSMG)oyMC3z+@yiRy`c{3Y zYj26E;Uo~ZTzV3j9a zE}B^9Wo(t@M`n?4kG9eQirJttp}T<^w8j|7z2Rv7JW=}C8brdwQGw?L&tWhy5>Fv)aRC|seoQ2bQWBbum;cCTcT*VD)P=Q&uQ zDAAasXQ|4-)AHdi?fVr@HuUYxaZAYvD~BZzb99JUWSjBoJzSd1rPD;$i*xjG`Jss# z19L|9D$zm^C~trn6_2|nwleUdtim}Fj7(}@V?=^opE7tMbtfXqIu18!D*5vVu~Ubc zCic{+OzuvHIgIunNxHpY27)lg680=H%=i}*UBy9Qpg2<3JEl|bK;<#2k9Ir&5N)R4F|?}iHXzs z+up!osFf-+p7|Fc$EJAGWlJI}rzERnK;fEt?EVPUe9QSMl4?`%n z46lHNOYL8;gc`e{Y9W}$E+$WT_^)C9MYD-Z-aVOkj()`;W)fm}3 z^(YkIoH&8E!7fa?-x9r0UPeRsX5|aOG+*EP!1US{*7=B*^Q(3RlQ z$u(nmiTpka5XYpx#f;j&^y}}U?!Jz4w1`zx`-Hxo)qw=5Hxc{_{&aNjS4BtS0dHMU zT>d-hMGyq@5OvLZQ}n&i9Gh*{;r(H1X|U4!=h^^$0YfqFPc|YwdM6%R<%<&Y7hWuh2m z-JTI9p7-4YN!2@QsxA_pqLLdIHJ(}f@Cs&shAv_4hQ8hN9c=xo(+rKT!W$fH1uEF$A$hNB9=H8O&AhKJ3I5QPvE&on?5H+)4`lTH{9>MlBlrAj)t z69+4_>)?-91xL<ISq-#=*m`@@YK5O+^*6i(ayhQdgx@S2a^hu0rbrr*6LCR5`SF z0uE=Ijy{_^DtS+>FYeGjd~CM{$*fgyHKBLToFg8+0+z9SfeKTh-j)yWvAKtwSB=C} z{llf+b)JBpZ^9`BI!|@mnyR~S&+rtlU%>acK37n;^5rso`oPmcDj)Ow3;4sC3Yrjq zeG;W=Lb_P%sXr4x4HuhddB6BOnH zA<9hU(`s8LgOCwyX{ZB~&aRnFUfkOD6U>BMTe#Iq`7+zB}M<;TodSghuTzb4dT zhDbfg;`7dEM$qeB_4Lit>uK~Jt+{dt#l_t8bDsT}{vuPQ3F!ea1_q#uraY;lcwq0y zG!3c;b;wh=BgTgxXzO?1u%G)sS=;Qbv9{V80Ww zV#ywoB)Faj?@txI4$^kvLx03ogkt?Ehv3Za`6I>bu2`x9K+C#A?Ze-t3kM{AA#mnW zUPh4cuw|wa4W-%q!qD`_NQ+n>w79k#xZ^Av1gsn$+YSM0fy5|KX#c;6nG~8Arq0*7 z<-5mA?tfBNJuj6tTr5VMRE-)-oF2Z8cVx}mU1`KHAXp_IUEn$LK2@N#s;Bc0xqb>z zfj^j2mTtWBj~S?5$oLHQ*yCGuL(!XMKa=h@4do|>JaQ1_eNb$jKqy)N^kf?U6VF&IIv1pYT`YD!wNr` z@Dt=t4E?!iO?!UVem)Nf;i)d>+x~YXpYhd6H+=$gI}J z`1vPtnff?KN`=r_C#}|4cFda(OJzhvOQEY4Vcp1m>JN8PKH7&yK#Y=Oi}5xE(nJf5 zvPA>Bp*D)^P<8Z6*c=fDrHc~3^y(7D~zCO;bkeBIV!i#b#%MX^J#N zEOqWK$gdwHa1B8gc;k_*+%-Fq6)(*+APNIg4C6l%+_Jks_$u@fp6qKM(LxP}`gCFQ zgF}Do#!o$X!W12HAx3Y!5y^8P56AR-K$h0^bARjgICsZH%UE!Y2WR6SWtC8oAH%Ss@OJdc=pwDNiW}Cg zD!EJk(;Tx@h%fFqqh|b2cWba-s|AwYw6#(doXa_tqa>WiovmcM^ffffbDou?0V^yQ zaoao*i+`i?gsMr-a@t)|=a3awrzHd^gZxDef6Bc%i#k$_vQ0vSU;Wp4A_b1v+1vr_ zmo;BhCH7#^>%9?5#EDKD_$D5rp|<3XKth$I zRHJ({X`ZC?UW_J?nJc?n`_FYk=(LSXq>r8zP>S81$ixn2&QzVj!S7z>Xw8=a)#`5PR;gamfxI&$>Iofj?`ZdT-Zv#`Tx5F;7958#L_aXOd1IjH11?%t7gMGqZWtZA=gG zjoe$Wj;)!@bmUG7c}i5EP2Y7w$V*4uMy&10popuDIwyWv-PqqTM&8FQ(;ebxujJJ3 zQ3%z6Su%k>yU>ox{SG%k6~FvshZ1N~#8*&R;0m&t771`R*-2d}f=vsf^7t||yF~sB zYPAcq9y3~a) z?kKr4h@Au7Olrti8}e~ln9!58bfvRP5QR{)*rqA=_~;0Js-I2$!OMZnwBD;{zwUSb zwG5e&fibr0qIe1ntl*UWI-j&^LOBY{J(S7QJVQwM+Q)_9!Bd&$bK0q`B!fbiR?1Su zKg*Cv%u8y7==GI|W&WZLJWCkH3>U~Q8@Od^Kba*!q`_(8h0fy+l;3oDT9<3}0 z=-1l+<GmwSURp@=T|jw0=wY(L|#v=f%gmN5M{>|M#5W7D>c>02|}t7 zF%>dg5ulil*?uo_{I+;o$EsTib6%3v--uq~ zmIzL#T}BmcCifh-1oGs~iflH%v0@Z?NB9Tsf{#u2wm)lRju$ul+d4B6^2eXo0Rmk3 ztWafs$uy5Ps$xm@Vp-7d3*lV&)F~ipIT++SwuB0jlZW>;Pe8^(IZG||eizcw_o{0L zbxr{waIdf{pgD`RRG+#J=>9+P;>7)>j;>gG1PJtT1!-^_=D}Ev@Grm zzn|3tjYG#dU_D${jr#%Gy0@aoS6r(Qp+#FvJS0>RqrBHD*XR%VfI!W zRW+Mx(?Yf}wkNN!AKT5rKrs*c$veFk)K)xlDWu#4>s(ICCYwtpbU>)1PSqRKn*(6SuvyK3cmF*@ ze~#5Q$L|3KCXIiw&H7M{bvLS%Os!zJg#5ntD^hp2IK#n&J84;YrPnENC}H~>gc}zI z{>b99<5jx>>)hDV&GK@mG}4w;0fqFIL{)sU`BEb!@0QD|dM`{L-(-K(KffQzybXp* z?-m_*xQL0$uk{1U8Ux@nnP?oV;_KK_6mrp!z!7_oOG0$OYLbzVj(=+Bv}M)J7x%Ss z9b9cqqtH!7A##n1}ju-F-Y%_wH`gQOWfUo?b zoABaNqrF)3rFa=-vF<^F{k}+jiX*j|t?`GclN~waALgJ592|Z-l>$|NZycS)=K^mE z2PsM84t((OAh}YRjFS7YXaZjS(6Mso^m{pk4We&^XVj{v4IIceqk{k__wc~dG&ls3 zz$3l&vCXSu;4ENZ-7QK^EQ2^Xs09M=7wkMJKgTJD_03*izN%*6`=AQVwhncZ5pq&1 zQZ47KBmC-G_b=vM7u&NM*+I%TJbK5$Cl+-U&jsHs5-kmwGiG1a1UP5h>AEDyq4v4Y zb{H^WERlkJkK$PJADoWA-EnOXV%>;?T5BfN*!7~6tp7I6tJ%mm=q-VQ^0+#16 zQGRi;{p6zf`n2ltz?}nFz9Bn}j670IfFnFi;C4QJjyHUQc90Og?A%Ap!V*qvkLzowv=mDH_W=BaVUId17r1LKWIFEC9!*nQ?>Q|Os$h!* zki8!fltzsDM>wE33P`c9W#Y`s6hipu4Fq1Ys6Z><<+0=6IZJA0++b*!P#GGQ9E^Je zpCdgVI_2EYa9ukL#QuSCo}NHbVuQOMZ&0ChkZIOm5=lz4H;NWL3>trXCx z%Qk|Et4qP@5 zory8h`wY(lkLc3+nj~D`_gr)jp_U#7yZePMGJ;rm-0x}or$4&pitTkf++sAa!`-?M zLz@pAEfm3>9Q30tv{COn*gUEeX)tR04kj_JtR1V`($!cWs}SSJpZK2d@nSw|-7^Nl z>U_Y(+O-5(4*HFRiw$9cXT=tVYjf8h6VUCuG}y)t&Y)Z6^@(XC#cBITyg&xG==>IN ztOuB$&|W*PNzL>ego*rqsg8$ovDMlT^pHLvU}&dsImJt*$458prbdngPEL0=W7zoY^y{@@o?S`~MjPPm@Ua&mUhTTfuPrms?ljbcvLYjOR;#&8SZ=Kd?Vz%%=b zu+w@5-r6>)!BLHIX5cM zb_5%D`|l~owIu&{0Nx~>jg6;1gkg6hVH5kPv>!VyFSSw41$^;9L?kCpVl#yxz+-+l zqj?*n?UG}&sbNb_-$ohU0nXk1m0zQyHkhUlbcIS&# zi8dJ23>@qpf}#YxBsDQBGan&5ZC`Mzf}Khh&xII)R7=xl6F{$Hqir?~ShJSe~PsCzc!| zfenOX=yaVh;P1$uQwGTPQ4nv+%o|l`K#`RP#|dh{qQeTY71&U0@?F=MeldyjZ9i-% z<=my3-iWV2GIG@S!(ksN_+f(e6_onUYVGszfkNL~EDezxK*eq=e53H_w_Br-+Hth$Ufo(Rb5i21eT)6eyXJ~8>m zF4BZsr)J751y5s21%bK(*Wb7YaqWeXCsS>FtPe>zK*_aU$HU`&_+-{4;9G_gS-2-l znV{vp)hBfQfI84AfdYs9lBF08U7zmy$S%jG_(Hj6cU!~Q^ovFM5fPH^scgr(IK_Kc z!BxD-T$X-9qVd}q<@mHJwU~_-%vLQe?6fuMKDu*-YL?M_kaS`R*ox zdyb3+g+Jh3*eSrswqugY-I6zgbe2bPHAJ>@ZwMhv{`IqfrXZxt#N<^Et!+N^O2jc6 zgo=NhGYMhbf(5E-a`C>Z^{GI`PEay-U5?d*fdn_%Z;REFo;+aHE(evtxtIKV!=sIAffdTSKA9o9Zp_cy z%1F=r!_CJmRxfPFkxqK>;5>xay<^GRkl#}tei#eZtD#{#EB`z1Bg6_ieDeQy{-?(N zAM9YoPP-pgBVk|jFS7p2;hci$PmPzCsd=y}K}G{1&Yt zi~vT$+|5s4DoHehe+zBT^;sx?sH`otC7eNhZ9+MuX( z0B4ne?!g#Vh}{CC&3&v?MSIbBE;dAHO@Mfl)%5Qq<1@%lZv8}`f-D5@$NN#rAN>uF zZBOy+eWx&Gg=3s=_LjB=3_o;j5T}QJK}f$l=g85VNUB~vY%xGyyVHGu}#3T3ZhXk#8NZOFxj`(Xe?myx@uxO2QO9INHDLZ(hKdEDtm>lL9k6 zCSnTEHP~~8TisqS<+=gqJO?;Ts5=ld-(RKzIOAe$5NFT*QMDEBw)EGCa~!HTdw5Hf z1s`T4NnXx;d{X_GiBUx9b8QJNZ=|+Iy?Jay6qo5bp=U;Sm)X~+XMdVjEZUU6{B^sQ zvars3GNT=1UqsU6%NL>Tl|4MrWd@ko^xfZXi&+j(qLNWUrHhAInL%-98o^Fd4c~7_ z9p>k#^ukEE1o$0xY|-7lbJ*Xam-gCxCzQAw)W(-et5?{~#!b*M#}0sz8Yjv*fDGrmNcKY&=1%PkXj#3<(!zfvF$(zvsi@tF4bE$?Um}Mavh)EfKeky;? z`kt0n>Sv}(o1RPUoenN>x$LkzzSQVDn&`Dq;L*}ize>rYplo^%z+%I-Vm=q5g|tI{ zx8|k$32mL2?C*jpBri^z+~T7Oj-r#Nj3GrnG}Jb)Qk-NAm02Gm3t;CD^)}$3yq61n zd2FJbFoO>BdcZAk!%rX4*?n?!RNZCGe_;#0-r?XD5_wrr)|#oX;}>MLbTG8r7ZBjo zJ}nDAGjq2NUWcBcX-);qP{}g%%u)OPShF%5W`gCs$W6=;O~MkTyK%IW%OGjvk!r%{ zMMJJ4WvuF3Ov-*i0yd&+iX zk>dzE#NYwU6dPfQT@9`z35j43$#KKlknDsS>n9NFmpchffVqHF_zwnS1KJx%7qMoW zD3KjdTdJ<5=7nU27k-{_Z;HCG^kJQ|QSg1m;>{4r;#D6InNrQtf)f~W{y zcZaw!1G%gToJ_4pY3+V=wFN2ihY>O*zo+OKdDk=wvg~6?jeJ@A;=hoz)2JHIk>-Dy zho}8LekSW{yOJma3t$-1Nzg8wxU?%FRupbn#7n01SrLtasr((y(DCzktO523M{JL; zG6fgEO0${`OXTpmn7yAymYQaSbjyJ5&AUYgly4ahuyjlWZ}>4|yr5Vo4Vh-ltB4ya z6Y-e2lX_t0LGvI~N5@RptwL?*J*#gY7xPmGyo0j{aseEANstoijk>hE)(Ruz$Vp7G zc_~H?)J}k|Pb)MXiMHNq5fgifN+dSQ`T-X|Uf4s?R$A`F5{}twWqg3+aEZx8_dxC* zCjk2l2oq+rXw&P;f<}CXm#_X4ORSA_Z94auwO6RIS6oCCmIs0kG)S)&jPP*`UF^H zfa6!Z&-7@n1^V2Q1EH?ih>S)GRh@G=*tW8C`QeKo$mpdp|3x?4{(M}MZXu-e<+$IV z!X>`^UjYJ&`Uvqkep5sQlyFG1ikEx|l}C-2fQ*amo$isY-{L+pW;GW7Wc2u}-f6%r;vV59;*4R$)?L4Q%0uf}={z&?p?#1}BKNqWIZju?Ul~yHr28?Wc zqp8QPbkJHP(6HCmoKMhjg>}@Tn%=8cTo=zfORiqf8Es2Xlznm+aLunS%n&n7udspI zYJ~9Z%Y`{URA*MsCTdZ~U2L=~t!X_bWJ3_F?ULqrH+3^oTge;7vy0LUAS z(eI0nF}Q_ag%RU+em4?-g2j^BFcdUG(3H)E!UUcTb{j3iV&-D^$c4=aPfK`@eO{mw zHbSLhVs==cJ#09elBhAk?oLtnH?}nrWBKp&wHwU!%hFQ!L)w|?OweG}<-nWQy&)7? zMr=51H~tt{4mDG_VpT{u;^xg50C=zu2RCx{eMJMKfy-A~efUx)Ofh0k`r?R&`=t-M z{v6$4q+H%4b`imKWzRYK;QGtRmhV*R_uoFFe&FdI2kB##8ZzOF{_x>_G_j7!(=PQ@ zK%BjSuuM6o{AbUw!Gey=0{;(v_TRH-GHd=*p6x>w7k9bcC^tjUcQppxj~|E}#*Rqi zroZ|Ed3!VGt~g0AlLEDODmo?ekx`4PRC@CV_!G&ozhRBZK;Guog2`(I`}J1k_rIpj z%-yPuYWtEL#ja*EB?Idf%JR@wcRi+E@}xj}iR;14QEH?v179lGCPt>39-Z=bMg`xt zCRSZ?RGyW_`TN!B0hmVJ!U=~5vw|T)^`SaI{@l{Oi_XwldhBdu9g~v3Cns(MI!)Ty zV6cSEM_SXRBUfUjN2FPWQ;D%)vZps)Jay`2MS>1MI}B>BfLtXPkKC#tqKK5)H*f6hq}-ARE^lrBoE5_ZWzV z&ezjcpbQPK{EVBK5DtBh$mgy;!CRM{b4wSC?ftfzRFQz=vLni$yOy?yEBIp!t^0(5r zUb*e0ckh>YzEhPK)CN*S?DVqat@Wfl_x}DOrXd*iglplm4%OC3?I!|REy{ol&35c= zKD1Xzq}FEc()S{^KMj}#tzba9RDzQ1@m%I<$pjyk>a+7~bucsm>|bU`cKNB<(oADUIsR7|k`58B!DRdh zmiZUP=s{{iGq=r1e%< z&yn4Ff@FaMyr*-%7|tu%XfCV9RYrY1t}(93^cjV7McRFH%*f=gG?zEIJ@{(@IscN^ z<(y;kVG4;}atgWEuoeiqOaw$PIn+e-^{U>gL3A9#L3W!;t-kJl$bM6MspyF8JgmF? z_83Q-dLu7mySB{_6<;8@Qlr{~RqfSzRHbs4v{Iw-E@_g#m=^A{Wl$= zkl)Ebp@qK-07+tgJf7$tx~vs^LIWqNhg8*piGidPp?RS^LJ3S`a7x+9rSCoR?IQCY z0mNNS#fFP`lxf)s!OUlC5>8 zp2#)~;lv?T96S3ZfdDru4lMd^l0-t_km-8xD~>+*#%fA-<@?4hLdHs%pbl(_I0>t} zz5hiZD-jvk026`A#Z{ir;J_Bf4F|Q*n(Q>1lr$!CD}^YZ=## z{jNds&QV0K=H3D{XzmjA(@x+{vu}^o6_dh0p-tUf|EhWD`gCvHzj`Q4+HSGm$_?!-2YjfjP#g?A_eap3NU5c-wBLP zHNBygsCe%DOGvCcRe6q3R%d3VdHv_PuR275DCmsfPDo*%dMcL35Q$zTb(VS)h_>BLt0fmUmn+yvHSI=aMb;nWN&X)Avw3=!KsoEs(qPsWVJs+GRR#yVGtH}*7vX?FT+MCuEaUS zemVLYI2WQpY=bh@vXZe39;(GSv?O5=z0_Eg28>;cYm(i^?0RJ)NE}%>NV(r<%pR|D z5N`oG*6oT5&>|RsJR_01HdgW9k|UDxc}_f=4?#n1;f-389+rVK?wGld_;@uTWTl|nwEfY^>LQ$pC59u%c)+@Ax z*9i6?tN^#yFYFyly~$N+@1zIxCFh3g7f7E|0a4;N97Ekg(LY zCdyS)%G@q|%??HVyyqAJGmbNtsF$I_$7YTVW_k3#S;8xADgJWpC@jCcg2w%Dx_^0v zRYy_l%V8AEmt|eDu<3+*>87)cHQ>YiN<^@{o=duAIrmHCIz?PI>Vw?IPXqifer;N# zigj(`wFwCa>BZB=s$nawp`c|tp*^r)=Ey69_F}0l3K*c}z+7x}`kr@MP##f}R5*nt z!pd^{c3~hN;&1`aO~!k4ak5Jf0*?w9Rnq0g2cOxMvNAG@M9A^HrDe*g?9RIa1T2q2 zR)Q6>oAmw$$S>Z=fE`oEJ&-F#7z-t4=X@d%X5@kCeSU?%o@)o$Yw?JQI<`jg$JH?m z0WWF+Pehva&B6(K)TaN)mGu&a-jZ5M@zW)M5GrcipJgATAqfMoR!*^FBNl>(^IBjg zqV3VYtYis~F6gV~hHJ2j(E)t*s&=U&LbjryWh$kCbxVc|$FXic5P;2lq7NP4Ix7>= zBmt2SRz;0#9kI>I2@h-z(r9vq7Kv0>9SCS18U`jc8Ai7bL~vFZIMVzml=)LmgJ25XJHg!`!w zf7Ya#!(rw2+_U`F18_%YDJq!7cg5}yp4CFiHNw3i#{R3J3EzRU2 z8u#~kHD~Qz?tQn1qG10{EcLj%frC;UHc8xbQ(To{Hx8k}qO&5n#uO~fwI{e(DRw9q zR{8yXCCsVl&#Jxk_oan70i9JV6p4}?a^^vF^;|-4ZTw2I7~t4+UqdLLkEd`y(p7vy zyCrCPDMO>{C~^b-J5$*_Mu15TN%e>1L)OvG8;EUSg9j#4lS>x$?y23vBK}L ziUHcL6A_wfTgD#~tmVn~k$_0IO7(K>fU16GX< z9f5a0++AUcHvtXqf?0vg@lCU^cGq1W0+I&oYr@mDeI8pvS&M00sk?X(qGY9&zbi-% zUyyARA5C5$E-8of&&&*tOG%jkCH}*jrYC8NTb0Z@_udN=#QvDb_66^+S<^tZU~nxX z(o`NQty>ee#k|F*cM~38@7Q~`z36w+%e@_P)|}aa(a2WT*eN^~ z&%+&d4~h2?YQa7nNPkcDqnUV&jeI}rwX(anb!)tepX^v$@t&*z?#_$J4oGekmox(qo_1J(H^qWrAMxW7smZ#N;9C1%$ zjXK)Qw!dIvHD2QO$84ie;}krb^>4`S%id?ZFr%wpi&=ZkHqIp17(dcy&7Wn_-MFtn zH=;a(H&Nn_$2QoedJ+h%)UG0;BVszaIbOaD(EKmj-toB;Fih8sZQC|GwrzH7 z+xo?}ZCf2X>Daby8{225_SAehTeDTO`&T^gd*iy@9&>+XzV>*yupauGZ-Osa`)4$p z@V@};d8v~GAfV*OoyE;WY0s2$B_r%&`cGANo*yT|tlK+!jh~sE(J9Lnt8d12-!%XR zxjtdmM_^4PR?WMf3f!!$N{#M%>l!i3UlFs(^m3ZN+c!X3W{*k9;cw4*_3%29J|bAi z%lf_PYW_Ua*6cnjzS;nhonD-cXIP~46H=voxGBN@&Vl@)?PI>yN&L!f?xPqkPFXMv zzzoSKbB6%%LO#65o|Z}+F$084a4GkfKo7(+0L?CzHWdm!xKN;*)DO7tcrG4*!$%2jvLvx4Q+92*OBfYFsIA1YgB7bMyc_xB zj{O6AR6#pzkG_xI-nqj3PmY|7=YhAXohM2^)-NiCqPo9}s;3b7cM#Kk1}5(H<3($1 zsN3W%^ZP|?blNhn5z}|n>1cqp!L6j4(}5LgEX{Ws$oAS-fdvv0^WxIR1<9F&N}63x zbk?aj6DFE=jdc}ESMnB{z3qfn?*)U5d_}Y-!@39mYxvyLxN862f`3$Db{$r3T;JO^uipJ#pVz z<}uz6k&_YfGI{w1mds#Pdz~ShsPfsw;T&){9%m==Co)httU$5ufoAj2tKX;E9evWq zgq&HaRp>3P;6o|qee%yI=gUtj@8)zku{tmAx^k{Zrl^yhT3K6q0SgAj1gt01CBWt4 z%GX$a6V+O6<$OBP9h_k$w0i<4M9NQf^M4BvbN$Y3G9X%8A2{eeAH3^NWA@r(-H~g_ zhx+FUHeo@DN)fpt0<8Mfzi2EtXW`tNR!oi*Y{%B9e#(9%S-bP}GR~lO^G+X?LE|eD ztp%{zI$>EJ#+TXvNIDYx5Rn`B{{;ECBALnu&GUULD}LXSPYsMsbu3F%yjcSS73 zaFydum5NP$I#-R*|N7vm9xyolX1gje?LlVkJ<%ESU$-oxByFA0O_uNG#YA)5QsBRH z6IgUQI&r{z4pp6|ge|KPbz}T*)?e~EMf%uFk0wZ=vtHg1C38x(M_?&5qv`la$#ZwsHwN)f_-i!Mb(?oWqaRR~r7WgQcVzDG7TeQrP^r036eaq?WzoCDpDQg%nuQ65Aj|9j{o$Vy~RKl9j8Rm>mY| zU9_mwW$n>=*X`b+-|Q3a`mpKjaf>VTv&)S0C__vfl3sdW!B0Bl$vf6+#1XK)j>(~~ z65sjAZDU*7{0UPso2M?W&+vN=@)flH(lFLiXv}dO)y7?0I*D^uoT-GVHp*>5yj*=3Oy01<8 z{Mi0C4}r0#8GhtXZK8HR=dRG6~W|u=Tt0l?$Hye!~#F-k{EEmygk8Blurp5mrqCPbe9xn7vQrm zS80FrdHa&x z9&k6?TrphLK>lT4hf^t*ovK7K;f{Lep}R0k?GY3|vvtfCz?U$!fg{lk4$**E{Ue5U z&@OMD$93-|{;_|Fd#2}kjQ23powcjpwcPu9(q)d0x0n-NX z`K9$n5FeKv_^93;mNokGqID6uC|EYcYgzl;+iuV|)MplTs_k@(z>tX|K(8d3?PLHZ z>1Zv>XKMoRV2d*r>=)S&N{VYbmTIB zp#{V8Jg{o^V!bN+*=B~N4v zrzbgibLG!$U>G-T`A4WP@lx0aDrt2PA|4u2YSyUQU_{2UICy{_zHNbE% zlJhi(d}4{hWmd{-LHou~j=9683G7HHj>`OCK?pk;<&No{{^;F_3I6l%%S^_Rl|R4& zP$`~GzM7@J1f!{>VC-v^H2gN$Gn99!WX(t*DO38{EMrgDT zU)cjo`x7z-@PgW`^?!%SAf8-Xg{z6un4JSZhYCvnO4~Rct;go?Y%eIbG9!t%uSg2n zBFoJ1agmNylkA-N!p)%s!<&_I)JbrBXr~0G#bkfr+%^)y>bsS1CV&F)F70*$YwmNP z#_DtUDs9~{Fw2}$P)LD<5XyM}ZY<1KNs_(0Vbzm;K;X=`J~1ZU_wVaT$+4N3+Tx+| z1$G#6Z$b)obX(`o>+v%=s3>Yay^WaUVGrEJBLlE$hw{0V!}2R$_a`Ls@ziDnkvtbH zH^zc$_P7K!<@z6B6%YWQur4&Ns~dCTunC5rbwA};us+*k$g>C3Mhx~Hnq}S}pPFoD z1Mt(_RfNx7SV1@@>NK_L$;Vb}ExjBIrsS~8`XQXn9|TBNFhx&O*pxTC+W zzCb1>1yEFEr0Lb+qACS)6j^fR$T`MnH+aO*CX7Pj!Pne~bxDZRc{u#9;mSf75-{NP zo&Wvl0sMbIsr`SaVlAouODguXB5F6|SUF;52;A`J{j{`ms>cU;re_IY*>J7~Rhkxe zEy`~o_#exaxsISj9GIVDe`=tm1^iJ1r3>%FW_=vL9E(PxN#R=h((!NS&Z*>YGPd29 z`6|Sb7Qib=_T8$*tCCyZ!6%}&y3U|a+h$$%Qrk?}Uw9~#gIE_449S7sy9Q)f;6O*g z0n|q}a#v)IL%&U2l>tMA3(0a4V8N9gkqA%bI*OYsZ-l&>Pn$*{ixlcEGDG!%1PA;BmvZNJla6+>1mHR4XG4&Xs3bj&Lf`EsZLrfW}xXEsB{-5Gb zToKZRztt>;6FCN%@MkxKV+^h9x`nOcV~t?PFf=Piz8B&-$XRdHLMxBxOf%W$tb*SA3pY(Ywirq4DdH5N=z5zb7M+8!DDWll=ZN8xvjy(&9jH( z8U@=@Ytdg+w}1l}P>3uyk_omiJa0g#6xN2Md+4uQ1%(igZ~uDMDk5HKmqOy|VS!&z z*g``MC98f<`|KW50YFSvH`%4-a9P~HnjEYzc$#xfD&xKCi7;T?mPUPeSNp`9_%}Y+ zrrOtDC1(@KBcmh2!I2P8X&N;MeMx3_sbcT?4o)1Xo=soaJHNM>*`O`%va%M)*g{?I+Syvuv?A6l2I4R0Lul zB}-|jHC)@xq4CaZQC9D@4EkwcrWq2I5@LVQ6FJ31qj7EWYK2)3ZV@g)CX1Z|53O1U4Qgmsvq4*ouxO+f;AS+t&eU~ zlEJK+^;0BX0n0qX%Ag9D-#MNT>`Tjvy-^bKncfHIo&+=5ZTzQepZM(roIcDGll>qt zTBnn@D~tA}nBcv=V`%Km_yzCr&6RXsBYOP^M&ut0Eb6L1YSssIdQjwtI|1aU%J%Z- z-hgL?W4=;l_pUuo6y`Vu>G7(_p8{yw(0EobVvLVUiy1HfvrS5)L^o>M%f!84S5o13 zxvbt9t*B&L?pT-QS~(=>fx@Pmbvtb9n2;^>GIHp|8|KrEM6bv-aK}k? zGKO;d%^^NBMW%DW1^${cm^+{Hzd6ByO298F0;@zU`Ar7I&}W)$+z~H>iw_!AfeT8X z=NU?S^%ruWpz{L@TnF#gD_tyIKPU?9$buBgV5hSFtoZ7+B85rXFJjM;**O@P`mS1@ z8}DFK`FB_vf`GK{k8im%1xNjPU$LZo!=Kg(X}<}kIS%2S;6yoA{I1l-8Ia0@W56xW zD2yDVgmt%@xErsUUNq^{<=qBZWo}U)c$m%I-E{;0x69Vo{f`xRXOnG2$E{N@ z|Bq@Hz}{6>OzzbX@G_B?K~dOrBU*zqywRsGuKDQd%5lqVx%R2{ANG2%y|lUorq zkJuya_=sx9w3{p)vy(B=+i2k_{lq#;&s^KDIc@DItLLUVYh*$^Y#vVXVgs>-yy7DZ zUiP+0YSc!FXGh+obxb*E%8xSTMt^Q_UrpEsg2Hh}QWxix?v3WpO)Xf#3aCBK1tm2b zT7XYD0+mE0=_ZP2JmO%ECQGG0!0UTQGv3nC`btS8GT_)yXT4dqJ_c7^kjo3=2B%WNZt{^z$PW5{4q)e9u#^qCG}zdTo94G z3)h9&i%_$o7RI_}#4s*nO|3>yDD_vJXWP(yIEyOg|255L;ntiWG#1;Uo8baO7x?8y zIhNY%$!RyoA~qo9eW;1a0N`!#=9%5rO8~jFbh~0N82qaQETg(O)G!gBaYW{|xMDl# z78O}pi917RFw0Aqcsa0RQdvG!4{1dXR&xvDlGpc9PFWqa_V;1!y=pGd}MfGTiY)>(HoTPi%Er{1&woJiZ8XhCK?Gvap)=yw+eJzz3J*ZjS>Xb3tupgj(&`4T1C-J7%#GiEJZ{ZWp=Up3W8lMLDU%X&tpdN)u@v*p;f4;1V^%(HWp zFRuD>8A?x(X)Y9N%B?^df(vBy>jDWZX%I-KRpq2@0mL zU~l$n<&4l>k(FCX4aiu?l_0!C2Yc3R)RX@pS>Ba5W#XF9DUWC0PnV3oPg;MV@69U= zFv76YEOEq&WH1|=)i@DrO`QJz*T5^a&+5orra0u#6NT{MqBC7vdnY1z*hWDUVj^u2>41U`kT+S!^iV&_lS9h zVpP1ZJG@4pB1F2F;fe%IVWb5e%p zQnVkr=i`}qi~#yt$goVh@=Xevj!*XppKDx6iN3Oix`2O3O9*niF7@y`W$I(xuxj@e zC|?V;$NsP&nW@Jw`3f*%6e_=r_>~#sr7K{NRD23t)%c2D3TH5M!p$vk8F-PNgCsf5 zi`a<}D4UT_DGZmN`9LPaD=s+_PY=0%`v$S;PDVu|+X70Rz}p(c7dY==p#_HTC?QO_ z=LU2^{nXqCaFQ64-7ySfN7F&LyXR#)aq6%U00_H)z4WzOI~Cj}=H#x!C1=OyA1TM;M+b((Lj|5?Q9Z$=&q?y6+qADY@bW!eg39fTLFdVs~#2Ad1 z&AkOwBtZJ^kHhBQpr|ZCtlKc@_TGILAIUx{PW}Qm=DDPQQMsssDTE#tFovseVD;R_ zlq(RNv2w6YrYDj>?0mS6)_%QUdJD_@N}o3?8o=%`3A>+^r<=vyX`F%_^vFJvoQuw^34<4wNJek-kwJM@q{+&(%k#pV zl|p)=S*YmXlm5bc&Cq37pX7HmXGw1G$i>;gBy<=6;>~PA6k9|D%=H z4ZyNj&<60FOL+Vt6x@^BM9WEs_luPLKIuq->303iK1E)vR4#Wagcs!-D(U5ZPzAPg=8teI9<-WZ9VEs59_Fc}durGuj1Oa3iUGT#S0D56D_aQj0J2^T*7x000r>mmOZ^uOBuX4ZKmDkY8uFQSh2r9hOGb;Pe80 zcpiD4iufx);@cK-WDdx?+<6oD4m~1MFOQk*RtWk1$~X~-tY>FO!iOJRr7)QIO&GO5 z!^CSOBG_aETXYJ{r|3k2su6bG))@I2;{1U+53`HggIFUv-%)t2;trwn&Oo|WkKx$CZoq~J zcVSFC+WeBFG8=oFdeSN0v}V$x6T7qO_aD0_51E&e@x@PVc{1yDjsSHHxTBEFk~xTP zMc)(jFC@-P*Z}O~sgN%V$8)@4#CP-QomdEQqtAilFA<44SLvOYXS{ed5253%Ue|snMxidE| zP?TPZWWw3*qvN_**nl>{hb3dat0D)-Vg7?kufP98tD>eR4=^X*hK08@cW9TXSnJUW7?m}mM=+~SkG`7$4VvG4OE1RM4Vz9v?x?KzM(`1Yo zFZr2Tk$s@br+lf%s=!aRz-46U1n^TSrv~GB|2;yPT|Xac?mqBF0OAa z7R7u4m4P?y*wDblfySJ&;ge?wco;sa4%)ja{jWV`5nBm2E;=}fZPHKHfZ8`h?=1>M z49~{;CLo5VX1A*#F|lxzJc$Aym&NPo_%D={sCf0-K=1_okkQy${K=d7<_LMq@1p}` z56ez@EB?P$?wN|)tz2S^tu&o;Jv_dp-qR(YSY_pnP&OE+OJbA(oyw!}=5il_B+u}^ zj#TKXZ`fG>=;7*dDhb`yLUgF6>|+^CBjEbblK|l&>sOqBtZnK$SIbugDnRqlLG*3E z8MhxRZ#c}zR@h^NrsSxb`glAG0kqCbGfmh5OhX1bHN|hmTRnYPjMe~b!Xr_u{y9;e z);&P(YVaeww|`~&n5m%QPlJ#JbJR9r8qXLbT%WNR%^7Z#alIk>hD)V56qpzCtT&IK z4xoG0s9794I>c)-0@+rj7d{@MyTW4;=`X8har|cK$scBWzpf61HeUJ4STmH70hFj{ zQRuLpULHjVhF`_LTaw^|ZPFl#^2M+7H31SYp0cteT{CJ{-TJOzW5y@O#vJwop#fj% z9+&jy3qqZxzggTcUaPs|f`hlo-V0w~!U6MWkdx>+3B(jmz%>s>|2~5bWzMVb1od1M z%*6k%&?;bM%~b}IJgSSO3M3|WG3BShT5L}Or_rH`RF-(DF? z7rhzTjd6Hus#5cmKGMqAM99C{2!1-C{H^42A}b61%0PCkx{m6(%AJ~j?!FBhg#eOw zp$6pr6v$7QbPdR7WK|oix}}rUAOd;s-mVxlFKehaUHj<98|0z~AJb*Ue9Q#ync*XJ z4xOurJIVKYQP<(Aj5n{7#z2+|#~fB1TbI!vWc$N?gNE2H_1-crkzy&CgV$sGxK(k2 zw20wK%$_&w)gNR3hJCCZr2QbyNddflHRAh^_iJ$B=Ev$AQRFvtD%r4VJ0&i^WCUkM zVCMxOs;Mr(KZQyX`MHnhB41tYf5R`2ad!N^93YRdit1FSdu0DW`9}41M7N+ABYML; zty}3ose2I7bn0+tHQ2p*I&-kS&ET;N`s763zqMjYx+zAMhn^x@Wo!Zn^#C;aGg1nE za7S^QbV2HHh}n(};4p=d7fl|;a`AuT#;3LJ$w|J)S=UcE;IU&iB&jx68O7eJ00(6^zM)R4~VAyu` zD54LGbdWLy^jtO$E-H8#uK0m?VrdqOrMTPl%t2tNLJEkA{6-yt?7paJ8sevyJVV7y zkyjQKU3+XxM64@l%pabX*K7EYGNiuA9Lb)@vj>5`p%r)f`2=oyRsn-XvkFV)Bdi}p z&zp1bZ8QKmxhFLJQgO+=M^`e%@6&ixGd!M@VX!u^A^{`-OyVaOB)>EWxB&jdS|II}&ckfp_qa zQLE7IxkDZLoOUNe8UQN0Ya!XxAtx%)XXfNp0*6;81k~`NUOJUSko)@WL#_Lk&@MT- z`_HTc(`}}quo6>_v@Dsy&KQ)ya$lb(4{{5998y-iM3*(XJ|FCTE=f8>(-?BwGT*n{(T^AJa zU(2BXue+clFj@=nhhlEv-yn;L<<}rXVev;l7HiMtv$z~t0ibd;uvpyUeolCM2a6eK7YgKqJ%GQs*%HRcZ1u#c;C5)oS zrVPv$wj5Iyz0wl4W8+*iJEP2)HMx2v$QDTKeQeg_DJG(KVq4K3co_`3VjkdOv{N z(w1Rf0$Z;5mX^16oHqYqi}@kTZO{4g-YJW7J=0}s-QlL@Vpx+-o_G^hCFHVRr@BqgvCY3;GcEv&4n25Kla5uiL&N84;t3 zeTnYMd>;0|h#l-3&JnN$_fdpT2~XG3hH-=G@{DJ{6k_@^doMGM7LRxj7M{qdV8@QQ4lQdg=6Dur^N( zKm}OhH4Ag}!jd|sy=HQcP^WJX^dWy;XYPTazL5zXe+VBT@_x_NBpHfM;CJ5lJgZ|^ zDdvHbsR@hqo+rnG-EC=d36c;|5rU@tGgU!Gyu@po7JJ=M2vCYphA7ZO07=VnQo*fL z*a&F>WbR*!HN#abU#Ni_604iLM9AYJO0a5<5AXT59xWcW@HZQ!a6A8 zBcLYe!W#kgpPXd^k?8VSjYvHE`pVn+$1O7`q9(r&-Ek~b=9%l%wo#?W_y}oD!ON4d zSL~VPH_)5C28p7Pe0uJ30BFi}#1NT}+d+SzVah`v;Bc8jOH7glk6n|vE9?0T9P>I_ zdth|VQgB;ZinVz0=|(7B6tbj^V7Dv0DAxIqtZj0)+$9i2t}<6PF`6yhQ!#ztW|HlJ zd!6Mk?G=T>?C$%x%mkmq$j>PkjIrEA=<$mxn~rc}EPk(f7SDS503M!2=QOq)5einf zB6+V+MY8PZTa`Y5F7SuD3D{hWiw{sp_|>R>$SUER$v_l28nU-Od-k|%-AIJ!+%{;v zt-Psf*lhq2Uy>W5*%rMDpZS9QLO4mO?;TvK}+++jnOvnsV3?E zk)O~jCTl@(dOb5up~x%panw9zM^WZRdMe&IHg*f5&V90f17MJ~vWI1$A;E@iLc9cc znjvOq7_W9UnaH;CBN*c3u>&C6&Kt>0oqC@*K1tBGTP>sQ9rLtZbR3OEz>WkviEqgf z=THdA1sQ6JTBNYMXw`vG`8;D7QEX&xM#M^Y4;hNB8qw7Xm=upD+#>o2VpwpkHFySZ zoM%n!6DQ?u0cUwS?w$=)iqii0WKm8>rl)*!Pb?P4lx7W4J)v$Kiu`S(Jp=n>?<>eG zAu)q#AZ0o61bWANae7^^nHyt@z2E#TTXNVqzJ@Ewx{2G!GH2Vlexj1CEX-(3bLH}$ zOs$XBX84ezM8t1GJy3F^L3IxI5_aFsf(0NSabp=@Kknn=1j1gvFH>)+ zFR~Ixn4fG?1Zgz6NuYEL;IjL$En7B>N~K&oWR;eWew5f-bMdELy^{Y<#I^!7QVO!H zxinF;NDUWMb!_olFFdQFJNQ}+3!u0$vkyMGY{j6fE?q6|Teh9ZfLofbh4HH!g+y93 zuQBKOccN@>S|r1d43AK?{>>YOAiQ1u;8gh5G?+g2s3j*Q^$Ko?QFJz6XLhR(HTLHyhxh4RtH}*3~%4{anE<$ zcC413_Vd`g{P6nV84yplMrjL6DF&V991OeHfu2|AlTIi~Jy+8ro3j8vMcv$44<`?Z zDzNwBE2a1{7&%#CUJD+w1}{o6nA>{bPdH0#K|K-);1Fwkj;*!$y*EFNc0Ho2bzQa)jUB>3t& zy?R1r=l$tvj5)UQ^20)y?pUS3`6;&6h`j}cdm^6Eq%9VQ+QB{Di#&RnS#PkKw#!>O z^78})6`IiLJ<~#X?igB=UpbOom!Pz znKQ{6CSlo&Rr3`ZY+-pnfIv`9iC5*02*lt2Z#O~3njCs|ZIu{EYSCoFqG}Z~=Z@G~ zb`n0)x<(Yj6R?Kz6%ogm?Cmx1cj;KFfWo5)Lj}KvFJ+!#pDTsG%gT=2B3}`o_x*Y$ z<4U7KL4DlX@-I?=pjN&$3S?lZ?sVI_0naFa`8WCLrasXV7qj2I!;H`%YPpYl^;9LY z?;mfGov_sWNMgp5zEnhNo8WraZBo*+Ywk)QH5R(~mw+A&Ppf2}{P}4&-n81m2rX#} zOc497SHiV>3v7GX_*xWMKi%)loh`GP)j@^vzy*FzXxcjQXq zcAhi~25C=h67bWmV2n;>vp;9lq~>M^_b_oNN5A`GKCfN2j)~QC$C+D{EF`G^O|+n) z+4<#%x{m4TP-N0aQiYI{)5f-)fqYvpaBo3p^AY;Y9(mbuP=A5yDim^JUDCqYfc16_ z^2wDyyRSb20DgnzSe>)M^duV+CR*Hz2Xu-|c$CCtbqVGBEDEKXidk%w*j7x- z^CF4)a|@tPCux0jT?Lod74V)($bt_RNg6@!RoO)R<=(85YBt?dKmD85OmI`uH;ZV# z7Xzt15LX??HIVG`bL$A zNe{SipX?p6if_^z-~FkF)S90u`6|4kViCaXuh;qRN0f@ZYL7sQO-J9{PUP$4&@SXt zWOD|yKF$1qAK5YGq$?+L{H@O})In9VWO9H`hNH-IX#~$%>V4E)gVyhHnOhibE%r;b zPAMG#kV?6Q&T40PFn@gq*6R1S-jZjk)Wm3bK8^umLX=gf3>%4ku}a;4mVRZ}F8 zMInPni7tvIdoBFYmK;R2X${MuaYmlPONosgj6+&4umRuQ-0p@fn|xAt2#Vv?Yj}s* zn1<|rok!S^L`Cr)S&TnT9|Dp&6Upu|N2-hs=t3GwLL~@IAAwr^0=_ESEMup zw305xHd3+A79$1=O1NMN^3j~Oyj4ntZe!KC(@W@Yb|Nj881)GT(xWAciQ1gRm3fG; zXF4R8?$uxoV9xarLCUK05rd#Rm^X#KwJu7pD%*jkWleda>WYun!&+1&!1siDcj)PQ zP01IA@yLFv`6Dh35xtQ<5J3hK2W+(fLrV1pIV073ZHw^|XaG^f_S0?Tb=ra}suWGn zEBj@O0enC^W`q6*iZ>89dn(%Zf^vQ~9Bm}J>LTD1$XDV%-@5-TD0Bfvl0VY$G>(?? zat56+!_&5=(MWXBRAbd8CEvS#<%DqIpgQRG5DZtid^-;};+*TQFpgpRF?Ry+>FTiT z8CMX}Jj!YNhg@$HiY!|hL0{JU70DmL?QeW?#-C$Uecjhd?BMX4%sUn7*5 zQLLMM?E#6!rJ!xsiswQ6H+Hs{lx3(&B0#(Pe!9a?8uf%*r#GuCpo(9x9F*>N+ub9_ zOP~E`E&8IQ#>Xg zTb|zJG*IE{W;VGUdQr~20$zXs6=p}XEo$X>^=LA%E5b8{l8wf)Z0IdBfQo!%$oxg& ztW^$R;2{?E2kD>;T`}$EkEd#m!ebWg9e#!Pqb)?YRnR@*AHgK~-=)WZ>!P3tQTI}O zS1i?ff0hJ2eng^y?VmR8ymvGpC$@=Yag7ybJUIOzO=(;$YArVH;?7K!_4a;QV#P=>!FtD+Z2MEcDK3R9rR=LmGxL-Q8^PFC%Tn*P9dfpPAjkefwy&(&q)IY#V)TUKh@{&12LErG*W54^|PXVw8B1f%q?MVZZKedR*TX|@EE$3Ad8262UbE+Yc8O>^)U#-hNuH$5)t=+max>%(H%}Mj00D4 zKM$-WggI)KdZe3K(?^c9K)ap%R^ z8&8B)F}@Yyk2n2azdIHM;fgoQ)!hRE=6#X-v2A%kT(}d1oFV9vtHI+Y+E<+}=5-%^ zILN3KPc`drC`^TO-7|l}L|!e?Ec|l*v5e1o*Ji4!UzZSpZczzJNsmKv*C)jEl?f?A z?u~H9N_Ju@@jrjaU4vB>2AK25+7YmUQ%`n30^VUOjVaurd0gU&-$53*W+xCk3g zv|QT(H{O2&Z|n6SiurT4amy_o*9+bVx|W&Bb=O6EXH;c#Ymu2wx?C&X6~{Ehkwm7O z8Cmr!8fTfiRIpQf`LJhMNEj+J#()H}okAEojhtIU6n0Loon)~0J_oCL2&-aN&?XO1 zqFIPdr#cp*xfG5-HE5R%=*Hiq&bbuo)y5(LIpW_k(!$c+TN2C}&P`mCB9qcWPsJ1Z zeRbE*lOjHM)g9_MpucZZ+lr%S_G-FrOE)nWlyHcJ2n)zCu=gO7mkP({%8dQVbGtmo zIpH-zNeRGan5A7Lt5=92=`j(VU#`NK2*~XzpyG}b+xPv?8=wKt*cM0|$Ql-3I}@n@ z;B$jG&c;?-8p&6AgcP%BY0WM=TmxJz!78zNa=q^F2??D_gf)Ya%X$0=h+)fxXOT-g zmdO%vSvXn8Ef%Ii9d8!VJtk4dKP2+}7jItgz;q0gY3Su+T$Xv;^7EP#vCk|*0`_qk zbJn|qZAe`4pSXd0V>$GLLH(VC?jj!mRBYV2)9@17i?OeDDtyxceaA@QF-B;0^pdXIpwu2VDN&9Vqh09+0lv_HGLnhu zClvbX6_SVi9}5+?Y9LONsE&UjqkMsezm zuB?3sAlPu>;-JN>FT#O*#h34F)TA;XRdFP;svh!x$9;Dbx9Qp|#Y|;Pk^v50bL6%3 zh0{2ViNful4|qa`6^7R;W9?f2SPS`LY-X!GnoVE!E*N(#)=M2?LGqROMXN-Ke=P{j z8!yu%z3&ig8MZdr+98{n&+%((&z@B}q16J@y^?=hIsBtED+4t4sZYb}3+%R=No>ep zRezHNd91L!JZs6T-Tj#g!#3k%rum*^>Tj&^MYcD_B*8!NL=2>P z&N#;7bQ@p&B2bilgjZ|Fq9t6?C51iS8?<0dLi4w+_y>Fi~2u zYWMc@B0K9R(ykyIY5&%0M7a= zMcbE-axLrp)TjGhk6nPHW6>zcBY@W;5K~ait7V$9$>~VY20~)YnqE*^`X)bYktZ9u zvSG6Y-lI^Vi9Rq7_**eh1gf)F9GKAc>7lx5(#b}QUAmq4i{zt6k*RXcp$T%ul;Mxj zB8vQwFm~1s@S?%~@SK0dL45^#NZ5x`qUP!ieO3)(1d--;KlP(iF`@?4_fTK`I?uNL zhQIkY2Fu~*Unu4Y%f`RbPT#z5gZU&G@~GArQ1R@gnXXIwfP#T5WL?JDTl-KDy6`JZ z@kdRfP*{&VTD9V@!6-8`5T(rlqKBYF58lAvwhq`+O=)*Pj#E`w3@>e$r7MR2@E#|- zub6k^sq3^`J&;nanp}F(1;%^$wUj z?6vl~z!+D*71ce6T8C{f(d{W?$oPi}(`pyT8V7%ZWkqQvnh2UM6xuJ*-YDSc`m=7j zI(1`2k}h)uyu<5fJ?n?CS2JCyD1$gAMnz0c!FXDV_DqC%`etV$H(CFG>zn3O|2bN@rcak0|^GQr%a*1z!FZTXY)0lX5CN zEY6NG9afsw8~cHPwRh30ueOy8i4QV&Uq-FHqR%FnN2ZnLs9VF%xV|3ZbMrlJarzgy zs0aLXTi^6e1$qwdND+`LuIfx|Bq`;-d`DrD0%kI_&0lU5YcP4J)9NPFo&ph~u7$fn z@n!Eq<8GqR+qWE+)pJs{@UZ#6Iw#cI-|7*^1|#k3ygl-sB_bxQ^LHdmRdJczqsBpt zFb0_AR%xy}Li|d z02w9)$P?e3kuP4AJ_z~XKcFx|_mYoHOR!Yuv>nRT=GhLmDuKL821%^!76fVbi z8Ye)TZ-pzn7|cb!#$7!+M4V7cJ`^n6yjH8>jkPA>T_lnKaS>emH~d5jbM#I!@erhq zVlG!Zn@PSHF{75ArLK#oR9D=rq*oy&K+I!wec$vCn%M^E%KfMt(deqOPdA=MO9Y5~ zrs2~Ue(yn6GEI@6B;6yS8!^#A>!2dkRcJSs_A+`b9Falq5QZZYT=~>ZQU|1cpY9!l zOxjT(^f+@3hxRBZ2fa)nMK{Md2eaIj*9gb}a;KpC={vKBOdT|Z;B(C4iK+bvAobDM z$2_jWXeQ)-C`@W}5l%s*V`F|#fxvvuuq-DR$NmrU-WeLj7QH!8?-9Yqx+W<+*mpY} z0G_J&;^k3q6w;AH82z#OwdlGQ4DHHRNY~1~4O3SM98j$Bek|Y2Wng&>6~fJIj&~kgcPX9_TnL5aA3&NIHn42E^WWVnwV$Z(Hs6EdfSO zU|QB-0P;P*!s-E=Y3J{0xDAhVuQ@G-hkwl!d?<(PeK3dpfx|l>>>{})EI4UO_D{-z zCmA>DP`0l<=T+b&q)sf`YpCq2Xy8wj=dm+4`@=>5D9^GS!8){6P-(gi_Oqav!W<1dfRV`qwx5s;BaLiNt8dXi9yrRWf=Fdbbls_HTm!Zg0 zhNz>UK-X*@=EQJ2ROMO*q+rRTryawQKoAKsglSO;xE>LigXU`GHTpTqum8gIpsVVO z^tWX^GX&?^SCXbWA&sJ(qqV!lMU;~zQe3Yj9_|v*-7*{qi;%Cfhpj2X=(v#58&Yq@ z0F3R)p4EZv!}-0-`OzjbEgczy8Wrq}`Eu{Z(*Gf^r%dGEws1HB&}{IU_zvc#S?+R! zwB+T&KHwC&e2<==R8y=MHVEFV_r-e+mxjKw1%{XDCCoF-YtHn(&4t%<)0g`N{Ow{& z`DwMDJK(6ZVN|YQE;8<%=fUSLS)jDdGoUx)xk(r|maBS0mbiBk&!CeNu}VAOxtLq` zrt_}z!A{e`R$(3h)G~8W-Yg43q)t`twq@U&`CmircVk0pIj5P20G)oe+ExCOz~fqO zPYjSx^BFO+*jePK1yR3ij?;c%{VP&vRU~A3c_bXYZi{^1*q8nkh zsyG~|%_hrTq9}1B1OnxK!`k$7dt({x-hs{YJ_0S$BB==geyI9aruv{^L1!qM9naS+ zRPLM!#qyE;Iq@rRM!z7YNv*JpM*}!E=l(C&-oZPtFxv8r?WAH`6<2KAsIX$&zA-B{ zE4FRhwpFpssrP2qtT!{=J=1IYZ@6dewa<6=`Ry>J61q<={7Z6<3n%I&T^qf`aUIxW zlTlUVx-zrKqa+z4o}b;_S+hwSUGM0wG#@@h4sf)9JpE1D!FC@H&=LJUCU)(GmNt5u#*gv9d-L*Ml7Q zkw*&Q48)F84ODY&+V;WJZ}_1|0iLPkKsuO|N@5$X-)$KB9e7c-m%Iaul-f}K`)Le) zZAv7*E$+4C-4RJ9KFLS4o^Md zXHr?C?nTzMgDyF+n_H{;!oQb}RX1g~M;h05!ErOj4JhM0#cdx!mYZg-Io=7}Le`~2 zv|%4yzJI8Ap2NTEz#G5VJ~QY${B?70l5OBNbLNEkl4f(jJnQ=DT%5F$4xHRmN>;$m zIlJro+oJ4&kcBrVrs4TaT3fO$m}-DcDJl2nRI-1P7{{4Nr?u)B)2FG>4f#@f1ZO97 zT)kue0eI7kk|!J{94@;Gt4W4xhG?l3Dd`yvPQ8>c&fvDP|?_RhoUDl{HuCH`cl z=>OahCZZs1{hku&kNv=p_ll}(sczWdtG88-OyR^_t*vO`-Pq9mSX74+>QBNHKlX*a z+E5NDYwH)!IQ&*f7ZQbY^O2zRk#`oa{J68v4V>udltJHS#_VZS>8DA=tj-xzlrZLDk z0uT39-XbWjTRk(Nt*Z39^4TEa##B$lmLFa>+A$j%@Gh=sKl~y0>E|D;tj00c-|}l8 zc5^Rq^n#Vhq^y?28PsRoA*JAz;NCHDcK|N&2u9V`%Tn3$34I9np4B?GIWSiDmYwR~ z;(nZ;>@KSd&aC+IHg1s5g67CD{@uHx0MeL;eRNpd`@|J${Oy^?ysyLkAUb#}e;)PX z{N^F;oux;7h_Q=vZ1VHiBTLO$nG#vmHsqy~8bdFO!9MtV-{)Qate)K=I#)y6+=*_}44zivC#xt!JSdO)FbK1BW4SO` zQ6*n{hpK z3Pq%v#OjbB=hIh`Z1%!n#pHhp?*>nh{`WOY7#8$v?*DDg`tSZR2mZgD*=hb~WuC3i z7Fcyz9mgej4LIv*`Pj$Og_7UOr5#SkQ{4X7N|z_XRA+`&)sq^^L+^B+wDK!Y!XxfP z*0`4>1-0(!$k>UXIGP^+|E=Tz_^&Mo-U|dQB=`&RP3n%|1!7;5M>9zM13h)!<~iNT zVsY05w79`)AJE$lsTu;z8gQ!(fAUO>K#UQ=C{ShZz5Qe~ea%(J&O^J{*=Ya%PFTRs z5b+f&uTl0DQ}(UCz1LV&*dazo-h0Di>OxYv&z&+C5AI6`sN-gNL$8r4c7lXc5J=>B z$wA}|Al71jPOp{FCXsG-DyS|Nwi6Ksyfu_}6P=~z?rNUjt>tp*>S2}h3I+Xwu|7+C zQZ0}BL`;AQl|4cVidZ#<*Tt>40Qkd}Pj&e{)oa&a(41Pt7>#&xF#IUD3BW2UWK*83 zQ!KzB!7!2liL048l9pDx%;wWiPE(|ic99o~L97voM|>+{lMH%%y7F^R-+#$Are$Gu zf21m;9rVzXMV`eaZZozw%(wgmGu^RItcC5wkj}&0JC(o`1_&oZMZzGh9 zcl8T-Fo3h`GRqdLM$X7X6XjEZfpNz|EUoo%TxETaVzjeVu-)f^5*z9WovO~F1^mnv zK>6nj<9C$gV`WPv|1-3d&ZZs?di0Ui8U|BW>cTeaf}SP5#N}k=uN)@6r=g3fb`SJ? zxrwg1La=Af ze`sC75c1saykCZr@lrzU?7$A%p*l#l0a``=hl5ESltjkG7@)hv6QE1K@Zsndw1ES^ zZ^1%|Oi=vff2!Qpx=Jh>lTK$|Mn06n+HdW z2)eoSKO;uK|MbmoR`Y+2**?hBp>cdP#Mi7HNoCGOP-*qe#9fXi*0TtYy-o4tAL0vN z#w32In^S(9j;l|OU$#NwqR{!f7<*tQh+57nO%6PC_rE%F|8**!8Zgy33y4sNIoGbv zp&mbTI``;Vv;Y6j^p zLP9FGsPRA(?HGnzuLVnket4W6`C!QfdA9+qY$n0@SY-0&VbqyXIOIO-Bk zP8YWL$j9sOdFwlc?fBrKI@px<)w-P6NKI|X=N6hvk zvij&hVzvwu6#r+;Rwo_YxDYGGC)|69!n27)CY&o3QBmdbwI_||oFYns7`UOTSyTiS z)6nXV9c~3}rdHGJUomcj54-Lk3d=zB9OISg>|fZnEbZ{@fG%+4Y^x^0Xsue?R2pM1 ztH|hBy&R8aZLe7K<3Zv25LwwE(xAI(m)$SNA)e0n!yBiZP~=@&RHB2Foe+#_JJfy? zTY>Rb&VQ1C&eB;c{EkPL3izKTX6zFNoiR;036srp?Sw6(x5lA2bLgU3{`CC5TNVPx zk{BwA+42b4>;SWMKw0=ev{WIG5A`!nEv(0k8LN@gEXy@FF$rt`DW_N`+i|iG3Y9C$ zv*=`J=b>#{x5O0g$6Widxv$Tejk8u!-t#M~WSVoR+_(^C>ab3P7oe9*x>!U*I;^$J zI(VTP8P^{EQTe_gIrcn$Pt7l~m}jch={ax+=`v2+6y$dj?4&b?ah0`Jtf;9)D(8qM z&S4xE30sPIw4ll0Y)WMYk#zqktn9u!*%M0Ffh9BZ_em*|rYc1;}}1CNElv z#=LRV45Id+vJHy80x-u^|8QrLWcf~%3s=M;9}u1Mj#D>Zw=%^?l8F8^-rkFUO|~&8 z6OR{Re$M#D;G$&Ie{nC+@g|fkG*k(&4(LR~DKZUcuzuM#Bl4!O5iuC8mxRj%Yjw+C zs?F*YkpV|mv4sV#Gb<(F{Gk#{|YTo9e3(D0VW*ZZs={@0!QO(9MmYD zx$jCQHRa=Q<4-}oN~NS=7p>jvS3U8xQ9m1g@u7KbUfy(Q_t~KC;#xlpO5n6SW3!HP z+fb7O9VyJt3Br*iXP#zy5c(oqpq!Cq`R;ePjC&5$w-_L8$+RtK6ZSaalV5!T*NC{O z{ULSAK2RV7z|h3M?@H(w;smbesnLhO#W=`Fgx4FN1o6_eq&8x7$^hXqcI53^246v{ zTNxg}5NU?!^*oid^eAKZ?9Gq_^P_g^SI3|-7h9G`i~4q1KQRsyHc>*ESWQtt$%&C4 zt-AlU`X4PyoH?f0B&OTm=Us@Vb&T9%m$w<_sRHPP*Dvu_VL}O(?>2P@NI5Ds%#``oaXL>4E}c z-QDi+QMfW|2rVVxi8gXgoOemYh{1aVUf+AWt?^HH`t9_VUOp$1cN}8V2q(uPWm7>J z2Y&${-w0e0Cznv&y5mT8Nq@H~$`4f3p>nkSQ46Th3m(ZYh9G-L_@wX=!vJaayEWEs3emRvuC)S1#ON77H!Y=q@z~{!mm|R^XinB<_?KL>OOB$n zSO&wnwZ*_$RGZfD5db@3ZkODyycsD9(Z~MmpvBr=0IS$NqPf_P2S2HUeJ?~;_rYTe zmeDL{5t^<_13|%+f7@xLKIF*9zzx_OEG|{j#=uUAT7YJG*d_K|=zwc=yE^DA#GeQ7 z^jkG8vKsfQA&jS0caT|$Ah)+bT`YRvUnz@0R)=TSAL(b>cn2#sYd}!w8uX$LzWMU@ zWT?MkIoDTy`V&NFw(RMSZ^;=`{8;0wq7IQ*BTMmwW)B?ZB;Gj-ti(j2#;hKfKS_W) z4KThWgn`_Rj5)CuYDsBrmPq!6lJfv4)7z6MWRtcsIr<}ze}I~%y(#CNI^}8zEI^8A z@CTf5=Ws6YnLY=UP5&{hc)#?dZh#(-h7kD=zt_Cd(Cv4rgrWFqJeMCrK}=qa4F)1V zbC%7*z~K}-GycIn^{BF}qnk&*w6AN{0Nu;_b{kS$SAWj>pLQ?1E|7#D=tvI}63js| zi%&&~w0oTOtCm95SU|ZSnXe1yWoxv%fKw4ce6L;GL_3*~VTFegL+pHs9i(@yZIDF& zlPou*DvL|p%RVjcHdVH!O8%JPgm>|;A=%^ha~yM!c-~#5TH@jPSdH&k=_k~NJMqNK z2JaV`-*1Ji?ZPbnkq;qbV4j^8Su6poKAJr6a(N%2jXspHI7xcVc_W-Z@Hk-|6vOa@ zwyWM5KfFyXin|G4ZH)1eT}rmJ>+DX8M?%ggma5Wt-+;F>$IM;i#3`bpA!X)E-#sxW z+muIcZyFfFIokii_3r`&hscYKrH0aiNaRkK8R6!SYwZ0!DcQpfz!*1v5Pe(W>bBEv zUH1GyxkD4VRX_snd&TFF z(%Y;|7^c{Ui$QV!&tZ)cC%DD+2`aOHkH|Mov<+ef)F6my`M54qIO`Q|WWL|L_HmM+ z8%WVyTk6u;KkDgufGUe>N;{NXe+lD6&PqCUxkyH*0WLJFGa4BSH_3h?O5=a|jkO3OX3kyKR#+9X48vSw;Z%|Ol4gpH-J z%m2eI%hG@X)3^W2wEVv%<(b|8)h+j1KC!UgmIr@s{8gNIOD5Bt2P)@lOa8O%{_lX> zVZJTqet7bMAO#JMe-~=VR|1>0n?z_t%Aac)4!3Q!anX*Xz84esGpf?#w+G(sqBVuU zdinAWwv;mI9`_w->;=dNFh`XqNLwD+$O$t)VE4U|l5{XFWejD}K+HXURhNv0hic;n)5F$) z(%HsdHpabvOv~b=v>IBfkgMtCD2qGd6y|STfLJyf0)4rJj+%kw$qbHRcba{U5KWG_ zN^E(X%8!CB=Br_^jl9cOWyR-FpTo^Hw3yV^5Att-3+G*;-8hFbqP^%#!O z!Al^}!t1T(lMvNzdLf6MC8dX$0r#gp-ZWdqy4*{rZum9fL8g{?yxES@N^9`%xCpq3 zdD{egIJ2)ch?>ykrFf2bTncxxtKVoadF6OG#qnx};BJep3@IQLFPAD`fKFqS@kWIM5m&vbwTR#$TgJ| zZkuR58^SAiZ8edV$@ed{ED@DI@4mB8iPN@b6Q~;jDGBQPg``d+2{#r8D-**$Yh!|( zO5!05yUD|f(GZ`oZU*^lI*v0z+mjw{Zs|v
    @8As6UV!ela!cri-_`eTXoC4#9a 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
    q=>!Je$3shYzuoV9-6glkj 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

    EVShupo839m`{QETNxNGs*9NG+u`u!lC8o>} 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 VHK2nPOGQG4MQ=qUgcbhre*niN5-|V( delta 167601 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�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 BHnso& diff --git a/docs/druid/archive/game.arci0 b/docs/druid/archive/game.arci0 index 71c67dfa349c6532daa1cf10e79dc57d25688935..8eb81f50ff03ea7974900859b8ab28c289a95567 100644 GIT binary patch delta 7607 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 YKrtX>;G_jtf)pUyGiqQW){RvDKP|#){r~^~ delta 7457 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 IZ@-BC9~e?5r2qf` diff --git a/docs/druid/archive/game.dmanifest0 b/docs/druid/archive/game.dmanifest0 index a43bab64aaec5954f275fabdcdc2fba279e982bf..ec0feee9312b52d261a93422068f556c1c516664 100644 GIT binary patch delta 15366 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 P$YwF6Q)+A_93lT7gw?rx+@q`MoWyYJe2 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 diff --git a/docs/druid/archive/game.projectc0 b/docs/druid/archive/game.projectc0 index ba7fbe0..beb29f4 100644 --- a/docs/druid/archive/game.projectc0 +++ b/docs/druid/archive/game.projectc0 @@ -1,12 +1,12 @@ [project] title = druid -version = 0.11.694 +version = 0.11.718 write_log = 0 compress_archive = 1 publisher = Insality developer = Insality -commit_sha = d7dd4a86b81d73d345ad7e136de9c2c488bc4d8b -build_date = 2023-08-05T16:41:25Z +commit_sha = 9132dc477b645d674ec21efbfcf85f48ef0ea8a6 +build_date = 2023-10-20T08:23:33Z title_as_file_name = druid [display] @@ -102,6 +102,7 @@ max_count = 0 max_count = 64 max_particlefx_count = 64 max_particle_count = 1024 +max_animation_count = 1024 [collection] max_instances = 128 @@ -126,7 +127,7 @@ default_language = en localizations = en [android] -version_code = 694 +version_code = 718 minimum_sdk_version = 19 target_sdk_version = 33 package = com.insality.druid diff --git a/docs/druid/dmloader.js b/docs/druid/dmloader.js index 80d4267..b35aa33 100644 --- a/docs/druid/dmloader.js +++ b/docs/druid/dmloader.js @@ -132,7 +132,10 @@ var EngineLoader = { async function fetchWithProgress(path) { const response = await fetch(path); // May be incorrect if compressed - const contentLength = response.headers.get("Content-Length"); + var contentLength = response.headers.get("Content-Length"); + if (!contentLength){ + contentLength = EngineLoader.wasm_size; + } const total = parseInt(contentLength, 10); let bytesLoaded = 0; @@ -725,7 +728,7 @@ var Module = { FS.syncfs(true, function(err) { if (err) { Module._syncTries += 1; - console.error("FS syncfs error: " + err); + console.warn("Unable to synchronize mounted file systems: " + err); if (Module._syncMaxTries > Module._syncTries) { Module.preSync(done); } else { @@ -847,7 +850,7 @@ var Module = { Module._syncInProgress = false; if (err) { - console.error("Module._startSyncFS error: " + err); + console.warn("Unable to synchronize mounted file systems: " + err); Module._syncTries += 1; } diff --git a/docs/druid/druid.wasm b/docs/druid/druid.wasm index 75187b502b00d3ce295dde7932e9dfc9bad2ab77..80a6b8b93018880e3b5d88e9afcf4350e5c548c8 100644 GIT binary patch delta 632390 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 delta 591526 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⪚%lxEH8Z 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 z

    get_text(self)GSet input field text
    init(self, template, nodes) The RichInput constructor
    set_allowed_characters(self, characters)Set allowed charaters for input field.
    set_placeholder(self, placeholder_text) Set placeholder text
    Set scale
    set_size(self, size)Set text area size
    set_text_adjust(self, adjust_type, minimal_scale) Set text adjust, refresh the current text visuals, if needed
    Current text color
    last_valueThe last text value
    node Text node