Group array of objects by property name

I have an array that I need group by a certain property (“name”).

[
    {
        
        "name": "cor​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍‌‍​​‍​​​‌​‌‌‍‌‍‌‍‌‌‌‍‌​‌‍‌​​​​​​‍‌‍‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍‌‍​​‍​​​‌​‌‌‍‌‍‌‍‌‌‌‍‌​‌‍‌​​​​​​‍‌‍‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‍​‍‌‌",
        "value": "#e61809​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍‌‍​​‍​​​‌​‌‌‍‌‍‌‍‌‌‌‍‌​‌‍‌​​​​​​‍‌‍‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍‌‍​​‍​​​‌​‌‌‍‌‍‌‍‌‌‌‍‌​‌‍‌​​​​​​‍‌‍‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍​‍‌‌",
        "sku": "SKU-BICI-EST-TREKMAD-SLR9"
    },
    {
         "name": "cor​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‍‌​​​​‌​‌‍‌‍‌‍‌​​​​​‍​​‍‌‌‍​‌‍​‌‌‍​​​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‍‌​​​​‌​‌‍‌‍‌‍‌​​​​​‍​​‍‌‌‍​‌‍​‌‌‍​​​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‍​‍‌‌",        
        "value": "#3e7555​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‍‌​​​​‌​‌‍‌‍‌‍‌​​​​​‍​​‍‌‌‍​‌‍​‌‌‍​​​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‍‌​​​​‌​‌‍‌‍‌‍‌​​​​​‍​​‍‌‌‍​‌‍​‌‌‍​​​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍​‍‌‌",
        "sku": "SKU-BICI-EST-TREKMAD-SLR9-1"
    },
    {
        "name": "tamanho​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‌‍​​‍​‍‌​​​​​‌‍​‌​‍‌‌‍‌​‌‍‌​‌‍‌​‌‍‌‍​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‌‍​​‍​‍‌​​​​​‌‍​‌​‍‌‌‍‌​‌‍‌​‌‍‌​‌‍‌‍​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‍​‍‌‌",
        "value": "m​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‌‍​​‍​‍‌​​​​​‌‍​‌​‍‌‌‍‌​‌‍‌​‌‍‌​‌‍‌‍​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‌‍​​‍​‍‌​​​​​‌‍​‌​‍‌‌‍‌​‌‍‌​‌‍‌​‌‍‌‍​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍​‍‌‌",
        "sku": "SKU-BICI-EST-TREKMAD-SLR9"
    },
    {
        "name": "tamanho ​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍​‌​‍​​​‍‌‍‌​​‍​​‌​​‍‌​‍​‌‍​‍‌‍‌‌​​​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍​‌​‍​​​‍‌‍‌​​‍​​‌​​‍‌​‍​‌‍​‍‌‍‌‌​​​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‍​‍‌‌",
        "value": "L​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍​‌​‍​​​‍‌‍‌​​‍​​‌​​‍‌​‍​‌‍​‍‌‍‌‌​​​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍​‌​‍​​​‍‌‍‌​​‍​​‌​​‍‌​‍​‌‍​‍‌‍‌‌​​​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍​‍‌‌",
        "sku": "SKU-BICI-EST-TREKMAD-SLR9-1"
    }
]

