diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..78bf0fc6 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 59d9676f1dbf517e08f4803ca3fc36ec +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/_downloads/0476384c1c056269b7fc937f0e108401/data_ir_examples_interface.json b/_downloads/0476384c1c056269b7fc937f0e108401/data_ir_examples_interface.json new file mode 100644 index 00000000..b6267d9c --- /dev/null +++ b/_downloads/0476384c1c056269b7fc937f0e108401/data_ir_examples_interface.json @@ -0,0 +1 @@ +{"graphs": [{"id": "173442763191039", "nodes": [{"name": "axis_streamer", "id": "node_17344276319023", "instanceName": "streamer", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_17344276319020", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17344276319021", "direction": "input", "side": "left"}, {"name": "io", "id": "ni_17344276319022", "direction": "output", "side": "right"}], "properties": []}, {"name": "axis_receiver", "id": "node_17344276319059", "instanceName": "receiver", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_17344276319054", "direction": "input", "side": "left"}, {"name": "ext", "id": "ni_17344276319055", "direction": "inout", "side": "right"}, {"name": "clk", "id": "ni_17344276319056", "direction": "input", "side": "left"}, {"name": "noise", "id": "ni_17344276319057", "direction": "input", "side": "left"}, {"name": "io", "id": "ni_17344276319058", "direction": "input", "side": "left"}], "properties": []}, {"name": "External Input", "id": "node_173442763190512", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763190511", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442763190510", "value": "clk"}]}, {"name": "External Input", "id": "node_173442763190515", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763190514", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442763190513", "value": "rst"}]}, {"name": "External Inout", "id": "node_173442763190518", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763190517", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "173442763190516", "value": "ext"}]}, {"name": "Constant", "id": "node_173442763191031", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_173442763191030", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "173442763191029", "value": "2888"}]}], "connections": [{"id": "173442763191032", "from": "ni_17344276319022", "to": "ni_17344276319058"}, {"id": "173442763191033", "from": "ni_173442763190511", "to": "ni_17344276319021"}, {"id": "173442763191034", "from": "ni_173442763190514", "to": "ni_17344276319020"}, {"id": "173442763191035", "from": "ni_173442763190511", "to": "ni_17344276319056"}, {"id": "173442763191036", "from": "ni_173442763190514", "to": "ni_17344276319054"}, {"id": "173442763191037", "from": "ni_173442763191030", "to": "ni_17344276319057"}, {"id": "173442763191038", "from": "ni_173442763190517", "to": "ni_17344276319055"}]}], "entryGraph": "173442763191039", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/16c6a42bfa6c6561b41abfa17be63164/data_hierarchy.json b/_downloads/16c6a42bfa6c6561b41abfa17be63164/data_hierarchy.json new file mode 100644 index 00000000..78eec157 --- /dev/null +++ b/_downloads/16c6a42bfa6c6561b41abfa17be63164/data_hierarchy.json @@ -0,0 +1 @@ +{"graphs": [{"id": "173442763243212", "nodes": [{"name": "New Graph Node", "id": "node_173442763243231", "instanceName": "sub_1", "twoColumn": true, "interfaces": [{"name": "cs_s1_int_const_in", "id": "ni_173442763243224", "direction": "input", "side": "left"}, {"name": "cs_s1_mod_in_1", "id": "ni_173442763243225", "direction": "input", "side": "left"}, {"name": "cs_s1_empty_in", "id": "ni_173442763243226", "direction": "input", "side": "left"}, {"name": "cs_s1_int_out_1", "id": "ni_173442763243227", "direction": "output", "side": "right"}, {"name": "cs_s1_int_out_2", "id": "ni_173442763243228", "direction": "output", "side": "right"}, {"name": "cs_s1_empty_out", "id": "ni_173442763243229", "direction": "output", "side": "right"}], "properties": [], "subgraph": "173442763243230"}, {"name": "New Graph Node", "id": "node_173442763243236", "instanceName": "sub_2", "twoColumn": true, "interfaces": [{"name": "cs_s2_int_in_2", "id": "ni_173442763243232", "direction": "input", "side": "left"}, {"name": "cs_s2_int_in_1", "id": "ni_173442763243233", "direction": "input", "side": "left"}, {"name": "cs_s2_mod_out_1", "id": "ni_173442763243234", "direction": "output", "side": "right"}], "properties": [], "subgraph": "173442763243235"}, {"name": "Constant", "id": "node_173442763243250", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_173442763243249", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "173442763243248", "value": "1"}]}, {"name": "Subgraph port", "id": "node_173442763243239", "instanceName": "complex_sub cs_in_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243237", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_17344276324329", "direction": "input", "side": "left", "externalName": "cs_in_1"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763243242", "instanceName": "complex_sub cs_empty_port_in", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243240", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763243210", "direction": "input", "side": "left", "externalName": "cs_empty_port_in"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763243245", "instanceName": "complex_sub cs_out_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243211", "direction": "output", "side": "right", "externalName": "cs_out_1"}, {"name": "subgraph in", "id": "ni_173442763243244", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "173442763243246", "from": "ni_173442763243227", "to": "ni_173442763243233"}, {"id": "173442763243247", "from": "ni_173442763243228", "to": "ni_173442763243232"}, {"id": "173442763243251", "from": "ni_173442763243249", "to": "ni_173442763243224"}, {"id": "173442763243252", "from": "ni_173442763243225", "to": "ni_173442763243237"}, {"id": "173442763243253", "from": "ni_173442763243234", "to": "ni_173442763243244"}]}, {"id": "173442763243230", "nodes": [{"name": "s1_mod_1", "id": "node_173442763243457", "instanceName": "s1_mod_1", "twoColumn": true, "interfaces": [{"name": "cs_s1_f_ext_const_in", "id": "ni_173442763243454", "direction": "input", "side": "left"}, {"name": "cs_s1_f_mod_in_1", "id": "ni_173442763243455", "direction": "input", "side": "left"}, {"name": "cs_s1_mint_out_1", "id": "ni_173442763243456", "direction": "output", "side": "right"}], "properties": []}, {"name": "s1_mod_2", "id": "node_173442763243460", "instanceName": "s1_mod_2", "twoColumn": true, "interfaces": [{"name": "cs_s1_f_int_out_1", "id": "ni_173442763243458", "direction": "output", "side": "right"}, {"name": "cs_s1_mint_in_1", "id": "ni_173442763243459", "direction": "input", "side": "left"}], "properties": []}, {"name": "s1_mod_3", "id": "node_173442763243664", "instanceName": "s1_mod_3", "twoColumn": true, "interfaces": [{"name": "cs_s1_f_int_out_2", "id": "ni_173442763243662", "direction": "output", "side": "right"}, {"name": "cs_s1_mint_in_2", "id": "ni_173442763243663", "direction": "input", "side": "left"}], "properties": [{"name": "SUB_VALUE", "id": "173442763243661", "value": "18"}]}, {"name": "Subgraph port", "id": "node_173442763243667", "instanceName": "sub_1 cs_s1_int_const_in", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243665", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763243224", "direction": "input", "side": "left", "externalName": "cs_s1_int_const_in"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763243670", "instanceName": "sub_1 cs_s1_mod_in_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243668", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763243225", "direction": "input", "side": "left", "externalName": "cs_s1_mod_in_1"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763243673", "instanceName": "sub_1 cs_s1_empty_in", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243671", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763243226", "direction": "input", "side": "left", "externalName": "cs_s1_empty_in"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763243676", "instanceName": "sub_1 cs_s1_int_out_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243227", "direction": "output", "side": "right", "externalName": "cs_s1_int_out_1"}, {"name": "subgraph in", "id": "ni_173442763243675", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763243679", "instanceName": "sub_1 cs_s1_int_out_2", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243228", "direction": "output", "side": "right", "externalName": "cs_s1_int_out_2"}, {"name": "subgraph in", "id": "ni_173442763243678", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763243682", "instanceName": "sub_1 cs_s1_empty_out", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243229", "direction": "output", "side": "right", "externalName": "cs_s1_empty_out"}, {"name": "subgraph in", "id": "ni_173442763243681", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "173442763243683", "from": "ni_173442763243456", "to": "ni_173442763243459"}, {"id": "173442763243684", "from": "ni_173442763243456", "to": "ni_173442763243663"}, {"id": "173442763243685", "from": "ni_173442763243454", "to": "ni_173442763243665"}, {"id": "173442763243686", "from": "ni_173442763243455", "to": "ni_173442763243668"}, {"id": "173442763243687", "from": "ni_173442763243458", "to": "ni_173442763243675"}, {"id": "173442763243688", "from": "ni_173442763243662", "to": "ni_173442763243678"}]}, {"id": "173442763243235", "nodes": [{"name": "s2_mod_1", "id": "node_173442763243793", "instanceName": "s2_mod_1", "twoColumn": true, "interfaces": [{"name": "cs_s2_mint_out_2", "id": "ni_173442763243789", "direction": "output", "side": "right"}, {"name": "cs_s2_f_int_in_1", "id": "ni_173442763243790", "direction": "input", "side": "left"}, {"name": "cs_s2_f_int_in_2", "id": "ni_173442763243791", "direction": "input", "side": "left"}, {"name": "cs_s2_mint_out_1", "id": "ni_173442763243792", "direction": "output", "side": "right"}], "properties": []}, {"name": "s2_mod_2", "id": "node_173442763243897", "instanceName": "s2_mod_2", "twoColumn": true, "interfaces": [{"name": "cs_s2_f_mod_out_1", "id": "ni_173442763243894", "direction": "output", "side": "right"}, {"name": "cs_s2_mint_in_1", "id": "ni_173442763243895", "direction": "input", "side": "left"}, {"name": "cs_s2_mint_in_2", "id": "ni_173442763243896", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_1734427632438100", "instanceName": "sub_2 cs_s2_int_in_2", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243898", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763243232", "direction": "input", "side": "left", "externalName": "cs_s2_int_in_2"}], "properties": []}, {"name": "Subgraph port", "id": "node_1734427632438103", "instanceName": "sub_2 cs_s2_int_in_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_1734427632438101", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763243233", "direction": "input", "side": "left", "externalName": "cs_s2_int_in_1"}], "properties": []}, {"name": "Subgraph port", "id": "node_1734427632438106", "instanceName": "sub_2 cs_s2_mod_out_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243234", "direction": "output", "side": "right", "externalName": "cs_s2_mod_out_1"}, {"name": "subgraph in", "id": "ni_1734427632438105", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "1734427632438107", "from": "ni_173442763243792", "to": "ni_173442763243895"}, {"id": "1734427632438108", "from": "ni_173442763243789", "to": "ni_173442763243896"}, {"id": "1734427632438109", "from": "ni_173442763243790", "to": "ni_1734427632438101"}, {"id": "1734427632438110", "from": "ni_173442763243791", "to": "ni_173442763243898"}, {"id": "1734427632438111", "from": "ni_173442763243894", "to": "ni_1734427632438105"}]}, {"id": "173442763243217", "nodes": [{"name": "c_mod_1", "id": "node_1734427632439115", "instanceName": "c_mod_1", "twoColumn": true, "interfaces": [{"name": "c_mod_in_1", "id": "ni_1734427632439113", "direction": "input", "side": "left"}, {"name": "c_int_out_1", "id": "ni_1734427632439114", "direction": "output", "side": "right"}], "properties": [{"name": "MAX_VALUE", "id": "1734427632439112", "value": "16"}]}, {"name": "c_mod_2", "id": "node_1734427632440118", "instanceName": "c_mod_2", "twoColumn": true, "interfaces": [{"name": "c_int_out_2", "id": "ni_1734427632440116", "direction": "output", "side": "right"}, {"name": "c_mod_in_2", "id": "ni_1734427632440117", "direction": "input", "side": "left"}], "properties": []}, {"name": "c_mod_3", "id": "node_1734427632441123", "instanceName": "c_mod_3", "twoColumn": true, "interfaces": [{"name": "c_int_in_2", "id": "ni_1734427632441119", "direction": "input", "side": "left"}, {"name": "c_mod_out_1", "id": "ni_1734427632441120", "direction": "output", "side": "right"}, {"name": "c_int_in_1", "id": "ni_1734427632441121", "direction": "input", "side": "left"}, {"name": "c_int_const_in", "id": "ni_1734427632441122", "direction": "input", "side": "left"}], "properties": []}, {"name": "Constant", "id": "node_1734427632441139", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_1734427632441138", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "1734427632441137", "value": "1"}]}, {"name": "Subgraph port", "id": "node_1734427632441126", "instanceName": "counter c_in_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_1734427632441124", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763243214", "direction": "input", "side": "left", "externalName": "c_in_1"}], "properties": []}, {"name": "Subgraph port", "id": "node_1734427632441129", "instanceName": "counter c_in_2", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_1734427632441127", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763243215", "direction": "input", "side": "left", "externalName": "c_in_2"}], "properties": []}, {"name": "Subgraph port", "id": "node_1734427632441132", "instanceName": "counter c_out_1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763243216", "direction": "output", "side": "right", "externalName": "c_out_1"}, {"name": "subgraph in", "id": "ni_1734427632441131", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "1734427632441133", "from": "ni_1734427632440116", "to": "ni_1734427632441121"}, {"id": "1734427632441134", "from": "ni_1734427632439114", "to": "ni_1734427632441119"}, {"id": "1734427632441135", "from": "ni_1734427632439113", "to": "ni_1734427632441124"}, {"id": "1734427632441136", "from": "ni_1734427632440117", "to": "ni_1734427632441127"}, {"id": "1734427632441140", "from": "ni_1734427632441138", "to": "ni_1734427632441122"}, {"id": "1734427632441141", "from": "ni_1734427632441120", "to": "ni_1734427632441131"}]}, {"id": "173442763243223", "nodes": [{"name": "New Graph Node", "id": "node_173442763243213", "instanceName": "complex_sub", "twoColumn": true, "interfaces": [{"name": "cs_in_1", "id": "ni_17344276324329", "direction": "input", "side": "left"}, {"name": "cs_empty_port_in", "id": "ni_173442763243210", "direction": "input", "side": "left"}, {"name": "cs_out_1", "id": "ni_173442763243211", "direction": "output", "side": "right"}], "properties": [], "subgraph": "173442763243212"}, {"name": "New Graph Node", "id": "node_173442763243218", "instanceName": "counter", "twoColumn": true, "interfaces": [{"name": "c_in_1", "id": "ni_173442763243214", "direction": "input", "side": "left"}, {"name": "c_in_2", "id": "ni_173442763243215", "direction": "input", "side": "left"}, {"name": "c_out_1", "id": "ni_173442763243216", "direction": "output", "side": "right"}], "properties": [], "subgraph": "173442763243217"}, {"name": "External Input", "id": "node_17344276324322", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17344276324321", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17344276324320", "value": "ex_out_1"}]}, {"name": "External Input", "id": "node_17344276324325", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17344276324324", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17344276324323", "value": "ex_out_2"}]}, {"name": "External Output", "id": "node_17344276324328", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17344276324327", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "17344276324326", "value": "ex_in_1"}]}], "connections": [{"id": "173442763243219", "from": "ni_173442763243216", "to": "ni_17344276324329"}, {"id": "173442763243220", "from": "ni_173442763243211", "to": "ni_17344276324327"}, {"id": "173442763243221", "from": "ni_17344276324321", "to": "ni_173442763243214"}, {"id": "173442763243222", "from": "ni_17344276324324", "to": "ni_173442763243215"}]}], "entryGraph": "173442763243223", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/24a44bb28886b5b4065a4fe0fdf619ed/spec_pwm.json b/_downloads/24a44bb28886b5b4065a4fe0fdf619ed/spec_pwm.json new file mode 100644 index 00000000..6f81b17f --- /dev/null +++ b/_downloads/24a44bb28886b5b4065a4fe0fdf619ed/spec_pwm.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "litex_pwm", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "sys_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "pwm", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi", "direction": "input", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}], "additionalData": "ipcores/litex_pwm.yaml"}, {"name": "proc_sys_reset", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "ext_reset_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "peripheral_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "interconnect_aresetn", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mb_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aux_reset_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mb_debug_sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "slowest_sync_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "dcm_locked", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "bus_struct_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "peripheral_aresetn", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/proc_sys_reset.yaml"}, {"name": "ps7", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "MAXIGP0ARESETN", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "MAXIGP0ACLK", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK_RESET0_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK0", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "M_AXI_GP0", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}], "additionalData": "ipcores/ps7.yaml"}, {"name": "axi_axil_adapter", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "ADDR_WIDTH", "type": "text", "default": "32"}, {"name": "AXI_DATA_WIDTH", "type": "text", "default": "32"}, {"name": "AXI_ID_WIDTH", "type": "text", "default": "8"}, {"name": "AXI_STRB_WIDTH", "type": "text", "default": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "type": "text", "default": "32"}, {"name": "AXIL_STRB_WIDTH", "type": "text", "default": "AXIL_DATA_WIDTH/8"}], "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi", "direction": "output", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_axil_adapter.yaml"}, {"name": "axi_interconnect", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "S_COUNT", "type": "text", "default": "1"}, {"name": "M_COUNT", "type": "text", "default": "4"}, {"name": "DATA_WIDTH", "type": "text", "default": "32"}, {"name": "ADDR_WIDTH", "type": "text", "default": "32"}, {"name": "ID_WIDTH", "type": "text", "default": "12"}, {"name": "M_BASE_ADDR", "type": "text", "default": "0"}, {"name": "M_ADDR_WIDTH", "type": "text", "default": "96'h100000001000000010"}, {"name": "AWUSER_WIDTH", "type": "text", "default": "1"}, {"name": "WUSER_WIDTH", "type": "text", "default": "1"}, {"name": "ARUSER_WIDTH", "type": "text", "default": "1"}, {"name": "BUSER_WIDTH", "type": "text", "default": "1"}, {"name": "RUSER_WIDTH", "type": "text", "default": "1"}, {"name": "STRB_WIDTH", "type": "text", "default": "DATA_WIDTH/8"}], "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi_0", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_0", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_1", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_2", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_interconnect.yaml"}, {"name": "axi_protocol_converter", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "S_AXI", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "M_AXI", "direction": "output", "type": ["iface_AXI3"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_protocol_converter.yaml"}, {"name": "axis_async_fifo", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "DATA_WIDTH", "type": "text", "default": "8"}, {"name": "KEEP_WIDTH", "type": "text", "default": "(DATA_WIDTH+7)/8"}, {"name": "ID_WIDTH", "type": "text", "default": "8"}, {"name": "DEST_WIDTH", "type": "text", "default": "8"}, {"name": "USER_WIDTH", "type": "text", "default": "1"}, {"name": "ID_ENABLE", "type": "text", "default": "0"}, {"name": "USER_ENABLE", "type": "text", "default": "1"}], "interfaces": [{"name": "s_status_good_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_good_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_overflow", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "async_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_bad_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_bad_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_overflow", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axis", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axis_async_fifo.yaml"}, {"name": "axis_dwidth_converter", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "IN_DATA_WIDTH", "type": "text", "default": "64"}, {"name": "OUT_DATA_WIDTH", "type": "text", "default": "32"}], "interfaces": [{"name": "aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axis", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axis_dwidth_converter.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port", "iface_AXI4Stream", "iface_AXI4", "iface_AXI4Lite", "iface_AXI3"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port", "iface_AXI4Stream", "iface_AXI4", "iface_AXI4Lite", "iface_AXI3"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port", "iface_AXI4Stream", "iface_AXI4", "iface_AXI4Lite", "iface_AXI3"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port", "iface_AXI4Stream", "iface_AXI4", "iface_AXI4Lite", "iface_AXI3"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"iface_AXI4Stream": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI4": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI4Lite": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI3": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/29672a5b7d245376eaee2814774f776c/data_ir_examples_hierarchical.json b/_downloads/29672a5b7d245376eaee2814774f776c/data_ir_examples_hierarchical.json new file mode 100644 index 00000000..8afdb9ca --- /dev/null +++ b/_downloads/29672a5b7d245376eaee2814774f776c/data_ir_examples_hierarchical.json @@ -0,0 +1 @@ +{"graphs": [{"id": "173442763026224", "nodes": [{"name": "debouncer", "id": "node_173442763026337", "instanceName": "debouncer", "twoColumn": true, "interfaces": [{"name": "in", "id": "ni_173442763026334", "direction": "input", "side": "left"}, {"name": "filtered_out", "id": "ni_173442763026335", "direction": "output", "side": "right"}, {"name": "clk", "id": "ni_173442763026336", "direction": "input", "side": "left"}], "properties": [{"name": "GRACE", "id": "173442763026333", "value": "1000"}]}, {"name": "New Graph Node", "id": "node_173442763026342", "instanceName": "4-bit counter", "twoColumn": true, "interfaces": [{"name": "impulse", "id": "ni_173442763026338", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_173442763026339", "direction": "input", "side": "left"}, {"name": "sum", "id": "ni_173442763026340", "direction": "output", "side": "right"}], "properties": [], "subgraph": "173442763026341"}, {"name": "New Graph Node", "id": "node_173442763026349", "instanceName": "encoder", "twoColumn": true, "interfaces": [{"name": "number", "id": "ni_173442763026343", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_173442763026344", "direction": "input", "side": "left"}, {"name": "enc0", "id": "ni_173442763026345", "direction": "output", "side": "right"}, {"name": "enc1", "id": "ni_173442763026346", "direction": "output", "side": "right"}, {"name": "enc2", "id": "ni_173442763026347", "direction": "output", "side": "right"}], "properties": [], "subgraph": "173442763026348"}, {"name": "Subgraph port", "id": "node_173442763026452", "instanceName": "proc btn", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026350", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763026218", "direction": "input", "side": "left", "externalName": "btn"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763026455", "instanceName": "proc clk", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026453", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763026219", "direction": "input", "side": "left", "externalName": "clk"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763026458", "instanceName": "proc rst", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026456", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763026220", "direction": "input", "side": "left", "externalName": "rst"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763026461", "instanceName": "proc enc0", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026221", "direction": "output", "side": "right", "externalName": "enc0"}, {"name": "subgraph in", "id": "ni_173442763026460", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763026464", "instanceName": "proc enc1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026222", "direction": "output", "side": "right", "externalName": "enc1"}, {"name": "subgraph in", "id": "ni_173442763026463", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763026467", "instanceName": "proc enc2", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026223", "direction": "output", "side": "right", "externalName": "enc2"}, {"name": "subgraph in", "id": "ni_173442763026466", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "173442763026468", "from": "ni_173442763026335", "to": "ni_173442763026338"}, {"id": "173442763026469", "from": "ni_173442763026340", "to": "ni_173442763026343"}, {"id": "173442763026470", "from": "ni_173442763026339", "to": "ni_173442763026456"}, {"id": "173442763026471", "from": "ni_173442763026336", "to": "ni_173442763026453"}, {"id": "173442763026472", "from": "ni_173442763026334", "to": "ni_173442763026350"}, {"id": "173442763026473", "from": "ni_173442763026344", "to": "ni_173442763026453"}, {"id": "173442763026474", "from": "ni_173442763026345", "to": "ni_173442763026460"}, {"id": "173442763026475", "from": "ni_173442763026346", "to": "ni_173442763026463"}, {"id": "173442763026476", "from": "ni_173442763026347", "to": "ni_173442763026466"}]}, {"id": "173442763026341", "nodes": [{"name": "D-flipflop", "id": "node_173442763026582", "instanceName": "D-flipflop", "twoColumn": true, "interfaces": [{"name": "Q", "id": "ni_173442763026578", "direction": "output", "side": "right"}, {"name": "rst", "id": "ni_173442763026579", "direction": "input", "side": "left"}, {"name": "D", "id": "ni_173442763026580", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_173442763026581", "direction": "input", "side": "left"}], "properties": [{"name": "WIDTH", "id": "173442763026577", "value": "4"}]}, {"name": "adder", "id": "node_173442763026787", "instanceName": "adder", "twoColumn": true, "interfaces": [{"name": "sum", "id": "ni_173442763026784", "direction": "output", "side": "right"}, {"name": "a", "id": "ni_173442763026785", "direction": "input", "side": "left"}, {"name": "b", "id": "ni_173442763026786", "direction": "input", "side": "left"}], "properties": [{"name": "WIDTH", "id": "173442763026783", "value": "4"}]}, {"name": "Subgraph port", "id": "node_173442763026790", "instanceName": "4-bit counter impulse", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026788", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763026338", "direction": "input", "side": "left", "externalName": "impulse"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763026793", "instanceName": "4-bit counter rst", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026791", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763026339", "direction": "input", "side": "left", "externalName": "rst"}], "properties": []}, {"name": "Subgraph port", "id": "node_173442763026796", "instanceName": "4-bit counter sum", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026340", "direction": "output", "side": "right", "externalName": "sum"}, {"name": "subgraph in", "id": "ni_173442763026795", "direction": "input", "side": "left"}], "properties": []}], "connections": [{"id": "173442763026797", "from": "ni_173442763026784", "to": "ni_173442763026580"}, {"id": "173442763026798", "from": "ni_173442763026578", "to": "ni_173442763026785"}, {"id": "173442763026799", "from": "ni_173442763026578", "to": "ni_173442763026795"}, {"id": "1734427630267100", "from": "ni_173442763026581", "to": "ni_173442763026788"}, {"id": "1734427630267101", "from": "ni_173442763026579", "to": "ni_173442763026791"}, {"id": "1734427630267102", "from": "ni_173442763026786", "to": "ni_173442763026788"}]}, {"id": "173442763026348", "nodes": [{"name": "Subgraph port", "id": "node_1734427630267105", "instanceName": "encoder number", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_1734427630267103", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763026343", "direction": "input", "side": "left", "externalName": "number"}], "properties": []}, {"name": "Subgraph port", "id": "node_1734427630267108", "instanceName": "encoder clk", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_1734427630267106", "direction": "output", "side": "right"}, {"name": "subgraph in", "id": "ni_173442763026344", "direction": "input", "side": "left", "externalName": "clk"}], "properties": []}, {"name": "Subgraph port", "id": "node_1734427630267111", "instanceName": "encoder enc0", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026345", "direction": "output", "side": "right", "externalName": "enc0"}, {"name": "subgraph in", "id": "ni_1734427630267110", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_1734427630267114", "instanceName": "encoder enc1", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026346", "direction": "output", "side": "right", "externalName": "enc1"}, {"name": "subgraph in", "id": "ni_1734427630267113", "direction": "input", "side": "left"}], "properties": []}, {"name": "Subgraph port", "id": "node_1734427630267117", "instanceName": "encoder enc2", "twoColumn": true, "interfaces": [{"name": "subgraph out", "id": "ni_173442763026347", "direction": "output", "side": "right", "externalName": "enc2"}, {"name": "subgraph in", "id": "ni_1734427630267116", "direction": "input", "side": "left"}], "properties": []}], "connections": []}, {"id": "173442763026232", "nodes": [{"name": "New Graph Node", "id": "node_173442763026225", "instanceName": "proc", "twoColumn": true, "interfaces": [{"name": "btn", "id": "ni_173442763026218", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_173442763026219", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_173442763026220", "direction": "input", "side": "left"}, {"name": "enc0", "id": "ni_173442763026221", "direction": "output", "side": "right"}, {"name": "enc1", "id": "ni_173442763026222", "direction": "output", "side": "right"}, {"name": "enc2", "id": "ni_173442763026223", "direction": "output", "side": "right"}], "properties": [], "subgraph": "173442763026224"}, {"name": "External Input", "id": "node_17344276302622", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17344276302621", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17344276302620", "value": "clk"}]}, {"name": "External Input", "id": "node_17344276302625", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17344276302624", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17344276302623", "value": "btn"}]}, {"name": "External Input", "id": "node_17344276302628", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17344276302627", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17344276302626", "value": "rst"}]}, {"name": "External Output", "id": "node_173442763026211", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763026210", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "17344276302629", "value": "disp0"}]}, {"name": "External Output", "id": "node_173442763026214", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763026213", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442763026212", "value": "disp1"}]}, {"name": "External Output", "id": "node_173442763026217", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763026216", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442763026215", "value": "disp2"}]}], "connections": [{"id": "173442763026226", "from": "ni_17344276302624", "to": "ni_173442763026218"}, {"id": "173442763026227", "from": "ni_17344276302621", "to": "ni_173442763026219"}, {"id": "173442763026228", "from": "ni_173442763026221", "to": "ni_173442763026210"}, {"id": "173442763026229", "from": "ni_173442763026222", "to": "ni_173442763026213"}, {"id": "173442763026230", "from": "ni_173442763026223", "to": "ni_173442763026216"}, {"id": "173442763026231", "from": "ni_17344276302627", "to": "ni_173442763026220"}]}], "entryGraph": "173442763026232", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/38f18242692d5a1bcddd2f003a366214/data_ir_examples_simple.json b/_downloads/38f18242692d5a1bcddd2f003a366214/data_ir_examples_simple.json new file mode 100644 index 00000000..59e5f293 --- /dev/null +++ b/_downloads/38f18242692d5a1bcddd2f003a366214/data_ir_examples_simple.json @@ -0,0 +1 @@ +{"graphs": [{"id": "173442763136058", "nodes": [{"name": "2mux_compressor", "id": "node_17344276313526", "instanceName": "2mux", "twoColumn": true, "interfaces": [{"name": "gen1", "id": "ni_17344276313522", "direction": "input", "side": "left"}, {"name": "out", "id": "ni_17344276313523", "direction": "output", "side": "right"}, {"name": "gen2", "id": "ni_17344276313524", "direction": "input", "side": "left"}, {"name": "gen_sel", "id": "ni_17344276313525", "direction": "input", "side": "left"}], "properties": [{"name": "WIDTH", "id": "17344276313520", "value": "128"}, {"name": "OUT_WIDTH", "id": "17344276313521", "value": "1"}]}, {"name": "lfsr_gen", "id": "node_173442763135412", "instanceName": "gen1", "twoColumn": true, "interfaces": [{"name": "clk", "id": "ni_17344276313549", "direction": "input", "side": "left"}, {"name": "gen_out", "id": "ni_173442763135410", "direction": "output", "side": "right"}, {"name": "rst", "id": "ni_173442763135411", "direction": "input", "side": "left"}], "properties": [{"name": "WIDTH", "id": "17344276313547", "value": "128"}, {"name": "SEED", "id": "17344276313548", "value": "1337"}]}, {"name": "lfsr_gen", "id": "node_173442763135518", "instanceName": "gen2", "twoColumn": true, "interfaces": [{"name": "clk", "id": "ni_173442763135515", "direction": "input", "side": "left"}, {"name": "gen_out", "id": "ni_173442763135516", "direction": "output", "side": "right"}, {"name": "rst", "id": "ni_173442763135517", "direction": "input", "side": "left"}], "properties": [{"name": "WIDTH", "id": "173442763135513", "value": "128"}, {"name": "SEED", "id": "173442763135514", "value": "1"}]}, {"name": "External Input", "id": "node_173442763135521", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763135520", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442763135519", "value": "clk"}]}, {"name": "External Input", "id": "node_173442763135524", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763135523", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442763135522", "value": "rst"}]}, {"name": "External Input", "id": "node_173442763135527", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763135526", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442763135525", "value": "sel_gen"}]}, {"name": "External Output", "id": "node_173442763135530", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763135529", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442763135528", "value": "rnd_bit"}]}], "connections": [{"id": "173442763136050", "from": "ni_173442763135410", "to": "ni_17344276313522"}, {"id": "173442763136051", "from": "ni_173442763135516", "to": "ni_17344276313524"}, {"id": "173442763136052", "from": "ni_173442763135526", "to": "ni_17344276313525"}, {"id": "173442763136053", "from": "ni_17344276313523", "to": "ni_173442763135529"}, {"id": "173442763136054", "from": "ni_173442763135520", "to": "ni_17344276313549"}, {"id": "173442763136055", "from": "ni_173442763135523", "to": "ni_173442763135411"}, {"id": "173442763136056", "from": "ni_173442763135520", "to": "ni_173442763135515"}, {"id": "173442763136057", "from": "ni_173442763135523", "to": "ni_173442763135517"}]}], "entryGraph": "173442763136058", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/3d7058b6f7c02123355d3c3d12e18860/data_soc.json b/_downloads/3d7058b6f7c02123355d3c3d12e18860/data_soc.json new file mode 100644 index 00000000..f214289a --- /dev/null +++ b/_downloads/3d7058b6f7c02123355d3c3d12e18860/data_soc.json @@ -0,0 +1 @@ +{"graphs": [{"id": "1734427627853108", "nodes": [{"name": "VexRiscv", "id": "node_17344276278058", "instanceName": "vexriscv", "twoColumn": true, "interfaces": [{"name": "softwareInterrupt", "id": "ni_17344276278050", "direction": "input", "side": "left"}, {"name": "externalInterruptArray", "id": "ni_17344276278051", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17344276278052", "direction": "input", "side": "left"}, {"name": "reset", "id": "ni_17344276278053", "direction": "input", "side": "left"}, {"name": "externalResetVector", "id": "ni_17344276278054", "direction": "input", "side": "left"}, {"name": "timerInterrupt", "id": "ni_17344276278055", "direction": "input", "side": "left"}, {"name": "dBusWishbone", "id": "ni_17344276278056", "direction": "output", "side": "right"}, {"name": "iBusWishbone", "id": "ni_17344276278057", "direction": "output", "side": "right"}], "properties": []}, {"name": "mem", "id": "node_173442762780813", "instanceName": "wb_ram_data", "twoColumn": true, "interfaces": [{"name": "sys_rst", "id": "ni_173442762780810", "direction": "input", "side": "left"}, {"name": "sys_clk", "id": "ni_173442762780811", "direction": "input", "side": "left"}, {"name": "mem_bus", "id": "ni_173442762780812", "direction": "input", "side": "left"}], "properties": [{"name": "depth", "id": "17344276278089", "value": "4096"}]}, {"name": "mem", "id": "node_173442762781118", "instanceName": "wb_ram_instr", "twoColumn": true, "interfaces": [{"name": "sys_rst", "id": "ni_173442762781115", "direction": "input", "side": "left"}, {"name": "sys_clk", "id": "ni_173442762781116", "direction": "input", "side": "left"}, {"name": "mem_bus", "id": "ni_173442762781117", "direction": "input", "side": "left"}], "properties": [{"name": "depth", "id": "173442762781114", "value": "40960"}]}, {"name": "crg", "id": "node_173442762781222", "instanceName": "crg", "twoColumn": true, "interfaces": [{"name": "sys_rst", "id": "ni_173442762781219", "direction": "output", "side": "right"}, {"name": "clk100", "id": "ni_173442762781220", "direction": "input", "side": "left"}, {"name": "sys_clk", "id": "ni_173442762781221", "direction": "output", "side": "right"}], "properties": []}, {"name": "wb_uart", "id": "node_173442762781628", "instanceName": "wb_uart", "twoColumn": true, "interfaces": [{"name": "sys_rst", "id": "ni_173442762781623", "direction": "input", "side": "left"}, {"name": "serial1_tx", "id": "ni_173442762781624", "direction": "output", "side": "right"}, {"name": "sys_clk", "id": "ni_173442762781625", "direction": "input", "side": "left"}, {"name": "serial1_rx", "id": "ni_173442762781626", "direction": "input", "side": "left"}, {"name": "csr_wishbone", "id": "ni_173442762781627", "direction": "input", "side": "left"}], "properties": []}, {"name": "wb_interconnect", "id": "node_173442762782636", "instanceName": "interconnect", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_173442762782629", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_173442762782630", "direction": "input", "side": "left"}, {"name": "vexriscv_dBusWishbone", "id": "ni_173442762782631", "direction": "input", "side": "left"}, {"name": "vexriscv_iBusWishbone", "id": "ni_173442762782632", "direction": "input", "side": "left"}, {"name": "wb_ram_data_mem_bus", "id": "ni_173442762782633", "direction": "output", "side": "right"}, {"name": "wb_ram_instr_mem_bus", "id": "ni_173442762782634", "direction": "output", "side": "right"}, {"name": "wb_uart_csr_wishbone", "id": "ni_173442762782635", "direction": "output", "side": "right"}], "properties": []}, {"name": "External Input", "id": "node_173442762782639", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762782638", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442762782637", "value": "clk100"}]}, {"name": "External Input", "id": "node_173442762782642", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762782641", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442762782640", "value": "serial_rx"}]}, {"name": "External Output", "id": "node_173442762782645", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762782644", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442762782643", "value": "serial_tx"}]}, {"name": "Constant", "id": "node_173442762785385", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_173442762785384", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "173442762785383", "value": "0"}]}], "connections": [{"id": "173442762785386", "from": "ni_173442762781219", "to": "ni_173442762780810"}, {"id": "173442762785387", "from": "ni_173442762781219", "to": "ni_173442762781115"}, {"id": "173442762785388", "from": "ni_173442762781219", "to": "ni_17344276278053"}, {"id": "173442762785389", "from": "ni_173442762781219", "to": "ni_173442762781623"}, {"id": "173442762785390", "from": "ni_173442762781219", "to": "ni_173442762782629"}, {"id": "173442762785391", "from": "ni_173442762782635", "to": "ni_173442762781627"}, {"id": "173442762785392", "from": "ni_173442762782634", "to": "ni_173442762781117"}, {"id": "173442762785393", "from": "ni_173442762782633", "to": "ni_173442762780812"}, {"id": "173442762785394", "from": "ni_17344276278057", "to": "ni_173442762782632"}, {"id": "173442762785395", "from": "ni_17344276278056", "to": "ni_173442762782631"}, {"id": "173442762785396", "from": "ni_173442762782638", "to": "ni_173442762780811"}, {"id": "173442762785397", "from": "ni_173442762782638", "to": "ni_173442762781116"}, {"id": "173442762785398", "from": "ni_173442762782638", "to": "ni_173442762781220"}, {"id": "173442762785399", "from": "ni_173442762782638", "to": "ni_17344276278052"}, {"id": "1734427627853100", "from": "ni_173442762785384", "to": "ni_17344276278050"}, {"id": "1734427627853101", "from": "ni_173442762785384", "to": "ni_17344276278051"}, {"id": "1734427627853102", "from": "ni_173442762785384", "to": "ni_17344276278055"}, {"id": "1734427627853103", "from": "ni_173442762785384", "to": "ni_17344276278054"}, {"id": "1734427627853104", "from": "ni_173442762782638", "to": "ni_173442762781625"}, {"id": "1734427627853105", "from": "ni_173442762781624", "to": "ni_173442762782644"}, {"id": "1734427627853106", "from": "ni_173442762782641", "to": "ni_173442762781626"}, {"id": "1734427627853107", "from": "ni_173442762782638", "to": "ni_173442762782630"}]}], "entryGraph": "1734427627853108", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/3eebc46f634d9656ad996e09eefcb4f8/specification_hierarchy.json b/_downloads/3eebc46f634d9656ad996e09eefcb4f8/specification_hierarchy.json new file mode 100644 index 00000000..d90b6302 --- /dev/null +++ b/_downloads/3eebc46f634d9656ad996e09eefcb4f8/specification_hierarchy.json @@ -0,0 +1,441 @@ +{ + "version": "20240723.13", + "metadata": { + "allowLoopbacks": true, + "backgroundSize": 15, + "connectionStyle": "orthogonal", + "interfaces": { + "port": { + "interfaceColor": "#00ca7c", + "interfaceConnectionColor": "#ffffff", + "interfaceConnectionPattern": "solid" + } + }, + "layers": [ + { + "name": "IP Cores", + "nodeLayers": [ + "IP Cores" + ] + }, + { + "name": "Externals", + "nodeLayers": [ + "Externals" + ] + }, + { + "name": "Constants", + "nodeLayers": [ + "Constants" + ] + } + ], + "layout": "CytoscapeEngine - grid", + "movementStep": 15, + "navbarItems": [ + { + "allowToRunInParallelWith": [ + "dataflow_run", + "custom_lint_files" + ], + "iconName": "Validate", + "name": "Validate", + "procedureName": "dataflow_validate", + "stopName": "Stop" + }, + { + "allowToRunInParallelWith": [ + "dataflow_validate", + "custom_lint_files" + ], + "iconName": "Run", + "name": "Run", + "procedureName": "dataflow_run", + "stopName": "Stop" + } + ], + "notifyWhenChanged": true, + "twoColumn": true + }, + "nodes": [ + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/c_mod_1/c_mod_1.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "c_int_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_mod_in_1", + "type": [ + "port" + ] + } + ], + "layer": "IP Cores", + "name": "c_mod_1", + "properties": [ + { + "default": "32", + "name": "MAX_VALUE", + "type": "text" + } + ] + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/c_mod_2/c_mod_2.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_mod_in_2", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "c_int_out_2", + "type": [ + "port" + ] + } + ], + "layer": "IP Cores", + "name": "c_mod_2" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/c_mod_3/c_mod_3.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_int_const_in", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "c_mod_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_int_in_2", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "c_int_in_1", + "type": [ + "port" + ] + } + ], + "layer": "IP Cores", + "name": "c_mod_3" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s1_mod_1/s1_mod_1.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s1_f_ext_const_in", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s1_f_mod_in_1", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s1_mint_out_1", + "type": [ + "port" + ] + } + ], + "layer": "IP Cores", + "name": "s1_mod_1" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s1_mod_2/s1_mod_2.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s1_f_int_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s1_mint_in_1", + "type": [ + "port" + ] + } + ], + "layer": "IP Cores", + "name": "s1_mod_2" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s1_mod_3/s1_mod_3.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s1_f_int_out_2", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s1_mint_in_2", + "type": [ + "port" + ] + } + ], + "layer": "IP Cores", + "name": "s1_mod_3", + "properties": [ + { + "default": "18", + "name": "SUB_VALUE", + "type": "text" + } + ] + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s2_mod_1/s2_mod_1.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s2_mint_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s2_f_int_in_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s2_f_int_in_2", + "type": [ + "port" + ] + }, + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s2_mint_out_2", + "type": [ + "port" + ] + } + ], + "layer": "IP Cores", + "name": "s2_mod_1" + }, + { + "abstract": false, + "additionalData": "examples/hierarchy/repo/cores/s2_mod_2/s2_mod_2.yaml", + "category": "IPcore", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "cs_s2_f_mod_out_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s2_mint_in_1", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "cs_s2_mint_in_2", + "type": [ + "port" + ] + } + ], + "layer": "IP Cores", + "name": "s2_mod_2" + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "external", + "type": [ + "port" + ] + } + ], + "layer": "Externals", + "name": "External Output", + "properties": [ + { + "default": "", + "name": "External Name", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "external", + "type": [ + "port" + ] + } + ], + "layer": "Externals", + "name": "External Input", + "properties": [ + { + "default": "", + "name": "External Name", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "inout", + "maxConnectionsCount": -1, + "name": "external", + "type": [ + "port" + ] + } + ], + "layer": "Externals", + "name": "External Inout", + "properties": [ + { + "default": "", + "name": "External Name", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "constant", + "type": [ + "port" + ] + } + ], + "layer": "Constants", + "name": "Constant", + "properties": [ + { + "default": "0", + "name": "Constant Value", + "type": "text" + } + ] + }, + { + "abstract": false, + "category": "Metanode", + "interfaces": [ + { + "direction": "output", + "maxConnectionsCount": -1, + "name": "subgraph out", + "type": [ + "port" + ] + }, + { + "direction": "input", + "maxConnectionsCount": -1, + "name": "subgraph in", + "type": [ + "port" + ] + } + ], + "layer": "Externals", + "name": "Subgraph port" + } + ] +} diff --git a/_downloads/549edc91f483264549a864a8d2176194/data_inout.json b/_downloads/549edc91f483264549a864a8d2176194/data_inout.json new file mode 100644 index 00000000..8930fe7a --- /dev/null +++ b/_downloads/549edc91f483264549a864a8d2176194/data_inout.json @@ -0,0 +1 @@ +{"graphs": [{"id": "173442762975772", "nodes": [{"name": "ibuf", "id": "node_17344276297514", "instanceName": "ip_ibuf", "twoColumn": true, "interfaces": [{"name": "a", "id": "ni_17344276297510", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17344276297511", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_17344276297512", "direction": "input", "side": "left"}, {"name": "z", "id": "ni_17344276297513", "direction": "output", "side": "right"}], "properties": []}, {"name": "obuf", "id": "node_173442762975210", "instanceName": "ip_obuf", "twoColumn": true, "interfaces": [{"name": "oe", "id": "ni_17344276297525", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_17344276297526", "direction": "input", "side": "left"}, {"name": "a", "id": "ni_17344276297527", "direction": "input", "side": "left"}, {"name": "z", "id": "ni_17344276297528", "direction": "output", "side": "right"}, {"name": "clk", "id": "ni_17344276297529", "direction": "input", "side": "left"}], "properties": []}, {"name": "iobuf", "id": "node_173442762975417", "instanceName": "ip_iobuf", "twoColumn": true, "interfaces": [{"name": "oe", "id": "ni_173442762975411", "direction": "input", "side": "left"}, {"name": "rst", "id": "ni_173442762975412", "direction": "input", "side": "left"}, {"name": "a", "id": "ni_173442762975413", "direction": "input", "side": "left"}, {"name": "y", "id": "ni_173442762975414", "direction": "output", "side": "right"}, {"name": "clk", "id": "ni_173442762975415", "direction": "input", "side": "left"}, {"name": "z", "id": "ni_173442762975416", "direction": "inout", "side": "right"}], "properties": []}, {"name": "External Input", "id": "node_173442762975420", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762975419", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442762975418", "value": "PORT_CLK"}]}, {"name": "External Input", "id": "node_173442762975423", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762975422", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442762975421", "value": "PORT_RST"}]}, {"name": "External Input", "id": "node_173442762975426", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762975425", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442762975424", "value": "PORT_IN"}]}, {"name": "External Output", "id": "node_173442762975429", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762975428", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442762975427", "value": "PORT_OUT_0"}]}, {"name": "External Output", "id": "node_173442762975432", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762975431", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442762975430", "value": "PORT_OUT_1"}]}, {"name": "External Output", "id": "node_173442762975435", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762975434", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442762975433", "value": "PORT_OUT_2"}]}, {"name": "External Inout", "id": "node_173442762975438", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762975437", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "173442762975436", "value": "z"}]}], "connections": [{"id": "173442762975757", "from": "ni_173442762975419", "to": "ni_17344276297529"}, {"id": "173442762975758", "from": "ni_173442762975422", "to": "ni_17344276297526"}, {"id": "173442762975759", "from": "ni_173442762975419", "to": "ni_17344276297525"}, {"id": "173442762975760", "from": "ni_173442762975425", "to": "ni_17344276297527"}, {"id": "173442762975761", "from": "ni_17344276297528", "to": "ni_173442762975428"}, {"id": "173442762975762", "from": "ni_173442762975419", "to": "ni_173442762975415"}, {"id": "173442762975763", "from": "ni_173442762975422", "to": "ni_173442762975412"}, {"id": "173442762975764", "from": "ni_173442762975419", "to": "ni_173442762975411"}, {"id": "173442762975765", "from": "ni_173442762975425", "to": "ni_173442762975413"}, {"id": "173442762975766", "from": "ni_173442762975414", "to": "ni_173442762975431"}, {"id": "173442762975767", "from": "ni_173442762975419", "to": "ni_17344276297511"}, {"id": "173442762975768", "from": "ni_173442762975422", "to": "ni_17344276297512"}, {"id": "173442762975769", "from": "ni_173442762975425", "to": "ni_17344276297510"}, {"id": "173442762975770", "from": "ni_17344276297513", "to": "ni_173442762975434"}, {"id": "173442762975771", "from": "ni_173442762975437", "to": "ni_173442762975416"}]}], "entryGraph": "173442762975772", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/6530dd63de97998c97b609898303e8fc/dataflow_hierarchy.json b/_downloads/6530dd63de97998c97b609898303e8fc/dataflow_hierarchy.json new file mode 100644 index 00000000..9f15c84e --- /dev/null +++ b/_downloads/6530dd63de97998c97b609898303e8fc/dataflow_hierarchy.json @@ -0,0 +1,952 @@ +{ + "version": "20240723.13", + "entryGraph": "1728900283862677", + "graphs": [ + { + "connections": [ + { + "from": "ni_1728900283863681", + "id": "1728900283863700", + "to": "ni_1728900283863687" + }, + { + "from": "ni_1728900283863682", + "id": "1728900283863701", + "to": "ni_1728900283863686" + }, + { + "from": "ni_1728900283863703", + "id": "1728900283863705", + "to": "ni_1728900283863678" + }, + { + "from": "ni_1728900283863679", + "id": "1728900283863706", + "to": "ni_1728900283863691" + }, + { + "from": "ni_1728900283863688", + "id": "1728900283863707", + "to": "ni_1728900283863698" + } + ], + "id": "1728900283862666", + "nodes": [ + { + "id": "node_1728900283863685", + "instanceName": "sub_1", + "interfaces": [ + { + "direction": "input", + "id": "ni_1728900283863678", + "name": "cs_s1_int_const_in", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1728900283863679", + "name": "cs_s1_mod_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1728900283863680", + "name": "cs_s1_empty_in", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1728900283863681", + "name": "cs_s1_int_out_1", + "side": "right" + }, + { + "direction": "output", + "id": "ni_1728900283863682", + "name": "cs_s1_int_out_2", + "side": "right" + }, + { + "direction": "output", + "id": "ni_1728900283863683", + "name": "cs_s1_empty_out", + "side": "right" + } + ], + "name": "New Graph Node", + "properties": [], + "subgraph": "1728900283863684", + "twoColumn": true + }, + { + "id": "node_1728900283863690", + "instanceName": "sub_2", + "interfaces": [ + { + "direction": "input", + "id": "ni_1728900283863686", + "name": "cs_s2_int_in_2", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1728900283863687", + "name": "cs_s2_int_in_1", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1728900283863688", + "name": "cs_s2_mod_out_1", + "side": "right" + } + ], + "name": "New Graph Node", + "properties": [], + "subgraph": "1728900283863689", + "twoColumn": true + }, + { + "id": "node_1728900283863704", + "instanceName": "Constant", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863703", + "name": "constant", + "side": "right" + } + ], + "name": "Constant", + "properties": [ + { + "id": "1728900283863702", + "name": "Constant Value", + "value": "1" + } + ], + "twoColumn": true + }, + { + "id": "node_1728900283863693", + "instanceName": "complex_sub cs_in_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863691", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_in_1", + "id": "ni_1728900283862663", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863696", + "instanceName": "complex_sub cs_empty_port_in", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863694", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_empty_port_in", + "id": "ni_1728900283862664", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863699", + "instanceName": "complex_sub cs_out_1", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_out_1", + "id": "ni_1728900283862665", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863698", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + } + ] + }, + { + "connections": [ + { + "from": "ni_1728900283863710", + "id": "1728900283863737", + "to": "ni_1728900283863713" + }, + { + "from": "ni_1728900283863710", + "id": "1728900283863738", + "to": "ni_1728900283863717" + }, + { + "from": "ni_1728900283863708", + "id": "1728900283863739", + "to": "ni_1728900283863719" + }, + { + "from": "ni_1728900283863709", + "id": "1728900283863740", + "to": "ni_1728900283863722" + }, + { + "from": "ni_1728900283863712", + "id": "1728900283863741", + "to": "ni_1728900283863729" + }, + { + "from": "ni_1728900283863716", + "id": "1728900283863742", + "to": "ni_1728900283863732" + } + ], + "id": "1728900283863684", + "nodes": [ + { + "id": "node_1728900283863711", + "instanceName": "s1_mod_1", + "interfaces": [ + { + "direction": "input", + "id": "ni_1728900283863708", + "name": "cs_s1_f_ext_const_in", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1728900283863709", + "name": "cs_s1_f_mod_in_1", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1728900283863710", + "name": "cs_s1_mint_out_1", + "side": "right" + } + ], + "name": "s1_mod_1", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863714", + "instanceName": "s1_mod_2", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863712", + "name": "cs_s1_f_int_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863713", + "name": "cs_s1_mint_in_1", + "side": "left" + } + ], + "name": "s1_mod_2", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863718", + "instanceName": "s1_mod_3", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863716", + "name": "cs_s1_f_int_out_2", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863717", + "name": "cs_s1_mint_in_2", + "side": "left" + } + ], + "name": "s1_mod_3", + "properties": [ + { + "id": "1728900283863715", + "name": "SUB_VALUE", + "value": "18" + } + ], + "twoColumn": true + }, + { + "id": "node_1728900283863721", + "instanceName": "sub_1 cs_s1_int_const_in", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863719", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s1_int_const_in", + "id": "ni_1728900283863678", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863724", + "instanceName": "sub_1 cs_s1_mod_in_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863722", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s1_mod_in_1", + "id": "ni_1728900283863679", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863727", + "instanceName": "sub_1 cs_s1_empty_in", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863725", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s1_empty_in", + "id": "ni_1728900283863680", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863730", + "instanceName": "sub_1 cs_s1_int_out_1", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_s1_int_out_1", + "id": "ni_1728900283863681", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863729", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863733", + "instanceName": "sub_1 cs_s1_int_out_2", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_s1_int_out_2", + "id": "ni_1728900283863682", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863732", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863736", + "instanceName": "sub_1 cs_s1_empty_out", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_s1_empty_out", + "id": "ni_1728900283863683", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863735", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + } + ] + }, + { + "connections": [ + { + "from": "ni_1728900283863743", + "id": "1728900283863761", + "to": "ni_1728900283863749" + }, + { + "from": "ni_1728900283863746", + "id": "1728900283863762", + "to": "ni_1728900283863750" + }, + { + "from": "ni_1728900283863744", + "id": "1728900283863763", + "to": "ni_1728900283863755" + }, + { + "from": "ni_1728900283863745", + "id": "1728900283863764", + "to": "ni_1728900283863752" + }, + { + "from": "ni_1728900283863748", + "id": "1728900283863765", + "to": "ni_1728900283863759" + } + ], + "id": "1728900283863689", + "nodes": [ + { + "id": "node_1728900283863747", + "instanceName": "s2_mod_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863743", + "name": "cs_s2_mint_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863744", + "name": "cs_s2_f_int_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1728900283863745", + "name": "cs_s2_f_int_in_2", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1728900283863746", + "name": "cs_s2_mint_out_2", + "side": "right" + } + ], + "name": "s2_mod_1", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863751", + "instanceName": "s2_mod_2", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863748", + "name": "cs_s2_f_mod_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863749", + "name": "cs_s2_mint_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1728900283863750", + "name": "cs_s2_mint_in_2", + "side": "left" + } + ], + "name": "s2_mod_2", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863754", + "instanceName": "sub_2 cs_s2_int_in_2", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863752", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s2_int_in_2", + "id": "ni_1728900283863686", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863757", + "instanceName": "sub_2 cs_s2_int_in_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863755", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "cs_s2_int_in_1", + "id": "ni_1728900283863687", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863760", + "instanceName": "sub_2 cs_s2_mod_out_1", + "interfaces": [ + { + "direction": "output", + "externalName": "cs_s2_mod_out_1", + "id": "ni_1728900283863688", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863759", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + } + ] + }, + { + "connections": [ + { + "from": "ni_1728900283863771", + "id": "1728900283863787", + "to": "ni_1728900283863776" + }, + { + "from": "ni_1728900283863767", + "id": "1728900283863788", + "to": "ni_1728900283863775" + }, + { + "from": "ni_1728900283863768", + "id": "1728900283863789", + "to": "ni_1728900283863778" + }, + { + "from": "ni_1728900283863770", + "id": "1728900283863790", + "to": "ni_1728900283863781" + }, + { + "from": "ni_1728900283863792", + "id": "1728900283863794", + "to": "ni_1728900283863773" + }, + { + "from": "ni_1728900283863774", + "id": "1728900283863795", + "to": "ni_1728900283863785" + } + ], + "id": "1728900283862671", + "nodes": [ + { + "id": "node_1728900283863769", + "instanceName": "c_mod_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863767", + "name": "c_int_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863768", + "name": "c_mod_in_1", + "side": "left" + } + ], + "name": "c_mod_1", + "properties": [ + { + "id": "1728900283863766", + "name": "MAX_VALUE", + "value": "16" + } + ], + "twoColumn": true + }, + { + "id": "node_1728900283863772", + "instanceName": "c_mod_2", + "interfaces": [ + { + "direction": "input", + "id": "ni_1728900283863770", + "name": "c_mod_in_2", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1728900283863771", + "name": "c_int_out_2", + "side": "right" + } + ], + "name": "c_mod_2", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863777", + "instanceName": "c_mod_3", + "interfaces": [ + { + "direction": "input", + "id": "ni_1728900283863773", + "name": "c_int_const_in", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1728900283863774", + "name": "c_mod_out_1", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863775", + "name": "c_int_in_2", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1728900283863776", + "name": "c_int_in_1", + "side": "left" + } + ], + "name": "c_mod_3", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863793", + "instanceName": "Constant", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863792", + "name": "constant", + "side": "right" + } + ], + "name": "Constant", + "properties": [ + { + "id": "1728900283863791", + "name": "Constant Value", + "value": "1" + } + ], + "twoColumn": true + }, + { + "id": "node_1728900283863780", + "instanceName": "counter c_in_1", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863778", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "c_in_1", + "id": "ni_1728900283862668", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863783", + "instanceName": "counter c_in_2", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283863781", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "externalName": "c_in_2", + "id": "ni_1728900283862669", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + }, + { + "id": "node_1728900283863786", + "instanceName": "counter c_out_1", + "interfaces": [ + { + "direction": "output", + "externalName": "c_out_1", + "id": "ni_1728900283862670", + "name": "subgraph out", + "side": "right" + }, + { + "direction": "input", + "id": "ni_1728900283863785", + "name": "subgraph in", + "side": "left" + } + ], + "name": "Subgraph port", + "properties": [], + "twoColumn": true + } + ] + }, + { + "connections": [ + { + "from": "ni_1728900283862670", + "id": "1728900283862673", + "to": "ni_1728900283862663" + }, + { + "from": "ni_1728900283862665", + "id": "1728900283862674", + "to": "ni_1728900283862661" + }, + { + "from": "ni_1728900283862655", + "id": "1728900283862675", + "to": "ni_1728900283862668" + }, + { + "from": "ni_1728900283862658", + "id": "1728900283862676", + "to": "ni_1728900283862669" + } + ], + "id": "1728900283862677", + "nodes": [ + { + "id": "node_1728900283862667", + "instanceName": "complex_sub", + "interfaces": [ + { + "direction": "input", + "id": "ni_1728900283862663", + "name": "cs_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1728900283862664", + "name": "cs_empty_port_in", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1728900283862665", + "name": "cs_out_1", + "side": "right" + } + ], + "name": "New Graph Node", + "properties": [], + "subgraph": "1728900283862666", + "twoColumn": true + }, + { + "id": "node_1728900283862672", + "instanceName": "counter", + "interfaces": [ + { + "direction": "input", + "id": "ni_1728900283862668", + "name": "c_in_1", + "side": "left" + }, + { + "direction": "input", + "id": "ni_1728900283862669", + "name": "c_in_2", + "side": "left" + }, + { + "direction": "output", + "id": "ni_1728900283862670", + "name": "c_out_1", + "side": "right" + } + ], + "name": "New Graph Node", + "properties": [], + "subgraph": "1728900283862671", + "twoColumn": true + }, + { + "id": "node_1728900283862656", + "instanceName": "External Input", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283862655", + "name": "external", + "side": "right" + } + ], + "name": "External Input", + "properties": [ + { + "id": "1728900283862654", + "name": "External Name", + "value": "ex_out_1" + } + ], + "twoColumn": true + }, + { + "id": "node_1728900283862659", + "instanceName": "External Input", + "interfaces": [ + { + "direction": "output", + "id": "ni_1728900283862658", + "name": "external", + "side": "right" + } + ], + "name": "External Input", + "properties": [ + { + "id": "1728900283862657", + "name": "External Name", + "value": "ex_out_2" + } + ], + "twoColumn": true + }, + { + "id": "node_1728900283862662", + "instanceName": "External Output", + "interfaces": [ + { + "direction": "input", + "id": "ni_1728900283862661", + "name": "external", + "side": "left" + } + ], + "name": "External Output", + "properties": [ + { + "id": "1728900283862660", + "name": "External Name", + "value": "ex_in_1" + } + ], + "twoColumn": true + } + ] + } + ] +} diff --git a/_downloads/84ce8aa4abd3bea88484af3dab10256f/spec_inout.json b/_downloads/84ce8aa4abd3bea88484af3dab10256f/spec_inout.json new file mode 100644 index 00000000..350824c9 --- /dev/null +++ b/_downloads/84ce8aa4abd3bea88484af3dab10256f/spec_inout.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "ibuf", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "z", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/ibuf.yaml"}, {"name": "iobuf", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "y", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "z", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "oe", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/iobuf.yaml"}, {"name": "obuf", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "z", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "oe", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/obuf.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/89ad1035ddf0168933d71a1c1088e253/data_pwm.json b/_downloads/89ad1035ddf0168933d71a1c1088e253/data_pwm.json new file mode 100644 index 00000000..d42f7bb7 --- /dev/null +++ b/_downloads/89ad1035ddf0168933d71a1c1088e253/data_pwm.json @@ -0,0 +1 @@ +{"graphs": [{"id": "173442762587755", "nodes": [{"name": "axi_axil_adapter", "id": "node_173442762585410", "instanceName": "axi_bridge", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_17344276258546", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17344276258547", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_17344276258548", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_17344276258549", "direction": "output", "side": "right"}], "properties": [{"name": "ADDR_WIDTH", "id": "17344276258540", "value": "32"}, {"name": "AXI_DATA_WIDTH", "id": "17344276258541", "value": "32"}, {"name": "AXI_ID_WIDTH", "id": "17344276258542", "value": "12"}, {"name": "AXI_STRB_WIDTH", "id": "17344276258543", "value": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "id": "17344276258544", "value": "32"}, {"name": "AXIL_STRB_WIDTH", "id": "17344276258545", "value": "AXIL_DATA_WIDTH/8"}]}, {"name": "litex_pwm", "id": "node_173442762585815", "instanceName": "litex_pwm_top", "twoColumn": true, "interfaces": [{"name": "pwm", "id": "ni_173442762585811", "direction": "output", "side": "right"}, {"name": "sys_rst", "id": "ni_173442762585812", "direction": "input", "side": "left"}, {"name": "sys_clk", "id": "ni_173442762585813", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_173442762585814", "direction": "input", "side": "left"}], "properties": []}, {"name": "ps7", "id": "node_173442762586521", "instanceName": "ps7", "twoColumn": true, "interfaces": [{"name": "MAXIGP0ACLK", "id": "ni_173442762586516", "direction": "input", "side": "left"}, {"name": "FCLK_RESET0_N", "id": "ni_173442762586517", "direction": "output", "side": "right"}, {"name": "FCLK0", "id": "ni_173442762586518", "direction": "output", "side": "right"}, {"name": "MAXIGP0ARESETN", "id": "ni_173442762586519", "direction": "output", "side": "right"}, {"name": "M_AXI_GP0", "id": "ni_173442762586520", "direction": "output", "side": "right"}], "properties": []}, {"name": "External Output", "id": "node_173442762586524", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442762586523", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442762586522", "value": "pwm"}]}], "connections": [{"id": "173442762587747", "from": "ni_173442762586518", "to": "ni_17344276258547"}, {"id": "173442762587748", "from": "ni_173442762586517", "to": "ni_17344276258546"}, {"id": "173442762587749", "from": "ni_173442762586518", "to": "ni_173442762585813"}, {"id": "173442762587750", "from": "ni_173442762586517", "to": "ni_173442762585812"}, {"id": "173442762587751", "from": "ni_173442762586518", "to": "ni_173442762586516"}, {"id": "173442762587752", "from": "ni_173442762586520", "to": "ni_17344276258548"}, {"id": "173442762587753", "from": "ni_17344276258549", "to": "ni_173442762585814"}, {"id": "173442762587754", "from": "ni_173442762585811", "to": "ni_173442762586523"}]}], "entryGraph": "173442762587755", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/8a5ee3a2dd662efb16a3466c9386216b/spec_ir_examples_interface.json b/_downloads/8a5ee3a2dd662efb16a3466c9386216b/spec_ir_examples_interface.json new file mode 100644 index 00000000..23eb4b39 --- /dev/null +++ b/_downloads/8a5ee3a2dd662efb16a3466c9386216b/spec_ir_examples_interface.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "axis_receiver", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "noise", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ext", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "ips/receiver.yaml"}, {"name": "axis_streamer", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "ips/streamer.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port", "iface_AXI4Stream"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port", "iface_AXI4Stream"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port", "iface_AXI4Stream"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port", "iface_AXI4Stream"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"iface_AXI4Stream": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/8c259ebcb1569744a98819f073538cec/spec_hierarchy.json b/_downloads/8c259ebcb1569744a98819f073538cec/spec_hierarchy.json new file mode 100644 index 00000000..0b1f8e6e --- /dev/null +++ b/_downloads/8c259ebcb1569744a98819f073538cec/spec_hierarchy.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "s1_mod_2", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "cs_s1_f_int_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s1_mint_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s1_mod_2/s1_mod_2.yaml"}, {"name": "s1_mod_3", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "SUB_VALUE", "type": "text", "default": "18"}], "interfaces": [{"name": "cs_s1_f_int_out_2", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s1_mint_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s1_mod_3/s1_mod_3.yaml"}, {"name": "s2_mod_1", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "cs_s2_mint_out_2", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_mint_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_f_int_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_f_int_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s2_mod_1/s2_mod_1.yaml"}, {"name": "c_mod_2", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "c_mod_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_int_out_2", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/c_mod_2/c_mod_2.yaml"}, {"name": "s2_mod_2", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "cs_s2_f_mod_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_mint_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s2_mint_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s2_mod_2/s2_mod_2.yaml"}, {"name": "c_mod_3", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "c_mod_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_int_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_int_in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_int_const_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/c_mod_3/c_mod_3.yaml"}, {"name": "c_mod_1", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "MAX_VALUE", "type": "text", "default": "32"}], "interfaces": [{"name": "c_int_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c_mod_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/c_mod_1/c_mod_1.yaml"}, {"name": "s1_mod_1", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "cs_s1_f_mod_in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s1_f_ext_const_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "cs_s1_mint_out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/s1_mod_1/s1_mod_1.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/8e8fd13920caa94d7fb6f2199908d551/spec_ir_examples_simple.json b/_downloads/8e8fd13920caa94d7fb6f2199908d551/spec_ir_examples_simple.json new file mode 100644 index 00000000..c614918f --- /dev/null +++ b/_downloads/8e8fd13920caa94d7fb6f2199908d551/spec_ir_examples_simple.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "2mux_compressor", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "WIDTH", "type": "text", "default": "64"}, {"name": "OUT_WIDTH", "type": "text", "default": "1"}], "interfaces": [{"name": "out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "gen_sel", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "gen2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "gen1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ips/2mux.yaml"}, {"name": "lfsr_gen", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "WIDTH", "type": "text", "default": "64"}, {"name": "SEED", "type": "text", "default": "1"}], "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "gen_out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ips/lfsr_gen.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/a3c4b8d5af3b90eef9e6d601c6c50d53/data_hdmi.json b/_downloads/a3c4b8d5af3b90eef9e6d601c6c50d53/data_hdmi.json new file mode 100644 index 00000000..d4064ced --- /dev/null +++ b/_downloads/a3c4b8d5af3b90eef9e6d601c6c50d53/data_hdmi.json @@ -0,0 +1 @@ +{"graphs": [{"id": "1734427633405597", "nodes": [{"name": "axi_axil_adapter", "id": "node_173442763331910", "instanceName": "axi_bridge_disp", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_17344276333196", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17344276333197", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_17344276333198", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_17344276333199", "direction": "output", "side": "right"}], "properties": [{"name": "ADDR_WIDTH", "id": "17344276333190", "value": "32"}, {"name": "AXI_DATA_WIDTH", "id": "17344276333191", "value": "32"}, {"name": "AXI_ID_WIDTH", "id": "17344276333192", "value": "12"}, {"name": "AXI_STRB_WIDTH", "id": "17344276333193", "value": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "id": "17344276333194", "value": "32"}, {"name": "AXIL_STRB_WIDTH", "id": "17344276333195", "value": "AXIL_DATA_WIDTH/8"}]}, {"name": "axi_axil_adapter", "id": "node_173442763331921", "instanceName": "axi_bridge_dma", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_173442763331917", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_173442763331918", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_173442763331919", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_173442763331920", "direction": "output", "side": "right"}], "properties": [{"name": "ADDR_WIDTH", "id": "173442763331911", "value": "32"}, {"name": "AXI_DATA_WIDTH", "id": "173442763331912", "value": "32"}, {"name": "AXI_ID_WIDTH", "id": "173442763331913", "value": "12"}, {"name": "AXI_STRB_WIDTH", "id": "173442763331914", "value": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "id": "173442763331915", "value": "32"}, {"name": "AXIL_STRB_WIDTH", "id": "173442763331916", "value": "AXIL_DATA_WIDTH/8"}]}, {"name": "axi_axil_adapter", "id": "node_173442763331932", "instanceName": "axi_bridge_mmcm", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_173442763331928", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_173442763331929", "direction": "input", "side": "left"}, {"name": "s_axi", "id": "ni_173442763331930", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_173442763331931", "direction": "output", "side": "right"}], "properties": [{"name": "ADDR_WIDTH", "id": "173442763331922", "value": "32"}, {"name": "AXI_DATA_WIDTH", "id": "173442763331923", "value": "32"}, {"name": "AXI_ID_WIDTH", "id": "173442763331924", "value": "12"}, {"name": "AXI_STRB_WIDTH", "id": "173442763331925", "value": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "id": "173442763331926", "value": "32"}, {"name": "AXIL_STRB_WIDTH", "id": "173442763331927", "value": "AXIL_DATA_WIDTH/8"}]}, {"name": "axi_interconnect", "id": "node_173442763331952", "instanceName": "axi_interconnect0", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_173442763331946", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_173442763331947", "direction": "input", "side": "left"}, {"name": "s_axi_0", "id": "ni_173442763331948", "direction": "input", "side": "left"}, {"name": "m_axi_0", "id": "ni_173442763331949", "direction": "output", "side": "right"}, {"name": "m_axi_1", "id": "ni_173442763331950", "direction": "output", "side": "right"}, {"name": "m_axi_2", "id": "ni_173442763331951", "direction": "output", "side": "right"}], "properties": [{"name": "S_COUNT", "id": "173442763331933", "value": "1"}, {"name": "M_COUNT", "id": "173442763331934", "value": "3"}, {"name": "DATA_WIDTH", "id": "173442763331935", "value": "32"}, {"name": "ADDR_WIDTH", "id": "173442763331936", "value": "32"}, {"name": "ID_WIDTH", "id": "173442763331937", "value": "12"}, {"name": "M_BASE_ADDR", "id": "173442763331938", "value": "118'h43c2000043c1000043c00000"}, {"name": "M_ADDR_WIDTH", "id": "173442763331939", "value": "96'h100000001000000010"}, {"name": "AWUSER_WIDTH", "id": "173442763331940", "value": "1"}, {"name": "WUSER_WIDTH", "id": "173442763331941", "value": "1"}, {"name": "ARUSER_WIDTH", "id": "173442763331942", "value": "1"}, {"name": "BUSER_WIDTH", "id": "173442763331943", "value": "1"}, {"name": "RUSER_WIDTH", "id": "173442763331944", "value": "1"}, {"name": "STRB_WIDTH", "id": "173442763331945", "value": "DATA_WIDTH/8"}]}, {"name": "axi_protocol_converter", "id": "node_173442763331957", "instanceName": "axi_protocol_converter0", "twoColumn": true, "interfaces": [{"name": "aclk", "id": "ni_173442763331953", "direction": "input", "side": "left"}, {"name": "aresetn", "id": "ni_173442763331954", "direction": "input", "side": "left"}, {"name": "S_AXI", "id": "ni_173442763331955", "direction": "input", "side": "left"}, {"name": "M_AXI", "id": "ni_173442763331956", "direction": "output", "side": "right"}], "properties": []}, {"name": "axis_async_fifo", "id": "node_173442763331976", "instanceName": "axis_clock_converter", "twoColumn": true, "interfaces": [{"name": "m_clk", "id": "ni_173442763331965", "direction": "input", "side": "left"}, {"name": "m_status_overflow", "id": "ni_173442763331966", "direction": "output", "side": "right"}, {"name": "s_status_bad_frame", "id": "ni_173442763331967", "direction": "output", "side": "right"}, {"name": "async_rst", "id": "ni_173442763331968", "direction": "input", "side": "left"}, {"name": "s_clk", "id": "ni_173442763331969", "direction": "input", "side": "left"}, {"name": "m_status_good_frame", "id": "ni_173442763331970", "direction": "output", "side": "right"}, {"name": "m_status_bad_frame", "id": "ni_173442763331971", "direction": "output", "side": "right"}, {"name": "s_status_overflow", "id": "ni_173442763331972", "direction": "output", "side": "right"}, {"name": "s_status_good_frame", "id": "ni_173442763331973", "direction": "output", "side": "right"}, {"name": "s_axis", "id": "ni_173442763331974", "direction": "input", "side": "left"}, {"name": "m_axis", "id": "ni_173442763331975", "direction": "output", "side": "right"}], "properties": [{"name": "DATA_WIDTH", "id": "173442763331958", "value": "64"}, {"name": "KEEP_WIDTH", "id": "173442763331959", "value": "(DATA_WIDTH+7)/8"}, {"name": "ID_WIDTH", "id": "173442763331960", "value": "8"}, {"name": "DEST_WIDTH", "id": "173442763331961", "value": "8"}, {"name": "USER_WIDTH", "id": "173442763331962", "value": "1"}, {"name": "ID_ENABLE", "id": "173442763331963", "value": "0"}, {"name": "USER_ENABLE", "id": "173442763331964", "value": "0"}]}, {"name": "axis_dwidth_converter", "id": "node_173442763331983", "instanceName": "axis_dwidth_converter", "twoColumn": true, "interfaces": [{"name": "aclk", "id": "ni_173442763331979", "direction": "input", "side": "left"}, {"name": "aresetn", "id": "ni_173442763331980", "direction": "input", "side": "left"}, {"name": "s_axis", "id": "ni_173442763331981", "direction": "input", "side": "left"}, {"name": "m_axis", "id": "ni_173442763331982", "direction": "output", "side": "right"}], "properties": [{"name": "IN_DATA_WIDTH", "id": "173442763331977", "value": "64"}, {"name": "OUT_DATA_WIDTH", "id": "173442763331978", "value": "32"}]}, {"name": "clock_crossing", "id": "node_173442763332088", "instanceName": "clock_crossing", "twoColumn": true, "interfaces": [{"name": "clkB", "id": "ni_173442763332084", "direction": "input", "side": "left"}, {"name": "B", "id": "ni_173442763332085", "direction": "output", "side": "right"}, {"name": "A", "id": "ni_173442763332086", "direction": "input", "side": "left"}, {"name": "clkA", "id": "ni_173442763332087", "direction": "input", "side": "left"}], "properties": []}, {"name": "axi_dispctrl", "id": "node_1734427633326105", "instanceName": "disp", "twoColumn": true, "interfaces": [{"name": "FSYNC_O", "id": "ni_173442763332689", "direction": "output", "side": "right"}, {"name": "HSYNC_O", "id": "ni_173442763332690", "direction": "output", "side": "right"}, {"name": "VSYNC_O", "id": "ni_173442763332691", "direction": "output", "side": "right"}, {"name": "CTL_O", "id": "ni_173442763332692", "direction": "output", "side": "right"}, {"name": "DE_O", "id": "ni_173442763332693", "direction": "output", "side": "right"}, {"name": "s00_axi_aclk", "id": "ni_173442763332694", "direction": "input", "side": "left"}, {"name": "DATA_O", "id": "ni_173442763332695", "direction": "output", "side": "right"}, {"name": "VGUARD_O", "id": "ni_173442763332696", "direction": "output", "side": "right"}, {"name": "LOCKED_I", "id": "ni_173442763332697", "direction": "input", "side": "left"}, {"name": "DIH_O", "id": "ni_173442763332698", "direction": "output", "side": "right"}, {"name": "DIEN_O", "id": "ni_173442763332699", "direction": "output", "side": "right"}, {"name": "s00_axi_aresetn", "id": "ni_1734427633326100", "direction": "input", "side": "left"}, {"name": "S_AXIS_ACLK", "id": "ni_1734427633326101", "direction": "input", "side": "left"}, {"name": "DGUARD_O", "id": "ni_1734427633326102", "direction": "output", "side": "right"}, {"name": "S00_AXI", "id": "ni_1734427633326103", "direction": "input", "side": "left"}, {"name": "S_AXIS", "id": "ni_1734427633326104", "direction": "input", "side": "left"}], "properties": []}, {"name": "dma_axi_in_axis_out", "id": "node_1734427633337115", "instanceName": "dma", "twoColumn": true, "interfaces": [{"name": "io_irq_readerDone", "id": "ni_1734427633337106", "direction": "output", "side": "right"}, {"name": "io_sync_readerSync", "id": "ni_1734427633337107", "direction": "input", "side": "left"}, {"name": "clock", "id": "ni_1734427633337108", "direction": "input", "side": "left"}, {"name": "io_irq_writerDone", "id": "ni_1734427633337109", "direction": "output", "side": "right"}, {"name": "io_sync_writerSync", "id": "ni_1734427633337110", "direction": "input", "side": "left"}, {"name": "reset", "id": "ni_1734427633337111", "direction": "input", "side": "left"}, {"name": "m_axis", "id": "ni_1734427633337112", "direction": "output", "side": "right"}, {"name": "s_axi", "id": "ni_1734427633337113", "direction": "input", "side": "left"}, {"name": "m_axi", "id": "ni_1734427633337114", "direction": "output", "side": "right"}], "properties": []}, {"name": "hdmi_tx", "id": "node_1734427633339136", "instanceName": "hdmi", "twoColumn": true, "interfaces": [{"name": "HDMI_D1_P", "id": "ni_1734427633339116", "direction": "output", "side": "right"}, {"name": "CTL", "id": "ni_1734427633339117", "direction": "input", "side": "left"}, {"name": "HDMI_CLK_N", "id": "ni_1734427633339118", "direction": "output", "side": "right"}, {"name": "DIEN", "id": "ni_1734427633339119", "direction": "input", "side": "left"}, {"name": "DGUARD", "id": "ni_1734427633339120", "direction": "input", "side": "left"}, {"name": "HDMI_D1_N", "id": "ni_1734427633339121", "direction": "output", "side": "right"}, {"name": "VGA_DE", "id": "ni_1734427633339122", "direction": "input", "side": "left"}, {"name": "VGA_VS", "id": "ni_1734427633339123", "direction": "input", "side": "left"}, {"name": "HDMI_D2_N", "id": "ni_1734427633339124", "direction": "output", "side": "right"}, {"name": "PXLCLK_I", "id": "ni_1734427633339125", "direction": "input", "side": "left"}, {"name": "DIH", "id": "ni_1734427633339126", "direction": "input", "side": "left"}, {"name": "VGA_HS", "id": "ni_1734427633339127", "direction": "input", "side": "left"}, {"name": "PXLCLK_5X_I", "id": "ni_1734427633339128", "direction": "input", "side": "left"}, {"name": "VGUARD", "id": "ni_1734427633339129", "direction": "input", "side": "left"}, {"name": "HDMI_D0_P", "id": "ni_1734427633339130", "direction": "output", "side": "right"}, {"name": "HDMI_D0_N", "id": "ni_1734427633339131", "direction": "output", "side": "right"}, {"name": "HDMI_D2_P", "id": "ni_1734427633339132", "direction": "output", "side": "right"}, {"name": "LOCKED_I", "id": "ni_1734427633339133", "direction": "input", "side": "left"}, {"name": "DATA_I", "id": "ni_1734427633339134", "direction": "input", "side": "left"}, {"name": "HDMI_CLK_P", "id": "ni_1734427633339135", "direction": "output", "side": "right"}], "properties": []}, {"name": "litex_mmcm", "id": "node_1734427633343144", "instanceName": "mmcm", "twoColumn": true, "interfaces": [{"name": "sys_rst", "id": "ni_1734427633343137", "direction": "input", "side": "left"}, {"name": "clkgen_out1", "id": "ni_1734427633343138", "direction": "output", "side": "right"}, {"name": "clkgen_locked", "id": "ni_1734427633343139", "direction": "output", "side": "right"}, {"name": "clkgen_ref", "id": "ni_1734427633343140", "direction": "input", "side": "left"}, {"name": "clkgen_out0", "id": "ni_1734427633343141", "direction": "output", "side": "right"}, {"name": "sys_clk", "id": "ni_1734427633343142", "direction": "input", "side": "left"}, {"name": "axi", "id": "ni_1734427633343143", "direction": "input", "side": "left"}], "properties": []}, {"name": "ps7", "id": "node_1734427633359181", "instanceName": "ps7", "twoColumn": true, "interfaces": [{"name": "ddr_dm", "id": "ni_1734427633358145", "direction": "inout", "side": "right"}, {"name": "SAXIHP0WACOUNT", "id": "ni_1734427633359146", "direction": "output", "side": "right"}, {"name": "FCLK1", "id": "ni_1734427633359147", "direction": "output", "side": "right"}, {"name": "ddr_vr_n", "id": "ni_1734427633359148", "direction": "inout", "side": "right"}, {"name": "ddr_clk_n", "id": "ni_1734427633359149", "direction": "inout", "side": "right"}, {"name": "SAXIHP0WCOUNT", "id": "ni_1734427633359150", "direction": "output", "side": "right"}, {"name": "ddr_web", "id": "ni_1734427633359151", "direction": "inout", "side": "right"}, {"name": "ps_porb", "id": "ni_1734427633359152", "direction": "inout", "side": "right"}, {"name": "SAXIHP0ARESETN", "id": "ni_1734427633359153", "direction": "output", "side": "right"}, {"name": "ps_clk", "id": "ni_1734427633359154", "direction": "inout", "side": "right"}, {"name": "ddr_ras_n", "id": "ni_1734427633359155", "direction": "inout", "side": "right"}, {"name": "MAXIGP0ACLK", "id": "ni_1734427633359156", "direction": "input", "side": "left"}, {"name": "ddr_dqs", "id": "ni_1734427633359157", "direction": "inout", "side": "right"}, {"name": "ddr_dqs_n", "id": "ni_1734427633359158", "direction": "inout", "side": "right"}, {"name": "ddr_drstb", "id": "ni_1734427633359159", "direction": "inout", "side": "right"}, {"name": "FCLK0", "id": "ni_1734427633359160", "direction": "output", "side": "right"}, {"name": "ddr_clk", "id": "ni_1734427633359161", "direction": "inout", "side": "right"}, {"name": "ddr_vr", "id": "ni_1734427633359162", "direction": "inout", "side": "right"}, {"name": "ddr_addr", "id": "ni_1734427633359163", "direction": "inout", "side": "right"}, {"name": "IRQ_F2P_1", "id": "ni_1734427633359164", "direction": "input", "side": "left"}, {"name": "ddr_cke", "id": "ni_1734427633359165", "direction": "inout", "side": "right"}, {"name": "SAXIHP0RACOUNT", "id": "ni_1734427633359166", "direction": "output", "side": "right"}, {"name": "ps_mio", "id": "ni_1734427633359167", "direction": "inout", "side": "right"}, {"name": "ddr_odt", "id": "ni_1734427633359168", "direction": "inout", "side": "right"}, {"name": "ddr_cs_n", "id": "ni_1734427633359169", "direction": "inout", "side": "right"}, {"name": "ddr_dq", "id": "ni_1734427633359170", "direction": "inout", "side": "right"}, {"name": "SAXIHP0ACLK", "id": "ni_1734427633359171", "direction": "input", "side": "left"}, {"name": "MAXIGP0ARESETN", "id": "ni_1734427633359172", "direction": "output", "side": "right"}, {"name": "FCLK_RESET0_N", "id": "ni_1734427633359173", "direction": "output", "side": "right"}, {"name": "SAXIHP0RCOUNT", "id": "ni_1734427633359174", "direction": "output", "side": "right"}, {"name": "ps_srstb", "id": "ni_1734427633359175", "direction": "inout", "side": "right"}, {"name": "IRQ_F2P_0", "id": "ni_1734427633359176", "direction": "input", "side": "left"}, {"name": "ddr_bankaddr", "id": "ni_1734427633359177", "direction": "inout", "side": "right"}, {"name": "ddr_cas_n", "id": "ni_1734427633359178", "direction": "inout", "side": "right"}, {"name": "M_AXI_GP0", "id": "ni_1734427633359179", "direction": "output", "side": "right"}, {"name": "S_AXI_HP0", "id": "ni_1734427633359180", "direction": "input", "side": "left"}], "properties": []}, {"name": "proc_sys_reset", "id": "node_1734427633360192", "instanceName": "reset0", "twoColumn": true, "interfaces": [{"name": "peripheral_aresetn", "id": "ni_1734427633360182", "direction": "output", "side": "right"}, {"name": "ext_reset_in", "id": "ni_1734427633360183", "direction": "input", "side": "left"}, {"name": "interconnect_aresetn", "id": "ni_1734427633360184", "direction": "output", "side": "right"}, {"name": "mb_debug_sys_rst", "id": "ni_1734427633360185", "direction": "input", "side": "left"}, {"name": "peripheral_reset", "id": "ni_1734427633360186", "direction": "output", "side": "right"}, {"name": "aux_reset_in", "id": "ni_1734427633360187", "direction": "input", "side": "left"}, {"name": "mb_reset", "id": "ni_1734427633360188", "direction": "output", "side": "right"}, {"name": "bus_struct_reset", "id": "ni_1734427633360189", "direction": "output", "side": "right"}, {"name": "slowest_sync_clk", "id": "ni_1734427633360190", "direction": "input", "side": "left"}, {"name": "dcm_locked", "id": "ni_1734427633360191", "direction": "input", "side": "left"}], "properties": []}, {"name": "proc_sys_reset", "id": "node_1734427633361203", "instanceName": "reset1", "twoColumn": true, "interfaces": [{"name": "peripheral_aresetn", "id": "ni_1734427633361193", "direction": "output", "side": "right"}, {"name": "ext_reset_in", "id": "ni_1734427633361194", "direction": "input", "side": "left"}, {"name": "interconnect_aresetn", "id": "ni_1734427633361195", "direction": "output", "side": "right"}, {"name": "mb_debug_sys_rst", "id": "ni_1734427633361196", "direction": "input", "side": "left"}, {"name": "peripheral_reset", "id": "ni_1734427633361197", "direction": "output", "side": "right"}, {"name": "aux_reset_in", "id": "ni_1734427633361198", "direction": "input", "side": "left"}, {"name": "mb_reset", "id": "ni_1734427633361199", "direction": "output", "side": "right"}, {"name": "bus_struct_reset", "id": "ni_1734427633361200", "direction": "output", "side": "right"}, {"name": "slowest_sync_clk", "id": "ni_1734427633361201", "direction": "input", "side": "left"}, {"name": "dcm_locked", "id": "ni_1734427633361202", "direction": "input", "side": "left"}], "properties": []}, {"name": "External Output", "id": "node_1734427633361206", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361205", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1734427633361204", "value": "HDMI_CLK_P"}]}, {"name": "External Output", "id": "node_1734427633361209", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361208", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1734427633361207", "value": "HDMI_CLK_N"}]}, {"name": "External Output", "id": "node_1734427633361212", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361211", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1734427633361210", "value": "HDMI_D0_P"}]}, {"name": "External Output", "id": "node_1734427633361215", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361214", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1734427633361213", "value": "HDMI_D0_N"}]}, {"name": "External Output", "id": "node_1734427633361218", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361217", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1734427633361216", "value": "HDMI_D1_P"}]}, {"name": "External Output", "id": "node_1734427633361221", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361220", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1734427633361219", "value": "HDMI_D1_N"}]}, {"name": "External Output", "id": "node_1734427633361224", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361223", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1734427633361222", "value": "HDMI_D2_P"}]}, {"name": "External Output", "id": "node_1734427633361227", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361226", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "1734427633361225", "value": "HDMI_D2_N"}]}, {"name": "External Inout", "id": "node_1734427633361230", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361229", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361228", "value": "ddr_addr"}]}, {"name": "External Inout", "id": "node_1734427633361233", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361232", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361231", "value": "ddr_bankaddr"}]}, {"name": "External Inout", "id": "node_1734427633361236", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361235", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361234", "value": "ddr_cas_n"}]}, {"name": "External Inout", "id": "node_1734427633361239", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361238", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361237", "value": "ddr_cke"}]}, {"name": "External Inout", "id": "node_1734427633361242", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361241", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361240", "value": "ddr_clk"}]}, {"name": "External Inout", "id": "node_1734427633361245", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361244", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361243", "value": "ddr_clk_n"}]}, {"name": "External Inout", "id": "node_1734427633361248", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361247", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361246", "value": "ddr_cs_n"}]}, {"name": "External Inout", "id": "node_1734427633361251", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361250", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361249", "value": "ddr_dm"}]}, {"name": "External Inout", "id": "node_1734427633361254", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361253", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361252", "value": "ddr_dq"}]}, {"name": "External Inout", "id": "node_1734427633361257", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361256", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361255", "value": "ddr_dqs"}]}, {"name": "External Inout", "id": "node_1734427633361260", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361259", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361258", "value": "ddr_dqs_n"}]}, {"name": "External Inout", "id": "node_1734427633361263", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361262", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361261", "value": "ddr_drstb"}]}, {"name": "External Inout", "id": "node_1734427633361266", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361265", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361264", "value": "ddr_odt"}]}, {"name": "External Inout", "id": "node_1734427633361269", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361268", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361267", "value": "ddr_ras_n"}]}, {"name": "External Inout", "id": "node_1734427633361272", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361271", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361270", "value": "ddr_vr_n"}]}, {"name": "External Inout", "id": "node_1734427633361275", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361274", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361273", "value": "ddr_vr"}]}, {"name": "External Inout", "id": "node_1734427633361278", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361277", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361276", "value": "ddr_web"}]}, {"name": "External Inout", "id": "node_1734427633361281", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361280", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361279", "value": "ps_mio"}]}, {"name": "External Inout", "id": "node_1734427633361284", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361283", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361282", "value": "ps_clk"}]}, {"name": "External Inout", "id": "node_1734427633361287", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361286", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361285", "value": "ps_porb"}]}, {"name": "External Inout", "id": "node_1734427633361290", "instanceName": "External Inout", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_1734427633361289", "direction": "inout", "side": "right"}], "properties": [{"name": "External Name", "id": "1734427633361288", "value": "ps_srstb"}]}, {"name": "Constant", "id": "node_1734427633404497", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_1734427633404496", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "1734427633404495", "value": "0"}]}, {"name": "Constant", "id": "node_1734427633404500", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_1734427633404499", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "1734427633404498", "value": "1"}]}], "connections": [{"id": "1734427633404501", "from": "ni_1734427633359160", "to": "ni_17344276333197"}, {"id": "1734427633404502", "from": "ni_1734427633360189", "to": "ni_17344276333196"}, {"id": "1734427633404503", "from": "ni_1734427633359160", "to": "ni_173442763331918"}, {"id": "1734427633404504", "from": "ni_1734427633360189", "to": "ni_173442763331917"}, {"id": "1734427633404505", "from": "ni_1734427633359160", "to": "ni_173442763331929"}, {"id": "1734427633404506", "from": "ni_1734427633360189", "to": "ni_173442763331928"}, {"id": "1734427633404507", "from": "ni_1734427633359160", "to": "ni_173442763331947"}, {"id": "1734427633404508", "from": "ni_1734427633360189", "to": "ni_173442763331946"}, {"id": "1734427633404509", "from": "ni_1734427633359160", "to": "ni_173442763331953"}, {"id": "1734427633404510", "from": "ni_1734427633360184", "to": "ni_173442763331954"}, {"id": "1734427633404511", "from": "ni_1734427633360189", "to": "ni_173442763331968"}, {"id": "1734427633404512", "from": "ni_1734427633343141", "to": "ni_173442763331965"}, {"id": "1734427633404513", "from": "ni_1734427633359160", "to": "ni_173442763331969"}, {"id": "1734427633404514", "from": "ni_1734427633343141", "to": "ni_173442763331979"}, {"id": "1734427633404515", "from": "ni_1734427633361195", "to": "ni_173442763331980"}, {"id": "1734427633404516", "from": "ni_173442763332689", "to": "ni_173442763332086"}, {"id": "1734427633404517", "from": "ni_1734427633343141", "to": "ni_173442763332087"}, {"id": "1734427633404518", "from": "ni_1734427633359160", "to": "ni_173442763332084"}, {"id": "1734427633404519", "from": "ni_1734427633343139", "to": "ni_173442763332697"}, {"id": "1734427633404520", "from": "ni_1734427633343141", "to": "ni_1734427633326101"}, {"id": "1734427633404521", "from": "ni_1734427633359160", "to": "ni_173442763332694"}, {"id": "1734427633404522", "from": "ni_1734427633360182", "to": "ni_1734427633326100"}, {"id": "1734427633404523", "from": "ni_1734427633359160", "to": "ni_1734427633337108"}, {"id": "1734427633404524", "from": "ni_173442763332085", "to": "ni_1734427633337107"}, {"id": "1734427633404525", "from": "ni_173442763332085", "to": "ni_1734427633337110"}, {"id": "1734427633404526", "from": "ni_1734427633360186", "to": "ni_1734427633337111"}, {"id": "1734427633404527", "from": "ni_173442763332692", "to": "ni_1734427633339117"}, {"id": "1734427633404528", "from": "ni_173442763332695", "to": "ni_1734427633339134"}, {"id": "1734427633404529", "from": "ni_1734427633326102", "to": "ni_1734427633339120"}, {"id": "1734427633404530", "from": "ni_173442763332699", "to": "ni_1734427633339119"}, {"id": "1734427633404531", "from": "ni_173442763332698", "to": "ni_1734427633339126"}, {"id": "1734427633404532", "from": "ni_1734427633343139", "to": "ni_1734427633339133"}, {"id": "1734427633404533", "from": "ni_1734427633343138", "to": "ni_1734427633339128"}, {"id": "1734427633404534", "from": "ni_1734427633343141", "to": "ni_1734427633339125"}, {"id": "1734427633404535", "from": "ni_173442763332693", "to": "ni_1734427633339122"}, {"id": "1734427633404536", "from": "ni_173442763332690", "to": "ni_1734427633339127"}, {"id": "1734427633404537", "from": "ni_173442763332691", "to": "ni_1734427633339123"}, {"id": "1734427633404538", "from": "ni_173442763332696", "to": "ni_1734427633339129"}, {"id": "1734427633404539", "from": "ni_1734427633359147", "to": "ni_1734427633343140"}, {"id": "1734427633404540", "from": "ni_1734427633359160", "to": "ni_1734427633343142"}, {"id": "1734427633404541", "from": "ni_1734427633360186", "to": "ni_1734427633343137"}, {"id": "1734427633404542", "from": "ni_1734427633337106", "to": "ni_1734427633359176"}, {"id": "1734427633404543", "from": "ni_1734427633337109", "to": "ni_1734427633359164"}, {"id": "1734427633404544", "from": "ni_1734427633359160", "to": "ni_1734427633359156"}, {"id": "1734427633404545", "from": "ni_1734427633359160", "to": "ni_1734427633359171"}, {"id": "1734427633404546", "from": "ni_1734427633359160", "to": "ni_1734427633360190"}, {"id": "1734427633404547", "from": "ni_1734427633343141", "to": "ni_1734427633361201"}, {"id": "1734427633404548", "from": "ni_173442763331951", "to": "ni_17344276333198"}, {"id": "1734427633404549", "from": "ni_173442763331950", "to": "ni_173442763331919"}, {"id": "1734427633404550", "from": "ni_173442763331949", "to": "ni_173442763331930"}, {"id": "1734427633404551", "from": "ni_1734427633359179", "to": "ni_173442763331948"}, {"id": "1734427633404552", "from": "ni_1734427633337114", "to": "ni_173442763331955"}, {"id": "1734427633404553", "from": "ni_1734427633337112", "to": "ni_173442763331974"}, {"id": "1734427633404554", "from": "ni_173442763331975", "to": "ni_173442763331981"}, {"id": "1734427633404555", "from": "ni_17344276333199", "to": "ni_1734427633326103"}, {"id": "1734427633404556", "from": "ni_173442763331982", "to": "ni_1734427633326104"}, {"id": "1734427633404557", "from": "ni_173442763331920", "to": "ni_1734427633337113"}, {"id": "1734427633404558", "from": "ni_173442763331931", "to": "ni_1734427633343143"}, {"id": "1734427633404559", "from": "ni_173442763331956", "to": "ni_1734427633359180"}, {"id": "1734427633404560", "from": "ni_1734427633339118", "to": "ni_1734427633361208"}, {"id": "1734427633404561", "from": "ni_1734427633339135", "to": "ni_1734427633361205"}, {"id": "1734427633404562", "from": "ni_1734427633339131", "to": "ni_1734427633361214"}, {"id": "1734427633404563", "from": "ni_1734427633339130", "to": "ni_1734427633361211"}, {"id": "1734427633404564", "from": "ni_1734427633339121", "to": "ni_1734427633361220"}, {"id": "1734427633404565", "from": "ni_1734427633339116", "to": "ni_1734427633361217"}, {"id": "1734427633404566", "from": "ni_1734427633339124", "to": "ni_1734427633361226"}, {"id": "1734427633404567", "from": "ni_1734427633339132", "to": "ni_1734427633361223"}, {"id": "1734427633404568", "from": "ni_1734427633404496", "to": "ni_1734427633360187"}, {"id": "1734427633404569", "from": "ni_1734427633404499", "to": "ni_1734427633360191"}, {"id": "1734427633404570", "from": "ni_1734427633404496", "to": "ni_1734427633360183"}, {"id": "1734427633404571", "from": "ni_1734427633404496", "to": "ni_1734427633360185"}, {"id": "1734427633404572", "from": "ni_1734427633404496", "to": "ni_1734427633361198"}, {"id": "1734427633404573", "from": "ni_1734427633404499", "to": "ni_1734427633361202"}, {"id": "1734427633404574", "from": "ni_1734427633404496", "to": "ni_1734427633361194"}, {"id": "1734427633405575", "from": "ni_1734427633404496", "to": "ni_1734427633361196"}, {"id": "1734427633405576", "from": "ni_1734427633361229", "to": "ni_1734427633359163"}, {"id": "1734427633405577", "from": "ni_1734427633361232", "to": "ni_1734427633359177"}, {"id": "1734427633405578", "from": "ni_1734427633361235", "to": "ni_1734427633359178"}, {"id": "1734427633405579", "from": "ni_1734427633361238", "to": "ni_1734427633359165"}, {"id": "1734427633405580", "from": "ni_1734427633361241", "to": "ni_1734427633359161"}, {"id": "1734427633405581", "from": "ni_1734427633361244", "to": "ni_1734427633359149"}, {"id": "1734427633405582", "from": "ni_1734427633361247", "to": "ni_1734427633359169"}, {"id": "1734427633405583", "from": "ni_1734427633361250", "to": "ni_1734427633358145"}, {"id": "1734427633405584", "from": "ni_1734427633361253", "to": "ni_1734427633359170"}, {"id": "1734427633405585", "from": "ni_1734427633361256", "to": "ni_1734427633359157"}, {"id": "1734427633405586", "from": "ni_1734427633361259", "to": "ni_1734427633359158"}, {"id": "1734427633405587", "from": "ni_1734427633361262", "to": "ni_1734427633359159"}, {"id": "1734427633405588", "from": "ni_1734427633361265", "to": "ni_1734427633359168"}, {"id": "1734427633405589", "from": "ni_1734427633361268", "to": "ni_1734427633359155"}, {"id": "1734427633405590", "from": "ni_1734427633361271", "to": "ni_1734427633359148"}, {"id": "1734427633405591", "from": "ni_1734427633361274", "to": "ni_1734427633359162"}, {"id": "1734427633405592", "from": "ni_1734427633361277", "to": "ni_1734427633359151"}, {"id": "1734427633405593", "from": "ni_1734427633361280", "to": "ni_1734427633359167"}, {"id": "1734427633405594", "from": "ni_1734427633361283", "to": "ni_1734427633359154"}, {"id": "1734427633405595", "from": "ni_1734427633361286", "to": "ni_1734427633359152"}, {"id": "1734427633405596", "from": "ni_1734427633361289", "to": "ni_1734427633359175"}]}], "entryGraph": "1734427633405597", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/a9763d53095bb9b3760b2c5d61ab2b24/spec_getting_started_demo.json b/_downloads/a9763d53095bb9b3760b2c5d61ab2b24/spec_getting_started_demo.json new file mode 100644 index 00000000..9b1ad0f0 --- /dev/null +++ b/_downloads/a9763d53095bb9b3760b2c5d61ab2b24/spec_getting_started_demo.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "simple_core_1", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "z", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/simple_core_1.yaml"}, {"name": "simple_core_2", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "y", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "c", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/simple_core_2.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/accdaa2340422dc5ec5a2ca49106529f/data_user_repository.json b/_downloads/accdaa2340422dc5ec5a2ca49106529f/data_user_repository.json new file mode 100644 index 00000000..eda21a60 --- /dev/null +++ b/_downloads/accdaa2340422dc5ec5a2ca49106529f/data_user_repository.json @@ -0,0 +1 @@ +{"graphs": [{"id": "173442763526438", "nodes": [{"name": "core1", "id": "node_17344276352575", "instanceName": "core1", "twoColumn": true, "interfaces": [{"name": "out_1", "id": "ni_17344276352560", "direction": "output", "side": "right"}, {"name": "in_3", "id": "ni_17344276352561", "direction": "input", "side": "left"}, {"name": "in_2", "id": "ni_17344276352572", "direction": "input", "side": "left"}, {"name": "in_1", "id": "ni_17344276352573", "direction": "input", "side": "left"}, {"name": "inter_1", "id": "ni_17344276352574", "direction": "output", "side": "right"}], "properties": []}, {"name": "core2", "id": "node_173442763525910", "instanceName": "core2", "twoColumn": true, "interfaces": [{"name": "out_1", "id": "ni_17344276352596", "direction": "output", "side": "right"}, {"name": "in_2", "id": "ni_17344276352597", "direction": "input", "side": "left"}, {"name": "in_1", "id": "ni_17344276352598", "direction": "input", "side": "left"}, {"name": "inter_2", "id": "ni_17344276352599", "direction": "input", "side": "left"}], "properties": []}, {"name": "External Input", "id": "node_173442763525913", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763525912", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442763525911", "value": "ex_in_1"}]}, {"name": "External Input", "id": "node_173442763525916", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763525915", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442763525914", "value": "ex_in_2"}]}, {"name": "External Output", "id": "node_173442763525919", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763525918", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442763525917", "value": "ex_out_1"}]}], "connections": [{"id": "173442763526431", "from": "ni_17344276352560", "to": "ni_17344276352598"}, {"id": "173442763526432", "from": "ni_17344276352574", "to": "ni_17344276352599"}, {"id": "173442763526433", "from": "ni_173442763525912", "to": "ni_17344276352573"}, {"id": "173442763526434", "from": "ni_173442763525912", "to": "ni_17344276352572"}, {"id": "173442763526435", "from": "ni_173442763525915", "to": "ni_17344276352561"}, {"id": "173442763526436", "from": "ni_173442763525915", "to": "ni_17344276352597"}, {"id": "173442763526437", "from": "ni_17344276352596", "to": "ni_173442763525918"}]}], "entryGraph": "173442763526438", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/bffaeb0510435928f1f23554e358fda4/spec_ir_examples_hierarchical.json b/_downloads/bffaeb0510435928f1f23554e358fda4/spec_ir_examples_hierarchical.json new file mode 100644 index 00000000..bce17d7e --- /dev/null +++ b/_downloads/bffaeb0510435928f1f23554e358fda4/spec_ir_examples_hierarchical.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "adder", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "WIDTH", "type": "text", "default": "4"}], "interfaces": [{"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sum", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "b", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ips/adder.yaml"}, {"name": "D-flipflop", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "WIDTH", "type": "text", "default": "4"}], "interfaces": [{"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "Q", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "D", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ips/d_ff.yaml"}, {"name": "debouncer", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "GRACE", "type": "text", "default": "1000"}], "interfaces": [{"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "filtered_out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ips/debouncer.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/c1d011684882970786c0165a9caaf6b2/spec_constant.json b/_downloads/c1d011684882970786c0165a9caaf6b2/spec_constant.json new file mode 100644 index 00000000..ac012cff --- /dev/null +++ b/_downloads/c1d011684882970786c0165a9caaf6b2/spec_constant.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "ibuf", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "z", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "a", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/ibuf.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/d17fd16ce02ff1592345c01446feb20e/spec_user_repository.json b/_downloads/d17fd16ce02ff1592345c01446feb20e/spec_user_repository.json new file mode 100644 index 00000000..c660582c --- /dev/null +++ b/_downloads/d17fd16ce02ff1592345c01446feb20e/spec_user_repository.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "core2", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "inter_2", "direction": "input", "type": ["iface_coreStream"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/example_core2/core2.yaml"}, {"name": "core1", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "in_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "in_2", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "in_3", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "out_1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "inter_1", "direction": "output", "type": ["iface_coreStream"], "maxConnectionsCount": -1}], "additionalData": "repo/cores/example_core1/core1.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port", "iface_coreStream"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port", "iface_coreStream"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port", "iface_coreStream"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port", "iface_coreStream"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"iface_coreStream": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/d6cb59fd158bfb12053fd8c694063be0/spec_hdmi.json b/_downloads/d6cb59fd158bfb12053fd8c694063be0/spec_hdmi.json new file mode 100644 index 00000000..2d29bb71 --- /dev/null +++ b/_downloads/d6cb59fd158bfb12053fd8c694063be0/spec_hdmi.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "axi_dispctrl", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "DIH_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s00_axi_aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGUARD_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DGUARD_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s00_axi_aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "LOCKED_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "S_AXIS_ACLK", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FSYNC_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VSYNC_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DE_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DATA_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HSYNC_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "CTL_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DIEN_O", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "S00_AXI", "direction": "input", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}, {"name": "S_AXIS", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "ipcores/axi_dispctrl.yaml"}, {"name": "clock_crossing", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "clkB", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "B", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "A", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clkA", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/clock_crossing.yaml"}, {"name": "dma_axi_in_axis_out", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "reset", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io_sync_writerSync", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io_irq_readerDone", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io_irq_writerDone", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "io_sync_readerSync", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clock", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "s_axi", "direction": "input", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}, {"name": "m_axi", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}], "additionalData": "ipcores/dma_axi_in_axis_out.yaml"}, {"name": "hdmi_tx", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "HDMI_D2_P", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "LOCKED_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D2_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGA_HS", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D1_P", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DATA_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGA_DE", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DGUARD", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_CLK_P", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "PXLCLK_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_CLK_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DIH", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D1_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGA_VS", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D0_P", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "VGUARD", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "DIEN", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "PXLCLK_5X_I", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "CTL", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "HDMI_D0_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/hdmi_tx.yaml"}, {"name": "litex_mmcm", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "clkgen_out1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clkgen_out0", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clkgen_ref", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clkgen_locked", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "axi", "direction": "input", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}], "additionalData": "ipcores/litex_mmcm.yaml"}, {"name": "proc_sys_reset", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "aux_reset_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "dcm_locked", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ext_reset_in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "slowest_sync_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "peripheral_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "peripheral_aresetn", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "interconnect_aresetn", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "bus_struct_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mb_debug_sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mb_reset", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/proc_sys_reset.yaml"}, {"name": "ps7", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "ps_porb", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_dqs_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "IRQ_F2P_0", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK1", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_web", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_cke", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_odt", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0ACLK", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_dq", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0RCOUNT", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK0", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0WACOUNT", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_bankaddr", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_drstb", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0ARESETN", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ps_mio", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_ras_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_cs_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ps_clk", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_vr_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "IRQ_F2P_1", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "FCLK_RESET0_N", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0WCOUNT", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ps_srstb", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "SAXIHP0RACOUNT", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "MAXIGP0ACLK", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_vr", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "MAXIGP0ARESETN", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_addr", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_clk", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_clk_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_dm", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_cas_n", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "ddr_dqs", "direction": "inout", "type": ["port"], "maxConnectionsCount": -1}, {"name": "M_AXI_GP0", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "S_AXI_HP0", "direction": "input", "type": ["iface_AXI3"], "maxConnectionsCount": -1}], "additionalData": "ipcores/ps7.yaml"}, {"name": "axi_axil_adapter", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "ADDR_WIDTH", "type": "text", "default": "32"}, {"name": "AXI_DATA_WIDTH", "type": "text", "default": "32"}, {"name": "AXI_ID_WIDTH", "type": "text", "default": "8"}, {"name": "AXI_STRB_WIDTH", "type": "text", "default": "AXI_DATA_WIDTH/8"}, {"name": "AXIL_DATA_WIDTH", "type": "text", "default": "32"}, {"name": "AXIL_STRB_WIDTH", "type": "text", "default": "AXIL_DATA_WIDTH/8"}], "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi", "direction": "output", "type": ["iface_AXI4Lite"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_axil_adapter.yaml"}, {"name": "axi_interconnect", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "S_COUNT", "type": "text", "default": "1"}, {"name": "M_COUNT", "type": "text", "default": "4"}, {"name": "DATA_WIDTH", "type": "text", "default": "32"}, {"name": "ADDR_WIDTH", "type": "text", "default": "32"}, {"name": "ID_WIDTH", "type": "text", "default": "12"}, {"name": "M_BASE_ADDR", "type": "text", "default": "0"}, {"name": "M_ADDR_WIDTH", "type": "text", "default": "96'h100000001000000010"}, {"name": "AWUSER_WIDTH", "type": "text", "default": "1"}, {"name": "WUSER_WIDTH", "type": "text", "default": "1"}, {"name": "ARUSER_WIDTH", "type": "text", "default": "1"}, {"name": "BUSER_WIDTH", "type": "text", "default": "1"}, {"name": "RUSER_WIDTH", "type": "text", "default": "1"}, {"name": "STRB_WIDTH", "type": "text", "default": "DATA_WIDTH/8"}], "interfaces": [{"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axi_0", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_0", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_1", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "m_axi_2", "direction": "output", "type": ["iface_AXI4"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_interconnect.yaml"}, {"name": "axi_protocol_converter", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "S_AXI", "direction": "input", "type": ["iface_AXI4"], "maxConnectionsCount": -1}, {"name": "M_AXI", "direction": "output", "type": ["iface_AXI3"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axi_protocol_converter.yaml"}, {"name": "axis_async_fifo", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "DATA_WIDTH", "type": "text", "default": "8"}, {"name": "KEEP_WIDTH", "type": "text", "default": "(DATA_WIDTH+7)/8"}, {"name": "ID_WIDTH", "type": "text", "default": "8"}, {"name": "DEST_WIDTH", "type": "text", "default": "8"}, {"name": "USER_WIDTH", "type": "text", "default": "1"}, {"name": "ID_ENABLE", "type": "text", "default": "0"}, {"name": "USER_ENABLE", "type": "text", "default": "1"}], "interfaces": [{"name": "s_status_overflow", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_bad_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "async_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_bad_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_good_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "m_status_overflow", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_status_good_frame", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axis", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axis_async_fifo.yaml"}, {"name": "axis_dwidth_converter", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "IN_DATA_WIDTH", "type": "text", "default": "64"}, {"name": "OUT_DATA_WIDTH", "type": "text", "default": "32"}], "interfaces": [{"name": "aclk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "aresetn", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "s_axis", "direction": "input", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}, {"name": "m_axis", "direction": "output", "type": ["iface_AXI4Stream"], "maxConnectionsCount": -1}], "additionalData": "../../topwrap/ips/axi/axis_dwidth_converter.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port", "iface_AXI3", "iface_AXI4Lite", "iface_AXI4", "iface_AXI4Stream"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port", "iface_AXI3", "iface_AXI4Lite", "iface_AXI4", "iface_AXI4Stream"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port", "iface_AXI3", "iface_AXI4Lite", "iface_AXI4", "iface_AXI4Stream"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port", "iface_AXI3", "iface_AXI4Lite", "iface_AXI4", "iface_AXI4Stream"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"iface_AXI3": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI4Lite": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI4": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "iface_AXI4Stream": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/e3ee33dc09b013e721231392905da44d/data_constant.json b/_downloads/e3ee33dc09b013e721231392905da44d/data_constant.json new file mode 100644 index 00000000..7a7978ec --- /dev/null +++ b/_downloads/e3ee33dc09b013e721231392905da44d/data_constant.json @@ -0,0 +1 @@ +{"graphs": [{"id": "173442762834826", "nodes": [{"name": "ibuf", "id": "node_17344276283474", "instanceName": "ip_ibuf", "twoColumn": true, "interfaces": [{"name": "rst", "id": "ni_17344276283470", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17344276283471", "direction": "input", "side": "left"}, {"name": "a", "id": "ni_17344276283472", "direction": "input", "side": "left"}, {"name": "z", "id": "ni_17344276283473", "direction": "output", "side": "right"}], "properties": []}, {"name": "External Input", "id": "node_17344276283477", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17344276283476", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17344276283475", "value": "PORT_CLK"}]}, {"name": "External Output", "id": "node_173442762834710", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17344276283479", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "17344276283478", "value": "PORT_OUT"}]}, {"name": "Constant", "id": "node_173442762834818", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_173442762834817", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "173442762834816", "value": "0"}]}, {"name": "Constant", "id": "node_173442762834821", "instanceName": "Constant", "twoColumn": true, "interfaces": [{"name": "constant", "id": "ni_173442762834820", "direction": "output", "side": "right"}], "properties": [{"name": "Constant Value", "id": "173442762834819", "value": "1"}]}], "connections": [{"id": "173442762834822", "from": "ni_17344276283476", "to": "ni_17344276283471"}, {"id": "173442762834823", "from": "ni_173442762834817", "to": "ni_17344276283470"}, {"id": "173442762834824", "from": "ni_173442762834820", "to": "ni_17344276283472"}, {"id": "173442762834825", "from": "ni_17344276283473", "to": "ni_17344276283479"}]}], "entryGraph": "173442762834826", "version": "20240723.13"} \ No newline at end of file diff --git a/_downloads/ec94064ee4c09454dc373ecd9f755381/spec_soc.json b/_downloads/ec94064ee4c09454dc373ecd9f755381/spec_soc.json new file mode 100644 index 00000000..d4e30452 --- /dev/null +++ b/_downloads/ec94064ee4c09454dc373ecd9f755381/spec_soc.json @@ -0,0 +1 @@ +{"version": "20240723.13", "nodes": [{"name": "mem", "layer": "IP Cores", "category": "IPcore", "abstract": false, "properties": [{"name": "depth", "type": "text", "default": "256"}], "interfaces": [{"name": "sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "mem_bus", "direction": "input", "type": ["iface_wishbone"], "maxConnectionsCount": -1}], "additionalData": "ipcores/mem.yaml"}, {"name": "VexRiscv", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "externalResetVector", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "externalInterruptArray", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "reset", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "timerInterrupt", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "softwareInterrupt", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "dBusWishbone", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "iBusWishbone", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}], "additionalData": "ipcores/VexRiscv.yaml"}, {"name": "crg", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "sys_clk", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_rst", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "clk100", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}], "additionalData": "ipcores/crg.yaml"}, {"name": "wb_uart", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "serial1_tx", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "serial1_rx", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "sys_clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "csr_wishbone", "direction": "input", "type": ["iface_wishbone"], "maxConnectionsCount": -1}], "additionalData": "ipcores/wb_uart.yaml"}, {"name": "wb_interconnect", "layer": "IP Cores", "category": "IPcore", "abstract": false, "interfaces": [{"name": "clk", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "rst", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}, {"name": "vexriscv_dBusWishbone", "direction": "input", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "vexriscv_iBusWishbone", "direction": "input", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "wb_ram_data_mem_bus", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "wb_ram_instr_mem_bus", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}, {"name": "wb_uart_csr_wishbone", "direction": "output", "type": ["iface_wishbone"], "maxConnectionsCount": -1}], "additionalData": "ipcores/wb_interconnect.yaml"}, {"name": "External Output", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "input", "type": ["port", "iface_wishbone"], "maxConnectionsCount": -1}]}, {"name": "External Input", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "output", "type": ["port", "iface_wishbone"], "maxConnectionsCount": -1}]}, {"name": "External Inout", "layer": "Externals", "category": "Metanode", "abstract": false, "properties": [{"name": "External Name", "type": "text", "default": ""}], "interfaces": [{"name": "external", "direction": "inout", "type": ["port", "iface_wishbone"], "maxConnectionsCount": -1}]}, {"name": "Constant", "layer": "Constants", "category": "Metanode", "abstract": false, "properties": [{"name": "Constant Value", "type": "text", "default": "0"}], "interfaces": [{"name": "constant", "direction": "output", "type": ["port", "iface_wishbone"], "maxConnectionsCount": -1}]}, {"name": "Subgraph port", "layer": "Externals", "category": "Metanode", "abstract": false, "interfaces": [{"name": "subgraph out", "direction": "output", "type": ["port"], "maxConnectionsCount": -1}, {"name": "subgraph in", "direction": "input", "type": ["port"], "maxConnectionsCount": -1}]}], "metadata": {"allowLoopbacks": true, "connectionStyle": "orthogonal", "movementStep": 15, "backgroundSize": 15, "layout": "CytoscapeEngine - grid", "twoColumn": true, "notifyWhenChanged": true, "layers": [{"name": "IP Cores", "nodeLayers": ["IP Cores"]}, {"name": "Externals", "nodeLayers": ["Externals"]}, {"name": "Constants", "nodeLayers": ["Constants"]}], "navbarItems": [{"name": "Validate", "stopName": "Stop", "iconName": "Validate", "procedureName": "dataflow_validate", "allowToRunInParallelWith": ["dataflow_run", "custom_lint_files"]}, {"name": "Run", "stopName": "Stop", "iconName": "Run", "procedureName": "dataflow_run", "allowToRunInParallelWith": ["dataflow_validate", "custom_lint_files"]}], "interfaces": {"iface_wishbone": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "dashed", "interfaceConnectionColor": "#ffffff"}, "port": {"interfaceColor": "#00ca7c", "interfaceConnectionPattern": "solid", "interfaceConnectionColor": "#ffffff"}}}} \ No newline at end of file diff --git a/_downloads/f95d25fd5d84c5c5ec15973d7abec25d/data_getting_started_demo.json b/_downloads/f95d25fd5d84c5c5ec15973d7abec25d/data_getting_started_demo.json new file mode 100644 index 00000000..ffbce998 --- /dev/null +++ b/_downloads/f95d25fd5d84c5c5ec15973d7abec25d/data_getting_started_demo.json @@ -0,0 +1 @@ +{"graphs": [{"id": "173442763470233", "nodes": [{"name": "simple_core_1", "id": "node_17344276346993", "instanceName": "simple_core_1", "twoColumn": true, "interfaces": [{"name": "z", "id": "ni_17344276346990", "direction": "output", "side": "right"}, {"name": "rst", "id": "ni_17344276346991", "direction": "input", "side": "left"}, {"name": "clk", "id": "ni_17344276346992", "direction": "input", "side": "left"}], "properties": []}, {"name": "simple_core_2", "id": "node_17344276347007", "instanceName": "simple_core_2", "twoColumn": true, "interfaces": [{"name": "y", "id": "ni_17344276347004", "direction": "output", "side": "right"}, {"name": "c", "id": "ni_17344276347005", "direction": "output", "side": "right"}, {"name": "a", "id": "ni_17344276347006", "direction": "input", "side": "left"}], "properties": []}, {"name": "External Input", "id": "node_173442763470010", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_17344276347009", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "17344276347008", "value": "rst"}]}, {"name": "External Input", "id": "node_173442763470013", "instanceName": "External Input", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763470012", "direction": "output", "side": "right"}], "properties": [{"name": "External Name", "id": "173442763470011", "value": "clk"}]}, {"name": "External Output", "id": "node_173442763470016", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763470015", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442763470014", "value": "Output_y"}]}, {"name": "External Output", "id": "node_173442763470019", "instanceName": "External Output", "twoColumn": true, "interfaces": [{"name": "external", "id": "ni_173442763470018", "direction": "input", "side": "left"}], "properties": [{"name": "External Name", "id": "173442763470017", "value": "Output_c"}]}], "connections": [{"id": "173442763470228", "from": "ni_17344276346990", "to": "ni_17344276347006"}, {"id": "173442763470229", "from": "ni_173442763470012", "to": "ni_17344276346992"}, {"id": "173442763470230", "from": "ni_17344276347009", "to": "ni_17344276346991"}, {"id": "173442763470231", "from": "ni_17344276347005", "to": "ni_173442763470018"}, {"id": "173442763470232", "from": "ni_17344276347004", "to": "ni_173442763470015"}]}], "entryGraph": "173442763470233", "version": "20240723.13"} \ No newline at end of file diff --git a/_images/external_port.png b/_images/external_port.png new file mode 100644 index 00000000..3dff654f Binary files /dev/null and b/_images/external_port.png differ diff --git a/_images/getting_started_project.png b/_images/getting_started_project.png new file mode 100644 index 00000000..c672c92b Binary files /dev/null and b/_images/getting_started_project.png differ diff --git a/_images/invalid_connection.png b/_images/invalid_connection.png new file mode 100644 index 00000000..c157c312 Binary files /dev/null and b/_images/invalid_connection.png differ diff --git a/_images/ipconnect.png b/_images/ipconnect.png new file mode 100644 index 00000000..8fc97e15 Binary files /dev/null and b/_images/ipconnect.png differ diff --git a/_images/kpm_button_fullscreen.png b/_images/kpm_button_fullscreen.png new file mode 100644 index 00000000..61aa20f9 Binary files /dev/null and b/_images/kpm_button_fullscreen.png differ diff --git a/_images/kpm_buttons.png b/_images/kpm_buttons.png new file mode 100644 index 00000000..512f4cba Binary files /dev/null and b/_images/kpm_buttons.png differ diff --git a/_images/logo.png b/_images/logo.png new file mode 100644 index 00000000..1e64573c Binary files /dev/null and b/_images/logo.png differ diff --git a/_images/node_parameters.png b/_images/node_parameters.png new file mode 100644 index 00000000..f951c484 Binary files /dev/null and b/_images/node_parameters.png differ diff --git a/_images/save_graph_kpm.png b/_images/save_graph_kpm.png new file mode 100644 index 00000000..0ac5319b Binary files /dev/null and b/_images/save_graph_kpm.png differ diff --git a/_images/side_bar_kpm.png b/_images/side_bar_kpm.png new file mode 100644 index 00000000..0ae59113 Binary files /dev/null and b/_images/side_bar_kpm.png differ diff --git a/_images/soc-diagram-anim.gif b/_images/soc-diagram-anim.gif new file mode 100644 index 00000000..1befc1e3 Binary files /dev/null and b/_images/soc-diagram-anim.gif differ diff --git a/_images/wrapper.png b/_images/wrapper.png new file mode 100644 index 00000000..f9c5c11d Binary files /dev/null and b/_images/wrapper.png differ diff --git a/_sources/advanced_options.md.txt b/_sources/advanced_options.md.txt new file mode 100644 index 00000000..6d3c6683 --- /dev/null +++ b/_sources/advanced_options.md.txt @@ -0,0 +1,65 @@ +# Advanced options + +This chapter builds upon the content covered in the [Getting started](getting_started.md#getting-started) chapter. If you have not yet reviewed it, we recommend doing so before proceeding. + +## Creating block designs in the GUI + +Upon successfully connecting to the server, Topwrap will generate and transmit a specification describing the structure of the selected IP cores. If the `-d` option is specified, the design will be displayed in the GUI. The following content is based on the `PWM` example located in `examples/pwm`. From this point, you can create or modify designs by: + +* adjusting the parameter values of IP cores. Each node includes input fields where you can specify parameter values (default values are automatically assigned when an IP core is added to the block design): + +```{image} img/node_parameters.png +``` + +Parameter values can be specified as integers in various bases (e.g., `0x28`, `40`, or `0b101000`) or as arithmetic expressions, which will be evaluated later (e.g., `(AXI_DATA_WIDTH + 1) / 4` is a valid expression, provided a parameter named `AXI_DATA_WIDTH` exists in the same IP core). Additionally, parameter values can be written in Verilog format (e.g., `8'b00011111` or `8'h1F`), in which case they will be interpreted as fixed-width bit vectors + +* connecting the ports and interfaces of IP cores. Only connections between ports or interfaces of matching types are allowed. This is automatically validated by the GUI, which uses the type information from the loaded specification. As a result, the GUI will prevent users from making invalid connections (e.g., connecting `AXI4` with `AXI4Lite`, or connecting a port to an interface). A green line will indicate a valid connection, while a red line will indicate an invalid one: + +```{image} img/invalid_connection.png +``` + +* specifying external ports or interfaces in the top module. To do this, add the appropriate `External Input`, `External Output`, or `External Inout` metanodes, and establish connections between these metanodes and the desired ports or interfaces. Ensure that the name of the external port or interface is updated in the textbox within the selected metanode. For example, in the case where the output pwm port of the `litex_pwm_top` IP core is external to the generated top module, the external port name should be set to `ext_pwm`, as shown below: + + +```{image} img/external_port.png +``` + +An example block design in the Topwrap GUI for the PWM project may look like this: + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_pwm.json +:dataflow: ../build/kpm_jsons/data_pwm.json +``` + +:::{important} +With each graph change, Topwrap will save the current dataflow to ensure it's not lost, e.g. during an accidental page refresh. +The file is located at `$XDG_DATA_HOME/topwrap/dataflow_latest_save.json`. +::: + +More information about this example can be found [here](https://antmicro.github.io/topwrap/examples.html#pwm) + +## Command Line Interface (CLI) + +Topwrap has a couple of CLI only functions that expand on the functionality offered by the GUI. + +### Generating IP core description YAMLs + +You can use Topwrap to generate IP core description YAMLs from HDL sources for use in your own `project.yaml`. +To learn more about project and core YAMLs, check the [Design description](description_files.md#design-description) and [IP description files](description_files.md#ip-description-files). + +``` +python -m topwrap parse HDL_FILES +``` + +In HDL source files, ports that belong to the same interface (e.g. `wishbone` or `AXI`) often have a common prefix, which corresponds to the interface name. If the naming convention is followed in the HDL sources, Topwrap can also divide ports into user-specified interfaces, or automatically deduce interface names when generating YAML files: + +``` +python -m topwrap parse --iface wishbone --iface s_axi HDL_FILES +python -m topwrap parse --iface-deduce HDL_FILES +``` + +For help, use: + +``` +python -m topwrap [build|gui|parse] --help +``` diff --git a/_sources/config.md.txt b/_sources/config.md.txt new file mode 100644 index 00000000..4c2682d1 --- /dev/null +++ b/_sources/config.md.txt @@ -0,0 +1,75 @@ +# Configuration + +## Configuration file location + +The configuration file must be located in one of the following locations: + +```bash +topwrap.yaml +~/.config/topwrap/topwrap.yaml +~/.config/topwrap/config.yaml +``` + +## Configuration precedence + +When multiple configuration files are present, the options are evaluated and overridden based on the location of the configuration file. +The precedence, from highest to lowest, is as follows: + +- `topwrap.yaml` in the current working directory +- `~/.config/topwrap/topwrap.yaml` (user-specific configuration) +- `~/.config/topwrap/config.yaml` (fallback configuration) + +For example, if `force_interface_compliance` is set to `true` in `~/.config/topwrap/config.yaml` but overridden to `false` in `topwrap.yaml`, the latter value will take precedence when running Topwrap in the directory containing `topwrap.yaml`. + +### Merging strategies for configuration options + +Different configuration options use different merging strategies when multiple configuration files are combined: + +- **Override** (e.g. `force_interface_compliance`): The value from the higher-precedence file completely replaces the value in lower-precedence files. +- **Merge** (e.g. `repositories`): Values from all configuration files are merged. + For example, repositories defined in `~/.config/topwrap/topwrap.yaml` are combined with repositories defined in `topwrap.yaml`. + +## Available config options + +The configuration file for Topwrap provides the following options: + +- `force_interface_compliance` + + - Type: Boolean + - Default: `false` + - Merging strategy: Override + + This option enforces compliance with interface definitions when parsing HDLs. + + For more details, refer to [Interface compliance](description_files.md#interface-compliance). + +- `repositories` + + - Type: List of objects + - Merging strategy: Merge + - Specifies repositories to load, with each repository defined as an object containing the following fields: + - `name`: (required) The name of the repository. + - `path`: (required) The file system path to the repository. + - Example of specifying multiple repositories: + ```yaml + repositories: + - name: name_of_repo + path: path_to_repo + - name: another_repo + path: /absolute/path/to/repo + ``` + + Repositories are used to package and load multiple IP cores and custom interfaces. + + For more information, refer to [User repositories](user_repositories.md). + +### Example configuration file + +Here is a sample configuration file used in the [hierarchy example](examples.md#hierarchy) + +```yaml +force_interface_compliance: true +repositories: + - name: Hierarchies example + path: ./repo/ +``` diff --git a/_sources/description_files.md.txt b/_sources/description_files.md.txt new file mode 100644 index 00000000..715e1a1f --- /dev/null +++ b/_sources/description_files.md.txt @@ -0,0 +1,327 @@ +# Creating a design + +This chapter explains how to create a design in Topwrap, including a detailed overview of how Topwrap design files are structured. + +## Design description + +To create a complete and fully synthesizable design, a design file is needed. It is used for: + +* specifying interconnects and IP cores +* setting parameter values and describing hierarchies for the project +* connecting the IPs and hierarchies +* picking external ports (those which will be connected to the physical I/O). + +You can see example design files in the `examples` directory. The structure of the design file is shown below: + +```yaml +ips: + # specify relations between IP instance names in the + # design yaml and IP cores description YAMLs + {ip_instance_name}: + file: {path_to_ip_description} + ... + +design: + name: {design_name} # optional name of the toplevel + hierarchies: + # see "Hierarchies" below for a detailed description of the format + ... + parameters: # specify IP parameter values to be overridden + {ip_instance_name}: + {parameters_name} : {parameters_value} + ... + ports: + # specify the incoming ports connections of an IP named `ip1_name` + {ip1_name}: + {port1_name} : [{ip2_name}, {port2_name}] + ... + # specify the incoming ports connections of a hierarchy named `hier_name` + {hier_name}: + {port1_name} : [{ip_name}, {port2_name}] + ... + # specify the external port connections + {ip_instance_name}: + {port_name} : ext_port_name + ... + + interfaces: + # specify the incoming interface connections of the `ip1_name` IP + {ip1_name}: + {interface1_name} : [{ip2_name}, {interface2_name}] + ... + # specify the incoming interface connections of the `hier_name` hierarchy + {hier_name}: + {interface1_name} : [{ip_name}, {interface2_name}] + ... + # specify the external interface connections + {ip_instance_name}: + {interface_name} : ext_interface_name + ... + + interconnects: + # see the "Interconnect generation" page for a detailed description of the format + ... +external: # specify the names of external ports and interfaces of the top module + ports: + out: + - {ext_port_name} + inout: + - [{ip_name/hierarchy_name, port_name}] + interfaces: + in: + - {ext_interface_name} + # note that `inout:` is invalid in the interfaces section +``` + +`inout` ports are handled differently than the `in` and `out` ports. When an IP has an inout port or when a hierarchy has an inout port specified in its `external.ports.inout` section, it must be included in the `external.ports.inout` section of the parent design. It is required to specify the name of the IP/hierarchy and the port name that contains it. The name of the external port is identical to the one in the IP core. In case of duplicate names, a suffix `$n` is added (where `n` is a natural number) to the name of the second and subsequent duplicate names. `inout` ports cannot be connected to each other. + +The design description YAML format allows for creating hierarchical designs. In order to create a hierarchy, add its name as a key in the `design` section and describe the hierarchy design "recursively" by using the same keys and values (`ports`, `parameters` etc.) as in the top-level design (see above). Hierarchies can be nested recursively, which means that you can create a hierarchy inside another one. + +Note that IPs and hierarchies names cannot be duplicated on the same hierarchy level. For example, the `design` section cannot contain two identical keys, but it is possible to have `ip_name` key in this section and `ip_name` in the `design` section of a separate hierarchy. + +### Hierarchies + +Hierarchies allow for creating designs with subgraphs in them. The subgraphs can contain multiple IP cores and other subgraphs, allowing for the creation of nested designs in Topwrap. + +### Format + +Hierarchies are specified in the [design description](#design-description). The `hierarchies` key must be a direct descendant of the `design` key. + +The format is as follows: + +```yaml +hierarchies: + {hierarchy_name_1}: + ips: # ips that are used on this hierarchy level + {ip_name}: + ... + + design: + parameters: + ... + ports: # ports connections internal to this hierarchy. + # note that also you have to connect port to it's external port equivalent (if exists). + {ip1_name}: + {port1_name} : [{ip2_name}, {port2_name}] + {port2_name} : {port2_external_equivalent} # connection to external port equivalent. Note that it has to be the parent port. + ... + hierarchies: + {nested_hierarchy_name}: + # structure here will be the same as for {hierarchy_name_1} + ... + external: + # external ports and/or interfaces of this hierarchy; these can be + # referenced in the upper-level `ports`, `interfaces` or `external` section + ports: + in: + - {port2_external_equivalent} + ... + {hierarchy_name_2}: + ... +``` + +A more complex example of a hierarchy can be found in the [examples/hierarchy](https://github.com/antmicro/topwrap/tree/main/examples/hierarchy) directory. + +## IP description files + +Every IP wrapped by Topwrap needs a description file in the YAML format. + +The ports of an IP should be placed in the global `signals` key, followed by the direction - `in`, `out` or `inout`. The module name of an IP should be placed in the global `name` key, and it should be consistent with the definition in the HDL file. + +As an example, this is the description of ports in the `Clock Crossing` IP: + +```yaml +# file: clock_crossing.yaml +name: cdc_flag +signals: + in: + - clkA + - A + - clkB + out: + - B +``` + +The previous example can be used with any IP. However, in order to benefit from connecting entire interfaces simultaneously, the ports must belong to a named interface as in this example: + +```yaml +#file: axis_width_converter.yaml +name: axis_width_converter +interfaces: + s_axis: + type: AXIStream + mode: subordinate + signals: + in: + TDATA: [s_axis_tdata, 63, 0] + TKEEP: [s_axis_tkeep, 7, 0] + TVALID: s_axis_tvalid + TLAST: s_axis_tlast + TID: [s_axis_tid, 7, 0] + TDEST: [s_axis_tdest, 7, 0] + TUSER: s_axis_tuser + out: + TREADY: s_axis_tready + m_axis: + type: AXIStream + mode: manager + signals: + in: + TREADY: m_axis_tready + out: + TDATA: [m_axis_tdata, 31, 0] + TKEEP: [m_axis_tkeep, 3, 0] + TVALID: m_axis_tvalid + TLAST: m_axis_tlast + TID: [m_axis_tid, 7, 0] + TDEST: [m_axis_tdest, 7, 0] + TUSER: m_axis_tuser +signals: # These ports do not belong to an interface + in: + - clk + - rst +``` + +The names `s_axis` and `m_axis` will be used to group the selected ports. +Each signal in an interface has a name which must match with the signal that it is connected to, for example `TDATA: port_name` must connect to `TDATA: other_port_name`. + +To speed up the generation of YAMLs, Topwrap's `parse` command (see [Generating IP core description YAMLs](advanced_options.md#generating-ip-core-description-yamls)) can be used to generate YAMLs from HDL source files. + +### Port widths + +You can specify the port width in the following format: + +```yaml +signals: + in: + - [port_name, upper_limit, lower_limit] +``` +* `port_name` - name of the port. +* `upper_limit` and `lower_limit` define the bit range, where `[upper_limit, lower_limit]` determines the number of bits for the port (e.g. `[63, 0]` for 64 bits). + +As an example: + +```yaml +signals: + in: + - [gpio_io_i, 31, 0] # 32 bits +``` + +If the bit range is omitted, as in the example below, then the default width of `port_name` is 1 bit. + +```yaml +signals: + in: + - port_name +``` + +You can also specify the signal width within interfaces. + +```yaml +interfaces: + s_axis: + type: AXIStream + mode: subordinate + signals: + in: + TDATA: [s_axis_tdata, 63, 0] # 64 bits + ... + TVALID: s_axis_tvalid # defaults to 1 bit +``` +* `TDATA` is assigned to `s_axis_tdata` and is 64 bits wide, defined by `[63, 0]`. +* `TVALID` is assigned to `s_axis_tvalid` and, without a specified range, defaults to `1 bit`. + +### Parameterization + +Port widths don't have to be hardcoded, as parameters can describe an IP core in a generic way, and values specified in IP core YAMLs can be overridden in a design description file (see [Design description](description_files.md#design-description)). + +```yaml +parameters: + DATA_WIDTH: 8 + KEEP_WIDTH: (DATA_WIDTH+7)/8 + ID_WIDTH: 8 + DEST_WIDTH: 8 + USER_WIDTH: 1 + +interfaces: + s_axis: + type: AXI4Stream + mode: subordinate + signals: + in: + TDATA: [s_axis_tdata, DATA_WIDTH-1, 0] + TKEEP: [s_axis_tkeep, KEEP_WIDTH-1, 0] + ... + TID: [s_axis_tid, ID_WIDTH-1, 0] + TDEST: [s_axis_tdest, DEST_WIDTH-1, 0] + TUSER: [s_axis_tuser, USER_WIDTH-1, 0] +``` + +The parameter values can be integers or math expressions. + +### Port slicing + +Ports can be sliced for using some parts of the port as a signal that belongs to a defined interface. + +As an example: +Port `m_axi_bid` of the IP core is 36 bits wide. Use bits `23..12` as the `BID` signal of the `m_axi_1` AXI manager + +```yaml +m_axi_1: + type: AXI + mode: manager + signals: + in: + BID: [m_axi_bid, 35, 0, 23, 12] +``` + +## Interface description files + +Topwrap can use predefined interfaces, as illustrated in YAML files that come packaged with the tool. +The currently supported interfaces are AXI3, AXI4, AXI Lite, AXI Stream and Wishbone. + +An example file looks as follows: + +```yaml +name: AXI4Stream +port_prefix: AXIS +signals: + # The convention assumes the AXI Stream transmitter (manager) perspective + required: + out: + TVALID: tvalid + TDATA: tdata + TLAST: tlast + in: + TREADY: tready + optional: + out: + TID: tid + TDEST: tdest + TKEEP: tkeep + TSTRB: tstrb + TUSER: tuser + TWAKEUP: twakeup +``` + +The `name` of an interface must be unique. + +Signals are either required or optional, and their direction is described from the perspective of the manager (i.e. the direction of signals in the subordinate are flipped). +Note that `clock` and `reset` are not included as these are usually inputs to both the manager and subordinate, so they are not supported in the interface specification. +Every signal is a key-value pair, where the key is a generic signal name (normally taken from the interface specification) and used to identify it in other parts of Topwrap (i.e. IP core description files), and the value is a regex used to deduce which port defined in the HDL sources represents this signal. + +### Interface deduction + +During [IP core parsing](getting_started.md#parsing-verilog-files), you can use the `--iface-deduce` flag to enable automatic pairing of raw ports from HDL sources to interface signals. + +This feature matches signal regexes from all available interface descriptions with raw port names of the IP core in order to discover possible interface instances. +The pairing is performed on port names that are transformed to lowercase and have the common `port_prefix` removed, which means that the regexes must also be written in lowercase. + +### Interface compliance + +During the [build process](getting_started.md#building-designs-with-topwrap), an optional verification of whether the interface instances used in IP cores are compliant with their respective descriptions can be enabled. The verification consists of checking in the instance if: + +- all signals designated as required in the description are included. +- no additional signals beyond those defined in the description are included. + +This feature is controlled by the `--iface-compliance` CLI flag or the `force_interface_compliance` key in the [configuration file](config.md#available-config-options) and is turned off by default. diff --git a/_sources/developers_guide/config.md.txt b/_sources/developers_guide/config.md.txt new file mode 100644 index 00000000..b1864c3e --- /dev/null +++ b/_sources/developers_guide/config.md.txt @@ -0,0 +1,19 @@ +# Config + +The {class}`~topwrap.config.Config` object stores configuration values. The global `topwrap.config.Config` object is used throughout the codebase to access the Topwrap configuration. + +It is created by {class}`~topwrap.config.ConfigManager` that reads the config files as defined in {attr}`topwrap.config.ConfigManager.DEFAULT_SEARCH_PATHS`, with local files taking precedence. + +```{eval-rst} +.. autoclass:: topwrap.config.Config + :members: + + .. automethod:: __init__ +``` + +```{eval-rst} +.. autoclass:: topwrap.config.ConfigManager + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/elaboratable_wrapper.md.txt b/_sources/developers_guide/elaboratable_wrapper.md.txt new file mode 100644 index 00000000..cfc8915e --- /dev/null +++ b/_sources/developers_guide/elaboratable_wrapper.md.txt @@ -0,0 +1,14 @@ +# ElaboratableWrapper class + +{class}`~topwrap.elaboratable_wrapper.ElaboratableWrapper` encapsulates an Amaranth's Elaboratable and exposes an interface compatible with other wrappers, allowing for making connections with them. + +The supplied elaboratable must contain the `signature` property and a conforming interface as specified by the [Amaranth docs](https://amaranth-lang.org/rfcs/0002-interfaces.html). + +The names, directionality and widths of ports are inferred from it. + +```{eval-rst} +.. autoclass:: topwrap.elaboratable_wrapper.ElaboratableWrapper + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/examples.md.txt b/_sources/developers_guide/examples.md.txt new file mode 100644 index 00000000..2917709a --- /dev/null +++ b/_sources/developers_guide/examples.md.txt @@ -0,0 +1,17 @@ +# Examples + +:::{note} +The basic usage of examples are explained in the [Getting started](../getting_started.md) section. +::: + +The examples provided with this project cover very simple designs through to complex fully synthesizable cores. + +They are sorted by increasing levels of complexity and the number of used features, e.g.: + +- 101: minimal base design +- 102: introduce user to parameters +- 103: introduce user to slicing +- 104: introduce user to interfaces +- 105: etc. + +Developers are encouraged to create/add new examples in the same manner, as simple examples are used to teach how to use this tool and demonstrate its features. Real-world use cases are also welcome to show that the implementation is mature enough to handle practical designs. diff --git a/_sources/developers_guide/fusesocbuilder.md.txt b/_sources/developers_guide/fusesocbuilder.md.txt new file mode 100644 index 00000000..fefaea26 --- /dev/null +++ b/_sources/developers_guide/fusesocbuilder.md.txt @@ -0,0 +1,33 @@ +# FuseSocBuilder + +Topwrap supports generating FuseSoC `.core` files with {class}`~topwrap.fuse_helper.FuseSocBuilder`.The `.core` file contains information about source files and synthesis tools. + +Generation of FuseSoC `.core` files is based on a Jinja template that defaults to `topwrap/templates/core.yaml.j2`, but can be overridden. + +Here's an example of how to generate a simple project: + +```python +from topwrap.fuse_helper import FuseSocBuilder +fuse = FuseSocBuilder() + +# add source of the IPs used in the project +fuse.add_source('DMATop.v', 'verilogSource') + +# add source of the top file +fuse.add_source('top.v', 'verilogSource') + +# specify the names of the core file and the directory where sources are stored +# generate the project +fuse.build('build/top.core', 'sources') +``` + +:::{warning} +Default template in `topwrap/templates/core.yaml.j2` does not make use of resources added with {meth}`~topwrap.fuse_helper.FuseSocBuilder.add_dependency` or {meth}`~topwrap.fuse_helper.FuseSocBuilder.add_external_ip`, i.e. they won't be present in the generated core file. +::: + +```{eval-rst} +.. autoclass:: topwrap.fuse_helper.FuseSocBuilder + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/future_enhancements.md.txt b/_sources/developers_guide/future_enhancements.md.txt new file mode 100644 index 00000000..606dbbdc --- /dev/null +++ b/_sources/developers_guide/future_enhancements.md.txt @@ -0,0 +1,48 @@ +# Future planned enhancements in Topwrap + +## Library of open-source cores + +Currently, users have to manually or semi-manually (e.g. through FuseSoC) supply all of the cores used in the design. In future, a repository of open-source cores that can be easily reused will be provided, allowing users to quickly put together designs from premade hardware blocks. + +## Support for hierarchical block designs in Topwrap's GUI + +Topwrap supports creating hierarchical designs by manually writing the hierarchy in the design description YAML, while in future, this feature will be additionally supported in the GUI for visually organizing complex designs. + +## Support for parsing SystemVerilog sources + +Information about IP cores is stored in [IP description files](../description_files.md#ip-description-files). These files can be generated automatically from HDL source files - currently Verilog and VHDL are supported. In a future release, Topwrap will also provide the possibility of generating YAMLs from SystemVerilog. + +# Other possible improvements + +## Ability to produce top-level wrappers in VHDL + +Topwrap currently uses Amaranth to generate top-level designs in Verilog. We would also like to add the ability to produce such designs in VHDL. + +## Bus management + +Another feature that could be introduced is allowing users to create full-featured designs with processors by providing proper support for bus management. + +This should include features such as: + +* the ability to specify the address of a peripheral device on the bus +* support for the most popular buses (AXI, TileLink, Wishbone) + +This will require writing or creating bus arbiters (`round-robin`, `crossbar`) and providing a mechanism for connecting manager(s) and subordinate(s) together. As a result, the user would be able to create complex SoCs directly in Topwrap. + +Currently, only experimental support for [`Wishbone with a round-robin arbiter`](../interconnect_gen.md#wishbone_roundrobin) is available. + +## Improve the process of recreating a design from a YAML file + +One of the main features supported by Topwrap and the GUI is exporting and importing user-created designs, both to or from a [design description](../description_files.md#design-description) YAML. However, during these conversions, information about the position of user-added nodes is not preserved. This is cumbersome in the case of complicated designs since the imported nodes are not retained in the most optimal positions. + +Therefore, one of our objectives is to provide a convenient way of creating and restoring user-created designs in the GUI, so that the node positions are retained. + +## Deeper integration with other tools + +Topwrap can build designs, but testing and synthesis rely on the user - they have to automate this process themselves (e.g. with makefiles). To improve the usability of Topwrap, a potential area of improvement is to integrate tools for synthesis, simulation and co-simulation (with e.g. [Renode](https://www.renode.io) with Topwrap, accessible through scripts. Some could be pre-packaged with Topwrap (e.g. simulation with Verilator, synthesis with Vivado). + +It could also be possible to invoke these from the GUI by adding custom buttons or through the integrated terminal. + +## Provide a way to parse HDL sources from the GUI level + +Another issue related to HDL parsing is that the user has to manually parse HDL sources to obtain the IP core description YAMLs. These files then need to be provided as command-line parameters when launching the Topwrap GUI client application. Therefore, we aim to provide a way of parsing HDL files directly from the GUI. diff --git a/_sources/developers_guide/inline_kpm_howto.md.txt b/_sources/developers_guide/inline_kpm_howto.md.txt new file mode 100644 index 00000000..695371f6 --- /dev/null +++ b/_sources/developers_guide/inline_kpm_howto.md.txt @@ -0,0 +1,59 @@ +# Using KPM iframes inside docs + +It is possible to use the `kpm_iframe` Sphinx directive to embed KPM directly inside a doc. + +## Usage + +```` +```{kpm_iframe} +:spec: +:dataflow: +:preview: +:height: +:alt: +``` +```` + +`URI` represents either a local file from sources that are copied into the build directory, or a remote resource. + +All parameters in this directive are optional. + +## Tests + +### Use remote specification + +:::{note} +The graph below is supposed to be empty. + +It doesn't load a dataflow, only a specification that provides IP-cores to the Nodes browser on the sidebar. +::: + +```{kpm_iframe} +:spec: https://raw.githubusercontent.com/antmicro/topwrap/main/tests/data/data_kpm/examples/hdmi/specification_hdmi.json +``` +### Use local files + +```{kpm_iframe} +:spec: ../../../tests/data/data_kpm/examples/hierarchy/specification_hierarchy.json +:dataflow: ../../../tests/data/data_kpm/examples/hierarchy/dataflow_hierarchy.json +:height: 80vh +``` +### Open in preview mode + +```{kpm_iframe} +:spec: ../../../tests/data/data_kpm/examples/hierarchy/specification_hierarchy.json +:dataflow: ../../../tests/data/data_kpm/examples/hierarchy/dataflow_hierarchy.json +:preview: true +``` + +### Use a custom alt text + +:::{note} +The alternative text is visible instead of the iframe in the PDF version of this documentation. +::: + +```{kpm_iframe} +:spec: ../../../tests/data/data_kpm/examples/hierarchy/specification_hierarchy.json +:dataflow: https://raw.githubusercontent.com/antmicro/topwrap/refs/heads/main/tests/data/data_kpm/examples/hierarchy/dataflow_hierarchy.json +:alt: This diagram showcases the block design of the "hierarchy" example +``` diff --git a/_sources/developers_guide/interface.md.txt b/_sources/developers_guide/interface.md.txt new file mode 100644 index 00000000..ca1ebcd7 --- /dev/null +++ b/_sources/developers_guide/interface.md.txt @@ -0,0 +1,18 @@ +# Interface Definition + +Topwrap uses [interface definition files](interface.md#interface-definition) for its parsing functionality. + +These are used to match a given set of signals that appear in the HDL source with signals in the interface definition. + +{class}`~topwrap.interface.InterfaceDefinition` is defined as a {class}`marshmallow_dataclass.dataclass` - this enables loading the YAML structure into Python objects and performs validation (that the YAML is in the correct format) and typechecking (that the loaded values are of the correct types). + +```{eval-rst} +.. autoclass:: topwrap.interface.InterfaceDefinition + :members: + + .. automethod:: __init__ +``` + +```{eval-rst} +.. autofunction:: topwrap.interface.get_interface_by_name +``` diff --git a/_sources/developers_guide/ipconnect.md.txt b/_sources/developers_guide/ipconnect.md.txt new file mode 100644 index 00000000..b216f2ce --- /dev/null +++ b/_sources/developers_guide/ipconnect.md.txt @@ -0,0 +1,40 @@ +# IPConnect class + +{class}`~topwrap.ipconnect.IPConnect` provides the means of connecting ports and interfaces of objects that are subclasses of {class}`~topwrap.wrapper.Wrapper`. +Since {class}`~topwrap.ipconnect.IPConnect` is a subclass of {class}`~topwrap.wrapper.Wrapper` itself, this means that it also has IO - ports and interfaces, and that multiple {class}`~topwrap.ipconnect.IPConnect`s can have their ports and interfaces connected to each other (or other objects that subclass {class}`~topwrap.wrapper.Wrapper`). + +```{image} ../img/ipconnect.png +``` + +Instances of {class}`~topwrap.wrapper.Wrapper` objects can be added to an {class}`~topwrap.ipconnect.IPConnect` using {meth}`~topwrap.ipconnect.IPConnect.add_component` method: + +```python +# create an IP wrapper +dma = IPWrapper('DMATop.yaml', ip_name='DMATop', instance_name='DMATop0') +ipc = IPConnect() +ipc.add_component("dma", dma) +``` + +Connections between cores can then be made with {meth}`~topwrap.ipconnect.IPConnect.connect_ports` and {meth}`~topwrap.ipconnect.IPConnect.connect_interfaces` based on names of the components and names of ports/interfaces: + +```python +ipc.connect_ports("comp1_port_name", "comp1_name", "comp2_port_name", "comp2_name") +ipc.connect_interfaces("comp1_interface_name", "comp1_name", "comp2_interface_name", "comp2_name") +``` + +Setting ports or interfaces of a module added to {class}`~topwrap.ipconnect.IPConnect` as external with {meth}`~topwrap.ipconnect.IPConnect._set_port` and {meth}`~topwrap.ipconnect.IPConnect._set_interface` and allows these ports/interfaces to be connected to other {class}`~topwrap.wrapper.Wrapper` instances. + +```python +ipc._set_port("comp1_name", "comp1_port_name", "external_port_name") +ipc._set_interface("comp1_name", "comp1_interface_name", "external_interface_name") +``` + +This is done automatically in the {meth}`~topwrap.ipconnect.IPConnect.make_connections` method when the design is built, based on the data from the YAML design description. + +```{eval-rst} +.. autoclass:: topwrap.ipconnect.IPConnect + :members: + :private-members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/ipwrapper.md.txt b/_sources/developers_guide/ipwrapper.md.txt new file mode 100644 index 00000000..4a5d62fe --- /dev/null +++ b/_sources/developers_guide/ipwrapper.md.txt @@ -0,0 +1,18 @@ +# IPWrapper class + +{class}`~topwrap.ipwrapper.IPWrapper` provides an abstraction over a raw HDL source file. +Instances of this class can be created from the loaded IP-core YAML description. + +It creates an Amaranth `Instance` object during elaboration, referencing a particular HDL module and appears as a module instantiation in the generated top level. +Ports and interfaces (lists of ports) can be retrieved via standard methods of {class}`~topwrap.wrapper.Wrapper`. +These are instances of {class}`~topwrap.amaranth_helpers.WrapperPort`s. + +```{image} ../img/wrapper.png +``` + +```{eval-rst} +.. autoclass:: topwrap.ipwrapper.IPWrapper + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/ipxact-design.md.txt b/_sources/developers_guide/ipxact-design.md.txt new file mode 100644 index 00000000..902d6fe9 --- /dev/null +++ b/_sources/developers_guide/ipxact-design.md.txt @@ -0,0 +1,557 @@ +# IP-XACT format + +This document is an exploration of the [IP-XACT format](https://www.accellera.org/images/downloads/standards/ip-xact/IPXACT-2022_user_guide.pdf). + +All IP-XACT elements generated for the IR examples are located under `examples/ir_examples/[example]/ipxact/antmicro.com/[example]` where `antmicro.com/[example]` represents the [`vendor/library`](#vlnv). +They all conform to the 2022 version. + +## General observations + +### VLNV + +The IP-XACT format enforces the usage of VLNV (vendor, library, name, version) for every single design and component. + +```xml +antmicro.com +simple +lfsr_gen +1.2 +``` + +For now, Topwrap can only reliably handle the `name` value, while `vendor` and `version` are not used anywhere and their concept is unrecognised in the codebase. +Arguably, `library` could be represented by the name of a user repository. + +Special consideration needs to be taken for these values, as the XML schema defines specific allowed characters for some fields, while Topwrap doesn't sanity-check any fields that accept custom names. + +:::{warning} +Later in this document this group of four tags will be represented by `` to avoid repetition. +::: + +### Multiple versions + +There are many versions of the IP-XACT schema, as [visible here](http://www.accellera.org/XMLSchema/), on the official page of Accellera - developers of the format. + +Version before 2014 and after 2014 use two different XML namespaces for the tags, respectively: `spirit:` and `ipxact:`. + +Vivado seemingly only supports the 2009(!) specification version. + +This means the discrepancies between different versions and incompatibilities between tools must be taken into account. + +There are [official XSLT templates](https://www.accellera.org/downloads/standards/ip-xact) (bottom of the page) available that can convert any IP-XACT .xml file one version up, using an xslt tool like [`xsltproc`](https://linux.die.net/man/1/xsltproc). + +### Design structure + +The IP-XACT format revolves mainly around "components". +This is something that is closest to our `IPCoreDescription` class and its respective YAML schema: + +```xml + + + + + + + + ... + + + + + ... + + + + ... + + +``` + +A singular component represents a black-box, with the outside world seeing only its ports, buses and parameters. +In order to represent its inner design there needs to be a separate design XML file: + +```xml + + + + + ... + + + + gen2_gen_out_to_two_mux_gen2 + + + + + + ... + + +``` + +which later *is attached* to the component description under the instantiations section, thus making the design an optional property of a module/component. + +To describe a top-level wrapper you need both its description as a component, where the external IO is defined, and its design file that describes what other IPs are incorporated by this wrapper. + +### Parameter passing + +IP-XACT introduces a distinction between parameters of a component, and module parameters of the component's instantiation. + +This allows most IP-XACT objects to accept parameters that are only internal to them and are unrelated to the potentially generated RTL. +In order to define RTL module parameters, you need to specify them under two separate sections. + +Below is an example of defining a `paramWIDTH` parameter with default value of 64 in a component that gets realised in Verilog as `parameter WIDTH = 64;`: + +Take note of the top-level `` tag and the `` tag of the component instantiation. + +```xml + + + rtl + rtl + Verilog + + + WIDTH + WIDTH + paramWIDTH + + + + + + + paramWIDTH + paramWIDTH + 64 + + +``` + +In Topwrap, all IP parameters do get realised in the generated Verilog and there is no notion of internal parameters. + +### File sets + +Each component in IP-XACT can contain an section. +This is a very exhaustive section about one or more groups of *files* that this component depends on. +The type and purpose of every such file is marked, e.g: `verilogSource`. + +```xml + + + fs-rtl + + ../RTL/transmitter.v + verilogSource + transmitter_lib + + + +``` + +This concept currently only exists as a `--sources` CLI flag for `topwrap build` where all HDL sources are plainly forwarded to the FuseSoC .core. +There is no notion of other file dependencies inside IP Core description YAMLs. + +### Vendor extensions + +The IP-XACT format allows storing completely custom data inside most of the tags using the `` group. Topwrap could use them to store additional data about the IPs or designs. + +Example theoretical vendor extensions: + +```xml + + wishbone + + builtin + +``` + +### Catalogs + +Catalogs describe the location and the VLNV identifier of other IP-XACT elements such as components, designs, buses etc. in order to manage and allow access to collections of IP-XACT files. +In most cases defining a catalog is not required as all necessary files are automatically located by the used tool. + +```xml + + + + + + ./antmicro.com/simple/lfsr/lfsr.1.0.xml + + + + ... + + ... + +``` + +## [Simple example](./ir-examples.md#simple) + +This is the simplest IP-XACT example as it contains only plain IP cores with standalone ports, and parameters. + +### Instance names + +Since Topwrap doesn't verify any user-defined names, an accidental creation of a `2mux.yaml` IP Core named `2mux_compressor` instantiated with a `2mux` name, was possible in the YAML format. +Many environments, IP-XACT included, don't actually allow users to start custom names with a number. +The instance name of `2mux` had to be changed to `two_mux` for this purpose. + +### Parameters + +The special syntax of IP-XACT parameters is mostly explained in the [](#parameter-passing) section. + +#### Variable widths + +If you look at either `ips/2mux.yaml` or `ips/lfsr_gen.yaml` you'll see that there are ports with widths defined by the parameters inside an arithmetic expression: + +```yaml +# ips/2mux.yaml +out: + - [out, OUT_WIDTH-1, 0] +``` + +This is easily realisable in IP-XACT because just like our port widths, they also accept arbitrary arithmetic expressions that can reference other parameters inside them: + +(port-def)= +```xml + + out + + out + + + paramOUT_WIDTH - 1 + 0 + + + + +``` + +### Duality of the design description + +The design of the [](./ir-examples.md#simple) example is defined (from the Topwrap's perspective) purely in the `design.yaml` file. This is not so simple in IP-XACT, see [](#design-structure). + +Mostly this means that the "external" section of our design YAML lands in its own component/IP file and the connections and module instances in a separate one that is attached to the component file as a "design instantiation". + +The generated top-level component for this example and its design (`top.design.1.0.xml`) are located inside the `top` directory in the IP-XACT library. + +Additionally a "design configuration" file is generated that contains additional configuration information for the main design file. Not much is specified there for this example though. + +So finally the original `design.yaml` ends up becoming 3 interconnected .xml files in IP-XACT. + +### Connections + +Port connections between IP cores, and IP cores and externals are all specified in the XML design file. +There isn't much special about them, they are represented very similarly to our design description yaml connections: + +```xml + + gen2_gen_out_to_two_mux_gen2 + + + + + +``` + +## [Interface example](./ir-examples.md#interface) + +The key thing about this example is that it uses an interface connection (AXI 4 Stream) between two IPs, an inout port, a constant value supplied to a port and [](../description_files.md#port-slicing). + +:::{info} +An interface is a named, predefined collection of logical signals used to transfer information between different IPs or other building blocks. +Common interface types include: Wishbone, AXI, AHB, and more. + +Topwrap, like SystemVerilog, refers to this concept as an "interface". + +IP-XACT refers to the same concept as a "bus". +::: + +### Bus definitions + +Custom interfaces in Topwrap are defined using [](../description_files.md#interface-description-files). + +Custom interfaces are well recognized and supported in IP-XACT. +They are represented by two files, a "bus definition" that defines the existence of the interface/bus itself, its name and configurable parameters; and an "abstraction definition" that defines the logical signals of the interface. + +It's possible to have more than one abstraction definition for a given bus definition. + +Often times the necessary definitions for a given interface are already publicly available. +For example, the IP-XACT bus definitions of all ARM AMBA interfaces are available [here](https://developer.arm.com/Architectures/AMBA#Downloads) in the 2009 version of IP-XACT. +For this document, they were up-converted to the 2022 version with the help of [XSLT templates](#multiple-versions). + +#### Format + +If not, a custom definition has to be created. +Starting with the bus definition: + +```xml + + + This is the AXI4Stream stream bus definition. + true + false + +``` + +VLNV entries and description are both present at the start, like in all other IP-XACT definitions. Then there are two configuration bools: +- `` decides if this bus allows direct connection between a manager/initiator and subordinate/targets. Important for "asymmetric buses such as AHB". +- `` decides if this bus is addressable using the address space of the manager side of the bus. e.g. `true` for AXI4, `false` for AXI4Stream. + +Then to specify the logical signals of the interface, an abstraction definition has to be created: + +```xml + + + This is an RTL Abstraction of the AMBA4/AXI4Stream + + + + TREADY + indicates that the Receiver can accept a transfer in the current cycle. + + + optional + 1 + in + + + optional + 1 + out + + 1 + + + + +``` + +This is a fragment of the `TREADY` signal definition of the AXI 4 Stream interface. + +There's the classic VLNV + Description combo at the start, then the associated bus definition is referenced and lastly the signals of the interface are defined. + +In IP-XACT, unlike in Topwrap, you can specify different options for signals on both the manager and the subordinate separately, importantly a signal can be required on one side of the bus while being optional on the other. This is currently impossible to represent in Topwrap. The width specification and the default value are not supported either by Topwrap. + +Moreover, unlike in Topwrap, in IP-XACT the clock and reset signals are also specified in the definition alongside other signals. They are however marked with special qualifiers that distinguish their roles and enforce certain behaviours. + +Example qualifiers: + +```xml + + + true + true + + +``` + +:::{info} +While Topwrap uses the `manager` and `subordinate` terms to refer to the roles an IP can assume in the bus connection, IP-XACT pre-2022 uses `master`, `slave` and IP-XACT 2022-onwards uses `initiator` and `target` respectively. +::: + +#### Interface deduction + +Topwrap supports specifying both a regex for each signal and the port prefix for the entire interface in order to [automatically group raw ports](../description_files.md#interface-deduction) from HDL sources into interfaces. None of that is possible to represent in IP-XACT, though this information can be stored anyways using [](#vendor-extensions). + +### Bus instantiation + +To use the bus inside a component definition you have to: ++ Add all the physical ports that will get used as the bus signals just like regular [ad-hoc ports](#port-def) ++ Map these physical ports to logical ports of the interface + +#### The portMap format + +```yaml +interfaces: + io: + type: AXI4Stream + mode: subordinate + signals: + in: + TDATA: [dat_i, 31, 0] +``` + +This fragment of [](../description_files.md#design-description) would translate to the below IP-XACT description, assuming the `dat_i` signal was previously defined in the ad-hoc ports section. + +```xml + + + io + + + + + + + + TDATA + + + dat_i + + + + + + + + +``` + +The `` tag is a direct child of the top-level `` tag. + +[](../description_files.md#port-slicing) is supported as well: + +```xml + + ctrl_i + + + 4 + 4 + + + +``` + +### Inout ports + +This example contains an external inout port raised from one of the IPs. +While the [Topwrap syntax](../description_files.md#design-description) for specifying inout ports in a design is a bit awkward, in IP-XACT inout ports are represented just like ports with other directions. + +### Constant assignments + +This example also features a constant value (2888) assigned to the `noise` port of the `receiver` IP instead of any wire. In IP-XACT this is done similarly to [](#connections): + +```xml + + receiver_0_noise_to_tiedValue + 2888 + + + + +``` + +Additionally, the `tiedValue` can be given by an arithmetic expression that resolves to a constant value. + + +## [Hierarchical example](./ir-examples.md#hierarchical) + +The hierarchical example features deeply nested hierarchies. +The purpose of a hierarchical design is to group together into separate levels/modules, connections that could just as well be realised flatly in the top-level. + +In Topwrap, all hierarchies are specified in the respective [design description file](../description_files.md#hierarchies) YAML using a special syntax that allows multiple design descriptions to be nested together in a single file. + +IP-XACT has no notion of any special syntax for hierarchies, because it doesn't need to. Due to the [architecture of design XMLs](#design-structure) being extensions to component XMLs, it's possible to just generate a component+design pair for every hierarchy and connect them just as if they were regular IPs that happen to have a design available alongside them. This is exactly what was done to represent this example. + + +## [Interconnect example](./ir-examples.md#interconnect) + +This example features the [](../interconnect_gen.md) functionality of Topwrap. + +Specifying interconnects in the Topwrap design description implies dynamic generation of necessary arbiters and bus components during build-time using parameters defined under the interconnect instance key. + +IP-XACT doesn't support such functionality because it's just a file format and it doesn't necessarily have any dynamic code associated with it. + +Conversion from Topwrap -> IP-XACT should probably just generate the interconnect bus component with the required amount of manager and subordinate ports and package it alongside the generated RTL implementation of routers and arbiters. + +Reverse conversion (from the concrete generated IP-XACT interconnect to Topwrap's interconnect entry) is probably impossible, we can't know the interconnect specifics to know which type to pick after it's already generated. +However, all this necessary information could be stored in a vendor extension. + +### The interconnect component + +The generated interconnect is located in `./antmicro.com/interconnect/interconnect/wishbone_interconnect1.xml`. +As mentioned, it has just enough interface ports to connect the two specified managers and two subordinates. + +The Wishbone interface definition from `opencores.org` was used. + +The main difference that differentiates the interconnect component from raw interface connections like in the [](#interface-example) is the explicit definition and mapping of the address space with the `` tag and assignment of each manager port to one or more subordinates. + +The extensions used in the bus instance element in the component definition. +Focus on the `ipxact:addressSpaceRef` tag where the base address of this subordinate is specified: + +```xml + + target_1 + + + ... + + + + 'h10000 + + + +``` + +The extension used at the top-level in the component definition to map the address space: + +```xml + + + address + 2**32/8-1 + 8 + + + mem + 'h0 + 'hFFFF+1 + + + dsp + 'h10000 + 'hFF+1 + + + 8 + + +``` + +The assignment of a manager port to specified subordinates(targets): + +```xml + + manager0 + + + + + + + +``` + +### External interface + +In the Topwrap definition of this example, a `wishbone_passthrough` IP core is used in order to allow the external interface to be connected as a manager to the interconnect. This is due to limitations of the schema and the fact that under the `managers` key Topwrap expects the IP instance name with the specified manager port, completely disregarding the possibility of it being external. + +## [Other features](./ir-examples.md#other) + +### Dynamic number of ports/interfaces based on a parameter + +This is not possible in IP-XACT. +All ports/interfaces and connections need to be explicitly defined. +While the amount of bits in a port can vary based on a parameter value, as was presented in [](#variable-widths), higher level concepts such as the number of ports cannot. + +## Conclusion + +In most aspects IP-XACT is a superset of what's possible to describe in Topwrap, making the Topwrap -> IP-XACT conversion pretty trivial. + +Syntax impossible to represent natively in IP-XACT such as: +- Abstract interconnects without concrete implementation +- Interface signal name regexes and port prefixes (see [](../description_files.md#interface-deduction)) + +can even if not implemented, be at least preserved using [](#vendor-extensions). + +Other visible issue for this conversion are: +- [](#vlnv) being mandatory for IP-XACT files, but Topwrap containing only the name information +- Lack of input sanitization of string fields on Topwrap's side + +On the other hand, the conversion from a generic IP-XACT file to Topwrap's internal representation may prove more tricky and definitely suffer from information loss as the IP-XACT format is packed with more features and elements that are not exactly useful for our purposes and were not even mentioned in this document at all. diff --git a/_sources/developers_guide/ir-examples.md.txt b/_sources/developers_guide/ir-examples.md.txt new file mode 100644 index 00000000..6b8a5948 --- /dev/null +++ b/_sources/developers_guide/ir-examples.md.txt @@ -0,0 +1,62 @@ +# Examples for Internal Representation + +There are four examples in `examples/ir_examples` showcasing specific features of Topwrap which we want to take into consideration while creating the new internal representation. + +## Simple + +This is a simple non-hierarchical example that uses two IPs. Inside, there are two LFSR RNGs constantly generating pseudorandom numbers on their outputs. They are both connected to a multiplexer that selects which generator's output should be passed to the `rnd_bit` external output port. The specific generator is selected using the `sel_gen` input port. + +This example features: +- IP core parameters +- variable width ports + +```{kpm_iframe} +:dataflow: ../../build/kpm_jsons/data_ir_examples_simple.json +:spec: ../../build/kpm_jsons/spec_ir_examples_simple.json +``` + +## Interface + +This is another simple example using two IPs, this time with an interface. The design consists of a streamer IP and a receiver IP. They both are connected using the AXI4Stream interface. The receiver then passes the data to an external inout port. + +This example features: +- usage of interface ports +- port slicing +- constant value connected to a port +- an Inout port + +```{kpm_iframe} +:dataflow: ../../build/kpm_jsons/data_ir_examples_interface.json +:spec: ../../build/kpm_jsons/spec_ir_examples_interface.json +``` + +## Hierarchical + +This is an example of a hierarchical design. The top-level features standard external ports `clk` and `rst`, a `btn` input that represents an input from a physical button, and `disp0..2` outputs that go to an imaginary 3-wire-controlled display. All these ports are connected to a processing hierarchy `proc`. Inside this hierarchy we can see the `btn` input going into a "debouncer" IP, its output going into a 4-bit counter, the counter's sum arriving into an encoder as the input number, and the display outputs from the encoder further lifted to the parent level. The encoder itself is a hierarchy, though an empty one with only the ports defined. The 4-bit counter is also a hierarchy that can be further explored. It consists of a variable width adder IP and a flip-flop register IP. + +This example features: +- hierarchies of more than one depth + +```{kpm_iframe} +:dataflow: ../../build/kpm_jsons/data_ir_examples_hierarchical.json +:spec: ../../build/kpm_jsons/spec_ir_examples_hierarchical.json +``` + +## Interconnect + +This is an example of our interconnect generation feature. The design features 3 IP cores: a memory core (`ips/mem.yaml`), a digital signal processor (`ips/dsp.yaml`) and a CPU (`ips/cpu.yaml`). All of them are connected to a wishbone interconnect where both the CPU and an external interface `ext_manager` act as managers and drive the bus. DSP and MEM are subordinates, one available at address 0x0, the other at 0x10000. + +Note that while this specific example uses a "wishbone_roundrobin" interconnect, we still aim to support other types of them in the future. +Each one will have its own schema for the "params" section so make sure not to hardcode the parameters' keys or values. + +This example features: +- usage of interface ports +- interconnect usage + +:::{note} +No KPM example for this one since interconnects are still irrepresentable in it. +::: + +## Other + +Something that was not taken into account previously, because we don't support it yet, and it's impossible to represent in either format, is a feature/syntax that would allow us to dynamically change the collection of ports/interfaces an IP/hierarchy has. Similarly to how we can control the width of a port using a parameter (like in the "simple" example). diff --git a/_sources/developers_guide/parsing.md.txt b/_sources/developers_guide/parsing.md.txt new file mode 100644 index 00000000..7196ba1c --- /dev/null +++ b/_sources/developers_guide/parsing.md.txt @@ -0,0 +1,64 @@ +# Deducing interfaces + +This section describes how inferring interfaces works when using `topwrap parse` with `--iface-deduce`, `--iface` or `--use-yosys` options. + +The problem can be described as: given a set of signals, infer what interfaces are present in this set and assign the signals to the appropriate interfaces. +Interface names and types (AXI4, AXI Stream, Wishbone, etc.) are generally not provided in advance. +The algorithm implemented in Topwrap works broadly as follows: + +1. Split the given signal set into disjoint subsets of signals based on common prefixes in their names +2. For a given subset, try to pair each signal name (as it appears in the RTL) with the name of an interface signal (as it is defined in the specification of a particular interface). This pairing is called "a matching", and matching with signals from all defined interfaces is tried. +3. For a given subset and matched interface, infer the interface direction (manager/subordinate) based on the direction of a signal in this set. +4. Compute the score for each matching, e.g. if signal names contain `cyc`, `stb` and `ack` (and possibly more) it's likely that this set is a Wishbone interface. Among all interfaces, the interface that has the highest matching score is selected. + +## Step 1 - splitting ports into subsets + +First, all ports of a module are grouped into disjoint subsets. Execution of this step differs based on the options supplied to `topwrap parse`: + +- with `--iface` the user supplies Topwrap with interface names - ports with names starting with a given interface name will be put in the same subset. +- with `--use-yosys` grouping is done by parsing the RTL source with `yosys`, where ports have attributes in the form of `(* interface="interface_name" *)`. +Ports with the same `interface_name` will be put in the same subset. +- with `--iface-deduce` grouping is done by computing longest common prefixes among all ports. +This is done with the help of a [trie](https://en.wikipedia.org/wiki/Trie) and only allows prefixes that would split the port name on an underscore (e.g. in `under_score` valid prefixes are an empty string, `under` and `under_score`) or a camel-case word boundary (e.g. in `wordBoundary` valid prefixes are an empty string, `word` and `wordBoundary`). +As with user-supplied prefixes, ports with names starting with a given prefix will be put in the same subset. + +## Step 2 - matching ports with interface signal names + +Given a subset of ports from the previous step, this step tries to match a regexp from an interface definition YAML for a given interface signal to one of the port names and returns a collection of pairs: RTL port + interface port. +For example, when matching against AXI4, a port named `axi_a_arvalid` should match to an interface port named `ARVALID` in the interface definition YAML. + +This operation is performed for all defined interfaces for a given subset of ports. The overall result of this step is a collection of matchings. +For most interfaces these matchings will be poor - e.g. `axi_a_arvalid` or other AXI4 signals won't match to most Wishbone interface signals, but an interface that a human would usually assign to a given set of signals will have most signals matched. + +## Step 3 - inferring interface direction + +This step picks a representative RTL signal from a single signal matching from the previous step and checks its direction against direction of the corresponding interface signal in the interface definition YAML - if it's the same then it's a manager interface (since the convention in interface description files is to describe signals from the manager's perspective), otherwise it's a subordinate. + +## Step 4 - computing interface matching score + +This step computes a score for each matching returned by Step 2. The score is based on the number of matched/unmatched optional/required signals in each matching. + +Not matching some signals in a given group (from step 1.) is heavily penalized to encourage selecting an interface that "fits" a given group best. +For example, AXI Lite is a subset of AXI4, so a set of signals that should be assigned AXI4 interface could very well fit the description of AXI Lite, but this mechanism discourages selecting such matching in favor of selecting the other. + +Not matching some signals of a given interface (from interface description YAML) is also penalized. +Inverting the previous example, a set of signals that should be assigned AXI Lite interface could very well fit the description of AXI4, but because it's missing a few AXI4 signals, selecting this matching is discouraged in favor of selecting the other. + +### High scoring function + +A well-behaving scoring function should satisfy some properties to ensure that the best "fitting" interface is selected. +To describe these we introduce the following terminology: +* `>`/`>=`/`==` should be read as "must have a greater/greater or equal/equal score than". +* Partial matching means matching where some RTL signals haven't been matched to interface signals, full matching means matching where all have been matched. + +Current implementation when used with default config values satisfies these properties: + +1. full matching with N+1 signals matched (same type) == full matching with N signals matched (same type) +2. full matching with N signals matched (same type) > partial matching with N signals matched (same type) +3. partial matching with N+1 signals matched (same type) > partial matching with N signals matched (same type) +4. full matching with N+1 required, M+1 optional signals >= full matching with N+1 optional, M optional signals >= full matching with N required, M+1 optional signals >= full matching with N required, M optional signals + +Properties 2-4 generally ensure that interfaces with more signals matched are favored more than those with less signals matched. +Property 1 follows from the current implementation and is not needed in all implementations. + +Full details can be found in the implementation itself. diff --git a/_sources/developers_guide/setup.md.txt b/_sources/developers_guide/setup.md.txt new file mode 100644 index 00000000..76aba3d2 --- /dev/null +++ b/_sources/developers_guide/setup.md.txt @@ -0,0 +1,13 @@ +# Setup + +It is required for developers to keep the current code style and it is recommended to frequently run tests. + +In order to set up the development environment, install all the optional dependency groups as specified in `pyproject.toml`, which also includes `nox` and `pre-commit`: + +```bash +python -m venv venv +source venv/bin/activate +pip install -e ".[all]" +``` + +The `-e` option is for installing in editable mode - meaning changes in the code under development will be immediately visible when using the package. diff --git a/_sources/developers_guide/style.md.txt b/_sources/developers_guide/style.md.txt new file mode 100644 index 00000000..3fc86876 --- /dev/null +++ b/_sources/developers_guide/style.md.txt @@ -0,0 +1,67 @@ +# Code style + +`Nox` or `pre-commit` performs automatic formatting and linting of the code. + +## Lint with nox + +After successful setup, `Nox` sessions can be executed to perform lint checks: + +```bash +nox -s lint +``` + +This runs `isort`, `black`, `flake8` and `codespell` and fixes almost all formatting and linting problems automatically, but a small number must be fixed by hand (e.g. unused imports). + +:::{note} +To reuse the current virtual environment and avoid lengthy installation processes, use the `-R` flag: + +```bash +nox -R -s lint +``` + +::: + +:::{note} +pre-commit can also be run from nox: + +```bash +nox -s pre_commit +``` + +::: + +## Lint with pre-commit + +Alternatively, use `pre-commit` to perform the same job. +`pre-commit` hooks need to be installed: + +```bash +pre-commit install +``` + +Now, each use of `git commit` in the shell will trigger actions defined in the `.pre-commit-config.yaml` file. +`pre-commit` is easily deactivated with a similar command: + +```bash +pre-commit uninstall +``` + +If you wish to run `pre-commit` asynchronously, use: + +```bash +pre-commit run --all-files +``` + +:::{note} +`pre-commit` by default also runs `nox` with `isort`, `flake8`, `black` and `codespell` sessions. +::: + +## Tools + +Tools used in the Topwrap project for maintaining the code style: +* [`nox`](https://nox.thea.codes/en/stable/) is a tool, which simplifies management of Python testing. +* [`pre-commit`](https://pre-commit.com/) is a framework for managing and maintaining multi-language pre-commit hooks. +* [`black`](https://black.readthedocs.io/en/stable/) is a Python code formatter. +* [`flake8`](https://flake8.pycqa.org/en/latest/) is a tool capable of linting, styling fixes and complexity analysis of Python code. +* [`isort`](https://pycqa.github.io/isort/) is a Python utility to sort imports alphabetically. +* [`codespell`](https://github.com/codespell-project/codespell) is a Python tool to fix common spelling mistakes in text files diff --git a/_sources/developers_guide/tests.md.txt b/_sources/developers_guide/tests.md.txt new file mode 100644 index 00000000..3bfed352 --- /dev/null +++ b/_sources/developers_guide/tests.md.txt @@ -0,0 +1,97 @@ +# Tests + +Topwrap functionality is validated with tests that leverage the `pytest` library. + +## Test execution + +The tests are located in the `tests` directory. +All tests can be run with `nox` by specifying the `tests` session: + +```bash +nox -s tests +``` + +This runs tests on the Python interpreter versions that are available locally. +There is also a session `tests_in_env` that will automatically install all required Python versions, provided you have [pyenv](https://github.com/pyenv/pyenv) installed: + +```bash +nox -s tests_in_env +``` + +:::{note} +To reuse an existing virtual environment and avoid lengthy installation times, use the `-R` flag: + +```bash +nox -R -s tests_in_env +``` + +::: + +To force a specific Python version and avoid running tests for all listed versions, use `-p VERSION` flag: + +```bash +nox -p 3.10 -s tests_in_env +``` + +Tests can also be launched without `nox` by executing: + +```bash +python -m pytest +``` + +:::{warning} +When running tests by invoking `pytest` directly, tests are ran only on the locally selected Python interpreter. +As the CI runs on all supported Python versions, it's recommended to run tests with `nox` on all versions before pushing. +::: + +Ignoring a particular test can be performed with `--ignore=test_path`, e.g: + +```bash +python -m pytest --ignore=tests/tests_build/test_interconnect.py +``` + +For debugging purposes, Pytest captures all output from the test and displays it when all tests are completed. +To see the output immediately, pass the `-s` flag to pytest: + +```bash +python -m pytest -s +``` + +## Test coverage + +Test coverage is automatically generated when running tests with `nox`. +When invoking `pytest` directly, it can be generated with the `--cov=topwrap` flag. +This will generate a summary of coverage, displayed in the CLI. + +```bash +python -m pytest --cov=topwrap +``` + +Additionally, the summary can be generated in HTML with the flags `--cov=topwrap --cov-report html`, where lines that were not covered by tests can be browsed: + +```bash +python -m pytest --cov=topwrap --cov-report html +``` + +The generated report is available at `htmlcov/index.html` + +## Updating kpm test data + +All `kpm` data from examples can be generated using `nox`. +This is useful when changing Topwrap functionality relating to kpm, as it avoids manually changing test data in every sample. +Users can either update of example data such as the specification or update everything (dataflows, specifications, designs). + +To update everything run: +```bash +nox -s update_test_data +``` + +To update only specifications run: +```bash +nox -s update_test_data -- specification +``` + +Valid options for `update_test_data` sessions, are: +* `specification` +* `dataflow` +* `design` diff --git a/_sources/developers_guide/wrapper.md.txt b/_sources/developers_guide/wrapper.md.txt new file mode 100644 index 00000000..08a35076 --- /dev/null +++ b/_sources/developers_guide/wrapper.md.txt @@ -0,0 +1,12 @@ +# Wrapper + +{class}`~topwrap.wrapper.Wrapper` is an abstraction over entities that have ports. Examples include IP cores written in Verilog/VHDL, cores written in Amaranth and hierarchical collections for these that expose some external ports. + +Subclasses of this class have to supply an implementation of the property {meth}`~topwrap.wrapper.Wrapper.get_ports`, which has to return a list of all ports in the entity. + +```{eval-rst} +.. autoclass:: topwrap.wrapper.Wrapper + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/developers_guide/wrapper_port.md.txt b/_sources/developers_guide/wrapper_port.md.txt new file mode 100644 index 00000000..cfff6eec --- /dev/null +++ b/_sources/developers_guide/wrapper_port.md.txt @@ -0,0 +1,28 @@ +# Wrapper Port + +The class {class}`~topwrap.amaranth_helpers.WrapperPort` is an extension to Amaranth's {class}`Signal`. +It wraps a port, adding a new name and optionally slicing the signal. +It adds these attributes: + +```python +WrapperPort.internal_name # name of the port in internal source to be wrapped +WrapperPort.direction # DIR_FANIN, DIR_FANOUT or DIR_NONE +WrapperPort.interface_name # name of the group of ports (interface) +WrapperPort.bounds # range of bits that belong to the port + # and the range which is sliced from the port +``` + +See [IP core port-slicing](../description_files.md#ip-description-files) to know more about `bounds`. + +This is used in the {class}`~topwrap.ipwrapper.IPWrapper` class implementation and there should be no need to use {class}`~topwrap.amaranth_helpers.WrapperPort` individually. + +:::{warning} +{class}`~topwrap.amaranth_helpers.WrapperPort` is scheduled to be replaced in favor of Amaranth's {class}`Signal` so it should not be used in any new functionality. +::: + +```{eval-rst} +.. autoclass:: topwrap.amaranth_helpers.WrapperPort + :members: + + .. automethod:: __init__ +``` diff --git a/_sources/examples.md.txt b/_sources/examples.md.txt new file mode 100644 index 00000000..ee352854 --- /dev/null +++ b/_sources/examples.md.txt @@ -0,0 +1,334 @@ +# Sample projects + +These projects demonstrate how to use Topwrap on a practical level, with examples based on a variety of useful designs. + +## Embedded GUI + +This section extensively uses an embedded version of [Topwrap's GUI](https://github.com/antmicro/kenning-pipeline-manager) to visualize the design of all the examples. + +You can use it to explore designs, while adding new blocks, connections, nodes and hierarchies. + +The features that require direct connection with Topwrap's backend are not implemented in this demo version, including: + +- saving and loading data in `.yaml` files +- building designs +- verifying designs + + +:::{tip} +Don't forget to use the "Enable fullscreen" button if the viewport is too small. + +```{image} img/kpm_button_fullscreen.png +``` + +::: + +## Constant + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/constant) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_constant.json +:dataflow: ../build/kpm_jsons/data_constant.json +``` + +This example shows how to assign a constant value to a port in an IP core. You can see it in the GUI by using the interactive preview functionality. +It is also visible in the description file (`project.yaml`). + +:::{tip} +You can find the constant node blueprint in the nodes browser within the `Metanode` section. +::: + +### Usage + +Switch to the subdirectory with the example: + +```bash +cd examples/constant +``` + +Generate the HDL source: + +```bash +make generate +``` + +## Inout + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/inout) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_inout.json +:dataflow: ../build/kpm_jsons/data_inout.json +``` + +This example showcases the usage of an inout port and its representation in the GUI. + +:::{tip} +An inout port is marked in the GUI by a green circle without a directional arrow inside. +::: + +The design consists of 3 modules: input buffer `ibuf`, output buffer `obuf`, and bidirectional buffer `iobuf`. +Their operation can be described as: + +* the input buffer is a synchronous D-type flip flop with an asynchronous reset +* the output buffer is a synchronous D-type flip flop with an asynchronous reset and an `output enable`, which sets the output to a high impedance state (Hi-Z) +* the inout buffer instantiates 1 input and 1 output buffer. The input of the `ibuf` and output of the `obuf` are connected with an inout wire (port). + +### Usage + +Switch to the subdirectory with the example: + +```bash +cd examples/inout +``` + +Install the required dependencies: + +```bash +pip install -r requirements.txt +``` + +::: + +To generate the bitstream for Zynq, use: + +```bash +make +``` + +To generate only the HDL sources use: + +```bash +make generate +``` + +## User repository + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/user_repository) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_user_repository.json +:dataflow: ../build/kpm_jsons/data_user_repository.json +``` + +This example presents the structure of a user repository containing prepackaged IP cores with sources and custom interface definitions. + +Elements of the `repo` directory can be easily reused in different designs by linking to them from the config file or in the CLI. + +:::{seealso} +For more information about user repositories see [this chapter](user_repositories.md). +::: + +:::{tip} +As other components of the design are automatically imported from the repository, it's possible to load the entire example by specifying the design file: + +```bash +topwrap gui -d project.yml +``` + +::: + +### Usage + +Navigate to the `/examples/user_repository/` directory and run: + +```bash +topwrap gui -d project.yml +``` + +**Expected result** + +Topwrap will load two cores from the `cores` directory, using the interface from the `interfaces` directory. + +In the Nodes browser under `IPcore`, two loaded cores: `core1` and `core2`, should be visible. + +## Hierarchy + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/hierarchy) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_hierarchy.json +:dataflow: ../build/kpm_jsons/data_hierarchy.json +``` + +This example shows how to create a hierarchical design in Topwrap, including a hierarchy that contains IP cores as well as other nested hierarchies. + +Check out `project.yaml` to learn how the above design translates to a [design description file](description_files.md) + +:::{seealso} +For more information, see the section on [Hierarchies](description_files.md#hierarchies). +::: + +:::{tip} +Hierarchies are represented in the GUI by nodes with a green header. To display inner designs, click the `Edit subgraph` option from the context menu. + +To exit from the hierarchy subgraph, use the back arrow button on the top left. +To add a new hierarchy node, use the `New Graph Node` option in the node browser. +::: + +### Usage + +This example contains the [user repository](https://antmicro.github.io/topwrap/user_repositories.html) (`repo` directory) and a configuration file for Topwrap (`topwrap.yaml`). It can be loaded by entering the examples directory, and running: + +``` +topwrap gui -d project.yaml +``` + +## PWM + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/pwm) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_pwm.json +:dataflow: ../build/kpm_jsons/data_pwm.json +``` + +:::{tip} +The IP core in the center of the design (`axi_axil_adapter`) showcases how IP cores with overridable parameters are represented in the GUI. +::: + +This is an example of an AXI-mapped PWM IP core that can be generated with LiteX, connected to the ZYNQ Processing System. +The core uses the AXILite interface, so a `AXI -> AXILite` converter is needed. +You can access its registers starting from address `0x4000000` (the base address of `AXI_GP0` on ZYNQ). +The generated signal can be used in a FPGA or connected to a physical port on a board. + +:::{note} +To connect I/O signals to specific FPGA pins, you must use mappings in a constraints file. See `zynq.xdc` used in the setup and modify it accordingly. +::: + +### Usage + +Switch to the subdirectory with the example: + +```bash +cd examples/pwm +``` + +Install the required dependencies: + +```bash +pip install -r requirements.txt +``` + +:::{note} +In order to generate a bitstream, install [Vivado](https://www.xilinx.com/support/download.html) and add it to the `PATH`. +::: + +To generate bitstream for Zynq, use: + +```bash +make +``` + +To generate HDL sources without running Vivado, use: + +```bash +make generate +``` + +## HDMI + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/hdmi) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_hdmi.json +:dataflow: ../build/kpm_jsons/data_hdmi.json +``` + +This is an example of how to use Topwrap to build a complex and synthesizable design. + +### Usage + +Switch to the subdirectory with the example: + +```bash +cd examples/hdmi +``` + +Install the required dependencies: + +```bash +pip install -r requirements.txt +``` + +:::{note} +In order to generate a bitstream, install Vivado and add it to the `PATH`. +::: + +**Generate bitstream for desired target** + +Snickerdoodle Black: + +```bash +make snickerdoodle +``` + +Zynq Video Board: + +```bash +make zvb +``` + +To generate HDL sources without running Vivado, use: + +```bash +make generate +``` + +## SoC + +[Link to source](https://github.com/antmicro/topwrap/tree/main/examples/soc) + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_soc.json +:dataflow: ../build/kpm_jsons/data_soc.json +``` + +This is an example of how to use Topwrap to build a synthesizable SoC design. +The SoC contains a VexRiscv core, data and instruction memory, UART and an interconnect that ties all the components together. + +### Usage + +Switch to the subdirectory with the example: + +```bash +cd examples/soc +``` + +Install the required dependencies: + +```bash +sudo apt install git make g++ ninja-build gcc-riscv64-unknown-elf bsdextrautils +``` + +:::{note} +To run the simulation, you need: + +- verilator + +To create and load the bitstream, use: + +- [Vivado](https://www.xilinx.com/support/download.html) (preferably version 2020.2). +- openFPGALoader ([branch](https://github.com/antmicro/openFPGALoader/tree/antmicro-ddr-tester-boards)) +::: + +Generate HDL sources: + +```bash +make generate +``` + +Build and run the simulation: + +```bash +make sim +``` + +The expected waveform generated by the simulation is shown in `expected-waveform.svg`. + +Generate the bitstream: + +```bash +make bitstream +``` diff --git a/_sources/fusesoc.md.txt b/_sources/fusesoc.md.txt new file mode 100644 index 00000000..895d9483 --- /dev/null +++ b/_sources/fusesoc.md.txt @@ -0,0 +1,46 @@ +# Using FuseSoC for automation + +Topwrap uses the [FuseSoC](https://github.com/olofk/fusesoc) package manager and build tools for HDL code to automate project generation and the build process. When `topwrap build` is used with the `--fuse` option, it generates a [FuseSoC `.core` file](https://fusesoc.readthedocs.io/en/stable/user/overview.html#fusesoc-s-basic-building-block-cores) along with the top-level wrapper. + +## Default tool for synthesis, bitstream generation and programming the FPGA + +Topwrap assumes that you're using [Vivado](https://www.xilinx.com/support/download.html). You can change the default tool to something other than Vivado by modifying the generated `.core` file. + +## Additional build options + +To enable `.core` file generation, supply the `--fuse`/`-f` flag to `Topwrap build`: + +```bash +topwrap build -d design.yaml --fuse +``` + +If you have any additional directories with HDL sources or constraint files required for synthesis, you can specify them using the `--sources`/`-s` option. +Sources from these directories get appended to the `filesets.rtl.files` entry in the generated FuseSoC `.core` file. + +```bash +topwrap build -d design.yaml -f --sources ./srcs_v -s ./srcs_vhd +``` + +If you're targeting a specific FPGA chip, you can additionally specify its number using the `--part`/`-p` option. + +The supplied part number is passed to the FuseSoC `.core` file. It is included in the `targets.default.tools.vivado.part` entry, which is then supplied to [Vivado](https://www.xilinx.com/support/download.html) when you run FuseSoC and use the default target. This can be any part number available to your local Vivado installation. + +```bash +topwrap build -d design.yaml -f --part 'xc7z020clg400-3' +``` + +## `.core` file template + +A [template](https://github.com/antmicro/topwrap/blob/main/topwrap/templates/core.yaml.j2) for the `.core` file is bundled with Topwrap (`templates/core.yaml.j2`). + +By default, {class}`topwrap.fuse_helper.FuseSocBuilder` searches for the template file in working directory, meaning you must copy the template file into the project location. You may also need to edit the file to change the backend tool, add more targets, set additional `Hooks` and edit other parameters. + +## Synthesis + +After generating the `.core` file, you can run FuseSoC to generate the bitstream and program the FPGA: + +```bash +fusesoc --cores-root build run {design_name} +``` + +This requires having a suitable backend tool that is specified in the `.core` file under `targets.default.tools` available in your `PATH` (e.g. [Vivado](https://www.xilinx.com/support/download.html)). diff --git a/_sources/getting_started.md.txt b/_sources/getting_started.md.txt new file mode 100644 index 00000000..e20c4c27 --- /dev/null +++ b/_sources/getting_started.md.txt @@ -0,0 +1,199 @@ +# Getting started + +The purpose of this chapter is to provide a step by step guide on how to create a simple design with Topwrap. +All the necessary files needed to follow this guide are in the [examples/getting_started_demo](https://github.com/antmicro/topwrap/tree/main/examples/getting_started_demo) directory. + +:::{admonition} Important +:class: attention +If you haven't installed Topwrap yet, go to the [Installation chapter](#installation) and make sure to install the additional dependencies for `topwrap parse`. +::: + +## Design overview + +We are going to create a design that will be visually represented in an [interactive GUI](https://antmicro.github.io/topwrap/usage.md#gui), as seen below. + +```{kpm_iframe} +:spec: ../build/kpm_jsons/spec_getting_started_demo.json +:dataflow: ../build/kpm_jsons/data_getting_started_demo.json +``` + +It consists of two cores: `simple_core_1` and `simple_core_2` that connect to each other and to an external input/output. + +:::{note} +Metanodes are always utilized in designs to represent external input/output ports, module hierarchy ports or constant values. +They can be found in the "Metanode" section. +::: + +## Parsing Verilog files + +The first step when creating designs is to parse Verilog files into [IP core description YAMLs](https://antmicro.github.io/topwrap/usage.html#generating-ip-core-description-yamls) that are understood by Topwrap. + +The `verilogs` directory contains two Verilog files, `simple_core_1.v` and `simple_core_2.v`. + +To generate the IP core descriptions from these Verilog files run: + +```bash +topwrap parse verilogs/{simple_core_1.v,simple_core_2.v} +``` + +Topwrap will generate two files `simple_core_1.yaml` and `simple_core_2.yaml` that represent the corresponding Verilog files. + +## Building designs with Topwrap + +### Creating the design + +The generated IP core YAMLs can be loaded into the GUI, using: + +```bash +topwrap gui simple_core_1.yaml simple_core_2.yaml +``` + +The loaded IP cores can be found in the IPcore section: + +```{image} img/side_bar_kpm.png +``` + +With these IP cores and default metanodes, you can easily create designs by dragging and connecting cores. + +Let's make the design from the demo in the [introduction](#introduction). + +```{image} img/getting_started_project.png +``` + +:::{note} You can change the name of an individual node by right clicking on it and selecting `rename`. This is useful when creating multiple instances of the same IP core. +::: + +You can save the project in the [Design Description](description_files.md#design-description) format, which is used by Topwrap to represent the created design. + +To do this, select the graph button and select `Save file`. + +```{image} img/save_graph_kpm.png +``` + +:::{note} +The difference between `Save file` and `Save graph file` lies in which format is used for saving. + +`Save file` will save the design description in the YAML format which Topwrap uses. + +`Save graph file` will save the design in the [graph JSON format](https://antmicro.github.io/kenning-pipeline-manager/specification-format.html) which the GUI uses. You should only choose this one if you have a specific custom layout of the nodes in the design and you want to save it. +::: + +### Generating Verilog in the GUI + +You can generate Verilog from the design created in the previous section if you have the example running as described in the previous section. On the top bar, these four buttons are visible: + +```{image} img/kpm_buttons.png +``` + +1. Save/Load designs. +2. Toggle the node browser. +3. Validate the design. +4. Build the design. If it does not contain errors, a top module will be created in the directory where `topwrap gui` was run. + +## Command-line flow + +### Creating designs + +The manual creation of designs requires familiarity with the [Design Description](description_files.md#design-description) format. + +First, include all the IP core files needed in the `ips` section. + +```yaml +ips: + simple_core_1: + file: simple_core_1.yaml + simple_core_2: + file: simple_core_2.yaml +``` + +Here, the name of the node is declared, and the IP core `simple_core_1.yaml` is named `simple_core_1` in the GUI. + +Now we can start creating the design under the `design` section. The design doesn't have any parameters set, so we can skip this part and go straight into the `ports` section. In there, the connections between IP cores are defined. In the demo example, there is only one connection - between `simple_core_1` and `simple_core_2`. + +In our design, it is represented like this: + +```yaml +design: + ports: + simple_core_2: + a: + - simple_core_1 + - z +``` + +Notice that `input` is connected to `output`. +All that is left to do is to declare the external connections to metanodes, like this: + +```yaml +external: + ports: + in: + - rst + - clk + out: + - Output_y + - Output_c +``` + +Now connect them to IP cores. + +```yaml +design: + ports: + simple_core_1: + clk: clk + rst: rst + simple_core_2: + a: + - simple_core_1 + - z + c: Output_c + y: Output_y +``` + +The final design: + +```yaml +ips: + simple_core_1: + file: simple_core_1.yaml + simple_core_2: + file: simple_core_2.yaml +design: + ports: + simple_core_1: + clk: clk + rst: rst + simple_core_2: + a: + - simple_core_1 + - z + c: Output_c + y: Output_y +external: + ports: + in: + - rst + - clk + out: + - Output_y + - Output_c +``` + +### Generating Verilog top files + +:::{info} +Topwrap uses [Amaranth](https://github.com/amaranth-lang/amaranth) for generating Verilog top files. +::: + +To generate the top file, use `topwrap build` and provide the design. To do this, ensure you are in the `examples/getting_started_demo` directory and run: + +```bash +topwrap build --design {design_name.yaml} +``` + +Where `{design_name.yaml}` is the design saved at the end of the previous section. This will generate a `top.v` Verilog top wrapper in the specified build directory (`./build` by default). + +### Synthesis & FuseSoC + +You can additionally generate a [FuseSoC core](#fusesoc) file during `topwrap build` to automate further synthesis and implementation by simply adding the `-f` (`--fuse`) option. diff --git a/_sources/index.md.txt b/_sources/index.md.txt new file mode 100644 index 00000000..f38c0b05 --- /dev/null +++ b/_sources/index.md.txt @@ -0,0 +1,38 @@ +# Welcome to Topwrap! + +```{toctree} +:caption: Documentation +:maxdepth: 2 +introduction +installation +getting_started +advanced_options +examples +description_files +config +user_repositories +interconnect_gen +fusesoc +``` + +```{toctree} +:caption: Developer's Guide +:maxdepth: 2 +developers_guide/setup +developers_guide/style +developers_guide/tests +developers_guide/wrapper +developers_guide/ipwrapper +developers_guide/ipconnect +developers_guide/elaboratable_wrapper +developers_guide/wrapper_port +developers_guide/fusesocbuilder +developers_guide/interface +developers_guide/config +developers_guide/parsing +developers_guide/examples +developers_guide/future_enhancements +developers_guide/inline_kpm_howto +developers_guide/ir-examples +developers_guide/ipxact-design +``` diff --git a/_sources/installation.md.txt b/_sources/installation.md.txt new file mode 100644 index 00000000..1762d005 --- /dev/null +++ b/_sources/installation.md.txt @@ -0,0 +1,45 @@ +# Installing Topwrap + +## 1. Install required system packages + +:::{warning} +The script below requires root privileges as it directly interfaces with your filesystem and package manager. + +Running scripts and executables as root without first verifying their contents can pose significant security risks. Always ensure their integrity and source before execution. +::: + +```bash +curl -fO https://raw.githubusercontent.com/antmicro/topwrap/refs/heads/main/install-deps.sh +chmod +x ./install-deps.sh +sudo ./install-deps.sh +``` + +## 2. Install the Topwrap user package + +**Recommended**: Use [pipx](https://pipx.pypa.io/stable/) to directly install Topwrap as a user package: + +```bash +pipx install "topwrap[parse]@git+https://github.com/antmicro/topwrap" +``` + +If you can't use pipx, you can use regular pip instead. It may be necessary to do it in a Python virtual environment, such as [venv](https://docs.python.org/3/library/venv.html): + +```bash +python3 -m venv venv +source venv/bin/activate +pip install "topwrap[parse]@git+https://github.com/antmicro/topwrap" +``` + +## 3. Verify the installation + +Make sure that Topwrap was installed correctly and is available in your shell: + +```bash +topwrap --help +``` + +This should print out the help string with Topwrap subcommands listed out. + +:::{seealso} +If you want to contribute to the project, check the [Developer's setup guide](developers_guide/setup.md) for more information. +::: diff --git a/_sources/interconnect_gen.md.txt b/_sources/interconnect_gen.md.txt new file mode 100644 index 00000000..52238173 --- /dev/null +++ b/_sources/interconnect_gen.md.txt @@ -0,0 +1,101 @@ +# Interconnect generation + +Interconnects enable the connection of multiple interfaces in a many-to-many topology, as opposed to the traditional one-to-one manager-subordinate connection. This approach facilitates data transmission between multiple IP cores over a single interface, with the interconnect serving as an middle-man. + +:::{warning} +Interconnect generation is an experimental feature. + +Currently, creating and showing them is not possible in the Topwrap GUI. +::: + +Each manager can communicate with any subordinate connected to the interconnect. Every connected subordinate must be assigned a predefined address range, allowing the interconnect to route data based on the address specified by the manager. + +A typical interconnect topology diagram is shown below. + + +```{mermaid} +:alt: Interconnect topology diagram + +%%{init: {'theme':'neutral'}}%% + +flowchart TB; + +m1[Manager 1] --> int[/

Interconnect

\] +m2[Manager 2] --> int +mN[Manager 3, 4, 5 ...] --> int + +%%mN@{ shape: st-rect } + +int --> s1[Subordinate 1

Address: 0x0A

] +int --> s2[Subordinate 2

Address: 0x1A000

] +int --> sN[Subordinate 3, 4, 5...

Address: 0x....

] + +%%sN@{ shape: st-rect } +``` + +In order to generate an interconnect, you have to describe its configuration in the [Design description](description_files.md#design-description) under the `interconnects` key in the following format, as specified below: + +## Format + +The `interconnects` key must be a direct descendant of the `design` key in the [Design description](description_files.md#design-description). + +```yaml +interconnects: + {interconnect1_name}: + # Specify clock and reset to drive the interconnect with + clock: [{ip_name, clk_port_name}] + reset: [{ip_name, rst_port_name}] + # Alternatively you can specify a connection to an external port of this design: + # clock: ext_clk_port_name + # reset: ext_rst_port_name + + # Specify the interconnect type. + # See the "Supported interconnect types" section below for available types + # and their characteristics + type: {interconnect_type} + + # custom parameter values for the specific interconnect type + parameters: + {parameters_name1}: parameters_value1 + ... + + # specify managers and their interfaces connected to the bus + managers: + {manager1_name}: + - {manager1_interface1_name} + ... + ... + + # specify subordinates, their interfaces connected to the bus and their bus parameters + subordinates: + {subordinate1_name}: + {subordinate1_interface1_name}: + # requests in address range [address, address+size) will be routed to this interface + address: {start_address} + size: {range_size} + ... + ... + ... +``` + +## Supported interconnect types + +### `wishbone_roundrobin` + +This interconnect only supports Wishbone interfaces for managers and subordinates. +It supports multiple managers, but only one of them can drive the bus at a time (i.e. only one transaction can be happening on the bus at any given moment). +A round-robin arbiter decides which manager can currently drive the bus. + +#### Parameters + +- `addr_width` - bit width of the address line (addresses access `data_width`-sized chunks) +- `data_width` - bit width of the data line +- `granularity` - access granularity - the smallest unit of data transfer that the interconnect can transfer. Must be: 8, 16, 32, 64 +- `features` - optional, list of optional wishbone signals, can contain: `err`, `rty`, `stall`, `lock`, `cti`, `bte` + +#### Known limitations + +The currently known limitations are: + +- only word-sized addressing is supported (in other words - consecutive addresses can only access word-sized chunks of data) +- crossing clock domains, down-converting (initiating multiple transactions on a narrow bus per one transaction on a wider bus) and up-converting are not supported diff --git a/_sources/introduction.md.txt b/_sources/introduction.md.txt new file mode 100644 index 00000000..281edaa7 --- /dev/null +++ b/_sources/introduction.md.txt @@ -0,0 +1,9 @@ +# Introduction to Topwrap + +![Topwrap logo](img/logo.png) + +Topwrap leverages modularity to enable the reuse of design blocks across different projects, facilitating the transition to automated logic design. It provides a standardized approach for organizing blocks into various configurations, making top-level designs easier to parse and process automatically. + +As a tool, Topwrap makes it [straightforward to build](getting_started.md) complex and [synthesizable designs](#examples) by generating a design file. The combination of [GUI and CLI-based](getting_started.md#generating-verilog-in-the-gui) configuration options provides for fine-tuning possibilities. Packaging multiple files is accomplished by including them in a [custom user repository](user_repositories.md), and an internal API enables repository creation using Python. + +![GUI example](img/soc-diagram-anim.gif) diff --git a/_sources/user_repositories.md.txt b/_sources/user_repositories.md.txt new file mode 100644 index 00000000..e68b858c --- /dev/null +++ b/_sources/user_repositories.md.txt @@ -0,0 +1,49 @@ +# Constructing, configuring and loading repositories + +By using Topwrap repositories, you can package and load multiple IP cores along with custom interfaces. +You can specify the repositories to be loaded each time Topwrap runs by listing them in a [configuration file](config.md#configuration-file-location). + +Topwrap provides an internal API for constructing repositories in [Python](https://github.com/antmicro/topwrap/blob/main/topwrap/repo/user_repo.py). + +The structure of the repository is as follows: + +``` +path_to_repository/ +|───cores +| |───ipcore1 +| | |───srcs +| | | | file1.v +| | | file1.yaml +| | +| |───ipcore2 +| |───srcs +| | | file2.v +| | file2.yaml +| +|───interfaces(Optional) + | iface1.yaml + | iface2.yaml +``` + +Each repository has two main directories: `cores` and `interfaces`. +Inside `cores`, each core has its own directory with a description file and the subdirectory `srcs` where Verilog/VHDL files are stored. +The `interfaces` directory is optional, and contains [interface description files](description_files.md#interface-description-files). + +A sample user repository can be found in [examples/user_repository](https://github.com/antmicro/topwrap/tree/main/examples/user_repository). + +## Using the open source IP cores library with Topwrap + +Topwrap comes with built-in support for an extensive library of open source IP cores available through the [FuseSoC](https://github.com/olofk/fusesoc) package manager, which also serves as a build system. This library offers a wide range of reusable IP cores for various applications, enabling easy integration into Topwrap projects. Topwrap simplifies the process of accessing, downloading, and packaging these IP cores, making them readily available for local use in your designs. + +To include an IP core from the open source library, there are two methods: + +1. **Select the Desired Core**: Browse the available cores ([cores_export artifact](https://github.com/antmicro/topwrap/releases/tag/latest)). +2. **Download and build all available cores**: Use Topwrap's package management command: + +```bash + nox -s package_cores +``` + +This will download and parse all the cores from Fusesoc into `build/fusesoc_workspace/build/export/cores/`, making them accessible from within Topwrap. + +You can learn more about Topwrap integration with FuseSoC [here](#fusesoc) diff --git a/_static/fonts/0053ba6958e79f26751eabb555bd73d0.woff2 b/_static/fonts/0053ba6958e79f26751eabb555bd73d0.woff2 new file mode 100644 index 00000000..ab301009 Binary files /dev/null and b/_static/fonts/0053ba6958e79f26751eabb555bd73d0.woff2 differ diff --git a/_static/fonts/029e176ad602329b4434892101db9cf3.woff2 b/_static/fonts/029e176ad602329b4434892101db9cf3.woff2 new file mode 100644 index 00000000..09e03c95 Binary files /dev/null and b/_static/fonts/029e176ad602329b4434892101db9cf3.woff2 differ diff --git a/_static/fonts/07ff82964967feebb9c96288e0e0df05.woff2 b/_static/fonts/07ff82964967feebb9c96288e0e0df05.woff2 new file mode 100644 index 00000000..d338178b Binary files /dev/null and b/_static/fonts/07ff82964967feebb9c96288e0e0df05.woff2 differ diff --git a/_static/fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2 b/_static/fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2 new file mode 100644 index 00000000..6b0b4afe Binary files /dev/null and b/_static/fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2 differ diff --git a/_static/fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2 b/_static/fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2 new file mode 100644 index 00000000..f477fda0 Binary files /dev/null and b/_static/fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2 differ diff --git a/_static/fonts/0b68e8634c96265eb32a0c769416b5b0.woff2 b/_static/fonts/0b68e8634c96265eb32a0c769416b5b0.woff2 new file mode 100644 index 00000000..9a378af0 Binary files /dev/null and b/_static/fonts/0b68e8634c96265eb32a0c769416b5b0.woff2 differ diff --git a/_static/fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2 b/_static/fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2 new file mode 100644 index 00000000..48a8c10f Binary files /dev/null and b/_static/fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2 differ diff --git a/_static/fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2 b/_static/fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2 new file mode 100644 index 00000000..6aa28456 Binary files /dev/null and b/_static/fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2 differ diff --git a/_static/fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf b/_static/fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf new file mode 100644 index 00000000..fbb56251 Binary files /dev/null and b/_static/fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf differ diff --git a/_static/fonts/0ec3cc19652785204ea2e322330f0f1b.woff2 b/_static/fonts/0ec3cc19652785204ea2e322330f0f1b.woff2 new file mode 100644 index 00000000..5b0171c1 Binary files /dev/null and b/_static/fonts/0ec3cc19652785204ea2e322330f0f1b.woff2 differ diff --git a/_static/fonts/0f303f31706d39866cced9dcc17b61fb.woff2 b/_static/fonts/0f303f31706d39866cced9dcc17b61fb.woff2 new file mode 100644 index 00000000..71c9bb7d Binary files /dev/null and b/_static/fonts/0f303f31706d39866cced9dcc17b61fb.woff2 differ diff --git a/_static/fonts/101522bafe9c61c68698ecc784607772.woff2 b/_static/fonts/101522bafe9c61c68698ecc784607772.woff2 new file mode 100644 index 00000000..186d9986 Binary files /dev/null and b/_static/fonts/101522bafe9c61c68698ecc784607772.woff2 differ diff --git a/_static/fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2 b/_static/fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2 new file mode 100644 index 00000000..02a27ead Binary files /dev/null and b/_static/fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2 differ diff --git a/_static/fonts/1181a8e619707033241139715eca64c6.woff2 b/_static/fonts/1181a8e619707033241139715eca64c6.woff2 new file mode 100644 index 00000000..59ed385e Binary files /dev/null and b/_static/fonts/1181a8e619707033241139715eca64c6.woff2 differ diff --git a/_static/fonts/122802d03aed4bf8cd6a03997a97aca4.woff2 b/_static/fonts/122802d03aed4bf8cd6a03997a97aca4.woff2 new file mode 100644 index 00000000..40b9fda9 Binary files /dev/null and b/_static/fonts/122802d03aed4bf8cd6a03997a97aca4.woff2 differ diff --git a/_static/fonts/1383417807f7965daaf94e7c497dcddb.woff2 b/_static/fonts/1383417807f7965daaf94e7c497dcddb.woff2 new file mode 100644 index 00000000..d953103e Binary files /dev/null and b/_static/fonts/1383417807f7965daaf94e7c497dcddb.woff2 differ diff --git a/_static/fonts/144860ed1e48e186f08997e6388a9c3f.woff2 b/_static/fonts/144860ed1e48e186f08997e6388a9c3f.woff2 new file mode 100644 index 00000000..508baefb Binary files /dev/null and b/_static/fonts/144860ed1e48e186f08997e6388a9c3f.woff2 differ diff --git a/_static/fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2 b/_static/fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2 new file mode 100644 index 00000000..bdad3dfb Binary files /dev/null and b/_static/fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2 differ diff --git a/_static/fonts/1512b579343c6b61c7523cdd838d8328.ttf b/_static/fonts/1512b579343c6b61c7523cdd838d8328.ttf new file mode 100644 index 00000000..1a6895d1 Binary files /dev/null and b/_static/fonts/1512b579343c6b61c7523cdd838d8328.ttf differ diff --git a/_static/fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2 b/_static/fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2 new file mode 100644 index 00000000..cb9bfa71 Binary files /dev/null and b/_static/fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2 differ diff --git a/_static/fonts/1f1481679a64a39f3427547aa1b13f0f.woff2 b/_static/fonts/1f1481679a64a39f3427547aa1b13f0f.woff2 new file mode 100644 index 00000000..6d458ad0 Binary files /dev/null and b/_static/fonts/1f1481679a64a39f3427547aa1b13f0f.woff2 differ diff --git a/_static/fonts/2096d27efc16cbdd79183bf295c8ebde.ttf b/_static/fonts/2096d27efc16cbdd79183bf295c8ebde.ttf new file mode 100644 index 00000000..2cf147e1 Binary files /dev/null and b/_static/fonts/2096d27efc16cbdd79183bf295c8ebde.ttf differ diff --git a/_static/fonts/20dc200cc43ab904876fb0c1697ebe39.woff2 b/_static/fonts/20dc200cc43ab904876fb0c1697ebe39.woff2 new file mode 100644 index 00000000..87711c04 Binary files /dev/null and b/_static/fonts/20dc200cc43ab904876fb0c1697ebe39.woff2 differ diff --git a/_static/fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2 b/_static/fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2 new file mode 100644 index 00000000..bc7e1b2c Binary files /dev/null and b/_static/fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2 differ diff --git a/_static/fonts/21953b998bab09c1f60c599caee56378.woff2 b/_static/fonts/21953b998bab09c1f60c599caee56378.woff2 new file mode 100644 index 00000000..d4ec1890 Binary files /dev/null and b/_static/fonts/21953b998bab09c1f60c599caee56378.woff2 differ diff --git a/_static/fonts/22aadc77cafa07b2db9ed560d0320616.woff2 b/_static/fonts/22aadc77cafa07b2db9ed560d0320616.woff2 new file mode 100644 index 00000000..2950a77c Binary files /dev/null and b/_static/fonts/22aadc77cafa07b2db9ed560d0320616.woff2 differ diff --git a/_static/fonts/2325b97b584755067ea4f7f56ee05430.woff2 b/_static/fonts/2325b97b584755067ea4f7f56ee05430.woff2 new file mode 100644 index 00000000..51c88fde Binary files /dev/null and b/_static/fonts/2325b97b584755067ea4f7f56ee05430.woff2 differ diff --git a/_static/fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2 b/_static/fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2 new file mode 100644 index 00000000..81848e2c Binary files /dev/null and b/_static/fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2 differ diff --git a/_static/fonts/255cf41e0317d95e3992683a76ef28a8.woff2 b/_static/fonts/255cf41e0317d95e3992683a76ef28a8.woff2 new file mode 100644 index 00000000..7e931875 Binary files /dev/null and b/_static/fonts/255cf41e0317d95e3992683a76ef28a8.woff2 differ diff --git a/_static/fonts/25c52b9af13f0d1b10719f5289e8c803.woff2 b/_static/fonts/25c52b9af13f0d1b10719f5289e8c803.woff2 new file mode 100644 index 00000000..544eddca Binary files /dev/null and b/_static/fonts/25c52b9af13f0d1b10719f5289e8c803.woff2 differ diff --git a/_static/fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2 b/_static/fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2 new file mode 100644 index 00000000..cf61b889 Binary files /dev/null and b/_static/fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2 differ diff --git a/_static/fonts/28e6b81b1bc1964707edd4179e4268f5.ttf b/_static/fonts/28e6b81b1bc1964707edd4179e4268f5.ttf new file mode 100644 index 00000000..d7455040 Binary files /dev/null and b/_static/fonts/28e6b81b1bc1964707edd4179e4268f5.ttf differ diff --git a/_static/fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2 b/_static/fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2 new file mode 100644 index 00000000..c8091bc9 Binary files /dev/null and b/_static/fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2 differ diff --git a/_static/fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf b/_static/fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf new file mode 100644 index 00000000..64fca947 Binary files /dev/null and b/_static/fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf differ diff --git a/_static/fonts/2c0f74be498d2da814c0a84dd6833f70.woff2 b/_static/fonts/2c0f74be498d2da814c0a84dd6833f70.woff2 new file mode 100644 index 00000000..8c63b51b Binary files /dev/null and b/_static/fonts/2c0f74be498d2da814c0a84dd6833f70.woff2 differ diff --git a/_static/fonts/2e10480d4154762bc7c8fbb40877e104.woff2 b/_static/fonts/2e10480d4154762bc7c8fbb40877e104.woff2 new file mode 100644 index 00000000..1f579aa4 Binary files /dev/null and b/_static/fonts/2e10480d4154762bc7c8fbb40877e104.woff2 differ diff --git a/_static/fonts/2ea7a97b7c976b121112a088eb398561.woff2 b/_static/fonts/2ea7a97b7c976b121112a088eb398561.woff2 new file mode 100644 index 00000000..e0d3c435 Binary files /dev/null and b/_static/fonts/2ea7a97b7c976b121112a088eb398561.woff2 differ diff --git a/_static/fonts/2f5c32f094829c0278bce28fe2bbe074.ttf b/_static/fonts/2f5c32f094829c0278bce28fe2bbe074.ttf new file mode 100644 index 00000000..ea5c8fe0 Binary files /dev/null and b/_static/fonts/2f5c32f094829c0278bce28fe2bbe074.ttf differ diff --git a/_static/fonts/2f7c3c315334a99574ee4ceb21af654d.woff2 b/_static/fonts/2f7c3c315334a99574ee4ceb21af654d.woff2 new file mode 100644 index 00000000..4b7a373a Binary files /dev/null and b/_static/fonts/2f7c3c315334a99574ee4ceb21af654d.woff2 differ diff --git a/_static/fonts/302b0425bf5ea66f37a822a61d723adc.ttf b/_static/fonts/302b0425bf5ea66f37a822a61d723adc.ttf new file mode 100644 index 00000000..d25425d8 Binary files /dev/null and b/_static/fonts/302b0425bf5ea66f37a822a61d723adc.ttf differ diff --git a/_static/fonts/3177dacffeac1eb4102852811ae4a2c7.woff2 b/_static/fonts/3177dacffeac1eb4102852811ae4a2c7.woff2 new file mode 100644 index 00000000..c5776a5e Binary files /dev/null and b/_static/fonts/3177dacffeac1eb4102852811ae4a2c7.woff2 differ diff --git a/_static/fonts/3254c528e2ab56454a9f22191035c5fe.ttf b/_static/fonts/3254c528e2ab56454a9f22191035c5fe.ttf new file mode 100644 index 00000000..9c48d222 Binary files /dev/null and b/_static/fonts/3254c528e2ab56454a9f22191035c5fe.ttf differ diff --git a/_static/fonts/32c8a74ac0816253d69a7cc68a60986d.woff2 b/_static/fonts/32c8a74ac0816253d69a7cc68a60986d.woff2 new file mode 100644 index 00000000..53d081f3 Binary files /dev/null and b/_static/fonts/32c8a74ac0816253d69a7cc68a60986d.woff2 differ diff --git a/_static/fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2 b/_static/fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2 new file mode 100644 index 00000000..45eae25c Binary files /dev/null and b/_static/fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2 differ diff --git a/_static/fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2 b/_static/fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2 new file mode 100644 index 00000000..f3c5f6ac Binary files /dev/null and b/_static/fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2 differ diff --git a/_static/fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2 b/_static/fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2 new file mode 100644 index 00000000..cb5834ff Binary files /dev/null and b/_static/fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2 differ diff --git a/_static/fonts/38f3ee1f96b758f95672c632d8759594.ttf b/_static/fonts/38f3ee1f96b758f95672c632d8759594.ttf new file mode 100644 index 00000000..7c38f724 Binary files /dev/null and b/_static/fonts/38f3ee1f96b758f95672c632d8759594.ttf differ diff --git a/_static/fonts/392ff374142585f7b886ee1fe66e686e.woff2 b/_static/fonts/392ff374142585f7b886ee1fe66e686e.woff2 new file mode 100644 index 00000000..b1dc168f Binary files /dev/null and b/_static/fonts/392ff374142585f7b886ee1fe66e686e.woff2 differ diff --git a/_static/fonts/3a38c967413f7bce36d3baefc321aade.woff2 b/_static/fonts/3a38c967413f7bce36d3baefc321aade.woff2 new file mode 100644 index 00000000..53b8d0dc Binary files /dev/null and b/_static/fonts/3a38c967413f7bce36d3baefc321aade.woff2 differ diff --git a/_static/fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2 b/_static/fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2 new file mode 100644 index 00000000..8a8de615 Binary files /dev/null and b/_static/fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2 differ diff --git a/_static/fonts/3c505383d37d2078648e37868bbd1fad.woff2 b/_static/fonts/3c505383d37d2078648e37868bbd1fad.woff2 new file mode 100644 index 00000000..63995528 Binary files /dev/null and b/_static/fonts/3c505383d37d2078648e37868bbd1fad.woff2 differ diff --git a/_static/fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2 b/_static/fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2 new file mode 100644 index 00000000..59cab0f1 Binary files /dev/null and b/_static/fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2 differ diff --git a/_static/fonts/3f1918538864f9681d47a4538d48289c.woff2 b/_static/fonts/3f1918538864f9681d47a4538d48289c.woff2 new file mode 100644 index 00000000..99b1da1b Binary files /dev/null and b/_static/fonts/3f1918538864f9681d47a4538d48289c.woff2 differ diff --git a/_static/fonts/4039566f251699c4b421ed1a38a59b24.woff2 b/_static/fonts/4039566f251699c4b421ed1a38a59b24.woff2 new file mode 100644 index 00000000..45f222cc Binary files /dev/null and b/_static/fonts/4039566f251699c4b421ed1a38a59b24.woff2 differ diff --git a/_static/fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2 b/_static/fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2 new file mode 100644 index 00000000..8ab91719 Binary files /dev/null and b/_static/fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2 differ diff --git a/_static/fonts/43358c04243de546caddd0898dbf0757.woff2 b/_static/fonts/43358c04243de546caddd0898dbf0757.woff2 new file mode 100644 index 00000000..1f384187 Binary files /dev/null and b/_static/fonts/43358c04243de546caddd0898dbf0757.woff2 differ diff --git a/_static/fonts/435e4b7f9f250d9d9243d4754799fc96.woff2 b/_static/fonts/435e4b7f9f250d9d9243d4754799fc96.woff2 new file mode 100644 index 00000000..0f6e60b8 Binary files /dev/null and b/_static/fonts/435e4b7f9f250d9d9243d4754799fc96.woff2 differ diff --git a/_static/fonts/437939342255944b82a49f916404c5fc.woff2 b/_static/fonts/437939342255944b82a49f916404c5fc.woff2 new file mode 100644 index 00000000..0bb27069 Binary files /dev/null and b/_static/fonts/437939342255944b82a49f916404c5fc.woff2 differ diff --git a/_static/fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2 b/_static/fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2 new file mode 100644 index 00000000..b289f002 Binary files /dev/null and b/_static/fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2 differ diff --git a/_static/fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2 b/_static/fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2 new file mode 100644 index 00000000..9d7fb7f8 Binary files /dev/null and b/_static/fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2 differ diff --git a/_static/fonts/495d38d4b9741e8aa4204002414069e2.woff2 b/_static/fonts/495d38d4b9741e8aa4204002414069e2.woff2 new file mode 100644 index 00000000..47da3629 Binary files /dev/null and b/_static/fonts/495d38d4b9741e8aa4204002414069e2.woff2 differ diff --git a/_static/fonts/4c815fdc869f885520f7c8eae6730edf.woff2 b/_static/fonts/4c815fdc869f885520f7c8eae6730edf.woff2 new file mode 100644 index 00000000..997a45c6 Binary files /dev/null and b/_static/fonts/4c815fdc869f885520f7c8eae6730edf.woff2 differ diff --git a/_static/fonts/4ec57f2a80b91090971b83970230ca09.woff2 b/_static/fonts/4ec57f2a80b91090971b83970230ca09.woff2 new file mode 100644 index 00000000..3c450111 Binary files /dev/null and b/_static/fonts/4ec57f2a80b91090971b83970230ca09.woff2 differ diff --git a/_static/fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2 b/_static/fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2 new file mode 100644 index 00000000..fb22fec2 Binary files /dev/null and b/_static/fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2 differ diff --git a/_static/fonts/4f93c2808e3b69e525c118074e5de31f.woff2 b/_static/fonts/4f93c2808e3b69e525c118074e5de31f.woff2 new file mode 100644 index 00000000..de10a3cf Binary files /dev/null and b/_static/fonts/4f93c2808e3b69e525c118074e5de31f.woff2 differ diff --git a/_static/fonts/50aacf068f685be0dd903a91d5bab7d8.woff2 b/_static/fonts/50aacf068f685be0dd903a91d5bab7d8.woff2 new file mode 100644 index 00000000..2e71425c Binary files /dev/null and b/_static/fonts/50aacf068f685be0dd903a91d5bab7d8.woff2 differ diff --git a/_static/fonts/51f3f41805329fb8341beb56ded833ea.woff2 b/_static/fonts/51f3f41805329fb8341beb56ded833ea.woff2 new file mode 100644 index 00000000..c0099878 Binary files /dev/null and b/_static/fonts/51f3f41805329fb8341beb56ded833ea.woff2 differ diff --git a/_static/fonts/52f28cb4d065b4adfa78df4f9559c639.woff2 b/_static/fonts/52f28cb4d065b4adfa78df4f9559c639.woff2 new file mode 100644 index 00000000..a0f44185 Binary files /dev/null and b/_static/fonts/52f28cb4d065b4adfa78df4f9559c639.woff2 differ diff --git a/_static/fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2 b/_static/fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2 new file mode 100644 index 00000000..3df1d8a0 Binary files /dev/null and b/_static/fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2 differ diff --git a/_static/fonts/5989ef3a21d7f252337ab3326f78bde7.woff2 b/_static/fonts/5989ef3a21d7f252337ab3326f78bde7.woff2 new file mode 100644 index 00000000..100e81a6 Binary files /dev/null and b/_static/fonts/5989ef3a21d7f252337ab3326f78bde7.woff2 differ diff --git a/_static/fonts/5b6377da4c959db6d4b22738a27f1bee.woff2 b/_static/fonts/5b6377da4c959db6d4b22738a27f1bee.woff2 new file mode 100644 index 00000000..a0d68e2b Binary files /dev/null and b/_static/fonts/5b6377da4c959db6d4b22738a27f1bee.woff2 differ diff --git a/_static/fonts/5ce47d5195e59af38114d0b70217baf2.woff2 b/_static/fonts/5ce47d5195e59af38114d0b70217baf2.woff2 new file mode 100644 index 00000000..f496f9e2 Binary files /dev/null and b/_static/fonts/5ce47d5195e59af38114d0b70217baf2.woff2 differ diff --git a/_static/fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2 b/_static/fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2 new file mode 100644 index 00000000..dd5a4a2e Binary files /dev/null and b/_static/fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2 differ diff --git a/_static/fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2 b/_static/fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2 new file mode 100644 index 00000000..c2862d73 Binary files /dev/null and b/_static/fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2 differ diff --git a/_static/fonts/60eb682678bbea5e8ad71f66f2f65536.woff2 b/_static/fonts/60eb682678bbea5e8ad71f66f2f65536.woff2 new file mode 100644 index 00000000..6a258ac6 Binary files /dev/null and b/_static/fonts/60eb682678bbea5e8ad71f66f2f65536.woff2 differ diff --git a/_static/fonts/63111d307c01b52ffccf7b0319cb7917.woff2 b/_static/fonts/63111d307c01b52ffccf7b0319cb7917.woff2 new file mode 100644 index 00000000..fecc1855 Binary files /dev/null and b/_static/fonts/63111d307c01b52ffccf7b0319cb7917.woff2 differ diff --git a/_static/fonts/638764dc2513deb09c55fc025f6dd36c.woff2 b/_static/fonts/638764dc2513deb09c55fc025f6dd36c.woff2 new file mode 100644 index 00000000..122ac2c7 Binary files /dev/null and b/_static/fonts/638764dc2513deb09c55fc025f6dd36c.woff2 differ diff --git a/_static/fonts/63f4b74ebf127dbeb033126ea988f54e.woff2 b/_static/fonts/63f4b74ebf127dbeb033126ea988f54e.woff2 new file mode 100644 index 00000000..00a4a4be Binary files /dev/null and b/_static/fonts/63f4b74ebf127dbeb033126ea988f54e.woff2 differ diff --git a/_static/fonts/64a6b4e954cf84685cbf8de77eb47344.woff2 b/_static/fonts/64a6b4e954cf84685cbf8de77eb47344.woff2 new file mode 100644 index 00000000..edfc6cd0 Binary files /dev/null and b/_static/fonts/64a6b4e954cf84685cbf8de77eb47344.woff2 differ diff --git a/_static/fonts/661d4b208656c006e7aab58acf778485.woff2 b/_static/fonts/661d4b208656c006e7aab58acf778485.woff2 new file mode 100644 index 00000000..ae1933f3 Binary files /dev/null and b/_static/fonts/661d4b208656c006e7aab58acf778485.woff2 differ diff --git a/_static/fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2 b/_static/fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2 new file mode 100644 index 00000000..ece005fc Binary files /dev/null and b/_static/fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2 differ diff --git a/_static/fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2 b/_static/fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2 new file mode 100644 index 00000000..1bb7737c Binary files /dev/null and b/_static/fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2 differ diff --git a/_static/fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf b/_static/fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf new file mode 100644 index 00000000..3e69acbe Binary files /dev/null and b/_static/fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf differ diff --git a/_static/fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf b/_static/fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf new file mode 100644 index 00000000..563f4493 Binary files /dev/null and b/_static/fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf differ diff --git a/_static/fonts/6be97ca17228a69c406231d89c003194.woff2 b/_static/fonts/6be97ca17228a69c406231d89c003194.woff2 new file mode 100644 index 00000000..a56a6ede Binary files /dev/null and b/_static/fonts/6be97ca17228a69c406231d89c003194.woff2 differ diff --git a/_static/fonts/6de03a64aa8100032abc6e836b3ed803.ttf b/_static/fonts/6de03a64aa8100032abc6e836b3ed803.ttf new file mode 100644 index 00000000..604934aa Binary files /dev/null and b/_static/fonts/6de03a64aa8100032abc6e836b3ed803.ttf differ diff --git a/_static/fonts/6deb20301c65a96db17c433ad0cf8158.woff2 b/_static/fonts/6deb20301c65a96db17c433ad0cf8158.woff2 new file mode 100644 index 00000000..cbe564b0 Binary files /dev/null and b/_static/fonts/6deb20301c65a96db17c433ad0cf8158.woff2 differ diff --git a/_static/fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2 b/_static/fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2 new file mode 100644 index 00000000..92fe38dd Binary files /dev/null and b/_static/fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2 differ diff --git a/_static/fonts/713780d8b30bda5583052ea847cdcb4f.woff2 b/_static/fonts/713780d8b30bda5583052ea847cdcb4f.woff2 new file mode 100644 index 00000000..0933dfe8 Binary files /dev/null and b/_static/fonts/713780d8b30bda5583052ea847cdcb4f.woff2 differ diff --git a/_static/fonts/71e06579279fba7436d58a1c49288909.ttf b/_static/fonts/71e06579279fba7436d58a1c49288909.ttf new file mode 100644 index 00000000..454e5d05 Binary files /dev/null and b/_static/fonts/71e06579279fba7436d58a1c49288909.ttf differ diff --git a/_static/fonts/765bd4a97597a4d7781193793477a6cd.ttf b/_static/fonts/765bd4a97597a4d7781193793477a6cd.ttf new file mode 100644 index 00000000..10f8720c Binary files /dev/null and b/_static/fonts/765bd4a97597a4d7781193793477a6cd.ttf differ diff --git a/_static/fonts/76945c7494c20515bb45d1dedab8f706.woff2 b/_static/fonts/76945c7494c20515bb45d1dedab8f706.woff2 new file mode 100644 index 00000000..943c5a0a Binary files /dev/null and b/_static/fonts/76945c7494c20515bb45d1dedab8f706.woff2 differ diff --git a/_static/fonts/76da333ab59c6d625cabfb0768f82b4a.woff2 b/_static/fonts/76da333ab59c6d625cabfb0768f82b4a.woff2 new file mode 100644 index 00000000..9eda94a2 Binary files /dev/null and b/_static/fonts/76da333ab59c6d625cabfb0768f82b4a.woff2 differ diff --git a/_static/fonts/770518db51bed1e082feecc532cfcbf8.woff2 b/_static/fonts/770518db51bed1e082feecc532cfcbf8.woff2 new file mode 100644 index 00000000..c0f0f73b Binary files /dev/null and b/_static/fonts/770518db51bed1e082feecc532cfcbf8.woff2 differ diff --git a/_static/fonts/77b24796a3d4ab521f66765651875338.woff2 b/_static/fonts/77b24796a3d4ab521f66765651875338.woff2 new file mode 100644 index 00000000..6284d2e3 Binary files /dev/null and b/_static/fonts/77b24796a3d4ab521f66765651875338.woff2 differ diff --git a/_static/fonts/77ff81100e5a1db3d925f713660700ad.woff2 b/_static/fonts/77ff81100e5a1db3d925f713660700ad.woff2 new file mode 100644 index 00000000..dd0851d5 Binary files /dev/null and b/_static/fonts/77ff81100e5a1db3d925f713660700ad.woff2 differ diff --git a/_static/fonts/78a9265759e7b861a1639a36f4c01d04.woff2 b/_static/fonts/78a9265759e7b861a1639a36f4c01d04.woff2 new file mode 100644 index 00000000..be81ddf5 Binary files /dev/null and b/_static/fonts/78a9265759e7b861a1639a36f4c01d04.woff2 differ diff --git a/_static/fonts/7af61b2367eba2b1852e837c46a75696.woff2 b/_static/fonts/7af61b2367eba2b1852e837c46a75696.woff2 new file mode 100644 index 00000000..e0d41239 Binary files /dev/null and b/_static/fonts/7af61b2367eba2b1852e837c46a75696.woff2 differ diff --git a/_static/fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2 b/_static/fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2 new file mode 100644 index 00000000..ff1f96d3 Binary files /dev/null and b/_static/fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2 differ diff --git a/_static/fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2 b/_static/fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2 new file mode 100644 index 00000000..66efc250 Binary files /dev/null and b/_static/fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2 differ diff --git a/_static/fonts/7e262106f82cc52663e403f5b73795bb.woff2 b/_static/fonts/7e262106f82cc52663e403f5b73795bb.woff2 new file mode 100644 index 00000000..067cb322 Binary files /dev/null and b/_static/fonts/7e262106f82cc52663e403f5b73795bb.woff2 differ diff --git a/_static/fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2 b/_static/fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2 new file mode 100644 index 00000000..68f094cd Binary files /dev/null and b/_static/fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2 differ diff --git a/_static/fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf b/_static/fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf new file mode 100644 index 00000000..13a7f42e Binary files /dev/null and b/_static/fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf differ diff --git a/_static/fonts/8007dfe835cfb201b8caaa9651098588.woff2 b/_static/fonts/8007dfe835cfb201b8caaa9651098588.woff2 new file mode 100644 index 00000000..11c7018c Binary files /dev/null and b/_static/fonts/8007dfe835cfb201b8caaa9651098588.woff2 differ diff --git a/_static/fonts/83614c36460a4a9734968789cb535de7.woff2 b/_static/fonts/83614c36460a4a9734968789cb535de7.woff2 new file mode 100644 index 00000000..e836b518 Binary files /dev/null and b/_static/fonts/83614c36460a4a9734968789cb535de7.woff2 differ diff --git a/_static/fonts/84e959dd07f302392f0ffd86f87db888.ttf b/_static/fonts/84e959dd07f302392f0ffd86f87db888.ttf new file mode 100644 index 00000000..99c5795f Binary files /dev/null and b/_static/fonts/84e959dd07f302392f0ffd86f87db888.ttf differ diff --git a/_static/fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2 b/_static/fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2 new file mode 100644 index 00000000..8a81a2ff Binary files /dev/null and b/_static/fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2 differ diff --git a/_static/fonts/870e5928dd14fcfe0ce9386107666774.woff2 b/_static/fonts/870e5928dd14fcfe0ce9386107666774.woff2 new file mode 100644 index 00000000..ef9a2bdd Binary files /dev/null and b/_static/fonts/870e5928dd14fcfe0ce9386107666774.woff2 differ diff --git a/_static/fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2 b/_static/fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2 new file mode 100644 index 00000000..6b05020c Binary files /dev/null and b/_static/fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2 differ diff --git a/_static/fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf b/_static/fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf new file mode 100644 index 00000000..57a6dc38 Binary files /dev/null and b/_static/fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf differ diff --git a/_static/fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2 b/_static/fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2 new file mode 100644 index 00000000..9756ba7c Binary files /dev/null and b/_static/fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2 differ diff --git a/_static/fonts/8aa562790559d61dd5178a88a296d70f.ttf b/_static/fonts/8aa562790559d61dd5178a88a296d70f.ttf new file mode 100644 index 00000000..68ff2a47 Binary files /dev/null and b/_static/fonts/8aa562790559d61dd5178a88a296d70f.ttf differ diff --git a/_static/fonts/8c3798e37724f71bc0c63c44a5307413.woff2 b/_static/fonts/8c3798e37724f71bc0c63c44a5307413.woff2 new file mode 100644 index 00000000..72fc0214 Binary files /dev/null and b/_static/fonts/8c3798e37724f71bc0c63c44a5307413.woff2 differ diff --git a/_static/fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf b/_static/fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf new file mode 100644 index 00000000..9c039d63 Binary files /dev/null and b/_static/fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf differ diff --git a/_static/fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2 b/_static/fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2 new file mode 100644 index 00000000..f8d7a0d4 Binary files /dev/null and b/_static/fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2 differ diff --git a/_static/fonts/9095d663e4d450059bcc2260bb75cd62.woff2 b/_static/fonts/9095d663e4d450059bcc2260bb75cd62.woff2 new file mode 100644 index 00000000..472bf5a5 Binary files /dev/null and b/_static/fonts/9095d663e4d450059bcc2260bb75cd62.woff2 differ diff --git a/_static/fonts/90ebb29b5cffa197b184773983ba7e91.woff2 b/_static/fonts/90ebb29b5cffa197b184773983ba7e91.woff2 new file mode 100644 index 00000000..5fd10290 Binary files /dev/null and b/_static/fonts/90ebb29b5cffa197b184773983ba7e91.woff2 differ diff --git a/_static/fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2 b/_static/fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2 new file mode 100644 index 00000000..cb00b8b5 Binary files /dev/null and b/_static/fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2 differ diff --git a/_static/fonts/9582ced8a675bf267cc7ac392a86413e.woff2 b/_static/fonts/9582ced8a675bf267cc7ac392a86413e.woff2 new file mode 100644 index 00000000..ef920e5a Binary files /dev/null and b/_static/fonts/9582ced8a675bf267cc7ac392a86413e.woff2 differ diff --git a/_static/fonts/99be4d68845d66c27c7f7d3a48687b66.woff2 b/_static/fonts/99be4d68845d66c27c7f7d3a48687b66.woff2 new file mode 100644 index 00000000..3f7f93ab Binary files /dev/null and b/_static/fonts/99be4d68845d66c27c7f7d3a48687b66.woff2 differ diff --git a/_static/fonts/99cf36e763be9cce7b4c59b91841af58.woff2 b/_static/fonts/99cf36e763be9cce7b4c59b91841af58.woff2 new file mode 100644 index 00000000..663ec4c2 Binary files /dev/null and b/_static/fonts/99cf36e763be9cce7b4c59b91841af58.woff2 differ diff --git a/_static/fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2 b/_static/fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2 new file mode 100644 index 00000000..d0c5aa5e Binary files /dev/null and b/_static/fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2 differ diff --git a/_static/fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2 b/_static/fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2 new file mode 100644 index 00000000..3f060b34 Binary files /dev/null and b/_static/fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2 differ diff --git a/_static/fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2 b/_static/fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2 new file mode 100644 index 00000000..2f2cacd3 Binary files /dev/null and b/_static/fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2 differ diff --git a/_static/fonts/9fdb12ceee3a402d3a54afe354552459.woff2 b/_static/fonts/9fdb12ceee3a402d3a54afe354552459.woff2 new file mode 100644 index 00000000..1d173f2a Binary files /dev/null and b/_static/fonts/9fdb12ceee3a402d3a54afe354552459.woff2 differ diff --git a/_static/fonts/a6933e678530b263486fa7b185a449ca.woff2 b/_static/fonts/a6933e678530b263486fa7b185a449ca.woff2 new file mode 100644 index 00000000..dd587a2b Binary files /dev/null and b/_static/fonts/a6933e678530b263486fa7b185a449ca.woff2 differ diff --git a/_static/fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2 b/_static/fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2 new file mode 100644 index 00000000..9213da01 Binary files /dev/null and b/_static/fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2 differ diff --git a/_static/fonts/a70ff2592da5e3453943f727633aff54.woff2 b/_static/fonts/a70ff2592da5e3453943f727633aff54.woff2 new file mode 100644 index 00000000..c932cd45 Binary files /dev/null and b/_static/fonts/a70ff2592da5e3453943f727633aff54.woff2 differ diff --git a/_static/fonts/aa28d99c7db60ad23f96a5c317615c42.woff2 b/_static/fonts/aa28d99c7db60ad23f96a5c317615c42.woff2 new file mode 100644 index 00000000..cce41ce7 Binary files /dev/null and b/_static/fonts/aa28d99c7db60ad23f96a5c317615c42.woff2 differ diff --git a/_static/fonts/aab05142e0e2dadf7df633e061e612ad.woff2 b/_static/fonts/aab05142e0e2dadf7df633e061e612ad.woff2 new file mode 100644 index 00000000..c8ab3b2d Binary files /dev/null and b/_static/fonts/aab05142e0e2dadf7df633e061e612ad.woff2 differ diff --git a/_static/fonts/ab03beb9091fa15ce4e783199e076bc6.woff2 b/_static/fonts/ab03beb9091fa15ce4e783199e076bc6.woff2 new file mode 100644 index 00000000..477887e3 Binary files /dev/null and b/_static/fonts/ab03beb9091fa15ce4e783199e076bc6.woff2 differ diff --git a/_static/fonts/ac848474638236e67a64bc654fb18de0.ttf b/_static/fonts/ac848474638236e67a64bc654fb18de0.ttf new file mode 100644 index 00000000..aa6a46dd Binary files /dev/null and b/_static/fonts/ac848474638236e67a64bc654fb18de0.ttf differ diff --git a/_static/fonts/acaac043ca238f0e56e61864456777fa.woff2 b/_static/fonts/acaac043ca238f0e56e61864456777fa.woff2 new file mode 100644 index 00000000..c88b8aea Binary files /dev/null and b/_static/fonts/acaac043ca238f0e56e61864456777fa.woff2 differ diff --git a/_static/fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2 b/_static/fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2 new file mode 100644 index 00000000..8571683e Binary files /dev/null and b/_static/fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2 differ diff --git a/_static/fonts/b019538234514166ec7665359d097403.woff2 b/_static/fonts/b019538234514166ec7665359d097403.woff2 new file mode 100644 index 00000000..29342a8d Binary files /dev/null and b/_static/fonts/b019538234514166ec7665359d097403.woff2 differ diff --git a/_static/fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2 b/_static/fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2 new file mode 100644 index 00000000..91231c9c Binary files /dev/null and b/_static/fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2 differ diff --git a/_static/fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2 b/_static/fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2 new file mode 100644 index 00000000..4ccadd18 Binary files /dev/null and b/_static/fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2 differ diff --git a/_static/fonts/b4d3c40a77fd9e35a881a79077957055.woff2 b/_static/fonts/b4d3c40a77fd9e35a881a79077957055.woff2 new file mode 100644 index 00000000..38d4c74d Binary files /dev/null and b/_static/fonts/b4d3c40a77fd9e35a881a79077957055.woff2 differ diff --git a/_static/fonts/b4e42731e8d667ae87c3450c345754ae.woff2 b/_static/fonts/b4e42731e8d667ae87c3450c345754ae.woff2 new file mode 100644 index 00000000..ee64c936 Binary files /dev/null and b/_static/fonts/b4e42731e8d667ae87c3450c345754ae.woff2 differ diff --git a/_static/fonts/b57a5ada789f195d5d42f4073a6cf313.woff2 b/_static/fonts/b57a5ada789f195d5d42f4073a6cf313.woff2 new file mode 100644 index 00000000..18c3f128 Binary files /dev/null and b/_static/fonts/b57a5ada789f195d5d42f4073a6cf313.woff2 differ diff --git a/_static/fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2 b/_static/fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2 new file mode 100644 index 00000000..a4699c78 Binary files /dev/null and b/_static/fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2 differ diff --git a/_static/fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2 b/_static/fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2 new file mode 100644 index 00000000..22ddee9c Binary files /dev/null and b/_static/fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2 differ diff --git a/_static/fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2 b/_static/fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2 new file mode 100644 index 00000000..fa67bec9 Binary files /dev/null and b/_static/fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2 differ diff --git a/_static/fonts/bb8007225d94a099cddbade7ea904667.woff2 b/_static/fonts/bb8007225d94a099cddbade7ea904667.woff2 new file mode 100644 index 00000000..22c57b01 Binary files /dev/null and b/_static/fonts/bb8007225d94a099cddbade7ea904667.woff2 differ diff --git a/_static/fonts/bc67bba106323289ea3eda0826de1912.ttf b/_static/fonts/bc67bba106323289ea3eda0826de1912.ttf new file mode 100644 index 00000000..ce5a5252 Binary files /dev/null and b/_static/fonts/bc67bba106323289ea3eda0826de1912.ttf differ diff --git a/_static/fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2 b/_static/fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2 new file mode 100644 index 00000000..20eb7ec2 Binary files /dev/null and b/_static/fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2 differ diff --git a/_static/fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2 b/_static/fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2 new file mode 100644 index 00000000..2900346b Binary files /dev/null and b/_static/fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2 differ diff --git a/_static/fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2 b/_static/fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2 new file mode 100644 index 00000000..0f11176a Binary files /dev/null and b/_static/fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2 differ diff --git a/_static/fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2 b/_static/fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2 new file mode 100644 index 00000000..6363b1c7 Binary files /dev/null and b/_static/fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2 differ diff --git a/_static/fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf b/_static/fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf new file mode 100644 index 00000000..99e1e894 Binary files /dev/null and b/_static/fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf differ diff --git a/_static/fonts/bfd1a0c9c783e84595589f33e1828a57.woff2 b/_static/fonts/bfd1a0c9c783e84595589f33e1828a57.woff2 new file mode 100644 index 00000000..27773c96 Binary files /dev/null and b/_static/fonts/bfd1a0c9c783e84595589f33e1828a57.woff2 differ diff --git a/_static/fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2 b/_static/fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2 new file mode 100644 index 00000000..b2ffb560 Binary files /dev/null and b/_static/fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2 differ diff --git a/_static/fonts/c22066c14662d6c80415ae04c5dd9d51.woff2 b/_static/fonts/c22066c14662d6c80415ae04c5dd9d51.woff2 new file mode 100644 index 00000000..7148fac7 Binary files /dev/null and b/_static/fonts/c22066c14662d6c80415ae04c5dd9d51.woff2 differ diff --git a/_static/fonts/c28a41f656599f6694528b5463c6a445.woff2 b/_static/fonts/c28a41f656599f6694528b5463c6a445.woff2 new file mode 100644 index 00000000..fcadc912 Binary files /dev/null and b/_static/fonts/c28a41f656599f6694528b5463c6a445.woff2 differ diff --git a/_static/fonts/c6dc61b627bbc5af9130518297bd4f17.ttf b/_static/fonts/c6dc61b627bbc5af9130518297bd4f17.ttf new file mode 100644 index 00000000..7a8b630b Binary files /dev/null and b/_static/fonts/c6dc61b627bbc5af9130518297bd4f17.ttf differ diff --git a/_static/fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2 b/_static/fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2 new file mode 100644 index 00000000..d2f30b58 Binary files /dev/null and b/_static/fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2 differ diff --git a/_static/fonts/ca7eea0cf248d6e8442c01074765bd33.woff2 b/_static/fonts/ca7eea0cf248d6e8442c01074765bd33.woff2 new file mode 100644 index 00000000..24a1bfd3 Binary files /dev/null and b/_static/fonts/ca7eea0cf248d6e8442c01074765bd33.woff2 differ diff --git a/_static/fonts/cadfb311297a9362b07fab73934b432a.ttf b/_static/fonts/cadfb311297a9362b07fab73934b432a.ttf new file mode 100644 index 00000000..4242da4d Binary files /dev/null and b/_static/fonts/cadfb311297a9362b07fab73934b432a.ttf differ diff --git a/_static/fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2 b/_static/fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2 new file mode 100644 index 00000000..65687e73 Binary files /dev/null and b/_static/fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2 differ diff --git a/_static/fonts/ccdebed88064e470c15f37c432922e57.woff2 b/_static/fonts/ccdebed88064e470c15f37c432922e57.woff2 new file mode 100644 index 00000000..6abf54d0 Binary files /dev/null and b/_static/fonts/ccdebed88064e470c15f37c432922e57.woff2 differ diff --git a/_static/fonts/cce2217cc8323fe49789adefb3596291.woff2 b/_static/fonts/cce2217cc8323fe49789adefb3596291.woff2 new file mode 100644 index 00000000..b8dff97b Binary files /dev/null and b/_static/fonts/cce2217cc8323fe49789adefb3596291.woff2 differ diff --git a/_static/fonts/cd3d1f17e048e2116f438bd7157baccf.woff2 b/_static/fonts/cd3d1f17e048e2116f438bd7157baccf.woff2 new file mode 100644 index 00000000..93cd525d Binary files /dev/null and b/_static/fonts/cd3d1f17e048e2116f438bd7157baccf.woff2 differ diff --git a/_static/fonts/d07f561ba87d93460742b060727d9e0d.woff2 b/_static/fonts/d07f561ba87d93460742b060727d9e0d.woff2 new file mode 100644 index 00000000..bfa05a0f Binary files /dev/null and b/_static/fonts/d07f561ba87d93460742b060727d9e0d.woff2 differ diff --git a/_static/fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2 b/_static/fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2 new file mode 100644 index 00000000..72ce0e98 Binary files /dev/null and b/_static/fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2 differ diff --git a/_static/fonts/d422317033deb87342a5e56c7be67458.ttf b/_static/fonts/d422317033deb87342a5e56c7be67458.ttf new file mode 100644 index 00000000..6a9fc931 Binary files /dev/null and b/_static/fonts/d422317033deb87342a5e56c7be67458.ttf differ diff --git a/_static/fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2 b/_static/fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2 new file mode 100644 index 00000000..b9cee29d Binary files /dev/null and b/_static/fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2 differ diff --git a/_static/fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf b/_static/fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf new file mode 100644 index 00000000..11a1e9fe Binary files /dev/null and b/_static/fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf differ diff --git a/_static/fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2 b/_static/fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2 new file mode 100644 index 00000000..0b792b0b Binary files /dev/null and b/_static/fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2 differ diff --git a/_static/fonts/da6cd48e6dad1888fccc91735e7522f7.woff2 b/_static/fonts/da6cd48e6dad1888fccc91735e7522f7.woff2 new file mode 100644 index 00000000..fe8fcec7 Binary files /dev/null and b/_static/fonts/da6cd48e6dad1888fccc91735e7522f7.woff2 differ diff --git a/_static/fonts/daf12b5f1889502004bba85ad71f9fa4.woff2 b/_static/fonts/daf12b5f1889502004bba85ad71f9fa4.woff2 new file mode 100644 index 00000000..3d0f604e Binary files /dev/null and b/_static/fonts/daf12b5f1889502004bba85ad71f9fa4.woff2 differ diff --git a/_static/fonts/daf51ab540602b2d0b87646621637bac.woff2 b/_static/fonts/daf51ab540602b2d0b87646621637bac.woff2 new file mode 100644 index 00000000..fc71d944 Binary files /dev/null and b/_static/fonts/daf51ab540602b2d0b87646621637bac.woff2 differ diff --git a/_static/fonts/db0424fb67fb52e7e538490240cc7fb9.woff2 b/_static/fonts/db0424fb67fb52e7e538490240cc7fb9.woff2 new file mode 100644 index 00000000..e1b7a79f Binary files /dev/null and b/_static/fonts/db0424fb67fb52e7e538490240cc7fb9.woff2 differ diff --git a/_static/fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2 b/_static/fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2 new file mode 100644 index 00000000..75d29cff Binary files /dev/null and b/_static/fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2 differ diff --git a/_static/fonts/dd719f1662079ce6a61260f9af972379.woff2 b/_static/fonts/dd719f1662079ce6a61260f9af972379.woff2 new file mode 100644 index 00000000..44819272 Binary files /dev/null and b/_static/fonts/dd719f1662079ce6a61260f9af972379.woff2 differ diff --git a/_static/fonts/de018865c95896bb57265fc97c48ebd7.woff2 b/_static/fonts/de018865c95896bb57265fc97c48ebd7.woff2 new file mode 100644 index 00000000..a181dfe7 Binary files /dev/null and b/_static/fonts/de018865c95896bb57265fc97c48ebd7.woff2 differ diff --git a/_static/fonts/e33716333704ab19fdf9989e072ad49a.woff2 b/_static/fonts/e33716333704ab19fdf9989e072ad49a.woff2 new file mode 100644 index 00000000..b2391b92 Binary files /dev/null and b/_static/fonts/e33716333704ab19fdf9989e072ad49a.woff2 differ diff --git a/_static/fonts/e56cc9fb5272752b78f144b4be43175d.woff2 b/_static/fonts/e56cc9fb5272752b78f144b4be43175d.woff2 new file mode 100644 index 00000000..9997e98d Binary files /dev/null and b/_static/fonts/e56cc9fb5272752b78f144b4be43175d.woff2 differ diff --git a/_static/fonts/e704ef18719c08839bc99a32437ef0f8.woff2 b/_static/fonts/e704ef18719c08839bc99a32437ef0f8.woff2 new file mode 100644 index 00000000..bfcc76fa Binary files /dev/null and b/_static/fonts/e704ef18719c08839bc99a32437ef0f8.woff2 differ diff --git a/_static/fonts/e99627cd27de169d23ece4573006af2a.woff2 b/_static/fonts/e99627cd27de169d23ece4573006af2a.woff2 new file mode 100644 index 00000000..677de8b5 Binary files /dev/null and b/_static/fonts/e99627cd27de169d23ece4573006af2a.woff2 differ diff --git a/_static/fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2 b/_static/fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2 new file mode 100644 index 00000000..064e94b7 Binary files /dev/null and b/_static/fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2 differ diff --git a/_static/fonts/f154d62b4879af7a22895af7a4ef03f0.woff2 b/_static/fonts/f154d62b4879af7a22895af7a4ef03f0.woff2 new file mode 100644 index 00000000..074504d6 Binary files /dev/null and b/_static/fonts/f154d62b4879af7a22895af7a4ef03f0.woff2 differ diff --git a/_static/fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2 b/_static/fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2 new file mode 100644 index 00000000..0bfb07d7 Binary files /dev/null and b/_static/fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2 differ diff --git a/_static/fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2 b/_static/fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2 new file mode 100644 index 00000000..f041fde3 Binary files /dev/null and b/_static/fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2 differ diff --git a/_static/fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2 b/_static/fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2 new file mode 100644 index 00000000..5b19d60d Binary files /dev/null and b/_static/fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2 differ diff --git a/_static/fonts/f534242dea2255c25b9d05c2371986e3.woff2 b/_static/fonts/f534242dea2255c25b9d05c2371986e3.woff2 new file mode 100644 index 00000000..23fcdf30 Binary files /dev/null and b/_static/fonts/f534242dea2255c25b9d05c2371986e3.woff2 differ diff --git a/_static/fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2 b/_static/fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2 new file mode 100644 index 00000000..2bfc2cee Binary files /dev/null and b/_static/fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2 differ diff --git a/_static/fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2 b/_static/fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2 new file mode 100644 index 00000000..481279c0 Binary files /dev/null and b/_static/fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2 differ diff --git a/_static/fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2 b/_static/fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2 new file mode 100644 index 00000000..771fbecc Binary files /dev/null and b/_static/fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2 differ diff --git a/_static/fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2 b/_static/fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2 new file mode 100644 index 00000000..d87fe266 Binary files /dev/null and b/_static/fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2 differ diff --git a/_static/fonts/f6734f8177112c0839b961f96d813fcb.woff2 b/_static/fonts/f6734f8177112c0839b961f96d813fcb.woff2 new file mode 100644 index 00000000..020729ef Binary files /dev/null and b/_static/fonts/f6734f8177112c0839b961f96d813fcb.woff2 differ diff --git a/_static/fonts/f75911313e1c7802c23345ab57e754d8.woff2 b/_static/fonts/f75911313e1c7802c23345ab57e754d8.woff2 new file mode 100644 index 00000000..60681387 Binary files /dev/null and b/_static/fonts/f75911313e1c7802c23345ab57e754d8.woff2 differ diff --git a/_static/fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2 b/_static/fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2 new file mode 100644 index 00000000..4487ab7b Binary files /dev/null and b/_static/fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2 differ diff --git a/_static/fonts/fb1aaa90783b8cb9375265abeb91b153.woff2 b/_static/fonts/fb1aaa90783b8cb9375265abeb91b153.woff2 new file mode 100644 index 00000000..1351aad4 Binary files /dev/null and b/_static/fonts/fb1aaa90783b8cb9375265abeb91b153.woff2 differ diff --git a/_static/fonts/fc66f942651a9fe1a598770d3d896529.woff2 b/_static/fonts/fc66f942651a9fe1a598770d3d896529.woff2 new file mode 100644 index 00000000..94ab5fb0 Binary files /dev/null and b/_static/fonts/fc66f942651a9fe1a598770d3d896529.woff2 differ diff --git a/_static/kpm/css/491.e7d65321.css b/_static/kpm/css/491.e7d65321.css new file mode 100644 index 00000000..e61e6f58 --- /dev/null +++ b/_static/kpm/css/491.e7d65321.css @@ -0,0 +1,1383 @@ +.self-building-square-spinner,.self-building-square-spinner *{box-sizing:border-box}.self-building-square-spinner{height:40px;width:40px;top:calc(-10px * 2 / 3)}.self-building-square-spinner .square{height:10px;width:10px;top:calc(-10px * 2 / 3);margin-right:calc(10px / 3);margin-top:calc(10px / 3);background:#ff1d5e;float:left;position:relative;opacity:0;animation:self-building-square-spinner 6s infinite}.self-building-square-spinner .square:nth-child(1){animation-delay:calc(.3s * 6)}.self-building-square-spinner .square:nth-child(2){animation-delay:2.1s}.self-building-square-spinner .square:nth-child(3){animation-delay:2.4s}.self-building-square-spinner .square:nth-child(4){animation-delay:calc(.3s * 3)}.self-building-square-spinner .square:nth-child(5){animation-delay:1.2s}.self-building-square-spinner .square:nth-child(6){animation-delay:1.5s}.self-building-square-spinner .square:nth-child(7){animation-delay:0s}.self-building-square-spinner .square:nth-child(8){animation-delay:.3s}.self-building-square-spinner .square:nth-child(9){animation-delay:.6s}.self-building-square-spinner .clear{clear:both}@keyframes self-building-square-spinner{0%{opacity:0}5%{opacity:1;top:0}50.9%{opacity:1;top:0}55.9%{opacity:0;top:inherit}} + +:root { + --baklava-control-color-primary: #5379b5; + --baklava-control-color-error: red; + --baklava-control-color-background: #2c2c2c; + --baklava-control-color-foreground: white; + --baklava-control-color-hover: #4c4c4c; + --baklava-control-color-active: #6c6c6c; + --baklava-control-color-disabled-foreground: gray; + --baklava-control-border-radius: 3px; + --baklava-sidebar-color-background: #3f3f3f; + --baklava-sidebar-color-foreground: white; + --baklava-node-color-background: #3f3f3fcc; + --baklava-node-color-foreground: white; + --baklava-node-color-selected: var(--baklava-control-color-primary); + --baklava-node-title-color-background: black; + --baklava-node-title-color-foreground: white; + --baklava-group-node-title-color-background: rgb(5, 75, 5); + --baklava-group-node-title-color-foreground: white; + --baklava-node-border-radius: 4px; + --baklava-color-connection-default: white; + --baklava-color-connection-allowed: green; + --baklava-color-connection-forbidden: red; + --baklava-editor-background-pattern-default: #232323; + --baklava-editor-background-pattern-line: #131313; + --baklava-editor-background-pattern-black: #00000022; + --baklava-context-menu-background: #000000cc; + --baklava-context-menu-shadow: 0 0 8px rgba(0, 0, 0, 0.65); + --baklava-toolbar-background: #0003; + --baklava-toolbar-foreground: white; + --baklava-node-palette-background: #0003; + --baklava-node-palette-foreground: white; + --baklava-visual-transition: 0.1s linear; +} + +.baklava-button { + background-color: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + transition: background-color var(--baklava-visual-transition); + border: none; + padding: 0.45em 0.35em; + border-radius: var(--baklava-control-border-radius); + font-size: inherit; + cursor: pointer; + overflow-x: hidden; +} +.baklava-button:hover { + background-color: var(--baklava-control-color-hover); +} +.baklava-button:active { + background-color: var(--baklava-control-color-primary); +} +.baklava-button.--block { + width: 100%; +} + +.baklava-checkbox { + display: flex; + padding: 0.35em 0; + cursor: pointer; + overflow-x: hidden; + align-items: center; +} +.baklava-checkbox .__checkmark-container { + display: flex; + background-color: var(--baklava-control-color-background); + border-radius: var(--baklava-control-border-radius); + transition: background-color var(--baklava-visual-transition); + width: 18px; + height: 18px; +} +.baklava-checkbox:hover .__checkmark-container { + background-color: var(--baklava-control-color-hover); +} +.baklava-checkbox:active .__checkmark-container { + background-color: var(--baklava-control-color-active); +} +.baklava-checkbox .__checkmark { + stroke-dasharray: 15; + stroke-dashoffset: 15; + stroke: var(--baklava-control-color-foreground); + stroke-width: 2px; + fill: none; + transition: stroke-dashoffset var(--baklava-visual-transition); +} +.baklava-checkbox.--checked .__checkmark { + stroke-dashoffset: 0; +} +.baklava-checkbox.--checked .__checkmark-container { + background-color: var(--baklava-control-color-primary); +} +.baklava-checkbox .__label { + margin-left: 0.5rem; +} + +.baklava-context-menu { + color: var(--baklava-control-color-foreground); + position: absolute; + display: inline-block; + z-index: 100; + background-color: var(--baklava-context-menu-background); + box-shadow: var(--baklava-context-menu-shadow); + border-radius: 0 0 var(--baklava-control-border-radius) var(--baklava-control-border-radius); + min-width: 6rem; + width: -moz-max-content; + width: max-content; +} +.baklava-context-menu > .item { + display: flex; + align-items: center; + padding: 0.35em 1em; + transition: background 0.05s linear; + position: relative; +} +.baklava-context-menu > .item > .__label { + flex: 1 1 auto; +} +.baklava-context-menu > .item > .__submenu-icon { + margin-left: 0.75rem; +} +.baklava-context-menu > .item.--disabled { + color: var(--baklava-control-color-hover); +} +.baklava-context-menu > .item:not(.--header):not(.--active):not(.--disabled):hover { + background: var(--baklava-control-color-primary); +} +.baklava-context-menu > .item.--active { + background: var(--baklava-control-color-primary); +} +.baklava-context-menu.--nested { + left: 100%; + top: 0; +} +.baklava-context-menu.--flipped-x.--nested { + left: unset; + right: 100%; +} +.baklava-context-menu.--flipped-y.--nested { + top: unset; + bottom: 0; +} +.baklava-context-menu > .divider { + margin: 0.35em 0; + height: 1px; + background-color: var(--baklava-control-color-hover); +} + +.baklava-icon { + display: block; + height: 100%; +} +.baklava-icon.--clickable { + cursor: pointer; + transition: color var(--baklava-visual-transition); +} +.baklava-icon.--clickable:hover { + color: var(--baklava-control-color-primary); +} + +.baklava-input { + background-color: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + caret-color: var(--baklava-control-color-primary); + border: none; + border-radius: var(--baklava-control-border-radius); + padding: 0.45em 0.75em; + width: 100%; + transition: background-color var(--baklava-visual-transition); + font-size: inherit; + font: inherit; +} +.baklava-input:hover { + background-color: var(--baklava-control-color-hover); +} +.baklava-input:active { + background-color: var(--baklava-control-color-active); +} +.baklava-input:focus-visible { + outline: 1px solid var(--baklava-control-color-primary); +} +.baklava-input[type=number]::-webkit-inner-spin-button, .baklava-input[type=number]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} +.baklava-input.--invalid { + box-shadow: 0 0 2px 2px var(--baklava-control-color-error); +} + +.baklava-num-input { + background: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + border-radius: var(--baklava-control-border-radius); + width: 100%; + display: grid; + grid-template-columns: 20px 1fr 20px; +} +.baklava-num-input > .__button { + display: flex; + flex: 0 0 auto; + width: 20px; + justify-content: center; + align-items: center; + transition: background var(--baklava-visual-transition); + cursor: pointer; +} +.baklava-num-input > .__button:hover { + background-color: var(--baklava-control-color-hover); +} +.baklava-num-input > .__button:active { + background-color: var(--baklava-control-color-active); +} +.baklava-num-input > .__button.--dec { + grid-area: 1/1/span 1/span 1; +} +.baklava-num-input > .__button.--dec > svg { + transform: rotateZ(90deg); +} +.baklava-num-input > .__button.--inc { + grid-area: 1/3/span 1/span 1; +} +.baklava-num-input > .__button.--inc > svg { + transform: rotateZ(-90deg); +} +.baklava-num-input > .__button path { + stroke: var(--baklava-control-color-foreground); + fill: var(--baklava-control-color-foreground); +} +.baklava-num-input > .__content { + grid-area: 1/2/span 1/span 1; + display: inline-flex; + cursor: pointer; + max-width: 100%; + min-width: 0; + align-items: center; + transition: background-color var(--baklava-visual-transition); +} +.baklava-num-input > .__content:hover { + background-color: var(--baklava-control-color-hover); +} +.baklava-num-input > .__content:active { + background-color: var(--baklava-control-color-active); +} +.baklava-num-input > .__content > .__label, .baklava-num-input > .__content > .__value { + margin: 0.35em 0; + padding: 0 0.5em; +} +.baklava-num-input > .__content > .__label { + flex: 1; + min-width: 0; + overflow: hidden; +} +.baklava-num-input > .__content > .__value { + text-align: right; +} +.baklava-num-input > .__content > input { + background-color: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + caret-color: var(--baklava-control-color-primary); + padding: 0.35em; + width: 100%; +} + +.baklava-select { + width: 100%; + position: relative; + color: var(--baklava-control-color-foreground); +} +.baklava-select.--open > .__selected { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.baklava-select.--open > .__selected > .__icon { + transform: rotate(180deg); +} +.baklava-select > .__selected { + background-color: var(--baklava-control-color-background); + padding: 0.35em 0.75em; + border-radius: var(--baklava-control-border-radius); + transition: background var(--baklava-visual-transition); + min-height: 1.7em; + display: flex; + align-items: center; + cursor: pointer; +} +.baklava-select > .__selected:hover { + background: var(--baklava-control-color-hover); +} +.baklava-select > .__selected:active { + background: var(--baklava-control-color-active); +} +.baklava-select > .__selected > .__text { + flex: 1 0 auto; + flex-basis: 0; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.baklava-select > .__selected > .__icon { + flex: 0 0 auto; + display: flex; + justify-content: center; + align-items: center; + transition: transform 0.25s ease; + width: 18px; + height: 18px; +} +.baklava-select > .__selected > .__icon path { + stroke: var(--baklava-control-color-foreground); + fill: var(--baklava-control-color-foreground); +} +.baklava-select > .__dropdown { + position: absolute; + top: 100%; + left: 0; + right: 0; + z-index: 10; + background-color: var(--baklava-context-menu-background); + filter: drop-shadow(0 0 4px black); + border-radius: 0 0 var(--baklava-control-border-radius) var(--baklava-control-border-radius); + max-height: 15em; + overflow-y: scroll; +} +.baklava-select > .__dropdown::-webkit-scrollbar { + width: 0px; + background: transparent; +} +.baklava-select > .__dropdown > .item { + padding: 0.35em; + padding-left: 1em; + transition: background 0.05s linear; +} +.baklava-select > .__dropdown > .item:not(.--header):not(.--active) { + cursor: pointer; +} +.baklava-select > .__dropdown > .item:not(.--header):not(.--active):hover { + background: var(--baklava-control-color-hover); +} +.baklava-select > .__dropdown > .item.--active { + background: var(--baklava-control-color-primary); +} +.baklava-select > .__dropdown > .item.--header { + color: var(--baklava-control-color-disabled-foreground); + border-bottom: 1px solid var(--baklava-control-color-disabled-foreground); + padding: 0.5em 0.35em; + padding-left: 1em; +} + +.baklava-slider { + background: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + border-radius: var(--baklava-control-border-radius); + position: relative; + cursor: pointer; +} +.baklava-slider > .__content { + display: flex; + position: relative; + z-index: 1; +} +.baklava-slider > .__content > .__label, .baklava-slider > .__content > .__value { + flex: 1 1 auto; + margin: 0.35em 0; + padding: 0 0.5em; + text-overflow: ellipsis; +} +.baklava-slider > .__content > .__value { + text-align: right; +} +.baklava-slider > .__content > input { + background-color: var(--baklava-control-color-background); + color: var(--baklava-control-color-foreground); + caret-color: var(--baklava-control-color-primary); + padding: 0.35em; + width: 100%; +} +.baklava-slider > .__slider { + position: absolute; + top: 0; + bottom: 0; + left: 0; + background-color: var(--baklava-control-color-primary); + border-radius: var(--baklava-control-border-radius); +} + +.baklava-connection { + stroke: var(--baklava-color-connection-default); + stroke-width: 2px; + fill: none; +} +.baklava-connection.--temporary { + stroke-width: 4px; + stroke-dasharray: 5 5; + stroke-dashoffset: 0; + animation: dash 1s linear infinite; + transform: translateY(-1px); +} +@keyframes dash { + to { + stroke-dashoffset: 20; + } +} +.baklava-connection.--allowed { + stroke: var(--baklava-color-connection-allowed); +} +.baklava-connection.--forbidden { + stroke: var(--baklava-color-connection-forbidden); +} + +.minimap { + position: absolute; + height: 15%; + width: 15%; + min-width: 150px; + max-width: 90%; + top: 20px; + right: 20px; + z-index: 900; +} + +.baklava-editor { + width: 100%; + height: 100%; + position: relative; + overflow: hidden; + outline: none !important; + font-family: "Lato", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + font-size: 15px; + touch-action: none; +} +.baklava-editor .background { + background-color: var(--baklava-editor-background-pattern-default); + background-image: linear-gradient(var(--baklava-editor-background-pattern-black) 2px, transparent 2px), linear-gradient(90deg, var(--baklava-editor-background-pattern-black) 2px, transparent 2px), linear-gradient(var(--baklava-editor-background-pattern-line) 1px, transparent 1px), linear-gradient(90deg, var(--baklava-editor-background-pattern-line) 1px, transparent 1px); + background-repeat: repeat; + width: 100%; + height: 100%; + pointer-events: none !important; +} +.baklava-editor *:not(input):not(textarea) { + -webkit-user-select: none; + user-select: none; + -moz-user-select: none; + touch-action: none; +} +.baklava-editor .input-user-select { + -webkit-user-select: auto; + user-select: auto; + -moz-user-select: auto; +} +.baklava-editor *, .baklava-editor *::after, .baklava-editor *::before { + box-sizing: border-box; +} +.baklava-editor.--temporary-connection { + cursor: crosshair; +} +.baklava-editor .connections-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none !important; +} +.baklava-editor .node-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; +} +.baklava-editor .node-container * { + pointer-events: all; +} + +.baklava-ignore-mouse * { + pointer-events: none !important; +} + +.baklava-ignore-mouse .__port { + pointer-events: all !important; +} + +.baklava-node-interface { + padding: 0.25em 0; + position: relative; +} +.baklava-node-interface .__port { + position: absolute; + width: 10px; + height: 10px; + background: white; + border-radius: 50%; + top: calc(50% - 5px); + cursor: crosshair; +} +.baklava-node-interface.--input { + text-align: left; + padding-left: 0.5em; +} +.baklava-node-interface.--input .__port { + left: -1.1em; +} +.baklava-node-interface.--output { + text-align: right; + padding-right: 0.5em; +} +.baklava-node-interface.--output .__port { + right: -1.1em; +} + +.baklava-node-palette { + position: absolute; + left: 0; + top: 60px; + width: 250px; + height: calc(100% - 60px); + z-index: 3; + padding: 2rem; + overflow-y: auto; + background: var(--baklava-node-palette-background); + color: var(--baklava-node-palette-foreground); +} +.baklava-node-palette h1 { + margin-top: 2rem; +} + +.baklava-node.--palette { + position: unset; + margin: 1rem 0; + cursor: grab; +} +.baklava-node.--palette:first-child { + margin-top: 0; +} +.baklava-node.--palette .__title { + padding: 0.5rem; + border-radius: var(--baklava-node-border-radius); +} + +.baklava-dragged-node { + position: absolute; + width: calc(250px - 4rem); + height: 40px; + z-index: 4; + pointer-events: none; +} + +.baklava-node { + max-width: 20rem; + background: var(--baklava-node-color-background); + color: var(--baklava-node-color-foreground); + border-radius: var(--baklava-node-border-radius); + position: absolute; + filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.8)); + transition: box-shadow var(--baklava-visual-transition), filter var(--baklava-visual-transition); +} +.baklava-node:hover { + box-shadow: 0 0 0 0.35px var(--baklava-node-color-selected); +} +.baklava-node.--selected { + z-index: 5; + box-shadow: 0 0 0 1px var(--baklava-node-color-selected); +} +.baklava-node.--dragging { + filter: drop-shadow(0 0 7px rgba(0, 0, 0, 0.8)); +} +.baklava-node.--dragging > .__title { + cursor: grabbing; +} +.baklava-node > .__title { + display: flex; + background: var(--baklava-node-title-color-background); + color: var(--baklava-node-title-color-foreground); + padding: 0.4em 0.75em; + border-radius: var(--baklava-node-border-radius) var(--baklava-node-border-radius) 0 0; + cursor: grab; +} +.baklava-node > .__title > *:first-child { + flex-grow: 1; +} +.baklava-node > .__title > .__title-label { + pointer-events: none; +} +.baklava-node > .__title > .__menu { + position: relative; + cursor: initial; +} +.baklava-node[data-node-type^=__baklava_] > .__title { + background: var(--baklava-group-node-title-color-background); + color: var(--baklava-group-node-title-color-foreground); +} +.baklava-node > .__content { + padding: 0.75em; +} +.baklava-node > .__content > div > div { + margin: 0.5em 0; +} +.baklava-node.--two-column > .__content { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: auto auto; + grid-template-areas: ". ." ". ."; +} +.baklava-node.--two-column > .__content > .__inputs { + grid-row: 1; + grid-column: 1; +} +.baklava-node.--two-column > .__content > .__outputs { + grid-row: 1; + grid-column: 2; +} + +.baklava-sidebar { + position: absolute; + height: 100%; + width: 25%; + min-width: 300px; + max-width: 90%; + top: 0; + right: 0; + z-index: 1000; + background-color: var(--baklava-sidebar-color-background); + color: var(--baklava-sidebar-color-foreground); + box-shadow: none; + overflow-x: hidden; + padding: 1em; + transform: translateX(100%); + transition: transform 0.5s; + display: flex; + flex-direction: column; +} +.baklava-sidebar.--open { + transform: translateX(0); + box-shadow: 0px 0px 15px black; +} +.baklava-sidebar .__resizer { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 4px; + cursor: col-resize; +} +.baklava-sidebar .__header { + display: flex; + align-items: center; +} +.baklava-sidebar .__header .__node-name { + margin-left: 0.5rem; +} +.baklava-sidebar .__close { + font-size: 2em; + border: none; + background: none; + color: inherit; + cursor: pointer; +} +.baklava-sidebar .__interface { + margin: 0.5em 0; +} + +.baklava-toolbar { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 60px; + z-index: 3; + padding: 0.5rem 2rem; + background: var(--baklava-toolbar-background); + color: var(--baklava-toolbar-foreground); + display: flex; + align-items: center; +} + +.baklava-toolbar-entry { + margin-left: 0.5rem; + margin-right: 0.5rem; +} + +.baklava-toolbar-button { + color: var(--baklava-toolbar-foreground); + background: none; + border: none; + transition: color var(--baklava-visual-transition); +} +.baklava-toolbar-button:not([disabled]) { + cursor: pointer; +} +.baklava-toolbar-button:hover:not([disabled]) { + color: var(--baklava-control-color-primary); +} +.baklava-toolbar-button[disabled] { + color: var(--baklava-control-color-disabled-foreground); +} + +.slide-fade-enter-active { + transition: all 0.1s ease-out; +} + +.slide-fade-leave-active { + transition: all 0.1s ease-out; +} + +.slide-fade-enter-from, +.slide-fade-leave-to { + transform: translateY(5px); + opacity: 0; +} + +.fade-enter-active { + transition: opacity 0.1s ease-out !important; +} + +.fade-leave-active { + transition: opacity 0.1s ease-out !important; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} +/* sass-plugin-1:/Users/maronato/Developer/vue-toastification/src/scss/index.scss */ +.Vue-Toastification__container { + z-index: 9999; + position: fixed; + padding: 4px; + width: 600px; + box-sizing: border-box; + display: flex; + min-height: 100%; + color: #fff; + flex-direction: column; + pointer-events: none; +} +@media only screen and (min-width : 600px) { + .Vue-Toastification__container.top-left, + .Vue-Toastification__container.top-right, + .Vue-Toastification__container.top-center { + top: 1em; + } + .Vue-Toastification__container.bottom-left, + .Vue-Toastification__container.bottom-right, + .Vue-Toastification__container.bottom-center { + bottom: 1em; + flex-direction: column-reverse; + } + .Vue-Toastification__container.top-left, + .Vue-Toastification__container.bottom-left { + left: 1em; + } + .Vue-Toastification__container.top-left .Vue-Toastification__toast, + .Vue-Toastification__container.bottom-left .Vue-Toastification__toast { + margin-right: auto; + } + @supports not (-moz-appearance: none) { + .Vue-Toastification__container.top-left .Vue-Toastification__toast--rtl, + .Vue-Toastification__container.bottom-left .Vue-Toastification__toast--rtl { + margin-right: unset; + margin-left: auto; + } + } + .Vue-Toastification__container.top-right, + .Vue-Toastification__container.bottom-right { + right: 1em; + } + .Vue-Toastification__container.top-right .Vue-Toastification__toast, + .Vue-Toastification__container.bottom-right .Vue-Toastification__toast { + margin-left: auto; + } + @supports not (-moz-appearance: none) { + .Vue-Toastification__container.top-right .Vue-Toastification__toast--rtl, + .Vue-Toastification__container.bottom-right .Vue-Toastification__toast--rtl { + margin-left: unset; + margin-right: auto; + } + } + .Vue-Toastification__container.top-center, + .Vue-Toastification__container.bottom-center { + left: 50%; + margin-left: -300px; + } + .Vue-Toastification__container.top-center .Vue-Toastification__toast, + .Vue-Toastification__container.bottom-center .Vue-Toastification__toast { + margin-left: auto; + margin-right: auto; + } +} +@media only screen and (max-width : 600px) { + .Vue-Toastification__container { + width: 100vw; + padding: 0; + left: 0; + margin: 0; + } + .Vue-Toastification__container .Vue-Toastification__toast { + width: 100%; + } + .Vue-Toastification__container.top-left, + .Vue-Toastification__container.top-right, + .Vue-Toastification__container.top-center { + top: 0; + } + .Vue-Toastification__container.bottom-left, + .Vue-Toastification__container.bottom-right, + .Vue-Toastification__container.bottom-center { + bottom: 0; + flex-direction: column-reverse; + } +} +.Vue-Toastification__toast { + display: inline-flex; + position: relative; + max-height: 800px; + min-height: 64px; + box-sizing: border-box; + margin-bottom: 1rem; + padding: 22px 24px; + border-radius: 8px; + box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1), 0 2px 15px 0 rgba(0, 0, 0, 0.05); + justify-content: space-between; + font-family: + "Lato", + Helvetica, + "Roboto", + Arial, + sans-serif; + max-width: 600px; + min-width: 326px; + pointer-events: auto; + overflow: hidden; + transform: translateZ(0); + direction: ltr; +} +.Vue-Toastification__toast--rtl { + direction: rtl; +} +.Vue-Toastification__toast--default { + background-color: #1976d2; + color: #fff; +} +.Vue-Toastification__toast--info { + background-color: #2196f3; + color: #fff; +} +.Vue-Toastification__toast--success { + background-color: #4caf50; + color: #fff; +} +.Vue-Toastification__toast--error { + background-color: #ff5252; + color: #fff; +} +.Vue-Toastification__toast--warning { + background-color: #ffc107; + color: #fff; +} +@media only screen and (max-width : 600px) { + .Vue-Toastification__toast { + border-radius: 0px; + margin-bottom: 0.5rem; + } +} +.Vue-Toastification__toast-body { + flex: 1; + line-height: 24px; + font-size: 16px; + word-break: break-word; + white-space: pre-wrap; +} +.Vue-Toastification__toast-component-body { + flex: 1; +} +.Vue-Toastification__toast.disable-transition { + animation: none !important; +} +.Vue-Toastification__close-button { + font-weight: bold; + font-size: 24px; + line-height: 24px; + background: transparent; + outline: none; + border: none; + padding: 0; + padding-left: 10px; + cursor: pointer; + transition: 0.3s ease; + align-items: center; + color: #fff; + opacity: 0.3; + transition: visibility 0s, opacity 0.2s linear; +} +.Vue-Toastification__close-button:hover, +.Vue-Toastification__close-button:focus { + opacity: 1; +} +.Vue-Toastification__toast:not(:hover) .Vue-Toastification__close-button.show-on-hover { + opacity: 0; +} +.Vue-Toastification__toast--rtl .Vue-Toastification__close-button { + padding-left: unset; + padding-right: 10px; +} +@keyframes scale-x-frames { + 0% { + transform: scaleX(1); + } + 100% { + transform: scaleX(0); + } +} +.Vue-Toastification__progress-bar { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 5px; + z-index: 10000; + background-color: rgba(255, 255, 255, 0.7); + transform-origin: left; + animation: scale-x-frames linear 1 forwards; +} +.Vue-Toastification__toast--rtl .Vue-Toastification__progress-bar { + right: 0; + left: unset; + transform-origin: right; +} +.Vue-Toastification__icon { + margin: auto 18px auto 0px; + background: transparent; + outline: none; + border: none; + padding: 0; + transition: 0.3s ease; + align-items: center; + width: 20px; + height: 100%; +} +.Vue-Toastification__toast--rtl .Vue-Toastification__icon { + margin: auto 0px auto 18px; +} +@keyframes bounceInRight { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + from { + opacity: 0; + transform: translate3d(3000px, 0, 0); + } + 60% { + opacity: 1; + transform: translate3d(-25px, 0, 0); + } + 75% { + transform: translate3d(10px, 0, 0); + } + 90% { + transform: translate3d(-5px, 0, 0); + } + to { + transform: none; + } +} +@keyframes bounceOutRight { + 40% { + opacity: 1; + transform: translate3d(-20px, 0, 0); + } + to { + opacity: 0; + transform: translate3d(1000px, 0, 0); + } +} +@keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + transform: translate3d(-3000px, 0, 0); + } + 60% { + opacity: 1; + transform: translate3d(25px, 0, 0); + } + 75% { + transform: translate3d(-10px, 0, 0); + } + 90% { + transform: translate3d(5px, 0, 0); + } + to { + transform: none; + } +} +@keyframes bounceOutLeft { + 20% { + opacity: 1; + transform: translate3d(20px, 0, 0); + } + to { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } +} +@keyframes bounceInUp { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + from { + opacity: 0; + transform: translate3d(0, 3000px, 0); + } + 60% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + 75% { + transform: translate3d(0, 10px, 0); + } + 90% { + transform: translate3d(0, -5px, 0); + } + to { + transform: translate3d(0, 0, 0); + } +} +@keyframes bounceOutUp { + 20% { + transform: translate3d(0, -10px, 0); + } + 40%, 45% { + opacity: 1; + transform: translate3d(0, 20px, 0); + } + to { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } +} +@keyframes bounceInDown { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + transform: translate3d(0, -3000px, 0); + } + 60% { + opacity: 1; + transform: translate3d(0, 25px, 0); + } + 75% { + transform: translate3d(0, -10px, 0); + } + 90% { + transform: translate3d(0, 5px, 0); + } + to { + transform: none; + } +} +@keyframes bounceOutDown { + 20% { + transform: translate3d(0, 10px, 0); + } + 40%, 45% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + to { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } +} +.Vue-Toastification__bounce-enter-active.top-left, +.Vue-Toastification__bounce-enter-active.bottom-left { + animation-name: bounceInLeft; +} +.Vue-Toastification__bounce-enter-active.top-right, +.Vue-Toastification__bounce-enter-active.bottom-right { + animation-name: bounceInRight; +} +.Vue-Toastification__bounce-enter-active.top-center { + animation-name: bounceInDown; +} +.Vue-Toastification__bounce-enter-active.bottom-center { + animation-name: bounceInUp; +} +.Vue-Toastification__bounce-leave-active:not(.disable-transition).top-left, +.Vue-Toastification__bounce-leave-active:not(.disable-transition).bottom-left { + animation-name: bounceOutLeft; +} +.Vue-Toastification__bounce-leave-active:not(.disable-transition).top-right, +.Vue-Toastification__bounce-leave-active:not(.disable-transition).bottom-right { + animation-name: bounceOutRight; +} +.Vue-Toastification__bounce-leave-active:not(.disable-transition).top-center { + animation-name: bounceOutUp; +} +.Vue-Toastification__bounce-leave-active:not(.disable-transition).bottom-center { + animation-name: bounceOutDown; +} +.Vue-Toastification__bounce-leave-active, +.Vue-Toastification__bounce-enter-active { + animation-duration: 750ms; + animation-fill-mode: both; +} +.Vue-Toastification__bounce-move { + transition-timing-function: ease-in-out; + transition-property: all; + transition-duration: 400ms; +} +@keyframes fadeOutTop { + 0% { + transform: translateY(0); + opacity: 1; + } + 100% { + transform: translateY(-50px); + opacity: 0; + } +} +@keyframes fadeOutLeft { + 0% { + transform: translateX(0); + opacity: 1; + } + 100% { + transform: translateX(-50px); + opacity: 0; + } +} +@keyframes fadeOutBottom { + 0% { + transform: translateY(0); + opacity: 1; + } + 100% { + transform: translateY(50px); + opacity: 0; + } +} +@keyframes fadeOutRight { + 0% { + transform: translateX(0); + opacity: 1; + } + 100% { + transform: translateX(50px); + opacity: 0; + } +} +@keyframes fadeInLeft { + 0% { + transform: translateX(-50px); + opacity: 0; + } + 100% { + transform: translateX(0); + opacity: 1; + } +} +@keyframes fadeInRight { + 0% { + transform: translateX(50px); + opacity: 0; + } + 100% { + transform: translateX(0); + opacity: 1; + } +} +@keyframes fadeInTop { + 0% { + transform: translateY(-50px); + opacity: 0; + } + 100% { + transform: translateY(0); + opacity: 1; + } +} +@keyframes fadeInBottom { + 0% { + transform: translateY(50px); + opacity: 0; + } + 100% { + transform: translateY(0); + opacity: 1; + } +} +.Vue-Toastification__fade-enter-active.top-left, +.Vue-Toastification__fade-enter-active.bottom-left { + animation-name: fadeInLeft; +} +.Vue-Toastification__fade-enter-active.top-right, +.Vue-Toastification__fade-enter-active.bottom-right { + animation-name: fadeInRight; +} +.Vue-Toastification__fade-enter-active.top-center { + animation-name: fadeInTop; +} +.Vue-Toastification__fade-enter-active.bottom-center { + animation-name: fadeInBottom; +} +.Vue-Toastification__fade-leave-active:not(.disable-transition).top-left, +.Vue-Toastification__fade-leave-active:not(.disable-transition).bottom-left { + animation-name: fadeOutLeft; +} +.Vue-Toastification__fade-leave-active:not(.disable-transition).top-right, +.Vue-Toastification__fade-leave-active:not(.disable-transition).bottom-right { + animation-name: fadeOutRight; +} +.Vue-Toastification__fade-leave-active:not(.disable-transition).top-center { + animation-name: fadeOutTop; +} +.Vue-Toastification__fade-leave-active:not(.disable-transition).bottom-center { + animation-name: fadeOutBottom; +} +.Vue-Toastification__fade-leave-active, +.Vue-Toastification__fade-enter-active { + animation-duration: 750ms; + animation-fill-mode: both; +} +.Vue-Toastification__fade-move { + transition-timing-function: ease-in-out; + transition-property: all; + transition-duration: 400ms; +} +@keyframes slideInBlurredLeft { + 0% { + transform: translateX(-1000px) scaleX(2.5) scaleY(0.2); + transform-origin: 100% 50%; + filter: blur(40px); + opacity: 0; + } + 100% { + transform: translateX(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } +} +@keyframes slideInBlurredTop { + 0% { + transform: translateY(-1000px) scaleY(2.5) scaleX(0.2); + transform-origin: 50% 0%; + filter: blur(240px); + opacity: 0; + } + 100% { + transform: translateY(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } +} +@keyframes slideInBlurredRight { + 0% { + transform: translateX(1000px) scaleX(2.5) scaleY(0.2); + transform-origin: 0% 50%; + filter: blur(40px); + opacity: 0; + } + 100% { + transform: translateX(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } +} +@keyframes slideInBlurredBottom { + 0% { + transform: translateY(1000px) scaleY(2.5) scaleX(0.2); + transform-origin: 50% 100%; + filter: blur(240px); + opacity: 0; + } + 100% { + transform: translateY(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } +} +@keyframes slideOutBlurredTop { + 0% { + transform: translateY(0) scaleY(1) scaleX(1); + transform-origin: 50% 0%; + filter: blur(0); + opacity: 1; + } + 100% { + transform: translateY(-1000px) scaleY(2) scaleX(0.2); + transform-origin: 50% 0%; + filter: blur(240px); + opacity: 0; + } +} +@keyframes slideOutBlurredBottom { + 0% { + transform: translateY(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } + 100% { + transform: translateY(1000px) scaleY(2) scaleX(0.2); + transform-origin: 50% 100%; + filter: blur(240px); + opacity: 0; + } +} +@keyframes slideOutBlurredLeft { + 0% { + transform: translateX(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } + 100% { + transform: translateX(-1000px) scaleX(2) scaleY(0.2); + transform-origin: 100% 50%; + filter: blur(40px); + opacity: 0; + } +} +@keyframes slideOutBlurredRight { + 0% { + transform: translateX(0) scaleY(1) scaleX(1); + transform-origin: 50% 50%; + filter: blur(0); + opacity: 1; + } + 100% { + transform: translateX(1000px) scaleX(2) scaleY(0.2); + transform-origin: 0% 50%; + filter: blur(40px); + opacity: 0; + } +} +.Vue-Toastification__slideBlurred-enter-active.top-left, +.Vue-Toastification__slideBlurred-enter-active.bottom-left { + animation-name: slideInBlurredLeft; +} +.Vue-Toastification__slideBlurred-enter-active.top-right, +.Vue-Toastification__slideBlurred-enter-active.bottom-right { + animation-name: slideInBlurredRight; +} +.Vue-Toastification__slideBlurred-enter-active.top-center { + animation-name: slideInBlurredTop; +} +.Vue-Toastification__slideBlurred-enter-active.bottom-center { + animation-name: slideInBlurredBottom; +} +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).top-left, +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).bottom-left { + animation-name: slideOutBlurredLeft; +} +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).top-right, +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).bottom-right { + animation-name: slideOutBlurredRight; +} +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).top-center { + animation-name: slideOutBlurredTop; +} +.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).bottom-center { + animation-name: slideOutBlurredBottom; +} +.Vue-Toastification__slideBlurred-leave-active, +.Vue-Toastification__slideBlurred-enter-active { + animation-duration: 750ms; + animation-fill-mode: both; +} +.Vue-Toastification__slideBlurred-move { + transition-timing-function: ease-in-out; + transition-property: all; + transition-duration: 400ms; +} + diff --git a/_static/kpm/css/index-e0bb4ee9.b589bbb5.css b/_static/kpm/css/index-e0bb4ee9.b589bbb5.css new file mode 100644 index 00000000..46300999 --- /dev/null +++ b/_static/kpm/css/index-e0bb4ee9.b589bbb5.css @@ -0,0 +1,38 @@ +@import url(https://fonts.googleapis.com/css2?family=Montserrat:wght@500&family=Roboto&family=Roboto+Mono&display=swap); +.active>.highlighted[data-v-7a759b63]{fill:#fff}.active>.highlighted_line[data-v-7a759b63]{stroke:#fff;stroke-width:.998972}.active>.hovered[data-v-7a759b63]{fill:#00e58d}.active>.hovered_line[data-v-7a759b63]{stroke:#00e58d;stroke-width:.998972} +.white[data-v-ef71f1c4]{fill:#fff}.green[data-v-ef71f1c4]{fill:#00e58d}.black[data-v-ef71f1c4]{fill:#0f0f0f}.left[data-v-ef71f1c4]{rotate:270deg}.right[data-v-ef71f1c4]{rotate:180deg}.up[data-v-ef71f1c4]{rotate:90deg}.small[data-v-ef71f1c4]{scale:.33}.medium[data-v-ef71f1c4]{scale:.5}.big[data-v-ef71f1c4]{scale:.6}.hovered[data-v-ef71f1c4]{fill:#00e58d}.noninteractable[data-v-ef71f1c4]{pointer-events:none} +.hovered[data-v-78309d1e]{fill:#00e58d} +.hovered[data-v-e991a23a]{fill:#00e58d} +.normal[data-v-5307c3a1]{fill:#fff}.hovered[data-v-5307c3a1]{fill:#00e58d} +.normal[data-v-653cba30]{fill:#fff}.hovered[data-v-653cba30]{fill:#00e58d} +.__active>.highlighted[data-v-05d4af55]{fill:#00e58d}.__active:hover>.highlighted[data-v-05d4af55]{fill:#80f2c6}.__inactive>.highlighted[data-v-05d4af55],.__inactive>.normal[data-v-05d4af55]{fill:#fff}.__inactive:hover>.highlighted[data-v-05d4af55]{fill:#00e58d}.__inactive>.hovered[data-v-05d4af55]{fill:#00e58d}.connected[data-v-05d4af55]{fill:#00e58d}.disconnected[data-v-05d4af55]{fill:#cc4747}.normal[data-v-05d4af55]{fill:#fff} +.normal[data-v-410f3ef8]{fill:#fff}.gray[data-v-410f3ef8]{fill:#6f6f6f}.hovered[data-v-410f3ef8]{fill:#00e58d}.green[data-v-410f3ef8]{fill:#00e58d}.animate[data-v-410f3ef8]{animation:blink-410f3ef8 2 cubic-bezier(0.68, -0.55, 0.27, 1.55) 1.5s}@keyframes blink-410f3ef8{0%{fill:#00e58d}40%{fill:#cca747}60%{fill:#cca747}100%{fill:#00e58d}} +.normal[data-v-41e945d3]{fill:#fff}.hovered[data-v-41e945d3]{fill:#00e58d} +.white[data-v-f95c2bf4]{fill:#fff}.hovered[data-v-f95c2bf4]{fill:#00e58d} +div[data-v-74c292ef]{display:flex;justify-content:space-between;min-width:10em;height:2.5em;flex-direction:row;align-items:center}div>input[type=button][data-v-74c292ef],div label[data-v-74c292ef]{width:100%;font-size:12px;color:#fff;padding:0 .9375em;line-height:2.5rem;background-color:unset;border:unset;cursor:pointer}div>input[type=button][data-v-74c292ef]:hover,div label[data-v-74c292ef]:hover{color:#00e58d} +.normal[data-v-5707e051]{fill:#fff}.hovered[data-v-5707e051]{fill:#00e58d} +.normal[data-v-a4021e88]{stroke:#fff;fill:#1d1d1d}.hovered[data-v-a4021e88]{stroke:#00e58d;fill:#1d1d1d} +svg[data-v-0f26c012]{stroke:#6f6f6f}.white[data-v-0f26c012]{stroke:#fff} +.flip[data-v-0f428cc6]{rotate:180deg} +div[data-v-9ef0f814]{width:35px;height:35px;border-radius:50%;display:flex;align-items:center;justify-content:center}.info[data-v-9ef0f814]{background-color:#00e58d}.warning[data-v-9ef0f814]{background-color:#cca747}.error[data-v-9ef0f814]{background-color:#cc4747} +.notification-container[data-v-0512bfcb]{display:flex;align-items:center;gap:20px;height:90px;border-radius:15px;padding:15px}.notification-container.border[data-v-0512bfcb]{border:1px solid #6f6f6f}.notification-container>.notification-badge[data-v-0512bfcb]{flex-basis:35px}.notification-container>.notification-message[data-v-0512bfcb]{display:flex;flex-direction:column;flex-grow:1;font-size:12px;min-width:0}.notification-container>.notification-message>.message[data-v-0512bfcb]{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.notification-container>.notification-message>.info[data-v-0512bfcb]{color:#00e58d}.notification-container>.notification-message>.warning[data-v-0512bfcb]{color:#cca747}.notification-container>.notification-message>.error[data-v-0512bfcb]{color:#cc4747}.notification-container>.notification-message>span[data-v-0512bfcb]:last-child{color:#fff} +.notifications[data-v-fd15cad8]{height:calc(100% - 120px - 35px);width:435px;max-width:calc(100vw - 60px);background-color:#1d1d1d;opacity:.9;position:absolute;top:60px;right:-495px;z-index:4;padding:30px;overflow-y:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}.notifications>.info[data-v-fd15cad8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.notifications>.info>span[data-v-fd15cad8]{color:#fff;font-size:16px}.notifications>.info>button[data-v-fd15cad8]{color:#6f6f6f;font-size:14px}.notifications>.panel[data-v-fd15cad8]{display:grid;grid-row-gap:20px}.notifications>.panel ul[data-v-fd15cad8]{max-width:calc(100vw - 60px)}.notifications>.panel li[data-v-fd15cad8]{-webkit-user-select:text;-moz-user-select:text;user-select:text} +.settings-panel{background-color:#1d1d1dE6;position:absolute;padding:20px;color:#fff;top:61px;right:-495px;width:435px;max-height:calc(100% - 60px - 35px - 40px);min-height:-moz-fit-content;min-height:fit-content;max-width:calc(100vw - 40px);z-index:4;overflow-y:auto}.settings-panel>.setting-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.settings-panel>.setting-header>span{color:#fff;font-size:16px}.settings-panel>.panel{display:grid;grid-row-gap:20px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.settings-panel>.panel>div{max-width:calc(100vw - 40px)}.settings-panel>.panel>div>.option-label{padding-bottom:10px;color:#fff;font-size:14px} +.popup-menu{position:absolute;background-color:#1d1d1dE6;border:1px solid #00e58d;border-radius:10px;color:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:50vw;top:50vh;transform:translate(-50%, -50%);padding:1em;display:flex;flex-direction:column;gap:1em;height:-moz-max-content;height:max-content}.popup-menu>.__header{display:flex;align-items:center}.popup-menu>.__header>.__header-title{font-size:12px;flex-grow:1}.popup-menu>.__header>.__close{flex-grow:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;cursor:pointer}.popup-menu>.__name-option>.baklava-input{box-sizing:border-box} +.blur-panel{background-color:#1d1d1d80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:absolute;padding:20px;color:#fff;left:0%;z-index:10;top:0%;width:100%;height:100%;min-height:-moz-fit-content;min-height:fit-content}.blur-panel>.panel{display:grid;grid-row-gap:20px;-webkit-user-select:none;-moz-user-select:none;user-select:none;right:25%;top:25%;width:50%;height:50%}.blur-panel>.panel>div>.option-label{padding-bottom:10px;color:#fff;font-size:14px} +.__tooltip{z-index:4;font-size:12px;color:#fff;position:absolute;text-align:center;flex-direction:column;width:-moz-max-content;width:max-content;margin:1em 0;padding:1em;background-color:#1d1d1d;border:1px solid #343434;border-radius:15px;transform:translateX(-50%)} +.prevent-select[data-v-1fe64c2d]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.prevent-select>.__content[data-v-1fe64c2d]{-webkit-user-select:text;-moz-user-select:text;user-select:text} +.normal{fill:#fff}.gray{fill:#6f6f6f}.green{fill:#00e58d} +.white[data-v-1fc3c03b]{fill:#fff}.hovered[data-v-1fc3c03b]{fill:#00e58d} +.hovered svg{display:block}.hovered path{fill:#00e58d !important} +.wrapper[data-v-45b20100]{z-index:5}.wrapper-hud[data-v-45b20100]{position:relative}.wrapper-hidden[data-v-45b20100]{position:absolute;width:100%;top:-60px;padding-bottom:90px;transition:.2s}.wrapper-hidden.isHovered[data-v-45b20100]{transform:translateY(60px);padding-bottom:0}.wrapper-hidden:not(.isHovered)>.progress-bar[data-v-45b20100]{bottom:91px}.container[data-v-45b20100]{display:flex;justify-content:space-between;align-items:center;height:60px;background-color:#1d1d1d;border:1px solid #343434;border-left:0;border-right:0}.container .editorTitle[data-v-45b20100]{width:auto;text-wrap:wrap;flex-grow:1;cursor:text;text-align:center;padding:0 10px}.container .editorTitle.compressed-mobile[data-v-45b20100]{display:none}.container .editorTitleInput[data-v-45b20100]{font-size:12px;padding:0 10px;flex-grow:1}.container .editorTitleInput.compressed-mobile[data-v-45b20100]{display:none}.container .progress-bar[data-v-45b20100]{position:absolute;height:12px;left:0;bottom:0;border-radius:3px;z-index:5;background-color:#00e58d}.container .progress-bar.animate[data-v-45b20100]{animation:pulse-45b20100 ease-in-out 2s infinite}@keyframes pulse-45b20100{0%{left:0;width:0}50%{width:100%;left:0}100%{left:100%;width:0%}}.container>div[data-v-45b20100]{display:inherit;flex-grow:1}.container>div>div[data-v-45b20100]{flex-grow:0;display:flex;width:3.75em;height:3.75em;justify-content:center;align-items:center;position:relative;box-sizing:border-box;border-left:1px solid #343434}.container>div>div.compressed-mobile[data-v-45b20100]{width:auto;flex-grow:1;max-width:3.75em}.container>div>div[data-v-45b20100]:last-child{border-right:1px solid #343434}.container>div>div>svg[data-v-45b20100]{display:block;width:1.6875em;height:1.6875em}.container>div>div>.small_svg[data-v-45b20100]{display:block;width:1.2em;height:1.2em}.container>div>div>.smaller_svg[data-v-45b20100]{display:block;width:1em;height:1em}.container>div>div>.small_svg_stop[data-v-45b20100]{position:absolute;width:.8em;height:.8em;top:8%;right:8%;stroke:#999}.container>div>div>.dropdown-wrapper[data-v-45b20100],.container>div>div>.tooltip[data-v-45b20100],.container>div>div>.backend-status[data-v-45b20100]{-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;flex-direction:column;top:100%;left:0;display:none;background-color:#181818;border:2px solid #737373}.container>div>div>.dropdown-wrapper>div[data-v-45b20100]:hover,.container>div>div>.tooltip>div[data-v-45b20100]:hover,.container>div>div>.backend-status>div[data-v-45b20100]:hover{background-color:#2a2a2a}.container>div>div>.backend-status[data-v-45b20100]{width:220px;display:flex;transform:translate(-89%, -180px);padding:20px;font-size:12px;justify-content:space-between;border:none;transition:transform 1s}.container>div>div>.backend-status>div[data-v-45b20100]{display:flex;justify-content:space-between}.container>div>div>.backend-status>div>.disconnected[data-v-45b20100]{color:#cc4747}.container>div>div>.backend-status>div>.connected[data-v-45b20100]{color:#00e58d}.container>div>div>.tooltip[data-v-45b20100]{border-radius:15px;background-color:#1d1d1d;border:1px solid #6f6f6f;padding:10px;left:1.875em;transform:translate(-50%, 25%);pointer-events:none;white-space:nowrap}.container>div>div>.tooltip.last[data-v-45b20100]{transform:translate(-75%, 25%)}.container>div>div>.tooltip.first[data-v-45b20100]{transform:translate(-25%, 25%)}.container>div>div.logo:hover>.dropdown-wrapper[data-v-45b20100],.container>div>div.logo:hover>.backend-status[data-v-45b20100],.container>div>div.logo:hover>.tooltip[data-v-45b20100]{display:flex}.container>div>div.box>.small_svg[data-v-45b20100],.container>div>div.hoverbox>.small_svg[data-v-45b20100]{fill:#fff}.container>div>div.box:hover>.tooltip[data-v-45b20100]:not(.compressed-mobile),.container>div>div.hoverbox:hover>.tooltip[data-v-45b20100]:not(.compressed-mobile){display:flex;z-index:11}.container>div>div.hoverbox[data-v-45b20100]:hover{cursor:pointer}.container>div>div.hoverbox:hover>.small_svg[data-v-45b20100]{fill:#00e58d}.container>div>div.hoverbox:hover>.small_svg_stop[data-v-45b20100]{stroke:#a02c2c}.container>div>div.box>.small_svg[data-v-45b20100]{filter:brightness(50%)}.container>div>div.search-editor-nodes[data-v-45b20100]{max-width:15em}.container>div>div.search-editor-nodes>input[data-v-45b20100]{width:100%;height:100%;padding:0 .5em;color:#fff;border:none;background-color:#1d1d1d}.container>div>div.search-editor-nodes>input[data-v-45b20100]:focus{outline:1px solid #00e58d;z-index:12}.container>div>div.search-editor-nodes>input[data-v-45b20100]::-moz-placeholder{opacity:.5}.container>div>div.search-editor-nodes>input[data-v-45b20100]::placeholder{opacity:.5}.container>div>div.search-editor-nodes.compressed-mobile[data-v-45b20100]{position:absolute;top:61px;max-width:40vw;border:1px solid #343434;box-sizing:border-box}span[data-v-45b20100]{font-size:12px;color:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none}.prevent-select[data-v-45b20100]{-webkit-user-select:none;-moz-user-select:none;user-select:none} +#hterm-terminal[data-v-c10c6824]{position:relative;width:100%;height:100%;background-color:#1d1d1d} +.terminal-wrapper[data-v-028890e5]{z-index:3;position:absolute;min-height:35px;border-top:1px solid #343434;bottom:0;width:100%;transition:transform 1s;display:flex;flex-direction:column}.container[data-v-028890e5]{position:relative;height:35px;min-height:35px;background-color:#1d1d1d;width:calc(100% - 30px);border-bottom:1px solid #343434;display:flex;padding-right:30px;align-items:center;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;user-select:none}.container>.resizer[data-v-028890e5]{position:absolute;height:5px;width:100%;top:0;cursor:row-resize;pointer-events:none}.container>.button-wrapper[data-v-028890e5]{display:flex;align-items:center;gap:30px}.container>.button-wrapper>button[data-v-028890e5]{gap:10px}.container>.tab[data-v-028890e5]{display:flex;text-align:center;height:35px}.container>.tab>.tab-item[data-v-028890e5]{border-right:1px solid #343434;padding:0 0 0 25px;line-height:35px}.container>.tab>.tab-item.active[data-v-028890e5]{background-color:#4a4a4a}.container>.tab>.tab-item[data-v-028890e5]:not(.active):hover{background-color:#343434}.container>.tab>.tab-item.active:hover>span[data-v-028890e5]{color:#00e58d}.container>.tab>.tab-item .indicator-wrapper[data-v-028890e5]{width:25px;height:100%;display:flex}.container>.tab>.tab-item .indicator-wrapper>svg[data-v-028890e5]{padding:5px;display:block;margin-left:auto}span[data-v-028890e5]{color:#fff;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}button[data-v-028890e5]{display:flex}button[data-v-028890e5]:hover{color:#00e58d}button:hover>span[data-v-028890e5]{color:#00e58d} +.loading-screen{position:absolute;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:99;background-color:#1d1d1d80}#loading-screen-spinner>.square{background:#00e58d !important} +.hex-input{text-align:right} +.interface-cursor[data-v-f0e65632]{position:relative;top:0;left:0}.interface-cursor>.line[data-v-f0e65632]{position:absolute;height:.2em;width:1.4em;background-color:#cca747;z-index:100} +.anchor{pointer-events:all}.anchor>circle{fill:#00e58d}.anchor>circle:hover{fill:#cc4747} +.normal[data-v-5ad7104f]{fill:#fff}.hovered[data-v-5ad7104f]{fill:#00e58d}.green[data-v-5ad7104f]{fill:#00e58d} +a[data-v-12450553]{color:#fff;text-decoration:none;word-wrap:normal;width:100%}a>.link_item[data-v-12450553]{border:1px solid #737373;border-bottom:0px solid}a>.link_item>img[data-v-12450553]{display:inline-block;vertical-align:middle;margin:1em 1em 1em 1em;width:auto;height:100%;max-height:1.75em}a>.link_item>span[data-v-12450553]{vertical-align:middle;font-size:12px}a>.link_item:hover>span[data-v-12450553]{color:#00e58d} +.__dragged[data-v-cfa387f2]{border-radius:var(--baklava-node-border-radius);border-width:0px} +:root{--baklava-control-color-primary: #00E58D;--baklava-control-color-error: #cc4747;--baklava-control-color-background: #343434;--baklava-control-color-foreground: #ffffff;--baklava-control-color-hover: #4a4a4a;--baklava-control-color-active: #6f6f6f;--baklava-control-border-radius: 10px;--baklava-node-color-background: #1d1d1d;--baklava-node-color-foreground: #ffffff;--baklava-node-color-selected: --baklava-control-color-primary;--baklava-node-title-color-background: #343434;--baklava-node-title-color-foreground: #ffffff;--baklava-node-border-radius: 15px;--baklava-color-connection-default: #ffffff;--baklava-color-connection-allowed: #00E58D;--baklava-color-connection-forbidden: #cc4747;--baklava-editor-background-pattern-default: #0f0f0f;--baklava-editor-background-pattern-line: #343434;--baklava-editor-background-pattern-black: #343434;--baklava-sidebar-color-background: #1d1d1d;--baklava-sidebar-color-foreground: #ffffff}.connections-container{z-index:1}.node-container{z-index:2}.selection-container{z-index:3;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none}.baklava-editor .background{background-image:linear-gradient(#151515 2px, transparent 2px),linear-gradient(90deg, #151515 2px, transparent 2px)}.baklava-editor{position:relative;z-index:1}.baklava-slider>.__slider{background-color:#00e58d}.baklava-node-interface{padding:.5em 0}.baklava-node-interface .--output{height:1em}.baklava-node-interface .--input{height:1em}.baklava-node-interface>.__port,.baklava-node-interface>.__square{background-color:#00e58d;width:1em;height:1em;top:calc(50% - .5em)}.baklava-node-interface>.__port>svg,.baklava-node-interface>.__square>svg{position:absolute;top:0;left:0;height:1em;width:1em}.baklava-node-interface>.__square{border-radius:10%}.baklava-node-interface>.__square>.__port_name_left,.baklava-node-interface>.__square>.__port_name_right{position:relative;height:1em;width:-moz-fit-content;width:fit-content;top:-0.15em}.baklava-node-interface>.__square>.__port_name_left>span,.baklava-node-interface>.__square>.__port_name_right>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 .3em 0 .3em;border-radius:5px;background-color:rgba(0,229,141,.5)}.baklava-node-interface>.__square>.__port_name_left>input,.baklava-node-interface>.__square>.__port_name_right>input{color:#fff;background-color:rgba(52,52,52,.7);position:relative;outline:none;border:none;border-radius:5px}.baklava-node-interface>.__square>.__port_name_left>input:focus,.baklava-node-interface>.__square>.__port_name_right>input:focus{outline:solid 2px #00e58d}.baklava-node-interface>.__square>.__port_name_left>input.__error,.baklava-node-interface>.__square>.__port_name_right>input.__error{outline:solid 2px #cc4747}.baklava-node-interface>.__square>.__port_name_left{left:0;translate:-100%}.baklava-node-interface>.__square>.__port_name_left>span,.baklava-node-interface>.__square>.__port_name_left>input{margin-left:0}.baklava-node-interface>.__square>.__port_name_left>span{margin-right:.15em}.baklava-node-interface>.__square>.__port_name_left>input{margin-right:.3em}.baklava-node-interface>.__square>.__port_name_right{left:100%}.baklava-node-interface>.__square>.__port_name_right>span,.baklava-node-interface>.__square>.__port_name_right>input{margin-right:0}.baklava-node-interface>.__square>.__port_name_right>span{margin-left:.15em}.baklava-node-interface>.__square>.__port_name_right>input{margin-left:.3em}.baklava-node-interface>.__square.__port_input{position:relative;top:-0.15em;height:1em;width:-moz-fit-content;width:fit-content;background-color:rgba(0,0,0,0);border:none;border-radius:10%;color:#fff;caret-color:#fff}.baklava-node-interface.__readonly>*{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:auto}.baklava-node-interface.__readonly>* *{pointer-events:none}.baklava-node-interface>.baklava-num-input>.__button.--inc{border-bottom-right-radius:var(--baklava-control-border-radius);border-top-right-radius:var(--baklava-control-border-radius)}.baklava-node-interface>.baklava-num-input>.__button.--dec{border-bottom-left-radius:var(--baklava-control-border-radius);border-top-left-radius:var(--baklava-control-border-radius)}.baklava-checkbox .__checkmark-container>svg>path{display:none}.baklava-node-interface .greyedout_arrow{background-color:#343434}.baklava-node-interface .picked{background-color:#cca747 !important}.baklava-context-menu{display:flex;flex-direction:column;background-color:#1d1d1d;border-radius:unset;border:1px solid #343434;cursor:pointer}.baklava-context-menu.hidden-navbar{translate:0 60px}.baklava-context-menu>.item{display:flex;gap:1em;position:relative;flex-direction:row;text-decoration:none;padding:.75em 1em;height:2.75em;color:inherit;font-size:.875em}.baklava-context-menu>.item:hover{color:var(--baklava-control-color-primary)}.baklava-context-menu>.item>.icon{flex-grow:0;pointer-events:none;width:auto;height:1.25em;width:1.25em}.baklava-context-menu>.item>.icon:not(.readonly):hover{color:var(--baklava-control-color-primary)}.baklava-context-menu>.item>.icon>img{height:1.25em;width:1.25em}.baklava-context-menu>.item>.icon>svg{height:1.25em;width:1.25em}.baklava-context-menu>.item:not(.--header):not(.--active):not(.--disabled):hover{background-color:#1d1d1d}.baklava-context-menu>.item:not(.--header):not(.--active):not(.--disabled):hover>.flex-fill{color:#00e58d}.baklava-context-menu>.item:not(.--header):not(.--active):not(.--disabled):hover>.ml-3 svg path{fill:#00e58d}.baklava-context-menu>.item>.ml-3>svg{height:7px;transform:scale(80);scale:.02}.baklava-context-menu>.item>.ml-3>svg>path{d:path("M99.4,111.6l64.2,69.2L99.4,250h54.5l64.2-69.2l-64.2-69.2H99.4z") !important}.rectangle-selection{height:100%;width:100%;opacity:.15;background-color:#00e58d}.rectangle-selection-border{border:2px dashed #00e58d;opacity:.7}.Vue-Toastification__toast--default{background-color:#1d1d1d !important}@media only screen and (max-width: 600px){.Vue-Toastification__toast{width:90% !important;margin-left:5%;border-radius:8px !important}}*{font-family:"Montserrat",sans-serif}html,body,#app,#container{position:absolute;width:100%;height:100%;margin:0;background-color:#0f0f0f;overflow:hidden}input[type=file]{display:none}input[type=button],label{margin:0;padding:0;text-align:left;-webkit-user-select:unset;-moz-user-select:unset;user-select:unset}hr{margin:0;border:1px solid #343434}ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:20px}button{background-color:unset;border:unset;cursor:pointer;-webkit-user-select:unset;-moz-user-select:unset;user-select:unset;padding:0}:root{scrollbar-color:#6f6f6f #343434 !important}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:#343434}::-webkit-scrollbar-thumb{background-color:#6f6f6f;border-radius:5px}.baklava-connection,.connection-wrapper{pointer-events:visibleStroke;stroke:var(--color)}.baklava-connection.--hover,.--hover.connection-wrapper{stroke-width:4px;stroke:#00e58d}.baklava-connection.--dashed,.--dashed.connection-wrapper{stroke-dasharray:10 4;stroke-dashoffset:0}.baklava-connection.--dotted,.--dotted.connection-wrapper{stroke-dasharray:3 3}.connection-wrapper{stroke:rgba(0,0,0,0);stroke-width:10px}.baklava-node{min-width:300px !important;width:auto;display:table;max-width:none;background-color:#1d1d1dE6;transition:box-shadow var(--baklava-visual-transition) !important;filter:none}.baklava-node.--selected{z-index:5;box-shadow:0 0 0 calc(1px/var(--scale)) #00e58d}.baklava-node:hover{box-shadow:0 0 0 calc(1px/var(--scale)) #00e58d}.baklava-node.--dragging{box-shadow:0 0 0 calc(1.5px/var(--scale)) #00e58d;filter:none}.baklava-node>.__content>div>div{margin:0}.baklava-node>.__title{height:4em;display:flex;align-items:center;gap:1em;padding:0 1em;width:auto;white-space:nowrap}.baklava-node>.__title>.__title-icon{flex-grow:0;padding:0;height:2em;width:2em;pointer-events:none}.baklava-node>.__title>.__title-label{flex-grow:1}.baklava-node>.__title>.__title-label>.subtitle{margin:0;font-size:12px;color:#999;pointer-events:all}.baklava-node>.__title>.__title-label>.subtitle>span{color:#00e58d}.baklava-node>.__title>.__title-label>span{color:#00e58d}.baklava-node>.__title>.__menu{cursor:pointer;flex-grow:0;height:2em;width:2em;padding:.5em}.baklava-node>.__title>.__menu>svg{height:1em;width:1em}.baklava-node>.__title>.__menu:hover>svg{color:#00e58d}.baklava-node.--two-column>.__content>.__inputs{grid-row:2;grid-column:1}.baklava-node.--two-column>.__content>.__outputs{grid-row:2;grid-column:2}.baklava-node.--two-column>.__content>.__properties{grid-row:1;grid-column:1/span 2}.baklava-node.--greyed-out{filter:brightness(60%) blur(0.5px)}.baklava-node-palette{top:0;width:auto;min-width:min(300px,50vw);max-width:min(450px,50vw);background:#151515;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-right:1px solid #393939;height:calc(100% - 60px - 35px);padding:0;z-index:3;display:flex;flex-direction:column;overflow:visible}.baklava-node-palette.hidden-navbar{top:60px;transform:translate(-450px, 0px)}.baklava-node-palette .search-bar .palette-title{display:flex;align-items:center;margin:0;border:1px solid #393939;border-right:0;border-top:0;border-left:0;padding-bottom:1em;padding-top:1em;padding-left:2em}.baklava-node-palette .nodes{overflow-y:auto;overflow-x:hidden}.baklava-node-palette h1{margin:0}.baklava-node-palette>.nodes{overflow-y:auto}.__entry,.__entry_search{gap:1em;padding:0 1em;width:auto;font-size:12px;border:1px solid #393939;border-right:0;border-top:0;border-left:0;height:4em;background:var(--baklava-node-color-background);color:#fff;display:flex;align-items:center;cursor:grab;overflow:hidden}.__entry:hover,.__entry_search:hover{color:#00e58d}.__entry>.__title-icon,.__entry_search>.__title-icon{flex-grow:0;padding:0;height:2em;width:2em;pointer-events:none}.__entry>.__title-label,.__entry_search>.__title-label{flex-grow:1;width:-moz-max-content;width:max-content}.__entry>.__title-label>span,.__entry_search>.__title-label>span{color:#00e58d}.__entry.__category,.__category.__entry_search{cursor:pointer;background-color:#151515;padding-right:0}.__entry.__category>.__entry,.__category.__entry_search>.__entry,.__entry.__category>.__entry_search,.__category.__entry_search>.__entry_search{flex-grow:1;border-left:1px solid #393939}.__entry.__category>.__title>span,.__category.__entry_search>.__title>span{color:#00e58d}.__entry>.__url,.__entry_search>.__url{display:inline;text-decoration:none;color:inherit;width:auto}.__entry>.__url img,.__entry_search>.__url img{width:2em;height:2em;display:block}.__entry.__node-entry,.__node-entry.__entry_search{width:100%;flex-grow:1;justify-content:space-between}.__entry.__node-entry.__default-graph-node-entry>.__title-icon,.__node-entry.__default-graph-node-entry.__entry_search>.__title-icon{height:.75em;width:.75em}.__entry>.__node-entry,.__entry_search>.__node-entry{border-bottom:0}.__entry .__vertical_ellipsis,.__entry_search .__vertical_ellipsis{cursor:pointer !important}.__entry>.__icondiv,.__entry_search>.__icondiv{position:absolute;left:100%;max-width:18em;background-color:#181818;border-bottom:1px solid #737373;z-index:9999;transform:translate(0%, 50%) translate(0, -1.75em) translate(0, -4px)}.__entry_search{background-color:#151515;cursor:auto;padding-right:0;overflow:visible}.__entry_search>.node-search{height:100%;width:100%;color:#fff;border:none;background-color:#151515;padding-left:1em}.__entry_search>.node-search:focus{outline:1px solid #00e58d}.__entry_search>.node-search::-moz-placeholder{opacity:.5}.__entry_search>.node-search::placeholder{opacity:.5}.baklava-sidebar{position:absolute;min-width:-moz-min-content;min-width:min-content;max-width:50vw;z-index:3;padding:0;top:61px;border:1px solid #393939;border-right:0;height:calc(100% - 60px - 35px);transform:translateX(100%);transition:transform .4s;overflow-y:scroll}.baklava-sidebar.--preview{top:0px;height:100%}.baklava-sidebar.--hidehud:not(.--preview){height:calc(100% - 60px)}.baklava-sidebar.--open{transform:translateX(0);transition:transform .2s;box-shadow:0 15px 15px #000}.baklava-sidebar>.__resizer{width:10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.baklava-sidebar>.__content{display:flex;flex-direction:column}.baklava-sidebar>.__content>div{border:1px solid #393939;border-right:0;border-left:0;border-top:0}.baklava-sidebar>.__content>div>.__title{text-align:left;font-weight:600;padding:1.25em .625em;border:1px solid #393939;border-right:0;border-left:0;border-top:0}.baklava-sidebar>.__content>.__header{height:4em;display:flex;gap:1em;padding:0 1em;width:auto}.baklava-sidebar>.__content>.__header .__close{min-width:.5em;cursor:pointer;outline:none}.baklava-sidebar>.__content>.__header>.__node-icon{flex-grow:0;padding:0;height:2em;width:2em;pointer-events:none}.baklava-sidebar>.__content>.__header>.__node-name{margin:0;flex-grow:1;white-space:nowrap}.baklava-sidebar>.__content>.__header>.__url{display:inline;text-decoration:none;color:inherit;width:auto;position:relative}.baklava-sidebar>.__content>.__header>.__url img{width:2em;height:2em;display:block}.baklava-sidebar>.__content>.__category>.__category-name{white-space:nowrap;padding:.625em 1.25em}.baklava-sidebar>.__content>.__replace>.__replace_entry{display:flex;flex-wrap:wrap;align-items:center;gap:.5em;padding:.5em}.baklava-sidebar>.__content>.__replace>.__replace_entry>.__replace_title{padding:0 .75em}.baklava-sidebar>.__content>.__properties>.__property{padding:.625em 1.25em 0 1.25em}.baklava-sidebar>.__content>.__properties>.__property>.__property-name{font-size:.9em}.baklava-sidebar>.__content>.__properties>.__property *{box-sizing:border-box}.baklava-sidebar>.__content>.__properties>.__property:last-child{padding-bottom:1.25em}.baklava-sidebar>.__content>.__interface_groups>.__group{padding:.3em 1.25em}.baklava-sidebar>.__content>.__interface_groups>.__group:last-child{border:0}.baklava-sidebar>.__content>.__interface_groups>.__group-assign{padding:.625em 1.25em}.baklava-sidebar>.__content>.__interface_groups>.__group-assign .--disabled{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.baklava-sidebar>.__content>.__error_outputs p{padding:0 1.25em}.__markdown{background-color:#1d1d1d80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:absolute;padding:20px;color:#fff;left:0%;z-index:10;top:0%;width:100%;height:100%;min-height:-moz-fit-content;min-height:fit-content;overflow-y:scroll}.__markdown-content>div{display:block;vertical-align:bottom;width:30%}.__markdown-content span{max-width:30vh}.__markdown-content>.node_description{display:block;vertical-align:bottom;margin-left:1em;margin-right:1em;width:auto;overflow-wrap:break-word}.__markdown-content code{background-color:#343434E0;color:#cca747;font-family:monospace;padding:0px 2px 2px 2px}.__markdown-content a{color:#00e58d;text-decoration:none;word-wrap:normal}.__markdown-content img{display:block;margin-left:auto;margin-right:auto;margin-top:10px;max-width:100%}.__markdown-content li{list-style-type:circle;margin-left:20px} diff --git a/_static/kpm/favicon.svg b/_static/kpm/favicon.svg new file mode 100644 index 00000000..700ab4bf --- /dev/null +++ b/_static/kpm/favicon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/_static/kpm/index.html b/_static/kpm/index.html new file mode 100644 index 00000000..66a27f1e --- /dev/null +++ b/_static/kpm/index.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/_static/kpm/js/114.1887e3ae.js b/_static/kpm/js/114.1887e3ae.js new file mode 100644 index 00000000..66c92478 --- /dev/null +++ b/_static/kpm/js/114.1887e3ae.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[114],{55873:(e,n,t)=>{t.d(n,{E:()=>i,w:()=>a});var o=t(81025);class i extends o.l{constructor(e){super(),this.entity=e}emit(e){this.listeners.forEach((n=>n(e,this.entity)))}}class a extends o.l{constructor(e){super(),this.entity=e}emit(e){let n=!1;const t=()=>[n=!0];for(const o of Array.from(this.listeners.values()))if(o(e,t,this.entity),n)return{prevented:!0};return{prevented:!1}}}},12020:(e,n,t)=>{t.d(n,{FQ:()=>l,p$:()=>a});var o=t(81025);class i extends o.l{execute(e,n){let t=e;for(const e of this.listeners)t=e(t,n);return t}}class a extends i{constructor(e){super(),this.entity=e}execute(e){return super.execute(e,this.entity)}}class l extends o.l{constructor(e){super(),this.entity=e}execute(e){const n=[];for(const t of this.listeners)n.push(t(e,this.entity));return n}}},37886:(e,n,t)=>{t.d(n,{D:()=>i});var o=t(81025);function i(){const e=Symbol(),n=new Map,t=new Set,i=(t,i)=>{i instanceof o.l&&i.registerProxy(e,(()=>{var e,o;return null!==(o=null===(e=n.get(t))||void 0===e?void 0:e.listeners)&&void 0!==o?o:[]}))},a=e=>{t.add(e);for(const t of n.keys())i(t,e[t])},l=i=>{for(const t of n.keys())i[t]instanceof o.l&&i[t].unregisterProxy(e);t.delete(i)},s=()=>{t.forEach((e=>l(e))),n.clear()};return new Proxy({},{get:(e,r)=>"addTarget"===r?a:"removeTarget"===r?l:"destroy"===r?s:"string"!=typeof r||r.startsWith("_")?e[r]:(n.has(r)||(e=>{const a=new o.l;n.set(e,a),t.forEach((n=>i(e,n[e])))})(r),n.get(r))})}},81025:(e,n,t)=>{t.d(n,{l:()=>o});class o{constructor(){this.listenerMap=new Map,this._listeners=[],this.proxyMap=new Map,this.proxies=[]}get listeners(){return this._listeners.concat(this.proxies.flatMap((e=>e())))}subscribe(e,n){this.listenerMap.has(e)&&(console.warn("Already subscribed. Unsubscribing for you.\nPlease check that you don't accidentally use the same token twice to register two different handlers for the same event/hook."),this.unsubscribe(e)),this.listenerMap.set(e,n),this._listeners.push(n)}unsubscribe(e){if(this.listenerMap.has(e)){const n=this.listenerMap.get(e);this.listenerMap.delete(e);const t=this._listeners.indexOf(n);t>=0&&this._listeners.splice(t,1)}}registerProxy(e,n){this.proxyMap.has(e)&&(console.warn("Already subscribed. Unsubscribing for you.\nPlease check that you don't accidentally use the same token twice to register two different proxies for the same event/hook."),this.unregisterProxy(e)),this.proxyMap.set(e,n),this.proxies.push(n)}unregisterProxy(e){if(!this.proxyMap.has(e))return;const n=this.proxyMap.get(e);this.proxyMap.delete(e);const t=this.proxies.indexOf(n);t>=0&&this.proxies.splice(t,1)}}},3823:(e,n,t)=>{t.d(n,{Ac:()=>wn,Dz:()=>f,Hm:()=>y,J$:()=>oo,PG:()=>to,RM:()=>Fn,Sd:()=>Je,Ud:()=>ln,_N:()=>Bn,cg:()=>En,jg:()=>$n,n4:()=>h,z8:()=>lo,zp:()=>ao});var o=t(2262),i=t(66252),a=t(3577),l=t(49963),s=t(44773),r=t(88272),u=t(45521),d=t(88518),c=t(44653),p=t(70828),v=t(12020);let m=null;function f(){if(!m)throw new Error("providePlugin() must be called before usePlugin()");return{viewModel:m}}function h(){const{viewModel:e}=f();return{graph:(0,o.Vh)(e.value,"displayedGraph"),switchGraph:e.value.switchGraph}}function g(e){const{graph:n}=h(),t=(0,o.iH)(null),a=(0,o.iH)(null);return{dragging:(0,i.Fl)((()=>!!t.value)),onPointerDown:n=>{t.value={x:n.pageX,y:n.pageY},a.value={x:e.value.x,y:e.value.y}},onPointerMove:o=>{if(t.value){const i=o.pageX-t.value.x,l=o.pageY-t.value.y;e.value.x=a.value.x+i/n.value.scaling,e.value.y=a.value.y+l/n.value.scaling}},onPointerUp:()=>{t.value=null,a.value=null}}}function y(){const{graph:e}=h();return{transform:(n,t)=>[n/e.value.scaling-e.value.panning.x,t/e.value.scaling-e.value.panning.y]}}var w=(e=>(e[e.NONE=0]="NONE",e[e.ALLOWED=1]="ALLOWED",e[e.FORBIDDEN=2]="FORBIDDEN",e))(w||{});const b=(e,n)=>{const t=e.__vccOpts||e;for(const[e,o]of n)t[e]=o;return t},x=b((0,i.aZ)({setup(){const{viewModel:e}=f(),{graph:n}=h();return{styles:(0,i.Fl)((()=>{const t=e.value.settings.background,o=n.value.panning.x*n.value.scaling,i=n.value.panning.y*n.value.scaling,a=n.value.scaling*t.gridSize,l=a/t.gridDivision;return{backgroundPosition:`left ${o}px top ${i}px`,backgroundSize:`${a}px ${a}px, ${a}px ${a}px ${n.value.scaling>t.subGridVisibleThreshold?`, ${l}px ${l}px, ${l}px ${l}px`:""}`}}))}}}),[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",{class:"background",style:(0,a.j5)(e.styles)},null,4)}]]);var k;const _="undefined"!=typeof window,C=e=>"string"==typeof e,M=()=>{};_&&(null==(k=null==window?void 0:window.navigator)?void 0:k.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);var E=Object.defineProperty,N=Object.defineProperties,I=Object.getOwnPropertyDescriptors,D=Object.getOwnPropertySymbols,O=Object.prototype.hasOwnProperty,S=Object.prototype.propertyIsEnumerable,H=(e,n,t)=>n in e?E(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,P=(e,n)=>{for(var t in n||(n={}))O.call(n,t)&&H(e,t,n[t]);if(D)for(var t of D(n))S.call(n,t)&&H(e,t,n[t]);return e},j=(e,n)=>N(e,I(n));function T(e){var n;const t="function"==typeof(i=e)?i():(0,o.SU)(i);var i;return null!=(n=null==t?void 0:t.$el)?n:t}const F=_?window:void 0;function V(...e){let n,t,a,l;if(C(e[0])||Array.isArray(e[0])?([t,a,l]=e,n=F):[n,t,a,l]=e,!n)return M;Array.isArray(t)||(t=[t]),Array.isArray(a)||(a=[a]);const s=[],r=()=>{s.forEach((e=>e())),s.length=0},u=(0,i.YP)((()=>T(n)),(e=>{r(),e&&s.push(...t.flatMap((n=>a.map((t=>((e,n,t)=>(e.addEventListener(n,t,l),()=>e.removeEventListener(n,t,l)))(e,n,t))))))}),{immediate:!0,flush:"post"}),d=()=>{u(),r()};var c;return c=d,(0,o.nZ)()&&(0,o.EB)(c),d}function W(e,n,t={}){const{window:o=F,ignore:i=[],capture:a=!0,detectIframe:l=!1}=t;if(!o)return;let s,r=!0;const u=e=>i.some((n=>{if("string"==typeof n)return Array.from(o.document.querySelectorAll(n)).some((n=>n===e.target||e.composedPath().includes(n)));{const t=T(n);return t&&(e.target===t||e.composedPath().includes(t))}})),d=t=>{o.clearTimeout(s);const i=T(e);i&&i!==t.target&&!t.composedPath().includes(i)&&(0===t.detail&&(r=!u(t)),r?n(t):r=!0)},c=[V(o,"click",d,{passive:!0,capture:a}),V(o,"pointerdown",(n=>{const t=T(e);t&&(r=!n.composedPath().includes(t)&&!u(n))}),{passive:!0}),V(o,"pointerup",(e=>{if(0===e.button){const n=e.composedPath();e.composedPath=()=>n,s=o.setTimeout((()=>d(e)),50)}}),{passive:!0}),l&&V(o,"blur",(t=>{var i;const a=T(e);"IFRAME"!==(null==(i=o.document.activeElement)?void 0:i.tagName)||(null==a?void 0:a.contains(o.document.activeElement))||n(t)}))].filter(Boolean);return()=>c.forEach((e=>e()))}_&&window.document,_&&window.navigator,_&&window.location;const U="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},A="__vueuse_ssr_handlers__";U[A]=U[A]||{},U[A];var L=Object.defineProperty,$=Object.defineProperties,q=Object.getOwnPropertyDescriptors,B=Object.getOwnPropertySymbols,z=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable,G=(e,n,t)=>n in e?L(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;const Y={x:0,y:0,pointerId:0,pressure:0,tiltX:0,tiltY:0,width:0,height:0,twist:0,pointerType:null},K=Object.keys(Y);var Z,X;(X=Z||(Z={})).UP="UP",X.RIGHT="RIGHT",X.DOWN="DOWN",X.LEFT="LEFT",X.NONE="NONE";var Q=Object.defineProperty,J=Object.getOwnPropertySymbols,ee=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable,te=(e,n,t)=>n in e?Q(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;((e,n)=>{for(var t in n||(n={}))ee.call(n,t)&&te(e,t,n[t]);if(J)for(var t of J(n))ne.call(n,t)&&te(e,t,n[t])})({linear:function(e){return e}},{easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]});const oe=(0,i.aZ)({props:{modelValue:{type:Boolean,default:!1},items:{type:Array,required:!0},x:{type:Number,default:0},y:{type:Number,default:0},isNested:{type:Boolean,default:!1},isFlipped:{type:Object,default:()=>({x:!1,y:!1})},flippable:{type:Boolean,default:!1}},emits:["click","update:modelValue"],setup(e,{emit:n}){let t=null;const a=(0,o.iH)(null),l=(0,o.iH)(-1),s=(0,o.iH)(0),r=(0,o.iH)({x:!1,y:!1}),u=(0,i.Fl)((()=>e.flippable&&(r.value.x||e.isFlipped.x))),d=(0,i.Fl)((()=>e.flippable&&(r.value.y||e.isFlipped.y))),c=(0,i.Fl)((()=>{const n={};return e.isNested||(n.top=(d.value?e.y-s.value:e.y)+"px",n.left=e.x+"px"),n})),p=(0,i.Fl)((()=>({"--flipped-x":u.value,"--flipped-y":d.value,"--nested":e.isNested}))),v=(0,i.Fl)((()=>e.items.map((e=>({...e,hover:!1})))));return(0,i.YP)([()=>e.y,()=>e.items],(()=>{var n,t,o,i;s.value=30*e.items.length;const l=(null==(t=null==(n=a.value)?void 0:n.parentElement)?void 0:t.offsetWidth)??0,u=(null==(i=null==(o=a.value)?void 0:o.parentElement)?void 0:i.offsetHeight)??0;r.value.x=!e.isNested&&e.x>.75*l,r.value.y=!e.isNested&&e.y+s.value>u-20})),W(a,(()=>{e.modelValue&&n("update:modelValue",!1)})),{el:a,activeMenu:l,flippedX:u,flippedY:d,styles:c,classes:p,itemsWithHoverProperty:v,onClick:e=>{!e.submenu&&e.value&&(n("click",e.value),n("update:modelValue",!1))},onChildClick:t=>{n("click",t),l.value=-1,e.isNested||n("update:modelValue",!1)},onClickOutside:W,onMouseEnter:(n,o)=>{e.items[o].submenu&&(l.value=o,null!==t&&(clearTimeout(t),t=null))},onMouseLeave:(n,o)=>{e.items[o].submenu&&(t=window.setTimeout((()=>{l.value=-1,t=null}),200))}}}}),ie=["onMouseenter","onMouseleave","onClick"],ae={class:"flex-fill"},le={key:0,class:"__submenu-icon",style:{"line-height":"1em"}},se=[(0,i._)("svg",{width:"13",height:"13",viewBox:"-60 120 250 250"},[(0,i._)("path",{d:"M160.875 279.5625 L70.875 369.5625 L70.875 189.5625 L160.875 279.5625 Z",stroke:"none",fill:"white"})],-1)],re=b(oe,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("context-menu",!0);return(0,i.wg)(),(0,i.j4)(l.uT,{name:"slide-fade"},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",{ref:"el",class:(0,a.C_)(["baklava-context-menu",e.classes]),style:(0,a.j5)(e.styles)},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.itemsWithHoverProperty,((n,t)=>((0,i.wg)(),(0,i.iD)(i.HY,null,[n.isDivider?((0,i.wg)(),(0,i.iD)("div",{key:`d-${t}`,class:"divider"})):((0,i.wg)(),(0,i.iD)("div",{key:`i-${t}`,class:(0,a.C_)(["item",{submenu:!!n.submenu,"--disabled":!!n.disabled}]),onMouseenter:n=>e.onMouseEnter(n,t),onMouseleave:n=>e.onMouseLeave(n,t),onClick:(0,l.iM)((t=>e.onClick(n)),["stop","prevent"])},[(0,i._)("div",ae,(0,a.zw)(n.label),1),n.submenu?((0,i.wg)(),(0,i.iD)("div",le,se)):(0,i.kq)("",!0),n.submenu?((0,i.wg)(),(0,i.j4)(u,{key:1,value:e.activeMenu===t,items:n.submenu,"is-nested":!0,"is-flipped":{x:e.flippedX,y:e.flippedY},flippable:e.flippable,onClick:e.onChildClick},null,8,["value","items","is-flipped","flippable","onClick"])):(0,i.kq)("",!0)],42,ie))],64)))),256))],6),[[l.F8,e.modelValue]])])),_:1})}]]),ue={},de={xmlns:"http://www.w3.org/2000/svg",class:"baklava-icon",width:"16",height:"16",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},ce=[(0,i._)("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"},null,-1),(0,i._)("circle",{cx:"12",cy:"12",r:"1"},null,-1),(0,i._)("circle",{cx:"12",cy:"19",r:"1"},null,-1),(0,i._)("circle",{cx:"12",cy:"5",r:"1"},null,-1)],pe=b(ue,[["render",function(e,n){return(0,i.wg)(),(0,i.iD)("svg",de,ce)}]]),ve=(0,i.aZ)({props:{node:{type:Object,required:!0},intf:{type:Object,required:!0}},setup(e){const{viewModel:n}=f(),t=(0,i.f3)("hoveredOver"),a=(0,o.iH)(null),l=(0,i.Fl)((()=>e.intf.connectionCount>0)),s=(0,i.Fl)((()=>({"--input":e.intf.isInput,"--output":!e.intf.isInput,"--connected":l.value}))),r=(0,i.Fl)((()=>e.intf.component&&0===e.intf.connectionCount&&(e.intf.isInput||!e.intf.port))),u=()=>{a.value&&n.value.hooks.renderInterface.execute({intf:e.intf,el:a.value})};return(0,i.bv)(u),(0,i.ic)(u),{el:a,isConnected:l,classes:s,showComponent:r,startHover:()=>{t(e.intf)},endHover:()=>{t(void 0)},openSidebar:()=>{const t=n.value.displayedGraph.sidebar;t.nodeId=e.node.id,t.optionName=e.intf.name,t.visible=!0}}}}),me=["id"],fe={key:2,class:"align-middle"},he=b(ve,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",{id:e.intf.id,ref:"el",class:(0,a.C_)(["baklava-node-interface",e.classes])},[e.intf.port?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"__port",onPointerover:n[0]||(n[0]=(...n)=>e.startHover&&e.startHover(...n)),onPointerout:n[1]||(n[1]=(...n)=>e.endHover&&e.endHover(...n))},null,32)):(0,i.kq)("",!0),e.showComponent?((0,i.wg)(),(0,i.j4)((0,i.LL)(e.intf.component),{key:1,modelValue:e.intf.value,"onUpdate:modelValue":n[2]||(n[2]=n=>e.intf.value=n),node:e.node,intf:e.intf,onOpenSidebar:e.openSidebar},null,40,["modelValue","node","intf","onOpenSidebar"])):((0,i.wg)(),(0,i.iD)("span",fe,(0,a.zw)(e.intf.name),1))],10,me)}]]),ge=["id","data-node-type"],ye=["onPointerdown"],we={class:"__title-label"},be={class:"__menu"},xe=["onKeydown"],ke={class:"__content"},_e={class:"__outputs"},Ce={class:"__inputs"},Me=(0,i.aZ)({__name:"Node",props:{node:null,selected:{type:Boolean,default:!1}},emits:["select"],setup(e,{emit:n}){const t=e,{viewModel:r}=f(),{graph:u,switchGraph:d}=h(),c=g((0,o.Vh)(t.node,"position")),p=(0,o.iH)(null),v=(0,o.iH)(!1),m=(0,o.iH)(""),y=(0,o.iH)(null),w=(0,o.iH)(!1),b=(0,i.Fl)((()=>{const e=[{value:"rename",label:"Rename"},{value:"delete",label:"Delete"}];return t.node.type.startsWith(s.qM)&&e.push({value:"editSubgraph",label:"Edit Subgraph"}),e})),x=(0,i.Fl)((()=>({"--selected":t.selected,"--dragging":c.dragging.value,"--two-column":!!t.node.twoColumn}))),k=(0,i.Fl)((()=>{var e,n;return{top:`${(null==(e=t.node.position)?void 0:e.y)??0}px`,left:`${(null==(n=t.node.position)?void 0:n.x)??0}px`,width:`${t.node.width??200}px`}})),_=(0,i.Fl)((()=>Object.values(t.node.inputs).filter((e=>!e.hidden)))),C=(0,i.Fl)((()=>Object.values(t.node.outputs).filter((e=>!e.hidden)))),M=()=>{n("select")},E=e=>{c.onPointerDown(e),document.addEventListener("pointermove",c.onPointerMove),document.addEventListener("pointerup",N),M()},N=()=>{c.onPointerUp(),document.removeEventListener("pointermove",c.onPointerMove),document.removeEventListener("pointerup",N)},I=()=>{w.value=!0},D=async e=>{var n;switch(e){case"delete":u.value.removeNode(t.node);break;case"rename":m.value=t.node.title,v.value=!0,await(0,i.Y3)(),null==(n=y.value)||n.focus();break;case"editSubgraph":d(t.node.template)}},O=()=>{t.node.title=m.value,v.value=!1},S=()=>{p.value&&r.value.hooks.renderNode.execute({node:t.node,el:p.value})};return(0,i.bv)(S),(0,i.ic)(S),(n,t)=>((0,i.wg)(),(0,i.iD)("div",{id:e.node.id,ref_key:"el",ref:p,class:(0,a.C_)(["baklava-node",(0,o.SU)(x)]),style:(0,a.j5)((0,o.SU)(k)),"data-node-type":e.node.type,onPointerdown:M},[(0,i._)("div",{class:"__title",onPointerdown:(0,l.iM)(E,["self","stop"])},[v.value?(0,i.wy)(((0,i.wg)(),(0,i.iD)("input",{key:1,ref_key:"renameInputEl",ref:y,"onUpdate:modelValue":t[1]||(t[1]=e=>m.value=e),type:"text",class:"baklava-input",placeholder:"Node Name",onBlur:O,onKeydown:(0,l.D2)(O,["enter"])},null,40,xe)),[[l.nr,m.value]]):((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",we,(0,a.zw)(e.node.title),1),(0,i._)("div",be,[(0,i.Wm)(pe,{class:"--clickable",onClick:I}),(0,i.Wm)(re,{modelValue:w.value,"onUpdate:modelValue":t[0]||(t[0]=e=>w.value=e),x:0,y:0,items:(0,o.SU)(b),onClick:D},null,8,["modelValue","items"])])],64))],40,ye),(0,i._)("div",ke,[(0,i._)("div",_e,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,o.SU)(C),(n=>((0,i.wg)(),(0,i.j4)(he,{key:n.id,node:e.node,intf:n},null,8,["node","intf"])))),128))]),(0,i._)("div",Ce,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,o.SU)(_),(n=>((0,i.wg)(),(0,i.j4)(he,{key:n.id,node:e.node,intf:n},null,8,["node","intf"])))),128))])])],46,ge))}}),Ee=(0,i.aZ)({props:{x1:{type:Number,required:!0},y1:{type:Number,required:!0},x2:{type:Number,required:!0},y2:{type:Number,required:!0},state:{type:Number,default:w.NONE},isTemporary:{type:Boolean,default:!1}},setup(e){const{viewModel:n}=f(),{graph:t}=h(),o=(e,n)=>[(e+t.value.panning.x)*t.value.scaling,(n+t.value.panning.y)*t.value.scaling];return{d:(0,i.Fl)((()=>{const[t,i]=o(e.x1,e.y1),[a,l]=o(e.x2,e.y2);if(n.value.settings.useStraightConnections)return`M ${t} ${i} L ${a} ${l}`;{const e=.3*Math.abs(t-a);return`M ${t} ${i} C ${t+e} ${i}, ${a-e} ${l}, ${a} ${l}`}})),classes:(0,i.Fl)((()=>({"--temporary":e.isTemporary,"--allowed":e.state===w.ALLOWED,"--forbidden":e.state===w.FORBIDDEN})))}}}),Ne=["d"],Ie=b(Ee,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("path",{class:(0,a.C_)(["baklava-connection",e.classes]),d:e.d},null,10,Ne)}]]);function De(e){const n=document.getElementById(e.id),t=null==n?void 0:n.getElementsByClassName("__port");return{node:(null==n?void 0:n.closest(".baklava-node"))??null,interface:n,port:t&&t.length>0?t[0]:null}}const Oe=b((0,i.aZ)({components:{"connection-view":Ie},props:{connection:{type:Object,required:!0}},setup(e){const{graph:n}=h();let t;const a=(0,o.iH)({x1:0,y1:0,x2:0,y2:0}),l=(0,i.Fl)((()=>e.connection.isInDanger?w.FORBIDDEN:w.NONE)),s=(0,i.Fl)((()=>{var t;return null==(t=n.value.findNodeById(e.connection.from.nodeId))?void 0:t.position})),r=(0,i.Fl)((()=>{var t;return null==(t=n.value.findNodeById(e.connection.to.nodeId))?void 0:t.position})),u=e=>e.node&&e.interface&&e.port?[e.node.offsetLeft+e.interface.offsetLeft+e.port.offsetLeft+e.port.clientWidth/2,e.node.offsetTop+e.interface.offsetTop+e.port.offsetTop+e.port.clientHeight/2]:[0,0],d=()=>{const n=De(e.connection.from),o=De(e.connection.to);n.node&&o.node&&(t||(t=new ResizeObserver((()=>{d()})),t.observe(n.node),t.observe(o.node)));const[i,l]=u(n),[s,r]=u(o);a.value={x1:i,y1:l,x2:s,y2:r}};return(0,i.bv)((async()=>{await(0,i.Y3)(),d()})),(0,i.Jd)((()=>{t&&t.disconnect()})),(0,i.YP)([s,r],(()=>d()),{deep:!0}),{d:a,state:l}}}),[["render",function(e,n,t,o,a,l){const s=(0,i.up)("connection-view");return(0,i.wg)(),(0,i.j4)(s,{x1:e.d.x1,y1:e.d.y1,x2:e.d.x2,y2:e.d.y2,state:e.state},null,8,["x1","y1","x2","y2","state"])}]]);function Se(e){return e.node&&e.interface&&e.port?[e.node.offsetLeft+e.interface.offsetLeft+e.port.offsetLeft+e.port.clientWidth/2,e.node.offsetTop+e.interface.offsetTop+e.port.offsetTop+e.port.clientHeight/2]:[0,0]}const He=b((0,i.aZ)({components:{"connection-view":Ie},props:{connection:{type:Object,required:!0}},setup(e){const n=(0,i.Fl)((()=>e.connection?e.connection.status:w.NONE));return{d:(0,i.Fl)((()=>{if(!e.connection)return{input:[0,0],output:[0,0]};const n=Se(De(e.connection.from)),t=e.connection.to?Se(De(e.connection.to)):[e.connection.mx||n[0],e.connection.my||n[1]];return e.connection.from.isInput?{input:t,output:n}:{input:n,output:t}})),status:n}}}),[["render",function(e,n,t,o,a,l){const s=(0,i.up)("connection-view");return(0,i.wg)(),(0,i.j4)(s,{x1:e.d.input[0],y1:e.d.input[1],x2:e.d.output[0],y2:e.d.output[1],state:e.status,"is-temporary":""},null,8,["x1","y1","x2","y2","state"])}]]),Pe=(0,i.aZ)({setup(){const{graph:e}=h(),n=(0,o.iH)(null),t=(0,o.iH)(300),a=(0,i.Fl)((()=>{const n=e.value.sidebar.nodeId;return e.value.nodes.find((e=>e.id===n))})),l=(0,i.Fl)((()=>({width:`${t.value}px`}))),s=(0,i.Fl)((()=>a.value?[...Object.values(a.value.inputs),...Object.values(a.value.outputs)].filter((e=>e.displayInSidebar&&e.component)):[])),r=e=>{var o,i;const a=(null==(i=null==(o=n.value)?void 0:o.parentElement)?void 0:i.getBoundingClientRect().width)??500;t.value-=e.movementX,t.value<300?t.value=300:t.value>.9*a&&(t.value=.9*a)};return{el:n,graph:e,node:a,styles:l,displayedInterfaces:s,startResize:()=>{window.addEventListener("mousemove",r),window.addEventListener("mouseup",(()=>{window.removeEventListener("mousemove",r)}),{once:!0})},close:()=>{e.value.sidebar.visible=!1}}}}),je={class:"__header"},Te={class:"__node-name"},Fe=b(Pe,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",{ref:"el",class:(0,a.C_)(["baklava-sidebar",{"--open":e.graph.sidebar.visible}]),style:(0,a.j5)(e.styles)},[(0,i._)("div",{class:"__resizer",onMousedown:n[0]||(n[0]=(...n)=>e.startResize&&e.startResize(...n))},null,32),(0,i._)("div",je,[(0,i._)("button",{tabindex:"-1",class:"__close",onClick:n[1]||(n[1]=(...n)=>e.close&&e.close(...n))}," × "),(0,i._)("div",Te,[(0,i._)("b",null,(0,a.zw)(e.node?e.node.title:""),1)])]),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.displayedInterfaces,(n=>((0,i.wg)(),(0,i.iD)("div",{key:n.id,class:"__interface"},[((0,i.wg)(),(0,i.j4)((0,i.LL)(n.component),{modelValue:n.value,"onUpdate:modelValue":e=>n.value=e,node:e.node,intf:n},null,8,["modelValue","onUpdate:modelValue","node","intf"]))])))),128))],6)}]]),Ve=b((0,i.aZ)({setup(){const{viewModel:e}=f(),{graph:n}=h(),t=(0,o.iH)(null),a=(0,o.iH)(!1);let l,s=!1,r={x1:0,y1:0,x2:0,y2:0};const u=(e,n)=>[(e-r.x1)/(r.x2-r.x1)*l.canvas.clientWidth,(n-r.y1)/(r.y2-r.y1)*l.canvas.clientHeight],d=e=>{if(e){const n=e.querySelector(".__content");if(n){const e=c(n);if(e)return e}const t=c(e);if(t)return t}return"gray"},c=e=>{const n=getComputedStyle(e).backgroundColor;if(n&&"rgba(0, 0, 0, 0)"!==n)return n},p=()=>{const e=t.value.parentElement.offsetWidth,o=t.value.parentElement.offsetHeight,i=e/n.value.scaling-n.value.panning.x,a=o/n.value.scaling-n.value.panning.y;return{x1:-n.value.panning.x,y1:-n.value.panning.y,x2:i,y2:a}},v=e=>{if(s){const[i,a]=(t=e.offsetX,o=e.offsetY,[t*(r.x2-r.x1)/l.canvas.clientWidth+r.x1,o*(r.y2-r.y1)/l.canvas.clientHeight+r.y1]),s=p(),u=(s.x1-s.x2)/2,d=(s.y1-s.y2)/2;n.value.panning.x=-(i+u),n.value.panning.y=-(a+d)}var t,o},m=()=>{s=!1};return(0,i.bv)((()=>{l=t.value.getContext("2d"),l.imageSmoothingQuality="high",(()=>{var t,o;if(!l)return;const i=new Map,s=new Map;for(const e of n.value.nodes){const n=(c=e,document.getElementById(c.id)),a=(null==n?void 0:n.clientWidth)??0,l=(null==n?void 0:n.clientHeight)??0,r=(null==(t=e.position)?void 0:t.x)??0,u=(null==(o=e.position)?void 0:o.y)??0;i.set(e,{x1:r,y1:u,x2:r+a,y2:u+l}),s.set(e,n)}var c;const v={x1:Number.MAX_SAFE_INTEGER,y1:Number.MAX_SAFE_INTEGER,x2:Number.MIN_SAFE_INTEGER,y2:Number.MIN_SAFE_INTEGER};for(const e of i.values())e.x1v.x2&&(v.x2=e.x2),e.y2>v.y2&&(v.y2=e.y2);v.x1-=50,v.y1-=50,v.x2+=50,v.y2+=50,r=v,l.clearRect(0,0,l.canvas.width,l.canvas.height),l.strokeStyle="white";for(const t of n.value.connections){const[n,o]=Se(De(t.from)),[i,a]=Se(De(t.to)),[s,r]=u(n,o),[d,c]=u(i,a);if(l.beginPath(),l.moveTo(s,r),e.value.settings.useStraightConnections)l.lineTo(d,c);else{const e=.3*Math.abs(s-d);l.bezierCurveTo(s+e,r,d-e,c,d,c)}l.stroke()}l.strokeStyle="lightgray";for(const[e,n]of i.entries()){const[t,o]=u(n.x1,n.y1),[i,a]=u(n.x2,n.y2);l.fillStyle=d(s.get(e)),l.beginPath(),l.rect(t,o,i-t,a-o),l.fill(),l.stroke()}if(a.value){const e=p(),[n,t]=u(e.x1,e.y1),[o,i]=u(e.x2,e.y2);l.fillStyle="rgba(255, 255, 255, 0.2)",l.fillRect(n,t,o-n,i-t)}})()})),{canvas:t,showViewBounds:a,mousedown:e=>{0===e.button&&(s=!0,v(e))},mousemove:v,mouseup:m,mouseenter:()=>{a.value=!0},mouseleave:()=>{a.value=!1,m()}}}}),[["render",function(e,n,t,o,a,s){return(0,i.wg)(),(0,i.iD)("canvas",{ref:"canvas",class:"baklava-minimap",onMouseenter:n[0]||(n[0]=(...n)=>e.mouseenter&&e.mouseenter(...n)),onMouseleave:n[1]||(n[1]=(...n)=>e.mouseleave&&e.mouseleave(...n)),onMousedown:n[2]||(n[2]=(0,l.iM)(((...n)=>e.mousedown&&e.mousedown(...n)),["self"])),onMousemove:n[3]||(n[3]=(0,l.iM)(((...n)=>e.mousemove&&e.mousemove(...n)),["self"])),onMouseup:n[4]||(n[4]=(...n)=>e.mouseup&&e.mouseup(...n))},null,544)}]]),We=(0,i.aZ)({components:{ContextMenu:re,VerticalDots:pe},props:{type:{type:String,required:!0},title:{type:String,required:!0}},setup(e){const{viewModel:n}=f(),{switchGraph:t}=h(),a=(0,o.iH)(!1),l=(0,i.Fl)((()=>e.type.startsWith(s.qM)));return{showContextMenu:a,hasContextMenu:l,contextMenuItems:[{label:"Edit Subgraph",value:"editSubgraph"},{label:"Delete Subgraph",value:"deleteSubgraph"}],openContextMenu:()=>{a.value=!0},onContextMenuClick:o=>{const i=e.type.substring(s.qM.length),a=n.value.editor.graphTemplates.find((e=>e.id===i));if(a)switch(o){case"editSubgraph":t(a);break;case"deleteSubgraph":n.value.editor.removeGraphTemplate(a)}}}}}),Ue=["data-node-type"],Ae={class:"__title"},Le={class:"__title-label"},$e={key:0,class:"__menu"},qe=b(We,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("vertical-dots"),d=(0,i.up)("context-menu");return(0,i.wg)(),(0,i.iD)("div",{class:"baklava-node --palette","data-node-type":e.type},[(0,i._)("div",Ae,[(0,i._)("div",Le,(0,a.zw)(e.title),1),e.hasContextMenu?((0,i.wg)(),(0,i.iD)("div",$e,[(0,i.Wm)(u,{class:"--clickable",onPointerdown:n[0]||(n[0]=(0,l.iM)((()=>{}),["stop","prevent"])),onClick:(0,l.iM)(e.openContextMenu,["stop","prevent"])},null,8,["onClick"]),(0,i.Wm)(d,{modelValue:e.showContextMenu,"onUpdate:modelValue":n[1]||(n[1]=n=>e.showContextMenu=n),x:-100,y:0,items:e.contextMenuItems,onClick:e.onContextMenuClick,onPointerdown:n[2]||(n[2]=(0,l.iM)((()=>{}),["stop","prevent"]))},null,8,["modelValue","items","onClick"])])):(0,i.kq)("",!0)])],8,Ue)}]]);let Be;const ze=new Uint8Array(16);function Re(){if(!Be&&(Be="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Be))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Be(ze)}const Ge=[];for(let e=0;e<256;++e)Ge.push((e+256).toString(16).slice(1));const Ye={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Ke(e,n,t){if(Ye.randomUUID&&!n&&!e)return Ye.randomUUID();const o=(e=e||{}).random||(e.rng||Re)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,n){t=t||0;for(let e=0;e<16;++e)n[t+e]=o[e];return n}return function(e,n=0){return(Ge[e[n+0]]+Ge[e[n+1]]+Ge[e[n+2]]+Ge[e[n+3]]+"-"+Ge[e[n+4]]+Ge[e[n+5]]+"-"+Ge[e[n+6]]+Ge[e[n+7]]+"-"+Ge[e[n+8]]+Ge[e[n+9]]+"-"+Ge[e[n+10]]+Ge[e[n+11]]+Ge[e[n+12]]+Ge[e[n+13]]+Ge[e[n+14]]+Ge[e[n+15]]).toLowerCase()}(o)}const Ze=(0,i.aZ)({props:{intf:{type:Object,required:!0}},setup:e=>({onClick:()=>{e.intf.callback&&e.intf.callback()}})}),Xe=["title"],Qe=b(Ze,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("button",{class:"baklava-button --block",title:e.intf.name,onClick:n[0]||(n[0]=(...n)=>e.onClick&&e.onClick(...n))},(0,a.zw)(e.intf.name),9,Xe)}]]);class Je extends r.I{constructor(e,n){super(e,void 0),this.component=(0,o.Xl)(Qe),this.callback=n,this.setPort(!1)}}const en=(0,i.aZ)({props:{intf:{type:Object,required:!0}}}),nn=["title"],tn=(0,i._)("div",{class:"__checkmark-container"},[(0,i._)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 18 18"},[(0,i._)("path",{class:"__checkmark",d:"M 6 5 L 6 10 L 16 10",transform:"rotate(-45 10 10)"})])],-1),on={class:"__label"},an=b(en,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",{class:(0,a.C_)(["baklava-checkbox",{"--checked":e.intf.value}]),title:e.intf.name,onClick:n[0]||(n[0]=n=>e.intf.value=!e.intf.value)},[tn,(0,i._)("div",on,(0,a.zw)(e.intf.name),1)],10,nn)}]]);class ln extends r.I{constructor(){super(...arguments),this.component=(0,o.Xl)(an)}}class sn extends r.I{constructor(e,n,t,o){super(e,n),this.min=t,this.max=o}validate(e){return(!this.min||e>=this.min)&&(!this.max||e<=this.max)}}const rn=(e,n=3)=>{const t=(0,o.iH)(null),a=(0,o.iH)(!1),l=(0,o.iH)(!1),s=(0,o.iH)("0"),r=(0,i.Fl)((()=>{const t=e.value.value.toFixed(n);return t.length>9?e.value.value.toExponential(4):t})),u=n=>!Number.isNaN(n)&&(!function(e){return"validate"in e}(e.value)||e.value.validate(n)),d=n=>{u(n)&&(e.value.value=n)};return(0,i.YP)(s,(()=>{l.value=!1})),{editMode:a,invalid:l,tempValue:s,inputEl:t,stringRepresentation:r,validate:u,setValue:d,enterEditMode:async()=>{s.value=e.value.value.toFixed(n),a.value=!0,await(0,i.Y3)(),t.value&&t.value.focus()},leaveEditMode:()=>{const e=parseFloat(s.value);u(e)?(d(e),a.value=!1):l.value=!0}}},un={},dn={xmlns:"http://www.w3.org/2000/svg",class:"baklava-icon",width:"24",height:"24",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},cn=[(0,i._)("polyline",{points:"6 9 12 15 18 9"},null,-1)],pn=b(un,[["render",function(e,n){return(0,i.wg)(),(0,i.iD)("svg",dn,cn)}]]),vn=(0,i.aZ)({components:{"i-arrow":pn},props:{intf:{type:Object,required:!0}},setup(e){const n=rn((0,o.Vh)(e,"intf"),0);return{...n,increment:()=>{n.setValue(e.intf.value+1)},decrement:()=>{n.setValue(e.intf.value-1)}}}}),mn={class:"baklava-num-input"},fn=["title"],hn={class:"__value"},gn={key:1,class:"__content"},yn=b(vn,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("i-arrow");return(0,i.wg)(),(0,i.iD)("div",mn,[(0,i._)("div",{class:"__button --dec",onClick:n[0]||(n[0]=(...n)=>e.decrement&&e.decrement(...n))},[(0,i.Wm)(u)]),e.editMode?((0,i.wg)(),(0,i.iD)("div",gn,[(0,i.wy)((0,i._)("input",{ref:"inputEl","onUpdate:modelValue":n[2]||(n[2]=n=>e.tempValue=n),type:"number",class:(0,a.C_)(["baklava-input",{"--invalid":e.invalid}]),style:{"text-align":"right"},onBlur:n[3]||(n[3]=(...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),onKeydown:n[4]||(n[4]=(0,l.D2)(((...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),["enter"]))},null,34),[[l.nr,e.tempValue]])])):((0,i.wg)(),(0,i.iD)("div",{key:0,class:"__content",onClick:n[1]||(n[1]=(...n)=>e.enterEditMode&&e.enterEditMode(...n))},[(0,i._)("div",{class:"__label",title:e.intf.name},(0,a.zw)(e.intf.name),9,fn),(0,i._)("div",hn,(0,a.zw)(e.stringRepresentation),1)])),(0,i._)("div",{class:"__button --inc",onClick:n[5]||(n[5]=(...n)=>e.increment&&e.increment(...n))},[(0,i.Wm)(u)])])}]]);class wn extends sn{constructor(){super(...arguments),this.component=(0,o.Xl)(yn)}validate(e){return Number.isInteger(e)&&super.validate(e)}}const bn=(0,i.aZ)({components:{"i-arrow":pn},props:{intf:{type:Object,required:!0}},setup(e){const n=rn((0,o.Vh)(e,"intf"));return{...n,increment:()=>{n.setValue(e.intf.value+.1)},decrement:()=>{n.setValue(e.intf.value-.1)}}}}),xn={class:"baklava-num-input"},kn=["title"],_n={class:"__value"},Cn={key:1,class:"__content"},Mn=b(bn,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("i-arrow");return(0,i.wg)(),(0,i.iD)("div",xn,[(0,i._)("div",{class:"__button --dec",onClick:n[0]||(n[0]=(...n)=>e.decrement&&e.decrement(...n))},[(0,i.Wm)(u)]),e.editMode?((0,i.wg)(),(0,i.iD)("div",Cn,[(0,i.wy)((0,i._)("input",{ref:"inputEl","onUpdate:modelValue":n[2]||(n[2]=n=>e.tempValue=n),type:"number",class:(0,a.C_)(["baklava-input",{"--invalid":e.invalid}]),style:{"text-align":"right"},onBlur:n[3]||(n[3]=(...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),onKeydown:n[4]||(n[4]=(0,l.D2)(((...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),["enter"]))},null,34),[[l.nr,e.tempValue]])])):((0,i.wg)(),(0,i.iD)("div",{key:0,class:"__content",onClick:n[1]||(n[1]=(...n)=>e.enterEditMode&&e.enterEditMode(...n))},[(0,i._)("div",{class:"__label",title:e.intf.name},(0,a.zw)(e.intf.name),9,kn),(0,i._)("div",_n,(0,a.zw)(e.stringRepresentation),1)])),(0,i._)("div",{class:"__button --inc",onClick:n[5]||(n[5]=(...n)=>e.increment&&e.increment(...n))},[(0,i.Wm)(u)])])}]]);class En extends sn{constructor(){super(...arguments),this.component=(0,o.Xl)(Mn)}}const Nn=(0,i.aZ)({components:{"i-arrow":pn},props:{intf:{type:Object,required:!0}},setup(e){const n=(0,o.iH)(null),t=(0,o.iH)(!1),a=(0,i.Fl)((()=>e.intf.items.find((n=>"string"==typeof n?n===e.intf.value:n.value===e.intf.value)))),l=(0,i.Fl)((()=>a.value?"string"==typeof a.value?a.value:a.value.text:""));return W(n,(()=>{t.value=!1})),{el:n,open:t,selectedItem:a,selectedText:l,setSelected:n=>{e.intf.value="string"==typeof n?n:n.value}}}}),In=["title"],Dn={class:"__selected"},On={class:"__text"},Sn={class:"__icon"},Hn={class:"__dropdown"},Pn={class:"item --header"},jn=["onClick"],Tn=b(Nn,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("i-arrow");return(0,i.wg)(),(0,i.iD)("div",{ref:"el",class:(0,a.C_)(["baklava-select",{"--open":e.open}]),title:e.intf.name,onClick:n[0]||(n[0]=n=>e.open=!e.open)},[(0,i._)("div",Dn,[(0,i._)("div",On,(0,a.zw)(e.selectedText),1),(0,i._)("div",Sn,[(0,i.Wm)(u)])]),(0,i.Wm)(l.uT,{name:"slide-fade"},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",Hn,[(0,i._)("div",Pn,(0,a.zw)(e.intf.name),1),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.intf.items,((n,t)=>((0,i.wg)(),(0,i.iD)("div",{key:t,class:(0,a.C_)(["item",{"--active":n===e.selectedItem}]),onClick:t=>e.setSelected(n)},(0,a.zw)("string"==typeof n?n:n.text),11,jn)))),128))],512),[[l.F8,e.open]])])),_:1})],10,In)}]]);class Fn extends r.I{constructor(e,n,t){super(e,n),this.component=(0,o.Xl)(Tn),this.items=t}}const Vn=(0,i.aZ)({props:{intf:{type:Object,required:!0}},setup(e){const n=(0,o.iH)(null),t=rn((0,o.Vh)(e,"intf")),a=(0,o.iH)(!1),l=(0,o.iH)(!1),s=(0,i.Fl)((()=>Math.min(100,Math.max(0,100*e.intf.value/(e.intf.max-e.intf.min)))));return{...t,el:n,percentage:s,mousedown:()=>{t.editMode.value||(l.value=!0)},mouseup:()=>{t.editMode.value||(a.value||t.enterEditMode(),l.value=!1,a.value=!1)},mousemove:o=>{if(t.editMode.value)return;const i=Math.max(e.intf.min,Math.min(e.intf.max,(e.intf.max-e.intf.min)*(o.offsetX/n.value.clientWidth)+e.intf.min));l.value&&(t.setValue(i),a.value=!0)},mouseleave:o=>{t.editMode.value||(l.value&&(o.offsetX>=n.value.clientWidth?t.setValue(e.intf.max):o.offsetX<=0&&t.setValue(e.intf.min)),l.value=!1,a.value=!1)}}}}),Wn={key:0,class:"__content"},Un={class:"__label"},An={class:"__value"},Ln={key:1,class:"__content"},$n=b(Vn,[["render",function(e,n,t,o,s,r){return(0,i.wg)(),(0,i.iD)("div",{ref:"el",class:(0,a.C_)(["baklava-slider",{"baklava-ignore-mouse":!e.editMode}]),onPointerdown:n[3]||(n[3]=(...n)=>e.mousedown&&e.mousedown(...n)),onPointerup:n[4]||(n[4]=(...n)=>e.mouseup&&e.mouseup(...n)),onPointermove:n[5]||(n[5]=(...n)=>e.mousemove&&e.mousemove(...n)),onPointerleave:n[6]||(n[6]=(...n)=>e.mouseleave&&e.mouseleave(...n))},[(0,i._)("div",{class:"__slider",style:(0,a.j5)({width:e.percentage+"%"})},null,4),e.editMode?((0,i.wg)(),(0,i.iD)("div",Ln,[(0,i.wy)((0,i._)("input",{ref:"inputEl","onUpdate:modelValue":n[0]||(n[0]=n=>e.tempValue=n),type:"number",class:(0,a.C_)(["baklava-input",{"--invalid":e.invalid}]),style:{"text-align":"right"},onBlur:n[1]||(n[1]=(...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),onKeydown:n[2]||(n[2]=(0,l.D2)(((...n)=>e.leaveEditMode&&e.leaveEditMode(...n)),["enter"]))},null,34),[[l.nr,e.tempValue]])])):((0,i.wg)(),(0,i.iD)("div",Wn,[(0,i._)("div",Un,(0,a.zw)(e.intf.name),1),(0,i._)("div",An,(0,a.zw)(e.stringRepresentation),1)]))],34)}]]),qn=b((0,i.aZ)({props:{intf:{type:Object,required:!0}}}),[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("div",null,(0,a.zw)(e.intf.value),1)}]]);class Bn extends r.I{constructor(e,n){super(e,n),this.component=(0,o.Xl)(qn),this.setPort(!1)}}const zn=(0,i.aZ)({props:{intf:{type:Object,required:!0},modelValue:{type:String,required:!0}},emits:["update:modelValue"],setup:(e,{emit:n})=>({v:(0,i.Fl)({get:()=>e.modelValue,set:e=>{n("update:modelValue",e)}})})}),Rn=["placeholder","title"],Gn=b(zn,[["render",function(e,n,t,o,a,s){return(0,i.wg)(),(0,i.iD)("div",null,[(0,i.wy)((0,i._)("input",{"onUpdate:modelValue":n[0]||(n[0]=n=>e.v=n),type:"text",class:"baklava-input",placeholder:e.intf.name,title:e.intf.name},null,8,Rn),[[l.nr,e.v]])])}]]);class Yn extends r.I{constructor(){super(...arguments),this.component=(0,o.Xl)(Gn)}}const Kn="__baklava_SubgraphInputNode",Zn="__baklava_SubgraphOutputNode",Xn=(0,u.h)({type:Kn,title:"Subgraph Input",inputs:{name:()=>new Yn("Name","Input").setPort(!1)},outputs:{placeholder:()=>new r.I("Connection",void 0)},onCreate(){this.graphInterfaceId=Ke()}}),Qn=(0,u.h)({type:Zn,title:"Subgraph Output",inputs:{name:()=>new Yn("Name","Output").setPort(!1),placeholder:()=>new r.I("Connection",void 0)},onCreate(){this.graphInterfaceId=Ke()}});function Jn(e,n,t){if(!n.template)return!1;if((0,s.Ds)(n.template)===t)return!0;const o=e.graphTemplates.find((e=>(0,s.Ds)(e)===t));return!!o&&o.nodes.filter((e=>e.type.startsWith(s.qM))).some((t=>Jn(e,n,t.type)))}const et=(0,i.aZ)({components:{PaletteEntry:qe},setup(){const{viewModel:e}=f(),{x:n,y:t}=function(e={}){const{target:n=F}=e,t=(0,o.iH)(!1),i=(0,o.iH)(e.initialValue||{});Object.assign(i.value,Y,i.value);const a=n=>{t.value=!0,e.pointerTypes&&!e.pointerTypes.includes(n.pointerType)||(i.value=function(e,n,t=!1){return n.reduce(((n,o)=>(o in e&&(t&&void 0===e[o]||(n[o]=e[o])),n)),{})}(n,K,!1))};return n&&(V(n,"pointerdown",a,{passive:!0}),V(n,"pointermove",a,{passive:!0}),V(n,"pointerleave",(()=>t.value=!1),{passive:!0})),l=((e,n)=>{for(var t in n||(n={}))z.call(n,t)&&G(e,t,n[t]);if(B)for(var t of B(n))R.call(n,t)&&G(e,t,n[t]);return e})({},function(e){if(!(0,o.dq)(e))return(0,o.BK)(e);const n=Array.isArray(e.value)?new Array(e.value.length):{};for(const t in e.value)n[t]=(0,o.ZM)((()=>({get:()=>e.value[t],set(n){if(Array.isArray(e.value)){const o=[...e.value];o[t]=n,e.value=o}else{const o=j(P({},e.value),{[t]:n});Object.setPrototypeOf(o,e.value),e.value=o}}})));return n}(i)),$(l,q({isInside:t}));var l}(),{transform:a}=y(),l=(0,i.f3)("editorEl"),s=(0,o.iH)(null),r=(0,i.Fl)((()=>{const n=Array.from(e.value.editor.nodeTypes.entries()),t=new Set(n.map((([,e])=>e.category))),o=[];for(const i of t.values()){let t=n.filter((([,e])=>e.category===i));t=e.value.displayedGraph.template?t.filter((([n])=>!Jn(e.value.editor,e.value.displayedGraph,n))):t.filter((([e])=>![Kn,Zn].includes(e))),t.length>0&&o.push({name:i,nodeTypes:Object.fromEntries(t)})}return o.sort(((e,n)=>"default"===e.name?-1:"default"===n.name||e.name>n.name?1:-1)),o})),u=(0,i.Fl)((()=>{if(!s.value||!(null==l?void 0:l.value))return{};const{left:e,top:o}=l.value.getBoundingClientRect();return{top:t.value-o+"px",left:n.value-e+"px"}}));return{draggedNode:s,categories:r,draggedNodeStyles:u,onDragStart:(i,r)=>{s.value={type:i,nodeInformation:r};const u=()=>{const i=(0,o.qj)(new r.type);e.value.displayedGraph.addNode(i);const d=l.value.getBoundingClientRect(),[c,p]=a(n.value-d.left,t.value-d.top);i.position.x=c,i.position.y=p,s.value=null,document.removeEventListener("pointerup",u)};document.addEventListener("pointerup",u)},mouseX:n,mouseY:t}}}),nt={class:"baklava-node-palette"},tt={key:0},ot=b(et,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("PaletteEntry");return(0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i._)("div",nt,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.categories,(n=>((0,i.wg)(),(0,i.iD)("section",{key:n.name},["default"!==n.name?((0,i.wg)(),(0,i.iD)("h1",tt,(0,a.zw)(n.name),1)):(0,i.kq)("",!0),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(n.nodeTypes,((n,t)=>((0,i.wg)(),(0,i.j4)(u,{key:t,type:t,title:n.title,onPointerdown:o=>e.onDragStart(t,n)},null,8,["type","title","onPointerdown"])))),128))])))),128))]),(0,i.Wm)(l.uT,{name:"fade"},{default:(0,i.w5)((()=>[e.draggedNode?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"baklava-dragged-node",style:(0,a.j5)(e.draggedNodeStyles)},[(0,i.Wm)(u,{type:e.draggedNode.type,title:e.draggedNode.nodeInformation.title},null,8,["type","title"])],4)):(0,i.kq)("",!0)])),_:1})],64)}]]),it="SAVE_SUBGRAPH",at="CREATE_SUBGRAPH",lt=[Kn,Zn],st="DELETE_NODES",rt="SWITCH_TO_MAIN_GRAPH";class ut{constructor(e,n){this.type=e,"addNode"===e?this.nodeId=n:this.nodeState=n}undo(e){"addNode"===this.type?this.removeNode(e):this.addNode(e)}redo(e){"addNode"===this.type&&this.nodeState?this.addNode(e):"removeNode"===this.type&&this.nodeId&&this.removeNode(e)}addNode(e){const n=e.editor.nodeTypes.get(this.nodeState.type);if(!n)return;const t=new n.type;e.addNode(t),t.load(this.nodeState),this.nodeId=t.id}removeNode(e){const n=e.nodes.find((e=>e.id===this.nodeId));n&&(this.nodeState=n.save(),e.removeNode(n))}}class dt{constructor(e,n){if(this.type=e,"addConnection"===e)this.connectionId=n;else{const e=n;this.connectionState={id:e.id,from:e.from.id,to:e.to.id}}}undo(e){"addConnection"===this.type?this.removeConnection(e):this.addConnection(e)}redo(e){"addConnection"===this.type&&this.connectionState?this.addConnection(e):"removeConnection"===this.type&&this.connectionId&&this.removeConnection(e)}addConnection(e){const n=e.findNodeInterface(this.connectionState.from),t=e.findNodeInterface(this.connectionState.to);n&&t&&e.addConnection(n,t)}removeConnection(e){const n=e.connections.find((e=>e.id===this.connectionId));n&&(this.connectionState={id:n.id,from:n.from.id,to:n.to.id},e.removeConnection(n))}}class ct{constructor(e){if(this.type="transaction",0===e.length)throw new Error("Can't create a transaction with no steps");this.steps=e}undo(e){for(let n=this.steps.length-1;n>=0;n--)this.steps[n].undo(e)}redo(e){for(let n=0;n',6)],Gt=b(Bt,[["render",function(e,n){return(0,i.wg)(),(0,i.iD)("svg",zt,Rt)}]]),Yt=(0,i.aZ)({props:{command:{type:String,required:!0},title:{type:String,required:!0},icon:{type:Object,required:!1,default:void 0}},setup(){const{viewModel:e}=f();return{viewModel:e}}}),Kt=["disabled","title"],Zt=b(Yt,[["render",function(e,n,t,o,l,s){return(0,i.wg)(),(0,i.iD)("button",{class:"baklava-toolbar-entry baklava-toolbar-button",disabled:!e.viewModel.commandHandler.canExecuteCommand(e.command),title:e.title,onClick:n[0]||(n[0]=n=>e.viewModel.commandHandler.executeCommand(e.command))},[e.icon?((0,i.wg)(),(0,i.j4)((0,i.LL)(e.icon),{key:0})):((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Uk)((0,a.zw)(e.title),1)],64))],8,Kt)}]]),Xt=(0,i.aZ)({components:{ToolbarButton:Zt},setup(){const{viewModel:e}=f();return{isSubgraph:(0,i.Fl)((()=>e.value.displayedGraph!==e.value.editor.graph)),commands:[{command:ht,title:"Copy",icon:Ut},{command:gt,title:"Paste",icon:Tt},{command:pt,title:"Undo",icon:_t},{command:vt,title:"Redo",icon:Nt},{command:at,title:"Create Subgraph",icon:Gt}],subgraphCommands:[{command:it,title:"Save Subgraph",icon:qt},{command:rt,title:"Back to Main Graph",icon:St}]}}}),Qt={class:"baklava-toolbar"},Jt=b(Xt,[["render",function(e,n,t,o,a,l){const s=(0,i.up)("toolbar-button");return(0,i.wg)(),(0,i.iD)("div",Qt,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.commands,(e=>((0,i.wg)(),(0,i.j4)(s,{key:e.command,command:e.command,title:e.title,icon:e.icon},null,8,["command","title","icon"])))),128)),e.isSubgraph?((0,i.wg)(!0),(0,i.iD)(i.HY,{key:0},(0,i.Ko)(e.subgraphCommands,(e=>((0,i.wg)(),(0,i.j4)(s,{key:e.command,command:e.command,title:e.title,icon:e.icon},null,8,["command","title","icon"])))),128)):(0,i.kq)("",!0)])}]]),eo=(0,i.aZ)({components:{Background:x,Node:Me,ConnectionWrapper:Oe,TemporaryConnection:He,Sidebar:Fe,Minimap:Ve,NodePalette:ot,Toolbar:Jt},props:{viewModel:{type:Object,required:!0}},setup(e){const n=Symbol("EditorToken"),t=(0,o.Vh)(e,"viewModel");m=t;const a=(0,o.iH)(null);(0,i.JJ)("editorEl",a);const l=(0,i.Fl)((()=>e.viewModel.displayedGraph.nodes)),s=(0,i.Fl)((()=>e.viewModel.displayedGraph.connections)),r=(0,i.Fl)((()=>e.viewModel.displayedGraph.selectedNodes)),u=function(){const{graph:e}=h();let n=[],t=-1,o={x:0,y:0};const a=g((0,i.Fl)((()=>e.value.panning))),l=(0,i.Fl)((()=>({"transform-origin":"0 0",transform:`scale(${e.value.scaling}) translate(${e.value.panning.x}px, ${e.value.panning.y}px)`}))),s=(n,t,o)=>{const i=[n/e.value.scaling-e.value.panning.x,t/e.value.scaling-e.value.panning.y],a=[n/o-e.value.panning.x,t/o-e.value.panning.y],l=[a[0]-i[0],a[1]-i[1]];e.value.panning.x+=l[0],e.value.panning.y+=l[1],e.value.scaling=o},r=()=>({ax:n[0].clientX,ay:n[0].clientY,bx:n[1].clientX,by:n[1].clientY});return{styles:l,...a,onPointerDown:e=>{if(n.push(e),a.onPointerDown(e),2===n.length){const{ax:e,ay:n,bx:t,by:i}=r();o={x:e+(t-e)/2,y:n+(i-n)/2}}},onPointerMove:i=>{for(let e=0;e0){const n=e.value.scaling*(1+(c-t)/500);s(o.x,o.y,n)}t=c}else a.onPointerMove(i)},onPointerUp:e=>{n=n.filter((n=>n.pointerId!==e.pointerId)),t=-1,a.onPointerUp()},onMouseWheel:n=>{n.preventDefault();let t=n.deltaY;1===n.deltaMode&&(t*=32);const o=e.value.scaling*(1-t/3e3);s(n.offsetX,n.offsetY,o)}}}(),d=function(){const{graph:e}=h(),n=(0,o.iH)(null),t=(0,o.iH)(null);return(0,i.JJ)("hoveredOver",(o=>{if(t.value=o??null,o&&n.value){n.value.to=o;const t=e.value.checkConnection(n.value.from,n.value.to);if(n.value.status=t.connectionAllowed?w.ALLOWED:w.FORBIDDEN,t.connectionAllowed){const n=t.connectionsInDanger.map((e=>e.id));e.value.connections.forEach((e=>{n.includes(e.id)&&(e.isInDanger=!0)}))}}else!o&&n.value&&(n.value.to=void 0,n.value.status=w.NONE,e.value.connections.forEach((e=>{e.isInDanger=!1})))})),{temporaryConnection:n,onMouseMove:t=>{n.value&&(n.value.mx=t.offsetX/e.value.scaling-e.value.panning.x,n.value.my=t.offsetY/e.value.scaling-e.value.panning.y)},onMouseDown:()=>{if(t.value){const o=e.value.connections.find((e=>e.to===t.value));t.value.isInput&&o?(n.value={status:w.NONE,from:o.from},e.value.removeConnection(o)):n.value={status:w.NONE,from:t.value},n.value.mx=void 0,n.value.my=void 0}},onMouseUp:()=>{n.value&&t.value&&e.value.addConnection(n.value.from,n.value.to),n.value=null}}}(),c=(0,i.Fl)((()=>({...u.styles.value}))),p=(0,o.iH)(0);e.viewModel.editor.hooks.load.subscribe(n,(e=>(p.value++,e)));const v=()=>{e.viewModel.displayedGraph.selectedNodes=[]};return{el:a,counter:p,nodes:l,connections:s,selectedNodes:r,nodeContainerStyle:c,onPointerMove:e=>{u.onPointerMove(e),d.onMouseMove(e)},onPointerDown:e=>{0===e.button&&(e.target===a.value&&(v(),u.onPointerDown(e)),d.onMouseDown())},onPointerUp:e=>{u.onPointerUp(e),d.onMouseUp()},keyDown:n=>{"Tab"===n.key&&n.preventDefault(),e.viewModel.commandHandler.handleKeyDown(n)},keyUp:n=>{e.viewModel.commandHandler.handleKeyUp(n)},selectNode:n=>{e.viewModel.commandHandler.pressedKeys.includes("Control")||v(),e.viewModel.displayedGraph.selectedNodes.push(n)},temporaryConnection:d.temporaryConnection,mouseWheel:u.onMouseWheel,dragging:u.dragging}}}),no={class:"connections-container"},to=b(eo,[["render",function(e,n,t,o,s,r){const u=(0,i.up)("background"),d=(0,i.up)("toolbar"),c=(0,i.up)("node-palette"),p=(0,i.up)("connection-wrapper"),v=(0,i.up)("temporary-connection"),m=(0,i.up)("node"),f=(0,i.up)("sidebar"),h=(0,i.up)("minimap");return(0,i.wg)(),(0,i.iD)("div",{ref:"el",tabindex:"-1",class:(0,a.C_)(["baklava-editor",{"baklava-ignore-mouse":!!e.temporaryConnection||e.dragging,"--temporary-connection":!!e.temporaryConnection}]),onPointermove:n[0]||(n[0]=(0,l.iM)(((...n)=>e.onPointerMove&&e.onPointerMove(...n)),["self"])),onPointerdown:n[1]||(n[1]=(...n)=>e.onPointerDown&&e.onPointerDown(...n)),onPointerup:n[2]||(n[2]=(...n)=>e.onPointerUp&&e.onPointerUp(...n)),onWheel:n[3]||(n[3]=(0,l.iM)(((...n)=>e.mouseWheel&&e.mouseWheel(...n)),["self"])),onKeydown:n[4]||(n[4]=(...n)=>e.keyDown&&e.keyDown(...n)),onKeyup:n[5]||(n[5]=(...n)=>e.keyUp&&e.keyUp(...n))},[(0,i.WI)(e.$slots,"background",{},(()=>[(0,i.Wm)(u)])),(0,i.WI)(e.$slots,"toolbar",{},(()=>[(0,i.Wm)(d)])),(0,i.WI)(e.$slots,"palette",{},(()=>[(0,i.Wm)(c)])),((0,i.wg)(),(0,i.iD)("svg",no,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.connections,(n=>((0,i.wg)(),(0,i.iD)("g",{key:n.id+e.counter.toString()},[(0,i.WI)(e.$slots,"connection",{connection:n},(()=>[(0,i.Wm)(p,{connection:n},null,8,["connection"])]))])))),128)),(0,i.WI)(e.$slots,"temporaryConnection",{temporaryConnection:e.temporaryConnection},(()=>[e.temporaryConnection?((0,i.wg)(),(0,i.j4)(v,{key:0,connection:e.temporaryConnection},null,8,["connection"])):(0,i.kq)("",!0)]))])),(0,i._)("div",{class:"node-container",style:(0,a.j5)(e.nodeContainerStyle)},[(0,i.Wm)(l.W3,{name:"fade"},{default:(0,i.w5)((()=>[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.nodes,(n=>(0,i.WI)(e.$slots,"node",{node:n,selected:e.selectedNodes.includes(n),onSelect:t=>e.selectNode(n)},(()=>[((0,i.wg)(),(0,i.j4)(m,{key:n.id+e.counter.toString(),node:n,selected:e.selectedNodes.includes(n),onSelect:t=>e.selectNode(n)},null,8,["node","selected","onSelect"]))])))),256))])),_:3})],4),(0,i.WI)(e.$slots,"sidebar",{},(()=>[(0,i.Wm)(f)])),(0,i.WI)(e.$slots,"minimap",{},(()=>[e.viewModel.settings.enableMinimap?((0,i.wg)(),(0,i.j4)(h,{key:0})):(0,i.kq)("",!0)]))],34)}]]),oo=()=>{const e=(0,o.iH)(new Map),n=(n,t=!1,...o)=>{if(e.value.has(n))return e.value.get(n).execute(...o);if(t)throw new Error(`[CommandHandler] Command ${n} not registered`)},t=function(e){const n=(0,o.iH)([]),t=(0,o.iH)([]);return{pressedKeys:n,handleKeyDown:o=>{n.value.includes(o.key)||n.value.push(o.key),t.value.forEach((t=>{t.keys.every((e=>n.value.includes(e)))&&e(t.commandName)}))},handleKeyUp:e=>{const t=n.value.indexOf(e.key);t>=0&&n.value.splice(t,1)},registerHotkey:(e,n)=>{t.value.push({keys:e,commandName:n})}}}(n);return(0,o.qj)({registerCommand:(n,t)=>{if(e.value.has(n))throw new Error(`Command "${n}" already exists`);e.value.set(n,t)},executeCommand:n,canExecuteCommand:(n,t=!1,...o)=>{if(!e.value.has(n)){if(t)throw new Error(`[CommandHandler] Command ${n} not registered`);return!1}return e.value.get(n).canExecute(o)},...t})},io=e=>!(e instanceof c.k);function ao(e){const n=(0,o.iH)(e??new p.M),t=Symbol("ViewModelToken"),a=(0,o.iH)(null),l=(0,o.YS)(a),{switchGraph:r}=function(e,n){return{switchGraph:t=>{let o;if(io(t))o=new c.k(e.value),t.createGraph(o),o.inputs.forEach((e=>{const n=new Xn;n.inputs.name.value=e.name,n.graphInterfaceId=e.id,o.addNode(n);const t=o.findNodeInterface(e.nodeInterfaceId);t?o.addConnection(n.outputs.placeholder,t):console.warn(`Could not find target interface ${e.nodeInterfaceId} for subgraph input node`)})),o.outputs.forEach((e=>{const n=new Qn;n.inputs.name.value=e.name,n.graphInterfaceId=e.id,o.addNode(n);const t=o.findNodeInterface(e.nodeInterfaceId);t?o.addConnection(t,n.inputs.placeholder):console.warn(`Could not find target interface ${e.nodeInterfaceId} for subgraph input node`)}));else{if(t!==e.value.graph)throw new Error("Can only switch using 'Graph' instance when it is the root graph. Otherwise a 'GraphTemplate' must be used.");o=t}n.value&&n.value!==e.value.graph&&n.value.destroy(),o.panning=o.panning??t.panning??{x:0,y:0},o.scaling=o.scaling??t.scaling??1,o.selectedNodes=o.selectedNodes??[],o.sidebar=o.sidebar??{visible:!1,nodeId:"",optionName:""},n.value=o}}}(n,a),u=(0,i.Fl)((()=>l.value&&l.value!==n.value.graph)),m=(0,o.qj)({useStraightConnections:!1,enableMinimap:!1,background:{gridSize:100,gridDivision:5,subGridVisibleThreshold:.6}}),f=oo(),h=function(e,n){const t=Symbol("HistoryToken"),a=(0,o.iH)(200),l=(0,o.iH)([]),s=(0,o.iH)(!1),r=(0,o.iH)(-1),u=(0,o.iH)(!1),d=(0,o.iH)([]),c=e=>{if(!s.value)if(u.value)d.value.push(e);else for(r.value!==l.value.length-1&&(l.value=l.value.slice(0,r.value+1)),l.value.push(e),r.value++;l.value.length>a.value;)l.value.shift()},p=()=>0!==l.value.length&&-1!==r.value,v=()=>0!==l.value.length&&r.value{n&&(n.events.addNode.unsubscribe(t),n.events.removeNode.unsubscribe(t),n.events.addConnection.unsubscribe(t),n.events.removeConnection.unsubscribe(t)),e&&(e.events.addNode.subscribe(t,(e=>{c(new ut("addNode",e.id))})),e.events.removeNode.subscribe(t,(e=>{c(new ut("removeNode",e.save()))})),e.events.addConnection.subscribe(t,(e=>{c(new dt("addConnection",e.id))})),e.events.removeConnection.subscribe(t,(e=>{c(new dt("removeConnection",e))})))}),{immediate:!0}),n.registerCommand(pt,{canExecute:p,execute:()=>{p()&&(s.value=!0,l.value[r.value--].undo(e.value),s.value=!1)}}),n.registerCommand(vt,{canExecute:v,execute:()=>{v()&&(s.value=!0,l.value[++r.value].redo(e.value),s.value=!1)}}),n.registerCommand(mt,{canExecute:()=>!u.value,execute:()=>{u.value=!0}}),n.registerCommand(ft,{canExecute:()=>u.value,execute:()=>{u.value=!1,d.value.length>0&&(c(new ct(d.value)),d.value=[])}}),n.registerHotkey(["Control","z"],pt),n.registerHotkey(["Control","y"],vt),(0,o.qj)({maxSteps:a})}(l,f),g=function(e,n,t){const a=Symbol("ClipboardToken"),l=(0,o.iH)(""),s=(0,o.iH)(""),r=(0,i.Fl)((()=>!l.value)),u=(e,n,t)=>{for(const o of e){let e;if(t&&"input"!==t||(e=Object.values(o.inputs).find((e=>e.id===n))),e||t&&"output"!==t||(e=Object.values(o.outputs).find((e=>e.id===n))),e)return e}};return t.registerCommand(ht,{canExecute:()=>!0,execute:()=>{const n=e.value.selectedNodes.flatMap((e=>[...Object.values(e.inputs),...Object.values(e.outputs)])),t=e.value.connections.filter((e=>n.includes(e.from)||n.includes(e.to))).map((e=>({from:e.from.id,to:e.to.id})));s.value=JSON.stringify(t),l.value=JSON.stringify(e.value.selectedNodes.map((e=>e.save())))}}),t.registerHotkey(["Control","c"],ht),t.registerCommand(gt,{canExecute:()=>!r.value,execute:()=>{if(r.value)return;const o=new Map,i=JSON.parse(l.value),d=JSON.parse(s.value),c=[],p=[],v=e.value;t.executeCommand(mt);for(const e of i){const t=n.value.nodeTypes.get(e.type);if(!t)return void console.warn(`Node type ${e.type} not registered`);const i=new t.type,l=i.id;c.push(i);const s=e=>{Object.values(e).forEach((e=>{e.hooks.load.subscribe(a,(n=>{const t=Ke();return o.set(n.id,t),e.id=t,e.hooks.load.unsubscribe(a),n}))}))};s(i.inputs),s(i.outputs),i.hooks.beforeLoad.subscribe(a,(e=>{const n=e;return n.position&&(n.position.x+=10,n.position.y+=10),i.hooks.beforeLoad.unsubscribe(a),n})),v.addNode(i),i.load(e),i.id=l,o.set(e.id,l)}for(const e of d){const n=u(c,o.get(e.from),"output"),t=u(c,o.get(e.to),"input");if(!n||!t)continue;const i=v.addConnection(n,t);i&&p.push(i)}return t.executeCommand(ft),{newNodes:c,newConnections:p}}}),t.registerHotkey(["Control","v"],gt),t.registerCommand(yt,{canExecute:()=>!0,execute:()=>{l.value="",s.value=""}}),(0,o.qj)({isEmpty:r})}(l,n,f),y={renderNode:new v.p$(null),renderInterface:new v.p$(null)};return function(e,n,t){!function(e,n){n.registerCommand(st,{canExecute:()=>e.value.selectedNodes.length>0,execute(){e.value.selectedNodes.forEach((n=>e.value.removeNode(n)))}}),n.registerHotkey(["Delete"],st)}(e,n),function(e,n,t){n.registerCommand(at,{canExecute:()=>e.value.selectedNodes.filter((e=>!lt.includes(e.type))).length>0,execute:()=>{const i=e.value,a=e.value.editor;if(0===i.selectedNodes.length)return;const l=i.selectedNodes.filter((e=>!lt.includes(e.type))),r=l.flatMap((e=>Object.values(e.inputs))),u=l.flatMap((e=>Object.values(e.outputs))),c=i.connections.filter((e=>!u.includes(e.from)&&r.includes(e.to))),p=i.connections.filter((e=>u.includes(e.from)&&!r.includes(e.to))),v=i.connections.filter((e=>u.includes(e.from)&&r.includes(e.to))),m=c.map((e=>e.to)),f=p.map((e=>e.from)),h=new Map,g=[];for(const e of m){const n=Ke();h.set(e.id,n),g.push({id:n,nodeInterfaceId:e.id,name:e.name})}const y=[];for(const e of f){const n=Ke();h.set(e.id,n),y.push({id:n,nodeInterfaceId:e.id,name:e.name})}const w=(0,o.qj)(new d.o({connections:v.map((e=>({id:e.id,from:e.from.id,to:e.to.id}))),inputs:g,outputs:y,nodes:l.map((e=>e.save()))},a));a.addGraphTemplate(w);const b=a.nodeTypes.get((0,s.Ds)(w));if(!b)throw new Error("Unable to create subgraph: Could not find corresponding graph node type");const x=(0,o.qj)(new b.type);i.addNode(x);const k=Math.round(l.map((e=>e.position.x)).reduce(((e,n)=>e+n),0)/l.length),_=Math.round(l.map((e=>e.position.y)).reduce(((e,n)=>e+n),0)/l.length);x.position.x=k,x.position.y=_,c.forEach((e=>{i.removeConnection(e),i.addConnection(e.from,x.inputs[h.get(e.to.id)])})),p.forEach((e=>{i.removeConnection(e),i.addConnection(x.outputs[h.get(e.from.id)],e.to)})),l.forEach((e=>i.removeNode(e))),n.canExecuteCommand(it)&&n.executeCommand(it),t(w),e.value.panning={...i.panning},e.value.scaling=i.scaling}})}(e,n,t),function(e,n){n.registerCommand(it,{canExecute:()=>{var n;return e.value!==(null==(n=e.value.editor)?void 0:n.graph)},execute:()=>{const n=e.value;if(!n.template)throw new Error("Graph template property not set");const t=[],o=[],i=n.nodes.filter((e=>e.type===Kn));for(const e of i){const i=n.connections.filter((n=>n.from===e.outputs.placeholder));i.forEach((n=>{o.push({id:e.graphInterfaceId,name:e.inputs.name.value,nodeInterfaceId:n.to.id})})),t.push(...i)}const a=[],l=n.nodes.filter((e=>e.type===Zn));for(const e of l){const o=n.connections.filter((n=>n.to===e.inputs.placeholder));o.forEach((n=>{a.push({id:e.graphInterfaceId,name:e.inputs.name.value,nodeInterfaceId:n.from.id})})),t.push(...o)}const s=n.connections.filter((e=>!t.includes(e))),r=n.nodes.filter((e=>e.type!==Kn&&e.type!==Zn));n.template.update({inputs:o,outputs:a,connections:s.map((e=>({id:e.id,from:e.from.id,to:e.to.id}))),nodes:r.map((e=>e.save()))}),n.template.panning=n.panning,n.template.scaling=n.scaling}})}(e,n),function(e,n,t){n.registerCommand(rt,{canExecute:()=>e.value!==e.value.editor.graph,execute:()=>{n.executeCommand(it),t(e.value.editor.graph)}})}(e,n,t)}(l,f,r),function(e,n){!function(e,n){n.registerCommand(wt,{execute:n=>{e.value.sidebar.nodeId=n,e.value.sidebar.visible=!0},canExecute:()=>!0})}(e,n)}(l,f),(0,i.YP)(n,((e,o)=>{o&&(o.events.registerGraph.unsubscribe(t),o.graphEvents.beforeAddNode.unsubscribe(t),e.nodeHooks.beforeLoad.unsubscribe(t),e.nodeHooks.afterSave.unsubscribe(t),e.graphTemplateHooks.beforeLoad.unsubscribe(t),e.graphTemplateHooks.afterSave.unsubscribe(t)),e&&(e.nodeHooks.beforeLoad.subscribe(t,((e,n)=>(n.position=e.position??{x:0,y:0},n.width=e.width??200,n.twoColumn=e.twoColumn??!1,e))),e.nodeHooks.afterSave.subscribe(t,((e,n)=>(e.position=n.position,e.width=n.width,e.twoColumn=n.twoColumn,e))),e.graphTemplateHooks.beforeLoad.subscribe(t,((e,n)=>(n.panning=e.panning,n.scaling=e.scaling,e))),e.graphTemplateHooks.afterSave.subscribe(t,((e,n)=>(e.panning=n.panning,e.scaling=n.scaling,e))),e.graphEvents.beforeAddNode.subscribe(t,(e=>function(e){e.position=e.position??{x:0,y:0},e.disablePointerEvents=!1,e.twoColumn=e.twoColumn??!1,e.width=e.width??200}(e))),n.value.registerNodeType(Xn,{category:"Subgraphs"}),n.value.registerNodeType(Qn,{category:"Subgraphs"}),r(e.graph))}),{immediate:!0}),(0,o.qj)({editor:n,displayedGraph:l,isSubgraph:u,settings:m,commandHandler:f,history:h,clipboard:g,hooks:y,switchGraph:r})}const lo=Object.freeze(Object.defineProperty({__proto__:null,Connection:Ie,ConnectionWrapper:Oe,TemporaryConnection:He,Node:Me,NodeInterface:he,ContextMenu:re,Minimap:Ve,Sidebar:Fe},Symbol.toStringTag,{value:"Module"}))}}]); +//# sourceMappingURL=114.1887e3ae.js.map \ No newline at end of file diff --git a/_static/kpm/js/114.1887e3ae.js.map b/_static/kpm/js/114.1887e3ae.js.map new file mode 100644 index 00000000..43a3e49d --- /dev/null +++ b/_static/kpm/js/114.1887e3ae.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/114.1887e3ae.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/@baklavajs/events/dist/esm/event.js","webpack://pipeline-manager/./node_modules/@baklavajs/events/dist/esm/hook.js","webpack://pipeline-manager/./node_modules/@baklavajs/events/dist/esm/proxy.js","webpack://pipeline-manager/./node_modules/@baklavajs/events/dist/esm/subscribable.js","webpack://pipeline-manager/./node_modules/@baklavajs/renderer-vue/dist/renderer-vue.es.js"],"sourcesContent":["import { Subscribable } from \"./subscribable\";\n/** Main event class for Baklava */\nexport class BaklavaEvent extends Subscribable {\n constructor(entity) {\n super();\n this.entity = entity;\n }\n /**\n * Invoke all listeners\n * @param data The data to invoke the listeners with.\n */\n emit(data) {\n this.listeners.forEach((l) => l(data, this.entity));\n }\n}\n/**\n * Extension for the {@link BaklavaEvent} class. A listener can return `false` to prevent\n * this event from happening.\n */\nexport class PreventableBaklavaEvent extends Subscribable {\n constructor(entity) {\n super();\n this.entity = entity;\n }\n /**\n * Invoke all listeners.\n * @param data The data to invoke all listeners with\n * @returns An object, where the `prevented` field is `true` when one of the listeners requested to prevent the event, otherwise `false`\n */\n emit(data) {\n let prevented = false;\n const prevent = () => [(prevented = true)];\n for (const l of Array.from(this.listeners.values())) {\n l(data, prevent, this.entity);\n if (prevented) {\n return { prevented: true };\n }\n }\n return { prevented: false };\n }\n}\n","import { Subscribable } from \"./subscribable\";\n/** Similar to the SequentialHook, but allows to pass a different entity for each execute call */\nexport class DynamicSequentialHook extends Subscribable {\n execute(data, entity) {\n let currentValue = data;\n for (const callback of this.listeners) {\n currentValue = callback(currentValue, entity);\n }\n return currentValue;\n }\n}\n/** This class will run the taps one after each other and pass the data from every subscriber to another. */\nexport class SequentialHook extends DynamicSequentialHook {\n constructor(entity) {\n super();\n this.entity = entity;\n }\n execute(data) {\n return super.execute(data, this.entity);\n }\n}\nexport class ParallelHook extends Subscribable {\n constructor(entity) {\n super();\n this.entity = entity;\n }\n execute(data) {\n const results = [];\n for (const callback of this.listeners) {\n results.push(callback(data, this.entity));\n }\n return results;\n }\n}\n","import { Subscribable } from \"./subscribable\";\nexport function createProxy() {\n const token = Symbol();\n const listeners = new Map();\n const targets = new Set();\n const register = (key, subscribable) => {\n if (subscribable instanceof Subscribable) {\n subscribable.registerProxy(token, () => { var _a, _b; return (_b = (_a = listeners.get(key)) === null || _a === void 0 ? void 0 : _a.listeners) !== null && _b !== void 0 ? _b : []; });\n }\n };\n const addSubscribable = (key) => {\n const subscribable = new Subscribable();\n listeners.set(key, subscribable);\n targets.forEach((t) => register(key, t[key]));\n };\n const addTarget = (target) => {\n targets.add(target);\n for (const key of listeners.keys()) {\n register(key, target[key]);\n }\n };\n const removeTarget = (target) => {\n for (const key of listeners.keys()) {\n if (target[key] instanceof Subscribable) {\n target[key].unregisterProxy(token);\n }\n }\n targets.delete(target);\n };\n const destroy = () => {\n targets.forEach((t) => removeTarget(t));\n listeners.clear();\n };\n return new Proxy({}, {\n get(target, key) {\n if (key === \"addTarget\") {\n return addTarget;\n }\n else if (key === \"removeTarget\") {\n return removeTarget;\n }\n else if (key === \"destroy\") {\n return destroy;\n }\n if (typeof key !== \"string\" || key.startsWith(\"_\")) {\n // vue internally uses properties starting with _ -> we just ignore them\n // also ignore all other properties that arent valid indexes for the events/hooks objects\n return target[key];\n }\n if (!listeners.has(key)) {\n addSubscribable(key);\n }\n return listeners.get(key);\n },\n });\n}\n","export class Subscribable {\n constructor() {\n this.listenerMap = new Map();\n this._listeners = [];\n this.proxyMap = new Map();\n this.proxies = [];\n }\n get listeners() {\n return this._listeners.concat(this.proxies.flatMap((getListeners) => getListeners()));\n }\n /**\n * Subscribe to the event / hook\n * @param token A token that can be used to unsubscribe from the event / hook later on\n * @param callback A callback that will be invoked when the event / hook occurs\n */\n subscribe(token, callback) {\n if (this.listenerMap.has(token)) {\n console.warn(\"Already subscribed. Unsubscribing for you.\\n\" +\n \"Please check that you don't accidentally use the same token twice \" +\n \"to register two different handlers for the same event/hook.\");\n this.unsubscribe(token);\n }\n this.listenerMap.set(token, callback);\n this._listeners.push(callback);\n }\n /**\n * Remove a listener\n * @param token The token that was specified when subscribing to the listener.\n * An invalid token does not result in an error.\n */\n unsubscribe(token) {\n if (this.listenerMap.has(token)) {\n const callback = this.listenerMap.get(token);\n this.listenerMap.delete(token);\n const i = this._listeners.indexOf(callback);\n if (i >= 0) {\n this._listeners.splice(i, 1);\n }\n }\n }\n /** This function is only used internally for proxies */\n registerProxy(token, getListeners) {\n if (this.proxyMap.has(token)) {\n console.warn(\"Already subscribed. Unsubscribing for you.\\n\" +\n \"Please check that you don't accidentally use the same token twice \" +\n \"to register two different proxies for the same event/hook.\");\n this.unregisterProxy(token);\n }\n this.proxyMap.set(token, getListeners);\n this.proxies.push(getListeners);\n }\n /** This function is only used internally for proxies */\n unregisterProxy(token) {\n if (!this.proxyMap.has(token)) {\n return;\n }\n const getListeners = this.proxyMap.get(token);\n this.proxyMap.delete(token);\n const i = this.proxies.indexOf(getListeners);\n if (i >= 0) {\n this.proxies.splice(i, 1);\n }\n }\n}\n","import { toRef, ref, computed, provide, defineComponent, openBlock, createElementBlock, normalizeStyle, isRef, toRefs as toRefs$1, customRef, getCurrentScope, onScopeDispose, unref, watch, resolveComponent, createBlock, Transition, withCtx, withDirectives, createElementVNode, normalizeClass, Fragment, renderList, withModifiers, toDisplayString, createCommentVNode, vShow, inject, onMounted, onUpdated, resolveDynamicComponent, createVNode, withKeys, vModelText, nextTick, onBeforeUnmount, markRaw, reactive, createStaticVNode, createTextVNode, renderSlot, TransitionGroup, shallowReadonly } from \"vue\";\nimport { GRAPH_NODE_TYPE_PREFIX, NodeInterface as NodeInterface$1, defineNode, getGraphNodeTypeString, GraphTemplate, Graph, Editor as Editor$1 } from \"@baklavajs/core\";\nimport { SequentialHook } from \"@baklavajs/events\";\nlet viewModelRef = null;\nfunction providePlugin(viewModel) {\n viewModelRef = viewModel;\n}\nfunction useViewModel() {\n if (!viewModelRef) {\n throw new Error(\"providePlugin() must be called before usePlugin()\");\n }\n return {\n viewModel: viewModelRef\n };\n}\nfunction useGraph() {\n const { viewModel } = useViewModel();\n return {\n graph: toRef(viewModel.value, \"displayedGraph\"),\n switchGraph: viewModel.value.switchGraph\n };\n}\nfunction useDragMove(positionRef) {\n const { graph } = useGraph();\n const draggingStartPoint = ref(null);\n const draggingStartPosition = ref(null);\n const dragging = computed(() => !!draggingStartPoint.value);\n const onPointerDown = (ev) => {\n draggingStartPoint.value = {\n x: ev.pageX,\n y: ev.pageY\n };\n draggingStartPosition.value = {\n x: positionRef.value.x,\n y: positionRef.value.y\n };\n };\n const onPointerMove = (ev) => {\n if (draggingStartPoint.value) {\n const dx = ev.pageX - draggingStartPoint.value.x;\n const dy = ev.pageY - draggingStartPoint.value.y;\n positionRef.value.x = draggingStartPosition.value.x + dx / graph.value.scaling;\n positionRef.value.y = draggingStartPosition.value.y + dy / graph.value.scaling;\n }\n };\n const onPointerUp = () => {\n draggingStartPoint.value = null;\n draggingStartPosition.value = null;\n };\n return { dragging, onPointerDown, onPointerMove, onPointerUp };\n}\nfunction useTransform() {\n const { graph } = useGraph();\n const transform = (x, y) => {\n const tx = x / graph.value.scaling - graph.value.panning.x;\n const ty = y / graph.value.scaling - graph.value.panning.y;\n return [tx, ty];\n };\n return { transform };\n}\nfunction usePanZoom() {\n const { graph } = useGraph();\n let pointerCache = [];\n let prevDiff = -1;\n let midpoint = { x: 0, y: 0 };\n const panningRef = computed(() => graph.value.panning);\n const dragMove = useDragMove(panningRef);\n const styles = computed(() => ({\n \"transform-origin\": \"0 0\",\n \"transform\": `scale(${graph.value.scaling}) translate(${graph.value.panning.x}px, ${graph.value.panning.y}px)`\n }));\n const applyZoom = (centerX, centerY, newScale) => {\n const currentPoint = [\n centerX / graph.value.scaling - graph.value.panning.x,\n centerY / graph.value.scaling - graph.value.panning.y\n ];\n const newPoint = [centerX / newScale - graph.value.panning.x, centerY / newScale - graph.value.panning.y];\n const diff = [newPoint[0] - currentPoint[0], newPoint[1] - currentPoint[1]];\n graph.value.panning.x += diff[0];\n graph.value.panning.y += diff[1];\n graph.value.scaling = newScale;\n };\n const onMouseWheel = (ev) => {\n ev.preventDefault();\n let scrollAmount = ev.deltaY;\n if (ev.deltaMode === 1) {\n scrollAmount *= 32;\n }\n const newScale = graph.value.scaling * (1 - scrollAmount / 3e3);\n applyZoom(ev.offsetX, ev.offsetY, newScale);\n };\n const getCoordsFromCache = () => ({\n ax: pointerCache[0].clientX,\n ay: pointerCache[0].clientY,\n bx: pointerCache[1].clientX,\n by: pointerCache[1].clientY\n });\n const onPointerDown = (ev) => {\n pointerCache.push(ev);\n dragMove.onPointerDown(ev);\n if (pointerCache.length === 2) {\n const { ax, ay, bx, by } = getCoordsFromCache();\n midpoint = {\n x: ax + (bx - ax) / 2,\n y: ay + (by - ay) / 2\n };\n }\n };\n const onPointerMove = (ev) => {\n for (let i = 0; i < pointerCache.length; i++) {\n if (ev.pointerId == pointerCache[i].pointerId) {\n pointerCache[i] = ev;\n break;\n }\n }\n if (pointerCache.length == 2) {\n const { ax, ay, bx, by } = getCoordsFromCache();\n const dx = ax - bx;\n const dy = ay - by;\n const curDiff = Math.sqrt(dx * dx + dy * dy);\n if (prevDiff > 0) {\n const newScale = graph.value.scaling * (1 + (curDiff - prevDiff) / 500);\n applyZoom(midpoint.x, midpoint.y, newScale);\n }\n prevDiff = curDiff;\n } else {\n dragMove.onPointerMove(ev);\n }\n };\n const onPointerUp = (ev) => {\n pointerCache = pointerCache.filter((p) => p.pointerId !== ev.pointerId);\n prevDiff = -1;\n dragMove.onPointerUp();\n };\n return { styles, ...dragMove, onPointerDown, onPointerMove, onPointerUp, onMouseWheel };\n}\nvar TemporaryConnectionState = /* @__PURE__ */ ((TemporaryConnectionState2) => {\n TemporaryConnectionState2[TemporaryConnectionState2[\"NONE\"] = 0] = \"NONE\";\n TemporaryConnectionState2[TemporaryConnectionState2[\"ALLOWED\"] = 1] = \"ALLOWED\";\n TemporaryConnectionState2[TemporaryConnectionState2[\"FORBIDDEN\"] = 2] = \"FORBIDDEN\";\n return TemporaryConnectionState2;\n})(TemporaryConnectionState || {});\nfunction useTemporaryConnection() {\n const { graph } = useGraph();\n const temporaryConnection = ref(null);\n const hoveringOver = ref(null);\n const onMouseMove = (ev) => {\n if (temporaryConnection.value) {\n temporaryConnection.value.mx = ev.offsetX / graph.value.scaling - graph.value.panning.x;\n temporaryConnection.value.my = ev.offsetY / graph.value.scaling - graph.value.panning.y;\n }\n };\n const onMouseDown = () => {\n if (hoveringOver.value) {\n const connection = graph.value.connections.find((c) => c.to === hoveringOver.value);\n if (hoveringOver.value.isInput && connection) {\n temporaryConnection.value = {\n status: TemporaryConnectionState.NONE,\n from: connection.from\n };\n graph.value.removeConnection(connection);\n } else {\n temporaryConnection.value = {\n status: TemporaryConnectionState.NONE,\n from: hoveringOver.value\n };\n }\n temporaryConnection.value.mx = void 0;\n temporaryConnection.value.my = void 0;\n }\n };\n const onMouseUp = () => {\n if (temporaryConnection.value && hoveringOver.value) {\n graph.value.addConnection(temporaryConnection.value.from, temporaryConnection.value.to);\n }\n temporaryConnection.value = null;\n };\n const hoveredOver = (ni) => {\n hoveringOver.value = ni ?? null;\n if (ni && temporaryConnection.value) {\n temporaryConnection.value.to = ni;\n const checkConnectionResult = graph.value.checkConnection(\n temporaryConnection.value.from,\n temporaryConnection.value.to\n );\n temporaryConnection.value.status = checkConnectionResult.connectionAllowed ? TemporaryConnectionState.ALLOWED : TemporaryConnectionState.FORBIDDEN;\n if (checkConnectionResult.connectionAllowed) {\n const ids = checkConnectionResult.connectionsInDanger.map((c) => c.id);\n graph.value.connections.forEach((c) => {\n if (ids.includes(c.id)) {\n c.isInDanger = true;\n }\n });\n }\n } else if (!ni && temporaryConnection.value) {\n temporaryConnection.value.to = void 0;\n temporaryConnection.value.status = TemporaryConnectionState.NONE;\n graph.value.connections.forEach((c) => {\n c.isInDanger = false;\n });\n }\n };\n provide(\"hoveredOver\", hoveredOver);\n return { temporaryConnection, onMouseMove, onMouseDown, onMouseUp };\n}\nconst _sfc_main$u = defineComponent({\n setup() {\n const { viewModel } = useViewModel();\n const { graph } = useGraph();\n const styles = computed(() => {\n const config = viewModel.value.settings.background;\n const positionLeft = graph.value.panning.x * graph.value.scaling;\n const positionTop = graph.value.panning.y * graph.value.scaling;\n const size = graph.value.scaling * config.gridSize;\n const subSize = size / config.gridDivision;\n const backgroundSize = `${size}px ${size}px, ${size}px ${size}px`;\n const subGridBackgroundSize = graph.value.scaling > config.subGridVisibleThreshold ? `, ${subSize}px ${subSize}px, ${subSize}px ${subSize}px` : \"\";\n return {\n backgroundPosition: `left ${positionLeft}px top ${positionTop}px`,\n backgroundSize: `${backgroundSize} ${subGridBackgroundSize}`\n };\n });\n return { styles };\n }\n});\nconst _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nfunction _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: \"background\",\n style: normalizeStyle(_ctx.styles)\n }, null, 4);\n}\nconst Background = /* @__PURE__ */ _export_sfc(_sfc_main$u, [[\"render\", _sfc_render$t]]);\nvar _a;\nconst isClient = typeof window !== \"undefined\";\nconst isString = (val) => typeof val === \"string\";\nconst noop = () => {\n};\nisClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);\nfunction resolveUnref(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nfunction identity(arg) {\n return arg;\n}\nfunction objectPick(obj, keys2, omitUndefined = false) {\n return keys2.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction toRefs(objectRef) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = __spreadProps$5(__spreadValues$7({}, objectRef.value), { [key]: v });\n Object.setPrototypeOf(newObject, objectRef.value);\n objectRef.value = newObject;\n }\n }\n }));\n }\n return result;\n}\nfunction unrefElement(elRef) {\n var _a2;\n const plain = resolveUnref(elRef);\n return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain;\n}\nconst defaultWindow = isClient ? window : void 0;\nisClient ? window.document : void 0;\nisClient ? window.navigator : void 0;\nisClient ? window.location : void 0;\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (isString(args[0]) || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener) => {\n el.addEventListener(event, listener, options);\n return () => el.removeEventListener(event, listener, options);\n };\n const stopWatch = watch(() => unrefElement(target), (el) => {\n cleanup();\n if (!el)\n return;\n cleanups.push(...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener));\n }));\n }, { immediate: true, flush: \"post\" });\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\nfunction onClickOutside(target, handler, options = {}) {\n const { window: window2 = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window2)\n return;\n let shouldListen = true;\n let fallback;\n const shouldIgnore = (event) => {\n return ignore.some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window2.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n window2.clearTimeout(fallback);\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n const cleanup = [\n useEventListener(window2, \"click\", listener, { passive: true, capture }),\n useEventListener(window2, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n if (el)\n shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);\n }, { passive: true }),\n useEventListener(window2, \"pointerup\", (e) => {\n if (e.button === 0) {\n const path = e.composedPath();\n e.composedPath = () => path;\n fallback = window2.setTimeout(() => listener(e), 50);\n }\n }, { passive: true }),\n detectIframe && useEventListener(window2, \"blur\", (event) => {\n var _a2;\n const el = unrefElement(target);\n if (((_a2 = window2.document.activeElement) == null ? void 0 : _a2.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window2.document.activeElement)))\n handler(event);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\n_global[globalKey] = _global[globalKey] || {};\n_global[globalKey];\nvar __defProp$5 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(b)) {\n if (__propIsEnum$5.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n useEventListener(target, \"pointerdown\", handler, { passive: true });\n useEventListener(target, \"pointermove\", handler, { passive: true });\n useEventListener(target, \"pointerleave\", () => isInside.value = false, { passive: true });\n }\n return __spreadProps$1(__spreadValues$5({}, toRefs(state)), {\n isInside\n });\n}\nvar SwipeDirection;\n(function(SwipeDirection2) {\n SwipeDirection2[\"UP\"] = \"UP\";\n SwipeDirection2[\"RIGHT\"] = \"RIGHT\";\n SwipeDirection2[\"DOWN\"] = \"DOWN\";\n SwipeDirection2[\"LEFT\"] = \"LEFT\";\n SwipeDirection2[\"NONE\"] = \"NONE\";\n})(SwipeDirection || (SwipeDirection = {}));\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\n__spreadValues({\n linear: identity\n}, _TransitionPresets);\nconst _sfc_main$t = defineComponent({\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n items: {\n type: Array,\n required: true\n },\n x: {\n type: Number,\n default: 0\n },\n y: {\n type: Number,\n default: 0\n },\n isNested: {\n type: Boolean,\n default: false\n },\n isFlipped: {\n type: Object,\n default: () => ({ x: false, y: false })\n },\n flippable: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"click\", \"update:modelValue\"],\n setup(props, { emit }) {\n let activeMenuResetTimeout = null;\n const el = ref(null);\n const activeMenu = ref(-1);\n const height = ref(0);\n const rootIsFlipped = ref({ x: false, y: false });\n const flippedX = computed(() => props.flippable && (rootIsFlipped.value.x || props.isFlipped.x));\n const flippedY = computed(() => props.flippable && (rootIsFlipped.value.y || props.isFlipped.y));\n const styles = computed(() => {\n const s = {};\n if (!props.isNested) {\n s.top = (flippedY.value ? props.y - height.value : props.y) + \"px\";\n s.left = props.x + \"px\";\n }\n return s;\n });\n const classes = computed(() => {\n return {\n \"--flipped-x\": flippedX.value,\n \"--flipped-y\": flippedY.value,\n \"--nested\": props.isNested\n };\n });\n const itemsWithHoverProperty = computed(() => props.items.map((i) => ({ ...i, hover: false })));\n watch([() => props.y, () => props.items], () => {\n var _a2, _b, _c, _d;\n height.value = props.items.length * 30;\n const parentWidth = ((_b = (_a2 = el.value) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b.offsetWidth) ?? 0;\n const parentHeight = ((_d = (_c = el.value) == null ? void 0 : _c.parentElement) == null ? void 0 : _d.offsetHeight) ?? 0;\n rootIsFlipped.value.x = !props.isNested && props.x > parentWidth * 0.75;\n rootIsFlipped.value.y = !props.isNested && props.y + height.value > parentHeight - 20;\n });\n onClickOutside(el, () => {\n if (props.modelValue) {\n emit(\"update:modelValue\", false);\n }\n });\n const onClick = (item) => {\n if (!item.submenu && item.value) {\n emit(\"click\", item.value);\n emit(\"update:modelValue\", false);\n }\n };\n const onChildClick = (value) => {\n emit(\"click\", value);\n activeMenu.value = -1;\n if (!props.isNested) {\n emit(\"update:modelValue\", false);\n }\n };\n const onMouseEnter = (event, index) => {\n if (props.items[index].submenu) {\n activeMenu.value = index;\n if (activeMenuResetTimeout !== null) {\n clearTimeout(activeMenuResetTimeout);\n activeMenuResetTimeout = null;\n }\n }\n };\n const onMouseLeave = (event, index) => {\n if (props.items[index].submenu) {\n activeMenuResetTimeout = window.setTimeout(() => {\n activeMenu.value = -1;\n activeMenuResetTimeout = null;\n }, 200);\n }\n };\n return {\n el,\n activeMenu,\n flippedX,\n flippedY,\n styles,\n classes,\n itemsWithHoverProperty,\n onClick,\n onChildClick,\n onClickOutside,\n onMouseEnter,\n onMouseLeave\n };\n }\n});\nconst _hoisted_1$p = [\"onMouseenter\", \"onMouseleave\", \"onClick\"];\nconst _hoisted_2$j = { class: \"flex-fill\" };\nconst _hoisted_3$f = {\n key: 0,\n class: \"__submenu-icon\",\n style: { \"line-height\": \"1em\" }\n};\nconst _hoisted_4$d = /* @__PURE__ */ createElementVNode(\"svg\", {\n width: \"13\",\n height: \"13\",\n viewBox: \"-60 120 250 250\"\n}, [\n /* @__PURE__ */ createElementVNode(\"path\", {\n d: \"M160.875 279.5625 L70.875 369.5625 L70.875 189.5625 L160.875 279.5625 Z\",\n stroke: \"none\",\n fill: \"white\"\n })\n], -1);\nconst _hoisted_5$7 = [\n _hoisted_4$d\n];\nfunction _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_context_menu = resolveComponent(\"context-menu\", true);\n return openBlock(), createBlock(Transition, { name: \"slide-fade\" }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n ref: \"el\",\n class: normalizeClass([\"baklava-context-menu\", _ctx.classes]),\n style: normalizeStyle(_ctx.styles)\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.itemsWithHoverProperty, (item, index) => {\n return openBlock(), createElementBlock(Fragment, null, [\n item.isDivider ? (openBlock(), createElementBlock(\"div\", {\n key: `d-${index}`,\n class: \"divider\"\n })) : (openBlock(), createElementBlock(\"div\", {\n key: `i-${index}`,\n class: normalizeClass([\"item\", { \"submenu\": !!item.submenu, \"--disabled\": !!item.disabled }]),\n onMouseenter: ($event) => _ctx.onMouseEnter($event, index),\n onMouseleave: ($event) => _ctx.onMouseLeave($event, index),\n onClick: withModifiers(($event) => _ctx.onClick(item), [\"stop\", \"prevent\"])\n }, [\n createElementVNode(\"div\", _hoisted_2$j, toDisplayString(item.label), 1),\n item.submenu ? (openBlock(), createElementBlock(\"div\", _hoisted_3$f, _hoisted_5$7)) : createCommentVNode(\"\", true),\n item.submenu ? (openBlock(), createBlock(_component_context_menu, {\n key: 1,\n value: _ctx.activeMenu === index,\n items: item.submenu,\n \"is-nested\": true,\n \"is-flipped\": { x: _ctx.flippedX, y: _ctx.flippedY },\n flippable: _ctx.flippable,\n onClick: _ctx.onChildClick\n }, null, 8, [\"value\", \"items\", \"is-flipped\", \"flippable\", \"onClick\"])) : createCommentVNode(\"\", true)\n ], 42, _hoisted_1$p))\n ], 64);\n }), 256))\n ], 6), [\n [vShow, _ctx.modelValue]\n ])\n ]),\n _: 1\n });\n}\nconst ContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$t, [[\"render\", _sfc_render$s]]);\nconst _sfc_main$s = {};\nconst _hoisted_1$o = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$i = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$e = /* @__PURE__ */ createElementVNode(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"1\"\n}, null, -1);\nconst _hoisted_4$c = /* @__PURE__ */ createElementVNode(\"circle\", {\n cx: \"12\",\n cy: \"19\",\n r: \"1\"\n}, null, -1);\nconst _hoisted_5$6 = /* @__PURE__ */ createElementVNode(\"circle\", {\n cx: \"12\",\n cy: \"5\",\n r: \"1\"\n}, null, -1);\nconst _hoisted_6$4 = [\n _hoisted_2$i,\n _hoisted_3$e,\n _hoisted_4$c,\n _hoisted_5$6\n];\nfunction _sfc_render$r(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$o, _hoisted_6$4);\n}\nconst VerticalDots = /* @__PURE__ */ _export_sfc(_sfc_main$s, [[\"render\", _sfc_render$r]]);\nconst _sfc_main$r = defineComponent({\n props: {\n node: {\n type: Object,\n required: true\n },\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const { viewModel } = useViewModel();\n const hoveredOver = inject(\"hoveredOver\");\n const el = ref(null);\n const isConnected = computed(() => props.intf.connectionCount > 0);\n const classes = computed(() => ({\n \"--input\": props.intf.isInput,\n \"--output\": !props.intf.isInput,\n \"--connected\": isConnected.value\n }));\n const showComponent = computed(\n () => props.intf.component && props.intf.connectionCount === 0 && (props.intf.isInput || !props.intf.port)\n );\n const startHover = () => {\n hoveredOver(props.intf);\n };\n const endHover = () => {\n hoveredOver(void 0);\n };\n const onRender = () => {\n if (el.value) {\n viewModel.value.hooks.renderInterface.execute({ intf: props.intf, el: el.value });\n }\n };\n const openSidebar = () => {\n const sidebar = viewModel.value.displayedGraph.sidebar;\n sidebar.nodeId = props.node.id;\n sidebar.optionName = props.intf.name;\n sidebar.visible = true;\n };\n onMounted(onRender);\n onUpdated(onRender);\n return { el, isConnected, classes, showComponent, startHover, endHover, openSidebar };\n }\n});\nconst _hoisted_1$n = [\"id\"];\nconst _hoisted_2$h = {\n key: 2,\n class: \"align-middle\"\n};\nfunction _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n id: _ctx.intf.id,\n ref: \"el\",\n class: normalizeClass([\"baklava-node-interface\", _ctx.classes])\n }, [\n _ctx.intf.port ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"__port\",\n onPointerover: _cache[0] || (_cache[0] = (...args) => _ctx.startHover && _ctx.startHover(...args)),\n onPointerout: _cache[1] || (_cache[1] = (...args) => _ctx.endHover && _ctx.endHover(...args))\n }, null, 32)) : createCommentVNode(\"\", true),\n _ctx.showComponent ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.intf.component), {\n key: 1,\n modelValue: _ctx.intf.value,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => _ctx.intf.value = $event),\n node: _ctx.node,\n intf: _ctx.intf,\n onOpenSidebar: _ctx.openSidebar\n }, null, 40, [\"modelValue\", \"node\", \"intf\", \"onOpenSidebar\"])) : (openBlock(), createElementBlock(\"span\", _hoisted_2$h, toDisplayString(_ctx.intf.name), 1))\n ], 10, _hoisted_1$n);\n}\nconst NodeInterface = /* @__PURE__ */ _export_sfc(_sfc_main$r, [[\"render\", _sfc_render$q]]);\nconst _hoisted_1$m = [\"id\", \"data-node-type\"];\nconst _hoisted_2$g = [\"onPointerdown\"];\nconst _hoisted_3$d = { class: \"__title-label\" };\nconst _hoisted_4$b = { class: \"__menu\" };\nconst _hoisted_5$5 = [\"onKeydown\"];\nconst _hoisted_6$3 = { class: \"__content\" };\nconst _hoisted_7$1 = { class: \"__outputs\" };\nconst _hoisted_8$1 = { class: \"__inputs\" };\nconst _sfc_main$q = /* @__PURE__ */ defineComponent({\n __name: \"Node\",\n props: {\n node: null,\n selected: { type: Boolean, default: false }\n },\n emits: [\"select\"],\n setup(__props, { emit }) {\n const props = __props;\n const { viewModel } = useViewModel();\n const { graph, switchGraph } = useGraph();\n const dragMove = useDragMove(toRef(props.node, \"position\"));\n const el = ref(null);\n const renaming = ref(false);\n const tempName = ref(\"\");\n const renameInputEl = ref(null);\n const showContextMenu = ref(false);\n const contextMenuItems = computed(() => {\n const items = [\n { value: \"rename\", label: \"Rename\" },\n { value: \"delete\", label: \"Delete\" }\n ];\n if (props.node.type.startsWith(GRAPH_NODE_TYPE_PREFIX)) {\n items.push({ value: \"editSubgraph\", label: \"Edit Subgraph\" });\n }\n return items;\n });\n const classes = computed(() => ({\n \"--selected\": props.selected,\n \"--dragging\": dragMove.dragging.value,\n \"--two-column\": !!props.node.twoColumn\n }));\n const styles = computed(() => {\n var _a2, _b;\n return {\n top: `${((_a2 = props.node.position) == null ? void 0 : _a2.y) ?? 0}px`,\n left: `${((_b = props.node.position) == null ? void 0 : _b.x) ?? 0}px`,\n width: `${props.node.width ?? 200}px`\n };\n });\n const displayedInputs = computed(() => Object.values(props.node.inputs).filter((ni) => !ni.hidden));\n const displayedOutputs = computed(() => Object.values(props.node.outputs).filter((ni) => !ni.hidden));\n const select = () => {\n emit(\"select\");\n };\n const startDrag = (ev) => {\n dragMove.onPointerDown(ev);\n document.addEventListener(\"pointermove\", dragMove.onPointerMove);\n document.addEventListener(\"pointerup\", stopDrag);\n select();\n };\n const stopDrag = () => {\n dragMove.onPointerUp();\n document.removeEventListener(\"pointermove\", dragMove.onPointerMove);\n document.removeEventListener(\"pointerup\", stopDrag);\n };\n const openContextMenu = () => {\n showContextMenu.value = true;\n };\n const onContextMenuClick = async (action) => {\n var _a2;\n switch (action) {\n case \"delete\":\n graph.value.removeNode(props.node);\n break;\n case \"rename\":\n tempName.value = props.node.title;\n renaming.value = true;\n await nextTick();\n (_a2 = renameInputEl.value) == null ? void 0 : _a2.focus();\n break;\n case \"editSubgraph\":\n switchGraph(props.node.template);\n break;\n }\n };\n const doneRenaming = () => {\n props.node.title = tempName.value;\n renaming.value = false;\n };\n const onRender = () => {\n if (el.value) {\n viewModel.value.hooks.renderNode.execute({ node: props.node, el: el.value });\n }\n };\n onMounted(onRender);\n onUpdated(onRender);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n id: __props.node.id,\n ref_key: \"el\",\n ref: el,\n class: normalizeClass([\"baklava-node\", unref(classes)]),\n style: normalizeStyle(unref(styles)),\n \"data-node-type\": __props.node.type,\n onPointerdown: select\n }, [\n createElementVNode(\"div\", {\n class: \"__title\",\n onPointerdown: withModifiers(startDrag, [\"self\", \"stop\"])\n }, [\n !renaming.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createElementVNode(\"div\", _hoisted_3$d, toDisplayString(__props.node.title), 1),\n createElementVNode(\"div\", _hoisted_4$b, [\n createVNode(VerticalDots, {\n class: \"--clickable\",\n onClick: openContextMenu\n }),\n createVNode(ContextMenu, {\n modelValue: showContextMenu.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => showContextMenu.value = $event),\n x: 0,\n y: 0,\n items: unref(contextMenuItems),\n onClick: onContextMenuClick\n }, null, 8, [\"modelValue\", \"items\"])\n ])\n ], 64)) : withDirectives((openBlock(), createElementBlock(\"input\", {\n key: 1,\n ref_key: \"renameInputEl\",\n ref: renameInputEl,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => tempName.value = $event),\n type: \"text\",\n class: \"baklava-input\",\n placeholder: \"Node Name\",\n onBlur: doneRenaming,\n onKeydown: withKeys(doneRenaming, [\"enter\"])\n }, null, 40, _hoisted_5$5)), [\n [vModelText, tempName.value]\n ])\n ], 40, _hoisted_2$g),\n createElementVNode(\"div\", _hoisted_6$3, [\n createElementVNode(\"div\", _hoisted_7$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(displayedOutputs), (output) => {\n return openBlock(), createBlock(NodeInterface, {\n key: output.id,\n node: __props.node,\n intf: output\n }, null, 8, [\"node\", \"intf\"]);\n }), 128))\n ]),\n createElementVNode(\"div\", _hoisted_8$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(displayedInputs), (input) => {\n return openBlock(), createBlock(NodeInterface, {\n key: input.id,\n node: __props.node,\n intf: input\n }, null, 8, [\"node\", \"intf\"]);\n }), 128))\n ])\n ])\n ], 46, _hoisted_1$m);\n };\n }\n});\nconst _sfc_main$p = defineComponent({\n props: {\n x1: {\n type: Number,\n required: true\n },\n y1: {\n type: Number,\n required: true\n },\n x2: {\n type: Number,\n required: true\n },\n y2: {\n type: Number,\n required: true\n },\n state: {\n type: Number,\n default: TemporaryConnectionState.NONE\n },\n isTemporary: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const { viewModel } = useViewModel();\n const { graph } = useGraph();\n const transform = (x, y) => {\n const tx = (x + graph.value.panning.x) * graph.value.scaling;\n const ty = (y + graph.value.panning.y) * graph.value.scaling;\n return [tx, ty];\n };\n const d = computed(() => {\n const [tx1, ty1] = transform(props.x1, props.y1);\n const [tx2, ty2] = transform(props.x2, props.y2);\n if (viewModel.value.settings.useStraightConnections) {\n return `M ${tx1} ${ty1} L ${tx2} ${ty2}`;\n } else {\n const dx = 0.3 * Math.abs(tx1 - tx2);\n return `M ${tx1} ${ty1} C ${tx1 + dx} ${ty1}, ${tx2 - dx} ${ty2}, ${tx2} ${ty2}`;\n }\n });\n const classes = computed(() => ({\n \"--temporary\": props.isTemporary,\n \"--allowed\": props.state === TemporaryConnectionState.ALLOWED,\n \"--forbidden\": props.state === TemporaryConnectionState.FORBIDDEN\n }));\n return { d, classes };\n }\n});\nconst _hoisted_1$l = [\"d\"];\nfunction _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"path\", {\n class: normalizeClass([\"baklava-connection\", _ctx.classes]),\n d: _ctx.d\n }, null, 10, _hoisted_1$l);\n}\nconst ConnectionView = /* @__PURE__ */ _export_sfc(_sfc_main$p, [[\"render\", _sfc_render$p]]);\nfunction getDomElementOfNode(node) {\n return document.getElementById(node.id);\n}\nfunction getDomElements(ni) {\n const interfaceDOM = document.getElementById(ni.id);\n const portDOM = interfaceDOM == null ? void 0 : interfaceDOM.getElementsByClassName(\"__port\");\n return {\n node: (interfaceDOM == null ? void 0 : interfaceDOM.closest(\".baklava-node\")) ?? null,\n interface: interfaceDOM,\n port: portDOM && portDOM.length > 0 ? portDOM[0] : null\n };\n}\nconst _sfc_main$o = defineComponent({\n components: {\n \"connection-view\": ConnectionView\n },\n props: {\n connection: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const { graph } = useGraph();\n let resizeObserver;\n const d = ref({ x1: 0, y1: 0, x2: 0, y2: 0 });\n const state = computed(\n () => props.connection.isInDanger ? TemporaryConnectionState.FORBIDDEN : TemporaryConnectionState.NONE\n );\n const fromNodePosition = computed(() => {\n var _a2;\n return (_a2 = graph.value.findNodeById(props.connection.from.nodeId)) == null ? void 0 : _a2.position;\n });\n const toNodePosition = computed(() => {\n var _a2;\n return (_a2 = graph.value.findNodeById(props.connection.to.nodeId)) == null ? void 0 : _a2.position;\n });\n const getPortCoordinates2 = (resolved) => {\n if (resolved.node && resolved.interface && resolved.port) {\n return [\n resolved.node.offsetLeft + resolved.interface.offsetLeft + resolved.port.offsetLeft + resolved.port.clientWidth / 2,\n resolved.node.offsetTop + resolved.interface.offsetTop + resolved.port.offsetTop + resolved.port.clientHeight / 2\n ];\n } else {\n return [0, 0];\n }\n };\n const updateCoords = () => {\n const from = getDomElements(props.connection.from);\n const to = getDomElements(props.connection.to);\n if (from.node && to.node) {\n if (!resizeObserver) {\n resizeObserver = new ResizeObserver(() => {\n updateCoords();\n });\n resizeObserver.observe(from.node);\n resizeObserver.observe(to.node);\n }\n }\n const [x1, y1] = getPortCoordinates2(from);\n const [x2, y2] = getPortCoordinates2(to);\n d.value = { x1, y1, x2, y2 };\n };\n onMounted(async () => {\n await nextTick();\n updateCoords();\n });\n onBeforeUnmount(() => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n });\n watch([fromNodePosition, toNodePosition], () => updateCoords(), { deep: true });\n return { d, state };\n }\n});\nfunction _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_connection_view = resolveComponent(\"connection-view\");\n return openBlock(), createBlock(_component_connection_view, {\n x1: _ctx.d.x1,\n y1: _ctx.d.y1,\n x2: _ctx.d.x2,\n y2: _ctx.d.y2,\n state: _ctx.state\n }, null, 8, [\"x1\", \"y1\", \"x2\", \"y2\", \"state\"]);\n}\nconst ConnectionWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$o, [[\"render\", _sfc_render$o]]);\nfunction getPortCoordinates(resolved) {\n if (resolved.node && resolved.interface && resolved.port) {\n return [\n resolved.node.offsetLeft + resolved.interface.offsetLeft + resolved.port.offsetLeft + resolved.port.clientWidth / 2,\n resolved.node.offsetTop + resolved.interface.offsetTop + resolved.port.offsetTop + resolved.port.clientHeight / 2\n ];\n } else {\n return [0, 0];\n }\n}\nconst _sfc_main$n = defineComponent({\n components: {\n \"connection-view\": ConnectionView\n },\n props: {\n connection: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const status = computed(() => props.connection ? props.connection.status : TemporaryConnectionState.NONE);\n const d = computed(() => {\n if (!props.connection) {\n return {\n input: [0, 0],\n output: [0, 0]\n };\n }\n const start = getPortCoordinates(getDomElements(props.connection.from));\n const end = props.connection.to ? getPortCoordinates(getDomElements(props.connection.to)) : [props.connection.mx || start[0], props.connection.my || start[1]];\n if (props.connection.from.isInput) {\n return {\n input: end,\n output: start\n };\n } else {\n return {\n input: start,\n output: end\n };\n }\n });\n return { d, status };\n }\n});\nfunction _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_connection_view = resolveComponent(\"connection-view\");\n return openBlock(), createBlock(_component_connection_view, {\n x1: _ctx.d.input[0],\n y1: _ctx.d.input[1],\n x2: _ctx.d.output[0],\n y2: _ctx.d.output[1],\n state: _ctx.status,\n \"is-temporary\": \"\"\n }, null, 8, [\"x1\", \"y1\", \"x2\", \"y2\", \"state\"]);\n}\nconst TemporaryConnection = /* @__PURE__ */ _export_sfc(_sfc_main$n, [[\"render\", _sfc_render$n]]);\nconst _sfc_main$m = defineComponent({\n setup() {\n const { graph } = useGraph();\n const el = ref(null);\n const width = ref(300);\n const node = computed(() => {\n const id = graph.value.sidebar.nodeId;\n return graph.value.nodes.find((x) => x.id === id);\n });\n const styles = computed(() => ({\n width: `${width.value}px`\n }));\n const displayedInterfaces = computed(() => {\n if (!node.value) {\n return [];\n }\n const allIntfs = [...Object.values(node.value.inputs), ...Object.values(node.value.outputs)];\n return allIntfs.filter((intf) => intf.displayInSidebar && intf.component);\n });\n const close = () => {\n graph.value.sidebar.visible = false;\n };\n const startResize = () => {\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\n \"mouseup\",\n () => {\n window.removeEventListener(\"mousemove\", onMouseMove);\n },\n { once: true }\n );\n };\n const onMouseMove = (event) => {\n var _a2, _b;\n const maxwidth = ((_b = (_a2 = el.value) == null ? void 0 : _a2.parentElement) == null ? void 0 : _b.getBoundingClientRect().width) ?? 500;\n width.value -= event.movementX;\n if (width.value < 300) {\n width.value = 300;\n } else if (width.value > 0.9 * maxwidth) {\n width.value = 0.9 * maxwidth;\n }\n };\n return { el, graph, node, styles, displayedInterfaces, startResize, close };\n }\n});\nconst _hoisted_1$k = { class: \"__header\" };\nconst _hoisted_2$f = { class: \"__node-name\" };\nfunction _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"el\",\n class: normalizeClass([\"baklava-sidebar\", { \"--open\": _ctx.graph.sidebar.visible }]),\n style: normalizeStyle(_ctx.styles)\n }, [\n createElementVNode(\"div\", {\n class: \"__resizer\",\n onMousedown: _cache[0] || (_cache[0] = (...args) => _ctx.startResize && _ctx.startResize(...args))\n }, null, 32),\n createElementVNode(\"div\", _hoisted_1$k, [\n createElementVNode(\"button\", {\n tabindex: \"-1\",\n class: \"__close\",\n onClick: _cache[1] || (_cache[1] = (...args) => _ctx.close && _ctx.close(...args))\n }, \" × \"),\n createElementVNode(\"div\", _hoisted_2$f, [\n createElementVNode(\"b\", null, toDisplayString(_ctx.node ? _ctx.node.title : \"\"), 1)\n ])\n ]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.displayedInterfaces, (intf) => {\n return openBlock(), createElementBlock(\"div\", {\n key: intf.id,\n class: \"__interface\"\n }, [\n (openBlock(), createBlock(resolveDynamicComponent(intf.component), {\n modelValue: intf.value,\n \"onUpdate:modelValue\": ($event) => intf.value = $event,\n node: _ctx.node,\n intf\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"node\", \"intf\"]))\n ]);\n }), 128))\n ], 6);\n}\nconst Sidebar = /* @__PURE__ */ _export_sfc(_sfc_main$m, [[\"render\", _sfc_render$m]]);\nconst _sfc_main$l = defineComponent({\n setup() {\n const { viewModel } = useViewModel();\n const { graph } = useGraph();\n const canvas = ref(null);\n const showViewBounds = ref(false);\n let ctx;\n let dragging = false;\n let bounds = { x1: 0, y1: 0, x2: 0, y2: 0 };\n const updateCanvas = () => {\n var _a2, _b;\n if (!ctx) {\n return;\n }\n const nodeCoords = /* @__PURE__ */ new Map();\n const nodeDomElements = /* @__PURE__ */ new Map();\n for (const n of graph.value.nodes) {\n const domElement = getDomElementOfNode(n);\n const width = (domElement == null ? void 0 : domElement.clientWidth) ?? 0;\n const height = (domElement == null ? void 0 : domElement.clientHeight) ?? 0;\n const posX = ((_a2 = n.position) == null ? void 0 : _a2.x) ?? 0;\n const posY = ((_b = n.position) == null ? void 0 : _b.y) ?? 0;\n nodeCoords.set(n, {\n x1: posX,\n y1: posY,\n x2: posX + width,\n y2: posY + height\n });\n nodeDomElements.set(n, domElement);\n }\n const newBounds = {\n x1: Number.MAX_SAFE_INTEGER,\n y1: Number.MAX_SAFE_INTEGER,\n x2: Number.MIN_SAFE_INTEGER,\n y2: Number.MIN_SAFE_INTEGER\n };\n for (const nc of nodeCoords.values()) {\n if (nc.x1 < newBounds.x1) {\n newBounds.x1 = nc.x1;\n }\n if (nc.y1 < newBounds.y1) {\n newBounds.y1 = nc.y1;\n }\n if (nc.x2 > newBounds.x2) {\n newBounds.x2 = nc.x2;\n }\n if (nc.y2 > newBounds.y2) {\n newBounds.y2 = nc.y2;\n }\n }\n const padding = 50;\n newBounds.x1 -= padding;\n newBounds.y1 -= padding;\n newBounds.x2 += padding;\n newBounds.y2 += padding;\n bounds = newBounds;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n ctx.strokeStyle = \"white\";\n for (const c of graph.value.connections) {\n const [origX1, origY1] = getPortCoordinates(getDomElements(c.from));\n const [origX2, origY2] = getPortCoordinates(getDomElements(c.to));\n const [x1, y1] = transformCoordinates(origX1, origY1);\n const [x2, y2] = transformCoordinates(origX2, origY2);\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n if (viewModel.value.settings.useStraightConnections) {\n ctx.lineTo(x2, y2);\n } else {\n const dx = 0.3 * Math.abs(x1 - x2);\n ctx.bezierCurveTo(x1 + dx, y1, x2 - dx, y2, x2, y2);\n }\n ctx.stroke();\n }\n ctx.strokeStyle = \"lightgray\";\n for (const [n, nc] of nodeCoords.entries()) {\n const [x1, y1] = transformCoordinates(nc.x1, nc.y1);\n const [x2, y2] = transformCoordinates(nc.x2, nc.y2);\n ctx.fillStyle = getNodeColor(nodeDomElements.get(n));\n ctx.beginPath();\n ctx.rect(x1, y1, x2 - x1, y2 - y1);\n ctx.fill();\n ctx.stroke();\n }\n if (showViewBounds.value) {\n const viewBounds = getViewBounds();\n const [x1, y1] = transformCoordinates(viewBounds.x1, viewBounds.y1);\n const [x2, y2] = transformCoordinates(viewBounds.x2, viewBounds.y2);\n ctx.fillStyle = \"rgba(255, 255, 255, 0.2)\";\n ctx.fillRect(x1, y1, x2 - x1, y2 - y1);\n }\n };\n const transformCoordinates = (origX, origY) => {\n return [\n (origX - bounds.x1) / (bounds.x2 - bounds.x1) * ctx.canvas.clientWidth,\n (origY - bounds.y1) / (bounds.y2 - bounds.y1) * ctx.canvas.clientHeight\n ];\n };\n const reverseTransform = (thisX, thisY) => {\n return [\n thisX * (bounds.x2 - bounds.x1) / ctx.canvas.clientWidth + bounds.x1,\n thisY * (bounds.y2 - bounds.y1) / ctx.canvas.clientHeight + bounds.y1\n ];\n };\n const getNodeColor = (domElement) => {\n if (domElement) {\n const content = domElement.querySelector(\".__content\");\n if (content) {\n const contentColor = getComputedColor(content);\n if (contentColor) {\n return contentColor;\n }\n }\n const nodeColor = getComputedColor(domElement);\n if (nodeColor) {\n return nodeColor;\n }\n }\n return \"gray\";\n };\n const getComputedColor = (domElement) => {\n const c = getComputedStyle(domElement).backgroundColor;\n if (c && c !== \"rgba(0, 0, 0, 0)\") {\n return c;\n }\n };\n const getViewBounds = () => {\n const parentWidth = canvas.value.parentElement.offsetWidth;\n const parentHeight = canvas.value.parentElement.offsetHeight;\n const x2 = parentWidth / graph.value.scaling - graph.value.panning.x;\n const y2 = parentHeight / graph.value.scaling - graph.value.panning.y;\n return { x1: -graph.value.panning.x, y1: -graph.value.panning.y, x2, y2 };\n };\n const mousedown = (ev) => {\n if (ev.button === 0) {\n dragging = true;\n mousemove(ev);\n }\n };\n const mousemove = (ev) => {\n if (dragging) {\n const [cx, cy] = reverseTransform(ev.offsetX, ev.offsetY);\n const viewBounds = getViewBounds();\n const dx = (viewBounds.x1 - viewBounds.x2) / 2;\n const dy = (viewBounds.y1 - viewBounds.y2) / 2;\n graph.value.panning.x = -(cx + dx);\n graph.value.panning.y = -(cy + dy);\n }\n };\n const mouseup = () => {\n dragging = false;\n };\n const mouseenter = () => {\n showViewBounds.value = true;\n };\n const mouseleave = () => {\n showViewBounds.value = false;\n mouseup();\n };\n onMounted(() => {\n ctx = canvas.value.getContext(\"2d\");\n ctx.imageSmoothingQuality = \"high\";\n updateCanvas();\n });\n return { canvas, showViewBounds, mousedown, mousemove, mouseup, mouseenter, mouseleave };\n }\n});\nfunction _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"canvas\", {\n ref: \"canvas\",\n class: \"baklava-minimap\",\n onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.mouseenter && _ctx.mouseenter(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => _ctx.mouseleave && _ctx.mouseleave(...args)),\n onMousedown: _cache[2] || (_cache[2] = withModifiers((...args) => _ctx.mousedown && _ctx.mousedown(...args), [\"self\"])),\n onMousemove: _cache[3] || (_cache[3] = withModifiers((...args) => _ctx.mousemove && _ctx.mousemove(...args), [\"self\"])),\n onMouseup: _cache[4] || (_cache[4] = (...args) => _ctx.mouseup && _ctx.mouseup(...args))\n }, null, 544);\n}\nconst Minimap = /* @__PURE__ */ _export_sfc(_sfc_main$l, [[\"render\", _sfc_render$l]]);\nconst _sfc_main$k = defineComponent({\n components: { ContextMenu, VerticalDots },\n props: {\n type: {\n type: String,\n required: true\n },\n title: {\n type: String,\n required: true\n }\n },\n setup(props) {\n const { viewModel } = useViewModel();\n const { switchGraph } = useGraph();\n const showContextMenu = ref(false);\n const hasContextMenu = computed(() => props.type.startsWith(GRAPH_NODE_TYPE_PREFIX));\n const contextMenuItems = [\n { label: \"Edit Subgraph\", value: \"editSubgraph\" },\n { label: \"Delete Subgraph\", value: \"deleteSubgraph\" }\n ];\n const openContextMenu = () => {\n showContextMenu.value = true;\n };\n const onContextMenuClick = (action) => {\n const graphTemplateId = props.type.substring(GRAPH_NODE_TYPE_PREFIX.length);\n const graphTemplate = viewModel.value.editor.graphTemplates.find((gt) => gt.id === graphTemplateId);\n if (!graphTemplate) {\n return;\n }\n switch (action) {\n case \"editSubgraph\":\n switchGraph(graphTemplate);\n break;\n case \"deleteSubgraph\":\n viewModel.value.editor.removeGraphTemplate(graphTemplate);\n break;\n }\n };\n return { showContextMenu, hasContextMenu, contextMenuItems, openContextMenu, onContextMenuClick };\n }\n});\nconst _hoisted_1$j = [\"data-node-type\"];\nconst _hoisted_2$e = { class: \"__title\" };\nconst _hoisted_3$c = { class: \"__title-label\" };\nconst _hoisted_4$a = {\n key: 0,\n class: \"__menu\"\n};\nfunction _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_vertical_dots = resolveComponent(\"vertical-dots\");\n const _component_context_menu = resolveComponent(\"context-menu\");\n return openBlock(), createElementBlock(\"div\", {\n class: \"baklava-node --palette\",\n \"data-node-type\": _ctx.type\n }, [\n createElementVNode(\"div\", _hoisted_2$e, [\n createElementVNode(\"div\", _hoisted_3$c, toDisplayString(_ctx.title), 1),\n _ctx.hasContextMenu ? (openBlock(), createElementBlock(\"div\", _hoisted_4$a, [\n createVNode(_component_vertical_dots, {\n class: \"--clickable\",\n onPointerdown: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"stop\", \"prevent\"])),\n onClick: withModifiers(_ctx.openContextMenu, [\"stop\", \"prevent\"])\n }, null, 8, [\"onClick\"]),\n createVNode(_component_context_menu, {\n modelValue: _ctx.showContextMenu,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => _ctx.showContextMenu = $event),\n x: -100,\n y: 0,\n items: _ctx.contextMenuItems,\n onClick: _ctx.onContextMenuClick,\n onPointerdown: _cache[2] || (_cache[2] = withModifiers(() => {\n }, [\"stop\", \"prevent\"]))\n }, null, 8, [\"modelValue\", \"items\", \"onClick\"])\n ])) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_1$j);\n}\nconst PaletteEntry = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"render\", _sfc_render$k]]);\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n if (!getRandomValues) {\n getRandomValues = typeof crypto !== \"undefined\" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n }\n }\n return getRandomValues(rnds8);\n}\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 256).toString(16).slice(1));\n}\nfunction unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + \"-\" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + \"-\" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + \"-\" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + \"-\" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nconst randomUUID = typeof crypto !== \"undefined\" && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nconst native = {\n randomUUID\n};\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = rnds[6] & 15 | 64;\n rnds[8] = rnds[8] & 63 | 128;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nconst _sfc_main$j = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const onClick = () => {\n if (props.intf.callback) {\n props.intf.callback();\n }\n };\n return { onClick };\n }\n});\nconst _hoisted_1$i = [\"title\"];\nfunction _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"button\", {\n class: \"baklava-button --block\",\n title: _ctx.intf.name,\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))\n }, toDisplayString(_ctx.intf.name), 9, _hoisted_1$i);\n}\nconst ButtonInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$j, [[\"render\", _sfc_render$j]]);\nclass ButtonInterface extends NodeInterface$1 {\n constructor(name, callback) {\n super(name, void 0);\n this.component = markRaw(ButtonInterfaceComponent);\n this.callback = callback;\n this.setPort(false);\n }\n}\nconst _sfc_main$i = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n }\n }\n});\nconst _hoisted_1$h = [\"title\"];\nconst _hoisted_2$d = /* @__PURE__ */ createElementVNode(\"div\", { class: \"__checkmark-container\" }, [\n /* @__PURE__ */ createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 18 18\"\n }, [\n /* @__PURE__ */ createElementVNode(\"path\", {\n class: \"__checkmark\",\n d: \"M 6 5 L 6 10 L 16 10\",\n transform: \"rotate(-45 10 10)\"\n })\n ])\n], -1);\nconst _hoisted_3$b = { class: \"__label\" };\nfunction _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"baklava-checkbox\", { \"--checked\": _ctx.intf.value }]),\n title: _ctx.intf.name,\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.intf.value = !_ctx.intf.value)\n }, [\n _hoisted_2$d,\n createElementVNode(\"div\", _hoisted_3$b, toDisplayString(_ctx.intf.name), 1)\n ], 10, _hoisted_1$h);\n}\nconst CheckboxInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$i, [[\"render\", _sfc_render$i]]);\nclass CheckboxInterface extends NodeInterface$1 {\n constructor() {\n super(...arguments);\n this.component = markRaw(CheckboxInterfaceComponent);\n }\n}\nconst MAX_STRING_LENGTH = 9;\nfunction isValidator(intf) {\n return \"validate\" in intf;\n}\nclass BaseNumericInterface extends NodeInterface$1 {\n constructor(name, value, min, max) {\n super(name, value);\n this.min = min;\n this.max = max;\n }\n validate(v) {\n return (!this.min || v >= this.min) && (!this.max || v <= this.max);\n }\n}\nconst useBaseNumericInterface = (intf, precision = 3) => {\n const inputEl = ref(null);\n const editMode = ref(false);\n const invalid = ref(false);\n const tempValue = ref(\"0\");\n const stringRepresentation = computed(() => {\n const s = intf.value.value.toFixed(precision);\n return s.length > MAX_STRING_LENGTH ? intf.value.value.toExponential(MAX_STRING_LENGTH - 5) : s;\n });\n const validate = (v) => {\n if (Number.isNaN(v)) {\n return false;\n } else if (isValidator(intf.value)) {\n return intf.value.validate(v);\n } else {\n return true;\n }\n };\n const setValue = (newValue) => {\n if (validate(newValue)) {\n intf.value.value = newValue;\n }\n };\n watch(tempValue, () => {\n invalid.value = false;\n });\n const enterEditMode = async () => {\n tempValue.value = intf.value.value.toFixed(precision);\n editMode.value = true;\n await nextTick();\n if (inputEl.value) {\n inputEl.value.focus();\n }\n };\n const leaveEditMode = () => {\n const v = parseFloat(tempValue.value);\n if (!validate(v)) {\n invalid.value = true;\n } else {\n setValue(v);\n editMode.value = false;\n }\n };\n return {\n editMode,\n invalid,\n tempValue,\n inputEl,\n stringRepresentation,\n validate,\n setValue,\n enterEditMode,\n leaveEditMode\n };\n};\nconst _sfc_main$h = {};\nconst _hoisted_1$g = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$c = /* @__PURE__ */ createElementVNode(\"polyline\", { points: \"6 9 12 15 18 9\" }, null, -1);\nconst _hoisted_3$a = [\n _hoisted_2$c\n];\nfunction _sfc_render$h(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$g, _hoisted_3$a);\n}\nconst Arrow = /* @__PURE__ */ _export_sfc(_sfc_main$h, [[\"render\", _sfc_render$h]]);\nconst _sfc_main$g = defineComponent({\n components: {\n \"i-arrow\": Arrow\n },\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const baseNumericInterface = useBaseNumericInterface(toRef(props, \"intf\"), 0);\n const increment = () => {\n baseNumericInterface.setValue(props.intf.value + 1);\n };\n const decrement = () => {\n baseNumericInterface.setValue(props.intf.value - 1);\n };\n return { ...baseNumericInterface, increment, decrement };\n }\n});\nconst _hoisted_1$f = { class: \"baklava-num-input\" };\nconst _hoisted_2$b = [\"title\"];\nconst _hoisted_3$9 = { class: \"__value\" };\nconst _hoisted_4$9 = {\n key: 1,\n class: \"__content\"\n};\nfunction _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_i_arrow = resolveComponent(\"i-arrow\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$f, [\n createElementVNode(\"div\", {\n class: \"__button --dec\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.decrement && _ctx.decrement(...args))\n }, [\n createVNode(_component_i_arrow)\n ]),\n !_ctx.editMode ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"__content\",\n onClick: _cache[1] || (_cache[1] = (...args) => _ctx.enterEditMode && _ctx.enterEditMode(...args))\n }, [\n createElementVNode(\"div\", {\n class: \"__label\",\n title: _ctx.intf.name\n }, toDisplayString(_ctx.intf.name), 9, _hoisted_2$b),\n createElementVNode(\"div\", _hoisted_3$9, toDisplayString(_ctx.stringRepresentation), 1)\n ])) : (openBlock(), createElementBlock(\"div\", _hoisted_4$9, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"inputEl\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => _ctx.tempValue = $event),\n type: \"number\",\n class: normalizeClass([\"baklava-input\", { \"--invalid\": _ctx.invalid }]),\n style: { \"text-align\": \"right\" },\n onBlur: _cache[3] || (_cache[3] = (...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args)),\n onKeydown: _cache[4] || (_cache[4] = withKeys((...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args), [\"enter\"]))\n }, null, 34), [\n [vModelText, _ctx.tempValue]\n ])\n ])),\n createElementVNode(\"div\", {\n class: \"__button --inc\",\n onClick: _cache[5] || (_cache[5] = (...args) => _ctx.increment && _ctx.increment(...args))\n }, [\n createVNode(_component_i_arrow)\n ])\n ]);\n}\nconst IntegerInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"render\", _sfc_render$g]]);\nclass IntegerInterface extends BaseNumericInterface {\n constructor() {\n super(...arguments);\n this.component = markRaw(IntegerInterfaceComponent);\n }\n validate(v) {\n return Number.isInteger(v) && super.validate(v);\n }\n}\nconst _sfc_main$f = defineComponent({\n components: {\n \"i-arrow\": Arrow\n },\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const baseNumericInterface = useBaseNumericInterface(toRef(props, \"intf\"));\n const increment = () => {\n baseNumericInterface.setValue(props.intf.value + 0.1);\n };\n const decrement = () => {\n baseNumericInterface.setValue(props.intf.value - 0.1);\n };\n return { ...baseNumericInterface, increment, decrement };\n }\n});\nconst _hoisted_1$e = { class: \"baklava-num-input\" };\nconst _hoisted_2$a = [\"title\"];\nconst _hoisted_3$8 = { class: \"__value\" };\nconst _hoisted_4$8 = {\n key: 1,\n class: \"__content\"\n};\nfunction _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_i_arrow = resolveComponent(\"i-arrow\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$e, [\n createElementVNode(\"div\", {\n class: \"__button --dec\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.decrement && _ctx.decrement(...args))\n }, [\n createVNode(_component_i_arrow)\n ]),\n !_ctx.editMode ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"__content\",\n onClick: _cache[1] || (_cache[1] = (...args) => _ctx.enterEditMode && _ctx.enterEditMode(...args))\n }, [\n createElementVNode(\"div\", {\n class: \"__label\",\n title: _ctx.intf.name\n }, toDisplayString(_ctx.intf.name), 9, _hoisted_2$a),\n createElementVNode(\"div\", _hoisted_3$8, toDisplayString(_ctx.stringRepresentation), 1)\n ])) : (openBlock(), createElementBlock(\"div\", _hoisted_4$8, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"inputEl\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event) => _ctx.tempValue = $event),\n type: \"number\",\n class: normalizeClass([\"baklava-input\", { \"--invalid\": _ctx.invalid }]),\n style: { \"text-align\": \"right\" },\n onBlur: _cache[3] || (_cache[3] = (...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args)),\n onKeydown: _cache[4] || (_cache[4] = withKeys((...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args), [\"enter\"]))\n }, null, 34), [\n [vModelText, _ctx.tempValue]\n ])\n ])),\n createElementVNode(\"div\", {\n class: \"__button --inc\",\n onClick: _cache[5] || (_cache[5] = (...args) => _ctx.increment && _ctx.increment(...args))\n }, [\n createVNode(_component_i_arrow)\n ])\n ]);\n}\nconst NumberInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"render\", _sfc_render$f]]);\nclass NumberInterface extends BaseNumericInterface {\n constructor() {\n super(...arguments);\n this.component = markRaw(NumberInterfaceComponent);\n }\n}\nconst _sfc_main$e = defineComponent({\n components: {\n \"i-arrow\": Arrow\n },\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const el = ref(null);\n const open = ref(false);\n const selectedItem = computed(\n () => props.intf.items.find(\n (v) => typeof v === \"string\" ? v === props.intf.value : v.value === props.intf.value\n )\n );\n const selectedText = computed(() => {\n if (selectedItem.value) {\n return typeof selectedItem.value === \"string\" ? selectedItem.value : selectedItem.value.text;\n } else {\n return \"\";\n }\n });\n const setSelected = (item) => {\n props.intf.value = typeof item === \"string\" ? item : item.value;\n };\n onClickOutside(el, () => {\n open.value = false;\n });\n return { el, open, selectedItem, selectedText, setSelected };\n }\n});\nconst _hoisted_1$d = [\"title\"];\nconst _hoisted_2$9 = { class: \"__selected\" };\nconst _hoisted_3$7 = { class: \"__text\" };\nconst _hoisted_4$7 = { class: \"__icon\" };\nconst _hoisted_5$4 = { class: \"__dropdown\" };\nconst _hoisted_6$2 = { class: \"item --header\" };\nconst _hoisted_7 = [\"onClick\"];\nfunction _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_i_arrow = resolveComponent(\"i-arrow\");\n return openBlock(), createElementBlock(\"div\", {\n ref: \"el\",\n class: normalizeClass([\"baklava-select\", { \"--open\": _ctx.open }]),\n title: _ctx.intf.name,\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.open = !_ctx.open)\n }, [\n createElementVNode(\"div\", _hoisted_2$9, [\n createElementVNode(\"div\", _hoisted_3$7, toDisplayString(_ctx.selectedText), 1),\n createElementVNode(\"div\", _hoisted_4$7, [\n createVNode(_component_i_arrow)\n ])\n ]),\n createVNode(Transition, { name: \"slide-fade\" }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", _hoisted_5$4, [\n createElementVNode(\"div\", _hoisted_6$2, toDisplayString(_ctx.intf.name), 1),\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.intf.items, (item, i) => {\n return openBlock(), createElementBlock(\"div\", {\n key: i,\n class: normalizeClass([\"item\", { \"--active\": item === _ctx.selectedItem }]),\n onClick: ($event) => _ctx.setSelected(item)\n }, toDisplayString(typeof item === \"string\" ? item : item.text), 11, _hoisted_7);\n }), 128))\n ], 512), [\n [vShow, _ctx.open]\n ])\n ]),\n _: 1\n })\n ], 10, _hoisted_1$d);\n}\nconst SelectInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$e]]);\nclass SelectInterface extends NodeInterface$1 {\n constructor(name, value, items) {\n super(name, value);\n this.component = markRaw(SelectInterfaceComponent);\n this.items = items;\n }\n}\nconst _sfc_main$d = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const el = ref(null);\n const baseNumericInterface = useBaseNumericInterface(toRef(props, \"intf\"));\n const didSlide = ref(false);\n const isMouseDown = ref(false);\n const percentage = computed(\n () => Math.min(100, Math.max(0, props.intf.value * 100 / (props.intf.max - props.intf.min)))\n );\n const mousedown = () => {\n if (baseNumericInterface.editMode.value) {\n return;\n }\n isMouseDown.value = true;\n };\n const mouseup = () => {\n if (baseNumericInterface.editMode.value) {\n return;\n }\n if (!didSlide.value) {\n void baseNumericInterface.enterEditMode();\n }\n isMouseDown.value = false;\n didSlide.value = false;\n };\n const mouseleave = (ev) => {\n if (baseNumericInterface.editMode.value) {\n return;\n }\n if (isMouseDown.value) {\n if (ev.offsetX >= el.value.clientWidth) {\n baseNumericInterface.setValue(props.intf.max);\n } else if (ev.offsetX <= 0) {\n baseNumericInterface.setValue(props.intf.min);\n }\n }\n isMouseDown.value = false;\n didSlide.value = false;\n };\n const mousemove = (ev) => {\n if (baseNumericInterface.editMode.value) {\n return;\n }\n const v = Math.max(\n props.intf.min,\n Math.min(\n props.intf.max,\n (props.intf.max - props.intf.min) * (ev.offsetX / el.value.clientWidth) + props.intf.min\n )\n );\n if (isMouseDown.value) {\n baseNumericInterface.setValue(v);\n didSlide.value = true;\n }\n };\n return { ...baseNumericInterface, el, percentage, mousedown, mouseup, mousemove, mouseleave };\n }\n});\nconst _hoisted_1$c = {\n key: 0,\n class: \"__content\"\n};\nconst _hoisted_2$8 = { class: \"__label\" };\nconst _hoisted_3$6 = { class: \"__value\" };\nconst _hoisted_4$6 = {\n key: 1,\n class: \"__content\"\n};\nfunction _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"el\",\n class: normalizeClass([\"baklava-slider\", { \"baklava-ignore-mouse\": !_ctx.editMode }]),\n onPointerdown: _cache[3] || (_cache[3] = (...args) => _ctx.mousedown && _ctx.mousedown(...args)),\n onPointerup: _cache[4] || (_cache[4] = (...args) => _ctx.mouseup && _ctx.mouseup(...args)),\n onPointermove: _cache[5] || (_cache[5] = (...args) => _ctx.mousemove && _ctx.mousemove(...args)),\n onPointerleave: _cache[6] || (_cache[6] = (...args) => _ctx.mouseleave && _ctx.mouseleave(...args))\n }, [\n createElementVNode(\"div\", {\n class: \"__slider\",\n style: normalizeStyle({ width: _ctx.percentage + \"%\" })\n }, null, 4),\n !_ctx.editMode ? (openBlock(), createElementBlock(\"div\", _hoisted_1$c, [\n createElementVNode(\"div\", _hoisted_2$8, toDisplayString(_ctx.intf.name), 1),\n createElementVNode(\"div\", _hoisted_3$6, toDisplayString(_ctx.stringRepresentation), 1)\n ])) : (openBlock(), createElementBlock(\"div\", _hoisted_4$6, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"inputEl\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => _ctx.tempValue = $event),\n type: \"number\",\n class: normalizeClass([\"baklava-input\", { \"--invalid\": _ctx.invalid }]),\n style: { \"text-align\": \"right\" },\n onBlur: _cache[1] || (_cache[1] = (...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args)),\n onKeydown: _cache[2] || (_cache[2] = withKeys((...args) => _ctx.leaveEditMode && _ctx.leaveEditMode(...args), [\"enter\"]))\n }, null, 34), [\n [vModelText, _ctx.tempValue]\n ])\n ]))\n ], 34);\n}\nconst SliderInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$d]]);\nclass SliderInterface extends BaseNumericInterface {\n constructor(name, value, min, max) {\n super(name, value, min, max);\n this.component = markRaw(SliderInterfaceComponent);\n this.min = min;\n this.max = max;\n }\n}\nconst _sfc_main$c = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n }\n }\n});\nfunction _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", null, toDisplayString(_ctx.intf.value), 1);\n}\nconst TextInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$c]]);\nclass TextInterface extends NodeInterface$1 {\n constructor(name, value) {\n super(name, value);\n this.component = markRaw(TextInterfaceComponent);\n this.setPort(false);\n }\n}\nconst _sfc_main$b = defineComponent({\n props: {\n intf: {\n type: Object,\n required: true\n },\n modelValue: {\n type: String,\n required: true\n }\n },\n emits: [\"update:modelValue\"],\n setup(props, { emit }) {\n const v = computed({\n get: () => props.modelValue,\n set: (v2) => {\n emit(\"update:modelValue\", v2);\n }\n });\n return { v };\n }\n});\nconst _hoisted_1$b = [\"placeholder\", \"title\"];\nfunction _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", null, [\n withDirectives(createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => _ctx.v = $event),\n type: \"text\",\n class: \"baklava-input\",\n placeholder: _ctx.intf.name,\n title: _ctx.intf.name\n }, null, 8, _hoisted_1$b), [\n [vModelText, _ctx.v]\n ])\n ]);\n}\nconst TextInputInterfaceComponent = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$b]]);\nclass TextInputInterface extends NodeInterface$1 {\n constructor() {\n super(...arguments);\n this.component = markRaw(TextInputInterfaceComponent);\n }\n}\nconst SUBGRAPH_INPUT_NODE_TYPE = \"__baklava_SubgraphInputNode\";\nconst SUBGRAPH_OUTPUT_NODE_TYPE = \"__baklava_SubgraphOutputNode\";\nconst SubgraphInputNode = defineNode({\n type: SUBGRAPH_INPUT_NODE_TYPE,\n title: \"Subgraph Input\",\n inputs: {\n name: () => new TextInputInterface(\"Name\", \"Input\").setPort(false)\n },\n outputs: {\n placeholder: () => new NodeInterface$1(\"Connection\", void 0)\n },\n onCreate() {\n this.graphInterfaceId = v4();\n }\n});\nconst SubgraphOutputNode = defineNode({\n type: SUBGRAPH_OUTPUT_NODE_TYPE,\n title: \"Subgraph Output\",\n inputs: {\n name: () => new TextInputInterface(\"Name\", \"Output\").setPort(false),\n placeholder: () => new NodeInterface$1(\"Connection\", void 0)\n },\n onCreate() {\n this.graphInterfaceId = v4();\n }\n});\nfunction checkRecursion(editor, currentGraph, graphNodeType) {\n if (!currentGraph.template) {\n return false;\n }\n if (getGraphNodeTypeString(currentGraph.template) === graphNodeType) {\n return true;\n }\n const template = editor.graphTemplates.find((t) => getGraphNodeTypeString(t) === graphNodeType);\n if (!template) {\n return false;\n }\n const containedGraphNodes = template.nodes.filter((n) => n.type.startsWith(GRAPH_NODE_TYPE_PREFIX));\n return containedGraphNodes.some((n) => checkRecursion(editor, currentGraph, n.type));\n}\nconst _sfc_main$a = defineComponent({\n components: { PaletteEntry },\n setup() {\n const { viewModel } = useViewModel();\n const { x: mouseX, y: mouseY } = usePointer();\n const { transform } = useTransform();\n const editorEl = inject(\"editorEl\");\n const draggedNode = ref(null);\n const categories = computed(() => {\n const nodeTypeEntries = Array.from(viewModel.value.editor.nodeTypes.entries());\n const categoryNames = new Set(nodeTypeEntries.map(([, ni]) => ni.category));\n const categories2 = [];\n for (const c of categoryNames.values()) {\n let nodeTypesInCategory = nodeTypeEntries.filter(([, ni]) => ni.category === c);\n if (viewModel.value.displayedGraph.template) {\n nodeTypesInCategory = nodeTypesInCategory.filter(\n ([nt]) => !checkRecursion(viewModel.value.editor, viewModel.value.displayedGraph, nt)\n );\n } else {\n nodeTypesInCategory = nodeTypesInCategory.filter(\n ([nt]) => ![SUBGRAPH_INPUT_NODE_TYPE, SUBGRAPH_OUTPUT_NODE_TYPE].includes(nt)\n );\n }\n if (nodeTypesInCategory.length > 0) {\n categories2.push({\n name: c,\n nodeTypes: Object.fromEntries(nodeTypesInCategory)\n });\n }\n }\n categories2.sort((a, b) => {\n if (a.name === \"default\") {\n return -1;\n } else if (b.name === \"default\") {\n return 1;\n } else {\n return a.name > b.name ? 1 : -1;\n }\n });\n return categories2;\n });\n const draggedNodeStyles = computed(() => {\n if (!draggedNode.value || !(editorEl == null ? void 0 : editorEl.value)) {\n return {};\n }\n const { left, top } = editorEl.value.getBoundingClientRect();\n return {\n top: `${mouseY.value - top}px`,\n left: `${mouseX.value - left}px`\n };\n });\n const onDragStart = (type, nodeInformation) => {\n draggedNode.value = {\n type,\n nodeInformation\n };\n const onDragEnd = () => {\n const instance = reactive(new nodeInformation.type());\n viewModel.value.displayedGraph.addNode(instance);\n const rect = editorEl.value.getBoundingClientRect();\n const [x, y] = transform(mouseX.value - rect.left, mouseY.value - rect.top);\n instance.position.x = x;\n instance.position.y = y;\n draggedNode.value = null;\n document.removeEventListener(\"pointerup\", onDragEnd);\n };\n document.addEventListener(\"pointerup\", onDragEnd);\n };\n return { draggedNode, categories, draggedNodeStyles, onDragStart, mouseX, mouseY };\n }\n});\nconst _hoisted_1$a = { class: \"baklava-node-palette\" };\nconst _hoisted_2$7 = { key: 0 };\nfunction _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_PaletteEntry = resolveComponent(\"PaletteEntry\");\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"div\", _hoisted_1$a, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.categories, (c) => {\n return openBlock(), createElementBlock(\"section\", {\n key: c.name\n }, [\n c.name !== \"default\" ? (openBlock(), createElementBlock(\"h1\", _hoisted_2$7, toDisplayString(c.name), 1)) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(c.nodeTypes, (ni, nt) => {\n return openBlock(), createBlock(_component_PaletteEntry, {\n key: nt,\n type: nt,\n title: ni.title,\n onPointerdown: ($event) => _ctx.onDragStart(nt, ni)\n }, null, 8, [\"type\", \"title\", \"onPointerdown\"]);\n }), 128))\n ]);\n }), 128))\n ]),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n _ctx.draggedNode ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"baklava-dragged-node\",\n style: normalizeStyle(_ctx.draggedNodeStyles)\n }, [\n createVNode(_component_PaletteEntry, {\n type: _ctx.draggedNode.type,\n title: _ctx.draggedNode.nodeInformation.title\n }, null, 8, [\"type\", \"title\"])\n ], 4)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ], 64);\n}\nconst NodePalette = /* @__PURE__ */ _export_sfc(_sfc_main$a, [[\"render\", _sfc_render$a]]);\nconst SAVE_SUBGRAPH_COMMAND = \"SAVE_SUBGRAPH\";\nfunction registerSaveSubgraphCommand(displayedGraph, handler) {\n const saveSubgraph = () => {\n const graph = displayedGraph.value;\n if (!graph.template) {\n throw new Error(\"Graph template property not set\");\n }\n const interfaceConnections = [];\n const inputs = [];\n const inputNodes = graph.nodes.filter((n) => n.type === SUBGRAPH_INPUT_NODE_TYPE);\n for (const n of inputNodes) {\n const connections = graph.connections.filter((c) => c.from === n.outputs.placeholder);\n connections.forEach((c) => {\n inputs.push({\n id: n.graphInterfaceId,\n name: n.inputs.name.value,\n nodeInterfaceId: c.to.id\n });\n });\n interfaceConnections.push(...connections);\n }\n const outputs = [];\n const outputNodes = graph.nodes.filter((n) => n.type === SUBGRAPH_OUTPUT_NODE_TYPE);\n for (const n of outputNodes) {\n const connections = graph.connections.filter((c) => c.to === n.inputs.placeholder);\n connections.forEach((c) => {\n outputs.push({\n id: n.graphInterfaceId,\n name: n.inputs.name.value,\n nodeInterfaceId: c.from.id\n });\n });\n interfaceConnections.push(...connections);\n }\n const innerConnections = graph.connections.filter((c) => !interfaceConnections.includes(c));\n const nodes = graph.nodes.filter(\n (n) => n.type !== SUBGRAPH_INPUT_NODE_TYPE && n.type !== SUBGRAPH_OUTPUT_NODE_TYPE\n );\n graph.template.update({\n inputs,\n outputs,\n connections: innerConnections.map((c) => ({ id: c.id, from: c.from.id, to: c.to.id })),\n nodes: nodes.map((n) => n.save())\n });\n graph.template.panning = graph.panning;\n graph.template.scaling = graph.scaling;\n };\n handler.registerCommand(SAVE_SUBGRAPH_COMMAND, {\n canExecute: () => {\n var _a2;\n return displayedGraph.value !== ((_a2 = displayedGraph.value.editor) == null ? void 0 : _a2.graph);\n },\n execute: saveSubgraph\n });\n}\nconst CREATE_SUBGRAPH_COMMAND = \"CREATE_SUBGRAPH\";\nconst IGNORE_NODE_TYPES = [SUBGRAPH_INPUT_NODE_TYPE, SUBGRAPH_OUTPUT_NODE_TYPE];\nfunction registerCreateSubgraphCommand(displayedGraph, handler, switchGraph) {\n const canCreateSubgraph = () => {\n return displayedGraph.value.selectedNodes.filter((n) => !IGNORE_NODE_TYPES.includes(n.type)).length > 0;\n };\n const createSubgraph = () => {\n const graph = displayedGraph.value;\n const editor = displayedGraph.value.editor;\n if (graph.selectedNodes.length === 0) {\n return;\n }\n const selectedNodes = graph.selectedNodes.filter((n) => !IGNORE_NODE_TYPES.includes(n.type));\n const selectedNodesInputs = selectedNodes.flatMap((n) => Object.values(n.inputs));\n const selectedNodesOutputs = selectedNodes.flatMap((n) => Object.values(n.outputs));\n const inputConnections = graph.connections.filter(\n (c) => !selectedNodesOutputs.includes(c.from) && selectedNodesInputs.includes(c.to)\n );\n const outputConnections = graph.connections.filter(\n (c) => selectedNodesOutputs.includes(c.from) && !selectedNodesInputs.includes(c.to)\n );\n const innerConnections = graph.connections.filter(\n (c) => selectedNodesOutputs.includes(c.from) && selectedNodesInputs.includes(c.to)\n );\n const inputInterfaces = inputConnections.map((c) => c.to);\n const outputInterfaces = outputConnections.map((c) => c.from);\n const interfaceIdMap = /* @__PURE__ */ new Map();\n const graphInputs = [];\n for (const i of inputInterfaces) {\n const newId = v4();\n interfaceIdMap.set(i.id, newId);\n graphInputs.push({ id: newId, nodeInterfaceId: i.id, name: i.name });\n }\n const graphOutputs = [];\n for (const i of outputInterfaces) {\n const newId = v4();\n interfaceIdMap.set(i.id, newId);\n graphOutputs.push({ id: newId, nodeInterfaceId: i.id, name: i.name });\n }\n const subgraphTemplate = reactive(\n new GraphTemplate(\n {\n connections: innerConnections.map((c) => ({ id: c.id, from: c.from.id, to: c.to.id })),\n inputs: graphInputs,\n outputs: graphOutputs,\n nodes: selectedNodes.map((n) => n.save())\n },\n editor\n )\n );\n editor.addGraphTemplate(subgraphTemplate);\n const nt = editor.nodeTypes.get(getGraphNodeTypeString(subgraphTemplate));\n if (!nt) {\n throw new Error(\"Unable to create subgraph: Could not find corresponding graph node type\");\n }\n const node = reactive(new nt.type());\n graph.addNode(node);\n const averageX = Math.round(\n selectedNodes.map((n) => n.position.x).reduce((p, c) => p + c, 0) / selectedNodes.length\n );\n const averageY = Math.round(\n selectedNodes.map((n) => n.position.y).reduce((p, c) => p + c, 0) / selectedNodes.length\n );\n node.position.x = averageX;\n node.position.y = averageY;\n inputConnections.forEach((c) => {\n graph.removeConnection(c);\n graph.addConnection(c.from, node.inputs[interfaceIdMap.get(c.to.id)]);\n });\n outputConnections.forEach((c) => {\n graph.removeConnection(c);\n graph.addConnection(node.outputs[interfaceIdMap.get(c.from.id)], c.to);\n });\n selectedNodes.forEach((n) => graph.removeNode(n));\n if (handler.canExecuteCommand(SAVE_SUBGRAPH_COMMAND)) {\n handler.executeCommand(SAVE_SUBGRAPH_COMMAND);\n }\n switchGraph(subgraphTemplate);\n displayedGraph.value.panning = { ...graph.panning };\n displayedGraph.value.scaling = graph.scaling;\n };\n handler.registerCommand(CREATE_SUBGRAPH_COMMAND, {\n canExecute: canCreateSubgraph,\n execute: createSubgraph\n });\n}\nconst DELETE_NODES_COMMAND = \"DELETE_NODES\";\nfunction registerDeleteNodesCommand(displayedGraph, handler) {\n handler.registerCommand(DELETE_NODES_COMMAND, {\n canExecute: () => displayedGraph.value.selectedNodes.length > 0,\n execute() {\n displayedGraph.value.selectedNodes.forEach((n) => displayedGraph.value.removeNode(n));\n }\n });\n handler.registerHotkey([\"Delete\"], DELETE_NODES_COMMAND);\n}\nconst SWITCH_TO_MAIN_GRAPH_COMMAND = \"SWITCH_TO_MAIN_GRAPH\";\nfunction registerSwitchToMainGraphCommand(displayedGraph, handler, switchGraph) {\n handler.registerCommand(SWITCH_TO_MAIN_GRAPH_COMMAND, {\n canExecute: () => displayedGraph.value !== displayedGraph.value.editor.graph,\n execute: () => {\n handler.executeCommand(SAVE_SUBGRAPH_COMMAND);\n switchGraph(displayedGraph.value.editor.graph);\n }\n });\n}\nfunction registerGraphCommands(displayedGraph, handler, switchGraph) {\n registerDeleteNodesCommand(displayedGraph, handler);\n registerCreateSubgraphCommand(displayedGraph, handler, switchGraph);\n registerSaveSubgraphCommand(displayedGraph, handler);\n registerSwitchToMainGraphCommand(displayedGraph, handler, switchGraph);\n}\nclass NodeStep {\n constructor(type, data) {\n this.type = type;\n if (type === \"addNode\") {\n this.nodeId = data;\n } else {\n this.nodeState = data;\n }\n }\n undo(graph) {\n if (this.type === \"addNode\") {\n this.removeNode(graph);\n } else {\n this.addNode(graph);\n }\n }\n redo(graph) {\n if (this.type === \"addNode\" && this.nodeState) {\n this.addNode(graph);\n } else if (this.type === \"removeNode\" && this.nodeId) {\n this.removeNode(graph);\n }\n }\n addNode(graph) {\n const nodeType = graph.editor.nodeTypes.get(this.nodeState.type);\n if (!nodeType) {\n return;\n }\n const n = new nodeType.type();\n graph.addNode(n);\n n.load(this.nodeState);\n this.nodeId = n.id;\n }\n removeNode(graph) {\n const node = graph.nodes.find((n) => n.id === this.nodeId);\n if (!node) {\n return;\n }\n this.nodeState = node.save();\n graph.removeNode(node);\n }\n}\nclass ConnectionStep {\n constructor(type, data) {\n this.type = type;\n if (type === \"addConnection\") {\n this.connectionId = data;\n } else {\n const d = data;\n this.connectionState = {\n id: d.id,\n from: d.from.id,\n to: d.to.id\n };\n }\n }\n undo(graph) {\n if (this.type === \"addConnection\") {\n this.removeConnection(graph);\n } else {\n this.addConnection(graph);\n }\n }\n redo(graph) {\n if (this.type === \"addConnection\" && this.connectionState) {\n this.addConnection(graph);\n } else if (this.type === \"removeConnection\" && this.connectionId) {\n this.removeConnection(graph);\n }\n }\n addConnection(graph) {\n const fromIntf = graph.findNodeInterface(this.connectionState.from);\n const toIntf = graph.findNodeInterface(this.connectionState.to);\n if (!fromIntf || !toIntf) {\n return;\n }\n graph.addConnection(fromIntf, toIntf);\n }\n removeConnection(graph) {\n const connection = graph.connections.find((c) => c.id === this.connectionId);\n if (!connection) {\n return;\n }\n this.connectionState = {\n id: connection.id,\n from: connection.from.id,\n to: connection.to.id\n };\n graph.removeConnection(connection);\n }\n}\nclass TransactionStep {\n constructor(steps) {\n this.type = \"transaction\";\n if (steps.length === 0) {\n throw new Error(\"Can't create a transaction with no steps\");\n }\n this.steps = steps;\n }\n undo(graph) {\n for (let i = this.steps.length - 1; i >= 0; i--) {\n this.steps[i].undo(graph);\n }\n }\n redo(graph) {\n for (let i = 0; i < this.steps.length; i++) {\n this.steps[i].redo(graph);\n }\n }\n}\nconst UNDO_COMMAND = \"UNDO\";\nconst REDO_COMMAND = \"REDO\";\nconst START_TRANSACTION_COMMAND = \"START_TRANSACTION\";\nconst COMMIT_TRANSACTION_COMMAND = \"COMMIT_TRANSACTION\";\nfunction useHistory(graph, commandHandler) {\n const token = Symbol(\"HistoryToken\");\n const maxSteps = ref(200);\n const steps = ref([]);\n const changeBySelf = ref(false);\n const currentIndex = ref(-1);\n const activeTransaction = ref(false);\n const transactionSteps = ref([]);\n const addStep = (step) => {\n if (changeBySelf.value) {\n return;\n }\n if (activeTransaction.value) {\n transactionSteps.value.push(step);\n } else {\n if (currentIndex.value !== steps.value.length - 1) {\n steps.value = steps.value.slice(0, currentIndex.value + 1);\n }\n steps.value.push(step);\n currentIndex.value++;\n while (steps.value.length > maxSteps.value) {\n steps.value.shift();\n }\n }\n };\n const startTransaction = () => {\n activeTransaction.value = true;\n };\n const commitTransaction = () => {\n activeTransaction.value = false;\n if (transactionSteps.value.length > 0) {\n addStep(new TransactionStep(transactionSteps.value));\n transactionSteps.value = [];\n }\n };\n const canUndo = () => steps.value.length !== 0 && currentIndex.value !== -1;\n const undo = () => {\n if (!canUndo()) {\n return;\n }\n changeBySelf.value = true;\n steps.value[currentIndex.value--].undo(graph.value);\n changeBySelf.value = false;\n };\n const canRedo = () => steps.value.length !== 0 && currentIndex.value < steps.value.length - 1;\n const redo = () => {\n if (!canRedo()) {\n return;\n }\n changeBySelf.value = true;\n steps.value[++currentIndex.value].redo(graph.value);\n changeBySelf.value = false;\n };\n watch(\n graph,\n (newGraph, oldGraph) => {\n if (oldGraph) {\n oldGraph.events.addNode.unsubscribe(token);\n oldGraph.events.removeNode.unsubscribe(token);\n oldGraph.events.addConnection.unsubscribe(token);\n oldGraph.events.removeConnection.unsubscribe(token);\n }\n if (newGraph) {\n newGraph.events.addNode.subscribe(token, (node) => {\n addStep(new NodeStep(\"addNode\", node.id));\n });\n newGraph.events.removeNode.subscribe(token, (node) => {\n addStep(new NodeStep(\"removeNode\", node.save()));\n });\n newGraph.events.addConnection.subscribe(token, (conn) => {\n addStep(new ConnectionStep(\"addConnection\", conn.id));\n });\n newGraph.events.removeConnection.subscribe(token, (conn) => {\n addStep(new ConnectionStep(\"removeConnection\", conn));\n });\n }\n },\n { immediate: true }\n );\n commandHandler.registerCommand(UNDO_COMMAND, {\n canExecute: canUndo,\n execute: undo\n });\n commandHandler.registerCommand(REDO_COMMAND, {\n canExecute: canRedo,\n execute: redo\n });\n commandHandler.registerCommand(START_TRANSACTION_COMMAND, {\n canExecute: () => !activeTransaction.value,\n execute: startTransaction\n });\n commandHandler.registerCommand(COMMIT_TRANSACTION_COMMAND, {\n canExecute: () => activeTransaction.value,\n execute: commitTransaction\n });\n commandHandler.registerHotkey([\"Control\", \"z\"], UNDO_COMMAND);\n commandHandler.registerHotkey([\"Control\", \"y\"], REDO_COMMAND);\n return reactive({\n maxSteps\n });\n}\nconst COPY_COMMAND = \"COPY\";\nconst PASTE_COMMAND = \"PASTE\";\nconst CLEAR_CLIPBOARD_COMMAND = \"CLEAR_CLIPBOARD\";\nfunction useClipboard(displayedGraph, editor, commandHandler) {\n const token = Symbol(\"ClipboardToken\");\n const nodeBuffer = ref(\"\");\n const connectionBuffer = ref(\"\");\n const isEmpty = computed(() => !nodeBuffer.value);\n const clear = () => {\n nodeBuffer.value = \"\";\n connectionBuffer.value = \"\";\n };\n const copy = () => {\n const interfacesOfSelectedNodes = displayedGraph.value.selectedNodes.flatMap((n) => [\n ...Object.values(n.inputs),\n ...Object.values(n.outputs)\n ]);\n const connections = displayedGraph.value.connections.filter(\n (conn) => interfacesOfSelectedNodes.includes(conn.from) || interfacesOfSelectedNodes.includes(conn.to)\n ).map((conn) => ({ from: conn.from.id, to: conn.to.id }));\n connectionBuffer.value = JSON.stringify(connections);\n nodeBuffer.value = JSON.stringify(displayedGraph.value.selectedNodes.map((n) => n.save()));\n };\n const findInterface = (nodes, id, io) => {\n for (const n of nodes) {\n let intf;\n if (!io || io === \"input\") {\n intf = Object.values(n.inputs).find((intf2) => intf2.id === id);\n }\n if (!intf && (!io || io === \"output\")) {\n intf = Object.values(n.outputs).find((intf2) => intf2.id === id);\n }\n if (intf) {\n return intf;\n }\n }\n return void 0;\n };\n const paste = () => {\n if (isEmpty.value) {\n return;\n }\n const idmap = /* @__PURE__ */ new Map();\n const parsedNodeBuffer = JSON.parse(nodeBuffer.value);\n const parsedConnectionBuffer = JSON.parse(connectionBuffer.value);\n const newNodes = [];\n const newConnections = [];\n const graph = displayedGraph.value;\n commandHandler.executeCommand(START_TRANSACTION_COMMAND);\n for (const n of parsedNodeBuffer) {\n const nodeType = editor.value.nodeTypes.get(n.type);\n if (!nodeType) {\n console.warn(`Node type ${n.type} not registered`);\n return;\n }\n const copiedNode = new nodeType.type();\n const generatedId = copiedNode.id;\n newNodes.push(copiedNode);\n const tapInterfaces = (intfs) => {\n Object.values(intfs).forEach((intf) => {\n intf.hooks.load.subscribe(token, (intfState) => {\n const newIntfId = v4();\n idmap.set(intfState.id, newIntfId);\n intf.id = newIntfId;\n intf.hooks.load.unsubscribe(token);\n return intfState;\n });\n });\n };\n tapInterfaces(copiedNode.inputs);\n tapInterfaces(copiedNode.outputs);\n copiedNode.hooks.beforeLoad.subscribe(token, (nodeState) => {\n const ns = nodeState;\n if (ns.position) {\n ns.position.x += 10;\n ns.position.y += 10;\n }\n copiedNode.hooks.beforeLoad.unsubscribe(token);\n return ns;\n });\n graph.addNode(copiedNode);\n copiedNode.load(n);\n copiedNode.id = generatedId;\n idmap.set(n.id, generatedId);\n }\n for (const c of parsedConnectionBuffer) {\n const fromIntf = findInterface(newNodes, idmap.get(c.from), \"output\");\n const toIntf = findInterface(newNodes, idmap.get(c.to), \"input\");\n if (!fromIntf || !toIntf) {\n continue;\n }\n const newConnection = graph.addConnection(fromIntf, toIntf);\n if (newConnection) {\n newConnections.push(newConnection);\n }\n }\n commandHandler.executeCommand(COMMIT_TRANSACTION_COMMAND);\n return {\n newNodes,\n newConnections\n };\n };\n commandHandler.registerCommand(COPY_COMMAND, {\n canExecute: () => true,\n execute: copy\n });\n commandHandler.registerHotkey([\"Control\", \"c\"], COPY_COMMAND);\n commandHandler.registerCommand(PASTE_COMMAND, {\n canExecute: () => !isEmpty.value,\n execute: paste\n });\n commandHandler.registerHotkey([\"Control\", \"v\"], PASTE_COMMAND);\n commandHandler.registerCommand(CLEAR_CLIPBOARD_COMMAND, {\n canExecute: () => true,\n execute: clear\n });\n return reactive({ isEmpty });\n}\nconst OPEN_SIDEBAR_COMMAND = \"OPEN_SIDEBAR\";\nfunction registerOpenSidebarCommand(displayedGraph, handler) {\n handler.registerCommand(OPEN_SIDEBAR_COMMAND, {\n execute: (nodeId) => {\n displayedGraph.value.sidebar.nodeId = nodeId;\n displayedGraph.value.sidebar.visible = true;\n },\n canExecute: () => true\n });\n}\nfunction registerSidebarCommands(displayedGraph, handler) {\n registerOpenSidebarCommand(displayedGraph, handler);\n}\nconst commandList = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n CREATE_SUBGRAPH_COMMAND,\n DELETE_NODES_COMMAND,\n SAVE_SUBGRAPH_COMMAND,\n SWITCH_TO_MAIN_GRAPH_COMMAND,\n COMMIT_TRANSACTION_COMMAND,\n START_TRANSACTION_COMMAND,\n UNDO_COMMAND,\n REDO_COMMAND,\n CLEAR_CLIPBOARD_COMMAND,\n COPY_COMMAND,\n PASTE_COMMAND,\n OPEN_SIDEBAR_COMMAND\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst _sfc_main$9 = {};\nconst _hoisted_1$9 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$6 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$5 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M9 13l-4 -4l4 -4m-4 4h11a4 4 0 0 1 0 8h-1\" }, null, -1);\nconst _hoisted_4$5 = [\n _hoisted_2$6,\n _hoisted_3$5\n];\nfunction _sfc_render$9(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$9, _hoisted_4$5);\n}\nconst ArrowBackUp = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"render\", _sfc_render$9]]);\nconst _sfc_main$8 = {};\nconst _hoisted_1$8 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$5 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$4 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M15 13l4 -4l-4 -4m4 4h-11a4 4 0 0 0 0 8h1\" }, null, -1);\nconst _hoisted_4$4 = [\n _hoisted_2$5,\n _hoisted_3$4\n];\nfunction _sfc_render$8(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$8, _hoisted_4$4);\n}\nconst ArrowForwardUp = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"render\", _sfc_render$8]]);\nconst _sfc_main$7 = {};\nconst _hoisted_1$7 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$4 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$3 = /* @__PURE__ */ createElementVNode(\"line\", {\n x1: \"5\",\n y1: \"12\",\n x2: \"19\",\n y2: \"12\"\n}, null, -1);\nconst _hoisted_4$3 = /* @__PURE__ */ createElementVNode(\"line\", {\n x1: \"5\",\n y1: \"12\",\n x2: \"11\",\n y2: \"18\"\n}, null, -1);\nconst _hoisted_5$3 = /* @__PURE__ */ createElementVNode(\"line\", {\n x1: \"5\",\n y1: \"12\",\n x2: \"11\",\n y2: \"6\"\n}, null, -1);\nconst _hoisted_6$1 = [\n _hoisted_2$4,\n _hoisted_3$3,\n _hoisted_4$3,\n _hoisted_5$3\n];\nfunction _sfc_render$7(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$7, _hoisted_6$1);\n}\nconst ArrowLeft = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$6 = {};\nconst _hoisted_1$6 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$3 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$2 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2\" }, null, -1);\nconst _hoisted_4$2 = /* @__PURE__ */ createElementVNode(\"rect\", {\n x: \"9\",\n y: \"3\",\n width: \"6\",\n height: \"4\",\n rx: \"2\"\n}, null, -1);\nconst _hoisted_5$2 = [\n _hoisted_2$3,\n _hoisted_3$2,\n _hoisted_4$2\n];\nfunction _sfc_render$6(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$6, _hoisted_5$2);\n}\nconst Clipboard = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$5 = {};\nconst _hoisted_1$5 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$2 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3$1 = /* @__PURE__ */ createElementVNode(\"rect\", {\n x: \"8\",\n y: \"8\",\n width: \"12\",\n height: \"12\",\n rx: \"2\"\n}, null, -1);\nconst _hoisted_4$1 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" }, null, -1);\nconst _hoisted_5$1 = [\n _hoisted_2$2,\n _hoisted_3$1,\n _hoisted_4$1\n];\nfunction _sfc_render$5(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$5, _hoisted_5$1);\n}\nconst Copy = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$4 = {};\nconst _hoisted_1$4 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2$1 = /* @__PURE__ */ createElementVNode(\"path\", {\n stroke: \"none\",\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M6 4h10l4 4v10a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2\" }, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"circle\", {\n cx: \"12\",\n cy: \"14\",\n r: \"2\"\n}, null, -1);\nconst _hoisted_5 = /* @__PURE__ */ createElementVNode(\"polyline\", { points: \"14 4 14 8 8 8 8 4\" }, null, -1);\nconst _hoisted_6 = [\n _hoisted_2$1,\n _hoisted_3,\n _hoisted_4,\n _hoisted_5\n];\nfunction _sfc_render$4(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$4, _hoisted_6);\n}\nconst DeviceFloppy = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$3 = {};\nconst _hoisted_1$3 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n class: \"baklava-icon\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createStaticVNode('', 6);\nconst _hoisted_8 = [\n _hoisted_2\n];\nfunction _sfc_render$3(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$3, _hoisted_8);\n}\nconst Hierarchy2 = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = defineComponent({\n props: {\n command: {\n type: String,\n required: true\n },\n title: {\n type: String,\n required: true\n },\n icon: {\n type: Object,\n required: false,\n default: void 0\n }\n },\n setup() {\n const { viewModel } = useViewModel();\n return { viewModel };\n }\n});\nconst _hoisted_1$2 = [\"disabled\", \"title\"];\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"button\", {\n class: \"baklava-toolbar-entry baklava-toolbar-button\",\n disabled: !_ctx.viewModel.commandHandler.canExecuteCommand(_ctx.command),\n title: _ctx.title,\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.viewModel.commandHandler.executeCommand(_ctx.command))\n }, [\n _ctx.icon ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon), { key: 0 })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createTextVNode(toDisplayString(_ctx.title), 1)\n ], 64))\n ], 8, _hoisted_1$2);\n}\nconst ToolbarButton = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$1 = defineComponent({\n components: { ToolbarButton },\n setup() {\n const { viewModel } = useViewModel();\n const isSubgraph = computed(() => viewModel.value.displayedGraph !== viewModel.value.editor.graph);\n const commands = [\n { command: COPY_COMMAND, title: \"Copy\", icon: Copy },\n { command: PASTE_COMMAND, title: \"Paste\", icon: Clipboard },\n { command: UNDO_COMMAND, title: \"Undo\", icon: ArrowBackUp },\n { command: REDO_COMMAND, title: \"Redo\", icon: ArrowForwardUp },\n { command: CREATE_SUBGRAPH_COMMAND, title: \"Create Subgraph\", icon: Hierarchy2 }\n ];\n const subgraphCommands = [\n { command: SAVE_SUBGRAPH_COMMAND, title: \"Save Subgraph\", icon: DeviceFloppy },\n { command: SWITCH_TO_MAIN_GRAPH_COMMAND, title: \"Back to Main Graph\", icon: ArrowLeft }\n ];\n return { isSubgraph, commands, subgraphCommands };\n }\n});\nconst _hoisted_1$1 = { class: \"baklava-toolbar\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_toolbar_button = resolveComponent(\"toolbar-button\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.commands, (c) => {\n return openBlock(), createBlock(_component_toolbar_button, {\n key: c.command,\n command: c.command,\n title: c.title,\n icon: c.icon\n }, null, 8, [\"command\", \"title\", \"icon\"]);\n }), 128)),\n _ctx.isSubgraph ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.subgraphCommands, (c) => {\n return openBlock(), createBlock(_component_toolbar_button, {\n key: c.command,\n command: c.command,\n title: c.title,\n icon: c.icon\n }, null, 8, [\"command\", \"title\", \"icon\"]);\n }), 128)) : createCommentVNode(\"\", true)\n ]);\n}\nconst Toolbar = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = defineComponent({\n components: { Background, Node: _sfc_main$q, ConnectionWrapper, TemporaryConnection, Sidebar, Minimap, NodePalette, Toolbar },\n props: {\n viewModel: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n const token = Symbol(\"EditorToken\");\n const viewModelRef2 = toRef(props, \"viewModel\");\n providePlugin(viewModelRef2);\n const el = ref(null);\n provide(\"editorEl\", el);\n const nodes = computed(() => props.viewModel.displayedGraph.nodes);\n const connections = computed(() => props.viewModel.displayedGraph.connections);\n const selectedNodes = computed(() => props.viewModel.displayedGraph.selectedNodes);\n const panZoom = usePanZoom();\n const temporaryConnection = useTemporaryConnection();\n const nodeContainerStyle = computed(() => ({\n ...panZoom.styles.value\n }));\n const counter = ref(0);\n props.viewModel.editor.hooks.load.subscribe(token, (s) => {\n counter.value++;\n return s;\n });\n const onPointerMove = (ev) => {\n panZoom.onPointerMove(ev);\n temporaryConnection.onMouseMove(ev);\n };\n const onPointerDown = (ev) => {\n if (ev.button === 0) {\n if (ev.target === el.value) {\n unselectAllNodes();\n panZoom.onPointerDown(ev);\n }\n temporaryConnection.onMouseDown();\n }\n };\n const onPointerUp = (ev) => {\n panZoom.onPointerUp(ev);\n temporaryConnection.onMouseUp();\n };\n const keyDown = (ev) => {\n if (ev.key === \"Tab\") {\n ev.preventDefault();\n }\n props.viewModel.commandHandler.handleKeyDown(ev);\n };\n const keyUp = (ev) => {\n props.viewModel.commandHandler.handleKeyUp(ev);\n };\n const selectNode = (node) => {\n if (!props.viewModel.commandHandler.pressedKeys.includes(\"Control\")) {\n unselectAllNodes();\n }\n props.viewModel.displayedGraph.selectedNodes.push(node);\n };\n const unselectAllNodes = () => {\n props.viewModel.displayedGraph.selectedNodes = [];\n };\n return {\n el,\n counter,\n nodes,\n connections,\n selectedNodes,\n nodeContainerStyle,\n onPointerMove,\n onPointerDown,\n onPointerUp,\n keyDown,\n keyUp,\n selectNode,\n temporaryConnection: temporaryConnection.temporaryConnection,\n mouseWheel: panZoom.onMouseWheel,\n dragging: panZoom.dragging\n };\n }\n});\nconst _hoisted_1 = { class: \"connections-container\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_background = resolveComponent(\"background\");\n const _component_toolbar = resolveComponent(\"toolbar\");\n const _component_node_palette = resolveComponent(\"node-palette\");\n const _component_connection_wrapper = resolveComponent(\"connection-wrapper\");\n const _component_temporary_connection = resolveComponent(\"temporary-connection\");\n const _component_node = resolveComponent(\"node\");\n const _component_sidebar = resolveComponent(\"sidebar\");\n const _component_minimap = resolveComponent(\"minimap\");\n return openBlock(), createElementBlock(\"div\", {\n ref: \"el\",\n tabindex: \"-1\",\n class: normalizeClass([\"baklava-editor\", {\n \"baklava-ignore-mouse\": !!_ctx.temporaryConnection || _ctx.dragging,\n \"--temporary-connection\": !!_ctx.temporaryConnection\n }]),\n onPointermove: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.onPointerMove && _ctx.onPointerMove(...args), [\"self\"])),\n onPointerdown: _cache[1] || (_cache[1] = (...args) => _ctx.onPointerDown && _ctx.onPointerDown(...args)),\n onPointerup: _cache[2] || (_cache[2] = (...args) => _ctx.onPointerUp && _ctx.onPointerUp(...args)),\n onWheel: _cache[3] || (_cache[3] = withModifiers((...args) => _ctx.mouseWheel && _ctx.mouseWheel(...args), [\"self\"])),\n onKeydown: _cache[4] || (_cache[4] = (...args) => _ctx.keyDown && _ctx.keyDown(...args)),\n onKeyup: _cache[5] || (_cache[5] = (...args) => _ctx.keyUp && _ctx.keyUp(...args))\n }, [\n renderSlot(_ctx.$slots, \"background\", {}, () => [\n createVNode(_component_background)\n ]),\n renderSlot(_ctx.$slots, \"toolbar\", {}, () => [\n createVNode(_component_toolbar)\n ]),\n renderSlot(_ctx.$slots, \"palette\", {}, () => [\n createVNode(_component_node_palette)\n ]),\n (openBlock(), createElementBlock(\"svg\", _hoisted_1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.connections, (connection) => {\n return openBlock(), createElementBlock(\"g\", {\n key: connection.id + _ctx.counter.toString()\n }, [\n renderSlot(_ctx.$slots, \"connection\", { connection }, () => [\n createVNode(_component_connection_wrapper, { connection }, null, 8, [\"connection\"])\n ])\n ]);\n }), 128)),\n renderSlot(_ctx.$slots, \"temporaryConnection\", { temporaryConnection: _ctx.temporaryConnection }, () => [\n _ctx.temporaryConnection ? (openBlock(), createBlock(_component_temporary_connection, {\n key: 0,\n connection: _ctx.temporaryConnection\n }, null, 8, [\"connection\"])) : createCommentVNode(\"\", true)\n ])\n ])),\n createElementVNode(\"div\", {\n class: \"node-container\",\n style: normalizeStyle(_ctx.nodeContainerStyle)\n }, [\n createVNode(TransitionGroup, { name: \"fade\" }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.nodes, (node) => {\n return renderSlot(_ctx.$slots, \"node\", {\n node,\n selected: _ctx.selectedNodes.includes(node),\n onSelect: ($event) => _ctx.selectNode(node)\n }, () => [\n (openBlock(), createBlock(_component_node, {\n key: node.id + _ctx.counter.toString(),\n node,\n selected: _ctx.selectedNodes.includes(node),\n onSelect: ($event) => _ctx.selectNode(node)\n }, null, 8, [\"node\", \"selected\", \"onSelect\"]))\n ]);\n }), 256))\n ]),\n _: 3\n })\n ], 4),\n renderSlot(_ctx.$slots, \"sidebar\", {}, () => [\n createVNode(_component_sidebar)\n ]),\n renderSlot(_ctx.$slots, \"minimap\", {}, () => [\n _ctx.viewModel.settings.enableMinimap ? (openBlock(), createBlock(_component_minimap, { key: 0 })) : createCommentVNode(\"\", true)\n ])\n ], 34);\n}\nconst Editor = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nfunction useHotkeyHandler(executeCommand) {\n const pressedKeys = ref([]);\n const handlers = ref([]);\n const handleKeyDown = (ev) => {\n if (!pressedKeys.value.includes(ev.key)) {\n pressedKeys.value.push(ev.key);\n }\n handlers.value.forEach((h) => {\n if (h.keys.every((k) => pressedKeys.value.includes(k))) {\n executeCommand(h.commandName);\n }\n });\n };\n const handleKeyUp = (ev) => {\n const index = pressedKeys.value.indexOf(ev.key);\n if (index >= 0) {\n pressedKeys.value.splice(index, 1);\n }\n };\n const registerHotkey = (keys2, commandName) => {\n handlers.value.push({ keys: keys2, commandName });\n };\n return { pressedKeys, handleKeyDown, handleKeyUp, registerHotkey };\n}\nconst useCommandHandler = () => {\n const commands = ref(/* @__PURE__ */ new Map());\n const registerCommand = (name, command) => {\n if (commands.value.has(name)) {\n throw new Error(`Command \"${name}\" already exists`);\n }\n commands.value.set(name, command);\n };\n const executeCommand = (name, throwOnNonexisting = false, ...args) => {\n if (!commands.value.has(name)) {\n if (throwOnNonexisting) {\n throw new Error(`[CommandHandler] Command ${name} not registered`);\n } else {\n return;\n }\n }\n return commands.value.get(name).execute(...args);\n };\n const canExecuteCommand = (name, throwOnNonexisting = false, ...args) => {\n if (!commands.value.has(name)) {\n if (throwOnNonexisting) {\n throw new Error(`[CommandHandler] Command ${name} not registered`);\n } else {\n return false;\n }\n }\n return commands.value.get(name).canExecute(args);\n };\n const hotkeyHandler = useHotkeyHandler(executeCommand);\n return reactive({ registerCommand, executeCommand, canExecuteCommand, ...hotkeyHandler });\n};\nconst isTemplate = (g) => !(g instanceof Graph);\nfunction useSwitchGraph(editor, displayedGraph) {\n const switchGraph = (newGraph) => {\n let newGraphInstance;\n if (!isTemplate(newGraph)) {\n if (newGraph !== editor.value.graph) {\n throw new Error(\n \"Can only switch using 'Graph' instance when it is the root graph. Otherwise a 'GraphTemplate' must be used.\"\n );\n }\n newGraphInstance = newGraph;\n } else {\n newGraphInstance = new Graph(editor.value);\n newGraph.createGraph(newGraphInstance);\n newGraphInstance.inputs.forEach((input) => {\n const node = new SubgraphInputNode();\n node.inputs.name.value = input.name;\n node.graphInterfaceId = input.id;\n newGraphInstance.addNode(node);\n const targetInterface = newGraphInstance.findNodeInterface(input.nodeInterfaceId);\n if (!targetInterface) {\n console.warn(`Could not find target interface ${input.nodeInterfaceId} for subgraph input node`);\n return;\n }\n newGraphInstance.addConnection(node.outputs.placeholder, targetInterface);\n });\n newGraphInstance.outputs.forEach((output) => {\n const node = new SubgraphOutputNode();\n node.inputs.name.value = output.name;\n node.graphInterfaceId = output.id;\n newGraphInstance.addNode(node);\n const targetInterface = newGraphInstance.findNodeInterface(output.nodeInterfaceId);\n if (!targetInterface) {\n console.warn(`Could not find target interface ${output.nodeInterfaceId} for subgraph input node`);\n return;\n }\n newGraphInstance.addConnection(targetInterface, node.inputs.placeholder);\n });\n }\n if (displayedGraph.value && displayedGraph.value !== editor.value.graph) {\n displayedGraph.value.destroy();\n }\n newGraphInstance.panning = newGraphInstance.panning ?? newGraph.panning ?? { x: 0, y: 0 };\n newGraphInstance.scaling = newGraphInstance.scaling ?? newGraph.scaling ?? 1;\n newGraphInstance.selectedNodes = newGraphInstance.selectedNodes ?? [];\n newGraphInstance.sidebar = newGraphInstance.sidebar ?? { visible: false, nodeId: \"\", optionName: \"\" };\n displayedGraph.value = newGraphInstance;\n };\n return { switchGraph };\n}\nfunction setViewNodeProperties(node) {\n node.position = node.position ?? { x: 0, y: 0 };\n node.disablePointerEvents = false;\n node.twoColumn = node.twoColumn ?? false;\n node.width = node.width ?? 200;\n}\nfunction useBaklava(existingEditor) {\n const editor = ref(existingEditor ?? new Editor$1());\n const token = Symbol(\"ViewModelToken\");\n const _displayedGraph = ref(null);\n const displayedGraph = shallowReadonly(_displayedGraph);\n const { switchGraph } = useSwitchGraph(editor, _displayedGraph);\n const isSubgraph = computed(() => displayedGraph.value && displayedGraph.value !== editor.value.graph);\n const settings = reactive({\n useStraightConnections: false,\n enableMinimap: false,\n background: {\n gridSize: 100,\n gridDivision: 5,\n subGridVisibleThreshold: 0.6\n }\n });\n const commandHandler = useCommandHandler();\n const history = useHistory(displayedGraph, commandHandler);\n const clipboard = useClipboard(displayedGraph, editor, commandHandler);\n const hooks = {\n renderNode: new SequentialHook(null),\n renderInterface: new SequentialHook(null)\n };\n registerGraphCommands(displayedGraph, commandHandler, switchGraph);\n registerSidebarCommands(displayedGraph, commandHandler);\n watch(\n editor,\n (newValue, oldValue) => {\n if (oldValue) {\n oldValue.events.registerGraph.unsubscribe(token);\n oldValue.graphEvents.beforeAddNode.unsubscribe(token);\n newValue.nodeHooks.beforeLoad.unsubscribe(token);\n newValue.nodeHooks.afterSave.unsubscribe(token);\n newValue.graphTemplateHooks.beforeLoad.unsubscribe(token);\n newValue.graphTemplateHooks.afterSave.unsubscribe(token);\n }\n if (newValue) {\n newValue.nodeHooks.beforeLoad.subscribe(token, (state, node) => {\n node.position = state.position ?? { x: 0, y: 0 };\n node.width = state.width ?? 200;\n node.twoColumn = state.twoColumn ?? false;\n return state;\n });\n newValue.nodeHooks.afterSave.subscribe(token, (state, node) => {\n state.position = node.position;\n state.width = node.width;\n state.twoColumn = node.twoColumn;\n return state;\n });\n newValue.graphTemplateHooks.beforeLoad.subscribe(token, (state, template) => {\n template.panning = state.panning;\n template.scaling = state.scaling;\n return state;\n });\n newValue.graphTemplateHooks.afterSave.subscribe(token, (state, template) => {\n state.panning = template.panning;\n state.scaling = template.scaling;\n return state;\n });\n newValue.graphEvents.beforeAddNode.subscribe(token, (node) => setViewNodeProperties(node));\n editor.value.registerNodeType(SubgraphInputNode, { category: \"Subgraphs\" });\n editor.value.registerNodeType(SubgraphOutputNode, { category: \"Subgraphs\" });\n switchGraph(newValue.graph);\n }\n },\n { immediate: true }\n );\n return reactive({\n editor,\n displayedGraph,\n isSubgraph,\n settings,\n commandHandler,\n history,\n clipboard,\n hooks,\n switchGraph\n });\n}\nconst components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Connection: ConnectionView,\n ConnectionWrapper,\n TemporaryConnection,\n Node: _sfc_main$q,\n NodeInterface,\n ContextMenu,\n Minimap,\n Sidebar\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n ButtonInterface,\n ButtonInterfaceComponent,\n CheckboxInterface,\n CheckboxInterfaceComponent,\n commandList as Commands,\n components as Components,\n Editor as EditorComponent,\n IntegerInterface,\n IntegerInterfaceComponent,\n NumberInterface,\n NumberInterfaceComponent,\n SelectInterface,\n SelectInterfaceComponent,\n SliderInterface,\n SliderInterfaceComponent,\n TextInputInterface,\n TextInputInterfaceComponent,\n TextInterface,\n providePlugin,\n useBaklava,\n useCommandHandler,\n useDragMove,\n useGraph,\n useTransform,\n useViewModel\n};\n"],"names":["BaklavaEvent","constructor","entity","super","this","emit","data","listeners","forEach","l","PreventableBaklavaEvent","prevented","prevent","Array","from","values","DynamicSequentialHook","execute","currentValue","callback","SequentialHook","ParallelHook","results","push","createProxy","token","Symbol","Map","targets","Set","register","key","subscribable","registerProxy","_a","_b","get","addTarget","target","add","keys","removeTarget","unregisterProxy","delete","destroy","t","clear","Proxy","startsWith","has","set","addSubscribable","Subscribable","listenerMap","_listeners","proxyMap","proxies","concat","flatMap","getListeners","subscribe","console","warn","unsubscribe","i","indexOf","splice","viewModelRef","useViewModel","Error","viewModel","useGraph","graph","value","switchGraph","useDragMove","positionRef","draggingStartPoint","draggingStartPosition","dragging","onPointerDown","ev","x","pageX","y","pageY","onPointerMove","dx","dy","scaling","onPointerUp","useTransform","transform","panning","TemporaryConnectionState","TemporaryConnectionState2","_export_sfc","sfc","props","__vccOpts","val","Background","setup","styles","config","settings","background","positionLeft","positionTop","size","gridSize","subSize","gridDivision","backgroundPosition","backgroundSize","subGridVisibleThreshold","_ctx","_cache","$props","$setup","$data","$options","class","style","isClient","window","isString","noop","navigator","userAgent","test","__defProp$7","Object","defineProperty","__defProps$5","defineProperties","__getOwnPropDescs$5","getOwnPropertyDescriptors","__getOwnPropSymbols$9","getOwnPropertySymbols","__hasOwnProp$9","prototype","hasOwnProperty","__propIsEnum$9","propertyIsEnumerable","__defNormalProp$7","obj","enumerable","configurable","writable","__spreadValues$7","a","b","prop","call","__spreadProps$5","unrefElement","elRef","_a2","plain","r","$el","defaultWindow","useEventListener","args","events","options","isArray","cleanups","cleanup","fn","length","stopWatch","el","event","map","listener","addEventListener","removeEventListener","immediate","flush","stop","onClickOutside","handler","window2","ignore","capture","detectIframe","fallback","shouldListen","shouldIgnore","some","target2","document","querySelectorAll","composedPath","includes","clearTimeout","detail","passive","e","button","path","setTimeout","activeElement","tagName","contains","filter","Boolean","location","_global","globalThis","global","self","globalKey","__defProp$5","__defProps$1","__getOwnPropDescs$1","__getOwnPropSymbols$5","__hasOwnProp$5","__propIsEnum$5","__defNormalProp$5","defaultState","pointerId","pressure","tiltX","tiltY","width","height","twist","pointerType","SwipeDirection","SwipeDirection2","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","linear","arg","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","_sfc_main$t","modelValue","type","default","items","required","Number","isNested","isFlipped","flippable","emits","activeMenuResetTimeout","activeMenu","rootIsFlipped","flippedX","flippedY","s","top","left","classes","itemsWithHoverProperty","hover","_c","_d","parentWidth","parentElement","offsetWidth","parentHeight","offsetHeight","onClick","item","submenu","onChildClick","onMouseEnter","index","onMouseLeave","_hoisted_1$p","_hoisted_2$j","_hoisted_3$f","_hoisted_5$7","viewBox","d","stroke","fill","ContextMenu","_component_context_menu","name","ref","isDivider","disabled","onMouseenter","$event","onMouseleave","label","_","_sfc_main$s","_hoisted_1$o","xmlns","_hoisted_6$4","cx","cy","VerticalDots","_sfc_main$r","node","intf","hoveredOver","isConnected","connectionCount","isInput","showComponent","component","port","onRender","hooks","renderInterface","startHover","endHover","openSidebar","sidebar","displayedGraph","nodeId","id","optionName","visible","_hoisted_1$n","_hoisted_2$h","NodeInterface","onPointerover","onPointerout","onOpenSidebar","_hoisted_1$m","_hoisted_2$g","_hoisted_3$d","_hoisted_4$b","_hoisted_5$5","_hoisted_6$3","_hoisted_7$1","_hoisted_8$1","_sfc_main$q","__name","selected","__props","dragMove","renaming","tempName","renameInputEl","showContextMenu","contextMenuItems","twoColumn","position","displayedInputs","inputs","ni","hidden","displayedOutputs","outputs","select","startDrag","stopDrag","openContextMenu","onContextMenuClick","async","action","removeNode","title","focus","template","doneRenaming","renderNode","ref_key","onPointerdown","placeholder","onBlur","onKeydown","output","input","_sfc_main$p","x1","y1","x2","y2","state","NONE","isTemporary","tx1","ty1","tx2","ty2","useStraightConnections","Math","abs","ALLOWED","FORBIDDEN","_hoisted_1$l","ConnectionView","getDomElements","interfaceDOM","getElementById","portDOM","getElementsByClassName","closest","interface","ConnectionWrapper","components","connection","resizeObserver","isInDanger","fromNodePosition","findNodeById","toNodePosition","to","getPortCoordinates2","resolved","offsetLeft","clientWidth","offsetTop","clientHeight","updateCoords","ResizeObserver","observe","disconnect","deep","_component_connection_view","getPortCoordinates","TemporaryConnection","status","start","end","mx","my","_sfc_main$m","nodes","find","displayedInterfaces","displayInSidebar","onMouseMove","maxwidth","getBoundingClientRect","movementX","startResize","once","close","_hoisted_1$k","_hoisted_2$f","Sidebar","onMousedown","tabindex","Minimap","canvas","showViewBounds","ctx","bounds","transformCoordinates","origX","origY","getNodeColor","domElement","content","querySelector","contentColor","getComputedColor","nodeColor","c","getComputedStyle","backgroundColor","getViewBounds","mousemove","thisX","offsetX","thisY","offsetY","viewBounds","mouseup","getContext","imageSmoothingQuality","nodeCoords","nodeDomElements","n","posX","posY","newBounds","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","nc","clearRect","strokeStyle","connections","origX1","origY1","origX2","origY2","beginPath","moveTo","lineTo","bezierCurveTo","entries","fillStyle","rect","fillRect","updateCanvas","mousedown","mouseenter","mouseleave","onMousemove","onMouseup","_sfc_main$k","String","hasContextMenu","graphTemplateId","substring","graphTemplate","editor","graphTemplates","gt","removeGraphTemplate","_hoisted_1$j","_hoisted_2$e","_hoisted_3$c","_hoisted_4$a","PaletteEntry","_component_vertical_dots","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","byteToHex","toString","slice","native","randomUUID","v4","buf","offset","rnds","random","arr","toLowerCase","unsafeStringify","_sfc_main$j","_hoisted_1$i","ButtonInterfaceComponent","ButtonInterface","setPort","_sfc_main$i","_hoisted_1$h","_hoisted_2$d","_hoisted_3$b","CheckboxInterfaceComponent","CheckboxInterface","arguments","BaseNumericInterface","min","max","validate","v","useBaseNumericInterface","precision","inputEl","editMode","invalid","tempValue","stringRepresentation","toFixed","toExponential","MAX_STRING_LENGTH","isNaN","isValidator","setValue","newValue","enterEditMode","leaveEditMode","parseFloat","_sfc_main$h","_hoisted_1$g","_hoisted_3$a","points","Arrow","_sfc_main$g","baseNumericInterface","increment","decrement","_hoisted_1$f","_hoisted_2$b","_hoisted_3$9","_hoisted_4$9","IntegerInterfaceComponent","_component_i_arrow","IntegerInterface","isInteger","_sfc_main$f","_hoisted_1$e","_hoisted_2$a","_hoisted_3$8","_hoisted_4$8","NumberInterfaceComponent","NumberInterface","_sfc_main$e","open","selectedItem","selectedText","text","setSelected","_hoisted_1$d","_hoisted_2$9","_hoisted_3$7","_hoisted_4$7","_hoisted_5$4","_hoisted_6$2","_hoisted_7","SelectInterfaceComponent","SelectInterface","_sfc_main$d","didSlide","isMouseDown","percentage","_hoisted_1$c","_hoisted_2$8","_hoisted_3$6","_hoisted_4$6","SliderInterfaceComponent","onPointerup","onPointermove","onPointerleave","TextInterfaceComponent","TextInterface","_sfc_main$b","v2","_hoisted_1$b","TextInputInterfaceComponent","TextInputInterface","SUBGRAPH_INPUT_NODE_TYPE","SUBGRAPH_OUTPUT_NODE_TYPE","SubgraphInputNode","onCreate","graphInterfaceId","SubgraphOutputNode","checkRecursion","currentGraph","graphNodeType","_sfc_main$a","mouseX","mouseY","isInside","initialValue","assign","pointerTypes","keys2","omitUndefined","reduce","k","objectPick","__spreadValues$5","objectRef","result","copy","newObject","setPrototypeOf","toRefs","usePointer","editorEl","draggedNode","categories","nodeTypeEntries","nodeTypes","categoryNames","category","categories2","nodeTypesInCategory","nt","fromEntries","sort","draggedNodeStyles","onDragStart","nodeInformation","onDragEnd","instance","addNode","_hoisted_1$a","_hoisted_2$7","NodePalette","_component_PaletteEntry","SAVE_SUBGRAPH_COMMAND","CREATE_SUBGRAPH_COMMAND","IGNORE_NODE_TYPES","DELETE_NODES_COMMAND","SWITCH_TO_MAIN_GRAPH_COMMAND","NodeStep","nodeState","undo","redo","nodeType","load","save","ConnectionStep","connectionId","connectionState","removeConnection","addConnection","fromIntf","findNodeInterface","toIntf","TransactionStep","steps","UNDO_COMMAND","REDO_COMMAND","START_TRANSACTION_COMMAND","COMMIT_TRANSACTION_COMMAND","COPY_COMMAND","PASTE_COMMAND","CLEAR_CLIPBOARD_COMMAND","OPEN_SIDEBAR_COMMAND","toStringTag","_sfc_main$9","_hoisted_1$9","_hoisted_4$5","ArrowBackUp","_sfc_main$8","_hoisted_1$8","_hoisted_4$4","ArrowForwardUp","_sfc_main$7","_hoisted_1$7","_hoisted_6$1","ArrowLeft","_sfc_main$6","_hoisted_1$6","_hoisted_5$2","rx","Clipboard","_sfc_main$5","_hoisted_1$5","_hoisted_5$1","Copy","_sfc_main$4","_hoisted_1$4","_hoisted_6","DeviceFloppy","_sfc_main$3","_hoisted_1$3","_hoisted_8","Hierarchy2","_sfc_main$2","command","icon","_hoisted_1$2","ToolbarButton","commandHandler","canExecuteCommand","executeCommand","_sfc_main$1","isSubgraph","commands","subgraphCommands","_hoisted_1$1","Toolbar","_component_toolbar_button","_sfc_main","Node","viewModelRef2","selectedNodes","panZoom","pointerCache","prevDiff","midpoint","applyZoom","centerX","centerY","newScale","currentPoint","newPoint","diff","getCoordsFromCache","ax","clientX","ay","clientY","bx","by","curDiff","sqrt","p","onMouseWheel","preventDefault","scrollAmount","deltaY","deltaMode","usePanZoom","temporaryConnection","hoveringOver","checkConnectionResult","checkConnection","connectionAllowed","ids","connectionsInDanger","onMouseDown","onMouseUp","useTemporaryConnection","nodeContainerStyle","counter","unselectAllNodes","keyDown","handleKeyDown","keyUp","handleKeyUp","selectNode","pressedKeys","mouseWheel","_hoisted_1","Editor","_component_background","_component_toolbar","_component_node_palette","_component_connection_wrapper","_component_temporary_connection","_component_node","_component_sidebar","_component_minimap","onWheel","onKeyup","$slots","onSelect","enableMinimap","useCommandHandler","throwOnNonexisting","hotkeyHandler","handlers","h","every","commandName","registerHotkey","useHotkeyHandler","registerCommand","canExecute","isTemplate","g","useBaklava","existingEditor","_displayedGraph","newGraph","newGraphInstance","createGraph","targetInterface","nodeInterfaceId","useSwitchGraph","history","maxSteps","changeBySelf","currentIndex","activeTransaction","transactionSteps","addStep","step","shift","canUndo","canRedo","oldGraph","conn","useHistory","clipboard","nodeBuffer","connectionBuffer","isEmpty","findInterface","io","intf2","interfacesOfSelectedNodes","JSON","stringify","idmap","parsedNodeBuffer","parse","parsedConnectionBuffer","newNodes","newConnections","copiedNode","generatedId","tapInterfaces","intfs","intfState","newIntfId","beforeLoad","ns","newConnection","useClipboard","registerDeleteNodesCommand","selectedNodesInputs","selectedNodesOutputs","inputConnections","outputConnections","innerConnections","inputInterfaces","outputInterfaces","interfaceIdMap","graphInputs","newId","graphOutputs","subgraphTemplate","addGraphTemplate","averageX","round","averageY","registerCreateSubgraphCommand","interfaceConnections","inputNodes","outputNodes","update","registerSaveSubgraphCommand","registerSwitchToMainGraphCommand","registerGraphCommands","registerOpenSidebarCommand","registerSidebarCommands","oldValue","registerGraph","graphEvents","beforeAddNode","nodeHooks","afterSave","graphTemplateHooks","disablePointerEvents","setViewNodeProperties","registerNodeType","freeze","__proto__","Connection"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/167.e705f8bd.js b/_static/kpm/js/167.e705f8bd.js new file mode 100644 index 00000000..d3c309a9 --- /dev/null +++ b/_static/kpm/js/167.e705f8bd.js @@ -0,0 +1,2 @@ +(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[167],{20425:function(e){var n,t,r,o,i,a,u,c;e.exports=(n="__v-click-outside",t="undefined"!=typeof window,r="undefined"!=typeof navigator,o=t&&("ontouchstart"in window||r&&navigator.msMaxTouchPoints>0)?["touchstart"]:["click"],i=function(e){var n=e.event,t=e.handler;(0,e.middleware)(n)&&t(n)},a=function(e,t){var r=function(e){var n="function"==typeof e;if(!n&&"object"!=typeof e)throw new Error("v-click-outside: Binding value must be a function or an object");return{handler:n?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||o,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}}(t.value),a=r.handler,u=r.middleware,c=r.detectIframe,d=r.capture;if(r.isActive){if(e[n]=r.events.map((function(n){return{event:n,srcTarget:document.documentElement,handler:function(n){return function(e){var n=e.el,t=e.event,r=e.handler,o=e.middleware,a=t.path||t.composedPath&&t.composedPath();(a?a.indexOf(n)<0:!n.contains(t.target))&&i({event:t,handler:r,middleware:o})}({el:e,event:n,handler:a,middleware:u})},capture:d}})),c){var f={event:"blur",srcTarget:window,handler:function(n){return function(e){var n=e.el,t=e.event,r=e.handler,o=e.middleware;setTimeout((function(){var e=document.activeElement;e&&"IFRAME"===e.tagName&&!n.contains(e)&&i({event:t,handler:r,middleware:o})}),0)}({el:e,event:n,handler:a,middleware:u})},capture:d};e[n]=[].concat(e[n],[f])}e[n].forEach((function(t){var r=t.event,o=t.srcTarget,i=t.handler;return setTimeout((function(){e[n]&&o.addEventListener(r,i,d)}),0)}))}},u=function(e){(e[n]||[]).forEach((function(e){return e.srcTarget.removeEventListener(e.event,e.handler,e.capture)})),delete e[n]},c=t?{beforeMount:a,updated:function(e,n){var t=n.value,r=n.oldValue;JSON.stringify(t)!==JSON.stringify(r)&&(u(e),a(e,{value:t}))},unmounted:u}:{},{install:function(e){e.directive("click-outside",c)},directive:c})},40703:function(e,n,t){var r;r=function(e){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=3)}([function(e,n,t){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=t(1),i=t(2),a=t(5)||("undefined"!=typeof window?window.cola:null),u=t(4),c=function(e){return(void 0===e?"undefined":r(e))===r(0)},d=function(){},f=function(e,n){var t;return null!=(t=e)&&(void 0===t?"undefined":r(t))===r((function(){}))?e.apply(n,[n]):e};function s(e){this.options=o({},i,e)}s.prototype.run=function(){var e=this,n=this.options;e.manuallyStopped=!1;var t=n.cy,o=n.eles,i=o.nodes(),s=o.edges(),h=!1,l=i.filter((function(e){return e.isParent()})),g=i.subtract(l),v=n.boundingBox||{x1:0,y1:0,w:t.width(),h:t.height()};void 0===v.x2&&(v.x2=v.x1+v.w),void 0===v.w&&(v.w=v.x2-v.x1),void 0===v.y2&&(v.y2=v.y1+v.h),void 0===v.h&&(v.h=v.y2-v.y1);var p=function(){for(var e=0;e0&&b.constraints(S),b.groups(l.map((function(e,t){var r=f(n.nodeSpacing,e),o=function(n){return parseFloat(e.style("padding-"+n))},i=o("left")+r,a=o("right")+r,u=o("top")+r,c=o("bottom")+r;return e.scratch().cola={index:t,padding:Math.max(i,a,u,c),leaves:e.children().intersection(g).map((function(e){return e[0].scratch().cola.index})),fixed:e.locked()},e})).map((function(e){return e.scratch().cola.groups=e.children().intersection(l).map((function(e){return e.scratch().cola.index})),e.scratch().cola})));var I,_=void 0,L=void 0;if(null!=n.edgeLength?(_=n.edgeLength,L="linkDistance"):null!=n.edgeSymDiffLength?(_=n.edgeSymDiffLength,L="symmetricDiffLinkLengths"):null!=n.edgeJaccardLength?(_=n.edgeJaccardLength,L="jaccardLinkLengths"):(_=100,L="linkDistance"),b.links(s.stdFilter((function(e){return g.contains(e.source())&&g.contains(e.target())})).map((function(e){var n=e.scratch().cola={source:e.source()[0].scratch().cola.index,target:e.target()[0].scratch().cola.index};return null!=_&&(n.calcLength=f(_,e)),n}))),b.size([v.w,v.h]),null!=_&&b[L]((function(e){return e.calcLength})),n.flow){var T=void 0;(void 0===(I=n.flow)?"undefined":r(I))===r("")?T={axis:n.flow,minSeparation:50}:c(n.flow)?T={axis:"y",minSeparation:n.flow}:function(e){return null!=e&&(void 0===e?"undefined":r(e))===r({})}(n.flow)?((T=n.flow).axis=T.axis||"y",T.minSeparation=null!=T.minSeparation?T.minSeparation:50):T={axis:"y",minSeparation:50},b.flowLayout(T.axis,T.minSeparation)}return e.trigger({type:"layoutstart",layout:e}),b.avoidOverlaps(n.avoidOverlap).handleDisconnected(n.handleDisconnected).start(n.unconstrIter,n.userConstIter,n.allConstIter,void 0,void 0,n.centerGraph),n.infinite||setTimeout((function(){e.manuallyStopped||b.stop()}),n.maxSimulationTime),this},s.prototype.stop=function(){return this.adaptor&&(this.manuallyStopped=!0,this.adaptor.stop()),this},e.exports=s},function(e,n,t){"use strict";e.exports=null!=Object.assign?Object.assign.bind(Object):function(e){for(var n=arguments.length,t=Array(n>1?n-1:0),r=1;r1?n-1:0),r=1;r{e.exports={graphlib:t(70574),layout:t(98123),debug:t(27570),util:{time:t(11138).time,notime:t(11138).notime},version:t(88177)}},92188:(e,n,t)=>{"use strict";var r=t(38436),o=t(74079);e.exports={run:function(e){var n="greedy"===e.graph().acyclicer?o(e,function(e){return function(n){return e.edge(n).weight}}(e)):function(e){var n=[],t={},o={};return r.forEach(e.nodes(),(function i(a){r.has(o,a)||(o[a]=!0,t[a]=!0,r.forEach(e.outEdges(a),(function(e){r.has(t,e.w)?n.push(e):i(e.w)})),delete t[a])})),n}(e);r.forEach(n,(function(n){var t=e.edge(n);e.removeEdge(n),t.forwardName=n.name,t.reversed=!0,e.setEdge(n.w,n.v,t,r.uniqueId("rev"))}))},undo:function(e){r.forEach(e.edges(),(function(n){var t=e.edge(n);if(t.reversed){e.removeEdge(n);var r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}}))}}},61133:(e,n,t)=>{var r=t(38436),o=t(11138);function i(e,n,t,r,i,a){var u={width:0,height:0,rank:a,borderType:n},c=i[n][a-1],d=o.addDummyNode(e,"border",u,t);i[n][a]=d,e.setParent(d,r),c&&e.setEdge(c,d,{weight:1})}e.exports=function(e){r.forEach(e.children(),(function n(t){var o=e.children(t),a=e.node(t);if(o.length&&r.forEach(o,n),r.has(a,"minRank")){a.borderLeft=[],a.borderRight=[];for(var u=a.minRank,c=a.maxRank+1;u{"use strict";var r=t(38436);function o(e){r.forEach(e.nodes(),(function(n){i(e.node(n))})),r.forEach(e.edges(),(function(n){i(e.edge(n))}))}function i(e){var n=e.width;e.width=e.height,e.height=n}function a(e){e.y=-e.y}function u(e){var n=e.x;e.x=e.y,e.y=n}e.exports={adjust:function(e){var n=e.graph().rankdir.toLowerCase();"lr"!==n&&"rl"!==n||o(e)},undo:function(e){var n=e.graph().rankdir.toLowerCase();"bt"!==n&&"rl"!==n||function(e){r.forEach(e.nodes(),(function(n){a(e.node(n))})),r.forEach(e.edges(),(function(n){var t=e.edge(n);r.forEach(t.points,a),r.has(t,"y")&&a(t)}))}(e),"lr"!==n&&"rl"!==n||(function(e){r.forEach(e.nodes(),(function(n){u(e.node(n))})),r.forEach(e.edges(),(function(n){var t=e.edge(n);r.forEach(t.points,u),r.has(t,"x")&&u(t)}))}(e),o(e))}}},77822:e=>{function n(){var e={};e._next=e._prev=e,this._sentinel=e}function t(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function r(e,n){if("_next"!==e&&"_prev"!==e)return n}e.exports=n,n.prototype.dequeue=function(){var e=this._sentinel,n=e._prev;if(n!==e)return t(n),n},n.prototype.enqueue=function(e){var n=this._sentinel;e._prev&&e._next&&t(e),e._next=n._next,n._next._prev=e,n._next=e,e._prev=n},n.prototype.toString=function(){for(var e=[],n=this._sentinel,t=n._prev;t!==n;)e.push(JSON.stringify(t,r)),t=t._prev;return"["+e.join(", ")+"]"}},27570:(e,n,t)=>{var r=t(38436),o=t(11138),i=t(70574).Graph;e.exports={debugOrdering:function(e){var n=o.buildLayerMatrix(e),t=new i({compound:!0,multigraph:!0}).setGraph({});return r.forEach(e.nodes(),(function(n){t.setNode(n,{label:n}),t.setParent(n,"layer"+e.node(n).rank)})),r.forEach(e.edges(),(function(e){t.setEdge(e.v,e.w,{},e.name)})),r.forEach(n,(function(e,n){var o="layer"+n;t.setNode(o,{rank:"same"}),r.reduce(e,(function(e,n){return t.setEdge(e,n,{style:"invis"}),n}))})),t}}},70574:(e,n,t)=>{var r;try{r=t(28282)}catch(e){}r||(r=window.graphlib),e.exports=r},74079:(e,n,t)=>{var r=t(38436),o=t(70574).Graph,i=t(77822);e.exports=function(e,n){if(e.nodeCount()<=1)return[];var t=function(e,n){var t=new o,a=0,u=0;r.forEach(e.nodes(),(function(e){t.setNode(e,{v:e,in:0,out:0})})),r.forEach(e.edges(),(function(e){var r=t.edge(e.v,e.w)||0,o=n(e),i=r+o;t.setEdge(e.v,e.w,i),u=Math.max(u,t.node(e.v).out+=o),a=Math.max(a,t.node(e.w).in+=o)}));var d=r.range(u+a+3).map((function(){return new i})),f=a+1;return r.forEach(t.nodes(),(function(e){c(d,f,t.node(e))})),{graph:t,buckets:d,zeroIdx:f}}(e,n||a),d=function(e,n,t){for(var r,o=[],i=n[n.length-1],a=n[0];e.nodeCount();){for(;r=a.dequeue();)u(e,n,t,r);for(;r=i.dequeue();)u(e,n,t,r);if(e.nodeCount())for(var c=n.length-2;c>0;--c)if(r=n[c].dequeue()){o=o.concat(u(e,n,t,r,!0));break}}return o}(t.graph,t.buckets,t.zeroIdx);return r.flatten(r.map(d,(function(n){return e.outEdges(n.v,n.w)})),!0)};var a=r.constant(1);function u(e,n,t,o,i){var a=i?[]:void 0;return r.forEach(e.inEdges(o.v),(function(r){var o=e.edge(r),u=e.node(r.v);i&&a.push({v:r.v,w:r.w}),u.out-=o,c(n,t,u)})),r.forEach(e.outEdges(o.v),(function(r){var o=e.edge(r),i=r.w,a=e.node(i);a.in-=o,c(n,t,a)})),e.removeNode(o.v),a}function c(e,n,t){t.out?t.in?e[t.out-t.in+n].enqueue(t):e[e.length-1].enqueue(t):e[0].enqueue(t)}},98123:(e,n,t)=>{"use strict";var r=t(38436),o=t(92188),i=t(45995),a=t(78093),u=t(11138).normalizeRanks,c=t(24219),d=t(11138).removeEmptyRanks,f=t(72981),s=t(61133),h=t(53258),l=t(53408),g=t(17873),v=t(11138),p=t(70574).Graph;e.exports=function(e,n){var t=n&&n.debugTiming?v.time:v.notime;t("layout",(function(){var n=t(" buildLayoutGraph",(function(){return function(e){var n=new p({multigraph:!0,compound:!0}),t=I(e.graph());return n.setGraph(r.merge({},y,S(t,m),r.pick(t,w))),r.forEach(e.nodes(),(function(t){var o=I(e.node(t));n.setNode(t,r.defaults(S(o,b),x)),n.setParent(t,e.parent(t))})),r.forEach(e.edges(),(function(t){var o=I(e.edge(t));n.setEdge(t,r.merge({},k,S(o,E),r.pick(o,N)))})),n}(e)}));t(" runLayout",(function(){!function(e,n){n(" makeSpaceForEdgeLabels",(function(){!function(e){var n=e.graph();n.ranksep/=2,r.forEach(e.edges(),(function(t){var r=e.edge(t);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===n.rankdir||"BT"===n.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(e)})),n(" removeSelfEdges",(function(){!function(e){r.forEach(e.edges(),(function(n){if(n.v===n.w){var t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}}))}(e)})),n(" acyclic",(function(){o.run(e)})),n(" nestingGraph.run",(function(){f.run(e)})),n(" rank",(function(){a(v.asNonCompoundGraph(e))})),n(" injectEdgeLabelProxies",(function(){!function(e){r.forEach(e.edges(),(function(n){var t=e.edge(n);if(t.width&&t.height){var r=e.node(n.v),o={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};v.addDummyNode(e,"edge-proxy",o,"_ep")}}))}(e)})),n(" removeEmptyRanks",(function(){d(e)})),n(" nestingGraph.cleanup",(function(){f.cleanup(e)})),n(" normalizeRanks",(function(){u(e)})),n(" assignRankMinMax",(function(){!function(e){var n=0;r.forEach(e.nodes(),(function(t){var o=e.node(t);o.borderTop&&(o.minRank=e.node(o.borderTop).rank,o.maxRank=e.node(o.borderBottom).rank,n=r.max(n,o.maxRank))})),e.graph().maxRank=n}(e)})),n(" removeEdgeLabelProxies",(function(){!function(e){r.forEach(e.nodes(),(function(n){var t=e.node(n);"edge-proxy"===t.dummy&&(e.edge(t.e).labelRank=t.rank,e.removeNode(n))}))}(e)})),n(" normalize.run",(function(){i.run(e)})),n(" parentDummyChains",(function(){c(e)})),n(" addBorderSegments",(function(){s(e)})),n(" order",(function(){l(e)})),n(" insertSelfEdges",(function(){!function(e){var n=v.buildLayerMatrix(e);r.forEach(n,(function(n){var t=0;r.forEach(n,(function(n,o){var i=e.node(n);i.order=o+t,r.forEach(i.selfEdges,(function(n){v.addDummyNode(e,"selfedge",{width:n.label.width,height:n.label.height,rank:i.rank,order:o+ ++t,e:n.e,label:n.label},"_se")})),delete i.selfEdges}))}))}(e)})),n(" adjustCoordinateSystem",(function(){h.adjust(e)})),n(" position",(function(){g(e)})),n(" positionSelfEdges",(function(){!function(e){r.forEach(e.nodes(),(function(n){var t=e.node(n);if("selfedge"===t.dummy){var r=e.node(t.e.v),o=r.x+r.width/2,i=r.y,a=t.x-o,u=r.height/2;e.setEdge(t.e,t.label),e.removeNode(n),t.label.points=[{x:o+2*a/3,y:i-u},{x:o+5*a/6,y:i-u},{x:o+a,y:i},{x:o+5*a/6,y:i+u},{x:o+2*a/3,y:i+u}],t.label.x=t.x,t.label.y=t.y}}))}(e)})),n(" removeBorderNodes",(function(){!function(e){r.forEach(e.nodes(),(function(n){if(e.children(n).length){var t=e.node(n),o=e.node(t.borderTop),i=e.node(t.borderBottom),a=e.node(r.last(t.borderLeft)),u=e.node(r.last(t.borderRight));t.width=Math.abs(u.x-a.x),t.height=Math.abs(i.y-o.y),t.x=a.x+t.width/2,t.y=o.y+t.height/2}})),r.forEach(e.nodes(),(function(n){"border"===e.node(n).dummy&&e.removeNode(n)}))}(e)})),n(" normalize.undo",(function(){i.undo(e)})),n(" fixupEdgeLabelCoords",(function(){!function(e){r.forEach(e.edges(),(function(n){var t=e.edge(n);if(r.has(t,"x"))switch("l"!==t.labelpos&&"r"!==t.labelpos||(t.width-=t.labeloffset),t.labelpos){case"l":t.x-=t.width/2+t.labeloffset;break;case"r":t.x+=t.width/2+t.labeloffset}}))}(e)})),n(" undoCoordinateSystem",(function(){h.undo(e)})),n(" translateGraph",(function(){!function(e){var n=Number.POSITIVE_INFINITY,t=0,o=Number.POSITIVE_INFINITY,i=0,a=e.graph(),u=a.marginx||0,c=a.marginy||0;function d(e){var r=e.x,a=e.y,u=e.width,c=e.height;n=Math.min(n,r-u/2),t=Math.max(t,r+u/2),o=Math.min(o,a-c/2),i=Math.max(i,a+c/2)}r.forEach(e.nodes(),(function(n){d(e.node(n))})),r.forEach(e.edges(),(function(n){var t=e.edge(n);r.has(t,"x")&&d(t)})),n-=u,o-=c,r.forEach(e.nodes(),(function(t){var r=e.node(t);r.x-=n,r.y-=o})),r.forEach(e.edges(),(function(t){var i=e.edge(t);r.forEach(i.points,(function(e){e.x-=n,e.y-=o})),r.has(i,"x")&&(i.x-=n),r.has(i,"y")&&(i.y-=o)})),a.width=t-n+u,a.height=i-o+c}(e)})),n(" assignNodeIntersects",(function(){!function(e){r.forEach(e.edges(),(function(n){var t,r,o=e.edge(n),i=e.node(n.v),a=e.node(n.w);o.points?(t=o.points[0],r=o.points[o.points.length-1]):(o.points=[],t=a,r=i),o.points.unshift(v.intersectRect(i,t)),o.points.push(v.intersectRect(a,r))}))}(e)})),n(" reversePoints",(function(){!function(e){r.forEach(e.edges(),(function(n){var t=e.edge(n);t.reversed&&t.points.reverse()}))}(e)})),n(" acyclic.undo",(function(){o.undo(e)}))}(n,t)})),t(" updateInputGraph",(function(){!function(e,n){r.forEach(e.nodes(),(function(t){var r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,n.children(t).length&&(r.width=o.width,r.height=o.height))})),r.forEach(e.edges(),(function(t){var o=e.edge(t),i=n.edge(t);o.points=i.points,r.has(i,"x")&&(o.x=i.x,o.y=i.y)})),e.graph().width=n.graph().width,e.graph().height=n.graph().height}(e,n)}))}))};var m=["nodesep","edgesep","ranksep","marginx","marginy"],y={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},w=["acyclicer","ranker","rankdir","align"],b=["width","height"],x={width:0,height:0},E=["minlen","weight","width","height","labeloffset"],k={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},N=["labelpos"];function S(e,n){return r.mapValues(r.pick(e,n),Number)}function I(e){var n={};return r.forEach(e,(function(e,t){n[t.toLowerCase()]=e})),n}},38436:(e,n,t)=>{var r;try{r={cloneDeep:t(50361),constant:t(75703),defaults:t(91747),each:t(66073),filter:t(63105),find:t(13311),flatten:t(85564),forEach:t(84486),forIn:t(62620),has:t(18721),isUndefined:t(52353),last:t(10928),map:t(35161),mapValues:t(66604),max:t(6162),merge:t(82492),min:t(53632),minBy:t(22762),now:t(7771),pick:t(78718),range:t(96026),reduce:t(54061),sortBy:t(89734),uniqueId:t(73955),values:t(52628),zipObject:t(7287)}}catch(e){}r||(r=window._),e.exports=r},72981:(e,n,t)=>{var r=t(38436),o=t(11138);function i(e,n,t,a,u,c,d){var f=e.children(d);if(f.length){var s=o.addBorderNode(e,"_bt"),h=o.addBorderNode(e,"_bb"),l=e.node(d);e.setParent(s,d),l.borderTop=s,e.setParent(h,d),l.borderBottom=h,r.forEach(f,(function(r){i(e,n,t,a,u,c,r);var o=e.node(r),f=o.borderTop?o.borderTop:r,l=o.borderBottom?o.borderBottom:r,g=o.borderTop?a:2*a,v=f!==l?1:u-c[d]+1;e.setEdge(s,f,{weight:g,minlen:v,nestingEdge:!0}),e.setEdge(l,h,{weight:g,minlen:v,nestingEdge:!0})})),e.parent(d)||e.setEdge(n,s,{weight:0,minlen:u+c[d]})}else d!==n&&e.setEdge(n,d,{weight:0,minlen:t})}e.exports={run:function(e){var n=o.addDummyNode(e,"root",{},"_root"),t=function(e){var n={};function t(o,i){var a=e.children(o);a&&a.length&&r.forEach(a,(function(e){t(e,i+1)})),n[o]=i}return r.forEach(e.children(),(function(e){t(e,1)})),n}(e),a=r.max(r.values(t))-1,u=2*a+1;e.graph().nestingRoot=n,r.forEach(e.edges(),(function(n){e.edge(n).minlen*=u}));var c=function(e){return r.reduce(e.edges(),(function(n,t){return n+e.edge(t).weight}),0)}(e)+1;r.forEach(e.children(),(function(r){i(e,n,u,c,a,t,r)})),e.graph().nodeRankFactor=u},cleanup:function(e){var n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,r.forEach(e.edges(),(function(n){e.edge(n).nestingEdge&&e.removeEdge(n)}))}}},45995:(e,n,t)=>{"use strict";var r=t(38436),o=t(11138);e.exports={run:function(e){e.graph().dummyChains=[],r.forEach(e.edges(),(function(n){!function(e,n){var t,r,i,a=n.v,u=e.node(a).rank,c=n.w,d=e.node(c).rank,f=n.name,s=e.edge(n),h=s.labelRank;if(d!==u+1){for(e.removeEdge(n),i=0,++u;u{var r=t(38436);e.exports=function(e,n,t){var o,i={};r.forEach(t,(function(t){for(var r,a,u=e.parent(t);u;){if((r=e.parent(u))?(a=i[r],i[r]=u):(a=o,o=u),a&&a!==u)return void n.setEdge(a,u);u=r}}))}},35439:(e,n,t)=>{var r=t(38436);e.exports=function(e,n){return r.map(n,(function(n){var t=e.inEdges(n);if(t.length){var o=r.reduce(t,(function(n,t){var r=e.edge(t),o=e.node(t.v);return{sum:n.sum+r.weight*o.order,weight:n.weight+r.weight}}),{sum:0,weight:0});return{v:n,barycenter:o.sum/o.weight,weight:o.weight}}return{v:n}}))}},23128:(e,n,t)=>{var r=t(38436),o=t(70574).Graph;e.exports=function(e,n,t){var i=function(e){for(var n;e.hasNode(n=r.uniqueId("_root")););return n}(e),a=new o({compound:!0}).setGraph({root:i}).setDefaultNodeLabel((function(n){return e.node(n)}));return r.forEach(e.nodes(),(function(o){var u=e.node(o),c=e.parent(o);(u.rank===n||u.minRank<=n&&n<=u.maxRank)&&(a.setNode(o),a.setParent(o,c||i),r.forEach(e[t](o),(function(n){var t=n.v===o?n.w:n.v,i=a.edge(t,o),u=r.isUndefined(i)?0:i.weight;a.setEdge(t,o,{weight:e.edge(n).weight+u})})),r.has(u,"minRank")&&a.setNode(o,{borderLeft:u.borderLeft[n],borderRight:u.borderRight[n]}))})),a}},56630:(e,n,t)=>{"use strict";var r=t(38436);function o(e,n,t){for(var o=r.zipObject(t,r.map(t,(function(e,n){return n}))),i=r.flatten(r.map(n,(function(n){return r.sortBy(r.map(e.outEdges(n),(function(n){return{pos:o[n.w],weight:e.edge(n).weight}})),"pos")})),!0),a=1;a0;)n%2&&(t+=c[n+1]),c[n=n-1>>1]+=e.weight;d+=e.weight*t}))),d}e.exports=function(e,n){for(var t=0,r=1;r{"use strict";var r=t(38436),o=t(2588),i=t(56630),a=t(61026),u=t(23128),c=t(55093),d=t(70574).Graph,f=t(11138);function s(e,n,t){return r.map(n,(function(n){return u(e,n,t)}))}function h(e,n){var t=new d;r.forEach(e,(function(e){var o=e.graph().root,i=a(e,o,t,n);r.forEach(i.vs,(function(n,t){e.node(n).order=t})),c(e,t,i.vs)}))}function l(e,n){r.forEach(n,(function(n){r.forEach(n,(function(n,t){e.node(n).order=t}))}))}e.exports=function(e){var n=f.maxRank(e),t=s(e,r.range(1,n+1),"inEdges"),a=s(e,r.range(n-1,-1,-1),"outEdges"),u=o(e);l(e,u);for(var c,d=Number.POSITIVE_INFINITY,g=0,v=0;v<4;++g,++v){h(g%2?t:a,g%4>=2),u=f.buildLayerMatrix(e);var p=i(e,u);p{"use strict";var r=t(38436);e.exports=function(e){var n={},t=r.filter(e.nodes(),(function(n){return!e.children(n).length})),o=r.max(r.map(t,(function(n){return e.node(n).rank}))),i=r.map(r.range(o+1),(function(){return[]})),a=r.sortBy(t,(function(n){return e.node(n).rank}));return r.forEach(a,(function t(o){if(!r.has(n,o)){n[o]=!0;var a=e.node(o);i[a.rank].push(o),r.forEach(e.successors(o),t)}})),i}},83678:(e,n,t)=>{"use strict";var r=t(38436);e.exports=function(e,n){var t={};return r.forEach(e,(function(e,n){var o=t[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:n};r.isUndefined(e.barycenter)||(o.barycenter=e.barycenter,o.weight=e.weight)})),r.forEach(n.edges(),(function(e){var n=t[e.v],o=t[e.w];r.isUndefined(n)||r.isUndefined(o)||(o.indegree++,n.out.push(t[e.w]))})),function(e){var n=[];function t(e){return function(n){var t,o,i,a;n.merged||(r.isUndefined(n.barycenter)||r.isUndefined(e.barycenter)||n.barycenter>=e.barycenter)&&(o=n,i=0,a=0,(t=e).weight&&(i+=t.barycenter*t.weight,a+=t.weight),o.weight&&(i+=o.barycenter*o.weight,a+=o.weight),t.vs=o.vs.concat(t.vs),t.barycenter=i/a,t.weight=a,t.i=Math.min(o.i,t.i),o.merged=!0)}}function o(n){return function(t){t.in.push(n),0==--t.indegree&&e.push(t)}}for(;e.length;){var i=e.pop();n.push(i),r.forEach(i.in.reverse(),t(i)),r.forEach(i.out,o(i))}return r.map(r.filter(n,(function(e){return!e.merged})),(function(e){return r.pick(e,["vs","i","barycenter","weight"])}))}(r.filter(t,(function(e){return!e.indegree})))}},61026:(e,n,t)=>{var r=t(38436),o=t(35439),i=t(83678),a=t(87304);e.exports=function e(n,t,u,c){var d=n.children(t),f=n.node(t),s=f?f.borderLeft:void 0,h=f?f.borderRight:void 0,l={};s&&(d=r.filter(d,(function(e){return e!==s&&e!==h})));var g=o(n,d);r.forEach(g,(function(t){if(n.children(t.v).length){var o=e(n,t.v,u,c);l[t.v]=o,r.has(o,"barycenter")&&(i=t,a=o,r.isUndefined(i.barycenter)?(i.barycenter=a.barycenter,i.weight=a.weight):(i.barycenter=(i.barycenter*i.weight+a.barycenter*a.weight)/(i.weight+a.weight),i.weight+=a.weight))}var i,a}));var v=i(g,u);!function(e,n){r.forEach(e,(function(e){e.vs=r.flatten(e.vs.map((function(e){return n[e]?n[e].vs:e})),!0)}))}(v,l);var p=a(v,c);if(s&&(p.vs=r.flatten([s,p.vs,h],!0),n.predecessors(s).length)){var m=n.node(n.predecessors(s)[0]),y=n.node(n.predecessors(h)[0]);r.has(p,"barycenter")||(p.barycenter=0,p.weight=0),p.barycenter=(p.barycenter*p.weight+m.order+y.order)/(p.weight+2),p.weight+=2}return p}},87304:(e,n,t)=>{var r=t(38436),o=t(11138);function i(e,n,t){for(var o;n.length&&(o=r.last(n)).i<=t;)n.pop(),e.push(o.vs),t++;return t}e.exports=function(e,n){var t,a=o.partition(e,(function(e){return r.has(e,"barycenter")})),u=a.lhs,c=r.sortBy(a.rhs,(function(e){return-e.i})),d=[],f=0,s=0,h=0;u.sort((t=!!n,function(e,n){return e.barycentern.barycenter?1:t?n.i-e.i:e.i-n.i})),h=i(d,c,h),r.forEach(u,(function(e){h+=e.vs.length,d.push(e.vs),f+=e.barycenter*e.weight,s+=e.weight,h=i(d,c,h)}));var l={vs:r.flatten(d,!0)};return s&&(l.barycenter=f/s,l.weight=s),l}},24219:(e,n,t)=>{var r=t(38436);e.exports=function(e){var n=function(e){var n={},t=0;return r.forEach(e.children(),(function o(i){var a=t;r.forEach(e.children(i),o),n[i]={low:a,lim:t++}})),n}(e);r.forEach(e.graph().dummyChains,(function(t){for(var r=e.node(t),o=r.edgeObj,i=function(e,n,t,r){var o,i,a=[],u=[],c=Math.min(n[t].low,n[r].low),d=Math.max(n[t].lim,n[r].lim);o=t;do{o=e.parent(o),a.push(o)}while(o&&(n[o].low>c||d>n[o].lim));for(i=o,o=r;(o=e.parent(o))!==i;)u.push(o);return{path:a.concat(u.reverse()),lca:i}}(e,n,o.v,o.w),a=i.path,u=i.lca,c=0,d=a[c],f=!0;t!==o.w;){if(r=e.node(t),f){for(;(d=a[c])!==u&&e.node(d).maxRank{"use strict";var r=t(38436),o=t(70574).Graph,i=t(11138);function a(e,n){var t={};return r.reduce(n,(function(n,o){var i=0,a=0,u=n.length,d=r.last(o);return r.forEach(o,(function(n,f){var s=function(e,n){if(e.node(n).dummy)return r.find(e.predecessors(n),(function(n){return e.node(n).dummy}))}(e,n),h=s?e.node(s).order:u;(s||n===d)&&(r.forEach(o.slice(a,f+1),(function(n){r.forEach(e.predecessors(n),(function(r){var o=e.node(r),a=o.order;!(au)&&c(t,n,d)}))}))}return r.reduce(n,(function(n,t){var i,a=-1,u=0;return r.forEach(t,(function(r,c){if("border"===e.node(r).dummy){var d=e.predecessors(r);d.length&&(i=e.node(d[0]).order,o(t,u,c,a,i),u=c,a=i)}o(t,u,t.length,i,n.length)})),t})),t}function c(e,n,t){if(n>t){var r=n;n=t,t=r}var o=e[n];o||(e[n]=o={}),o[t]=!0}function d(e,n,t){if(n>t){var o=n;n=t,t=o}return r.has(e[n],t)}function f(e,n,t,o){var i={},a={},u={};return r.forEach(n,(function(e){r.forEach(e,(function(e,n){i[e]=e,a[e]=e,u[e]=n}))})),r.forEach(n,(function(e){var n=-1;r.forEach(e,(function(e){var c=o(e);if(c.length){c=r.sortBy(c,(function(e){return u[e]}));for(var f=(c.length-1)/2,s=Math.floor(f),h=Math.ceil(f);s<=h;++s){var l=c[s];a[e]===e&&n{"use strict";var r=t(38436),o=t(11138),i=t(3573).positionX;e.exports=function(e){(function(e){var n=o.buildLayerMatrix(e),t=e.graph().ranksep,i=0;r.forEach(n,(function(n){var o=r.max(r.map(n,(function(n){return e.node(n).height})));r.forEach(n,(function(n){e.node(n).y=i+o/2})),i+=o+t}))})(e=o.asNonCompoundGraph(e)),r.forEach(i(e),(function(n,t){e.node(t).x=n}))}},20300:(e,n,t)=>{"use strict";var r=t(38436),o=t(70574).Graph,i=t(76681).slack;function a(e,n){return r.forEach(e.nodes(),(function t(o){r.forEach(n.nodeEdges(o),(function(r){var a=r.v,u=o===a?r.w:a;e.hasNode(u)||i(n,r)||(e.setNode(u,{}),e.setEdge(o,u,{}),t(u))}))})),e.nodeCount()}function u(e,n){return r.minBy(n.edges(),(function(t){if(e.hasNode(t.v)!==e.hasNode(t.w))return i(n,t)}))}function c(e,n,t){r.forEach(e.nodes(),(function(e){n.node(e).rank+=t}))}e.exports=function(e){var n,t,r=new o({directed:!1}),d=e.nodes()[0],f=e.nodeCount();for(r.setNode(d,{});a(r,e){"use strict";var r=t(76681).longestPath,o=t(20300),i=t(42472);e.exports=function(e){switch(e.graph().ranker){case"network-simplex":default:!function(e){i(e)}(e);break;case"tight-tree":!function(e){r(e),o(e)}(e);break;case"longest-path":a(e)}};var a=r},42472:(e,n,t)=>{"use strict";var r=t(38436),o=t(20300),i=t(76681).slack,a=t(76681).longestPath,u=t(70574).alg.preorder,c=t(70574).alg.postorder,d=t(11138).simplify;function f(e){e=d(e),a(e);var n,t=o(e);for(l(t),s(t,e);n=v(t);)m(t,e,n,p(t,e,n))}function s(e,n){var t=c(e,e.nodes());t=t.slice(0,t.length-1),r.forEach(t,(function(t){!function(e,n,t){var r=e.node(t).parent;e.edge(t,r).cutvalue=h(e,n,t)}(e,n,t)}))}function h(e,n,t){var o=e.node(t).parent,i=!0,a=n.edge(t,o),u=0;return a||(i=!1,a=n.edge(o,t)),u=a.weight,r.forEach(n.nodeEdges(t),(function(r){var a,c,d=r.v===t,f=d?r.w:r.v;if(f!==o){var s=d===i,h=n.edge(r).weight;if(u+=s?h:-h,a=t,c=f,e.hasEdge(a,c)){var l=e.edge(t,f).cutvalue;u+=s?-l:l}}})),u}function l(e,n){arguments.length<2&&(n=e.nodes()[0]),g(e,{},1,n)}function g(e,n,t,o,i){var a=t,u=e.node(o);return n[o]=!0,r.forEach(e.neighbors(o),(function(i){r.has(n,i)||(t=g(e,n,t,i,o))})),u.low=a,u.lim=t++,i?u.parent=i:delete u.parent,t}function v(e){return r.find(e.edges(),(function(n){return e.edge(n).cutvalue<0}))}function p(e,n,t){var o=t.v,a=t.w;n.hasEdge(o,a)||(o=t.w,a=t.v);var u=e.node(o),c=e.node(a),d=u,f=!1;u.lim>c.lim&&(d=c,f=!0);var s=r.filter(n.edges(),(function(n){return f===y(0,e.node(n.v),d)&&f!==y(0,e.node(n.w),d)}));return r.minBy(s,(function(e){return i(n,e)}))}function m(e,n,t,o){var i=t.v,a=t.w;e.removeEdge(i,a),e.setEdge(o.v,o.w,{}),l(e),s(e,n),function(e,n){var t=r.find(e.nodes(),(function(e){return!n.node(e).parent})),o=u(e,t);o=o.slice(1),r.forEach(o,(function(t){var r=e.node(t).parent,o=n.edge(t,r),i=!1;o||(o=n.edge(r,t),i=!0),n.node(t).rank=n.node(r).rank+(i?o.minlen:-o.minlen)}))}(e,n)}function y(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}e.exports=f,f.initLowLimValues=l,f.initCutValues=s,f.calcCutValue=h,f.leaveEdge=v,f.enterEdge=p,f.exchangeEdges=m},76681:(e,n,t)=>{"use strict";var r=t(38436);e.exports={longestPath:function(e){var n={};r.forEach(e.sources(),(function t(o){var i=e.node(o);if(r.has(n,o))return i.rank;n[o]=!0;var a=r.min(r.map(e.outEdges(o),(function(n){return t(n.w)-e.edge(n).minlen})));return a!==Number.POSITIVE_INFINITY&&null!=a||(a=0),i.rank=a}))},slack:function(e,n){return e.node(n.w).rank-e.node(n.v).rank-e.edge(n).minlen}}},11138:(e,n,t)=>{"use strict";var r=t(38436),o=t(70574).Graph;function i(e,n,t,o){var i;do{i=r.uniqueId(o)}while(e.hasNode(i));return t.dummy=n,e.setNode(i,t),i}function a(e){return r.max(r.map(e.nodes(),(function(n){var t=e.node(n).rank;if(!r.isUndefined(t))return t})))}e.exports={addDummyNode:i,simplify:function(e){var n=(new o).setGraph(e.graph());return r.forEach(e.nodes(),(function(t){n.setNode(t,e.node(t))})),r.forEach(e.edges(),(function(t){var r=n.edge(t.v,t.w)||{weight:0,minlen:1},o=e.edge(t);n.setEdge(t.v,t.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})})),n},asNonCompoundGraph:function(e){var n=new o({multigraph:e.isMultigraph()}).setGraph(e.graph());return r.forEach(e.nodes(),(function(t){e.children(t).length||n.setNode(t,e.node(t))})),r.forEach(e.edges(),(function(t){n.setEdge(t,e.edge(t))})),n},successorWeights:function(e){var n=r.map(e.nodes(),(function(n){var t={};return r.forEach(e.outEdges(n),(function(n){t[n.w]=(t[n.w]||0)+e.edge(n).weight})),t}));return r.zipObject(e.nodes(),n)},predecessorWeights:function(e){var n=r.map(e.nodes(),(function(n){var t={};return r.forEach(e.inEdges(n),(function(n){t[n.v]=(t[n.v]||0)+e.edge(n).weight})),t}));return r.zipObject(e.nodes(),n)},intersectRect:function(e,n){var t,r,o=e.x,i=e.y,a=n.x-o,u=n.y-i,c=e.width/2,d=e.height/2;if(!a&&!u)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(u)*c>Math.abs(a)*d?(u<0&&(d=-d),t=d*a/u,r=d):(a<0&&(c=-c),t=c,r=c*u/a),{x:o+t,y:i+r}},buildLayerMatrix:function(e){var n=r.map(r.range(a(e)+1),(function(){return[]}));return r.forEach(e.nodes(),(function(t){var o=e.node(t),i=o.rank;r.isUndefined(i)||(n[i][o.order]=t)})),n},normalizeRanks:function(e){var n=r.min(r.map(e.nodes(),(function(n){return e.node(n).rank})));r.forEach(e.nodes(),(function(t){var o=e.node(t);r.has(o,"rank")&&(o.rank-=n)}))},removeEmptyRanks:function(e){var n=r.min(r.map(e.nodes(),(function(n){return e.node(n).rank}))),t=[];r.forEach(e.nodes(),(function(r){var o=e.node(r).rank-n;t[o]||(t[o]=[]),t[o].push(r)}));var o=0,i=e.graph().nodeRankFactor;r.forEach(t,(function(n,t){r.isUndefined(n)&&t%i!=0?--o:o&&r.forEach(n,(function(n){e.node(n).rank+=o}))}))},addBorderNode:function(e,n,t,r){var o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),i(e,"border",o,n)},maxRank:a,partition:function(e,n){var t={lhs:[],rhs:[]};return r.forEach(e,(function(e){n(e)?t.lhs.push(e):t.rhs.push(e)})),t},time:function(e,n){var t=r.now();try{return n()}finally{console.log(e+" time: "+(r.now()-t)+"ms")}},notime:function(e,n){return n()}}},88177:e=>{e.exports="0.8.5"}}]); +//# sourceMappingURL=167.e705f8bd.js.map \ No newline at end of file diff --git a/_static/kpm/js/167.e705f8bd.js.map b/_static/kpm/js/167.e705f8bd.js.map new file mode 100644 index 00000000..6506187a --- /dev/null +++ b/_static/kpm/js/167.e705f8bd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/167.e705f8bd.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/click-outside-vue3/dist/v-click-outside.umd.js","webpack://pipeline-manager/./node_modules/cytoscape-cola/cytoscape-cola.js","webpack://pipeline-manager/./node_modules/cytoscape-dagre/cytoscape-dagre.js","webpack://pipeline-manager/./node_modules/dagre/index.js","webpack://pipeline-manager/./node_modules/dagre/lib/acyclic.js","webpack://pipeline-manager/./node_modules/dagre/lib/add-border-segments.js","webpack://pipeline-manager/./node_modules/dagre/lib/coordinate-system.js","webpack://pipeline-manager/./node_modules/dagre/lib/data/list.js","webpack://pipeline-manager/./node_modules/dagre/lib/debug.js","webpack://pipeline-manager/./node_modules/dagre/lib/graphlib.js","webpack://pipeline-manager/./node_modules/dagre/lib/greedy-fas.js","webpack://pipeline-manager/./node_modules/dagre/lib/layout.js","webpack://pipeline-manager/./node_modules/dagre/lib/lodash.js","webpack://pipeline-manager/./node_modules/dagre/lib/nesting-graph.js","webpack://pipeline-manager/./node_modules/dagre/lib/normalize.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/barycenter.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/build-layer-graph.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/cross-count.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/index.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/init-order.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/resolve-conflicts.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/sort-subgraph.js","webpack://pipeline-manager/./node_modules/dagre/lib/order/sort.js","webpack://pipeline-manager/./node_modules/dagre/lib/parent-dummy-chains.js","webpack://pipeline-manager/./node_modules/dagre/lib/position/bk.js","webpack://pipeline-manager/./node_modules/dagre/lib/position/index.js","webpack://pipeline-manager/./node_modules/dagre/lib/rank/feasible-tree.js","webpack://pipeline-manager/./node_modules/dagre/lib/rank/index.js","webpack://pipeline-manager/./node_modules/dagre/lib/rank/network-simplex.js","webpack://pipeline-manager/./node_modules/dagre/lib/rank/util.js","webpack://pipeline-manager/./node_modules/dagre/lib/util.js","webpack://pipeline-manager/./node_modules/dagre/lib/version.js"],"sourcesContent":["!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e||self)[\"v-click-outside\"]=n()}(this,function(){var e=\"__v-click-outside\",n=\"undefined\"!=typeof window,t=\"undefined\"!=typeof navigator,r=n&&(\"ontouchstart\"in window||t&&navigator.msMaxTouchPoints>0)?[\"touchstart\"]:[\"click\"],i=function(e){var n=e.event,t=e.handler;(0,e.middleware)(n)&&t(n)},a=function(n,t){var a=function(e){var n=\"function\"==typeof e;if(!n&&\"object\"!=typeof e)throw new Error(\"v-click-outside: Binding value must be a function or an object\");return{handler:n?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||r,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}}(t.value),o=a.handler,d=a.middleware,c=a.detectIframe,u=a.capture;if(a.isActive){if(n[e]=a.events.map(function(e){return{event:e,srcTarget:document.documentElement,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware,o=t.path||t.composedPath&&t.composedPath();(o?o.indexOf(n)<0:!n.contains(t.target))&&i({event:t,handler:r,middleware:a})}({el:n,event:e,handler:o,middleware:d})},capture:u}}),c){var l={event:\"blur\",srcTarget:window,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware;setTimeout(function(){var e=document.activeElement;e&&\"IFRAME\"===e.tagName&&!n.contains(e)&&i({event:t,handler:r,middleware:a})},0)}({el:n,event:e,handler:o,middleware:d})},capture:u};n[e]=[].concat(n[e],[l])}n[e].forEach(function(t){var r=t.event,i=t.srcTarget,a=t.handler;return setTimeout(function(){n[e]&&i.addEventListener(r,a,u)},0)})}},o=function(n){(n[e]||[]).forEach(function(e){return e.srcTarget.removeEventListener(e.event,e.handler,e.capture)}),delete n[e]},d=n?{beforeMount:a,updated:function(e,n){var t=n.value,r=n.oldValue;JSON.stringify(t)!==JSON.stringify(r)&&(o(e),a(e,{value:t}))},unmounted:o}:{};return{install:function(e){e.directive(\"click-outside\",d)},directive:d}});\n//# sourceMappingURL=v-click-outside.umd.js.map\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"webcola\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"webcola\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeCola\"] = factory(require(\"webcola\"));\n\telse\n\t\troot[\"cytoscapeCola\"] = factory(root[\"webcola\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_5__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar assign = __webpack_require__(1);\nvar defaults = __webpack_require__(2);\nvar cola = __webpack_require__(5) || (typeof window !== 'undefined' ? window.cola : null);\nvar raf = __webpack_require__(4);\nvar isString = function isString(o) {\n return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof('');\n};\nvar isNumber = function isNumber(o) {\n return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(0);\n};\nvar isObject = function isObject(o) {\n return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof({});\n};\nvar isFunction = function isFunction(o) {\n return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(function () {});\n};\nvar nop = function nop() {};\n\nvar getOptVal = function getOptVal(val, ele) {\n if (isFunction(val)) {\n var fn = val;\n return fn.apply(ele, [ele]);\n } else {\n return val;\n }\n};\n\n// constructor\n// options : object containing layout options\nfunction ColaLayout(options) {\n this.options = assign({}, defaults, options);\n}\n\n// runs the layout\nColaLayout.prototype.run = function () {\n var layout = this;\n var options = this.options;\n\n layout.manuallyStopped = false;\n\n var cy = options.cy; // cy is automatically populated for us in the constructor\n var eles = options.eles;\n var nodes = eles.nodes();\n var edges = eles.edges();\n var ready = false;\n\n var isParent = function isParent(ele) {\n return ele.isParent();\n };\n\n var parentNodes = nodes.filter(isParent);\n\n var nonparentNodes = nodes.subtract(parentNodes);\n\n var bb = options.boundingBox || { x1: 0, y1: 0, w: cy.width(), h: cy.height() };\n if (bb.x2 === undefined) {\n bb.x2 = bb.x1 + bb.w;\n }\n if (bb.w === undefined) {\n bb.w = bb.x2 - bb.x1;\n }\n if (bb.y2 === undefined) {\n bb.y2 = bb.y1 + bb.h;\n }\n if (bb.h === undefined) {\n bb.h = bb.y2 - bb.y1;\n }\n\n var updateNodePositions = function updateNodePositions() {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var dimensions = node.layoutDimensions(options);\n var scratch = node.scratch('cola');\n\n // update node dims\n if (!scratch.updatedDims) {\n var padding = getOptVal(options.nodeSpacing, node);\n\n scratch.width = dimensions.w + 2 * padding;\n scratch.height = dimensions.h + 2 * padding;\n }\n }\n\n nodes.positions(function (node) {\n var scratch = node.scratch().cola;\n var retPos = void 0;\n\n if (!node.grabbed() && nonparentNodes.contains(node)) {\n retPos = {\n x: bb.x1 + scratch.x,\n y: bb.y1 + scratch.y\n };\n\n if (!isNumber(retPos.x) || !isNumber(retPos.y)) {\n retPos = undefined;\n }\n }\n\n return retPos;\n });\n\n nodes.updateCompoundBounds(); // because the way this layout sets positions is buggy for some reason; ref #878\n\n if (!ready) {\n onReady();\n ready = true;\n }\n\n if (options.fit) {\n cy.fit(options.padding);\n }\n };\n\n var onDone = function onDone() {\n if (options.ungrabifyWhileSimulating) {\n grabbableNodes.grabify();\n }\n\n cy.off('destroy', destroyHandler);\n\n nodes.off('grab free position', grabHandler);\n nodes.off('lock unlock', lockHandler);\n\n // trigger layoutstop when the layout stops (e.g. finishes)\n layout.one('layoutstop', options.stop);\n layout.trigger({ type: 'layoutstop', layout: layout });\n };\n\n var onReady = function onReady() {\n // trigger layoutready when each node has had its position set at least once\n layout.one('layoutready', options.ready);\n layout.trigger({ type: 'layoutready', layout: layout });\n };\n\n var ticksPerFrame = options.refresh;\n\n if (options.refresh < 0) {\n ticksPerFrame = 1;\n } else {\n ticksPerFrame = Math.max(1, ticksPerFrame); // at least 1\n }\n\n var adaptor = layout.adaptor = cola.adaptor({\n trigger: function trigger(e) {\n // on sim event\n var TICK = cola.EventType ? cola.EventType.tick : null;\n var END = cola.EventType ? cola.EventType.end : null;\n\n switch (e.type) {\n case 'tick':\n case TICK:\n if (options.animate) {\n updateNodePositions();\n }\n break;\n\n case 'end':\n case END:\n updateNodePositions();\n if (!options.infinite) {\n onDone();\n }\n break;\n }\n },\n\n kick: function kick() {\n // kick off the simulation\n //let skip = 0;\n\n var firstTick = true;\n\n var inftick = function inftick() {\n if (layout.manuallyStopped) {\n onDone();\n\n return true;\n }\n\n var ret = adaptor.tick();\n\n if (!options.infinite && !firstTick) {\n adaptor.convergenceThreshold(options.convergenceThreshold);\n }\n\n firstTick = false;\n\n if (ret && options.infinite) {\n // resume layout if done\n adaptor.resume(); // resume => new kick\n }\n\n return ret; // allow regular finish b/c of new kick\n };\n\n var multitick = function multitick() {\n // multiple ticks in a row\n var ret = void 0;\n\n for (var i = 0; i < ticksPerFrame && !ret; i++) {\n ret = ret || inftick(); // pick up true ret vals => sim done\n }\n\n return ret;\n };\n\n if (options.animate) {\n var frame = function frame() {\n if (multitick()) {\n return;\n }\n\n raf(frame);\n };\n\n raf(frame);\n } else {\n while (!inftick()) {\n // keep going...\n }\n }\n },\n\n on: nop, // dummy; not needed\n\n drag: nop // not needed for our case\n });\n layout.adaptor = adaptor;\n\n // if set no grabbing during layout\n var grabbableNodes = nodes.filter(':grabbable');\n if (options.ungrabifyWhileSimulating) {\n grabbableNodes.ungrabify();\n }\n\n var destroyHandler = void 0;\n cy.one('destroy', destroyHandler = function destroyHandler() {\n layout.stop();\n });\n\n // handle node dragging\n var grabHandler = void 0;\n nodes.on('grab free position', grabHandler = function grabHandler(e) {\n var node = this;\n var scrCola = node.scratch().cola;\n var pos = node.position();\n var nodeIsTarget = e.cyTarget === node || e.target === node;\n\n if (!nodeIsTarget) {\n return;\n }\n\n switch (e.type) {\n case 'grab':\n adaptor.dragstart(scrCola);\n break;\n case 'free':\n adaptor.dragend(scrCola);\n break;\n case 'position':\n // only update when different (i.e. manual .position() call or drag) so we don't loop needlessly\n if (scrCola.px !== pos.x - bb.x1 || scrCola.py !== pos.y - bb.y1) {\n scrCola.px = pos.x - bb.x1;\n scrCola.py = pos.y - bb.y1;\n }\n break;\n }\n });\n\n var lockHandler = void 0;\n nodes.on('lock unlock', lockHandler = function lockHandler() {\n var node = this;\n var scrCola = node.scratch().cola;\n\n scrCola.fixed = node.locked();\n\n if (node.locked()) {\n adaptor.dragstart(scrCola);\n } else {\n adaptor.dragend(scrCola);\n }\n });\n\n // add nodes to cola\n adaptor.nodes(nonparentNodes.map(function (node, i) {\n var padding = getOptVal(options.nodeSpacing, node);\n var pos = node.position();\n var dimensions = node.layoutDimensions(options);\n\n var struct = node.scratch().cola = {\n x: options.randomize && !node.locked() || pos.x === undefined ? Math.round(Math.random() * bb.w) : pos.x,\n y: options.randomize && !node.locked() || pos.y === undefined ? Math.round(Math.random() * bb.h) : pos.y,\n width: dimensions.w + 2 * padding,\n height: dimensions.h + 2 * padding,\n index: i,\n fixed: node.locked()\n };\n\n return struct;\n }));\n\n // the constraints to be added on nodes\n var constraints = [];\n\n if (options.alignment) {\n // then set alignment constraints\n\n if (options.alignment.vertical) {\n var verticalAlignments = options.alignment.vertical;\n verticalAlignments.forEach(function (alignment) {\n var offsetsX = [];\n alignment.forEach(function (nodeData) {\n var node = nodeData.node;\n var scrCola = node.scratch().cola;\n var index = scrCola.index;\n offsetsX.push({\n node: index,\n offset: nodeData.offset ? nodeData.offset : 0\n });\n });\n constraints.push({\n type: 'alignment',\n axis: 'x',\n offsets: offsetsX\n });\n });\n }\n\n if (options.alignment.horizontal) {\n var horizontalAlignments = options.alignment.horizontal;\n horizontalAlignments.forEach(function (alignment) {\n var offsetsY = [];\n alignment.forEach(function (nodeData) {\n var node = nodeData.node;\n var scrCola = node.scratch().cola;\n var index = scrCola.index;\n offsetsY.push({\n node: index,\n offset: nodeData.offset ? nodeData.offset : 0\n });\n });\n constraints.push({\n type: 'alignment',\n axis: 'y',\n offsets: offsetsY\n });\n });\n }\n }\n\n // if gapInequalities variable is set add each inequality constraint to list of constraints\n if (options.gapInequalities) {\n options.gapInequalities.forEach(function (inequality) {\n\n // for the constraints to be passed to cola layout adaptor use indices of nodes,\n // not the nodes themselves\n var leftIndex = inequality.left.scratch().cola.index;\n var rightIndex = inequality.right.scratch().cola.index;\n\n constraints.push({\n axis: inequality.axis,\n left: leftIndex,\n right: rightIndex,\n gap: inequality.gap,\n equality: inequality.equality\n });\n });\n }\n\n // add constraints if any\n if (constraints.length > 0) {\n adaptor.constraints(constraints);\n }\n\n // add compound nodes to cola\n adaptor.groups(parentNodes.map(function (node, i) {\n // add basic group incl leaf nodes\n var optPadding = getOptVal(options.nodeSpacing, node);\n var getPadding = function getPadding(d) {\n return parseFloat(node.style('padding-' + d));\n };\n\n var pleft = getPadding('left') + optPadding;\n var pright = getPadding('right') + optPadding;\n var ptop = getPadding('top') + optPadding;\n var pbottom = getPadding('bottom') + optPadding;\n\n node.scratch().cola = {\n index: i,\n\n padding: Math.max(pleft, pright, ptop, pbottom),\n\n // leaves should only contain direct descendants (children),\n // not the leaves of nested compound nodes or any nodes that are compounds themselves\n leaves: node.children().intersection(nonparentNodes).map(function (child) {\n return child[0].scratch().cola.index;\n }),\n\n fixed: node.locked()\n };\n\n return node;\n }).map(function (node) {\n // add subgroups\n node.scratch().cola.groups = node.children().intersection(parentNodes).map(function (child) {\n return child.scratch().cola.index;\n });\n\n return node.scratch().cola;\n }));\n\n // get the edge length setting mechanism\n var length = void 0;\n var lengthFnName = void 0;\n if (options.edgeLength != null) {\n length = options.edgeLength;\n lengthFnName = 'linkDistance';\n } else if (options.edgeSymDiffLength != null) {\n length = options.edgeSymDiffLength;\n lengthFnName = 'symmetricDiffLinkLengths';\n } else if (options.edgeJaccardLength != null) {\n length = options.edgeJaccardLength;\n lengthFnName = 'jaccardLinkLengths';\n } else {\n length = 100;\n lengthFnName = 'linkDistance';\n }\n\n var lengthGetter = function lengthGetter(link) {\n return link.calcLength;\n };\n\n // add the edges to cola\n adaptor.links(edges.stdFilter(function (edge) {\n return nonparentNodes.contains(edge.source()) && nonparentNodes.contains(edge.target());\n }).map(function (edge) {\n var c = edge.scratch().cola = {\n source: edge.source()[0].scratch().cola.index,\n target: edge.target()[0].scratch().cola.index\n };\n\n if (length != null) {\n c.calcLength = getOptVal(length, edge);\n }\n\n return c;\n }));\n\n adaptor.size([bb.w, bb.h]);\n\n if (length != null) {\n adaptor[lengthFnName](lengthGetter);\n }\n\n // set the flow of cola\n if (options.flow) {\n var flow = void 0;\n var defAxis = 'y';\n var defMinSep = 50;\n\n if (isString(options.flow)) {\n flow = {\n axis: options.flow,\n minSeparation: defMinSep\n };\n } else if (isNumber(options.flow)) {\n flow = {\n axis: defAxis,\n minSeparation: options.flow\n };\n } else if (isObject(options.flow)) {\n flow = options.flow;\n\n flow.axis = flow.axis || defAxis;\n flow.minSeparation = flow.minSeparation != null ? flow.minSeparation : defMinSep;\n } else {\n // e.g. options.flow: true\n flow = {\n axis: defAxis,\n minSeparation: defMinSep\n };\n }\n\n adaptor.flowLayout(flow.axis, flow.minSeparation);\n }\n\n layout.trigger({ type: 'layoutstart', layout: layout });\n\n adaptor.avoidOverlaps(options.avoidOverlap).handleDisconnected(options.handleDisconnected).start(options.unconstrIter, options.userConstIter, options.allConstIter, undefined, // gridSnapIterations = 0\n undefined, // keepRunning = true\n options.centerGraph);\n\n if (!options.infinite) {\n setTimeout(function () {\n if (!layout.manuallyStopped) {\n adaptor.stop();\n }\n }, options.maxSimulationTime);\n }\n\n return this; // chaining\n};\n\n// called on continuous layouts to stop them before they finish\nColaLayout.prototype.stop = function () {\n if (this.adaptor) {\n this.manuallyStopped = true;\n this.adaptor.stop();\n }\n\n return this; // chaining\n};\n\nmodule.exports = ColaLayout;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Simple, internal Object.assign() polyfill for options objects etc.\n\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.filter(function (src) {\n return src != null;\n }).forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n\n return tgt;\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// default layout options\nvar defaults = {\n animate: true, // whether to show the layout as it's running\n refresh: 1, // number of ticks per frame; higher is faster but more jerky\n maxSimulationTime: 4000, // max length in ms to run the layout\n ungrabifyWhileSimulating: false, // so you can't drag nodes during layout\n fit: true, // on every layout reposition of nodes, fit the viewport\n padding: 30, // padding around the simulation\n boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n nodeDimensionsIncludeLabels: false, // whether labels should be included in determining the space used by a node\n\n // layout event callbacks\n ready: function ready() {}, // on layoutready\n stop: function stop() {}, // on layoutstop\n\n // positioning options\n randomize: false, // use random node positions at beginning of layout\n avoidOverlap: true, // if true, prevents overlap of node bounding boxes\n handleDisconnected: true, // if true, avoids disconnected components from overlapping\n convergenceThreshold: 0.01, // when the alpha value (system energy) falls below this value, the layout stops\n nodeSpacing: function nodeSpacing(node) {\n return 10;\n }, // extra spacing around nodes\n flow: undefined, // use DAG/tree flow layout if specified, e.g. { axis: 'y', minSeparation: 30 }\n alignment: undefined, // relative alignment constraints on nodes, e.g. function( node ){ return { x: 0, y: 1 } }\n gapInequalities: undefined, // list of inequality constraints for the gap between the nodes, e.g. [{\"axis\":\"y\", \"left\":node1, \"right\":node2, \"gap\":25}]\n centerGraph: true, // adjusts the node positions initially to center the graph (pass false if you want to start the layout from the current position)\n\n\n // different methods of specifying edge length\n // each can be a constant numerical value or a function like `function( edge ){ return 2; }`\n edgeLength: undefined, // sets edge length directly in simulation\n edgeSymDiffLength: undefined, // symmetric diff edge length in simulation\n edgeJaccardLength: undefined, // jaccard edge length in simulation\n\n // iterations of cola algorithm; uses default values on undefined\n unconstrIter: undefined, // unconstrained initial layout iterations\n userConstIter: undefined, // initial layout iterations with user-specified constraints\n allConstIter: undefined, // initial layout iterations with all constraints including non-overlap\n\n // infinite layout options\n infinite: false // overrides all other options for a forces-all-the-time mode\n};\n\nmodule.exports = defaults;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar impl = __webpack_require__(0);\n\n// registers the extension on a cytoscape lib ref\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n cytoscape('layout', 'cola', impl); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar raf = void 0;\n\nif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== ( true ? \"undefined\" : _typeof(undefined))) {\n raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) {\n return setTimeout(fn, 16);\n };\n} else {\n // if not available, all you get is immediate calls\n raf = function raf(cb) {\n cb();\n };\n}\n\nmodule.exports = raf;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_5__;\n\n/***/ })\n/******/ ]);\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"dagre\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"dagre\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeDagre\"] = factory(require(\"dagre\"));\n\telse\n\t\troot[\"cytoscapeDagre\"] = factory(root[\"dagre\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__4__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar impl = __webpack_require__(1); // registers the extension on a cytoscape lib ref\n\n\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n\n cytoscape('layout', 'dagre', impl); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar isFunction = function isFunction(o) {\n return typeof o === 'function';\n};\n\nvar defaults = __webpack_require__(2);\n\nvar assign = __webpack_require__(3);\n\nvar dagre = __webpack_require__(4); // constructor\n// options : object containing layout options\n\n\nfunction DagreLayout(options) {\n this.options = assign({}, defaults, options);\n} // runs the layout\n\n\nDagreLayout.prototype.run = function () {\n var options = this.options;\n var layout = this;\n var cy = options.cy; // cy is automatically populated for us in the constructor\n\n var eles = options.eles;\n\n var getVal = function getVal(ele, val) {\n return isFunction(val) ? val.apply(ele, [ele]) : val;\n };\n\n var bb = options.boundingBox || {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n };\n\n if (bb.x2 === undefined) {\n bb.x2 = bb.x1 + bb.w;\n }\n\n if (bb.w === undefined) {\n bb.w = bb.x2 - bb.x1;\n }\n\n if (bb.y2 === undefined) {\n bb.y2 = bb.y1 + bb.h;\n }\n\n if (bb.h === undefined) {\n bb.h = bb.y2 - bb.y1;\n }\n\n var g = new dagre.graphlib.Graph({\n multigraph: true,\n compound: true\n });\n var gObj = {};\n\n var setGObj = function setGObj(name, val) {\n if (val != null) {\n gObj[name] = val;\n }\n };\n\n setGObj('nodesep', options.nodeSep);\n setGObj('edgesep', options.edgeSep);\n setGObj('ranksep', options.rankSep);\n setGObj('rankdir', options.rankDir);\n setGObj('align', options.align);\n setGObj('ranker', options.ranker);\n setGObj('acyclicer', options.acyclicer);\n g.setGraph(gObj);\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n g.setDefaultNodeLabel(function () {\n return {};\n }); // add nodes to dagre\n\n var nodes = eles.nodes();\n\n if (isFunction(options.sort)) {\n nodes = nodes.sort(options.sort);\n }\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var nbb = node.layoutDimensions(options);\n g.setNode(node.id(), {\n width: nbb.w,\n height: nbb.h,\n name: node.id()\n }); // console.log( g.node(node.id()) );\n } // set compound parents\n\n\n for (var _i = 0; _i < nodes.length; _i++) {\n var _node = nodes[_i];\n\n if (_node.isChild()) {\n g.setParent(_node.id(), _node.parent().id());\n }\n } // add edges to dagre\n\n\n var edges = eles.edges().stdFilter(function (edge) {\n return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes\n });\n\n if (isFunction(options.sort)) {\n edges = edges.sort(options.sort);\n }\n\n for (var _i2 = 0; _i2 < edges.length; _i2++) {\n var edge = edges[_i2];\n g.setEdge(edge.source().id(), edge.target().id(), {\n minlen: getVal(edge, options.minLen),\n weight: getVal(edge, options.edgeWeight),\n name: edge.id()\n }, edge.id()); // console.log( g.edge(edge.source().id(), edge.target().id(), edge.id()) );\n }\n\n dagre.layout(g);\n var gNodeIds = g.nodes();\n\n for (var _i3 = 0; _i3 < gNodeIds.length; _i3++) {\n var id = gNodeIds[_i3];\n var n = g.node(id);\n cy.getElementById(id).scratch().dagre = n;\n }\n\n var dagreBB;\n\n if (options.boundingBox) {\n dagreBB = {\n x1: Infinity,\n x2: -Infinity,\n y1: Infinity,\n y2: -Infinity\n };\n nodes.forEach(function (node) {\n var dModel = node.scratch().dagre;\n dagreBB.x1 = Math.min(dagreBB.x1, dModel.x);\n dagreBB.x2 = Math.max(dagreBB.x2, dModel.x);\n dagreBB.y1 = Math.min(dagreBB.y1, dModel.y);\n dagreBB.y2 = Math.max(dagreBB.y2, dModel.y);\n });\n dagreBB.w = dagreBB.x2 - dagreBB.x1;\n dagreBB.h = dagreBB.y2 - dagreBB.y1;\n } else {\n dagreBB = bb;\n }\n\n var constrainPos = function constrainPos(p) {\n if (options.boundingBox) {\n var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w;\n var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h;\n return {\n x: bb.x1 + xPct * bb.w,\n y: bb.y1 + yPct * bb.h\n };\n } else {\n return p;\n }\n };\n\n nodes.layoutPositions(layout, options, function (ele) {\n ele = _typeof(ele) === \"object\" ? ele : this;\n var dModel = ele.scratch().dagre;\n return constrainPos({\n x: dModel.x,\n y: dModel.y\n });\n });\n return this; // chaining\n};\n\nmodule.exports = DagreLayout;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nvar defaults = {\n // dagre algo options, uses default value on undefined\n nodeSep: undefined,\n // the separation between adjacent nodes in the same rank\n edgeSep: undefined,\n // the separation between adjacent edges in the same rank\n rankSep: undefined,\n // the separation between adjacent nodes in the same rank\n rankDir: undefined,\n // 'TB' for top to bottom flow, 'LR' for left to right,\n align: undefined,\n // alignment for rank nodes. Can be 'UL', 'UR', 'DL', or 'DR', where U = up, D = down, L = left, and R = right\n acyclicer: undefined,\n // If set to 'greedy', uses a greedy heuristic for finding a feedback arc set for a graph.\n // A feedback arc set is a set of edges that can be removed to make a graph acyclic.\n ranker: undefined,\n // Type of algorithm to assigns a rank to each node in the input graph.\n // Possible values: network-simplex, tight-tree or longest-path\n minLen: function minLen(edge) {\n return 1;\n },\n // number of ranks to keep between the source and target of the edge\n edgeWeight: function edgeWeight(edge) {\n return 1;\n },\n // higher weight edges are generally made shorter and straighter than lower weight edges\n // general layout options\n fit: true,\n // whether to fit to viewport\n padding: 30,\n // fit padding\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n nodeDimensionsIncludeLabels: false,\n // whether labels should be included in determining the space used by a node\n animate: false,\n // whether to transition the node positions\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n transform: function transform(node, pos) {\n return pos;\n },\n // a function that applies a transform to the final node position\n ready: function ready() {},\n // on layoutready\n sort: undefined,\n // a sorting function to order the nodes and edges; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n // because cytoscape dagre creates a directed graph, and directed graphs use the node order as a tie breaker when\n // defining the topology of a graph, this sort function can help ensure the correct order of the nodes/edges.\n // this feature is most useful when adding and removing the same nodes and edges multiple times in a graph.\n stop: function stop() {} // on layoutstop\n\n};\nmodule.exports = defaults;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// Simple, internal Object.assign() polyfill for options objects etc.\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n return tgt;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__4__;\n\n/***/ })\n/******/ ]);\n});","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\nvar List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar acyclic = require(\"./acyclic\");\nvar normalize = require(\"./normalize\");\nvar rank = require(\"./rank\");\nvar normalizeRanks = require(\"./util\").normalizeRanks;\nvar parentDummyChains = require(\"./parent-dummy-chains\");\nvar removeEmptyRanks = require(\"./util\").removeEmptyRanks;\nvar nestingGraph = require(\"./nesting-graph\");\nvar addBorderSegments = require(\"./add-border-segments\");\nvar coordinateSystem = require(\"./coordinate-system\");\nvar order = require(\"./order\");\nvar position = require(\"./position\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\"];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar initOrder = require(\"./init-order\");\nvar crossCount = require(\"./cross-count\");\nvar sortSubgraph = require(\"./sort-subgraph\");\nvar buildLayerGraph = require(\"./build-layer-graph\");\nvar addSubgraphConstraints = require(\"./add-subgraph-constraints\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var _ = require(\"../lodash\");\nvar barycenter = require(\"./barycenter\");\nvar resolveConflicts = require(\"./resolve-conflicts\");\nvar sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","var _ = require(\"../lodash\");\nvar util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar util = require(\"../util\");\nvar positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","\"use strict\";\n\nvar rankUtil = require(\"./util\");\nvar longestPath = rankUtil.longestPath;\nvar feasibleTree = require(\"./feasible-tree\");\nvar networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar feasibleTree = require(\"./feasible-tree\");\nvar slack = require(\"./util\").slack;\nvar initRank = require(\"./util\").longestPath;\nvar preorder = require(\"../graphlib\").alg.preorder;\nvar postorder = require(\"../graphlib\").alg.postorder;\nvar simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","/* eslint \"no-console\": off */\n\n\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","module.exports = \"0.8.5\";\n"],"names":["e","n","t","r","i","a","o","d","module","exports","window","navigator","msMaxTouchPoints","event","handler","middleware","Error","events","isActive","detectIframe","capture","Boolean","value","c","u","map","srcTarget","document","documentElement","el","path","composedPath","indexOf","contains","target","l","setTimeout","activeElement","tagName","concat","forEach","addEventListener","removeEventListener","beforeMount","updated","oldValue","JSON","stringify","unmounted","install","directive","factory","__WEBPACK_EXTERNAL_MODULE_5__","modules","installedModules","moduleId","call","m","name","getter","Object","defineProperty","configurable","enumerable","get","__esModule","object","property","prototype","hasOwnProperty","p","s","_typeof","Symbol","iterator","obj","constructor","assign","defaults","cola","raf","isNumber","nop","getOptVal","val","ele","apply","ColaLayout","options","this","run","layout","manuallyStopped","cy","eles","nodes","edges","ready","parentNodes","filter","isParent","nonparentNodes","subtract","bb","boundingBox","x1","y1","w","width","h","height","undefined","x2","y2","updateNodePositions","length","node","dimensions","layoutDimensions","scratch","updatedDims","padding","nodeSpacing","positions","retPos","grabbed","x","y","updateCompoundBounds","onReady","fit","onDone","ungrabifyWhileSimulating","grabbableNodes","grabify","off","destroyHandler","grabHandler","lockHandler","one","stop","trigger","type","ticksPerFrame","refresh","Math","max","adaptor","TICK","EventType","tick","END","end","animate","infinite","kick","firstTick","inftick","ret","convergenceThreshold","resume","frame","multitick","on","drag","ungrabify","scrCola","pos","position","cyTarget","dragstart","dragend","px","py","fixed","locked","randomize","round","random","index","constraints","alignment","vertical","offsetsX","nodeData","push","offset","axis","offsets","horizontal","offsetsY","gapInequalities","inequality","leftIndex","left","rightIndex","right","gap","equality","groups","optPadding","getPadding","parseFloat","style","pleft","pright","ptop","pbottom","leaves","children","intersection","child","lengthFnName","edgeLength","edgeSymDiffLength","edgeJaccardLength","links","stdFilter","edge","source","calcLength","size","link","flow","minSeparation","isObject","flowLayout","avoidOverlaps","avoidOverlap","handleDisconnected","start","unconstrIter","userConstIter","allConstIter","centerGraph","maxSimulationTime","__webpack_require__","bind","tgt","_len","arguments","srcs","Array","_key","src","keys","k","nodeDimensionsIncludeLabels","impl","register","cytoscape","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","fn","cb","__WEBPACK_EXTERNAL_MODULE__4__","toStringTag","mode","ns","create","key","isFunction","dagre","DagreLayout","getVal","g","graphlib","Graph","multigraph","compound","gObj","setGObj","nodeSep","edgeSep","rankSep","rankDir","align","ranker","acyclicer","setGraph","setDefaultEdgeLabel","setDefaultNodeLabel","sort","nbb","setNode","id","_i","_node","isChild","setParent","parent","_i2","setEdge","minlen","minLen","weight","edgeWeight","dagreBB","gNodeIds","_i3","getElementById","Infinity","dModel","min","layoutPositions","xPct","yPct","constrainPos","spacingFactor","animateFilter","animationDuration","animationEasing","transform","debug","util","time","notime","version","_","greedyFAS","fas","graph","weightFn","stack","visited","dfs","v","has","outEdges","dfsFAS","label","removeEdge","forwardName","reversed","uniqueId","undo","addBorderNode","prop","prefix","sg","sgNode","rank","borderType","prev","curr","addDummyNode","borderLeft","borderRight","minRank","maxRank","swapWidthHeight","swapWidthHeightOne","attrs","reverseYOne","swapXYOne","adjust","rankdir","toLowerCase","points","reverseY","swapXY","List","sentinel","_next","_prev","_sentinel","unlink","entry","filterOutLinks","dequeue","enqueue","toString","strs","join","debugOrdering","layerMatrix","buildLayerMatrix","layer","layerV","reduce","nodeCount","state","fasGraph","maxIn","maxOut","out","prevWeight","buckets","range","zeroIdx","assignBucket","buildState","DEFAULT_WEIGHT_FN","results","sources","sinks","removeNode","doGreedyFAS","flatten","constant","collectPredecessors","inEdges","uEntry","wEntry","acyclic","normalize","normalizeRanks","parentDummyChains","removeEmptyRanks","nestingGraph","addBorderSegments","coordinateSystem","order","opts","debugTiming","layoutGraph","inputGraph","canonicalize","merge","graphDefaults","selectNumberAttrs","graphNumAttrs","pick","graphAttrs","nodeNumAttrs","nodeDefaults","edgeDefaults","edgeNumAttrs","edgeAttrs","buildLayoutGraph","ranksep","labelpos","labeloffset","makeSpaceForEdgeLabels","selfEdges","removeSelfEdges","asNonCompoundGraph","injectEdgeLabelProxies","cleanup","borderTop","borderBottom","assignRankMinMax","dummy","labelRank","removeEdgeLabelProxies","layers","orderShift","selfEdge","insertSelfEdges","selfNode","dx","dy","positionSelfEdges","b","last","abs","removeBorderNodes","fixupEdgeLabelCoords","minX","Number","POSITIVE_INFINITY","maxX","minY","maxY","graphLabel","marginX","marginx","marginY","marginy","getExtremes","translateGraph","p1","p2","nodeV","nodeW","unshift","intersectRect","assignNodeIntersects","reverse","reversePointsForReversedEdges","runLayout","inputLabel","layoutLabel","updateInputGraph","edgesep","nodesep","mapValues","newAttrs","lodash","cloneDeep","each","find","forIn","isUndefined","minBy","now","sortBy","values","zipObject","root","depths","top","bottom","childNode","childTop","childBottom","thisWeight","nestingEdge","depth","treeDepths","nestingRoot","acc","sumWeights","nodeRankFactor","dummyChains","vRank","wRank","edgeLabel","edgeObj","normalizeEdge","origLabel","successors","cg","vs","rootPrev","prevChild","movable","inV","result","nodeU","sum","barycenter","relationship","hasNode","createRootNode","twoLayerCrossCount","northLayer","southLayer","southPos","southEntries","firstIndex","treeSize","tree","cc","weightSum","layering","initOrder","crossCount","sortSubgraph","buildLayerGraph","addSubgraphConstraints","buildLayerGraphs","ranks","sweepLayerGraphs","layerGraphs","biasRight","lg","sorted","assignOrder","downLayerGraphs","upLayerGraphs","best","bestCC","lastBest","simpleNodes","orderedVs","entries","mappedEntries","tmp","indegree","entryV","entryW","sourceSet","handleIn","vEntry","merged","handleOut","pop","doResolveConflicts","resolveConflicts","bl","br","subgraphs","barycenters","subgraphResult","other","expandSubgraphs","predecessors","blPred","brPred","consumeUnsortable","unsortable","bias","parts","partition","sortable","lhs","rhs","vsIndex","postorderNums","lim","low","postorder","pathData","lca","vPath","wPath","findPath","pathIdx","pathV","ascending","findType1Conflicts","conflicts","prevLayer","k0","scanPos","prevLayerLength","lastNode","findOtherInnerSegmentNode","k1","slice","scanNode","uLabel","uPos","addConflict","findType2Conflicts","scan","south","southEnd","prevNorthBorder","nextNorthBorder","uNode","north","nextNorthPos","prevNorthPos","southLookahead","conflictsV","hasConflict","verticalAlignment","neighborFn","prevIdx","ws","mp","floor","il","ceil","horizontalCompaction","reverseSep","xs","blockG","blockGraph","sepFn","delta","vLabel","wLabel","sep","vRoot","uRoot","prevMax","buildBlockGraph","iterate","setXsFunc","nextNodesFunc","elem","findSmallestWidthAlignment","xss","NEGATIVE_INFINITY","halfWidth","alignCoordinates","alignTo","alignToVals","alignToMin","alignToMax","vert","horiz","xsVals","balance","ul","ignore","positionX","adjustedLayering","inner","smallestWidth","prevY","maxHeight","positionY","slack","tightTree","nodeEdges","edgeV","findMinSlackEdge","shiftRanks","directed","longestPath","feasibleTree","networkSimplex","networkSimplexRanker","tightTreeRanker","longestPathRanker","initRank","preorder","simplify","initLowLimValues","initCutValues","leaveEdge","exchangeEdges","enterEdge","cutvalue","calcCutValue","assignCutValue","childIsTail","graphEdge","cutValue","isOutEdge","pointsToHead","otherWeight","hasEdge","otherCutValue","dfsAssignLowLim","nextLim","neighbors","tailLabel","flip","candidates","isDescendant","f","flipped","updateRanks","rootLabel","simplified","simpleLabel","isMultigraph","successorWeights","weightMap","sucs","predecessorWeights","preds","rect","point","sx","sy","collection","console","log"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/19.7c5a1bec.js b/_static/kpm/js/19.7c5a1bec.js new file mode 100644 index 00000000..3e96aa43 --- /dev/null +++ b/_static/kpm/js/19.7c5a1bec.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[19],{4019:(t,r,n)=>{function e(t){for(var n in t)r.hasOwnProperty(n)||(r[n]=t[n])}Object.defineProperty(r,"__esModule",{value:!0}),e(n(60089)),e(n(22845)),e(n(7069)),e(n(96085)),e(n(67598)),e(n(77384)),e(n(37426)),e(n(96749)),e(n(69427)),e(n(88793)),e(n(7421)),e(n(81138)),e(n(30031)),e(n(32867)),e(n(74926)),e(n(7565))},60089:function(t,r,n){var e,i=this&&this.__extends||(e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},e(t,r)},function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)});Object.defineProperty(r,"__esModule",{value:!0});var o=n(37426),s=function(t){function r(r){var n=t.call(this)||this,e=r;return e.trigger&&(n.trigger=e.trigger),e.kick&&(n.kick=e.kick),e.drag&&(n.drag=e.drag),e.on&&(n.on=e.on),n.dragstart=n.dragStart=o.Layout.dragStart,n.dragend=n.dragEnd=o.Layout.dragEnd,n}return i(r,t),r.prototype.trigger=function(t){},r.prototype.kick=function(){},r.prototype.drag=function(){},r.prototype.on=function(t,r){return this},r}(o.Layout);r.LayoutAdaptor=s,r.adaptor=function(t){return new s(t)}},7565:(t,r,n)=>{Object.defineProperty(r,"__esModule",{value:!0});var e=n(37426),i=n(67598);r.gridify=function(t,r,n,e){return t.cola.start(0,0,0,10,!1),function(t,r,n,e){t.forEach((function(t){t.routerNode={name:t.name,bounds:t.bounds.inflate(-n)}})),r.forEach((function(r){r.routerNode={bounds:r.bounds.inflate(-e),children:(void 0!==r.groups?r.groups.map((function(r){return t.length+r.id})):[]).concat(void 0!==r.leaves?r.leaves.map((function(t){return t.index})):[])}}));var o=t.concat(r).map((function(t,r){return t.routerNode.id=r,t.routerNode}));return new i.GridRouter(o,{getChildren:function(t){return t.children},getBounds:function(t){return t.bounds}},n-e)}(t.cola.nodes(),t.cola.groups(),n,e).routeEdges(t.powerGraph.powerEdges,r,(function(t){return t.source.routerNode.id}),(function(t){return t.target.routerNode.id}))},r.powerGraphGridLayout=function(t,r,n){var i;t.nodes.forEach((function(t,r){return t.index=r})),(new e.Layout).avoidOverlaps(!1).nodes(t.nodes).links(t.links).powerGraphGroups((function(t){(i=t).groups.forEach((function(t){return t.padding=n}))}));var o=t.nodes.length,s=[],a=t.nodes.slice(0);return a.forEach((function(t,r){return t.index=r})),i.groups.forEach((function(t){var r=t.index=t.id+o;a.push(t),void 0!==t.leaves&&t.leaves.forEach((function(t){return s.push({source:r,target:t.index})})),void 0!==t.groups&&t.groups.forEach((function(t){return s.push({source:r,target:t.id+o})}))})),i.powerEdges.forEach((function(t){s.push({source:t.source.index,target:t.target.index})})),(new e.Layout).size(r).nodes(a).links(s).avoidOverlaps(!1).linkDistance(30).symmetricDiffLinkLengths(5).convergenceThreshold(1e-4).start(100,0,0,0,!1),{cola:(new e.Layout).convergenceThreshold(.001).size(r).avoidOverlaps(!0).nodes(t.nodes).links(t.links).groupCompactness(1e-4).linkDistance(30).symmetricDiffLinkLengths(5).powerGraphGroups((function(t){(i=t).groups.forEach((function(t){t.padding=n}))})).start(50,0,100,0,!1),powerGraph:i}}},22845:(t,r,n)=>{Object.defineProperty(r,"__esModule",{value:!0});var e=n(11509),i=n(11374);r.d3adaptor=function(t){return!t||function(t){return t.version&&null!==t.version.match(/^3\./)}(t)?new e.D3StyleLayoutAdaptor:new i.D3StyleLayoutAdaptor(t)}},11509:function(t,r,n){var e,i=this&&this.__extends||(e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},e(t,r)},function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)});Object.defineProperty(r,"__esModule",{value:!0});var o=n(37426),s=function(t){function r(){var r=t.call(this)||this;r.event=d3.dispatch(o.EventType[o.EventType.start],o.EventType[o.EventType.tick],o.EventType[o.EventType.end]);var n=r;return r.drag=function(){if(!t)var t=d3.behavior.drag().origin(o.Layout.dragOrigin).on("dragstart.d3adaptor",o.Layout.dragStart).on("drag.d3adaptor",(function(t){o.Layout.drag(t,d3.event),n.resume()})).on("dragend.d3adaptor",o.Layout.dragEnd);if(!arguments.length)return t;this.call(t)},r}return i(r,t),r.prototype.trigger=function(t){var r={type:o.EventType[t.type],alpha:t.alpha,stress:t.stress};this.event[r.type](r)},r.prototype.kick=function(){var r=this;d3.timer((function(){return t.prototype.tick.call(r)}))},r.prototype.on=function(t,r){return"string"==typeof t?this.event.on(t,r):this.event.on(o.EventType[t],r),this},r}(o.Layout);r.D3StyleLayoutAdaptor=s,r.d3adaptor=function(){return new s}},11374:function(t,r,n){var e,i=this&&this.__extends||(e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},e(t,r)},function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)});Object.defineProperty(r,"__esModule",{value:!0});var o=n(37426),s=function(t){function r(r){var n=t.call(this)||this;n.d3Context=r,n.event=r.dispatch(o.EventType[o.EventType.start],o.EventType[o.EventType.tick],o.EventType[o.EventType.end]);var e=n;return n.drag=function(){if(!t)var t=r.drag().subject(o.Layout.dragOrigin).on("start.d3adaptor",o.Layout.dragStart).on("drag.d3adaptor",(function(t){o.Layout.drag(t,r.event),e.resume()})).on("end.d3adaptor",o.Layout.dragEnd);if(!arguments.length)return t;arguments[0].call(t)},n}return i(r,t),r.prototype.trigger=function(t){var r={type:o.EventType[t.type],alpha:t.alpha,stress:t.stress};this.event.call(r.type,r)},r.prototype.kick=function(){var r=this,n=this.d3Context.timer((function(){return t.prototype.tick.call(r)&&n.stop()}))},r.prototype.on=function(t,r){return"string"==typeof t?this.event.on(t,r):this.event.on(o.EventType[t],r),this},r}(o.Layout);r.D3StyleLayoutAdaptor=s},7069:(t,r)=>{Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function t(){this.locks={}}return t.prototype.add=function(t,r){this.locks[t]=r},t.prototype.clear=function(){this.locks={}},t.prototype.isEmpty=function(){for(var t in this.locks)return!1;return!0},t.prototype.apply=function(t){for(var r in this.locks)t(Number(r),this.locks[r])},t}();r.Locks=n;var e=function(){function t(t,r,e){void 0===e&&(e=null),this.D=r,this.G=e,this.threshold=1e-4,this.numGridSnapNodes=0,this.snapGridSize=100,this.snapStrength=1e3,this.scaleSnapByMaxH=!1,this.random=new i,this.project=null,this.x=t,this.k=t.length;var o=this.n=t[0].length;this.H=new Array(this.k),this.g=new Array(this.k),this.Hd=new Array(this.k),this.a=new Array(this.k),this.b=new Array(this.k),this.c=new Array(this.k),this.d=new Array(this.k),this.e=new Array(this.k),this.ia=new Array(this.k),this.ib=new Array(this.k),this.xtmp=new Array(this.k),this.locks=new n,this.minD=Number.MAX_VALUE;for(var s,a=o;a--;)for(s=o;--s>a;){var u=r[a][s];u>0&&u1e-9)break;var y=this.offsetDir();for(e=0;e1&&l>d||!isFinite(d))for(e=0;e1&&(v=1);var g=d*d,k=2*v*(l-d)/(g*l),w=l*l*l,x=2*-v/(g*w);for(isFinite(k)||console.log(k),e=0;e0?E-(S+1)*_:E-(S-1)*_)&&f<=m&&(this.scaleSnapByMaxH?(this.g[e][u]+=a*A*f,this.H[e][u][u]+=a*A):(this.g[e][u]+=A*f,this.H[e][u][u]+=A))}this.locks.isEmpty()||this.locks.apply((function(n,i){for(e=0;e0;)for(var i=r;i-- >0;)n(e,i)},t.prototype.matrixApply=function(r){t.mApply(this.k,this.n,r)},t.prototype.computeNextPosition=function(t,r){var n=this;this.computeDerivatives(t);var e=this.computeStepSize(this.g);if(this.stepAndProject(t,r,this.g,e),this.project){this.matrixApply((function(e,i){return n.e[e][i]=t[e][i]-r[e][i]}));var i=this.computeStepSize(this.e);i=Math.max(.2,Math.min(i,1)),this.stepAndProject(t,r,this.e,i)}},t.prototype.run=function(t){for(var r=Number.MAX_VALUE,n=!1;!n&&t-- >0;){var e=this.rungeKutta();n=Math.abs(r/e-1)>16)/this.range},t.prototype.getNextBetween=function(t,r){return t+this.getNext()*(r-t)},t}();r.PseudoRandom=i},96085:function(t,r,n){var e,i=this&&this.__extends||(e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},e(t,r)},function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)});Object.defineProperty(r,"__esModule",{value:!0});var o=n(30031),s=function(){};r.Point=s;var a=function(t,r,n,e){this.x1=t,this.y1=r,this.x2=n,this.y2=e};r.LineSegment=a;var u=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return i(r,t),r}(s);function h(t,r,n){return(r.x-t.x)*(n.y-t.y)-(n.x-t.x)*(r.y-t.y)}function c(t,r,n){return h(t,r,n)>0}function p(t,r,n){return h(t,r,n)<0}function f(t,r){var n,e,i,o,s=r.length-1;if(p(t,r[1],r[0])&&!c(t,r[s-1],r[0]))return 0;for(n=0,e=s;;){if(e-n==1)return c(t,r[n],r[e])?n:e;if((o=p(t,r[(i=Math.floor((n+e)/2))+1],r[i]))&&!c(t,r[i-1],r[i]))return i;c(t,r[n+1],r[n])?o||c(t,r[n],r[i])?e=i:n=i:o&&p(t,r[n],r[i])?e=i:n=i}}function y(t,r){var n,e,i,o,s=r.length-1;if(c(t,r[s-1],r[0])&&!p(t,r[1],r[0]))return 0;for(n=0,e=s;;){if(e-n==1)return p(t,r[n],r[e])?n:e;if(o=p(t,r[(i=Math.floor((n+e)/2))+1],r[i]),c(t,r[i-1],r[i])&&!o)return i;p(t,r[n+1],r[n])?o?p(t,r[n],r[i])?e=i:n=i:e=i:o?n=i:c(t,r[n],r[i])?e=i:n=i}}function l(t,r,n,e,i,o){var s,a;a=e(t[s=n(r[0],t)],r);for(var u=!1;!u;){for(u=!0;s===t.length-1&&(s=0),!i(r[a],t[s],t[s+1]);)++s;for(;0===a&&(a=r.length-1),!o(t[s],r[a],r[a-1]);)--a,u=!1}return{t1:s,t2:a}}function d(t,r){return l(t,r,f,y,c,p)}r.PolyPoint=u,r.isLeft=h,r.ConvexHull=function(t){var r,n=t.slice(0).sort((function(t,r){return t.x!==r.x?r.x-t.x:r.y-t.y})),e=t.length,i=n[0].x;for(r=1;r=0&&n[r].x===c;r--);for(a=r+1,r=o;++r<=a;)if(!(h(n[0],n[a],n[r])>=0&&r1&&!(h(s[s.length-2],s[s.length-1],n[r])>0);)s.length-=1;0!=r&&s.push(n[r])}u!=a&&s.push(n[u]);var p=s.length;for(r=a;--r>=o;)if(!(h(n[u],n[o],n[r])>=0&&r>o)){for(;s.length>p&&!(h(s[s.length-2],s[s.length-1],n[r])>0);)s.length-=1;0!=r&&s.push(n[r])}}return s},r.clockwiseRadialSweep=function(t,r,n){r.slice(0).sort((function(r,n){return Math.atan2(r.y-t.y,r.x-t.x)-Math.atan2(n.y-t.y,n.x-t.x)})).forEach(n)},r.tangent_PolyPolyC=l,r.LRtangent_PolyPolyC=function(t,r){var n=d(r,t);return{t1:n.t2,t2:n.t1}},r.RLtangent_PolyPolyC=d,r.LLtangent_PolyPolyC=function(t,r){return l(t,r,y,y,p,p)},r.RRtangent_PolyPolyC=function(t,r){return l(t,r,f,f,c,c)};var v=function(t,r){this.t1=t,this.t2=r};r.BiTangent=v;var g=function(){};r.BiTangents=g;var k=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return i(r,t),r}(s);r.TVGPoint=k;var w=function(t,r,n,e){this.id=t,this.polyid=r,this.polyvertid=n,this.p=e,e.vv=this};r.VisibilityVertex=w;var x=function(){function t(t,r){this.source=t,this.target=r}return t.prototype.length=function(){var t=this.source.p.x-this.target.p.x,r=this.source.p.y-this.target.p.y;return Math.sqrt(t*t+r*r)},t}();r.VisibilityEdge=x;var m=function(){function t(t,r){if(this.P=t,this.V=[],this.E=[],r)this.V=r.V.slice(0),this.E=r.E.slice(0);else{for(var n=t.length,e=0;e0&&this.E.push(new x(i[o-1].vv,a))}i.length>1&&this.E.push(new x(i[0].vv,i[i.length-1].vv))}for(e=0;e0)return!0;return!1},t}();function _(t,r){for(var n=[],e=1,i=r.length;e=0&&d>=0&&k<0&&w>=0&&x>=0&&m<0?i.ll=new v(o,s):l<=0&&d<=0&&k>0&&w<=0&&x<=0&&m>0?i.rr=new v(o,s):l<=0&&d>0&&k<=0&&w>=0&&x<0&&m>=0?i.rl=new v(o,s):l>=0&&d<0&&k>=0&&w<=0&&x>0&&m<=0&&(i.lr=new v(o,s))}return i}function P(t,r){return!t.every((function(t){return!function(t,r){for(var n=1,e=r.length;n0)return!0}return!1}}}]); +//# sourceMappingURL=19.7c5a1bec.js.map \ No newline at end of file diff --git a/_static/kpm/js/19.7c5a1bec.js.map b/_static/kpm/js/19.7c5a1bec.js.map new file mode 100644 index 00000000..31a39566 --- /dev/null +++ b/_static/kpm/js/19.7c5a1bec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/19.7c5a1bec.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/webcola/dist/index.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/adaptor.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/batch.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/d3adaptor.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/d3v3adaptor.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/d3v4adaptor.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/descent.js","webpack://pipeline-manager/./node_modules/webcola/dist/src/geom.js"],"sourcesContent":["\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(require(\"./src/adaptor\"));\r\n__export(require(\"./src/d3adaptor\"));\r\n__export(require(\"./src/descent\"));\r\n__export(require(\"./src/geom\"));\r\n__export(require(\"./src/gridrouter\"));\r\n__export(require(\"./src/handledisconnected\"));\r\n__export(require(\"./src/layout\"));\r\n__export(require(\"./src/layout3d\"));\r\n__export(require(\"./src/linklengths\"));\r\n__export(require(\"./src/powergraph\"));\r\n__export(require(\"./src/pqueue\"));\r\n__export(require(\"./src/rbtree\"));\r\n__export(require(\"./src/rectangle\"));\r\n__export(require(\"./src/shortestpaths\"));\r\n__export(require(\"./src/vpsc\"));\r\n__export(require(\"./src/batch\"));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9XZWJDb2xhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTZCO0FBQzdCLHFDQUErQjtBQUMvQixtQ0FBNkI7QUFDN0IsZ0NBQTBCO0FBQzFCLHNDQUFnQztBQUNoQyw4Q0FBd0M7QUFDeEMsa0NBQTRCO0FBQzVCLG9DQUE4QjtBQUM5Qix1Q0FBaUM7QUFDakMsc0NBQWdDO0FBQ2hDLGtDQUE0QjtBQUM1QixrQ0FBNEI7QUFDNUIscUNBQStCO0FBQy9CLHlDQUFtQztBQUNuQyxnQ0FBMEI7QUFDMUIsaUNBQTJCIn0=","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar LayoutAdaptor = (function (_super) {\r\n __extends(LayoutAdaptor, _super);\r\n function LayoutAdaptor(options) {\r\n var _this = _super.call(this) || this;\r\n var self = _this;\r\n var o = options;\r\n if (o.trigger) {\r\n _this.trigger = o.trigger;\r\n }\r\n if (o.kick) {\r\n _this.kick = o.kick;\r\n }\r\n if (o.drag) {\r\n _this.drag = o.drag;\r\n }\r\n if (o.on) {\r\n _this.on = o.on;\r\n }\r\n _this.dragstart = _this.dragStart = layout_1.Layout.dragStart;\r\n _this.dragend = _this.dragEnd = layout_1.Layout.dragEnd;\r\n return _this;\r\n }\r\n LayoutAdaptor.prototype.trigger = function (e) { };\r\n ;\r\n LayoutAdaptor.prototype.kick = function () { };\r\n ;\r\n LayoutAdaptor.prototype.drag = function () { };\r\n ;\r\n LayoutAdaptor.prototype.on = function (eventType, listener) { return this; };\r\n ;\r\n return LayoutAdaptor;\r\n}(layout_1.Layout));\r\nexports.LayoutAdaptor = LayoutAdaptor;\r\nfunction adaptor(options) {\r\n return new LayoutAdaptor(options);\r\n}\r\nexports.adaptor = adaptor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2FkYXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWlEO0FBRTdDO0lBQW1DLGlDQUFNO0lBYXJDLHVCQUFhLE9BQU87UUFBcEIsWUFDSSxpQkFBTyxTQXlCVjtRQXJCRyxJQUFJLElBQUksR0FBRyxLQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBRWhCLElBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRztZQUNiLEtBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUM1QjtRQUVELElBQUssQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNULEtBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN0QjtRQUVELElBQUssQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNULEtBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN0QjtRQUVELElBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNQLEtBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNsQjtRQUVELEtBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFNBQVMsR0FBRyxlQUFNLENBQUMsU0FBUyxDQUFDO1FBQ25ELEtBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSSxDQUFDLE9BQU8sR0FBRyxlQUFNLENBQUMsT0FBTyxDQUFDOztJQUNqRCxDQUFDO0lBcENELCtCQUFPLEdBQVAsVUFBUSxDQUFRLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDckIsNEJBQUksR0FBSixjQUFRLENBQUM7SUFBQSxDQUFDO0lBQ1YsNEJBQUksR0FBSixjQUFRLENBQUM7SUFBQSxDQUFDO0lBQ1YsMEJBQUUsR0FBRixVQUFHLFNBQTZCLEVBQUUsUUFBb0IsSUFBVyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBa0NwRixvQkFBQztBQUFELENBQUMsQUF4Q0QsQ0FBbUMsZUFBTSxHQXdDeEM7QUF4Q1ksc0NBQWE7QUE2QzFCLFNBQWdCLE9BQU8sQ0FBRSxPQUFPO0lBQzVCLE9BQU8sSUFBSSxhQUFhLENBQUUsT0FBTyxDQUFFLENBQUM7QUFDeEMsQ0FBQztBQUZELDBCQUVDIn0=","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar gridrouter_1 = require(\"./gridrouter\");\r\nfunction gridify(pgLayout, nudgeGap, margin, groupMargin) {\r\n pgLayout.cola.start(0, 0, 0, 10, false);\r\n var gridrouter = route(pgLayout.cola.nodes(), pgLayout.cola.groups(), margin, groupMargin);\r\n return gridrouter.routeEdges(pgLayout.powerGraph.powerEdges, nudgeGap, function (e) { return e.source.routerNode.id; }, function (e) { return e.target.routerNode.id; });\r\n}\r\nexports.gridify = gridify;\r\nfunction route(nodes, groups, margin, groupMargin) {\r\n nodes.forEach(function (d) {\r\n d.routerNode = {\r\n name: d.name,\r\n bounds: d.bounds.inflate(-margin)\r\n };\r\n });\r\n groups.forEach(function (d) {\r\n d.routerNode = {\r\n bounds: d.bounds.inflate(-groupMargin),\r\n children: (typeof d.groups !== 'undefined' ? d.groups.map(function (c) { return nodes.length + c.id; }) : [])\r\n .concat(typeof d.leaves !== 'undefined' ? d.leaves.map(function (c) { return c.index; }) : [])\r\n };\r\n });\r\n var gridRouterNodes = nodes.concat(groups).map(function (d, i) {\r\n d.routerNode.id = i;\r\n return d.routerNode;\r\n });\r\n return new gridrouter_1.GridRouter(gridRouterNodes, {\r\n getChildren: function (v) { return v.children; },\r\n getBounds: function (v) { return v.bounds; }\r\n }, margin - groupMargin);\r\n}\r\nfunction powerGraphGridLayout(graph, size, grouppadding) {\r\n var powerGraph;\r\n graph.nodes.forEach(function (v, i) { return v.index = i; });\r\n new layout_1.Layout()\r\n .avoidOverlaps(false)\r\n .nodes(graph.nodes)\r\n .links(graph.links)\r\n .powerGraphGroups(function (d) {\r\n powerGraph = d;\r\n powerGraph.groups.forEach(function (v) { return v.padding = grouppadding; });\r\n });\r\n var n = graph.nodes.length;\r\n var edges = [];\r\n var vs = graph.nodes.slice(0);\r\n vs.forEach(function (v, i) { return v.index = i; });\r\n powerGraph.groups.forEach(function (g) {\r\n var sourceInd = g.index = g.id + n;\r\n vs.push(g);\r\n if (typeof g.leaves !== 'undefined')\r\n g.leaves.forEach(function (v) { return edges.push({ source: sourceInd, target: v.index }); });\r\n if (typeof g.groups !== 'undefined')\r\n g.groups.forEach(function (gg) { return edges.push({ source: sourceInd, target: gg.id + n }); });\r\n });\r\n powerGraph.powerEdges.forEach(function (e) {\r\n edges.push({ source: e.source.index, target: e.target.index });\r\n });\r\n new layout_1.Layout()\r\n .size(size)\r\n .nodes(vs)\r\n .links(edges)\r\n .avoidOverlaps(false)\r\n .linkDistance(30)\r\n .symmetricDiffLinkLengths(5)\r\n .convergenceThreshold(1e-4)\r\n .start(100, 0, 0, 0, false);\r\n return {\r\n cola: new layout_1.Layout()\r\n .convergenceThreshold(1e-3)\r\n .size(size)\r\n .avoidOverlaps(true)\r\n .nodes(graph.nodes)\r\n .links(graph.links)\r\n .groupCompactness(1e-4)\r\n .linkDistance(30)\r\n .symmetricDiffLinkLengths(5)\r\n .powerGraphGroups(function (d) {\r\n powerGraph = d;\r\n powerGraph.groups.forEach(function (v) {\r\n v.padding = grouppadding;\r\n });\r\n }).start(50, 0, 100, 0, false),\r\n powerGraph: powerGraph\r\n };\r\n}\r\nexports.powerGraphGridLayout = powerGraphGridLayout;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9iYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUEyQztBQUMzQywyQ0FBdUM7QUFRdkMsU0FBZ0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFnQixFQUFFLE1BQWMsRUFBRSxXQUFtQjtJQUNuRixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0YsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFNLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFBLENBQUMsSUFBRyxPQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBdEIsQ0FBc0IsRUFBRSxVQUFBLENBQUMsSUFBRyxPQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBdEIsQ0FBc0IsQ0FBQyxDQUFDO0FBQ3hJLENBQUM7QUFKRCwwQkFJQztBQUVELFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBYyxFQUFFLFdBQW1CO0lBQzdELEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLFVBQVUsR0FBUTtZQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDcEMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gs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","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar d3v3 = require(\"./d3v3adaptor\");\r\nvar d3v4 = require(\"./d3v4adaptor\");\r\n;\r\nfunction d3adaptor(d3Context) {\r\n if (!d3Context || isD3V3(d3Context)) {\r\n return new d3v3.D3StyleLayoutAdaptor();\r\n }\r\n return new d3v4.D3StyleLayoutAdaptor(d3Context);\r\n}\r\nexports.d3adaptor = d3adaptor;\r\nfunction isD3V3(d3Context) {\r\n var v3exp = /^3\\./;\r\n return d3Context.version && d3Context.version.match(v3exp) !== null;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDNhZGFwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vV2ViQ29sYS9zcmMvZDNhZGFwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFDO0FBQ3JDLG9DQUFxQztBQUdVLENBQUM7QUE0QmhELFNBQWdCLFNBQVMsQ0FBQyxTQUF3QztJQUM5RCxJQUFJLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUNqQyxPQUFPLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDMUM7SUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFMRCw4QkFLQztBQUVELFNBQVMsTUFBTSxDQUFDLFNBQXVDO0lBQ25ELElBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUNyQixPQUFhLFNBQVUsQ0FBQyxPQUFPLElBQVUsU0FBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ3RGLENBQUMifQ==","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar D3StyleLayoutAdaptor = (function (_super) {\r\n __extends(D3StyleLayoutAdaptor, _super);\r\n function D3StyleLayoutAdaptor() {\r\n var _this = _super.call(this) || this;\r\n _this.event = d3.dispatch(layout_1.EventType[layout_1.EventType.start], layout_1.EventType[layout_1.EventType.tick], layout_1.EventType[layout_1.EventType.end]);\r\n var d3layout = _this;\r\n var drag;\r\n _this.drag = function () {\r\n if (!drag) {\r\n var drag = d3.behavior.drag()\r\n .origin(layout_1.Layout.dragOrigin)\r\n .on(\"dragstart.d3adaptor\", layout_1.Layout.dragStart)\r\n .on(\"drag.d3adaptor\", function (d) {\r\n layout_1.Layout.drag(d, d3.event);\r\n d3layout.resume();\r\n })\r\n .on(\"dragend.d3adaptor\", layout_1.Layout.dragEnd);\r\n }\r\n if (!arguments.length)\r\n return drag;\r\n this\r\n .call(drag);\r\n };\r\n return _this;\r\n }\r\n D3StyleLayoutAdaptor.prototype.trigger = function (e) {\r\n var d3event = { type: layout_1.EventType[e.type], alpha: e.alpha, stress: e.stress };\r\n this.event[d3event.type](d3event);\r\n };\r\n D3StyleLayoutAdaptor.prototype.kick = function () {\r\n var _this = this;\r\n d3.timer(function () { return _super.prototype.tick.call(_this); });\r\n };\r\n D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) {\r\n if (typeof eventType === 'string') {\r\n this.event.on(eventType, listener);\r\n }\r\n else {\r\n this.event.on(layout_1.EventType[eventType], listener);\r\n }\r\n return this;\r\n };\r\n return D3StyleLayoutAdaptor;\r\n}(layout_1.Layout));\r\nexports.D3StyleLayoutAdaptor = D3StyleLayoutAdaptor;\r\nfunction d3adaptor() {\r\n return new D3StyleLayoutAdaptor();\r\n}\r\nexports.d3adaptor = d3adaptor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDN2M2FkYXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9kM3YzYWRhcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFNQSxtQ0FBa0Q7QUFHOUM7SUFBMEMsd0NBQU07SUFnQjVDO1FBQUEsWUFDSSxpQkFBTyxTQXVCVjtRQXZDRCxXQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQkFBUyxDQUFDLGtCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQVMsQ0FBQyxrQkFBUyxDQUFDLElBQUksQ0FBQyxFQUFFLGtCQUFTLENBQUMsa0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBa0JqRyxJQUFJLFFBQVEsR0FBRyxLQUFJLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUM7UUFDVCxLQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1IsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtxQkFDeEIsTUFBTSxDQUFDLGVBQU0sQ0FBQyxVQUFVLENBQUM7cUJBQ3pCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxlQUFNLENBQUMsU0FBUyxDQUFDO3FCQUMzQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsVUFBQSxDQUFDO29CQUNuQixlQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDO3FCQUNELEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxlQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDaEQ7WUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFHbkMsSUFBSTtpQkFFQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFBOztJQUNMLENBQUM7SUFyQ0Qsc0NBQU8sR0FBUCxVQUFRLENBQVE7UUFDWixJQUFJLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxrQkFBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFHRCxtQ0FBSSxHQUFKO1FBQUEsaUJBRUM7UUFERyxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQU0sT0FBQSxpQkFBTSxJQUFJLFlBQUUsRUFBWixDQUFZLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBZ0NELGlDQUFFLEdBQUYsVUFBRyxTQUE2QixFQUFFLFFBQW9CO1FBQ2xELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN0QzthQUFNO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsa0JBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNqRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDTCwyQkFBQztBQUFELENBQUMsQUFuREQsQ0FBMEMsZUFBTSxHQW1EL0M7QUFuRFksb0RBQW9CO0FBaUVqQyxTQUFnQixTQUFTO0lBQ3JCLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFGRCw4QkFFQyJ9","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar D3StyleLayoutAdaptor = (function (_super) {\r\n __extends(D3StyleLayoutAdaptor, _super);\r\n function D3StyleLayoutAdaptor(d3Context) {\r\n var _this = _super.call(this) || this;\r\n _this.d3Context = d3Context;\r\n _this.event = d3Context.dispatch(layout_1.EventType[layout_1.EventType.start], layout_1.EventType[layout_1.EventType.tick], layout_1.EventType[layout_1.EventType.end]);\r\n var d3layout = _this;\r\n var drag;\r\n _this.drag = function () {\r\n if (!drag) {\r\n var drag = d3Context.drag()\r\n .subject(layout_1.Layout.dragOrigin)\r\n .on(\"start.d3adaptor\", layout_1.Layout.dragStart)\r\n .on(\"drag.d3adaptor\", function (d) {\r\n layout_1.Layout.drag(d, d3Context.event);\r\n d3layout.resume();\r\n })\r\n .on(\"end.d3adaptor\", layout_1.Layout.dragEnd);\r\n }\r\n if (!arguments.length)\r\n return drag;\r\n arguments[0].call(drag);\r\n };\r\n return _this;\r\n }\r\n D3StyleLayoutAdaptor.prototype.trigger = function (e) {\r\n var d3event = { type: layout_1.EventType[e.type], alpha: e.alpha, stress: e.stress };\r\n this.event.call(d3event.type, d3event);\r\n };\r\n D3StyleLayoutAdaptor.prototype.kick = function () {\r\n var _this = this;\r\n var t = this.d3Context.timer(function () { return _super.prototype.tick.call(_this) && t.stop(); });\r\n };\r\n D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) {\r\n if (typeof eventType === 'string') {\r\n this.event.on(eventType, listener);\r\n }\r\n else {\r\n this.event.on(layout_1.EventType[eventType], listener);\r\n }\r\n return this;\r\n };\r\n return D3StyleLayoutAdaptor;\r\n}(layout_1.Layout));\r\nexports.D3StyleLayoutAdaptor = D3StyleLayoutAdaptor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDN2NGFkYXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9kM3Y0YWRhcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxtQ0FBaUQ7QUFVakQ7SUFBMEMsd0NBQU07SUFpQjVDLDhCQUFvQixTQUFvQjtRQUF4QyxZQUNJLGlCQUFPLFNBeUJWO1FBMUJtQixlQUFTLEdBQVQsU0FBUyxDQUFXO1FBRXBDLEtBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUyxDQUFDLGtCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQVMsQ0FBQyxrQkFBUyxDQUFDLElBQUksQ0FBQyxFQUFFLGtCQUFTLENBQUMsa0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBR2pILElBQUksUUFBUSxHQUFHLEtBQUksQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQztRQUNULEtBQUksQ0FBQyxJQUFJLEdBQUc7WUFDUixJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNQLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUU7cUJBQ3RCLE9BQU8sQ0FBQyxlQUFNLENBQUMsVUFBVSxDQUFDO3FCQUMxQixFQUFFLENBQUMsaUJBQWlCLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQztxQkFDdkMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLFVBQUEsQ0FBQztvQkFDbkIsZUFBTSxDQUFDLElBQUksQ0FBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQztxQkFDRCxFQUFFLENBQUMsZUFBZSxFQUFFLGVBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1QztZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUtuQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQTs7SUFDTCxDQUFDO0lBekNELHNDQUFPLEdBQVAsVUFBUSxDQUFRO1FBQ1osSUFBSSxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsa0JBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUc1RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFPLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFHRCxtQ0FBSSxHQUFKO1FBQUEsaUJBRUM7UUFERyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFNLE9BQUEsaUJBQU0sSUFBSSxZQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUF4QixDQUF3QixDQUFDLENBQUM7SUFDakUsQ0FBQztJQWtDRCxpQ0FBRSxHQUFGLFVBQUcsU0FBNkIsRUFBRSxRQUFvQjtRQUNsRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGtCQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDakQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0wsMkJBQUM7QUFBRCxDQUFDLEFBdERELENBQTBDLGVBQU0sR0FzRC9DO0FBdERZLG9EQUFvQiJ9","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Locks = (function () {\r\n function Locks() {\r\n this.locks = {};\r\n }\r\n Locks.prototype.add = function (id, x) {\r\n this.locks[id] = x;\r\n };\r\n Locks.prototype.clear = function () {\r\n this.locks = {};\r\n };\r\n Locks.prototype.isEmpty = function () {\r\n for (var l in this.locks)\r\n return false;\r\n return true;\r\n };\r\n Locks.prototype.apply = function (f) {\r\n for (var l in this.locks) {\r\n f(Number(l), this.locks[l]);\r\n }\r\n };\r\n return Locks;\r\n}());\r\nexports.Locks = Locks;\r\nvar Descent = (function () {\r\n function Descent(x, D, G) {\r\n if (G === void 0) { G = null; }\r\n this.D = D;\r\n this.G = G;\r\n this.threshold = 0.0001;\r\n this.numGridSnapNodes = 0;\r\n this.snapGridSize = 100;\r\n this.snapStrength = 1000;\r\n this.scaleSnapByMaxH = false;\r\n this.random = new PseudoRandom();\r\n this.project = null;\r\n this.x = x;\r\n this.k = x.length;\r\n var n = this.n = x[0].length;\r\n this.H = new Array(this.k);\r\n this.g = new Array(this.k);\r\n this.Hd = new Array(this.k);\r\n this.a = new Array(this.k);\r\n this.b = new Array(this.k);\r\n this.c = new Array(this.k);\r\n this.d = new Array(this.k);\r\n this.e = new Array(this.k);\r\n this.ia = new Array(this.k);\r\n this.ib = new Array(this.k);\r\n this.xtmp = new Array(this.k);\r\n this.locks = new Locks();\r\n this.minD = Number.MAX_VALUE;\r\n var i = n, j;\r\n while (i--) {\r\n j = n;\r\n while (--j > i) {\r\n var d = D[i][j];\r\n if (d > 0 && d < this.minD) {\r\n this.minD = d;\r\n }\r\n }\r\n }\r\n if (this.minD === Number.MAX_VALUE)\r\n this.minD = 1;\r\n i = this.k;\r\n while (i--) {\r\n this.g[i] = new Array(n);\r\n this.H[i] = new Array(n);\r\n j = n;\r\n while (j--) {\r\n this.H[i][j] = new Array(n);\r\n }\r\n this.Hd[i] = new Array(n);\r\n this.a[i] = new Array(n);\r\n this.b[i] = new Array(n);\r\n this.c[i] = new Array(n);\r\n this.d[i] = new Array(n);\r\n this.e[i] = new Array(n);\r\n this.ia[i] = new Array(n);\r\n this.ib[i] = new Array(n);\r\n this.xtmp[i] = new Array(n);\r\n }\r\n }\r\n Descent.createSquareMatrix = function (n, f) {\r\n var M = new Array(n);\r\n for (var i = 0; i < n; ++i) {\r\n M[i] = new Array(n);\r\n for (var j = 0; j < n; ++j) {\r\n M[i][j] = f(i, j);\r\n }\r\n }\r\n return M;\r\n };\r\n Descent.prototype.offsetDir = function () {\r\n var _this = this;\r\n var u = new Array(this.k);\r\n var l = 0;\r\n for (var i = 0; i < this.k; ++i) {\r\n var x = u[i] = this.random.getNextBetween(0.01, 1) - 0.5;\r\n l += x * x;\r\n }\r\n l = Math.sqrt(l);\r\n return u.map(function (x) { return x *= _this.minD / l; });\r\n };\r\n Descent.prototype.computeDerivatives = function (x) {\r\n var _this = this;\r\n var n = this.n;\r\n if (n < 1)\r\n return;\r\n var i;\r\n var d = new Array(this.k);\r\n var d2 = new Array(this.k);\r\n var Huu = new Array(this.k);\r\n var maxH = 0;\r\n for (var u = 0; u < n; ++u) {\r\n for (i = 0; i < this.k; ++i)\r\n Huu[i] = this.g[i][u] = 0;\r\n for (var v = 0; v < n; ++v) {\r\n if (u === v)\r\n continue;\r\n var maxDisplaces = n;\r\n while (maxDisplaces--) {\r\n var sd2 = 0;\r\n for (i = 0; i < this.k; ++i) {\r\n var dx = d[i] = x[i][u] - x[i][v];\r\n sd2 += d2[i] = dx * dx;\r\n }\r\n if (sd2 > 1e-9)\r\n break;\r\n var rd = this.offsetDir();\r\n for (i = 0; i < this.k; ++i)\r\n x[i][v] += rd[i];\r\n }\r\n var l = Math.sqrt(sd2);\r\n var D = this.D[u][v];\r\n var weight = this.G != null ? this.G[u][v] : 1;\r\n if (weight > 1 && l > D || !isFinite(D)) {\r\n for (i = 0; i < this.k; ++i)\r\n this.H[i][u][v] = 0;\r\n continue;\r\n }\r\n if (weight > 1) {\r\n weight = 1;\r\n }\r\n var D2 = D * D;\r\n var gs = 2 * weight * (l - D) / (D2 * l);\r\n var l3 = l * l * l;\r\n var hs = 2 * -weight / (D2 * l3);\r\n if (!isFinite(gs))\r\n console.log(gs);\r\n for (i = 0; i < this.k; ++i) {\r\n this.g[i][u] += d[i] * gs;\r\n Huu[i] -= this.H[i][u][v] = hs * (l3 + D * (d2[i] - sd2) + l * sd2);\r\n }\r\n }\r\n for (i = 0; i < this.k; ++i)\r\n maxH = Math.max(maxH, this.H[i][u][u] = Huu[i]);\r\n }\r\n var r = this.snapGridSize / 2;\r\n var g = this.snapGridSize;\r\n var w = this.snapStrength;\r\n var k = w / (r * r);\r\n var numNodes = this.numGridSnapNodes;\r\n for (var u = 0; u < numNodes; ++u) {\r\n for (i = 0; i < this.k; ++i) {\r\n var xiu = this.x[i][u];\r\n var m = xiu / g;\r\n var f = m % 1;\r\n var q = m - f;\r\n var a = Math.abs(f);\r\n var dx = (a <= 0.5) ? xiu - q * g :\r\n (xiu > 0) ? xiu - (q + 1) * g : xiu - (q - 1) * g;\r\n if (-r < dx && dx <= r) {\r\n if (this.scaleSnapByMaxH) {\r\n this.g[i][u] += maxH * k * dx;\r\n this.H[i][u][u] += maxH * k;\r\n }\r\n else {\r\n this.g[i][u] += k * dx;\r\n this.H[i][u][u] += k;\r\n }\r\n }\r\n }\r\n }\r\n if (!this.locks.isEmpty()) {\r\n this.locks.apply(function (u, p) {\r\n for (i = 0; i < _this.k; ++i) {\r\n _this.H[i][u][u] += maxH;\r\n _this.g[i][u] -= maxH * (p[i] - x[i][u]);\r\n }\r\n });\r\n }\r\n };\r\n Descent.dotProd = function (a, b) {\r\n var x = 0, i = a.length;\r\n while (i--)\r\n x += a[i] * b[i];\r\n return x;\r\n };\r\n Descent.rightMultiply = function (m, v, r) {\r\n var i = m.length;\r\n while (i--)\r\n r[i] = Descent.dotProd(m[i], v);\r\n };\r\n Descent.prototype.computeStepSize = function (d) {\r\n var numerator = 0, denominator = 0;\r\n for (var i = 0; i < this.k; ++i) {\r\n numerator += Descent.dotProd(this.g[i], d[i]);\r\n Descent.rightMultiply(this.H[i], d[i], this.Hd[i]);\r\n denominator += Descent.dotProd(d[i], this.Hd[i]);\r\n }\r\n if (denominator === 0 || !isFinite(denominator))\r\n return 0;\r\n return 1 * numerator / denominator;\r\n };\r\n Descent.prototype.reduceStress = function () {\r\n this.computeDerivatives(this.x);\r\n var alpha = this.computeStepSize(this.g);\r\n for (var i = 0; i < this.k; ++i) {\r\n this.takeDescentStep(this.x[i], this.g[i], alpha);\r\n }\r\n return this.computeStress();\r\n };\r\n Descent.copy = function (a, b) {\r\n var m = a.length, n = b[0].length;\r\n for (var i = 0; i < m; ++i) {\r\n for (var j = 0; j < n; ++j) {\r\n b[i][j] = a[i][j];\r\n }\r\n }\r\n };\r\n Descent.prototype.stepAndProject = function (x0, r, d, stepSize) {\r\n Descent.copy(x0, r);\r\n this.takeDescentStep(r[0], d[0], stepSize);\r\n if (this.project)\r\n this.project[0](x0[0], x0[1], r[0]);\r\n this.takeDescentStep(r[1], d[1], stepSize);\r\n if (this.project)\r\n this.project[1](r[0], x0[1], r[1]);\r\n for (var i = 2; i < this.k; i++)\r\n this.takeDescentStep(r[i], d[i], stepSize);\r\n };\r\n Descent.mApply = function (m, n, f) {\r\n var i = m;\r\n while (i-- > 0) {\r\n var j = n;\r\n while (j-- > 0)\r\n f(i, j);\r\n }\r\n };\r\n Descent.prototype.matrixApply = function (f) {\r\n Descent.mApply(this.k, this.n, f);\r\n };\r\n Descent.prototype.computeNextPosition = function (x0, r) {\r\n var _this = this;\r\n this.computeDerivatives(x0);\r\n var alpha = this.computeStepSize(this.g);\r\n this.stepAndProject(x0, r, this.g, alpha);\r\n if (this.project) {\r\n this.matrixApply(function (i, j) { return _this.e[i][j] = x0[i][j] - r[i][j]; });\r\n var beta = this.computeStepSize(this.e);\r\n beta = Math.max(0.2, Math.min(beta, 1));\r\n this.stepAndProject(x0, r, this.e, beta);\r\n }\r\n };\r\n Descent.prototype.run = function (iterations) {\r\n var stress = Number.MAX_VALUE, converged = false;\r\n while (!converged && iterations-- > 0) {\r\n var s = this.rungeKutta();\r\n converged = Math.abs(stress / s - 1) < this.threshold;\r\n stress = s;\r\n }\r\n return stress;\r\n };\r\n Descent.prototype.rungeKutta = function () {\r\n var _this = this;\r\n this.computeNextPosition(this.x, this.a);\r\n Descent.mid(this.x, this.a, this.ia);\r\n this.computeNextPosition(this.ia, this.b);\r\n Descent.mid(this.x, this.b, this.ib);\r\n this.computeNextPosition(this.ib, this.c);\r\n this.computeNextPosition(this.c, this.d);\r\n var disp = 0;\r\n this.matrixApply(function (i, j) {\r\n var x = (_this.a[i][j] + 2.0 * _this.b[i][j] + 2.0 * _this.c[i][j] + _this.d[i][j]) / 6.0, d = _this.x[i][j] - x;\r\n disp += d * d;\r\n _this.x[i][j] = x;\r\n });\r\n return disp;\r\n };\r\n Descent.mid = function (a, b, m) {\r\n Descent.mApply(a.length, a[0].length, function (i, j) {\r\n return m[i][j] = a[i][j] + (b[i][j] - a[i][j]) / 2.0;\r\n });\r\n };\r\n Descent.prototype.takeDescentStep = function (x, d, stepSize) {\r\n for (var i = 0; i < this.n; ++i) {\r\n x[i] = x[i] - stepSize * d[i];\r\n }\r\n };\r\n Descent.prototype.computeStress = function () {\r\n var stress = 0;\r\n for (var u = 0, nMinus1 = this.n - 1; u < nMinus1; ++u) {\r\n for (var v = u + 1, n = this.n; v < n; ++v) {\r\n var l = 0;\r\n for (var i = 0; i < this.k; ++i) {\r\n var dx = this.x[i][u] - this.x[i][v];\r\n l += dx * dx;\r\n }\r\n l = Math.sqrt(l);\r\n var d = this.D[u][v];\r\n if (!isFinite(d))\r\n continue;\r\n var rl = d - l;\r\n var d2 = d * d;\r\n stress += rl * rl / d2;\r\n }\r\n }\r\n return stress;\r\n };\r\n Descent.zeroDistance = 1e-10;\r\n return Descent;\r\n}());\r\nexports.Descent = Descent;\r\nvar PseudoRandom = (function () {\r\n function PseudoRandom(seed) {\r\n if (seed === void 0) { seed = 1; }\r\n this.seed = seed;\r\n this.a = 214013;\r\n this.c = 2531011;\r\n this.m = 2147483648;\r\n this.range = 32767;\r\n }\r\n PseudoRandom.prototype.getNext = function () {\r\n this.seed = (this.seed * this.a + this.c) % this.m;\r\n return (this.seed >> 16) / this.range;\r\n };\r\n PseudoRandom.prototype.getNextBetween = function (min, max) {\r\n return min + this.getNext() * (max - min);\r\n };\r\n return PseudoRandom;\r\n}());\r\nexports.PseudoRandom = PseudoRandom;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2Rlc2NlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJSTtJQUFBO1FBQ0ksVUFBSyxHQUE2QixFQUFFLENBQUM7SUFvQ3pDLENBQUM7SUE3QkcsbUJBQUcsR0FBSCxVQUFJLEVBQVUsRUFBRSxDQUFXO1FBSXZCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxxQkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUtELHVCQUFPLEdBQVA7UUFDSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUtELHFCQUFLLEdBQUwsVUFBTSxDQUFvQztRQUN0QyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBQ0wsWUFBQztBQUFELENBQUMsQUFyQ0QsSUFxQ0M7QUFyQ1ksc0JBQUs7QUFpRGxCO0lBNkRJLGlCQUFZLENBQWEsRUFBUyxDQUFhLEVBQVMsQ0FBbUI7UUFBbkIsa0JBQUEsRUFBQSxRQUFtQjtRQUF6QyxNQUFDLEdBQUQsQ0FBQyxDQUFZO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBa0I7UUE1RHBFLGNBQVMsR0FBVyxNQUFNLENBQUM7UUEyQzNCLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUM3QixpQkFBWSxHQUFXLEdBQUcsQ0FBQztRQUMzQixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM1QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVoQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU3QixZQUFPLEdBQTBELElBQUksQ0FBQztRQVd6RSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUNSLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ1gsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ04sT0FBTyxDQUFDLEVBQUUsRUFBRTtnQkFDUixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRWEsMEJBQWtCLEdBQWhDLFVBQWlDLENBQVMsRUFBRSxDQUFtQztRQUMzRSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxF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QUFDO29CQUMxQixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pEO2dCQUNELElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNyQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNqRCxTQUFTO2lCQUNaO2dCQUNELElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDWixNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUNkO2dCQUNELElBQUksRUFBRSxHQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxHQUFXLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksRUFBRSxHQUFHLENBQUMs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","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar rectangle_1 = require(\"./rectangle\");\r\nvar Point = (function () {\r\n function Point() {\r\n }\r\n return Point;\r\n}());\r\nexports.Point = Point;\r\nvar LineSegment = (function () {\r\n function LineSegment(x1, y1, x2, y2) {\r\n this.x1 = x1;\r\n this.y1 = y1;\r\n this.x2 = x2;\r\n this.y2 = y2;\r\n }\r\n return LineSegment;\r\n}());\r\nexports.LineSegment = LineSegment;\r\nvar PolyPoint = (function (_super) {\r\n __extends(PolyPoint, _super);\r\n function PolyPoint() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return PolyPoint;\r\n}(Point));\r\nexports.PolyPoint = PolyPoint;\r\nfunction isLeft(P0, P1, P2) {\r\n return (P1.x - P0.x) * (P2.y - P0.y) - (P2.x - P0.x) * (P1.y - P0.y);\r\n}\r\nexports.isLeft = isLeft;\r\nfunction above(p, vi, vj) {\r\n return isLeft(p, vi, vj) > 0;\r\n}\r\nfunction below(p, vi, vj) {\r\n return isLeft(p, vi, vj) < 0;\r\n}\r\nfunction ConvexHull(S) {\r\n var P = S.slice(0).sort(function (a, b) { return a.x !== b.x ? b.x - a.x : b.y - a.y; });\r\n var n = S.length, i;\r\n var minmin = 0;\r\n var xmin = P[0].x;\r\n for (i = 1; i < n; ++i) {\r\n if (P[i].x !== xmin)\r\n break;\r\n }\r\n var minmax = i - 1;\r\n var H = [];\r\n H.push(P[minmin]);\r\n if (minmax === n - 1) {\r\n if (P[minmax].y !== P[minmin].y)\r\n H.push(P[minmax]);\r\n }\r\n else {\r\n var maxmin, maxmax = n - 1;\r\n var xmax = P[n - 1].x;\r\n for (i = n - 2; i >= 0; i--)\r\n if (P[i].x !== xmax)\r\n break;\r\n maxmin = i + 1;\r\n i = minmax;\r\n while (++i <= maxmin) {\r\n if (isLeft(P[minmin], P[maxmin], P[i]) >= 0 && i < maxmin)\r\n continue;\r\n while (H.length > 1) {\r\n if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0)\r\n break;\r\n else\r\n H.length -= 1;\r\n }\r\n if (i != minmin)\r\n H.push(P[i]);\r\n }\r\n if (maxmax != maxmin)\r\n H.push(P[maxmax]);\r\n var bot = H.length;\r\n i = maxmin;\r\n while (--i >= minmax) {\r\n if (isLeft(P[maxmax], P[minmax], P[i]) >= 0 && i > minmax)\r\n continue;\r\n while (H.length > bot) {\r\n if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0)\r\n break;\r\n else\r\n H.length -= 1;\r\n }\r\n if (i != minmin)\r\n H.push(P[i]);\r\n }\r\n }\r\n return H;\r\n}\r\nexports.ConvexHull = ConvexHull;\r\nfunction clockwiseRadialSweep(p, P, f) {\r\n P.slice(0).sort(function (a, b) { return Math.atan2(a.y - p.y, a.x - p.x) - Math.atan2(b.y - p.y, b.x - p.x); }).forEach(f);\r\n}\r\nexports.clockwiseRadialSweep = clockwiseRadialSweep;\r\nfunction nextPolyPoint(p, ps) {\r\n if (p.polyIndex === ps.length - 1)\r\n return ps[0];\r\n return ps[p.polyIndex + 1];\r\n}\r\nfunction prevPolyPoint(p, ps) {\r\n if (p.polyIndex === 0)\r\n return ps[ps.length - 1];\r\n return ps[p.polyIndex - 1];\r\n}\r\nfunction tangent_PointPolyC(P, V) {\r\n var Vclosed = V.slice(0);\r\n Vclosed.push(V[0]);\r\n return { rtan: Rtangent_PointPolyC(P, Vclosed), ltan: Ltangent_PointPolyC(P, Vclosed) };\r\n}\r\nfunction Rtangent_PointPolyC(P, V) {\r\n var n = V.length - 1;\r\n var a, b, c;\r\n var upA, dnC;\r\n if (below(P, V[1], V[0]) && !above(P, V[n - 1], V[0]))\r\n return 0;\r\n for (a = 0, b = n;;) {\r\n if (b - a === 1)\r\n if (above(P, V[a], V[b]))\r\n return a;\r\n else\r\n return b;\r\n c = Math.floor((a + b) / 2);\r\n dnC = below(P, V[c + 1], V[c]);\r\n if (dnC && !above(P, V[c - 1], V[c]))\r\n return c;\r\n upA = above(P, V[a + 1], V[a]);\r\n if (upA) {\r\n if (dnC)\r\n b = c;\r\n else {\r\n if (above(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n else {\r\n if (!dnC)\r\n a = c;\r\n else {\r\n if (below(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n }\r\n}\r\nfunction Ltangent_PointPolyC(P, V) {\r\n var n = V.length - 1;\r\n var a, b, c;\r\n var dnA, dnC;\r\n if (above(P, V[n - 1], V[0]) && !below(P, V[1], V[0]))\r\n return 0;\r\n for (a = 0, b = n;;) {\r\n if (b - a === 1)\r\n if (below(P, V[a], V[b]))\r\n return a;\r\n else\r\n return b;\r\n c = Math.floor((a + b) / 2);\r\n dnC = below(P, V[c + 1], V[c]);\r\n if (above(P, V[c - 1], V[c]) && !dnC)\r\n return c;\r\n dnA = below(P, V[a + 1], V[a]);\r\n if (dnA) {\r\n if (!dnC)\r\n b = c;\r\n else {\r\n if (below(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n else {\r\n if (dnC)\r\n a = c;\r\n else {\r\n if (above(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n }\r\n}\r\nfunction tangent_PolyPolyC(V, W, t1, t2, cmp1, cmp2) {\r\n var ix1, ix2;\r\n ix1 = t1(W[0], V);\r\n ix2 = t2(V[ix1], W);\r\n var done = false;\r\n while (!done) {\r\n done = true;\r\n while (true) {\r\n if (ix1 === V.length - 1)\r\n ix1 = 0;\r\n if (cmp1(W[ix2], V[ix1], V[ix1 + 1]))\r\n break;\r\n ++ix1;\r\n }\r\n while (true) {\r\n if (ix2 === 0)\r\n ix2 = W.length - 1;\r\n if (cmp2(V[ix1], W[ix2], W[ix2 - 1]))\r\n break;\r\n --ix2;\r\n done = false;\r\n }\r\n }\r\n return { t1: ix1, t2: ix2 };\r\n}\r\nexports.tangent_PolyPolyC = tangent_PolyPolyC;\r\nfunction LRtangent_PolyPolyC(V, W) {\r\n var rl = RLtangent_PolyPolyC(W, V);\r\n return { t1: rl.t2, t2: rl.t1 };\r\n}\r\nexports.LRtangent_PolyPolyC = LRtangent_PolyPolyC;\r\nfunction RLtangent_PolyPolyC(V, W) {\r\n return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Ltangent_PointPolyC, above, below);\r\n}\r\nexports.RLtangent_PolyPolyC = RLtangent_PolyPolyC;\r\nfunction LLtangent_PolyPolyC(V, W) {\r\n return tangent_PolyPolyC(V, W, Ltangent_PointPolyC, Ltangent_PointPolyC, below, below);\r\n}\r\nexports.LLtangent_PolyPolyC = LLtangent_PolyPolyC;\r\nfunction RRtangent_PolyPolyC(V, W) {\r\n return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Rtangent_PointPolyC, above, above);\r\n}\r\nexports.RRtangent_PolyPolyC = RRtangent_PolyPolyC;\r\nvar BiTangent = (function () {\r\n function BiTangent(t1, t2) {\r\n this.t1 = t1;\r\n this.t2 = t2;\r\n }\r\n return BiTangent;\r\n}());\r\nexports.BiTangent = BiTangent;\r\nvar BiTangents = (function () {\r\n function BiTangents() {\r\n }\r\n return BiTangents;\r\n}());\r\nexports.BiTangents = BiTangents;\r\nvar TVGPoint = (function (_super) {\r\n __extends(TVGPoint, _super);\r\n function TVGPoint() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return TVGPoint;\r\n}(Point));\r\nexports.TVGPoint = TVGPoint;\r\nvar VisibilityVertex = (function () {\r\n function VisibilityVertex(id, polyid, polyvertid, p) {\r\n this.id = id;\r\n this.polyid = polyid;\r\n this.polyvertid = polyvertid;\r\n this.p = p;\r\n p.vv = this;\r\n }\r\n return VisibilityVertex;\r\n}());\r\nexports.VisibilityVertex = VisibilityVertex;\r\nvar VisibilityEdge = (function () {\r\n function VisibilityEdge(source, target) {\r\n this.source = source;\r\n this.target = target;\r\n }\r\n VisibilityEdge.prototype.length = function () {\r\n var dx = this.source.p.x - this.target.p.x;\r\n var dy = this.source.p.y - this.target.p.y;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n };\r\n return VisibilityEdge;\r\n}());\r\nexports.VisibilityEdge = VisibilityEdge;\r\nvar TangentVisibilityGraph = (function () {\r\n function TangentVisibilityGraph(P, g0) {\r\n this.P = P;\r\n this.V = [];\r\n this.E = [];\r\n if (!g0) {\r\n var n = P.length;\r\n for (var i = 0; i < n; i++) {\r\n var p = P[i];\r\n for (var j = 0; j < p.length; ++j) {\r\n var pj = p[j], vv = new VisibilityVertex(this.V.length, i, j, pj);\r\n this.V.push(vv);\r\n if (j > 0)\r\n this.E.push(new VisibilityEdge(p[j - 1].vv, vv));\r\n }\r\n if (p.length > 1)\r\n this.E.push(new VisibilityEdge(p[0].vv, p[p.length - 1].vv));\r\n }\r\n for (var i = 0; i < n - 1; i++) {\r\n var Pi = P[i];\r\n for (var j = i + 1; j < n; j++) {\r\n var Pj = P[j], t = tangents(Pi, Pj);\r\n for (var q in t) {\r\n var c = t[q], source = Pi[c.t1], target = Pj[c.t2];\r\n this.addEdgeIfVisible(source, target, i, j);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.V = g0.V.slice(0);\r\n this.E = g0.E.slice(0);\r\n }\r\n }\r\n TangentVisibilityGraph.prototype.addEdgeIfVisible = function (u, v, i1, i2) {\r\n if (!this.intersectsPolys(new LineSegment(u.x, u.y, v.x, v.y), i1, i2)) {\r\n this.E.push(new VisibilityEdge(u.vv, v.vv));\r\n }\r\n };\r\n TangentVisibilityGraph.prototype.addPoint = function (p, i1) {\r\n var n = this.P.length;\r\n this.V.push(new VisibilityVertex(this.V.length, n, 0, p));\r\n for (var i = 0; i < n; ++i) {\r\n if (i === i1)\r\n continue;\r\n var poly = this.P[i], t = tangent_PointPolyC(p, poly);\r\n this.addEdgeIfVisible(p, poly[t.ltan], i1, i);\r\n this.addEdgeIfVisible(p, poly[t.rtan], i1, i);\r\n }\r\n return p.vv;\r\n };\r\n TangentVisibilityGraph.prototype.intersectsPolys = function (l, i1, i2) {\r\n for (var i = 0, n = this.P.length; i < n; ++i) {\r\n if (i != i1 && i != i2 && intersects(l, this.P[i]).length > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return TangentVisibilityGraph;\r\n}());\r\nexports.TangentVisibilityGraph = TangentVisibilityGraph;\r\nfunction intersects(l, P) {\r\n var ints = [];\r\n for (var i = 1, n = P.length; i < n; ++i) {\r\n var int = rectangle_1.Rectangle.lineIntersection(l.x1, l.y1, l.x2, l.y2, P[i - 1].x, P[i - 1].y, P[i].x, P[i].y);\r\n if (int)\r\n ints.push(int);\r\n }\r\n return ints;\r\n}\r\nfunction tangents(V, W) {\r\n var m = V.length - 1, n = W.length - 1;\r\n var bt = new BiTangents();\r\n for (var i = 0; i < m; ++i) {\r\n for (var j = 0; j < n; ++j) {\r\n var v1 = V[i == 0 ? m - 1 : i - 1];\r\n var v2 = V[i];\r\n var v3 = V[i + 1];\r\n var w1 = W[j == 0 ? n - 1 : j - 1];\r\n var w2 = W[j];\r\n var w3 = W[j + 1];\r\n var v1v2w2 = isLeft(v1, v2, w2);\r\n var v2w1w2 = isLeft(v2, w1, w2);\r\n var v2w2w3 = isLeft(v2, w2, w3);\r\n var w1w2v2 = isLeft(w1, w2, v2);\r\n var w2v1v2 = isLeft(w2, v1, v2);\r\n var w2v2v3 = isLeft(w2, v2, v3);\r\n if (v1v2w2 >= 0 && v2w1w2 >= 0 && v2w2w3 < 0\r\n && w1w2v2 >= 0 && w2v1v2 >= 0 && w2v2v3 < 0) {\r\n bt.ll = new BiTangent(i, j);\r\n }\r\n else if (v1v2w2 <= 0 && v2w1w2 <= 0 && v2w2w3 > 0\r\n && w1w2v2 <= 0 && w2v1v2 <= 0 && w2v2v3 > 0) {\r\n bt.rr = new BiTangent(i, j);\r\n }\r\n else if (v1v2w2 <= 0 && v2w1w2 > 0 && v2w2w3 <= 0\r\n && w1w2v2 >= 0 && w2v1v2 < 0 && w2v2v3 >= 0) {\r\n bt.rl = new BiTangent(i, j);\r\n }\r\n else if (v1v2w2 >= 0 && v2w1w2 < 0 && v2w2w3 >= 0\r\n && w1w2v2 <= 0 && w2v1v2 > 0 && w2v2v3 <= 0) {\r\n bt.lr = new BiTangent(i, j);\r\n }\r\n }\r\n }\r\n return bt;\r\n}\r\nexports.tangents = tangents;\r\nfunction isPointInsidePoly(p, poly) {\r\n for (var i = 1, n = poly.length; i < n; ++i)\r\n if (below(poly[i - 1], poly[i], p))\r\n return false;\r\n return true;\r\n}\r\nfunction isAnyPInQ(p, q) {\r\n return !p.every(function (v) { return !isPointInsidePoly(v, q); });\r\n}\r\nfunction polysOverlap(p, q) {\r\n if (isAnyPInQ(p, q))\r\n return true;\r\n if (isAnyPInQ(q, p))\r\n return true;\r\n for (var i = 1, n = p.length; i < n; ++i) {\r\n var v = p[i], u = p[i - 1];\r\n if (intersects(new LineSegment(u.x, u.y, v.x, v.y), q).length > 0)\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.polysOverlap = polysOverlap;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2dlb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXFDO0FBQ2pDO0lBQUE7SUFHQSxDQUFDO0lBQUQsWUFBQztBQUFELENBQUMsQUFIRCxJQUdDO0FBSFksc0JBQUs7QUFLbEI7SUFDSSxxQkFBbUIsRUFBVSxFQUFTLEVBQVUsRUFBUyxFQUFVLEVBQVMsRUFBVTtRQUFuRSxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFRO0lBQUksQ0FBQztJQUMvRixrQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksa0NBQVc7QUFJeEI7SUFBK0IsNkJBQUs7SUFBcEM7O0lBRUEsQ0FBQztJQUFELGdCQUFDO0FBQUQsQ0FBQyxBQUZELENBQStCLEtBQUssR0FFbkM7QUFGWSw4QkFBUztBQVV0QixTQUFnQixNQUFNLENBQUMsRUFBUyxFQUFFLEVBQVMsRUFBRSxFQUFTO0lBQ2xELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRkQsd0JBRUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxDQUFRLEVBQUUsRUFBUyxFQUFFLEVBQVM7SUFDekMsT0FBTyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVE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SSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFHckIsSUFBSSxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsQ0FBQztJQUNwQyxJQUFJLEdBQVksRUFBRSxHQUFZLENBQUM7SUFJL0IsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsT0FBTyxDQUFDLENBQUM7SUFFYixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSztRQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUNYLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixPQUFPLENBQUMsQ0FBQzs7Z0JBRVQsT0FBTyxDQUFDLENBQUM7UUFFakIsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUIsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsT0FBTyxDQUFDLENBQUM7UUFJYixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMs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"],"names":["__export","m","p","exports","hasOwnProperty","Object","defineProperty","value","extendStatics","__extends","this","d","b","setPrototypeOf","__proto__","Array","__","constructor","prototype","create","layout_1","LayoutAdaptor","_super","options","_this","call","o","trigger","kick","drag","on","dragstart","dragStart","Layout","dragend","dragEnd","e","eventType","listener","adaptor","gridrouter_1","gridify","pgLayout","nudgeGap","margin","groupMargin","cola","start","nodes","groups","forEach","routerNode","name","bounds","inflate","children","map","c","length","id","concat","leaves","index","gridRouterNodes","i","GridRouter","getChildren","v","getBounds","route","routeEdges","powerGraph","powerEdges","source","target","powerGraphGridLayout","graph","size","grouppadding","avoidOverlaps","links","powerGraphGroups","padding","n","edges","vs","slice","g","sourceInd","push","gg","linkDistance","symmetricDiffLinkLengths","convergenceThreshold","groupCompactness","d3v3","d3v4","d3adaptor","d3Context","version","match","isD3V3","D3StyleLayoutAdaptor","event","d3","dispatch","EventType","tick","end","d3layout","behavior","origin","dragOrigin","resume","arguments","d3event","type","alpha","stress","timer","subject","t","stop","Locks","locks","add","x","clear","isEmpty","l","apply","f","Number","Descent","D","G","threshold","numGridSnapNodes","snapGridSize","snapStrength","scaleSnapByMaxH","random","PseudoRandom","project","k","H","Hd","a","ia","ib","xtmp","minD","MAX_VALUE","j","createSquareMatrix","M","offsetDir","u","getNextBetween","Math","sqrt","computeDerivatives","d2","Huu","maxH","maxDisplaces","sd2","dx","rd","weight","isFinite","D2","gs","l3","hs","console","log","max","r","numNodes","xiu","q","abs","dotProd","rightMultiply","computeStepSize","numerator","denominator","reduceStress","takeDescentStep","computeStress","copy","stepAndProject","x0","stepSize","mApply","matrixApply","computeNextPosition","beta","min","run","iterations","converged","s","rungeKutta","mid","disp","nMinus1","rl","zeroDistance","seed","range","getNext","rectangle_1","Point","LineSegment","x1","y1","x2","y2","PolyPoint","isLeft","P0","P1","P2","y","above","vi","vj","below","Rtangent_PointPolyC","P","V","dnC","floor","Ltangent_PointPolyC","tangent_PolyPolyC","W","t1","t2","cmp1","cmp2","ix1","ix2","done","RLtangent_PolyPolyC","ConvexHull","S","sort","xmin","minmax","maxmin","maxmax","xmax","bot","clockwiseRadialSweep","atan2","LRtangent_PolyPolyC","LLtangent_PolyPolyC","RRtangent_PolyPolyC","BiTangent","BiTangents","TVGPoint","VisibilityVertex","polyid","polyvertid","vv","VisibilityEdge","dy","TangentVisibilityGraph","g0","E","pj","Pi","Pj","tangents","addEdgeIfVisible","i1","i2","intersectsPolys","addPoint","Vclosed","poly","rtan","ltan","intersects","ints","int","Rectangle","lineIntersection","bt","v1","v2","v3","w1","w2","w3","v1v2w2","v2w1w2","v2w2w3","w1w2v2","w2v1v2","w2v2v3","ll","rr","lr","isAnyPInQ","every","isPointInsidePoly","polysOverlap"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/2.4709de54.js b/_static/kpm/js/2.4709de54.js new file mode 100644 index 00000000..85341a06 --- /dev/null +++ b/_static/kpm/js/2.4709de54.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[2],{23002:(t,e,s)=>{s.d(e,{NO:()=>Ot,Vr:()=>P,ZP:()=>St});var o,n=s(66252),a=s(49963),i=s(2262),r=s(3577),c=Object.defineProperty,l=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,d=Object.prototype.propertyIsEnumerable,h=(t,e,s)=>e in t?c(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,p=(t,e)=>{for(var s in e||(e={}))u.call(e,s)&&h(t,s,e[s]);if(l)for(var s of l(e))d.call(e,s)&&h(t,s,e[s]);return t},g=t=>"function"==typeof t,m=t=>"string"==typeof t,f=t=>m(t)&&t.trim().length>0,v=t=>void 0===t,T=t=>"object"==typeof t&&null!==t,b=t=>window.TouchEvent&&t instanceof TouchEvent,y=t=>w(t,"component")&&C(t.component),C=t=>{return!v(t)&&(m(t)||g(e=t)||T(e)||y(t));var e},O=t=>T(t)&&["height","width","right","left","top","bottom"].every((e=>"number"==typeof t[e])),w=(t,e)=>(T(t)||g(t))&&e in t,D=(o=0,()=>o++);function S(t){return b(t)?t.targetTouches[0].clientX:t.clientX}function E(t){return b(t)?t.targetTouches[0].clientY:t.clientY}var R,_,P,B,I,L,x=t=>y(t)?x(t.component):(t=>w(t,"tag")&&f(t.tag))(t)?(0,n.aZ)({render:()=>t}):"string"==typeof t?t:(0,i.IU)((0,i.SU)(t)),N=()=>"undefined"!=typeof window,A=class{constructor(){this.allHandlers={}}getHandlers(t){return this.allHandlers[t]||[]}on(t,e){const s=this.getHandlers(t);s.push(e),this.allHandlers[t]=s}off(t,e){const s=this.getHandlers(t);s.splice(s.indexOf(e)>>>0,1)}emit(t,e){this.getHandlers(t).forEach((t=>t(e)))}},j=t=>["on","off","emit"].every((e=>w(t,e)&&g(t[e])));(_=R||(R={})).SUCCESS="success",_.ERROR="error",_.WARNING="warning",_.INFO="info",_.DEFAULT="default",(B=P||(P={})).TOP_LEFT="top-left",B.TOP_CENTER="top-center",B.TOP_RIGHT="top-right",B.BOTTOM_LEFT="bottom-left",B.BOTTOM_CENTER="bottom-center",B.BOTTOM_RIGHT="bottom-right",(L=I||(I={})).ADD="add",L.DISMISS="dismiss",L.UPDATE="update",L.CLEAR="clear",L.UPDATE_DEFAULTS="update_defaults";var k="Vue-Toastification",$={type:{type:String,default:R.DEFAULT},classNames:{type:[String,Array],default:()=>[]},trueBoolean:{type:Boolean,default:!0}},H={type:$.type,customIcon:{type:[String,Boolean,Object,Function],default:!0}},M={component:{type:[String,Object,Function,Boolean],default:"button"},classNames:$.classNames,showOnHover:{type:Boolean,default:!1},ariaLabel:{type:String,default:"close"}},F={timeout:{type:[Number,Boolean],default:5e3},hideProgressBar:{type:Boolean,default:!1},isRunning:{type:Boolean,default:!1}},U={transition:{type:[Object,String],default:`${k}__bounce`}},V={CORE_TOAST:{position:{type:String,default:P.TOP_RIGHT},draggable:$.trueBoolean,draggablePercent:{type:Number,default:.6},pauseOnFocusLoss:$.trueBoolean,pauseOnHover:$.trueBoolean,closeOnClick:$.trueBoolean,timeout:F.timeout,hideProgressBar:F.hideProgressBar,toastClassName:$.classNames,bodyClassName:$.classNames,icon:H.customIcon,closeButton:M.component,closeButtonClassName:M.classNames,showCloseButtonOnHover:M.showOnHover,accessibility:{type:Object,default:()=>({toastRole:"alert",closeButtonLabel:"close"})},rtl:{type:Boolean,default:!1},eventBus:{type:Object,required:!1,default:()=>new A}},TOAST:{id:{type:[String,Number],required:!0,default:0},type:$.type,content:{type:[String,Object,Function],required:!0,default:""},onClick:{type:Function,default:void 0},onClose:{type:Function,default:void 0}},CONTAINER:{container:{type:[Object,Function],default:()=>document.body},newestOnTop:$.trueBoolean,maxToasts:{type:Number,default:20},transition:U.transition,toastDefaults:Object,filterBeforeCreate:{type:Function,default:t=>t},filterToasts:{type:Function,default:t=>t},containerClassName:$.classNames,onMounted:Function,shareAppContext:[Boolean,Object]},PROGRESS_BAR:F,ICON:H,TRANSITION:U,CLOSE_BUTTON:M},z=(0,n.aZ)({name:"VtProgressBar",props:V.PROGRESS_BAR,data:()=>({hasClass:!0}),computed:{style(){return{animationDuration:`${this.timeout}ms`,animationPlayState:this.isRunning?"running":"paused",opacity:this.hideProgressBar?0:1}},cpClass(){return this.hasClass?`${k}__progress-bar`:""}},watch:{timeout(){this.hasClass=!1,this.$nextTick((()=>this.hasClass=!0))}},mounted(){this.$el.addEventListener("animationend",this.animationEnded)},beforeUnmount(){this.$el.removeEventListener("animationend",this.animationEnded)},methods:{animationEnded(){this.$emit("close-toast")}}});z.render=function(t,e){return(0,n.wg)(),(0,n.iD)("div",{style:(0,r.j5)(t.style),class:(0,r.C_)(t.cpClass)},null,6)};var G=z,Z=(0,n.aZ)({name:"VtCloseButton",props:V.CLOSE_BUTTON,computed:{buttonComponent(){return!1!==this.component?x(this.component):"button"},classes(){const t=[`${k}__close-button`];return this.showOnHover&&t.push("show-on-hover"),t.concat(this.classNames)}}}),q=(0,n.Uk)(" × ");Z.render=function(t,e){return(0,n.wg)(),(0,n.j4)((0,n.LL)(t.buttonComponent),(0,n.dG)({"aria-label":t.ariaLabel,class:t.classes},t.$attrs),{default:(0,n.w5)((()=>[q])),_:1},16,["aria-label","class"])};var W=Z,Y={},X={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"check-circle",class:"svg-inline--fa fa-check-circle fa-w-16",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},K=[(0,n._)("path",{fill:"currentColor",d:"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"},null,-1)];Y.render=function(t,e){return(0,n.wg)(),(0,n.iD)("svg",X,K)};var J=Y,Q={},tt={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"info-circle",class:"svg-inline--fa fa-info-circle fa-w-16",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},et=[(0,n._)("path",{fill:"currentColor",d:"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"},null,-1)];Q.render=function(t,e){return(0,n.wg)(),(0,n.iD)("svg",tt,et)};var st=Q,ot={},nt={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"exclamation-circle",class:"svg-inline--fa fa-exclamation-circle fa-w-16",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},at=[(0,n._)("path",{fill:"currentColor",d:"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"},null,-1)];ot.render=function(t,e){return(0,n.wg)(),(0,n.iD)("svg",nt,at)};var it=ot,rt={},ct={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"exclamation-triangle",class:"svg-inline--fa fa-exclamation-triangle fa-w-18",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},lt=[(0,n._)("path",{fill:"currentColor",d:"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"},null,-1)];rt.render=function(t,e){return(0,n.wg)(),(0,n.iD)("svg",ct,lt)};var ut=rt,dt=(0,n.aZ)({name:"VtIcon",props:V.ICON,computed:{customIconChildren(){return w(this.customIcon,"iconChildren")?this.trimValue(this.customIcon.iconChildren):""},customIconClass(){return m(this.customIcon)?this.trimValue(this.customIcon):w(this.customIcon,"iconClass")?this.trimValue(this.customIcon.iconClass):""},customIconTag(){return w(this.customIcon,"iconTag")?this.trimValue(this.customIcon.iconTag,"i"):"i"},hasCustomIcon(){return this.customIconClass.length>0},component(){return this.hasCustomIcon?this.customIconTag:C(this.customIcon)?x(this.customIcon):this.iconTypeComponent},iconTypeComponent(){return{[R.DEFAULT]:st,[R.INFO]:st,[R.SUCCESS]:J,[R.ERROR]:ut,[R.WARNING]:it}[this.type]},iconClasses(){const t=[`${k}__icon`];return this.hasCustomIcon?t.concat(this.customIconClass):t}},methods:{trimValue:(t,e="")=>f(t)?t.trim():e}});dt.render=function(t,e){return(0,n.wg)(),(0,n.j4)((0,n.LL)(t.component),{class:(0,r.C_)(t.iconClasses)},{default:(0,n.w5)((()=>[(0,n.Uk)((0,r.zw)(t.customIconChildren),1)])),_:1},8,["class"])};var ht=dt,pt=(0,n.aZ)({name:"VtToast",components:{ProgressBar:G,CloseButton:W,Icon:ht},inheritAttrs:!1,props:Object.assign({},V.CORE_TOAST,V.TOAST),data:()=>({isRunning:!0,disableTransitions:!1,beingDragged:!1,dragStart:0,dragPos:{x:0,y:0},dragRect:{}}),computed:{classes(){const t=[`${k}__toast`,`${k}__toast--${this.type}`,`${this.position}`].concat(this.toastClassName);return this.disableTransitions&&t.push("disable-transition"),this.rtl&&t.push(`${k}__toast--rtl`),t},bodyClasses(){return[`${k}__toast-${m(this.content)?"body":"component-body"}`].concat(this.bodyClassName)},draggableStyle(){return this.dragStart===this.dragPos.x?{}:this.beingDragged?{transform:`translateX(${this.dragDelta}px)`,opacity:1-Math.abs(this.dragDelta/this.removalDistance)}:{transition:"transform 0.2s, opacity 0.2s",transform:"translateX(0)",opacity:1}},dragDelta(){return this.beingDragged?this.dragPos.x-this.dragStart:0},removalDistance(){return O(this.dragRect)?(this.dragRect.right-this.dragRect.left)*this.draggablePercent:0}},mounted(){this.draggable&&this.draggableSetup(),this.pauseOnFocusLoss&&this.focusSetup()},beforeUnmount(){this.draggable&&this.draggableCleanup(),this.pauseOnFocusLoss&&this.focusCleanup()},methods:{hasProp:w,getVueComponentFromObj:x,closeToast(){this.eventBus.emit(I.DISMISS,this.id)},clickHandler(){this.onClick&&this.onClick(this.closeToast),this.closeOnClick&&(this.beingDragged&&this.dragStart!==this.dragPos.x||this.closeToast())},timeoutHandler(){this.closeToast()},hoverPause(){this.pauseOnHover&&(this.isRunning=!1)},hoverPlay(){this.pauseOnHover&&(this.isRunning=!0)},focusPause(){this.isRunning=!1},focusPlay(){this.isRunning=!0},focusSetup(){addEventListener("blur",this.focusPause),addEventListener("focus",this.focusPlay)},focusCleanup(){removeEventListener("blur",this.focusPause),removeEventListener("focus",this.focusPlay)},draggableSetup(){const t=this.$el;t.addEventListener("touchstart",this.onDragStart,{passive:!0}),t.addEventListener("mousedown",this.onDragStart),addEventListener("touchmove",this.onDragMove,{passive:!1}),addEventListener("mousemove",this.onDragMove),addEventListener("touchend",this.onDragEnd),addEventListener("mouseup",this.onDragEnd)},draggableCleanup(){const t=this.$el;t.removeEventListener("touchstart",this.onDragStart),t.removeEventListener("mousedown",this.onDragStart),removeEventListener("touchmove",this.onDragMove),removeEventListener("mousemove",this.onDragMove),removeEventListener("touchend",this.onDragEnd),removeEventListener("mouseup",this.onDragEnd)},onDragStart(t){this.beingDragged=!0,this.dragPos={x:S(t),y:E(t)},this.dragStart=S(t),this.dragRect=this.$el.getBoundingClientRect()},onDragMove(t){this.beingDragged&&(t.preventDefault(),this.isRunning&&(this.isRunning=!1),this.dragPos={x:S(t),y:E(t)})},onDragEnd(){this.beingDragged&&(Math.abs(this.dragDelta)>=this.removalDistance?(this.disableTransitions=!0,this.$nextTick((()=>this.closeToast()))):setTimeout((()=>{this.beingDragged=!1,O(this.dragRect)&&this.pauseOnHover&&this.dragRect.bottom>=this.dragPos.y&&this.dragPos.y>=this.dragRect.top&&this.dragRect.left<=this.dragPos.x&&this.dragPos.x<=this.dragRect.right?this.isRunning=!1:this.isRunning=!0})))}}}),gt=["role"];pt.render=function(t,e){const s=(0,n.up)("Icon"),o=(0,n.up)("CloseButton"),i=(0,n.up)("ProgressBar");return(0,n.wg)(),(0,n.iD)("div",{class:(0,r.C_)(t.classes),style:(0,r.j5)(t.draggableStyle),onClick:e[0]||(e[0]=(...e)=>t.clickHandler&&t.clickHandler(...e)),onMouseenter:e[1]||(e[1]=(...e)=>t.hoverPause&&t.hoverPause(...e)),onMouseleave:e[2]||(e[2]=(...e)=>t.hoverPlay&&t.hoverPlay(...e))},[t.icon?((0,n.wg)(),(0,n.j4)(s,{key:0,"custom-icon":t.icon,type:t.type},null,8,["custom-icon","type"])):(0,n.kq)("v-if",!0),(0,n._)("div",{role:t.accessibility.toastRole||"alert",class:(0,r.C_)(t.bodyClasses)},["string"==typeof t.content?((0,n.wg)(),(0,n.iD)(n.HY,{key:0},[(0,n.Uk)((0,r.zw)(t.content),1)],2112)):((0,n.wg)(),(0,n.j4)((0,n.LL)(t.getVueComponentFromObj(t.content)),(0,n.dG)({key:1,"toast-id":t.id},t.hasProp(t.content,"props")?t.content.props:{},(0,n.mx)(t.hasProp(t.content,"listeners")?t.content.listeners:{}),{onCloseToast:t.closeToast}),null,16,["toast-id","onCloseToast"]))],10,gt),t.closeButton?((0,n.wg)(),(0,n.j4)(o,{key:1,component:t.closeButton,"class-names":t.closeButtonClassName,"show-on-hover":t.showCloseButtonOnHover,"aria-label":t.accessibility.closeButtonLabel,onClick:(0,a.iM)(t.closeToast,["stop"])},null,8,["component","class-names","show-on-hover","aria-label","onClick"])):(0,n.kq)("v-if",!0),t.timeout?((0,n.wg)(),(0,n.j4)(i,{key:2,"is-running":t.isRunning,"hide-progress-bar":t.hideProgressBar,timeout:t.timeout,onCloseToast:t.timeoutHandler},null,8,["is-running","hide-progress-bar","timeout","onCloseToast"])):(0,n.kq)("v-if",!0)],38)};var mt=pt,ft=(0,n.aZ)({name:"VtTransition",props:V.TRANSITION,emits:["leave"],methods:{hasProp:w,leave(t){t instanceof HTMLElement&&(t.style.left=t.offsetLeft+"px",t.style.top=t.offsetTop+"px",t.style.width=getComputedStyle(t).width,t.style.position="absolute")}}});ft.render=function(t,e){return(0,n.wg)(),(0,n.j4)(a.W3,{tag:"div","enter-active-class":t.transition.enter?t.transition.enter:`${t.transition}-enter-active`,"move-class":t.transition.move?t.transition.move:`${t.transition}-move`,"leave-active-class":t.transition.leave?t.transition.leave:`${t.transition}-leave-active`,onLeave:t.leave},{default:(0,n.w5)((()=>[(0,n.WI)(t.$slots,"default")])),_:3},8,["enter-active-class","move-class","leave-active-class","onLeave"])};var vt=ft,Tt=(0,n.aZ)({name:"VueToastification",devtools:{hide:!0},components:{Toast:mt,VtTransition:vt},props:Object.assign({},V.CORE_TOAST,V.CONTAINER,V.TRANSITION),data:()=>({count:0,positions:Object.values(P),toasts:{},defaults:{}}),computed:{toastArray(){return Object.values(this.toasts)},filteredToasts(){return this.defaults.filterToasts(this.toastArray)}},beforeMount(){const t=this.eventBus;t.on(I.ADD,this.addToast),t.on(I.CLEAR,this.clearToasts),t.on(I.DISMISS,this.dismissToast),t.on(I.UPDATE,this.updateToast),t.on(I.UPDATE_DEFAULTS,this.updateDefaults),this.defaults=this.$props},mounted(){this.setup(this.container)},methods:{async setup(t){var e;g(t)&&(t=await t()),e=this.$el,v(e.remove)?e.parentNode&&e.parentNode.removeChild(e):e.remove(),t.appendChild(this.$el)},setToast(t){v(t.id)||(this.toasts[t.id]=t)},addToast(t){t.content=(t=>{if("string"==typeof t)return t;const e=w(t,"props")&&T(t.props)?t.props:{},s=w(t,"listeners")&&T(t.listeners)?t.listeners:{};return{component:x(t),props:e,listeners:s}})(t.content);const e=Object.assign({},this.defaults,t.type&&this.defaults.toastDefaults&&this.defaults.toastDefaults[t.type],t),s=this.defaults.filterBeforeCreate(e,this.toastArray);s&&this.setToast(s)},dismissToast(t){const e=this.toasts[t];v(e)||v(e.onClose)||e.onClose(),delete this.toasts[t]},clearToasts(){Object.keys(this.toasts).forEach((t=>{this.dismissToast(t)}))},getPositionToasts(t){const e=this.filteredToasts.filter((e=>e.position===t)).slice(0,this.defaults.maxToasts);return this.defaults.newestOnTop?e.reverse():e},updateDefaults(t){v(t.container)||this.setup(t.container),this.defaults=Object.assign({},this.defaults,t)},updateToast({id:t,options:e,create:s}){this.toasts[t]?(e.timeout&&e.timeout===this.toasts[t].timeout&&e.timeout++,this.setToast(Object.assign({},this.toasts[t],e))):s&&this.addToast(Object.assign({},{id:t},e))},getClasses(t){return[`${k}__container`,t].concat(this.defaults.containerClassName)}}});Tt.render=function(t,e){const s=(0,n.up)("Toast"),o=(0,n.up)("VtTransition");return(0,n.wg)(),(0,n.iD)("div",null,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(t.positions,(e=>((0,n.wg)(),(0,n.iD)("div",{key:e},[(0,n.Wm)(o,{transition:t.defaults.transition,class:(0,r.C_)(t.getClasses(e))},{default:(0,n.w5)((()=>[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(t.getPositionToasts(e),(t=>((0,n.wg)(),(0,n.j4)(s,(0,n.dG)({key:t.id},t),null,16)))),128))])),_:2},1032,["transition","class"])])))),128))])};var bt=Tt,yt=(t={},e=!0)=>{const s=t.eventBus=t.eventBus||new A;e&&(0,n.Y3)((()=>{const e=(0,a.ri)(bt,p({},t)),s=e.mount(document.createElement("div")),o=t.onMounted;if(v(o)||o(s,e),t.shareAppContext){const s=t.shareAppContext;!0===s?console.warn(`[${k}] App to share context with was not provided.`):(e._context.components=s._context.components,e._context.directives=s._context.directives,e._context.mixins=s._context.mixins,e._context.provides=s._context.provides,e.config.globalProperties=s.config.globalProperties)}}));const o=(t,e)=>{const o=Object.assign({},{id:D(),type:R.DEFAULT},e,{content:t});return s.emit(I.ADD,o),o.id};return o.clear=()=>s.emit(I.CLEAR,void 0),o.updateDefaults=t=>{s.emit(I.UPDATE_DEFAULTS,t)},o.dismiss=t=>{s.emit(I.DISMISS,t)},o.update=function(t,{content:e,options:o},n=!1){const a=Object.assign({},o,{content:e});s.emit(I.UPDATE,{id:t,options:a,create:n})},o.success=(t,e)=>o(t,Object.assign({},e,{type:R.SUCCESS})),o.info=(t,e)=>o(t,Object.assign({},e,{type:R.INFO})),o.error=(t,e)=>o(t,Object.assign({},e,{type:R.ERROR})),o.warning=(t,e)=>o(t,Object.assign({},e,{type:R.WARNING})),o},Ct=()=>{const t=()=>console.warn(`[${k}] This plugin does not support SSR!`);return new Proxy(t,{get:()=>t})};function Ot(t){return N()?j(t)?yt({eventBus:t},!1):yt(t,!0):Ct()}var wt=Symbol("VueToastification"),Dt=new A,St=(t,e)=>{!0===(null==e?void 0:e.shareAppContext)&&(e.shareAppContext=t);const s=Ot(p({eventBus:Dt},e));t.provide(wt,s)}}}]); +//# sourceMappingURL=2.4709de54.js.map \ No newline at end of file diff --git a/_static/kpm/js/2.4709de54.js.map b/_static/kpm/js/2.4709de54.js.map new file mode 100644 index 00000000..7c719ff0 --- /dev/null +++ b/_static/kpm/js/2.4709de54.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/2.4709de54.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/vue-toastification/dist/index.mjs"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// src/index.ts\nimport { provide, inject, getCurrentInstance } from \"vue\";\n\n// src/ts/interface.ts\nimport { createApp, nextTick } from \"vue\";\n\n// src/ts/utils.ts\nimport { defineComponent, toRaw, unref } from \"vue\";\nvar isFunction = (value) => typeof value === \"function\";\nvar isString = (value) => typeof value === \"string\";\nvar isNonEmptyString = (value) => isString(value) && value.trim().length > 0;\nvar isNumber = (value) => typeof value === \"number\";\nvar isUndefined = (value) => typeof value === \"undefined\";\nvar isObject = (value) => typeof value === \"object\" && value !== null;\nvar isJSX = (obj) => hasProp(obj, \"tag\") && isNonEmptyString(obj.tag);\nvar isTouchEvent = (event) => window.TouchEvent && event instanceof TouchEvent;\nvar isToastComponent = (obj) => hasProp(obj, \"component\") && isToastContent(obj.component);\nvar isVueComponent = (c) => isFunction(c) || isObject(c);\nvar isToastContent = (obj) => !isUndefined(obj) && (isString(obj) || isVueComponent(obj) || isToastComponent(obj));\nvar isDOMRect = (obj) => isObject(obj) && [\"height\", \"width\", \"right\", \"left\", \"top\", \"bottom\"].every((p) => isNumber(obj[p]));\nvar hasProp = (obj, propKey) => (isObject(obj) || isFunction(obj)) && propKey in obj;\nvar getId = ((i) => () => i++)(0);\nfunction getX(event) {\n return isTouchEvent(event) ? event.targetTouches[0].clientX : event.clientX;\n}\nfunction getY(event) {\n return isTouchEvent(event) ? event.targetTouches[0].clientY : event.clientY;\n}\nvar removeElement = (el) => {\n if (!isUndefined(el.remove)) {\n el.remove();\n } else if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n};\nvar getVueComponentFromObj = (obj) => {\n if (isToastComponent(obj)) {\n return getVueComponentFromObj(obj.component);\n }\n if (isJSX(obj)) {\n return defineComponent({\n render() {\n return obj;\n }\n });\n }\n return typeof obj === \"string\" ? obj : toRaw(unref(obj));\n};\nvar normalizeToastComponent = (obj) => {\n if (typeof obj === \"string\") {\n return obj;\n }\n const props = hasProp(obj, \"props\") && isObject(obj.props) ? obj.props : {};\n const listeners = hasProp(obj, \"listeners\") && isObject(obj.listeners) ? obj.listeners : {};\n return { component: getVueComponentFromObj(obj), props, listeners };\n};\nvar isBrowser = () => typeof window !== \"undefined\";\n\n// src/ts/eventBus.ts\nvar EventBus = class {\n constructor() {\n this.allHandlers = {};\n }\n getHandlers(eventType) {\n return this.allHandlers[eventType] || [];\n }\n on(eventType, handler) {\n const handlers = this.getHandlers(eventType);\n handlers.push(handler);\n this.allHandlers[eventType] = handlers;\n }\n off(eventType, handler) {\n const handlers = this.getHandlers(eventType);\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n }\n emit(eventType, event) {\n const handlers = this.getHandlers(eventType);\n handlers.forEach((handler) => handler(event));\n }\n};\nvar isEventBusInterface = (e) => [\"on\", \"off\", \"emit\"].every((f) => hasProp(e, f) && isFunction(e[f]));\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue?vue&type=script\nimport { defineComponent as defineComponent7 } from \"vue\";\n\n// src/ts/constants.ts\nvar TYPE;\n(function(TYPE2) {\n TYPE2[\"SUCCESS\"] = \"success\";\n TYPE2[\"ERROR\"] = \"error\";\n TYPE2[\"WARNING\"] = \"warning\";\n TYPE2[\"INFO\"] = \"info\";\n TYPE2[\"DEFAULT\"] = \"default\";\n})(TYPE || (TYPE = {}));\nvar POSITION;\n(function(POSITION2) {\n POSITION2[\"TOP_LEFT\"] = \"top-left\";\n POSITION2[\"TOP_CENTER\"] = \"top-center\";\n POSITION2[\"TOP_RIGHT\"] = \"top-right\";\n POSITION2[\"BOTTOM_LEFT\"] = \"bottom-left\";\n POSITION2[\"BOTTOM_CENTER\"] = \"bottom-center\";\n POSITION2[\"BOTTOM_RIGHT\"] = \"bottom-right\";\n})(POSITION || (POSITION = {}));\nvar EVENTS;\n(function(EVENTS2) {\n EVENTS2[\"ADD\"] = \"add\";\n EVENTS2[\"DISMISS\"] = \"dismiss\";\n EVENTS2[\"UPDATE\"] = \"update\";\n EVENTS2[\"CLEAR\"] = \"clear\";\n EVENTS2[\"UPDATE_DEFAULTS\"] = \"update_defaults\";\n})(EVENTS || (EVENTS = {}));\nvar VT_NAMESPACE = \"Vue-Toastification\";\n\n// src/ts/propValidators.ts\nvar COMMON = {\n type: {\n type: String,\n default: TYPE.DEFAULT\n },\n classNames: {\n type: [String, Array],\n default: () => []\n },\n trueBoolean: {\n type: Boolean,\n default: true\n }\n};\nvar ICON = {\n type: COMMON.type,\n customIcon: {\n type: [String, Boolean, Object, Function],\n default: true\n }\n};\nvar CLOSE_BUTTON = {\n component: {\n type: [String, Object, Function, Boolean],\n default: \"button\"\n },\n classNames: COMMON.classNames,\n showOnHover: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: \"close\"\n }\n};\nvar PROGRESS_BAR = {\n timeout: {\n type: [Number, Boolean],\n default: 5e3\n },\n hideProgressBar: {\n type: Boolean,\n default: false\n },\n isRunning: {\n type: Boolean,\n default: false\n }\n};\nvar TRANSITION = {\n transition: {\n type: [Object, String],\n default: `${VT_NAMESPACE}__bounce`\n }\n};\nvar CORE_TOAST = {\n position: {\n type: String,\n default: POSITION.TOP_RIGHT\n },\n draggable: COMMON.trueBoolean,\n draggablePercent: {\n type: Number,\n default: 0.6\n },\n pauseOnFocusLoss: COMMON.trueBoolean,\n pauseOnHover: COMMON.trueBoolean,\n closeOnClick: COMMON.trueBoolean,\n timeout: PROGRESS_BAR.timeout,\n hideProgressBar: PROGRESS_BAR.hideProgressBar,\n toastClassName: COMMON.classNames,\n bodyClassName: COMMON.classNames,\n icon: ICON.customIcon,\n closeButton: CLOSE_BUTTON.component,\n closeButtonClassName: CLOSE_BUTTON.classNames,\n showCloseButtonOnHover: CLOSE_BUTTON.showOnHover,\n accessibility: {\n type: Object,\n default: () => ({\n toastRole: \"alert\",\n closeButtonLabel: \"close\"\n })\n },\n rtl: {\n type: Boolean,\n default: false\n },\n eventBus: {\n type: Object,\n required: false,\n default: () => new EventBus()\n }\n};\nvar TOAST = {\n id: {\n type: [String, Number],\n required: true,\n default: 0\n },\n type: COMMON.type,\n content: {\n type: [String, Object, Function],\n required: true,\n default: \"\"\n },\n onClick: {\n type: Function,\n default: void 0\n },\n onClose: {\n type: Function,\n default: void 0\n }\n};\nvar CONTAINER = {\n container: {\n type: [\n Object,\n Function\n ],\n default: () => document.body\n },\n newestOnTop: COMMON.trueBoolean,\n maxToasts: {\n type: Number,\n default: 20\n },\n transition: TRANSITION.transition,\n toastDefaults: Object,\n filterBeforeCreate: {\n type: Function,\n default: (toast) => toast\n },\n filterToasts: {\n type: Function,\n default: (toasts) => toasts\n },\n containerClassName: COMMON.classNames,\n onMounted: Function,\n shareAppContext: [Boolean, Object]\n};\nvar propValidators_default = {\n CORE_TOAST,\n TOAST,\n CONTAINER,\n PROGRESS_BAR,\n ICON,\n TRANSITION,\n CLOSE_BUTTON\n};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue?vue&type=script\nimport { defineComponent as defineComponent5 } from \"vue\";\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtProgressBar.vue?vue&type=script\nimport { defineComponent as defineComponent2 } from \"vue\";\nvar VtProgressBar_default = defineComponent2({\n name: \"VtProgressBar\",\n props: propValidators_default.PROGRESS_BAR,\n data() {\n return {\n hasClass: true\n };\n },\n computed: {\n style() {\n return {\n animationDuration: `${this.timeout}ms`,\n animationPlayState: this.isRunning ? \"running\" : \"paused\",\n opacity: this.hideProgressBar ? 0 : 1\n };\n },\n cpClass() {\n return this.hasClass ? `${VT_NAMESPACE}__progress-bar` : \"\";\n }\n },\n watch: {\n timeout() {\n this.hasClass = false;\n this.$nextTick(() => this.hasClass = true);\n }\n },\n mounted() {\n this.$el.addEventListener(\"animationend\", this.animationEnded);\n },\n beforeUnmount() {\n this.$el.removeEventListener(\"animationend\", this.animationEnded);\n },\n methods: {\n animationEnded() {\n this.$emit(\"close-toast\");\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtProgressBar.vue?vue&type=template\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nfunction render(_ctx, _cache) {\n return _openBlock(), _createElementBlock(\"div\", {\n style: _normalizeStyle(_ctx.style),\n class: _normalizeClass(_ctx.cpClass)\n }, null, 6);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtProgressBar.vue\nVtProgressBar_default.render = render;\nvar VtProgressBar_default2 = VtProgressBar_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtCloseButton.vue?vue&type=script\nimport { defineComponent as defineComponent3 } from \"vue\";\nvar VtCloseButton_default = defineComponent3({\n name: \"VtCloseButton\",\n props: propValidators_default.CLOSE_BUTTON,\n computed: {\n buttonComponent() {\n if (this.component !== false) {\n return getVueComponentFromObj(this.component);\n }\n return \"button\";\n },\n classes() {\n const classes = [`${VT_NAMESPACE}__close-button`];\n if (this.showOnHover) {\n classes.push(\"show-on-hover\");\n }\n return classes.concat(this.classNames);\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtCloseButton.vue?vue&type=template\nimport { createTextVNode as _createTextVNode, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, withCtx as _withCtx, openBlock as _openBlock2, createBlock as _createBlock } from \"vue\";\nvar _hoisted_1 = /* @__PURE__ */ _createTextVNode(\" \\xD7 \");\nfunction render2(_ctx, _cache) {\n return _openBlock2(), _createBlock(_resolveDynamicComponent(_ctx.buttonComponent), _mergeProps({\n \"aria-label\": _ctx.ariaLabel,\n class: _ctx.classes\n }, _ctx.$attrs), {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 16, [\"aria-label\", \"class\"]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtCloseButton.vue\nVtCloseButton_default.render = render2;\nvar VtCloseButton_default2 = VtCloseButton_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue?vue&type=script\nimport { defineComponent as defineComponent4 } from \"vue\";\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtSuccessIcon.vue?vue&type=script\nvar VtSuccessIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtSuccessIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock3, createElementBlock as _createElementBlock2 } from \"vue\";\nvar _hoisted_12 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"check-circle\",\n class: \"svg-inline--fa fa-check-circle fa-w-16\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n};\nvar _hoisted_2 = /* @__PURE__ */ _createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"\n}, null, -1);\nvar _hoisted_3 = [\n _hoisted_2\n];\nfunction render3(_ctx, _cache) {\n return _openBlock3(), _createElementBlock2(\"svg\", _hoisted_12, _hoisted_3);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtSuccessIcon.vue\nVtSuccessIcon_default.render = render3;\nvar VtSuccessIcon_default2 = VtSuccessIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtInfoIcon.vue?vue&type=script\nvar VtInfoIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtInfoIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode2, openBlock as _openBlock4, createElementBlock as _createElementBlock3 } from \"vue\";\nvar _hoisted_13 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"info-circle\",\n class: \"svg-inline--fa fa-info-circle fa-w-16\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n};\nvar _hoisted_22 = /* @__PURE__ */ _createElementVNode2(\"path\", {\n fill: \"currentColor\",\n d: \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"\n}, null, -1);\nvar _hoisted_32 = [\n _hoisted_22\n];\nfunction render4(_ctx, _cache) {\n return _openBlock4(), _createElementBlock3(\"svg\", _hoisted_13, _hoisted_32);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtInfoIcon.vue\nVtInfoIcon_default.render = render4;\nvar VtInfoIcon_default2 = VtInfoIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtWarningIcon.vue?vue&type=script\nvar VtWarningIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtWarningIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode3, openBlock as _openBlock5, createElementBlock as _createElementBlock4 } from \"vue\";\nvar _hoisted_14 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"exclamation-circle\",\n class: \"svg-inline--fa fa-exclamation-circle fa-w-16\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n};\nvar _hoisted_23 = /* @__PURE__ */ _createElementVNode3(\"path\", {\n fill: \"currentColor\",\n d: \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"\n}, null, -1);\nvar _hoisted_33 = [\n _hoisted_23\n];\nfunction render5(_ctx, _cache) {\n return _openBlock5(), _createElementBlock4(\"svg\", _hoisted_14, _hoisted_33);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtWarningIcon.vue\nVtWarningIcon_default.render = render5;\nvar VtWarningIcon_default2 = VtWarningIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtErrorIcon.vue?vue&type=script\nvar VtErrorIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtErrorIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode4, openBlock as _openBlock6, createElementBlock as _createElementBlock5 } from \"vue\";\nvar _hoisted_15 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"exclamation-triangle\",\n class: \"svg-inline--fa fa-exclamation-triangle fa-w-18\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 576 512\"\n};\nvar _hoisted_24 = /* @__PURE__ */ _createElementVNode4(\"path\", {\n fill: \"currentColor\",\n d: \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"\n}, null, -1);\nvar _hoisted_34 = [\n _hoisted_24\n];\nfunction render6(_ctx, _cache) {\n return _openBlock6(), _createElementBlock5(\"svg\", _hoisted_15, _hoisted_34);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtErrorIcon.vue\nVtErrorIcon_default.render = render6;\nvar VtErrorIcon_default2 = VtErrorIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue?vue&type=script\nvar VtIcon_default = defineComponent4({\n name: \"VtIcon\",\n props: propValidators_default.ICON,\n computed: {\n customIconChildren() {\n return hasProp(this.customIcon, \"iconChildren\") ? this.trimValue(this.customIcon.iconChildren) : \"\";\n },\n customIconClass() {\n if (isString(this.customIcon)) {\n return this.trimValue(this.customIcon);\n } else if (hasProp(this.customIcon, \"iconClass\")) {\n return this.trimValue(this.customIcon.iconClass);\n }\n return \"\";\n },\n customIconTag() {\n if (hasProp(this.customIcon, \"iconTag\")) {\n return this.trimValue(this.customIcon.iconTag, \"i\");\n }\n return \"i\";\n },\n hasCustomIcon() {\n return this.customIconClass.length > 0;\n },\n component() {\n if (this.hasCustomIcon) {\n return this.customIconTag;\n }\n if (isToastContent(this.customIcon)) {\n return getVueComponentFromObj(this.customIcon);\n }\n return this.iconTypeComponent;\n },\n iconTypeComponent() {\n const types = {\n [TYPE.DEFAULT]: VtInfoIcon_default2,\n [TYPE.INFO]: VtInfoIcon_default2,\n [TYPE.SUCCESS]: VtSuccessIcon_default2,\n [TYPE.ERROR]: VtErrorIcon_default2,\n [TYPE.WARNING]: VtWarningIcon_default2\n };\n return types[this.type];\n },\n iconClasses() {\n const classes = [`${VT_NAMESPACE}__icon`];\n if (this.hasCustomIcon) {\n return classes.concat(this.customIconClass);\n }\n return classes;\n }\n },\n methods: {\n trimValue(value, empty = \"\") {\n return isNonEmptyString(value) ? value.trim() : empty;\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue?vue&type=template\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode2, resolveDynamicComponent as _resolveDynamicComponent2, normalizeClass as _normalizeClass2, withCtx as _withCtx2, openBlock as _openBlock7, createBlock as _createBlock2 } from \"vue\";\nfunction render7(_ctx, _cache) {\n return _openBlock7(), _createBlock2(_resolveDynamicComponent2(_ctx.component), {\n class: _normalizeClass2(_ctx.iconClasses)\n }, {\n default: _withCtx2(() => [\n _createTextVNode2(_toDisplayString(_ctx.customIconChildren), 1)\n ]),\n _: 1\n }, 8, [\"class\"]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue\nVtIcon_default.render = render7;\nvar VtIcon_default2 = VtIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue?vue&type=script\nvar VtToast_default = defineComponent5({\n name: \"VtToast\",\n components: { ProgressBar: VtProgressBar_default2, CloseButton: VtCloseButton_default2, Icon: VtIcon_default2 },\n inheritAttrs: false,\n props: Object.assign({}, propValidators_default.CORE_TOAST, propValidators_default.TOAST),\n data() {\n const data = {\n isRunning: true,\n disableTransitions: false,\n beingDragged: false,\n dragStart: 0,\n dragPos: { x: 0, y: 0 },\n dragRect: {}\n };\n return data;\n },\n computed: {\n classes() {\n const classes = [\n `${VT_NAMESPACE}__toast`,\n `${VT_NAMESPACE}__toast--${this.type}`,\n `${this.position}`\n ].concat(this.toastClassName);\n if (this.disableTransitions) {\n classes.push(\"disable-transition\");\n }\n if (this.rtl) {\n classes.push(`${VT_NAMESPACE}__toast--rtl`);\n }\n return classes;\n },\n bodyClasses() {\n const classes = [\n `${VT_NAMESPACE}__toast-${isString(this.content) ? \"body\" : \"component-body\"}`\n ].concat(this.bodyClassName);\n return classes;\n },\n draggableStyle() {\n if (this.dragStart === this.dragPos.x) {\n return {};\n } else if (this.beingDragged) {\n return {\n transform: `translateX(${this.dragDelta}px)`,\n opacity: 1 - Math.abs(this.dragDelta / this.removalDistance)\n };\n } else {\n return {\n transition: \"transform 0.2s, opacity 0.2s\",\n transform: \"translateX(0)\",\n opacity: 1\n };\n }\n },\n dragDelta() {\n return this.beingDragged ? this.dragPos.x - this.dragStart : 0;\n },\n removalDistance() {\n if (isDOMRect(this.dragRect)) {\n return (this.dragRect.right - this.dragRect.left) * this.draggablePercent;\n }\n return 0;\n }\n },\n mounted() {\n if (this.draggable) {\n this.draggableSetup();\n }\n if (this.pauseOnFocusLoss) {\n this.focusSetup();\n }\n },\n beforeUnmount() {\n if (this.draggable) {\n this.draggableCleanup();\n }\n if (this.pauseOnFocusLoss) {\n this.focusCleanup();\n }\n },\n methods: {\n hasProp,\n getVueComponentFromObj,\n closeToast() {\n this.eventBus.emit(EVENTS.DISMISS, this.id);\n },\n clickHandler() {\n if (this.onClick) {\n this.onClick(this.closeToast);\n }\n if (this.closeOnClick) {\n if (!this.beingDragged || this.dragStart === this.dragPos.x) {\n this.closeToast();\n }\n }\n },\n timeoutHandler() {\n this.closeToast();\n },\n hoverPause() {\n if (this.pauseOnHover) {\n this.isRunning = false;\n }\n },\n hoverPlay() {\n if (this.pauseOnHover) {\n this.isRunning = true;\n }\n },\n focusPause() {\n this.isRunning = false;\n },\n focusPlay() {\n this.isRunning = true;\n },\n focusSetup() {\n addEventListener(\"blur\", this.focusPause);\n addEventListener(\"focus\", this.focusPlay);\n },\n focusCleanup() {\n removeEventListener(\"blur\", this.focusPause);\n removeEventListener(\"focus\", this.focusPlay);\n },\n draggableSetup() {\n const element = this.$el;\n element.addEventListener(\"touchstart\", this.onDragStart, {\n passive: true\n });\n element.addEventListener(\"mousedown\", this.onDragStart);\n addEventListener(\"touchmove\", this.onDragMove, { passive: false });\n addEventListener(\"mousemove\", this.onDragMove);\n addEventListener(\"touchend\", this.onDragEnd);\n addEventListener(\"mouseup\", this.onDragEnd);\n },\n draggableCleanup() {\n const element = this.$el;\n element.removeEventListener(\"touchstart\", this.onDragStart);\n element.removeEventListener(\"mousedown\", this.onDragStart);\n removeEventListener(\"touchmove\", this.onDragMove);\n removeEventListener(\"mousemove\", this.onDragMove);\n removeEventListener(\"touchend\", this.onDragEnd);\n removeEventListener(\"mouseup\", this.onDragEnd);\n },\n onDragStart(event) {\n this.beingDragged = true;\n this.dragPos = { x: getX(event), y: getY(event) };\n this.dragStart = getX(event);\n this.dragRect = this.$el.getBoundingClientRect();\n },\n onDragMove(event) {\n if (this.beingDragged) {\n event.preventDefault();\n if (this.isRunning) {\n this.isRunning = false;\n }\n this.dragPos = { x: getX(event), y: getY(event) };\n }\n },\n onDragEnd() {\n if (this.beingDragged) {\n if (Math.abs(this.dragDelta) >= this.removalDistance) {\n this.disableTransitions = true;\n this.$nextTick(() => this.closeToast());\n } else {\n setTimeout(() => {\n this.beingDragged = false;\n if (isDOMRect(this.dragRect) && this.pauseOnHover && this.dragRect.bottom >= this.dragPos.y && this.dragPos.y >= this.dragRect.top && this.dragRect.left <= this.dragPos.x && this.dragPos.x <= this.dragRect.right) {\n this.isRunning = false;\n } else {\n this.isRunning = true;\n }\n });\n }\n }\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue?vue&type=template\nimport { resolveComponent as _resolveComponent, openBlock as _openBlock8, createBlock as _createBlock3, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString2, createTextVNode as _createTextVNode3, Fragment as _Fragment, createElementBlock as _createElementBlock6, resolveDynamicComponent as _resolveDynamicComponent3, toHandlers as _toHandlers, mergeProps as _mergeProps2, normalizeClass as _normalizeClass3, createElementVNode as _createElementVNode5, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle2 } from \"vue\";\nvar _hoisted_16 = [\"role\"];\nfunction render8(_ctx, _cache) {\n const _component_Icon = _resolveComponent(\"Icon\");\n const _component_CloseButton = _resolveComponent(\"CloseButton\");\n const _component_ProgressBar = _resolveComponent(\"ProgressBar\");\n return _openBlock8(), _createElementBlock6(\"div\", {\n class: _normalizeClass3(_ctx.classes),\n style: _normalizeStyle2(_ctx.draggableStyle),\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.clickHandler && _ctx.clickHandler(...args)),\n onMouseenter: _cache[1] || (_cache[1] = (...args) => _ctx.hoverPause && _ctx.hoverPause(...args)),\n onMouseleave: _cache[2] || (_cache[2] = (...args) => _ctx.hoverPlay && _ctx.hoverPlay(...args))\n }, [\n _ctx.icon ? (_openBlock8(), _createBlock3(_component_Icon, {\n key: 0,\n \"custom-icon\": _ctx.icon,\n type: _ctx.type\n }, null, 8, [\"custom-icon\", \"type\"])) : _createCommentVNode(\"v-if\", true),\n _createElementVNode5(\"div\", {\n role: _ctx.accessibility.toastRole || \"alert\",\n class: _normalizeClass3(_ctx.bodyClasses)\n }, [\n typeof _ctx.content === \"string\" ? (_openBlock8(), _createElementBlock6(_Fragment, { key: 0 }, [\n _createTextVNode3(_toDisplayString2(_ctx.content), 1)\n ], 2112)) : (_openBlock8(), _createBlock3(_resolveDynamicComponent3(_ctx.getVueComponentFromObj(_ctx.content)), _mergeProps2({\n key: 1,\n \"toast-id\": _ctx.id\n }, _ctx.hasProp(_ctx.content, \"props\") ? _ctx.content.props : {}, _toHandlers(_ctx.hasProp(_ctx.content, \"listeners\") ? _ctx.content.listeners : {}), { onCloseToast: _ctx.closeToast }), null, 16, [\"toast-id\", \"onCloseToast\"]))\n ], 10, _hoisted_16),\n !!_ctx.closeButton ? (_openBlock8(), _createBlock3(_component_CloseButton, {\n key: 1,\n component: _ctx.closeButton,\n \"class-names\": _ctx.closeButtonClassName,\n \"show-on-hover\": _ctx.showCloseButtonOnHover,\n \"aria-label\": _ctx.accessibility.closeButtonLabel,\n onClick: _withModifiers(_ctx.closeToast, [\"stop\"])\n }, null, 8, [\"component\", \"class-names\", \"show-on-hover\", \"aria-label\", \"onClick\"])) : _createCommentVNode(\"v-if\", true),\n _ctx.timeout ? (_openBlock8(), _createBlock3(_component_ProgressBar, {\n key: 2,\n \"is-running\": _ctx.isRunning,\n \"hide-progress-bar\": _ctx.hideProgressBar,\n timeout: _ctx.timeout,\n onCloseToast: _ctx.timeoutHandler\n }, null, 8, [\"is-running\", \"hide-progress-bar\", \"timeout\", \"onCloseToast\"])) : _createCommentVNode(\"v-if\", true)\n ], 38);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue\nVtToast_default.render = render8;\nvar VtToast_default2 = VtToast_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtTransition.vue?vue&type=script\nimport { defineComponent as defineComponent6 } from \"vue\";\nvar VtTransition_default = defineComponent6({\n name: \"VtTransition\",\n props: propValidators_default.TRANSITION,\n emits: [\"leave\"],\n methods: {\n hasProp,\n leave(el) {\n if (el instanceof HTMLElement) {\n el.style.left = el.offsetLeft + \"px\";\n el.style.top = el.offsetTop + \"px\";\n el.style.width = getComputedStyle(el).width;\n el.style.position = \"absolute\";\n }\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtTransition.vue?vue&type=template\nimport { renderSlot as _renderSlot, TransitionGroup as _TransitionGroup, withCtx as _withCtx3, openBlock as _openBlock9, createBlock as _createBlock4 } from \"vue\";\nfunction render9(_ctx, _cache) {\n return _openBlock9(), _createBlock4(_TransitionGroup, {\n tag: \"div\",\n \"enter-active-class\": _ctx.transition.enter ? _ctx.transition.enter : `${_ctx.transition}-enter-active`,\n \"move-class\": _ctx.transition.move ? _ctx.transition.move : `${_ctx.transition}-move`,\n \"leave-active-class\": _ctx.transition.leave ? _ctx.transition.leave : `${_ctx.transition}-leave-active`,\n onLeave: _ctx.leave\n }, {\n default: _withCtx3(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"enter-active-class\", \"move-class\", \"leave-active-class\", \"onLeave\"]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtTransition.vue\nVtTransition_default.render = render9;\nvar VtTransition_default2 = VtTransition_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue?vue&type=script\nvar VtToastContainer_default = defineComponent7({\n name: \"VueToastification\",\n devtools: {\n hide: true\n },\n components: { Toast: VtToast_default2, VtTransition: VtTransition_default2 },\n props: Object.assign({}, propValidators_default.CORE_TOAST, propValidators_default.CONTAINER, propValidators_default.TRANSITION),\n data() {\n const data = {\n count: 0,\n positions: Object.values(POSITION),\n toasts: {},\n defaults: {}\n };\n return data;\n },\n computed: {\n toastArray() {\n return Object.values(this.toasts);\n },\n filteredToasts() {\n return this.defaults.filterToasts(this.toastArray);\n }\n },\n beforeMount() {\n const events = this.eventBus;\n events.on(EVENTS.ADD, this.addToast);\n events.on(EVENTS.CLEAR, this.clearToasts);\n events.on(EVENTS.DISMISS, this.dismissToast);\n events.on(EVENTS.UPDATE, this.updateToast);\n events.on(EVENTS.UPDATE_DEFAULTS, this.updateDefaults);\n this.defaults = this.$props;\n },\n mounted() {\n this.setup(this.container);\n },\n methods: {\n async setup(container) {\n if (isFunction(container)) {\n container = await container();\n }\n removeElement(this.$el);\n container.appendChild(this.$el);\n },\n setToast(props) {\n if (!isUndefined(props.id)) {\n this.toasts[props.id] = props;\n }\n },\n addToast(params) {\n params.content = normalizeToastComponent(params.content);\n const props = Object.assign({}, this.defaults, params.type && this.defaults.toastDefaults && this.defaults.toastDefaults[params.type], params);\n const toast = this.defaults.filterBeforeCreate(props, this.toastArray);\n toast && this.setToast(toast);\n },\n dismissToast(id) {\n const toast = this.toasts[id];\n if (!isUndefined(toast) && !isUndefined(toast.onClose)) {\n toast.onClose();\n }\n delete this.toasts[id];\n },\n clearToasts() {\n Object.keys(this.toasts).forEach((id) => {\n this.dismissToast(id);\n });\n },\n getPositionToasts(position) {\n const toasts = this.filteredToasts.filter((toast) => toast.position === position).slice(0, this.defaults.maxToasts);\n return this.defaults.newestOnTop ? toasts.reverse() : toasts;\n },\n updateDefaults(update) {\n if (!isUndefined(update.container)) {\n this.setup(update.container);\n }\n this.defaults = Object.assign({}, this.defaults, update);\n },\n updateToast({\n id,\n options,\n create\n }) {\n if (this.toasts[id]) {\n if (options.timeout && options.timeout === this.toasts[id].timeout) {\n options.timeout++;\n }\n this.setToast(Object.assign({}, this.toasts[id], options));\n } else if (create) {\n this.addToast(Object.assign({}, { id }, options));\n }\n },\n getClasses(position) {\n const classes = [`${VT_NAMESPACE}__container`, position];\n return classes.concat(this.defaults.containerClassName);\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue?vue&type=template\nimport { renderList as _renderList, Fragment as _Fragment2, openBlock as _openBlock10, createElementBlock as _createElementBlock7, resolveComponent as _resolveComponent2, mergeProps as _mergeProps3, createBlock as _createBlock5, normalizeClass as _normalizeClass4, withCtx as _withCtx4, createVNode as _createVNode } from \"vue\";\nfunction render10(_ctx, _cache) {\n const _component_Toast = _resolveComponent2(\"Toast\");\n const _component_VtTransition = _resolveComponent2(\"VtTransition\");\n return _openBlock10(), _createElementBlock7(\"div\", null, [\n (_openBlock10(true), _createElementBlock7(_Fragment2, null, _renderList(_ctx.positions, (pos) => {\n return _openBlock10(), _createElementBlock7(\"div\", { key: pos }, [\n _createVNode(_component_VtTransition, {\n transition: _ctx.defaults.transition,\n class: _normalizeClass4(_ctx.getClasses(pos))\n }, {\n default: _withCtx4(() => [\n (_openBlock10(true), _createElementBlock7(_Fragment2, null, _renderList(_ctx.getPositionToasts(pos), (toast) => {\n return _openBlock10(), _createBlock5(_component_Toast, _mergeProps3({\n key: toast.id\n }, toast), null, 16);\n }), 128))\n ]),\n _: 2\n }, 1032, [\"transition\", \"class\"])\n ]);\n }), 128))\n ]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue\nVtToastContainer_default.render = render10;\nvar VtToastContainer_default2 = VtToastContainer_default;\n\n// src/ts/interface.ts\nvar buildInterface = (globalOptions = {}, mountContainer = true) => {\n const events = globalOptions.eventBus = globalOptions.eventBus || new EventBus();\n if (mountContainer) {\n nextTick(() => {\n const app = createApp(VtToastContainer_default2, __spreadValues({}, globalOptions));\n const component = app.mount(document.createElement(\"div\"));\n const onMounted = globalOptions.onMounted;\n if (!isUndefined(onMounted)) {\n onMounted(component, app);\n }\n if (globalOptions.shareAppContext) {\n const baseApp = globalOptions.shareAppContext;\n if (baseApp === true) {\n console.warn(`[${VT_NAMESPACE}] App to share context with was not provided.`);\n } else {\n app._context.components = baseApp._context.components;\n app._context.directives = baseApp._context.directives;\n app._context.mixins = baseApp._context.mixins;\n app._context.provides = baseApp._context.provides;\n app.config.globalProperties = baseApp.config.globalProperties;\n }\n }\n });\n }\n const toast = (content, options) => {\n const props = Object.assign({}, { id: getId(), type: TYPE.DEFAULT }, options, {\n content\n });\n events.emit(EVENTS.ADD, props);\n return props.id;\n };\n toast.clear = () => events.emit(EVENTS.CLEAR, void 0);\n toast.updateDefaults = (update) => {\n events.emit(EVENTS.UPDATE_DEFAULTS, update);\n };\n toast.dismiss = (id) => {\n events.emit(EVENTS.DISMISS, id);\n };\n function updateToast(id, { content, options }, create = false) {\n const opt = Object.assign({}, options, { content });\n events.emit(EVENTS.UPDATE, {\n id,\n options: opt,\n create\n });\n }\n toast.update = updateToast;\n toast.success = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.SUCCESS }));\n toast.info = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.INFO }));\n toast.error = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.ERROR }));\n toast.warning = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.WARNING }));\n return toast;\n};\n\n// src/index.ts\nvar createMockToastInterface = () => {\n const toast = () => console.warn(`[${VT_NAMESPACE}] This plugin does not support SSR!`);\n return new Proxy(toast, {\n get() {\n return toast;\n }\n });\n};\nfunction createToastInterface(optionsOrEventBus) {\n if (!isBrowser()) {\n return createMockToastInterface();\n }\n if (isEventBusInterface(optionsOrEventBus)) {\n return buildInterface({ eventBus: optionsOrEventBus }, false);\n }\n return buildInterface(optionsOrEventBus, true);\n}\nvar toastInjectionKey = Symbol(\"VueToastification\");\nvar globalEventBus = new EventBus();\nvar VueToastificationPlugin = (App, options) => {\n if ((options == null ? void 0 : options.shareAppContext) === true) {\n options.shareAppContext = App;\n }\n const inter = createToastInterface(__spreadValues({\n eventBus: globalEventBus\n }, options));\n App.provide(toastInjectionKey, inter);\n};\nvar provideToast = (options) => {\n const toast = createToastInterface(options);\n if (getCurrentInstance()) {\n provide(toastInjectionKey, toast);\n }\n};\nvar useToast = (eventBus) => {\n if (eventBus) {\n return createToastInterface(eventBus);\n }\n const toast = getCurrentInstance() ? inject(toastInjectionKey, void 0) : void 0;\n return toast ? toast : createToastInterface(globalEventBus);\n};\nvar src_default = VueToastificationPlugin;\nexport {\n EventBus,\n POSITION,\n TYPE,\n createToastInterface,\n src_default as default,\n globalEventBus,\n provideToast,\n toastInjectionKey,\n useToast\n};\n"],"names":["i","__defProp","Object","defineProperty","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","prototype","hasOwnProperty","__propIsEnum","propertyIsEnumerable","__defNormalProp","obj","key","value","enumerable","configurable","writable","__spreadValues","a","b","prop","call","isFunction","isString","isNonEmptyString","trim","length","isUndefined","isObject","isTouchEvent","event","window","TouchEvent","isToastComponent","hasProp","isToastContent","component","c","isDOMRect","every","p","propKey","getId","getX","targetTouches","clientX","getY","clientY","TYPE","TYPE2","POSITION","POSITION2","EVENTS","EVENTS2","getVueComponentFromObj","tag","isJSX","render","isBrowser","EventBus","constructor","this","allHandlers","getHandlers","eventType","on","handler","handlers","push","off","splice","indexOf","emit","forEach","isEventBusInterface","e","f","VT_NAMESPACE","COMMON","type","String","default","DEFAULT","classNames","Array","trueBoolean","Boolean","ICON","customIcon","Function","CLOSE_BUTTON","showOnHover","ariaLabel","PROGRESS_BAR","timeout","Number","hideProgressBar","isRunning","TRANSITION","transition","propValidators_default","CORE_TOAST","position","TOP_RIGHT","draggable","draggablePercent","pauseOnFocusLoss","pauseOnHover","closeOnClick","toastClassName","bodyClassName","icon","closeButton","closeButtonClassName","showCloseButtonOnHover","accessibility","toastRole","closeButtonLabel","rtl","eventBus","required","TOAST","id","content","onClick","onClose","CONTAINER","container","document","body","newestOnTop","maxToasts","toastDefaults","filterBeforeCreate","toast","filterToasts","toasts","containerClassName","onMounted","shareAppContext","VtProgressBar_default","name","props","data","hasClass","computed","style","animationDuration","animationPlayState","opacity","cpClass","watch","$nextTick","mounted","$el","addEventListener","animationEnded","beforeUnmount","removeEventListener","methods","$emit","_ctx","_cache","class","VtProgressBar_default2","VtCloseButton_default","buttonComponent","classes","concat","_hoisted_1","$attrs","_","VtCloseButton_default2","VtSuccessIcon_default","_hoisted_12","focusable","role","xmlns","viewBox","_hoisted_3","fill","d","VtSuccessIcon_default2","VtInfoIcon_default","_hoisted_13","_hoisted_32","VtInfoIcon_default2","VtWarningIcon_default","_hoisted_14","_hoisted_33","VtWarningIcon_default2","VtErrorIcon_default","_hoisted_15","_hoisted_34","VtErrorIcon_default2","VtIcon_default","customIconChildren","trimValue","iconChildren","customIconClass","iconClass","customIconTag","iconTag","hasCustomIcon","iconTypeComponent","INFO","SUCCESS","ERROR","WARNING","iconClasses","empty","VtIcon_default2","VtToast_default","components","ProgressBar","CloseButton","Icon","inheritAttrs","assign","disableTransitions","beingDragged","dragStart","dragPos","x","y","dragRect","bodyClasses","draggableStyle","transform","dragDelta","Math","abs","removalDistance","right","left","draggableSetup","focusSetup","draggableCleanup","focusCleanup","closeToast","DISMISS","clickHandler","timeoutHandler","hoverPause","hoverPlay","focusPause","focusPlay","element","onDragStart","passive","onDragMove","onDragEnd","getBoundingClientRect","preventDefault","setTimeout","bottom","top","_hoisted_16","_component_Icon","_component_CloseButton","_component_ProgressBar","args","onMouseenter","onMouseleave","listeners","onCloseToast","VtToast_default2","VtTransition_default","emits","leave","el","HTMLElement","offsetLeft","offsetTop","width","getComputedStyle","enter","move","onLeave","$slots","VtTransition_default2","VtToastContainer_default","devtools","hide","Toast","VtTransition","count","positions","values","defaults","toastArray","filteredToasts","beforeMount","events","ADD","addToast","CLEAR","clearToasts","dismissToast","UPDATE","updateToast","UPDATE_DEFAULTS","updateDefaults","$props","setup","async","remove","parentNode","removeChild","appendChild","setToast","params","normalizeToastComponent","keys","getPositionToasts","filter","slice","reverse","update","options","create","getClasses","_component_Toast","_component_VtTransition","pos","VtToastContainer_default2","buildInterface","globalOptions","mountContainer","app","mount","createElement","baseApp","console","warn","_context","directives","mixins","provides","config","globalProperties","clear","dismiss","opt","success","info","error","warning","createMockToastInterface","Proxy","get","createToastInterface","optionsOrEventBus","toastInjectionKey","Symbol","globalEventBus","src_default","App","inter","provide"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/218.3f34b833.js b/_static/kpm/js/218.3f34b833.js new file mode 100644 index 00000000..31f4ed7c --- /dev/null +++ b/_static/kpm/js/218.3f34b833.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[218],{41218:(e,t,r)=>{r.d(t,{yR:()=>c,C5:()=>n,HD:()=>y,ZT:()=>O,zr:()=>s,Ly:()=>b,BK:()=>m,IY:()=>i});var o,p=r(2262);Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const n="undefined"!=typeof window,y=(Object.prototype.toString,e=>"string"==typeof e),O=()=>{};function b(e){return"function"==typeof e?e():(0,p.SU)(e)}function c(e){return e}function s(e,t,r=!1){return t.reduce(((t,o)=>(o in e&&(r&&void 0===e[o]||(t[o]=e[o])),t)),{})}function i(e){return!!(0,p.nZ)()&&((0,p.EB)(e),!0)}n&&(null==(o=null==window?void 0:window.navigator)?void 0:o.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent),Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var j=Object.defineProperty,a=Object.defineProperties,l=Object.getOwnPropertyDescriptors,P=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,w=Object.prototype.propertyIsEnumerable,f=(e,t,r)=>t in e?j(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,d=(e,t)=>{for(var r in t||(t={}))u.call(t,r)&&f(e,r,t[r]);if(P)for(var r of P(t))w.call(t,r)&&f(e,r,t[r]);return e},g=(e,t)=>a(e,l(t));function m(e){if(!(0,p.dq)(e))return(0,p.BK)(e);const t=Array.isArray(e.value)?new Array(e.value.length):{};for(const r in e.value)t[r]=(0,p.ZM)((()=>({get:()=>e.value[r],set(t){if(Array.isArray(e.value)){const o=[...e.value];o[r]=t,e.value=o}else{const o=g(d({},e.value),{[r]:t});Object.setPrototypeOf(o,e.value),e.value=o}}})));return t}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable}}]); +//# sourceMappingURL=218.3f34b833.js.map \ No newline at end of file diff --git a/_static/kpm/js/218.3f34b833.js.map b/_static/kpm/js/218.3f34b833.js.map new file mode 100644 index 00000000..85bd7357 --- /dev/null +++ b/_static/kpm/js/218.3f34b833.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/218.3f34b833.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/@vueuse/shared/index.mjs"],"sourcesContent":["import { shallowRef, watchEffect, readonly, unref, ref, isVue3, version, watch, customRef, getCurrentScope, onScopeDispose, effectScope, provide, inject, isRef, computed, reactive, toRefs as toRefs$1, toRef, isVue2, set as set$1, getCurrentInstance, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nvar __defProp$9 = Object.defineProperty;\nvar __defProps$6 = Object.defineProperties;\nvar __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$b = Object.getOwnPropertySymbols;\nvar __hasOwnProp$b = Object.prototype.hasOwnProperty;\nvar __propIsEnum$b = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$9 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n if (__getOwnPropSymbols$b)\n for (var prop of __getOwnPropSymbols$b(b)) {\n if (__propIsEnum$b.call(b, prop))\n __defNormalProp$9(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, __spreadProps$6(__spreadValues$9({}, options), {\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n }));\n return readonly(result);\n}\n\nvar _a;\nconst isClient = typeof window !== \"undefined\";\nconst isDef = (val) => typeof val !== \"undefined\";\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isBoolean = (val) => typeof val === \"boolean\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isNumber = (val) => typeof val === \"number\";\nconst isString = (val) => typeof val === \"string\";\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst isWindow = (val) => typeof window !== \"undefined\" && toString.call(val) === \"[object Window]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\n\nfunction resolveUnref(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = resolveUnref(ms);\n const maxDuration = resolveUnref(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = resolveUnref(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction __onlyVue3(name = \"this function\") {\n if (isVue3)\n return;\n throw new Error(`[VueUse] ${name} is only works on Vue 3.`);\n}\nfunction __onlyVue27Plus(name = \"this function\") {\n if (isVue3 || version.startsWith(\"2.7.\"))\n return;\n throw new Error(`[VueUse] ${name} is only works on Vue 2.7 or above.`);\n}\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = isFunction(fn) ? fn : fn.get;\n const set = isFunction(fn) ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get();\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = [];\n const off = (fn) => {\n const index = fns.indexOf(fn);\n if (index !== -1)\n fns.splice(index, 1);\n };\n const on = (fn) => {\n fns.push(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n fns.forEach((fn) => fn(param));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return () => {\n if (!initialized) {\n state = scope.run(stateFactory);\n initialized = true;\n }\n return state;\n };\n}\n\nfunction createInjectionState(composable) {\n const key = Symbol(\"InjectionState\");\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provide(key, state);\n return state;\n };\n const useInjectedState = () => inject(key);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!state) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n __onlyVue27Plus();\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropSymbols$a = Object.getOwnPropertySymbols;\nvar __hasOwnProp$a = Object.prototype.hasOwnProperty;\nvar __propIsEnum$a = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$8 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n if (__getOwnPropSymbols$a)\n for (var prop of __getOwnPropSymbols$a(b)) {\n if (__propIsEnum$a.call(b, prop))\n __defNormalProp$8(a, prop, b[prop]);\n }\n return a;\n};\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = __spreadValues$8({}, obj);\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : resolveUnref;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n }));\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n return reactiveComputed(() => Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n return reactive(Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = defaultValue;\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = defaultValue;\n trigger();\n }, resolveUnref(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(debounceFilter(ms, options), fn);\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn);\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(ref, {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n }, { enumerable: true });\n}\nconst controlledRef = refWithControl;\n\nfunction resolveRef(r) {\n return typeof r === \"function\" ? computed(r) : ref(r);\n}\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction syncRef(left, right, options = {}) {\n var _a, _b;\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options;\n let watchLeft;\n let watchRight;\n const transformLTR = (_a = transform.ltr) != null ? _a : (v) => v;\n const transformRTL = (_b = transform.rtl) != null ? _b : (v) => v;\n if (direction === \"both\" || direction === \"ltr\") {\n watchLeft = watch(left, (newValue) => right.value = transformLTR(newValue), { flush, deep, immediate });\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchRight = watch(right, (newValue) => left.value = transformRTL(newValue), { flush, deep, immediate });\n }\n return () => {\n watchLeft == null ? void 0 : watchLeft();\n watchRight == null ? void 0 : watchRight();\n };\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(source, (newValue) => targets.forEach((target) => target.value = newValue), { flush, deep, immediate });\n}\n\nvar __defProp$7 = Object.defineProperty;\nvar __defProps$5 = Object.defineProperties;\nvar __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$9 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$9 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$7 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n if (__getOwnPropSymbols$9)\n for (var prop of __getOwnPropSymbols$9(b)) {\n if (__propIsEnum$9.call(b, prop))\n __defNormalProp$7(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));\nfunction toRefs(objectRef) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = __spreadProps$5(__spreadValues$7({}, objectRef.value), { [key]: v });\n Object.setPrototypeOf(newObject, objectRef.value);\n objectRef.value = newObject;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n if (getCurrentInstance())\n onBeforeMount(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n if (getCurrentInstance())\n onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n if (getCurrentInstance())\n onMounted(fn);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n if (getCurrentInstance())\n onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(r, (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n }, {\n flush,\n deep,\n immediate: true\n });\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => stop == null ? void 0 : stop()));\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch([r, value], ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n }, {\n flush,\n deep,\n immediate: true\n });\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => {\n stop == null ? void 0 : stop();\n return resolveUnref(r);\n }));\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(resolveUnref(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(resolveUnref(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => resolveUnref(list).every((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => resolveUnref(resolveUnref(list).find((element, index, array) => fn(resolveUnref(element), index, array))));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => resolveUnref(list).findIndex((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => resolveUnref(!Array.prototype.findLast ? findLast(resolveUnref(list), (element, index, array) => fn(resolveUnref(element), index, array)) : resolveUnref(list).findLast((element, index, array) => fn(resolveUnref(element), index, array))));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).join(resolveUnref(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(resolveUnref(sum), resolveUnref(value), index);\n return computed(() => {\n const resolved = resolveUnref(list);\n return args.length ? resolved.reduce(reduceCallback, resolveUnref(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => resolveUnref(list).some((element, index, array) => fn(resolveUnref(element), index, array)));\n}\n\nfunction useArrayUnique(list) {\n return computed(() => [...new Set(resolveUnref(list).map((element) => resolveUnref(element)))]);\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n const count = ref(initialValue);\n const {\n max = Infinity,\n min = -Infinity\n } = options;\n const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = initialValue) => {\n initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nconst defaultMeridiem = (hours, minutes, isLowercase, hasPeriod) => {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n};\nconst formatDate = (date, formatStr, options = {}) => {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n D: () => String(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match]());\n};\nconst normalizeDate = (date) => {\n if (date === null)\n return new Date(NaN);\n if (date === void 0)\n return new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n};\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(resolveUnref(date)), resolveUnref(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = resolveUnref(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || isFunction(interval)) {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nvar __defProp$6 = Object.defineProperty;\nvar __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$8 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$8 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$6 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n if (__getOwnPropSymbols$8)\n for (var prop of __getOwnPropSymbols$8(b)) {\n if (__propIsEnum$8.call(b, prop))\n __defNormalProp$6(a, prop, b[prop]);\n }\n return a;\n};\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(callback ? () => {\n update();\n callback(counter.value);\n } : update, interval, { immediate });\n if (exposeControls) {\n return __spreadValues$6({\n counter,\n reset\n }, controls);\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(source, () => ms.value = timestamp(), options);\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, resolveUnref(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$7 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$7 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$5 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n if (__getOwnPropSymbols$7)\n for (var prop of __getOwnPropSymbols$7(b)) {\n if (__propIsEnum$7.call(b, prop))\n __defNormalProp$5(a, prop, b[prop]);\n }\n return a;\n};\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(callback != null ? callback : noop, interval, options);\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return __spreadValues$5({\n ready\n }, controls);\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = resolveUnref(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${resolveUnref(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = resolveUnref(truthyValue);\n _value.value = _value.value === truthy ? resolveUnref(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [\n ...source instanceof Function ? source() : Array.isArray(source) ? source : unref(source)\n ];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = new Array(oldList.length);\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nvar __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$6 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$6 = Object.prototype.propertyIsEnumerable;\nvar __objRest$5 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$6)\n for (var prop of __getOwnPropSymbols$6(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchWithFilter(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$5(_a, [\n \"eventFilter\"\n ]);\n return watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n\nvar __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$5 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$5 = Object.prototype.propertyIsEnumerable;\nvar __objRest$4 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$5.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$5)\n for (var prop of __getOwnPropSymbols$5(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$5.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchAtMost(source, cb, options) {\n const _a = options, {\n count\n } = _a, watchOptions = __objRest$4(_a, [\n \"count\"\n ]);\n const current = ref(0);\n const stop = watchWithFilter(source, (...args) => {\n current.value += 1;\n if (current.value >= resolveUnref(count))\n nextTick(() => stop());\n cb(...args);\n }, watchOptions);\n return { count: current, stop };\n}\n\nvar __defProp$4 = Object.defineProperty;\nvar __defProps$4 = Object.defineProperties;\nvar __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$4 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$4 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$4 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n if (__getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(b)) {\n if (__propIsEnum$4.call(b, prop))\n __defNormalProp$4(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));\nvar __objRest$3 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$4)\n for (var prop of __getOwnPropSymbols$4(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchDebounced(source, cb, options = {}) {\n const _a = options, {\n debounce = 0,\n maxWait = void 0\n } = _a, watchOptions = __objRest$3(_a, [\n \"debounce\",\n \"maxWait\"\n ]);\n return watchWithFilter(source, cb, __spreadProps$4(__spreadValues$4({}, watchOptions), {\n eventFilter: debounceFilter(debounce, { maxWait })\n }));\n}\n\nvar __defProp$3 = Object.defineProperty;\nvar __defProps$3 = Object.defineProperties;\nvar __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$3 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$3 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$3 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n if (__getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(b)) {\n if (__propIsEnum$3.call(b, prop))\n __defNormalProp$3(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));\nvar __objRest$2 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$3)\n for (var prop of __getOwnPropSymbols$3(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchIgnorable(source, cb, options = {}) {\n const _a = options, {\n eventFilter = bypassFilter\n } = _a, watchOptions = __objRest$2(_a, [\n \"eventFilter\"\n ]);\n const filteredCb = createFilterWrapper(eventFilter, cb);\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(source, (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n }, watchOptions);\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(watch(source, () => {\n syncCounter.value++;\n }, __spreadProps$3(__spreadValues$3({}, watchOptions), { flush: \"sync\" })));\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(watch(source, (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n }, watchOptions));\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __defProps$2 = Object.defineProperties;\nvar __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b)) {\n if (__propIsEnum$2.call(b, prop))\n __defNormalProp$2(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));\nvar __objRest$1 = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchPausable(source, cb, options = {}) {\n const _a = options, {\n eventFilter: filter\n } = _a, watchOptions = __objRest$1(_a, [\n \"eventFilter\"\n ]);\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(source, cb, __spreadProps$2(__spreadValues$2({}, watchOptions), {\n eventFilter\n }));\n return { stop, pause, resume, isActive };\n}\n\nvar __defProp$1 = Object.defineProperty;\nvar __defProps$1 = Object.defineProperties;\nvar __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b)) {\n if (__propIsEnum$1.call(b, prop))\n __defNormalProp$1(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nfunction watchThrottled(source, cb, options = {}) {\n const _a = options, {\n throttle = 0,\n trailing = true,\n leading = true\n } = _a, watchOptions = __objRest(_a, [\n \"throttle\",\n \"trailing\",\n \"leading\"\n ]);\n return watchWithFilter(source, cb, __spreadProps$1(__spreadValues$1({}, watchOptions), {\n eventFilter: throttleFilter(throttle, trailing, leading)\n }));\n}\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return __spreadProps(__spreadValues({}, res), {\n trigger\n });\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => getOneWatchSource(item));\n return getOneWatchSource(sources);\n}\nfunction getOneWatchSource(source) {\n return typeof source === \"function\" ? source() : unref(source);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n return watch(source, (v, ov, onInvalidate) => {\n if (v)\n cb(v, ov, onInvalidate);\n }, options);\n}\n\nexport { __onlyVue27Plus, __onlyVue3, assert, refAutoReset as autoResetRef, bypassFilter, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isBoolean, isClient, isDef, isDefined, isFunction, isIOS, isNumber, isObject, isString, isWindow, makeDestructurable, noop, normalizeDate, now, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchIgnorable, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n"],"names":["_a","Object","defineProperty","defineProperties","getOwnPropertyDescriptors","getOwnPropertySymbols","prototype","hasOwnProperty","propertyIsEnumerable","isClient","window","isString","toString","val","noop","resolveUnref","r","identity","arg","objectPick","obj","keys","omitUndefined","reduce","n","k","tryOnScopeDispose","fn","navigator","userAgent","test","__defProp$7","__defProps$5","__getOwnPropDescs$5","__getOwnPropSymbols$9","__hasOwnProp$9","__propIsEnum$9","__defNormalProp$7","key","value","enumerable","configurable","writable","__spreadValues$7","a","b","prop","call","__spreadProps$5","toRefs","objectRef","result","Array","isArray","length","get","set","v","copy","newObject","setPrototypeOf"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/kpm/js/252.2482d7ce.js b/_static/kpm/js/252.2482d7ce.js new file mode 100644 index 00000000..c49f6430 --- /dev/null +++ b/_static/kpm/js/252.2482d7ce.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpipeline_manager=self.webpackChunkpipeline_manager||[]).push([[252],{66252:(e,n,t)=>{t.d(n,{$d:()=>s,Cn:()=>J,FN:()=>Zn,Fl:()=>lt,HY:()=>vn,JJ:()=>$,Jd:()=>he,Ko:()=>Se,LL:()=>Te,P$:()=>Z,Q2:()=>we,Q6:()=>ee,U2:()=>X,Uk:()=>Ln,Us:()=>hn,WI:()=>Ae,Wm:()=>Un,Y3:()=>v,Y8:()=>N,YP:()=>K,_:()=>En,aZ:()=>ne,bv:()=>fe,dD:()=>A,dG:()=>Vn,f3:()=>D,h:()=>rt,iD:()=>wn,ic:()=>de,j4:()=>Rn,kq:()=>Dn,mx:()=>je,nK:()=>z,uE:()=>$n,up:()=>Fe,w5:()=>j,wg:()=>Cn,wy:()=>be});var o=t(2262),l=t(3577);function r(e,n,t,o){let l;try{l=o?e(...o):e()}catch(e){i(e,n,t)}return l}function s(e,n,t,o){if((0,l.mf)(e)){const s=r(e,n,t,o);return s&&(0,l.tI)(s)&&s.catch((e=>{i(e,n,t)})),s}const c=[];for(let l=0;l>>1;x(a[o])x(e)-x(n))),h=0;hnull==e.id?1/0:e.id,C=(e,n)=>{const t=x(e)-x(n);if(0===t){if(e.pre&&!n.pre)return-1;if(n.pre&&!e.pre)return 1}return t};function F(e){u=!1,c=!0,a.sort(C),l.dG;try{for(f=0;f(0,l.HD)(e)?e.trim():e))),n&&(r=t.map(l.h5))}let u,a=o[u=(0,l.hR)(n)]||o[u=(0,l.hR)((0,l._A)(n))];!a&&i&&(a=o[u=(0,l.hR)((0,l.rs)(n))]),a&&s(a,e,6,r);const f=o[u+"Once"];if(f){if(e.emitted){if(e.emitted[u])return}else e.emitted={};e.emitted[u]=!0,s(f,e,6,r)}}function T(e,n,t=!1){const o=n.emitsCache,r=o.get(e);if(void 0!==r)return r;const s=e.emits;let i={},c=!1;if(!(0,l.mf)(e)){const o=e=>{const t=T(e,n,!0);t&&(c=!0,(0,l.l7)(i,t))};!t&&n.mixins.length&&n.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return s||c?((0,l.kJ)(s)?s.forEach((e=>i[e]=null)):(0,l.l7)(i,s),(0,l.Kn)(e)&&o.set(e,i),i):((0,l.Kn)(e)&&o.set(e,null),null)}function w(e,n){return!(!e||!(0,l.F7)(n))&&(n=n.slice(2).replace(/Once$/,""),(0,l.RI)(e,n[0].toLowerCase()+n.slice(1))||(0,l.RI)(e,(0,l.rs)(n))||(0,l.RI)(e,n))}new Set,new Map;let R=null,O=null;function S(e){const n=R;return R=e,O=e&&e.type.__scopeId||null,n}function A(e){O=e}function J(){O=null}function j(e,n=R,t){if(!n)return e;if(e._n)return e;const o=(...t)=>{o._d&&In(-1);const l=S(n);let r;try{r=e(...t)}finally{S(l),o._d&&In(1)}return r};return o._n=!0,o._c=!0,o._d=!0,o}function E(e){const{type:n,vnode:t,proxy:o,withProxy:r,props:s,propsOptions:[c],slots:u,attrs:a,emit:f,render:p,renderCache:d,data:h,setupState:m,ctx:g,inheritAttrs:v}=e;let y,_;const b=S(e);try{if(4&t.shapeFlag){const e=r||o;y=Mn(p.call(e,e,d,s,m,h,g)),_=a}else{const e=n;y=Mn(e.length>1?e(s,{attrs:a,slots:u,emit:f}):e(s,null)),_=n.props?a:U(a)}}catch(n){kn.length=0,i(n,e,1),y=Un(_n)}let k=y;if(_&&!1!==v){const e=Object.keys(_),{shapeFlag:n}=k;e.length&&7&n&&(c&&e.some(l.tR)&&(_=P(_,c)),k=Pn(k,_))}return t.dirs&&(k=Pn(k),k.dirs=k.dirs?k.dirs.concat(t.dirs):t.dirs),t.transition&&(k.transition=t.transition),y=k,S(b),y}const U=e=>{let n;for(const t in e)("class"===t||"style"===t||(0,l.F7)(t))&&((n||(n={}))[t]=e[t]);return n},P=(e,n)=>{const t={};for(const o in e)(0,l.tR)(o)&&o.slice(9)in n||(t[o]=e[o]);return t};function L(e,n,t){const o=Object.keys(n);if(o.length!==Object.keys(e).length)return!0;for(let l=0;l1)return t&&(0,l.mf)(n)?n.call(o.proxy):n}}const M={};function K(e,n,t){return B(e,n,t)}function B(e,n,{immediate:t,deep:i,flush:c,onTrack:u,onTrigger:a}=l.kT){const f=(0,o.nZ)()===(null==qn?void 0:qn.scope)?qn:null;let p,d,h=!1,m=!1;if((0,o.dq)(e)?(p=()=>e.value,h=(0,o.yT)(e)):(0,o.PG)(e)?(p=()=>e,i=!0):(0,l.kJ)(e)?(m=!0,h=e.some((e=>(0,o.PG)(e)||(0,o.yT)(e))),p=()=>e.map((e=>(0,o.dq)(e)?e.value:(0,o.PG)(e)?H(e):(0,l.mf)(e)?r(e,f,2):void 0))):p=(0,l.mf)(e)?n?()=>r(e,f,2):()=>{if(!f||!f.isUnmounted)return d&&d(),s(e,f,3,[v])}:l.dG,n&&i){const e=p;p=()=>H(e())}let g,v=e=>{d=x.onStop=()=>{r(e,f,4)}};if(et){if(v=l.dG,n?t&&s(n,f,3,[p(),m?[]:void 0,v]):p(),"sync"!==c)return l.dG;{const e=it();g=e.__watcherHandles||(e.__watcherHandles=[])}}let _=m?new Array(e.length).fill(M):M;const b=()=>{if(x.active)if(n){const e=x.run();(i||h||(m?e.some(((e,n)=>(0,l.aU)(e,_[n]))):(0,l.aU)(e,_)))&&(d&&d(),s(n,f,3,[e,_===M?void 0:m&&_[0]===M?[]:_,v]),_=e)}else x.run()};let k;b.allowRecurse=!!n,"sync"===c?k=b:"post"===c?k=()=>dn(b,f&&f.suspense):(b.pre=!0,f&&(b.id=f.uid),k=()=>y(b));const x=new o.qq(p,k);n?t?b():_=x.run():"post"===c?dn(x.run.bind(x),f&&f.suspense):x.run();const C=()=>{x.stop(),f&&f.scope&&(0,l.Od)(f.scope.effects,x)};return g&&g.push(C),C}function V(e,n,t){const o=this.proxy,r=(0,l.HD)(e)?e.includes(".")?G(o,e):()=>o[e]:e.bind(o,o);let s;(0,l.mf)(n)?s=n:(s=n.handler,t=n);const i=qn;Wn(this);const c=B(r,s.bind(o),t);return i?Wn(i):Xn(),c}function G(e,n){const t=n.split(".");return()=>{let n=e;for(let e=0;e{H(e,n)}));else if((0,l.PO)(e))for(const t in e)H(e[t],n);return e}function N(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return fe((()=>{e.isMounted=!0})),he((()=>{e.isUnmounting=!0})),e}const q=[Function,Array],Z={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:q,onEnter:q,onAfterEnter:q,onEnterCancelled:q,onBeforeLeave:q,onLeave:q,onAfterLeave:q,onLeaveCancelled:q,onBeforeAppear:q,onAppear:q,onAfterAppear:q,onAppearCancelled:q},setup(e,{slots:n}){const t=Zn(),l=N();let r;return()=>{const s=n.default&&ee(n.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1){let e=!1;for(const n of s)if(n.type!==_n){i=n,e=!0;break}}const c=(0,o.IU)(e),{mode:u}=c;if(l.isLeaving)return Y(i);const a=Q(i);if(!a)return Y(i);const f=X(a,c,l,t);z(a,f);const p=t.subTree,d=p&&Q(p);let h=!1;const{getTransitionKey:m}=a.type;if(m){const e=m();void 0===r?r=e:e!==r&&(r=e,h=!0)}if(d&&d.type!==_n&&(!Sn(a,d)||h)){const e=X(d,c,l,t);if(z(d,e),"out-in"===u)return l.isLeaving=!0,e.afterLeave=()=>{l.isLeaving=!1,!1!==t.update.active&&t.update()},Y(i);"in-out"===u&&a.type!==_n&&(e.delayLeave=(e,n,t)=>{W(l,d)[String(d.key)]=d,e._leaveCb=()=>{n(),e._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=t})}return i}}};function W(e,n){const{leavingVNodes:t}=e;let o=t.get(n.type);return o||(o=Object.create(null),t.set(n.type,o)),o}function X(e,n,t,o){const{appear:r,mode:i,persisted:c=!1,onBeforeEnter:u,onEnter:a,onAfterEnter:f,onEnterCancelled:p,onBeforeLeave:d,onLeave:h,onAfterLeave:m,onLeaveCancelled:g,onBeforeAppear:v,onAppear:y,onAfterAppear:_,onAppearCancelled:b}=n,k=String(e.key),x=W(t,e),C=(e,n)=>{e&&s(e,o,9,n)},F=(e,n)=>{const t=n[1];C(e,n),(0,l.kJ)(e)?e.every((e=>e.length<=1))&&t():e.length<=1&&t()},I={mode:i,persisted:c,beforeEnter(n){let o=u;if(!t.isMounted){if(!r)return;o=v||u}n._leaveCb&&n._leaveCb(!0);const l=x[k];l&&Sn(e,l)&&l.el._leaveCb&&l.el._leaveCb(),C(o,[n])},enter(e){let n=a,o=f,l=p;if(!t.isMounted){if(!r)return;n=y||a,o=_||f,l=b||p}let s=!1;const i=e._enterCb=n=>{s||(s=!0,C(n?l:o,[e]),I.delayedLeave&&I.delayedLeave(),e._enterCb=void 0)};n?F(n,[e,i]):i()},leave(n,o){const l=String(e.key);if(n._enterCb&&n._enterCb(!0),t.isUnmounting)return o();C(d,[n]);let r=!1;const s=n._leaveCb=t=>{r||(r=!0,o(),C(t?g:m,[n]),n._leaveCb=void 0,x[l]===e&&delete x[l])};x[l]=e,h?F(h,[n,s]):s()},clone:e=>X(e,n,t,o)};return I}function Y(e){if(oe(e))return(e=Pn(e)).children=null,e}function Q(e){return oe(e)?e.children?e.children[0]:void 0:e}function z(e,n){6&e.shapeFlag&&e.component?z(e.component.subTree,n):128&e.shapeFlag?(e.ssContent.transition=n.clone(e.ssContent),e.ssFallback.transition=n.clone(e.ssFallback)):e.transition=n}function ee(e,n=!1,t){let o=[],l=0;for(let r=0;r1)for(let e=0;e!!e.type.__asyncLoader,oe=e=>e.type.__isKeepAlive;function le(e,n){se(e,"a",n)}function re(e,n){se(e,"da",n)}function se(e,n,t=qn){const o=e.__wdc||(e.__wdc=()=>{let n=t;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(ce(n,o,t),t){let e=t.parent;for(;e&&e.parent;)oe(e.parent.vnode)&&ie(o,n,t,e),e=e.parent}}function ie(e,n,t,o){const r=ce(n,e,o,!0);me((()=>{(0,l.Od)(o[n],r)}),t)}function ce(e,n,t=qn,l=!1){if(t){const r=t[e]||(t[e]=[]),i=n.__weh||(n.__weh=(...l)=>{if(t.isUnmounted)return;(0,o.Jd)(),Wn(t);const r=s(n,t,e,l);return Xn(),(0,o.lk)(),r});return l?r.unshift(i):r.push(i),i}}RegExp,RegExp;const ue=e=>(n,t=qn)=>(!et||"sp"===e)&&ce(e,((...e)=>n(...e)),t),ae=ue("bm"),fe=ue("m"),pe=ue("bu"),de=ue("u"),he=ue("bum"),me=ue("um"),ge=ue("sp"),ve=ue("rtg"),ye=ue("rtc");function _e(e,n=qn){ce("ec",e,n)}function be(e,n){const t=R;if(null===t)return e;const o=ot(t)||t.proxy,r=e.dirs||(e.dirs=[]);for(let e=0;en(e,t,void 0,s&&s[t])));else{const t=Object.keys(e);r=new Array(t.length);for(let o=0,l=t.length;o!On(e)||e.type!==_n&&!(e.type===vn&&!Je(e.children))))?e:null}function je(e,n){const t={};for(const o in e)t[n&&/[A-Z]/.test(o)?`on:${o}`:(0,l.hR)(o)]=e[o];return t}const Ee=e=>e?Yn(e)?ot(e)||e.proxy:Ee(e.parent):null,Ue=(0,l.l7)(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ee(e.parent),$root:e=>Ee(e.root),$emit:e=>e.emit,$options:e=>Ke(e),$forceUpdate:e=>e.f||(e.f=()=>y(e.update)),$nextTick:e=>e.n||(e.n=v.bind(e.proxy)),$watch:e=>V.bind(e)}),Pe=(e,n)=>e!==l.kT&&!e.__isScriptSetup&&(0,l.RI)(e,n),Le={get({_:e},n){const{ctx:t,setupState:r,data:s,props:i,accessCache:c,type:u,appContext:a}=e;let f;if("$"!==n[0]){const o=c[n];if(void 0!==o)switch(o){case 1:return r[n];case 2:return s[n];case 4:return t[n];case 3:return i[n]}else{if(Pe(r,n))return c[n]=1,r[n];if(s!==l.kT&&(0,l.RI)(s,n))return c[n]=2,s[n];if((f=e.propsOptions[0])&&(0,l.RI)(f,n))return c[n]=3,i[n];if(t!==l.kT&&(0,l.RI)(t,n))return c[n]=4,t[n];$e&&(c[n]=0)}}const p=Ue[n];let d,h;return p?("$attrs"===n&&(0,o.j)(e,"get",n),p(e)):(d=u.__cssModules)&&(d=d[n])?d:t!==l.kT&&(0,l.RI)(t,n)?(c[n]=4,t[n]):(h=a.config.globalProperties,(0,l.RI)(h,n)?h[n]:void 0)},set({_:e},n,t){const{data:o,setupState:r,ctx:s}=e;return Pe(r,n)?(r[n]=t,!0):o!==l.kT&&(0,l.RI)(o,n)?(o[n]=t,!0):!((0,l.RI)(e.props,n)||"$"===n[0]&&n.slice(1)in e||(s[n]=t,0))},has({_:{data:e,setupState:n,accessCache:t,ctx:o,appContext:r,propsOptions:s}},i){let c;return!!t[i]||e!==l.kT&&(0,l.RI)(e,i)||Pe(n,i)||(c=s[0])&&(0,l.RI)(c,i)||(0,l.RI)(o,i)||(0,l.RI)(Ue,i)||(0,l.RI)(r.config.globalProperties,i)},defineProperty(e,n,t){return null!=t.get?e._.accessCache[n]=0:(0,l.RI)(t,"value")&&this.set(e,n,t.value,null),Reflect.defineProperty(e,n,t)}};let $e=!0;function De(e,n,t){s((0,l.kJ)(e)?e.map((e=>e.bind(n.proxy))):e.bind(n.proxy),n,t)}function Me(e,n,t,o){const r=o.includes(".")?G(t,o):()=>t[o];if((0,l.HD)(e)){const t=n[e];(0,l.mf)(t)&&K(r,t)}else if((0,l.mf)(e))K(r,e.bind(t));else if((0,l.Kn)(e))if((0,l.kJ)(e))e.forEach((e=>Me(e,n,t,o)));else{const o=(0,l.mf)(e.handler)?e.handler.bind(t):n[e.handler];(0,l.mf)(o)&&K(r,o,e)}}function Ke(e){const n=e.type,{mixins:t,extends:o}=n,{mixins:r,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,c=s.get(n);let u;return c?u=c:r.length||t||o?(u={},r.length&&r.forEach((e=>Be(u,e,i,!0))),Be(u,n,i)):u=n,(0,l.Kn)(n)&&s.set(n,u),u}function Be(e,n,t,o=!1){const{mixins:l,extends:r}=n;r&&Be(e,r,t,!0),l&&l.forEach((n=>Be(e,n,t,!0)));for(const l in n)if(o&&"expose"===l);else{const o=Ve[l]||t&&t[l];e[l]=o?o(e[l],n[l]):n[l]}return e}const Ve={data:Ge,props:qe,emits:qe,methods:qe,computed:qe,beforeCreate:Ne,created:Ne,beforeMount:Ne,mounted:Ne,beforeUpdate:Ne,updated:Ne,beforeDestroy:Ne,beforeUnmount:Ne,destroyed:Ne,unmounted:Ne,activated:Ne,deactivated:Ne,errorCaptured:Ne,serverPrefetch:Ne,components:qe,directives:qe,watch:function(e,n){if(!e)return n;if(!n)return e;const t=(0,l.l7)(Object.create(null),e);for(const o in n)t[o]=Ne(e[o],n[o]);return t},provide:Ge,inject:function(e,n){return qe(He(e),He(n))}};function Ge(e,n){return n?e?function(){return(0,l.l7)((0,l.mf)(e)?e.call(this,this):e,(0,l.mf)(n)?n.call(this,this):n)}:n:e}function He(e){if((0,l.kJ)(e)){const n={};for(let t=0;t{u=!0;const[t,o]=Xe(e,n,!0);(0,l.l7)(i,t),o&&c.push(...o)};!t&&n.mixins.length&&n.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}if(!s&&!u)return(0,l.Kn)(e)&&o.set(e,l.Z6),l.Z6;if((0,l.kJ)(s))for(let e=0;e-1,o[1]=t<0||e-1||(0,l.RI)(o,"default"))&&c.push(n)}}}const a=[i,c];return(0,l.Kn)(e)&&o.set(e,a),a}function Ye(e){return"$"!==e[0]}function Qe(e){const n=e&&e.toString().match(/^\s*(function|class) (\w+)/);return n?n[2]:null===e?"null":""}function ze(e,n){return Qe(e)===Qe(n)}function en(e,n){return(0,l.kJ)(n)?n.findIndex((n=>ze(n,e))):(0,l.mf)(n)&&ze(n,e)?0:-1}const nn=e=>"_"===e[0]||"$stable"===e,tn=e=>(0,l.kJ)(e)?e.map(Mn):[Mn(e)],on=(e,n,t)=>{if(n._n)return n;const o=j(((...e)=>tn(n(...e))),t);return o._c=!1,o},ln=(e,n,t)=>{const o=e._ctx;for(const t in e){if(nn(t))continue;const r=e[t];if((0,l.mf)(r))n[t]=on(0,r,o);else if(null!=r){const e=tn(r);n[t]=()=>e}}},rn=(e,n)=>{const t=tn(n);e.slots.default=()=>t},sn=(e,n)=>{if(32&e.vnode.shapeFlag){const t=n._;t?(e.slots=(0,o.IU)(n),(0,l.Nj)(n,"_",t)):ln(n,e.slots={})}else e.slots={},n&&rn(e,n);(0,l.Nj)(e.slots,An,1)},cn=(e,n,t)=>{const{vnode:o,slots:r}=e;let s=!0,i=l.kT;if(32&o.shapeFlag){const e=n._;e?t&&1===e?s=!1:((0,l.l7)(r,n),t||1!==e||delete r._):(s=!n.$stable,ln(n,r)),i=n}else n&&(rn(e,n),i={default:1});if(s)for(const e in r)nn(e)||e in i||delete r[e]};function un(){return{app:null,config:{isNativeTag:l.NO,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let an=0;function fn(e,n){return function(t,o=null){(0,l.mf)(t)||(t=Object.assign({},t)),null==o||(0,l.Kn)(o)||(o=null);const r=un(),s=new Set;let i=!1;const c=r.app={_uid:an++,_component:t,_props:o,_container:null,_context:r,_instance:null,version:ct,get config(){return r.config},set config(e){},use:(e,...n)=>(s.has(e)||(e&&(0,l.mf)(e.install)?(s.add(e),e.install(c,...n)):(0,l.mf)(e)&&(s.add(e),e(c,...n))),c),mixin:e=>(r.mixins.includes(e)||r.mixins.push(e),c),component:(e,n)=>n?(r.components[e]=n,c):r.components[e],directive:(e,n)=>n?(r.directives[e]=n,c):r.directives[e],mount(l,s,u){if(!i){const a=Un(t,o);return a.appContext=r,s&&n?n(a,l):e(a,l,u),i=!0,c._container=l,l.__vue_app__=c,ot(a.component)||a.component.proxy}},unmount(){i&&(e(null,c._container),delete c._container.__vue_app__)},provide:(e,n)=>(r.provides[e]=n,c)};return c}}function pn(e,n,t,s,i=!1){if((0,l.kJ)(e))return void e.forEach(((e,o)=>pn(e,n&&((0,l.kJ)(n)?n[o]:n),t,s,i)));if(te(s)&&!i)return;const c=4&s.shapeFlag?ot(s.component)||s.component.proxy:s.el,u=i?null:c,{i:a,r:f}=e,p=n&&n.r,d=a.refs===l.kT?a.refs={}:a.refs,h=a.setupState;if(null!=p&&p!==f&&((0,l.HD)(p)?(d[p]=null,(0,l.RI)(h,p)&&(h[p]=null)):(0,o.dq)(p)&&(p.value=null)),(0,l.mf)(f))r(f,a,12,[u,d]);else{const n=(0,l.HD)(f),r=(0,o.dq)(f);if(n||r){const o=()=>{if(e.f){const t=n?(0,l.RI)(h,f)?h[f]:d[f]:f.value;i?(0,l.kJ)(t)&&(0,l.Od)(t,c):(0,l.kJ)(t)?t.includes(c)||t.push(c):n?(d[f]=[c],(0,l.RI)(h,f)&&(h[f]=d[f])):(f.value=[c],e.k&&(d[e.k]=f.value))}else n?(d[f]=u,(0,l.RI)(h,f)&&(h[f]=u)):r&&(f.value=u,e.k&&(d[e.k]=u))};u?(o.id=-1,dn(o,t)):o()}}}const dn=function(e,n){var t;n&&n.pendingBranch?(0,l.kJ)(e)?n.effects.push(...e):n.effects.push(e):(t=e,(0,l.kJ)(t)?p.push(...t):d&&d.includes(t,t.allowRecurse?h+1:h)||p.push(t),_())};function hn(e){return function(e,n){(0,l.E9)().__VUE__=!0;const{insert:t,remove:s,patchProp:c,createElement:u,createText:p,createComment:d,setText:h,setElementText:m,parentNode:g,nextSibling:v,setScopeId:_=l.dG,insertStaticContent:x}=e,C=(e,n,t,o=null,l=null,r=null,s=!1,i=null,c=!!n.dynamicChildren)=>{if(e===n)return;e&&!Sn(e,n)&&(o=ne(e),X(e,l,r,!0),e=null),-2===n.patchFlag&&(c=!1,n.dynamicChildren=null);const{type:u,ref:a,shapeFlag:f}=n;switch(u){case yn:F(e,n,t,o);break;case _n:R(e,n,t,o);break;case bn:null==e&&O(n,t,o,s);break;case vn:M(e,n,t,o,l,r,s,i,c);break;default:1&f?A(e,n,t,o,l,r,s,i,c):6&f?K(e,n,t,o,l,r,s,i,c):(64&f||128&f)&&u.process(e,n,t,o,l,r,s,i,c,re)}null!=a&&l&&pn(a,e&&e.ref,r,n||e,!n)},F=(e,n,o,l)=>{if(null==e)t(n.el=p(n.children),o,l);else{const t=n.el=e.el;n.children!==e.children&&h(t,n.children)}},R=(e,n,o,l)=>{null==e?t(n.el=d(n.children||""),o,l):n.el=e.el},O=(e,n,t,o)=>{[e.el,e.anchor]=x(e.children,n,t,o,e.el,e.anchor)},S=({el:e,anchor:n})=>{let t;for(;e&&e!==n;)t=v(e),s(e),e=t;s(n)},A=(e,n,t,o,l,r,s,i,c)=>{s=s||"svg"===n.type,null==e?J(n,t,o,l,r,s,i,c):P(e,n,l,r,s,i,c)},J=(e,n,o,r,s,i,a,f)=>{let p,d;const{type:h,props:g,shapeFlag:v,transition:y,dirs:_}=e;if(p=e.el=u(e.type,i,g&&g.is,g),8&v?m(p,e.children):16&v&&U(e.children,p,null,r,s,i&&"foreignObject"!==h,a,f),_&&ke(e,null,r,"created"),j(p,e,e.scopeId,a,r),g){for(const n in g)"value"===n||(0,l.Gg)(n)||c(p,n,null,g[n],i,e.children,r,s,ee);"value"in g&&c(p,"value",null,g.value),(d=g.onVnodeBeforeMount)&&Gn(d,r,e)}_&&ke(e,null,r,"beforeMount");const b=(!s||s&&!s.pendingBranch)&&y&&!y.persisted;b&&y.beforeEnter(p),t(p,n,o),((d=g&&g.onVnodeMounted)||b||_)&&dn((()=>{d&&Gn(d,r,e),b&&y.enter(p),_&&ke(e,null,r,"mounted")}),s)},j=(e,n,t,o,l)=>{if(t&&_(e,t),o)for(let n=0;n{for(let u=c;u{const u=n.el=e.el;let{patchFlag:a,dynamicChildren:f,dirs:p}=n;a|=16&e.patchFlag;const d=e.props||l.kT,h=n.props||l.kT;let g;t&&mn(t,!1),(g=h.onVnodeBeforeUpdate)&&Gn(g,t,n,e),p&&ke(n,e,t,"beforeUpdate"),t&&mn(t,!0);const v=r&&"foreignObject"!==n.type;if(f?$(e.dynamicChildren,f,u,t,o,v,s):i||N(e,n,u,null,t,o,v,s,!1),a>0){if(16&a)D(u,n,d,h,t,o,r);else if(2&a&&d.class!==h.class&&c(u,"class",null,h.class,r),4&a&&c(u,"style",d.style,h.style,r),8&a){const l=n.dynamicProps;for(let n=0;n{g&&Gn(g,t,n,e),p&&ke(n,e,t,"updated")}),o)},$=(e,n,t,o,l,r,s)=>{for(let i=0;i{if(t!==o){if(t!==l.kT)for(const u in t)(0,l.Gg)(u)||u in o||c(e,u,t[u],null,i,n.children,r,s,ee);for(const u in o){if((0,l.Gg)(u))continue;const a=o[u],f=t[u];a!==f&&"value"!==u&&c(e,u,f,a,i,n.children,r,s,ee)}"value"in o&&c(e,"value",t.value,o.value)}},M=(e,n,o,l,r,s,i,c,u)=>{const a=n.el=e?e.el:p(""),f=n.anchor=e?e.anchor:p("");let{patchFlag:d,dynamicChildren:h,slotScopeIds:m}=n;m&&(c=c?c.concat(m):m),null==e?(t(a,o,l),t(f,o,l),U(n.children,o,f,r,s,i,c,u)):d>0&&64&d&&h&&e.dynamicChildren?($(e.dynamicChildren,h,o,r,s,i,c),(null!=n.key||r&&n===r.subTree)&&gn(e,n,!0)):N(e,n,o,f,r,s,i,c,u)},K=(e,n,t,o,l,r,s,i,c)=>{n.slotScopeIds=i,null==e?512&n.shapeFlag?l.ctx.activate(n,t,o,s,c):B(n,t,o,l,r,s,c):V(e,n,c)},B=(e,n,t,s,c,u,a)=>{const f=e.component=function(e,n,t){const r=e.type,s=(n?n.appContext:e.appContext)||Hn,i={uid:Nn++,vnode:e,type:r,parent:n,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new o.Bj(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:n?n.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Xe(r,s),emitsOptions:T(r,s),emit:null,emitted:null,propsDefaults:l.kT,inheritAttrs:r.inheritAttrs,ctx:l.kT,data:l.kT,props:l.kT,attrs:l.kT,slots:l.kT,refs:l.kT,setupState:l.kT,setupContext:null,suspense:t,suspenseId:t?t.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=n?n.root:i,i.emit=I.bind(null,i),e.ce&&e.ce(i),i}(e,s,c);if(oe(e)&&(f.ctx.renderer=re),function(e,n=!1){et=n;const{props:t,children:s}=e.vnode,c=Yn(e);!function(e,n,t,r=!1){const s={},i={};(0,l.Nj)(i,An,1),e.propsDefaults=Object.create(null),Ze(e,n,s,i);for(const n in e.propsOptions[0])n in s||(s[n]=void 0);t?e.props=r?s:(0,o.Um)(s):e.type.props?e.props=s:e.props=i,e.attrs=i}(e,t,c,n),sn(e,s);const u=c?function(e,n){const t=e.type;e.accessCache=Object.create(null),e.proxy=(0,o.Xl)(new Proxy(e.ctx,Le));const{setup:s}=t;if(s){const t=e.setupContext=s.length>1?function(e){const n=n=>{e.exposed=n||{}};let t;return{get attrs(){return t||(t=function(e){return new Proxy(e.attrs,{get:(n,t)=>((0,o.j)(e,"get","$attrs"),n[t])})}(e))},slots:e.slots,emit:e.emit,expose:n}}(e):null;Wn(e),(0,o.Jd)();const c=r(s,e,0,[e.props,t]);if((0,o.lk)(),Xn(),(0,l.tI)(c)){if(c.then(Xn,Xn),n)return c.then((t=>{nt(e,t,n)})).catch((n=>{i(n,e,0)}));e.asyncDep=c}else nt(e,c,n)}else tt(e,n)}(e,n):void 0;et=!1}(f),f.asyncDep){if(c&&c.registerDep(f,G),!e.el){const e=f.subTree=Un(_n);R(null,e,n,t)}}else G(f,e,n,t,c,u,a)},V=(e,n,t)=>{const o=n.component=e.component;if(function(e,n,t){const{props:o,children:l,component:r}=e,{props:s,children:i,patchFlag:c}=n,u=r.emitsOptions;if(n.dirs||n.transition)return!0;if(!(t&&c>=0))return!(!l&&!i||i&&i.$stable)||o!==s&&(o?!s||L(o,s,u):!!s);if(1024&c)return!0;if(16&c)return o?L(o,s,u):!!s;if(8&c){const e=n.dynamicProps;for(let n=0;nf&&a.splice(n,1)}(o.update),o.update()}else n.el=e.el,o.vnode=n},G=(e,n,t,r,s,i,c)=>{const u=e.effect=new o.qq((()=>{if(e.isMounted){let n,{next:t,bu:o,u:r,parent:u,vnode:a}=e,f=t;mn(e,!1),t?(t.el=a.el,H(e,t,c)):t=a,o&&(0,l.ir)(o),(n=t.props&&t.props.onVnodeBeforeUpdate)&&Gn(n,u,t,a),mn(e,!0);const p=E(e),d=e.subTree;e.subTree=p,C(d,p,g(d.el),ne(d),e,s,i),t.el=p.el,null===f&&function({vnode:e,parent:n},t){for(;n&&n.subTree===e;)(e=n.vnode).el=t,n=n.parent}(e,p.el),r&&dn(r,s),(n=t.props&&t.props.onVnodeUpdated)&&dn((()=>Gn(n,u,t,a)),s)}else{let o;const{el:c,props:u}=n,{bm:a,m:f,parent:p}=e,d=te(n);if(mn(e,!1),a&&(0,l.ir)(a),!d&&(o=u&&u.onVnodeBeforeMount)&&Gn(o,p,n),mn(e,!0),c&&ie){const t=()=>{e.subTree=E(e),ie(c,e.subTree,e,s,null)};d?n.type.__asyncLoader().then((()=>!e.isUnmounted&&t())):t()}else{const o=e.subTree=E(e);C(null,o,t,r,e,s,i),n.el=o.el}if(f&&dn(f,s),!d&&(o=u&&u.onVnodeMounted)){const e=n;dn((()=>Gn(o,p,e)),s)}(256&n.shapeFlag||p&&te(p.vnode)&&256&p.vnode.shapeFlag)&&e.a&&dn(e.a,s),e.isMounted=!0,n=t=r=null}}),(()=>y(a)),e.scope),a=e.update=()=>u.run();a.id=e.uid,mn(e,!0),a()},H=(e,n,t)=>{n.component=e;const r=e.vnode.props;e.vnode=n,e.next=null,function(e,n,t,r){const{props:s,attrs:i,vnode:{patchFlag:c}}=e,u=(0,o.IU)(s),[a]=e.propsOptions;let f=!1;if(!(r||c>0)||16&c){let o;Ze(e,n,s,i)&&(f=!0);for(const r in u)n&&((0,l.RI)(n,r)||(o=(0,l.rs)(r))!==r&&(0,l.RI)(n,o))||(a?!t||void 0===t[r]&&void 0===t[o]||(s[r]=We(a,u,r,void 0,e,!0)):delete s[r]);if(i!==u)for(const e in i)n&&(0,l.RI)(n,e)||(delete i[e],f=!0)}else if(8&c){const t=e.vnode.dynamicProps;for(let o=0;o{const u=e&&e.children,a=e?e.shapeFlag:0,f=n.children,{patchFlag:p,shapeFlag:d}=n;if(p>0){if(128&p)return void Z(u,f,t,o,l,r,s,i,c);if(256&p)return void q(u,f,t,o,l,r,s,i,c)}8&d?(16&a&&ee(u,l,r),f!==u&&m(t,f)):16&a?16&d?Z(u,f,t,o,l,r,s,i,c):ee(u,l,r,!0):(8&a&&m(t,""),16&d&&U(f,t,o,l,r,s,i,c))},q=(e,n,t,o,r,s,i,c,u)=>{e=e||l.Z6,n=n||l.Z6;const a=e.length,f=n.length,p=Math.min(a,f);let d;for(d=0;df?ee(e,r,s,!0,!1,p):U(n,t,o,r,s,i,c,u,p)},Z=(e,n,t,o,r,s,i,c,u)=>{let a=0;const f=n.length;let p=e.length-1,d=f-1;for(;a<=p&&a<=d;){const o=e[a],l=n[a]=u?Kn(n[a]):Mn(n[a]);if(!Sn(o,l))break;C(o,l,t,null,r,s,i,c,u),a++}for(;a<=p&&a<=d;){const o=e[p],l=n[d]=u?Kn(n[d]):Mn(n[d]);if(!Sn(o,l))break;C(o,l,t,null,r,s,i,c,u),p--,d--}if(a>p){if(a<=d){const e=d+1,l=ed)for(;a<=p;)X(e[a],r,s,!0),a++;else{const h=a,m=a,g=new Map;for(a=m;a<=d;a++){const e=n[a]=u?Kn(n[a]):Mn(n[a]);null!=e.key&&g.set(e.key,a)}let v,y=0;const _=d-m+1;let b=!1,k=0;const x=new Array(_);for(a=0;a<_;a++)x[a]=0;for(a=h;a<=p;a++){const o=e[a];if(y>=_){X(o,r,s,!0);continue}let l;if(null!=o.key)l=g.get(o.key);else for(v=m;v<=d;v++)if(0===x[v-m]&&Sn(o,n[v])){l=v;break}void 0===l?X(o,r,s,!0):(x[l-m]=a+1,l>=k?k=l:b=!0,C(o,n[l],t,null,r,s,i,c,u),y++)}const F=b?function(e){const n=e.slice(),t=[0];let o,l,r,s,i;const c=e.length;for(o=0;o>1,e[t[i]]0&&(n[o]=t[r-1]),t[r]=o)}}for(r=t.length,s=t[r-1];r-- >0;)t[r]=s,s=n[s];return t}(x):l.Z6;for(v=F.length-1,a=_-1;a>=0;a--){const e=m+a,l=n[e],p=e+1{const{el:s,type:i,transition:c,children:u,shapeFlag:a}=e;if(6&a)W(e.component.subTree,n,o,l);else if(128&a)e.suspense.move(n,o,l);else if(64&a)i.move(e,n,o,re);else if(i!==vn)if(i!==bn)if(2!==l&&1&a&&c)if(0===l)c.beforeEnter(s),t(s,n,o),dn((()=>c.enter(s)),r);else{const{leave:e,delayLeave:l,afterLeave:r}=c,i=()=>t(s,n,o),u=()=>{e(s,(()=>{i(),r&&r()}))};l?l(s,i,u):u()}else t(s,n,o);else(({el:e,anchor:n},o,l)=>{let r;for(;e&&e!==n;)r=v(e),t(e,o,l),e=r;t(n,o,l)})(e,n,o);else{t(s,n,o);for(let e=0;e{const{type:r,props:s,ref:i,children:c,dynamicChildren:u,shapeFlag:a,patchFlag:f,dirs:p}=e;if(null!=i&&pn(i,null,t,e,!0),256&a)return void n.ctx.deactivate(e);const d=1&a&&p,h=!te(e);let m;if(h&&(m=s&&s.onVnodeBeforeUnmount)&&Gn(m,n,e),6&a)z(e.component,t,o);else{if(128&a)return void e.suspense.unmount(t,o);d&&ke(e,null,n,"beforeUnmount"),64&a?e.type.remove(e,n,t,l,re,o):u&&(r!==vn||f>0&&64&f)?ee(u,n,t,!1,!0):(r===vn&&384&f||!l&&16&a)&&ee(c,n,t),o&&Y(e)}(h&&(m=s&&s.onVnodeUnmounted)||d)&&dn((()=>{m&&Gn(m,n,e),d&&ke(e,null,n,"unmounted")}),t)},Y=e=>{const{type:n,el:t,anchor:o,transition:l}=e;if(n===vn)return void Q(t,o);if(n===bn)return void S(e);const r=()=>{s(t),l&&!l.persisted&&l.afterLeave&&l.afterLeave()};if(1&e.shapeFlag&&l&&!l.persisted){const{leave:n,delayLeave:o}=l,s=()=>n(t,r);o?o(e.el,r,s):s()}else r()},Q=(e,n)=>{let t;for(;e!==n;)t=v(e),s(e),e=t;s(n)},z=(e,n,t)=>{const{bum:o,scope:r,update:s,subTree:i,um:c}=e;o&&(0,l.ir)(o),r.stop(),s&&(s.active=!1,X(i,e,n,t)),c&&dn(c,n),dn((()=>{e.isUnmounted=!0}),n),n&&n.pendingBranch&&!n.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===n.pendingId&&(n.deps--,0===n.deps&&n.resolve())},ee=(e,n,t,o=!1,l=!1,r=0)=>{for(let s=r;s6&e.shapeFlag?ne(e.component.subTree):128&e.shapeFlag?e.suspense.next():v(e.anchor||e.el),le=(e,n,t)=>{null==e?n._vnode&&X(n._vnode,null,null,!0):C(n._vnode||null,e,n,null,null,null,t),b(),k(),n._vnode=e},re={p:C,um:X,m:W,r:Y,mt:B,mc:U,pc:N,pbc:$,n:ne,o:e};let se,ie;return n&&([se,ie]=n(re)),{render:le,hydrate:se,createApp:fn(le,se)}}(e)}function mn({effect:e,update:n},t){e.allowRecurse=n.allowRecurse=t}function gn(e,n,t=!1){const o=e.children,r=n.children;if((0,l.kJ)(o)&&(0,l.kJ)(r))for(let e=0;e0?xn||l.Z6:null,kn.pop(),xn=kn[kn.length-1]||null,Fn>0&&xn&&xn.push(e),e}function wn(e,n,t,o,l,r){return Tn(En(e,n,t,o,l,r,!0))}function Rn(e,n,t,o,l){return Tn(Un(e,n,t,o,l,!0))}function On(e){return!!e&&!0===e.__v_isVNode}function Sn(e,n){return e.type===n.type&&e.key===n.key}const An="__vInternal",Jn=({key:e})=>null!=e?e:null,jn=({ref:e,ref_key:n,ref_for:t})=>null!=e?(0,l.HD)(e)||(0,o.dq)(e)||(0,l.mf)(e)?{i:R,r:e,k:n,f:!!t}:e:null;function En(e,n=null,t=null,o=0,r=null,s=(e===vn?0:1),i=!1,c=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:n,key:n&&Jn(n),ref:n&&jn(n),scopeId:O,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:R};return c?(Bn(u,t),128&s&&e.normalize(u)):t&&(u.shapeFlag|=(0,l.HD)(t)?8:16),Fn>0&&!i&&xn&&(u.patchFlag>0||6&s)&&32!==u.patchFlag&&xn.push(u),u}const Un=function(e,n=null,t=null,r=0,s=null,i=!1){if(e&&e!==Ie||(e=_n),On(e)){const o=Pn(e,n,!0);return t&&Bn(o,t),Fn>0&&!i&&xn&&(6&o.shapeFlag?xn[xn.indexOf(e)]=o:xn.push(o)),o.patchFlag|=-2,o}if(c=e,(0,l.mf)(c)&&"__vccOpts"in c&&(e=e.__vccOpts),n){n=function(e){return e?(0,o.X3)(e)||An in e?(0,l.l7)({},e):e:null}(n);let{class:e,style:t}=n;e&&!(0,l.HD)(e)&&(n.class=(0,l.C_)(e)),(0,l.Kn)(t)&&((0,o.X3)(t)&&!(0,l.kJ)(t)&&(t=(0,l.l7)({},t)),n.style=(0,l.j5)(t))}var c;return En(e,n,t,r,s,(0,l.HD)(e)?1:(e=>e.__isSuspense)(e)?128:(e=>e.__isTeleport)(e)?64:(0,l.Kn)(e)?4:(0,l.mf)(e)?2:0,i,!0)};function Pn(e,n,t=!1){const{props:o,ref:r,patchFlag:s,children:i}=e,c=n?Vn(o||{},n):o;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Jn(c),ref:n&&n.ref?t&&r?(0,l.kJ)(r)?r.concat(jn(n)):[r,jn(n)]:jn(n):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:n&&e.type!==vn?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Pn(e.ssContent),ssFallback:e.ssFallback&&Pn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Ln(e=" ",n=0){return Un(yn,null,e,n)}function $n(e,n){const t=Un(bn,null,e);return t.staticCount=n,t}function Dn(e="",n=!1){return n?(Cn(),Rn(_n,null,e)):Un(_n,null,e)}function Mn(e){return null==e||"boolean"==typeof e?Un(_n):(0,l.kJ)(e)?Un(vn,null,e.slice()):"object"==typeof e?Kn(e):Un(yn,null,String(e))}function Kn(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:Pn(e)}function Bn(e,n){let t=0;const{shapeFlag:o}=e;if(null==n)n=null;else if((0,l.kJ)(n))t=16;else if("object"==typeof n){if(65&o){const t=n.default;return void(t&&(t._c&&(t._d=!1),Bn(e,t()),t._c&&(t._d=!0)))}{t=32;const o=n._;o||An in n?3===o&&R&&(1===R.slots._?n._=1:(n._=2,e.patchFlag|=1024)):n._ctx=R}}else(0,l.mf)(n)?(n={default:n,_ctx:R},t=32):(n=String(n),64&o?(t=16,n=[Ln(n)]):t=8);e.children=n,e.shapeFlag|=t}function Vn(...e){const n={};for(let t=0;tqn||R,Wn=e=>{qn=e,e.scope.on()},Xn=()=>{qn&&qn.scope.off(),qn=null};function Yn(e){return 4&e.vnode.shapeFlag}let Qn,zn,et=!1;function nt(e,n,t){(0,l.mf)(n)?e.type.__ssrInlineRender?e.ssrRender=n:e.render=n:(0,l.Kn)(n)&&(e.setupState=(0,o.WL)(n)),tt(e,t)}function tt(e,n,t){const r=e.type;if(!e.render){if(!n&&Qn&&!r.render){const n=r.template||Ke(e).template;if(n){const{isCustomElement:t,compilerOptions:o}=e.appContext.config,{delimiters:s,compilerOptions:i}=r,c=(0,l.l7)((0,l.l7)({isCustomElement:t,delimiters:s},o),i);r.render=Qn(n,c)}}e.render=r.render||l.dG,zn&&zn(e)}Wn(e),(0,o.Jd)(),function(e){const n=Ke(e),t=e.proxy,r=e.ctx;$e=!1,n.beforeCreate&&De(n.beforeCreate,e,"bc");const{data:s,computed:i,methods:c,watch:u,provide:a,inject:f,created:p,beforeMount:d,mounted:h,beforeUpdate:m,updated:g,activated:v,deactivated:y,beforeDestroy:_,beforeUnmount:b,destroyed:k,unmounted:x,render:C,renderTracked:F,renderTriggered:I,errorCaptured:T,serverPrefetch:w,expose:R,inheritAttrs:O,components:S,directives:A,filters:J}=n;if(f&&function(e,n,t=l.dG,r=!1){(0,l.kJ)(e)&&(e=He(e));for(const t in e){const s=e[t];let i;i=(0,l.Kn)(s)?"default"in s?D(s.from||t,s.default,!0):D(s.from||t):D(s),(0,o.dq)(i)&&r?Object.defineProperty(n,t,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):n[t]=i}}(f,r,null,e.appContext.config.unwrapInjectedRef),c)for(const e in c){const n=c[e];(0,l.mf)(n)&&(r[e]=n.bind(t))}if(s){const n=s.call(t,t);(0,l.Kn)(n)&&(e.data=(0,o.qj)(n))}if($e=!0,i)for(const e in i){const n=i[e],o=(0,l.mf)(n)?n.bind(t,t):(0,l.mf)(n.get)?n.get.bind(t,t):l.dG,s=!(0,l.mf)(n)&&(0,l.mf)(n.set)?n.set.bind(t):l.dG,c=lt({get:o,set:s});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>c.value,set:e=>c.value=e})}if(u)for(const e in u)Me(u[e],r,t,e);if(a){const e=(0,l.mf)(a)?a.call(t):a;Reflect.ownKeys(e).forEach((n=>{$(n,e[n])}))}function j(e,n){(0,l.kJ)(n)?n.forEach((n=>e(n.bind(t)))):n&&e(n.bind(t))}if(p&&De(p,e,"c"),j(ae,d),j(fe,h),j(pe,m),j(de,g),j(le,v),j(re,y),j(_e,T),j(ye,F),j(ve,I),j(he,b),j(me,x),j(ge,w),(0,l.kJ)(R))if(R.length){const n=e.exposed||(e.exposed={});R.forEach((e=>{Object.defineProperty(n,e,{get:()=>t[e],set:n=>t[e]=n})}))}else e.exposed||(e.exposed={});C&&e.render===l.dG&&(e.render=C),null!=O&&(e.inheritAttrs=O),S&&(e.components=S),A&&(e.directives=A)}(e),(0,o.lk)(),Xn()}function ot(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((0,o.WL)((0,o.Xl)(e.exposed)),{get:(n,t)=>t in n?n[t]:t in Ue?Ue[t](e):void 0,has:(e,n)=>n in e||n in Ue}))}const lt=(e,n)=>(0,o.Fl)(e,n,et);function rt(e,n,t){const o=arguments.length;return 2===o?(0,l.Kn)(n)&&!(0,l.kJ)(n)?On(n)?Un(e,null,[n]):Un(e,n):Un(e,null,n):(o>3?t=Array.prototype.slice.call(arguments,2):3===o&&On(t)&&(t=[t]),Un(e,n,t))}const st=Symbol(""),it=()=>D(st),ct="3.2.47"}}]); +//# sourceMappingURL=252.2482d7ce.js.map \ No newline at end of file diff --git a/_static/kpm/js/252.2482d7ce.js.map b/_static/kpm/js/252.2482d7ce.js.map new file mode 100644 index 00000000..bc5eb052 --- /dev/null +++ b/_static/kpm/js/252.2482d7ce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/252.2482d7ce.js","mappings":"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","sources":["webpack://pipeline-manager/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js"],"sourcesContent":["import { pauseTracking, resetTracking, isRef, toRaw, getCurrentScope, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, toNumber, hasChanged, remove, isSet, isMap, isPlainObject, invokeArrayFns, isRegExp, isBuiltInDirective, capitalize, isGloballyWhitelisted, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, NO, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n if (!(process.env.NODE_ENV !== 'production'))\n return;\n // avoid props formatting or warn handler tracking deps that might be mutated\n // during patch, leading to infinite recursion.\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [\n msg + args.join(''),\n instance && instance.proxy,\n trace\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\n .join('\\n'),\n trace\n ]);\n }\n else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n /* istanbul ignore if */\n if (trace.length &&\n // avoid spamming console during tests\n !false) {\n warnArgs.push(`\\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n // we can't just use the stack because it will be incomplete during updates\n // that did not start from the root. Re-construct the parent chain using\n // instance parent pointers.\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n }\n else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\n/* istanbul ignore next */\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\n const close = `>` + postfix;\n return vnode.props\n ? [open, ...formatProps(vnode.props), close]\n : [open + close];\n}\n/* istanbul ignore next */\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach(key => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\n/* istanbul ignore next */\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n }\n else if (typeof value === 'number' ||\n typeof value === 'boolean' ||\n value == null) {\n return raw ? value : [`${key}=${value}`];\n }\n else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n }\n else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n }\n else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n/**\n * @internal\n */\nfunction assertNumber(val, type) {\n if (!(process.env.NODE_ENV !== 'production'))\n return;\n if (val === undefined) {\n return;\n }\n else if (typeof val !== 'number') {\n warn(`${type} is not a valid number - ` + `got ${JSON.stringify(val)}.`);\n }\n else if (isNaN(val)) {\n warn(`${type} is NaN - ` + 'the duration expression might be incorrect.');\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',\n [\"bc\" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',\n [\"c\" /* LifecycleHooks.CREATED */]: 'created hook',\n [\"bm\" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',\n [\"m\" /* LifecycleHooks.MOUNTED */]: 'mounted hook',\n [\"bu\" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',\n [\"u\" /* LifecycleHooks.UPDATED */]: 'updated',\n [\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',\n [\"um\" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',\n [\"a\" /* LifecycleHooks.ACTIVATED */]: 'activated hook',\n [\"da\" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',\n [\"ec\" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',\n [\"rtc\" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',\n [\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',\n [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',\n [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',\n [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',\n [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',\n [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',\n [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',\n [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',\n [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',\n [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',\n [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',\n [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',\n [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',\n [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',\n [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',\n [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n }\n catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch(err => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n // the exposed instance is the render proxy to keep it consistent with 2.x\n const exposedInstance = instance.proxy;\n // in production the hook receives only the error code\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n // app-level handling\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if ((process.env.NODE_ENV !== 'production')) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n // crash in dev by default so it's more noticeable\n if (throwInDev) {\n throw err;\n }\n else {\n console.error(err);\n }\n }\n else {\n // recover in prod to reduce the impact on end-user\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /*#__PURE__*/ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\n// #2768\n// Use binary-search to find a suitable position in the queue,\n// so that the queue maintains the increasing order of job's id,\n// which can prevent the job from being skipped and also can avoid repeated patching.\nfunction findInsertionIndex(id) {\n // the start index should be `flushIndex + 1`\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = (start + end) >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? (start = middle + 1) : (end = middle);\n }\n return start;\n}\nfunction queueJob(job) {\n // the dedupe search uses the startIndex argument of Array.includes()\n // by default the search index includes the current job that is being run\n // so it cannot recursively trigger itself again.\n // if the job is a watch() callback, the search will start with a +1 index to\n // allow it recursively trigger itself - it is the user's responsibility to\n // ensure it doesn't end up in an infinite loop.\n if (!queue.length ||\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {\n if (job.id == null) {\n queue.push(job);\n }\n else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs ||\n !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {\n pendingPostFlushCbs.push(cb);\n }\n }\n else {\n // if cb is an array, it is a component lifecycle hook which can only be\n // triggered by a job, which is already deduped in the main queue, so\n // we can skip duplicate check here to improve perf\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen, \n// if currently flushing, skip the current job itself\ni = isFlushing ? flushIndex + 1 : 0) {\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if ((process.env.NODE_ENV !== 'production') && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n // #1947 already has active queue, nested flushPostFlushCbs call\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if ((process.env.NODE_ENV !== 'production') &&\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child so its render effect will have smaller\n // priority number)\n // 2. If a component is unmounted during a parent component's update,\n // its update can be skipped.\n queue.sort(comparator);\n // conditional usage of checkRecursiveUpdate must be determined out of\n // try ... catch block since Rollup by default de-optimizes treeshaking\n // inside try-catch. This can leave all warning code unshaked. Although\n // they would get eventually shaken by a minifier like terser, some minifiers\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n const check = (process.env.NODE_ENV !== 'production')\n ? (job) => checkRecursiveUpdates(seen, job)\n : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if ((process.env.NODE_ENV !== 'production') && check(job)) {\n continue;\n }\n // console.log(`running:`, job.id)\n callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);\n }\n }\n }\n finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n // some postFlushCb queued jobs!\n // keep flushing until it drains.\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n }\n else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\n `This means you have a reactive effect that is mutating its own ` +\n `dependencies and thus recursively triggering itself. Possible sources ` +\n `include component template, render function, updated hook or ` +\n `watcher source function.`);\n return true;\n }\n else {\n seen.set(fn, count + 1);\n }\n }\n}\n\n/* eslint-disable no-restricted-globals */\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = new Set();\n// Expose the HMR runtime on the global object\n// This makes it entirely tree-shakable without polluting the exports and makes\n// it easier to be used in toolings like vue-loader\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\n// to be set so that its instances can be registered / removed.\nif ((process.env.NODE_ENV !== 'production')) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n // update initial record (for not-yet-rendered component)\n record.initialDef.render = newRender;\n [...record.instances].forEach(instance => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n // this flag forces child components with slot content to update\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n // update initial def (for not-yet-rendered components)\n updateComponentDef(record.initialDef, newComp);\n // create a snapshot which avoids the set being mutated during updates\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n // 1. Update existing comp definition to match new one\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n // 2. mark definition dirty. This forces the renderer to replace the\n // component on patch.\n hmrDirtyComponents.add(oldComp);\n }\n // 3. invalidate options resolution cache\n instance.appContext.optionsCache.delete(instance.type);\n // 4. actually update\n if (instance.ceReload) {\n // custom element\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n }\n else if (instance.parent) {\n // 4. Force the parent instance to re-render. This will cause all updated\n // components to be unmounted and re-mounted. Queue the update so that we\n // don't end up forcing the same parent to re-render multiple times.\n queueJob(instance.parent.update);\n }\n else if (instance.appContext.reload) {\n // root instance mounted via createApp() has a reload method\n instance.appContext.reload();\n }\n else if (typeof window !== 'undefined') {\n // root instance inside tree created via raw render(). Force reload.\n window.location.reload();\n }\n else {\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\n }\n }\n // 5. make sure to cleanup dirty hmr components after update\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== '__file' && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n }\n catch (e) {\n console.error(e);\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\n `Full reload required.`);\n }\n };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n }\n else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n }\n else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== 'undefined' &&\n // some envs mock window but not fully\n window.HTMLElement &&\n // also exclude jsdom\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n // clear buffer after 3s - the user probably doesn't have devtools installed\n // at all, and keeping the buffer will cause memory leaks (#4738)\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3000);\n }\n else {\n // non-browser env, assume not installed\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* DevtoolsHooks.APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* DevtoolsHooks.APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* DevtoolsHooks.COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = \n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* DevtoolsHooks.COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* DevtoolsHooks.COMPONENT_REMOVED */);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools &&\n typeof devtools.cleanupBuffer === 'function' &&\n // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\n };\n}\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* DevtoolsHooks.PERFORMANCE_START */);\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* DevtoolsHooks.PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\"component:emit\" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if ((process.env.NODE_ENV !== 'production')) {\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) &&\n !(false )) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\n }\n }\n else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith('update:');\n // for v-model update:xxx events, apply modifiers on args\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map(a => (isString(a) ? a.trim() : a));\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\n `Note that HTML attributes are case-insensitive and you cannot use ` +\n `v-on to listen to camelCase events when using in-DOM templates. ` +\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\n }\n }\n let handlerName;\n let handler = props[(handlerName = toHandlerKey(event))] ||\n // also try camelCase event handler (#2249)\n props[(handlerName = toHandlerKey(camelize(event)))];\n // for v-model update:xxx events, also trigger kebab-case equivalent\n // for props passed via kebab-case\n if (!handler && isModelListener) {\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n }\n else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== undefined) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach(key => (normalized[key] = null));\n }\n else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\n// Check if an incoming prop key is a declared emit event listener.\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\n// both considered matched listeners.\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, '');\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\n hasOwn(options, hyphenate(key)) ||\n hasOwn(options, key));\n}\n\n/**\n * mark the current rendering instance for asset resolution (e.g.\n * resolveComponent, resolveDirective) during render\n */\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\n/**\n * Note: rendering calls maybe nested. The function returns the parent rendering\n * instance if present, which should be restored after the render is done:\n *\n * ```js\n * const prev = setCurrentRenderingInstance(i)\n * // ...render\n * setCurrentRenderingInstance(prev)\n * ```\n */\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = (instance && instance.type.__scopeId) || null;\n return prev;\n}\n/**\n * Set scope id when creating hoisted vnodes.\n * @private compiler helper\n */\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\n/**\n * Technically we no longer need this after 3.0.8 but we need to keep the same\n * API for backwards compat w/ code generated by compilers.\n * @private\n */\nfunction popScopeId() {\n currentScopeId = null;\n}\n/**\n * Only for backwards compat\n * @private\n */\nconst withScopeId = (_id) => withCtx;\n/**\n * Wrap a slot function to memoize current rendering instance\n * @private compiler helper\n */\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\n) {\n if (!ctx)\n return fn;\n // already normalized\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n // If a user calls a compiled slot inside a template expression (#1745), it\n // can mess up block tracking, so by default we disable block tracking and\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\n // This isn't necessary if rendering a compiled ``, so we flip the\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n }\n finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n // mark normalized to avoid duplicated wrapping\n renderFnWithContext._n = true;\n // mark this as compiled by default\n // this is used in vnode.ts -> normalizeChildren() to set the slot\n // rendering flag.\n renderFnWithContext._c = true;\n // disable block tracking by default\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\n/**\n * dev only flag to track whether $attrs was used during render.\n * If $attrs was used during render then the warning for failed attrs\n * fallthrough can be suppressed.\n */\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {\n // withProxy is a proxy with a different `has` trap only for\n // runtime-compiled render functions using `with` block.\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n }\n else {\n // functional\n const render = Component;\n // in dev, mark attrs accessed if optional props (attrs === props)\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(render.length > 1\n ? render(props, (process.env.NODE_ENV !== 'production')\n ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n }\n : { attrs, slots, emit })\n : render(props, null /* we know it doesn't need it */));\n fallthroughAttrs = Component.props\n ? attrs\n : getFunctionalFallthrough(attrs);\n }\n }\n catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);\n result = createVNode(Comment);\n }\n // attr merging\n // in dev mode, comments are preserved, and it's possible for a template\n // to have comments along side the root element which makes it a fragment\n let root = result;\n let setRoot = undefined;\n if ((process.env.NODE_ENV !== 'production') &&\n result.patchFlag > 0 &&\n result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {\n if (propsOptions && keys.some(isModelListener)) {\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\n // prop, it indicates this component expects to handle v-model and\n // it should not fallthrough.\n // related: #1543, #1643, #1989\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n }\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n // ignore v-model handlers when they fail to fallthrough\n if (!isModelListener(key)) {\n // remove `on`, lowercase first letter to reflect event casing\n // accurately\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n }\n else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(`Extraneous non-props attributes (` +\n `${extraAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes.`);\n }\n if (eventAttrs.length) {\n warn(`Extraneous non-emits event listeners (` +\n `${eventAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes. ` +\n `If the listener is intended to be a component custom event listener only, ` +\n `declare it using the \"emits\" option.`);\n }\n }\n }\n }\n // inherit directives\n if (vnode.dirs) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Runtime directive used on component with non-element root node. ` +\n `The directives will not function as intended.`);\n }\n // clone before mutating since the root may be a hoisted vnode\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n // inherit transition data\n if (vnode.transition) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Component inside renders non-element root node ` +\n `that cannot be animated.`);\n }\n root.transition = vnode.transition;\n }\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\n setRoot(root);\n }\n else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\n/**\n * dev only\n * In dev mode, template root level comments are rendered, which turns the\n * template into a fragment root, but we need to locate the single element\n * root for attrs and scope id processing.\n */\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, undefined];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n }\n else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n // ignore user comment\n if (child.type !== Comment || child.children === 'v-if') {\n if (singleRoot) {\n // has more than 1 non-comment child, return now\n return;\n }\n else {\n singleRoot = child;\n }\n }\n }\n else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === 'class' || key === 'style' || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||\n vnode.type === Comment // potential v-if branch switch\n );\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n // Parent component's render function was hot-updated. Since this may have\n // caused the child component's slots content to have changed, we need to\n // force the child to update as well.\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n // force child update for runtime directive or transition on component vnode.\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {\n // slot content that references values that might have changed,\n // e.g. in a v-for\n return true;\n }\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n if (!prevProps) {\n return !!nextProps;\n }\n // presence of this flag indicates props are always non-null\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n else if (patchFlag & 8 /* PatchFlags.PROPS */) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n }\n else {\n // this path is only taken by manually written render functions\n // so presence of any children leads to a forced update\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\n) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\n// Suspense exposes a component-like API, and is treated like a component\n// in the compiler, but internally it's a special built-in type that hooks\n// directly into the renderer.\nconst SuspenseImpl = {\n name: 'Suspense',\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \n // platform-specific impl passed from renderer\n rendererInternals) {\n if (n1 == null) {\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n else {\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\n// Force-casted public typing for h and TSX props inference\nconst Suspense = (SuspenseImpl\n );\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const { p: patch, o: { createElement } } = rendererInternals;\n const hiddenContainer = createElement('div');\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\n // start mounting the content subtree in an off-dom container\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\n // now check if we have encountered any async deps\n if (suspense.deps > 0) {\n // has async\n // invoke @fallback event\n triggerEvent(vnode, 'onPending');\n triggerEvent(vnode, 'onFallback');\n // mount the fallback tree\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds);\n setActiveBranch(suspense, vnode.ssFallback);\n }\n else {\n // Suspense has no async deps. Just resolve.\n suspense.resolve();\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = (n2.suspense = n1.suspense);\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n // same root type but content may have changed.\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else if (isInFallback) {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else {\n // toggled before pending tree is resolved\n suspense.pendingId++;\n if (isHydrating) {\n // if toggled before hydration is finished, the current DOM tree is\n // no longer valid. set it as the active branch so it will be unmounted\n // when resolved\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n }\n else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n // increment pending ID. this is used to invalidate async callbacks\n // reset suspense state\n suspense.deps = 0;\n // discard effects from pending branch\n suspense.effects.length = 0;\n // discard previous container\n suspense.hiddenContainer = createElement('div');\n if (isInFallback) {\n // already in fallback state\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // toggled \"back\" to current active branch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n // force resolve\n suspense.resolve(true);\n }\n else {\n // switched to a 3rd branch\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n }\n else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // root did not change, just normal patch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newBranch);\n }\n else {\n // root node toggled\n // invoke @pending event\n triggerEvent(n2, 'onPending');\n // mount pending branch in off-dom container\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n // incoming branch has no async deps, resolve now.\n suspense.resolve();\n }\n else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n }\n else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\n hasWarned = true;\n // @ts-ignore `console.info` cannot be null error\n console[console.info ? 'info' : 'log'](` is an experimental feature and its API will likely change.`);\n }\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : undefined;\n if ((process.env.NODE_ENV !== 'production')) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const suspense = {\n vnode,\n parent,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === 'number' ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false) {\n if ((process.env.NODE_ENV !== 'production')) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(`suspense.resolve() is called without a pending branch.`);\n }\n if (suspense.isUnmounted) {\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\n }\n }\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n }\n else if (!resume) {\n const delayEnter = activeBranch &&\n pendingBranch.transition &&\n pendingBranch.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n };\n }\n // this is initial anchor on mount\n let { anchor } = suspense;\n // unmount current active tree\n if (activeBranch) {\n // if the fallback tree was mounted, it may have been moved\n // as part of a parent suspense. get the latest anchor for insertion\n anchor = next(activeBranch);\n unmount(activeBranch, parentComponent, suspense, true);\n }\n if (!delayEnter) {\n // move content from off-dom container to actual container\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n // flush buffered effects\n // check if there is a pending parent suspense\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n // found a pending parent suspense, merge buffered post jobs\n // into that parent\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n // no pending parent suspense, flush all jobs\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n // invoke @resolve event\n triggerEvent(vnode, 'onResolve');\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\n // invoke @fallback event\n triggerEvent(vnode, 'onFallback');\n const anchor = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n // mount the fallback tree\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n // unmount current active branch\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\n true // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container, anchor, type) {\n suspense.activeBranch &&\n move(suspense.activeBranch, container, anchor, type);\n suspense.container = container;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance\n .asyncDep.catch(err => {\n handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n })\n .then(asyncSetupResult => {\n // retry when the setup() promise resolves.\n // component may have been unmounted before resolve.\n if (instance.isUnmounted ||\n suspense.isUnmounted ||\n suspense.pendingId !== instance.suspenseId) {\n return;\n }\n // retry from this component\n instance.asyncResolved = true;\n const { vnode } = instance;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(vnode);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n // vnode may have been replaced if an update happened before the\n // async dep is resolved.\n vnode.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(instance, vnode, \n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el), \n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode.el);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n // only decrease deps count if suspense is not already resolved\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\n }\n if (suspense.pendingBranch) {\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n /* eslint-disable no-restricted-globals */\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\n // there are two possible scenarios for server-rendered suspense:\n // - success: ssr content should be fully resolved\n // - failure: ssr content should be the fallback branch.\n // however, on the client we don't really know if it has failed or not\n // attempt to hydrate the DOM assuming it has succeeded, but we still\n // need to construct a suspense boundary first\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\n if (suspense.deps === 0) {\n suspense.resolve();\n }\n return result;\n /* eslint-enable no-restricted-globals */\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\n vnode.ssFallback = isSlotChildren\n ? normalizeSuspenseSlot(children.fallback)\n : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n // disableTracking: false\n // allow block tracking for compiled slots\n // (see ./componentRenderContext.ts)\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\n warn(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter(c => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n }\n else {\n suspense.effects.push(fn);\n }\n }\n else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = (vnode.el = branch.el);\n // in case suspense is the root node of a component,\n // recursively update the HOC el\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`provide() can only be used inside setup().`);\n }\n }\n else {\n let provides = currentInstance.provides;\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n // TS doesn't allow symbol as index type\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n const instance = currentInstance || currentRenderingInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n const provides = instance.parent == null\n ? instance.vnode.appContext && instance.vnode.appContext.provides\n : instance.parent.provides;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance.proxy)\n : defaultValue;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`injection \"${String(key)}\" not found.`);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`inject() can only be used inside setup() or functional components.`);\n }\n}\n\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production') ? Object.assign(Object.assign({}, options), { flush: 'post' }) : { flush: 'post' });\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production') ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : { flush: 'sync' });\n}\n// initial value for watchers to trigger on undefined initial values\nconst INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\n `supports \\`watch(source, cb, options?) signature.`);\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n if ((process.env.NODE_ENV !== 'production') && !cb) {\n if (immediate !== undefined) {\n warn(`watch() \"immediate\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n if (deep !== undefined) {\n warn(`watch() \"deep\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n }\n const warnInvalidSource = (s) => {\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\n `a reactive object, or an array of these types.`);\n };\n const instance = getCurrentScope() === (currentInstance === null || currentInstance === void 0 ? void 0 : currentInstance.scope) ? currentInstance : null;\n // const instance = currentInstance\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n }\n else if (isReactive(source)) {\n getter = () => source;\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(s => isReactive(s) || isShallow$1(s));\n getter = () => source.map(s => {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\n }\n });\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n // no cb -> simple effect\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);\n };\n }\n }\n else {\n getter = NOOP;\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager or sync flush\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = NOOP;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n if (flush === 'sync') {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n }\n else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource\n ? new Array(source.length).fill(INITIAL_WATCHER_VALUE)\n : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n const newValue = effect.run();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some((v, i) => hasChanged(v, oldValue[i]))\n : hasChanged(newValue, oldValue)) ||\n (false )) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE\n ? undefined\n : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE\n ? []\n : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n effect.run();\n }\n };\n // important: mark the job as a watcher callback so that scheduler knows\n // it is allowed to self-trigger (#1727)\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === 'sync') {\n scheduler = job; // the scheduler function gets called directly\n }\n else if (flush === 'post') {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n }\n else {\n // default: 'pre'\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n job();\n }\n else {\n oldValue = effect.run();\n }\n }\n else if (flush === 'post') {\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\n }\n else {\n effect.run();\n }\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\n// this.$watch\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source)\n ? source.includes('.')\n ? createPathGetter(publicThis, source)\n : () => publicThis[source]\n : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n }\n else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n }\n else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split('.');\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!isObject(value) || value[\"__v_skip\" /* ReactiveFlags.SKIP */]) {\n return value;\n }\n seen = seen || new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, seen);\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n }\n else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n }\n else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\n\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n // locate first non-comment child\n for (const c of children) {\n if (c.type !== Comment) {\n if ((process.env.NODE_ENV !== 'production') && hasFound) {\n // warn more than one non-comment child\n warn(' can only be used on a single element or component. ' +\n 'Use for lists.');\n break;\n }\n child = c;\n hasFound = true;\n if (!(process.env.NODE_ENV !== 'production'))\n break;\n }\n }\n }\n // there's no need to track reactivity for these props so use the raw\n // props for a bit better perf\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n // check mode\n if ((process.env.NODE_ENV !== 'production') &&\n mode &&\n mode !== 'in-out' &&\n mode !== 'out-in' &&\n mode !== 'default') {\n warn(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n // in the case of , we need to\n // compare the type of the kept-alive children.\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === undefined) {\n prevTransitionKey = key;\n }\n else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n // handle mode\n if (oldInnerChild &&\n oldInnerChild.type !== Comment &&\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\n // update old tree's hooks in case of dynamic transition\n setTransitionHooks(oldInnerChild, leavingHooks);\n // switching between different views\n if (mode === 'out-in') {\n state.isLeaving = true;\n // return placeholder node and queue update when leave finishes\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n // #6835\n // it also needs to be updated when active is undefined\n if (instance.update.active !== false) {\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n }\n else if (mode === 'in-out' && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n // early removal callback\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = undefined;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\n// The transition hooks are attached to the vnode as vnode.transition\n// and will be called at appropriate timing in the renderer.\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook &&\n callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every(hook => hook.length <= 1))\n done();\n }\n else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n }\n else {\n return;\n }\n }\n // for same element (v-show)\n if (el._leaveCb) {\n el._leaveCb(true /* cancelled */);\n }\n // for toggled element with same key (v-if)\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode &&\n isSameVNodeType(vnode, leavingVNode) &&\n leavingVNode.el._leaveCb) {\n // force early removal (not cancelled)\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n }\n else {\n return;\n }\n }\n let called = false;\n const done = (el._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n }\n else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = undefined;\n });\n if (hook) {\n callAsyncHook(hook, [el, done]);\n }\n else {\n done();\n }\n },\n leave(el, remove) {\n const key = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true /* cancelled */);\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = (el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n }\n else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = undefined;\n if (leavingVNodesCache[key] === vnode) {\n delete leavingVNodesCache[key];\n }\n });\n leavingVNodesCache[key] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n }\n else {\n done();\n }\n },\n clone(vnode) {\n return resolveTransitionHooks(vnode, props, state, instance);\n }\n };\n return hooks;\n}\n// the placeholder really only handles one special case: KeepAlive\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\n// placeholder with empty content to avoid the KeepAlive instance from being\n// unmounted.\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode)\n ? vnode.children\n ? vnode.children[0]\n : undefined\n : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n }\n else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n }\n else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n // #5360 inherit parent key in case of