## ADDED Requirements ### Requirement: ezTreeCom MUST expose additive runtime config methods The `ezTreeCom` component MUST expose additive public instance methods that allow callers to read the latest config snapshot, apply a new config snapshot, and request a randomized tree configuration after the component has mounted. #### Scenario: Read the latest config from a component ref - **WHEN** a consumer obtains the `ezTreeCom` instance through a Vue ref in preview or federated usage - **THEN** the consumer MUST be able to retrieve the latest applied tree configuration from that component instance #### Scenario: Apply config through a public method - **WHEN** a consumer applies a new config object or accepted text payload through the component's public API - **THEN** the component MUST update its runtime tree options and MUST regenerate the tree from that configuration #### Scenario: Randomize through a public method - **WHEN** a consumer triggers the component's public randomization method - **THEN** the component MUST produce a new tree configuration, regenerate the tree, and make the new snapshot available for immediate readback ### Requirement: Keep config text, runtime options, and generated tree state synchronized The component MUST keep `jsonText`, runtime tree options, and generated geometry aligned across manual text apply, preview action-button calls, and public method calls. #### Scenario: Apply text that passed editor validation - **WHEN** the preview editor accepts a tree config text payload - **THEN** `ezTreeCom` MUST accept the same syntax on apply and MUST regenerate the tree from that payload instead of failing later in the component #### Scenario: Randomization updates the latest text snapshot - **WHEN** preview or external code changes the tree through randomization or a public apply method - **THEN** the component's latest config text snapshot and any preview-bound `jsonText` state MUST update to the same applied configuration #### Scenario: Preserve upstream TreeOptions behavior across repeated updates - **WHEN** `ezTreeCom` applies new configuration data repeatedly over time - **THEN** it MUST keep the upstream `TreeOptions`-based flow intact rather than replacing the options container with an incompatible plain object ### Requirement: Preserve existing prop-based compatibility for published consumers The existing prop-driven usage of `isUpdate`, `jsonText`, and `jsonTextChangeNumber` MUST continue to work after public methods are added. #### Scenario: Legacy consumer only uses props - **WHEN** a consumer continues driving `ezTreeCom` only through props without calling any new public methods - **THEN** the component MUST still load, update, and animate as it did before this change