and I need to convert to:

       

  [   [{
        
        "name": "cor​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍‌‍​​‍​​​‌​‌‌‍‌‍‌‍‌‌‌‍‌​‌‍‌​​​​​​‍‌‍‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍‌‍​​‍​​​‌​‌‌‍‌‍‌‍‌‌‌‍‌​‌‍‌​​​​​​‍‌‍‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‍​‍‌‌",
        "value": "#e61809​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍‌‍​​‍​​​‌​‌‌‍‌‍‌‍‌‌‌‍‌​‌‍‌​​​​​​‍‌‍‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍‌‍​​‍​​​‌​‌‌‍‌‍‌‍‌‌‌‍‌​‌‍‌​​​​​​‍‌‍‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍​‍‌‌",
        "sku": "SKU-BICI-EST-TREKMAD-SLR9"
    },
   {
         "name": "cor​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‍‌​​​​‌​‌‍‌‍‌‍‌​​​​​‍​​‍‌‌‍​‌‍​‌‌‍​​​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‍‌​​​​‌​‌‍‌‍‌‍‌​​​​​‍​​‍‌‌‍​‌‍​‌‌‍​​​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‍​‍‌‌",        
        "value": "#3e7555​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‍‌​​​​‌​‌‍‌‍‌‍‌​​​​​‍​​‍‌‌‍​‌‍​‌‌‍​​​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‍‌​​​​‌​‌‍‌‍‌‍‌​​​​​‍​​‍‌‌‍​‌‍​‌‌‍​​​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍​‍‌‌",
        "sku": "SKU-BICI-EST-TREKMAD-SLR9-1"
    }],
    [{
        "name": "tamanho​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‌‍​​‍​‍‌​​​​​‌‍​‌​‍‌‌‍‌​‌‍‌​‌‍‌​‌‍‌‍​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‌‍​​‍​‍‌​​​​​‌‍​‌​‍‌‌‍‌​‌‍‌​‌‍‌​‌‍‌‍​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‍​‍‌‌",
        "value": "m​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‌‍​​‍​‍‌​​​​​‌‍​‌​‍‌‌‍‌​‌‍‌​‌‍‌​‌‍‌‍​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‌‍​‌​‌‍‌​​‍‌​‌‌‌‍​‌​‍​​​​‍‌‌‍​‍‌‍​‌‌‍​‍​‌​‍‌​‌​‌‍‌‌​‍‌‌‍‌‌​‍‌​‍‌‌‍​‍‌‍‌‌‌‍​​‍‌​​‍​‌‍‌‍‌​‌‍​​‍​​‌​​‍‌​‌‍‌‍‌​​​​‌​‌‍‌‌​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍​‌‍​​‍​‍‌​​​​​‌‍​‌​‍‌‌‍‌​‌‍‌​‌‍‌​‌‍‌‍​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍​‍‌‌",
        "sku": "SKU-BICI-EST-TREKMAD-SLR9"
    },
    {
        "name": "tamanho ​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍​‌​‍​​​‍‌‍‌​​‍​​‌​​‍‌​‍​‌‍​‍‌‍‌‌​​​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍​‌​‍​​​‍‌‍‌​​‍​​‌​​‍‌​‍​‌‍​‍‌‍‌‌​​​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‍‍‌‍​‌‌‍‌‌‍‌‌​‍​‍‌‌",
        "value": "L​​​​‌‍​‍​‍‌‍‌​‍‌‍‍‌‌‍‌‌‍‍‌‌‍‍​‍​‍​‍‍​‍​‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌‍‍‌‌‍​‍​‍​‍​​‍​‍‌‍‍​‌​‍‌‍‌‌‌‍‌‍​‍​‍​‍‍​‍​‍‌‍‍​‌‌​‌‌​‌​​‌​​‍‍​‍​‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‍‌‌‍‍‌‌​‌‍‌‌‌‍‍‌‌​​‍‌‍‌‌‌‍‌​‌‍‍‌‌‌​​‍‌‍‌‌‍‌‍‌​‌‍‌‌​‌‌​​‌​‍‌‍‌‌‌​‌‍‌‌‌‍‍‌‌​‌‍​‌‌‌​‌‍‍‌‌‍‌‍‍​‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍​‌​‍​​​‍‌‍‌​​‍​​‌​​‍‌​‍​‌‍​‍‌‍‌‌​​​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‌‍​‍‌‍​‌‌​‌‍‌‌‌‌‌‌‌​‍‌‍​​‌‌‍‍​‌‌​‌‌​‌​​‌​​‍‌‌​​‌​​‌​‍‌‌​​‍‌​‌‍​‍‌‌​​‍‌​‌‍‌‍‌‌‌‍​‌‍‌‌‌‍​‌‍​‌‍‌‍‌​‍‍‌​‌‍​‌‌‍‍‌‍‍‌‌‌​‌‍‌​‍‍‌​‌‌​‌‌‌‌‍‌​‌‍‍‌‌‍​‍‌‍‌‍‍‌‌‍‌​​‌​‍​​‍​‌‍‌‍‌‍‌​​‌​​​​‌​‌‍​‌​‍‌‌‍‌‍​‌‍​​​‌‍​​‍‌​‌​‌‍​‌​​‍​​‍​‍‌​‍​​​‍‌‍‌‌‌‍​‍​‍‌‌‍​‌​‌​​‌​​​​‍​​‌​​‍​‌‍‌‌‌‍​‌​​‌‌‍​‍​‌‍​‍‌‍‌‌​‌‍‌‌​​‌‍‌‌​‌‌‌‍‌‍​‌‌​‍‌‍‍‌‌‍​‌‌‍‍‌‌​​‍‌‍‌​​‌‍​‌‌‌​‌‍‍​​‌‌‍​‌‌‌​‌‌​‌​‍‌‍‍‌‌‍​‍‌‌‌‌‌​‌‍‌‌‌​​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌​​‌‌​​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍‌‌​‌‌‌​​‍‌‌‌‍‍‌‍‌‌‌‍‌​‍‌‌​​‌​‌​​‍‌‌​​‌​‌​​‍‌‌​​‍​​‍‌‍​‌​‍​​​‍‌‍‌​​‍​​‌​​‍‌​‍​‌‍​‍‌‍‌‌​​​‌‍​‍‌‌​​‍​​‍​‍‌‌​‌‌‌​‌​​‍‍‌‌‍‌‍​‌‌‍​‌‌‌‌‍‌‌​‍​‍‌‌",
        "sku": "SKU-BICI-EST-TREKMAD-SLR9-1"
    }]
]
const groupedMap = variantsAttrs.reduce(
            (entryMap, e) => entryMap.set(e.name, [...entryMap.get(e.name)||[], e]),
            new Map()
        )

CORS violation occuring in safari, but not chrome

I have a react web app that makes calls to an express web server.

When I access the web app in chrome, everything works as expected.

When I access the web app in safari, I get an error:

XMLHttpRequest cannot load https://subdomain.example.com/path due to access control checks.

Googling suggests this is a CORS error. My express api sets up cors using the npm package:

const express = require('express');
const cors = require('cors');

const app = express();

(async () => {
    app.use(cors());

    app.use('/path', [
       require('./apis/path'),
    ]);

}()


This article explained that safari has stricter CORS policies that chrome, and that you can’t use wildcards and must include the schema. So I tried to specify allowed origins:

app.use(cors({ origin: ['https://app.example.com', 'https://other-app.example.com'] }));

The error stayed the same.

Is there something else I’m missing?

Angular pattern generation – Unable to get desired output

I have the following problem, I have tried in several ways, but still I am getting the below output, but my desired output is different. Can anyone of you please check and let me know where I am doing wrong and how to achieve the desired output pattern.
I have an input number(n). The input value should be between 2 and 10. We need to validate if the input value is not in expected range.

I am getting the below output:

if I enter n = 2:

A

B C

if I enter n = 3:

A

B C 

D E F

But my desired outputs are like below:

Example 1. if I give n = 3 in the input field, then we need to show the below output:

A

A B

C D E

Example 2: if I give n = 4 in the input field, then we need to show the below output:

A

A B

A B C

D E F G

Created Stackblitz

Node JS REST API HTTPS not working, how can I fix it? [closed]

I made a simple REST API that pulls data from MySQL. There is an SSL certificate in my site address.
https://example.com
When I go to the address, my site works.

When I want to access the REST API I created from my Site address, for example;

http://example.com:5007/survey_data

I can access with , but not with HTTPS

https://example.com:5007/survey_data

This address does not work.

const express = require('express');
const mysql = require('mysql2/promise'); 

const app = express();
const port = 5007;

const pool = mysql.createPool({
  host: 'localhost',
  user: 'admin',
  password: 'admin1234',
  database: 'test_database',
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0 
});

app.get('/survey_data', async (req, res) => {
  try {
    const [rows] = await pool.query('SELECT * FROM survey_data');
    res.json(rows);
  } catch (err) {
    console.error('Error ' + err);
    res.status(500).json({ error: 'error' });
  }
});

app.listen(port, () => {
  console.log('Server working...');
});

There is an SSL certificate on my site address.
https://example.com
When I go to the address, my site works.

How to use hook `element.init` for re-init datepicker with wire:navigate

I create a dynamic adding element form textfield input with livewire 3. Inside this form I have a datepicker field and want to re-init every datepicker field when new element added on that form.

Everythings OK, but when I use wire:navigate to pages navigate, I found an issue. My hook element.init always error when I access this page from another page. When first navigate page visit it ok, but senconds visit error show

Uncaught TypeError: window.Livewire.find(...) is undefined

My view code

@push('script')
    @script
        <script>
            function goBack(e) {
                window.history.back();
            }

            Livewire.hook('element.init', ({ component, el }) => {
                console.log("element.init");
                if (document.querySelectorAll('[id^="date_"]').length) {
                    initializeDatepickers();
                }
            });

            function initializeDatepickers() {
                // Check if rows exist in the Livewire component
                const rows = @this.get('rows');
                if (!rows || !Array.isArray(rows)) {
                    return;
                }

                // Iterate through each row and initialize datepicker
                rows.forEach((row, index) => {
                    const datepickerId = `#date_${index}`;
                    const $datepickerElement = $(datepickerId);

                    // Ensure the datepicker element exists before initializing
                    if ($datepickerElement.length) {
                        // Destroy existing datepicker to avoid conflicts
                        if ($datepickerElement.data('datepicker')) {
                            $datepickerElement.datepicker('destroy');
                        }
                        $datepickerElement.datepicker({
                            todayHighlight: true,
                            orientation: "bottom left",
                            autoclose: true,
                            format: "dd-mm-yyyy"
                        }).on("changeDate", function (e) {
                            @this.set(`rows.${index}.date`, e.format());
                        });
                    }
                });
            }

            $('#tanggal_ajuan').datepicker({
                todayHighlight: true,
                orientation: "bottom left",
                autoclose: true,
                format: "dd-mm-yyyy"
            }).on("changeDate", function (e) {
                @this.set('tanggal_ajuan', e.format());
            });
        </script>
    @endscript
@endpush

Now I decide to not use wire:navigate but how to fix this issue? But I still prefer to use wire:navigate. How to fix this issue?

Error: Cannot resolve a DOM point from Slate point: {“path”:[0,0],”offset”:25}

Note that this existing post Slate Editor Issue: Cannot resolve a DOM point from Slate point: {“path”:[0,0],”offset”:30} does not work for me.

I’m trying to replace user selected text with some other text. For example, in this sentence, the user selected “have” like this:

enter image description here

And I want a chrome extension that replaces the selected text with “had”. Every time I do it, when I click off the text editor and click back in, it throws the error in the title and the text goes back to the old one.

My code:

const correctedText = "had";
const activeElement = document.activeElement;
const selectionStart = activeElement.selectionStart;
const selectionEnd = activeElement.selectionEnd;
const selection = window.getSelection();
if (selection.rangeCount > 0) {
    const range = selection.getRangeAt(0);
    range.deleteContents();

    newTextElement = document.createElement('span');
    newTextElement.textContent = correctedText;
    newTextElement.contentEditable = false;
    newTextElement.style.userSelect = 'none';
    range.insertNode(newTextElement);
    selection.removeAllRanges();
    range.setStart(range.startContainer, range.startOffset + correctedText.length);
    selection.addRange(range);
}

As you can see, I already set contentEditable to false and userSelect to none, but it quite literally does not work. You can try this code in discord or reddit to see for yourself.

Issues with chaining methods of a class to build a string

I’m trying to make a poor man’s query builder to make my life a bit easier, however I’m starting to regret that decision.

The first issue I ran into was in the constructor, for some reason it didn’t like me initializing this.query to an empty string, so I commented it out.

The second problem is that Typescript doesn’t seem to recognize that I can change select with leftJoin. I’m aware it’s not Typescript’s problem, but I’m just trying to figure out what I’m missing here.

Here is what I have:

type TEQueryBuilderSelect = {
    table: string;
    alias: string;
    entity: string;
};
enum EQueryBuilderJoin {
    LEFT = 'left',
    INNER = 'inner',
}
type TQueryBuilderJoinOnConfigType = {
    sourceColumn: string;
    targetColumn: string;
    targetAlias: string;
    operator: '=' | '!=';
};
interface TQueryBuilderJoin {
    sourceAlias: string;
    table: string;
    joinType: EQueryBuilderJoin;
    joinOnConfig: TQueryBuilderJoinOnConfigType;
}
interface TQueryBuilderLeftJoin extends TQueryBuilderJoin {
    joinType: EQueryBuilderJoin.LEFT;
}

class QueryBuilder {
    static query: string;

    constructor() {
        // this.query = ''
    }

    static getQuery(args: string[]) {
        if (!this.query) {
            this.query = '';
        }

        const query = [this.query, ...args].join(' ');
        this.query = query;

        return query;
    }

    static leftJoin({
        table,
        sourceAlias,
        joinType,
        joinOnConfig: { sourceColumn, targetColumn, operator, targetAlias },
    }: TQueryBuilderLeftJoin) {
        return this.getQuery([
            joinType,
            'join',
            table,
            'as',
            sourceAlias,
            'on',
            `${sourceAlias}.${sourceColumn}`,
            operator,
            `${targetAlias}.${targetColumn}`,
        ]);
    }

    static select({ table, alias, entity }: TEQueryBuilderSelect) {
        return this.getQuery(['select', `${alias}.${entity}`, 'from', table, 'as', alias]);
    }
}

const result = QueryBuilder.select({ entity: '*', table: 'user', alias: 'u' }).leftJoin({
    table: 'settings',
    sourceAlias: 's',
    joinType: EQueryBuilderJoin.LEFT,
    joinConfig: {
        sourceColumn: 'user_id',
        operator: '=',
        targetColumn: 'id',
        targetAlias: 'u',
    },
});

console.log('result', result);

The expected result is:

'select * from user as u left join settings as s on s.user_id = u.id'

Select2 not display the value of the option selected

I have used an ajax request using laravel api. In this i select a boat on basis of which its accessories ccomes up with categories and sub categoreis and then the accessory to be selected. The following is my sscript but I am unable to find the issue due to which the accessory is not showed up. The javascript code is:

$(document).ready(function () {
  // Initialize Select2 for accessory_discount class
  $(".accessory_discount").select2();

  var selectedAccessoryIds = []; // Array to store selected accessory IDs

  $("#boat-select").change(function () {
    var selectedBoats = $(this).val();
    var $accessorySelect = $("#accessory-select");

    // Clear the existing options and selected accessory IDs
    $accessorySelect.empty();
    $accessorySelect.append('<option value="">Select an accessory</option>');
    selectedAccessoryIds = [];

    if (selectedBoats.length > 0) {
      console.log("Selected Boats: ", selectedBoats);

      $.ajax({
        url: route("custom-boat-discounts.get-accessories"),
        type: "POST",
        data: { boats: selectedBoats },
        success: function (response) {
          console.log("Response: ", response);

          if (response.success) {
            var data = [];

            $.each(response.accessories, function (index, boat_cat) {
              var catGroup = {
                text: boat_cat.ltitle,
                children: [],
              };

              $.each(boat_cat.sub_categories, function (index, boat_sub_cat) {
                var subCatGroup = {
                  text: boat_sub_cat.ltitle,
                  children: [],
                };

                $.each(
                  boat_sub_cat.sub_sub_categories,
                  function (index, boat_sub_sub_cat) {
                    subCatGroup.children.push({
                      id: boat_sub_sub_cat.id,
                      text: boat_sub_sub_cat.ltitle,
                      cat: boat_cat.ltitle,
                      subCat: boat_sub_cat.ltitle,
                    });
                  }
                );

                catGroup.children.push(subCatGroup);
              });

              data.push(catGroup);
            });

            // Initialize Select2 with the new data
            $accessorySelect.select2({
              data: data,
              templateResult: formatAccessory,
              templateSelection: formatAccessorySelection,
              allowClear: true,
              multiple: false, // Allow single selection
            });

            // Trigger change event to update Select2 with new data
            $accessorySelect.trigger("change");

            // Add event listener for select and unselect events
            $accessorySelect.on(
              "select2:select select2:unselect",
              function (e) {
                selectedAccessoryIds = $(this).val() || [];
                console.log("Selected Accessory IDs:", selectedAccessoryIds);

                // Update hidden input field with selected IDs
                $("#selected-accessory-ids").val(
                  JSON.stringify(selectedAccessoryIds)
                );
              }
            );
          } else {
            console.error("Response success is false: " + response.message);
          }
        },
        error: function (xhr, status, error) {
          console.error("AJAX Error: ", status, error);
        },
      });

      function formatAccessory(accessory) {
        if (!accessory.id) {
          var $accessory = $("<span>" + accessory.text + "</span>");
          if (
            accessory.element &&
            $(accessory.element).parent().is("optgroup")
          ) {
            $accessory.addClass("ml-2");
          }
          return $accessory;
        }
        return $("<span>" + accessory.text + "</span>");
      }

      function formatAccessorySelection(accessory) {
        if (!accessory.id) {
          return accessory.text;
        }
        return (
          accessory.cat + " - " + accessory.subCat + " - " + accessory.text
        );
      }
    }
  });
});

My server side logic is:

public function getAccessories(Request $request)
    {
        $boatIds = $request->input('boats', []);

        if (empty($boatIds)) {
            return response()->json(['success' => false, 'message' => 'No boats selected.']);
        }

        $accessories = [];
        foreach ($boatIds as $boatId) {
            $boat = $this->predefinedListRepository->findById($boatId);

            if (!$boat) {
                return response()->json(['success' => false, 'message' => "Boat with ID $boatId not found."]);
            }

            $boat_cats = $boat->childitems_display();

            foreach ($boat_cats as $boat_cat) {
                $boat_cat_data = [
                    'id' => $boat_cat->id,
                    'ltitle' => $boat_cat->ltitle,
                    'sub_categories' => []
                ];
            
                foreach ($boat_cat->childitems() as $boat_sub_cat) {
                    $boat_sub_cat_data = [
                        'id' => $boat_sub_cat->id,
                        'ltitle' => $boat_sub_cat->ltitle,
                        'sub_sub_categories' => []
                    ];
            
                    foreach ($boat_sub_cat->childitems() as $boat_sub_sub_cat) {
                        $boat_sub_sub_cat_data = [
                            'id' => $boat_sub_sub_cat->id,
                            'ltitle' => $boat_sub_sub_cat->ltitle,
                        ];
            
                        $boat_sub_cat_data['sub_sub_categories'][] = $boat_sub_sub_cat_data;
                    }
            
                    $boat_cat_data['sub_categories'][] = $boat_sub_cat_data;
                }
            
                $accessories[] = $boat_cat_data;
            }
            
        }

        return response()->json([
            'success' => true,
            'accessories' => $accessories,
        ]);
    }

I want the proper selection so that I can save the accessory selected

Why is mainContent undefined in my todo app

I’ve written a todo app after i finished i am separating it into modules the displayProject is working fine but the displaytodo isn’t i get this error

Uncaught TypeError: Cannot read properties of undefined (reading ‘querySelectorAll’)

I’ve tried to use console.log to see what the problem is mainContent is undefined for displayTodo but not displayProject even though it is called before it i think this is a timing issue but i don’t understand how

import './style.css';
import {displayTodo} from "./displaytodo"
import {displayProject} from "./displayproject"
import {canvasFunction} from "./canvas"
import {projectLocalStorage} from "./projectlocalstorage"
import {todoLocalStorage} from "./todolocalstorage"
document.addEventListener('DOMContentLoaded', () => {
    canvasFunction();
    const mainContent = document.querySelector('.main-content')
    console.log(mainContent);  
    const showButton1 = document.getElementById("showDialog1");
    const showButton2 = document.getElementById("showDialog2");
    const addProject = document.getElementById("addProject")
    const favDialog = document.getElementById("favDialog");
    const form1 = document.querySelector('#form1');
    const favDialogEdit = document.querySelector('#favDialogEdit');
    const form2 = document.querySelector('#form2');
    const form = document.querySelector('#form');
    let todos = JSON.parse(localStorage.getItem('todo-s')) || [];
    let projects = JSON.parse(localStorage.getItem('project-s')) || [];
    let editIndex;
    showButton1.addEventListener("click", () => {
        addProject.showModal();
    })
    showButton2.addEventListener("click", () => {
        favDialog.showModal();
    });
    form.addEventListener("submit", (event) => {
        event.preventDefault();
        if (!form.checkValidity()) {
            return;
        }
        const name = document.querySelector("#name2").value;
        if (projects.some(project => project.name === name)) {
            alert('Project with this name already exists');
            return;
        }
        function project(name) {
            this.name = name;
        }
        let newProject = new project(name);
        projects.push(newProject);
        displayProject();
        addProject.close();
        form.reset();
    });
    form1.addEventListener("submit", (event) => {
        event.preventDefault();
        if (!form1.checkValidity()) {
            return;
        }
        const name = document.querySelector("#name").value;
        const title = document.querySelector("#title").value;
        const date = document.querySelector("#date").value;
        const priority = document.querySelector("#priority").value;
        const project = document.querySelector("#projects").value;
        function todo(name, title, date, priority, project) {
            this.name = name;
            this.title = title;
            this.date = date;
            this.priority = priority;
            this.project = project;
            this.completed = false;
        }
        let newTodo = new todo(name, title, date, priority, project);
        todos.push(newTodo);
        displayTodo();
        favDialog.close();
        form1.reset();
    });
    form2.addEventListener("submit", (event) => {
        event.preventDefault();
        if (!form2.checkValidity()) {
            return;
        }
        const name = document.querySelector("#name1").value;
        const title = document.querySelector("#title1").value;
        const date = document.querySelector("#date1").value;
        const priority = document.querySelector("#priority1").value;
        const project = document.querySelector("#projects1").value;
        const completed = todos[editIndex].completed;
        function todo(name, title, date, priority, project) {
            this.name = name;
            this.title = title;
            this.date = date;
            this.priority = priority;
            this.project = project;
            this.completed = completed;
        }
        let editedTodo = new todo(name, title, date, priority, project);
        todos[editIndex] = editedTodo;
        displayTodo();
        favDialogEdit.close();
        form2.reset();
    })
    const deleteBtn = document.querySelector('#delete');
    deleteBtn.addEventListener('click', () => {
        todos.splice(editIndex, 1);
        displayTodo();
        favDialogEdit.close();
    });
    displayProject(projects, mainContent);
    displayTodo(todos, mainContent);
})
import { todoLocalStorage } from "./todolocalstorage";
const displayTodo = (todos, mainContent) => {
    console.log(mainContent);  
    console.log(mainContent.querySelectorAll('.project'));  
    mainContent.querySelectorAll('.project').forEach(projectDiv => {
        projectDiv.querySelectorAll('.todo').forEach(todo => todo.remove());
        const projectTodos = todos.filter(todo => todo.project === projectDiv.querySelector('h1').textContent);
        projectTodos.forEach((todo, index) => {
            const div = document.createElement('div');
            div.classList.add('todo');
            div.dataset.index = index;
            const checkbox = document.createElement('input')
            checkbox.type = 'checkbox';
            checkbox.checked = todo.completed;
            checkbox.addEventListener('change', () => {
                todo.completed = checkbox.checked;
            });
            const name = document.createElement('p');
            name.textContent = todo.name;
            const date = document.createElement('p');
            date.textContent = todo.date;
            const edit = document.createElement('button');
            edit.textContent = 'Edit';
            edit.addEventListener('click', () => {
                editIndex = index;
                document.querySelector("#name1").value = todo.name;
                document.querySelector("#title1").value = todo.title;
                document.querySelector("#date1").value = todo.date;
                document.querySelector("#priority1").value = todo.priority;
                document.querySelector("#projects1").value = todo.project;
                favDialogEdit.showModal();
            });
        div.appendChild(checkbox);
        div.appendChild(name);
        div.appendChild(date);
        div.appendChild(edit)
        projectDiv.appendChild(div);
        });
    })
    todoLocalStorage();
}
export {displayTodo}

All of my a href https link in html code won’t open, I think Barba JS is the culprit but I’m not sure [closed]

I’ve made my website portfolio and it works fine a few months ago… and suddenly all of my external links won’t open, you guys can check it here: https://hafidyusuf.com/

there is no problem for every link to the own website page, but every link that goes outside of the website won’t work, can you help me on this please, thanks

I wanted my https link to be open like it should

How to check if a chrome tab is an installed Desktop App/Shortcut?

I’m building a browser extension, and I want to distinguish between users’ regular tabs and installed apps/shortcuts. How do I check the difference?

I looked at the chrome.tabs API and found nothing to help me. If I go to the browser’s task manager I see that it shows the difference. Regular tab processes have the “Tab” name while installed shortcuts have the “App” name.

Iterate element inside html div element

I am not familiar with javascript and facing this weird situation.
I am using javascript to iterate over div element and retrieve href values from all <a> element inside, the purpose is to handle click on <a> element by JavaScript instead of default by HTML.

The iteration works but all links target replaced to the last <a> href values.

$(document).ready(function() {
  //NavMenu();
  //NavActive();
  NavClick();
  console.log('tes');
});

function NavClick() {
  var nav_item = document.getElementById('nav-menu').querySelectorAll('div')
  for (let i = 0; i < nav_item.length; i++) {
    item = nav_item[i].querySelector('a').getAttribute('href')
    nav_item[i].addEventListener('click', function(e) {
      e.preventDefault();
      $.ajax({
        url: item,
        contentType: 'application/json',
        dataType: 'json',
        success: function(data) {
          $('title').html(data.title)
          window.history.replaceState({}, '', item)
          $('#content').html(data.data)
        }
      });
    });
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div class="row col-12 justify-content-end" id="nav-menu">
  <div class="col-auto">
    <a href="/" class="px-1">
            Short
        </a>
  </div>
  <div class="col-auto">
    <a href="/myurl/' %}" class="px-1">
            My URL
        </a>
  </div>
  <div class="col-auto">
    <a href="/group/" class="px-1">
            My Collection
        </a>
  </div>
  <div class="col-auto">
    <a href="/group/create/" class="px-1">
            New Collection
        </a>
  </div>
</div>

What I expecting is my code will add event listener to each element and retrieve the “href” value so I can send request to server with the url.

eg. when I click this link, javascripts will send request to 127.0.0.1 but what i get is request send to 127.0.0.1/group/create/.

<div class="col-auto">
    <a href="/" class="px-1">
        Short
    </a>
</div>

is my logics wrong or I miss something on my codes?

How to get Multi Selection direction it started from?

When developing using range in JavaScript, if you press the arrow key through keydown
How to get multi-selection direction it started from? (shift + > | shift + <)

Take the string “ABC” as an example

  1. Place the cursor between A and B, Press shift + > twice
    -> startOffset 2, endOffset 3 -> startOffset 1, endOffset 3
  2. Place the cursor after C, Press shift + < three times And Press shift + > once
    -> startOffset 0 endOffset3 -> startOffset 1, endOffset 3

Both have the same offset,

  1. endOffset has been changed and 2)startOffset has been changed.

How to get multi-selection direction from arrow keydown event?

In case of multi-select, Customize the cursor when press the arrow key.

window.addEventListener("keydown", function(e) {
  let range = window.getSelection().getRangeAt(0);
  if(e.keyCode == 37) { // arrow left <
     if(~~~) {
       range.setStart(~~);
       range.setEnd(~~);
     }
  } else if(e.keyCode == 39) { // arrow right >
    if(~~~) {
       range.setStart(~~);
       range.setEnd(~~);
     }
  }
});